Anomalie #22552
NG : la zone "applications ouvertes" ne fonctionne pas sous Firefox
100%
Description
Sur le xdesktop, une zone fort sympathique nous permet de voir les applications actuellement ouvertes.
Pour le passage au dispatcher NG, ayant fait presque tous mes tests sous Firefox, j'avais remarqué que sur les templates base x3,cette zone avait disparu
Quelle ne fut pas ma surprise lorsque, après les premiers tests utilisateurs, j'eus la surprise de constater que certains d'entre eux faisaient des remarques sur cette zone dont j'ignorais l'existence !
Il apparaît donc que cette zone existe bien, mais fonctionne sous chrome et pas Firefox. Je comptais faire une demande d'évolution pour demander le retour de cette zone, finalement c'est un signalement d'anomalie.
D'autre part, et c'est un détail : cette zone affiche "Dernières applications utilisées" alors que visiblement ce sont les applications actuellement ouvertes. Mais j'imagine que cela peut se régler facilement
Je vais chercher un peu de mon côté, j'update la demande au fur et à mesure de mes découvertes
Historique
#1 Mis à jour par Christophe LEON il y a plus de 6 ans
Je n'ai pas de solution à cette problématique
dans le composant edispatcher-applications/edispatcher-applications-opened.html
On accepte d'afficher les applis ouvertes que si c'est Chrome
Sous firefox lorsque le focus est remis sur un handle de window ce dernier ne passe pas au premier plan. Je n'ai pas trouvé de solution si tu en a une je suis preneur
Cdlt,
Christophe
#2 Mis à jour par Renaud Dussol il y a plus de 6 ans
- Tracker changé de Demande à Anomalie
#3 Mis à jour par Renaud Dussol il y a plus de 6 ans
En tout état de cause, il faut renommer cette zone "Applications ouvertes" ou "Applications actuellement ouvertes" car ce ne sont pas les "Dernières applications utilisées"
#4 Mis à jour par Renaud Dussol il y a plus de 6 ans
Il y a peut-être une solution, qui consisterait à forcer l'ouverture des apps en fenêtre modale dans FF
En effet, le focus sur un onglet ouvert ne fonctionne pas, mais le focus sur une fenêtre modale semble fonctionner
Donc si on force l'ouverture en fenêtre modale dans FF, on pourrait obtenir une solution acceptable.
Reste à voir l'impact utilisateur d'une ouverture fenêtre par rapport à l'ouverture onglet (d'autant que les fenetres modales sont "spéciales")
#5 Mis à jour par Renaud Dussol il y a plus de 6 ans
Dans ng/public/elements/behaviors/scripts/classes.js
/*
if ( this.wnd && (typeof browser != "string" || browser.indexOf("chrome") == -1) ) {
console.log("FOCUS MAY NOT BE AVAILABLE")
this.wndIgnore = true
this.wnd.close();
this.wnd = false;
name = "_blank"
}
*/
if (this.wnd) {
console.log(this.wnd);
this.wnd.focus();
} else {
if (typeof browser != "string" || browser.indexOf("chrome") == -1) {
this.wnd = window.open(this.getUrl(),name,"modal=yes");
}
else {
this.wnd = window.open(this.getUrl(),name);
}
#6 Mis à jour par Renaud Dussol il y a environ 6 ans
Tester si sur FF on peut laisser la zone mais en la rendant non-cliquable
#7 Mis à jour par Renaud Dussol il y a environ 6 ans
- Assigné à changé de Christophe LEON à Renaud Dussol
#8 Mis à jour par Renaud Dussol il y a environ 6 ans
Solution choisie pour Nice : sous Firefox on fait afficher la zone mais non-cliquable (comme sur Xdesktop en fait, ainsi les utilisateurs sont habitués à ce comportement)
Je regarderai pour modifier le code en conséquence, mais il faudra voir ensemble si à la Réunion vous souhaitez conserver la zone entièrement masquée sous FF
#9 Mis à jour par Renaud Dussol il y a environ 6 ans
En fait du coup le code est très simple
Dans classes.js :
if (this.wnd) {
this.wnd.focus();
} else {
this.wnd = window.open(this.getUrl(),name);
}
Comme le focus ne fonctionne pas sous FF, on a le comportement "attendu" : on clique mais rien ne se passe
Ensuite c'est juste une question de CSS, pour rendre la zone non-cliquable sous FF, je pense que cela peut se faire au niveau du template en CSS. (Je l'ai fait pour les zones réseau, mais non-dépendant du navigateur)
Il faut juste combiner nos codes pour que cette partie soit masquée à la Réunion et visible à Nice
Je me souviens avoir modifié un js pour rendre la zone visible au départ mais je ne l'ai pas noté et je ne me souviens plus ou c'est...
#10 Mis à jour par Renaud Dussol il y a environ 6 ans
Un petit avantage avec ce code aussi : si un jour le focus fonctionne sous FF, cela marchera direct
#11 Mis à jour par Renaud Dussol il y a environ 6 ans
Pour pouvoir désactiver le clic au niveau du template il faut détecter le navigateur directement dans le template
La fonction getBrowser() est présente dans ng/public/elements/behaviors/scripts/utils.js
Y a-t-il un risque quelconque a exposer ce fichier en le chargeant dans le template ?
Si oui il faut redéclarer la fonction dans le template (ou en faire une autre)
Autre question : le comportement a-t-il été testé sur d'autres navigateurs (Safari/MacOS, Opera...)
Ou formulé autrement : faut-il le permettre uniquement sous chrome ou l'interdire uniquement sous Firefox ?
#12 Mis à jour par Renaud Dussol il y a environ 6 ans
Les 2 dernières questions sont liées : en effet un moyen très simple de détecter chrome est de tester la présence des objets chrome et chrome.webstore (a priori + fiable que le navigator.userAgent de js)
ainsi on peut utiliser une seule variable isChrome :
var isChrome = !!window.chrome && !!window.chrome.webstore;
et le tour est joué
Si on veut que ça fonctionne dans d'autres navigateurs, il faut utiliser une fonction plus élaborée
#13 Mis à jour par Renaud Dussol il y a environ 6 ans
- % réalisé changé de 0 à 80
J'ai retrouvé c'est dans l'élément edispatcher-applications-opened
ng/public/elements/edispatcher-ressources/edispatcher-applications-opened.html
j'ai commenté la condition l.55 :
// if (isChrome()) {
(je suppose que ce isChrome vient du utils.php car ce n'est pas celui que j'ai utilisé dans mon template)
Si on souhaite conserver le masquage complet à la Réunion, il faudrait mettre cette condition au niveau du template, donc la supprimer de ce fichier
Dans mon template actuellement j'ai ajouté :
var isChrome = !!window.chrome && !!window.chrome.webstore;
if (!isChrome) {
$("edispatcher-applications-opened").css("pointer-events", "none");
}
Mais si l'on souhaite le masquer complètement on peut utiliser :
if (!isChrome) {
$("edispatcher-applications-opened").css("display", "none");
}
Je pense que cela règle tous les problèmes
Fichiers à modifier :
- ng/public/elements/edispatcher-ressources/edispatcher-applications-opened.html (enlever la condition sur Chrome)
- ng/public/elements/behaviors/scripts/classes.js (supprimer les conditions de navigateur, cf. code plus haut)
- Le reste se règle au niveau du template : soit on masque l'élément, soit on désactive le clic
J'attends quand même ta validation avant de commiter
#14 Mis à jour par Renaud Dussol il y a environ 6 ans
Validation OK sur principe
Je commite
#15 Mis à jour par Renaud Dussol il y a environ 6 ans
- Statut changé de Nouveau à Résolu
- % réalisé changé de 80 à 100
Appliqué par commit 7380a2844b6d0596d2653aab17cb6bfb39bf5f5a.
#16 Mis à jour par Christophe LEON il y a environ 6 ans
- Version cible mis à Envole 5.8
#17 Mis à jour par Arnaud FORNEROT il y a environ 6 ans
- Statut changé de Résolu à Fermé