Projet

Général

Profil

Anomalie #22552

NG : la zone "applications ouvertes" ne fonctionne pas sous Firefox

Ajouté par Renaud Dussol il y a plus de 6 ans. Mis à jour il y a environ 6 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
20/12/2017
Echéance:
% réalisé:

100%

Distribution:

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

Révisions associées

Révision 7ae50a3b (diff)
Ajouté par Christophe LEON il y a environ 6 ans

ref #22552 : zone "applications ouvertes" sous Firefox

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

#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é

Formats disponibles : Atom PDF