Projet

Général

Profil

Evolution #6458

ajout de la méthode tryToDestroy

Ajouté par Matthieu Codron il y a presque 3 ans. Mis à jour il y a plus de 2 ans.

Statut:
Résolu
Priorité:
Normal
Assigné à:
Version cible:
Début:
20/06/2016
Echéance:
% réalisé:

100%

Version source:
Solution proposée:

ajout d'une méthode tryToDestroy, qui peut réussir ou échouer et pose les questions à l'utilisateur et déclenche le beforeClose
=> retourne une promise then au success, catch à l'échec
le force se fait avec le destroy classique

Principaux fichiers impactés:
Wiki Détail:
Contrôle:
Thèmes UIs:
Contrôleur
Jalons: 3.2 R17, 3.2 R18

Description

Lorsqu'on souhaite retirer le widget de document d'une page depuis le contrôleur externe, il est nécessaire de savoir si l'utilisateur a des modifications en cours.
dans le cas contraire, il faut lui présenter une fenêtre lui demandant s'il veut perdre ses modifications.
cela se fait au moyen de la propriété isModified.
Toutefois, cela ne tient pas compte des éventuels hooks à la fermeture du document.
En conséquence, la seule solution propre pour fermer le document actuellement est de modifier à la main la source de l'iframe, ce qui déclenche l'ensemble des hooks, puis de lancer son propre traitement au chargement de l'iframe.
ce fonctionnement a plusieurs probèmes, dont
  • sa complexité
  • sa fragilité
  • la nécessité d'intervenir à l'intérieur du widget.

il faudrait une méthode closeDocument pour répondre à ce besoin.

Remarques sur cette méthode :
Son comportement est à définir, mais elle doit permettre les usages suivants :
  1. lorsque le document est fermé, il faut pouvoir lancer un callback
  2. si une interaction de l'utilisateur est nécessaire, l'appelant doit être au courant (pour pouvoir par exemple afficher le document concerné), mais doit néanmoins pouvoir lancer son traitement au succès de la fermeture
  3. une option force doit être disponible
remarques corollaires :
  • pour 1. le callback peut aussi être remplacé par l'écoute de l'événement close
  • pour 2. on peut laisser la méthode lever une exception particulière pour ce cas là. L'application aura alors à sa charge de présenter le widget, et d'écouter l'événement close pour lancer son propre comportement
remarques supplémentaires :
  • en fait, l'événement close ne donne pas les mêmes informations (en particulier, elle peut être déclenchée dans de trop nombreux cas).
  • ce qu'il faut, ce n'est pas nécessairement un closeDocument, mais plutôt un unloadWidget (la méthode destroy du widget semble être une destruction pure et simple sans aucune vérification d'aucun type. Peut-être faut-il travailler de ce côté là).
  • il est nécessaire d'avoir un événement spécifique lié à cette action.

Historique

#1 Mis à jour par Matthieu Codron il y a presque 3 ans

  • Description mis à jour (diff)

#2 Mis à jour par Marc Claverie il y a presque 3 ans

  • Version source changé de 1.2.0 à 1.1.0
  • Statut changé de Nouveau à À analyser
  • Assigné à mis à Charles Bonnissent
  • Version cible mis à 1.1.0

#3 Mis à jour par Charles Bonnissent il y a presque 3 ans

=> il manque plusieurs points dans la description : le close doit aussi prendre en compte :

  • le cas ou l'utilisateur n'est plus sur un document dcp (via un lien externe),
  • le cas ou le dev a raté son code ce qui empêche le document de se charger

=> Il n'a pas de raison d'être en interne

=> On peut donc en déduire quelques éléments, on est pas entrain de fermer le document mais de détruire le controleur externe => il faut donc gérer ça au destroy du widget (standard) et pas dans une nouvelle méthode close : le destroy doit effectuer les éléments suivants :

  • checker si le widget est toujours relié à un widget interne, si non destruction de l'iframe,
  • déclencher le beforeClose, si négatif et pas force on laisse tomber,
  • déclencher le comportement actuel (indiquant notamment si le document est dirty un message à l'utilisateur, enlevant les éventuels lock, etc...)
  • nettoyer le widget (écouteur, iframe, etc...)

#4 Mis à jour par Charles Bonnissent il y a presque 3 ans

  • Statut changé de À analyser à Résolu
  • % réalisé changé de 0 à 100
  • Solution proposée mis à jour (diff)

#6 Mis à jour par Charles Bonnissent il y a plus de 2 ans

  • Sujet changé de ajout de la méthode "closeDocument" à ajout de la méthode tryToDestroy

Formats disponibles : Atom PDF