Uploaded image for project: 'Offre de formation'
  1. Offre de formation
  2. ODF-2242

L'ajout d'un élément dans une maquette de formation validée rend 2 boutons actifs

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: Critical Critical
    • 4.4.10, 4.5.0
    • 4.1.3
    • None
    • None
    • 4.5 RC2

      1. Valider globalement une formation
      2. Ajouter un conteneur sous la formation
      3. La formation a 2 boutons actifs : brouillon et validé (voir screenshot)

          [ODF-2242] L'ajout d'un élément dans une maquette de formation validée rend 2 boutons actifs

          Script pour connaitre le nombre et les identifiants des formations avec un double état

          var qm = session.getWorkspace().getQueryManager();   
          var query = qm.createQuery("//element(*, ametys:programContent)", javax.jcr.query.Query.XPATH);   
          var nodes = query.execute().getNodes();   
          var count = 0;   
          while (nodes.hasNext())   
          {   
           	var node = nodes.next();   
            	var workflowNode = node.getNode("ametys-internal:workflows").getNodes().next();  	var nbCurrentSteps = workflowNode.getNodes("oswf:currentStep").getSize();
            	if (nbCurrentSteps > 1)
              {
                	count++;
                	print(node.getProperty("ametys:title").getString() + " (" + node.getUUID() + ") has " + nbCurrentSteps + " current steps");
              }
          }   
          print();
          print("=> " + count + " programs have been found with multiple current steps");
          

          Script pour réparer les formations impactées

          var qm = session.getWorkspace().getQueryManager();   
          var query = qm.createQuery("//element(*, ametys:programContent)", javax.jcr.query.Query.XPATH);   
          var nodes = query.execute().getNodes();   
          var count = 0;   
          while (nodes.hasNext())   
          {   
           	var node = nodes.next();   
            	var workflowNode = node.getNode("ametys-internal:workflows").getNodes().next();
            
            	var nbCurrentStepNodes = workflowNode.getNodes("oswf:currentStep");
            	if (nbCurrentStepNodes.getSize() > 1)
              {
                	count++;
                	      
                	var firstCurrentStep = nbCurrentStepNodes.next();
                	var secondCurrentStep = nbCurrentStepNodes.next();
                	var stepToRemove = firstCurrentStep;
                
                	if (firstCurrentStep.hasProperty("ametys:validation") && !secondCurrentStep.hasProperty("ametys:validation"))
                  {
                    	stepToRemove = secondCurrentStep;
                  }
                
                	stepToRemove.remove();
              }
          }   
            
          if (count > 0)
          {
            	session.save();
          }
             
          print();
          print(count + " programs with multiple current steps have been fixed");
          

          Laurence Aumeunier added a comment - Script pour connaitre le nombre et les identifiants des formations avec un double état var qm = session.getWorkspace().getQueryManager(); var query = qm.createQuery( " //element(*, ametys:programContent)" , javax.jcr.query.Query.XPATH); var nodes = query.execute().getNodes(); var count = 0; while (nodes.hasNext()) { var node = nodes.next(); var workflowNode = node.getNode( "ametys-internal:workflows" ).getNodes().next(); var nbCurrentSteps = workflowNode.getNodes( "oswf:currentStep" ).getSize(); if (nbCurrentSteps > 1) { count++; print(node.getProperty( "ametys:title" ).getString() + " (" + node.getUUID() + ") has " + nbCurrentSteps + " current steps" ); } } print(); print( "=> " + count + " programs have been found with multiple current steps" ); Script pour réparer les formations impactées var qm = session.getWorkspace().getQueryManager(); var query = qm.createQuery( " //element(*, ametys:programContent)" , javax.jcr.query.Query.XPATH); var nodes = query.execute().getNodes(); var count = 0; while (nodes.hasNext()) { var node = nodes.next(); var workflowNode = node.getNode( "ametys-internal:workflows" ).getNodes().next(); var nbCurrentStepNodes = workflowNode.getNodes( "oswf:currentStep" ); if (nbCurrentStepNodes.getSize() > 1) { count++; var firstCurrentStep = nbCurrentStepNodes.next(); var secondCurrentStep = nbCurrentStepNodes.next(); var stepToRemove = firstCurrentStep; if (firstCurrentStep.hasProperty( "ametys:validation" ) && !secondCurrentStep.hasProperty( "ametys:validation" )) { stepToRemove = secondCurrentStep; } stepToRemove.remove(); } } if (count > 0) { session.save(); } print(); print(count + " programs with multiple current steps have been fixed" );

          En 4.3 la post-function ChangeParentProgramItemStateFunction ne sert à rien et devrait être supprimée :

          • la relation parent <-> enfant étant une relation inverse, le parent direct repasse déjà à l'état brouillon par la EditContentFunction
          • ChangeParentProgramItemStateFunction n'est utilisée qu'en post-function de l'action de création, or à ce stade la relation au parent n'existe pas encore, donc la fonction ne fait rien

          Laurence Aumeunier added a comment - En 4.3 la post-function ChangeParentProgramItemStateFunction ne sert à rien et devrait être supprimée : la relation parent <-> enfant étant une relation inverse, le parent direct repasse déjà à l'état brouillon par la EditContentFunction ChangeParentProgramItemStateFunction n'est utilisée qu'en post-function de l'action de création, or à ce stade la relation au parent n'existe pas encore, donc la fonction ne fait rien

          En 4.3 la validation globale n'étant plus une action de workflow, le problème n'est plus reproductible.

          En 4.2 pour le reproduire :

          • Ajouter un conteneur à une formation validée
          • La formation passe en brouillon
          • Valider globalement la formation
            => la formation apparait à la fois dans l'état brouillon et validé

          Il faut revalider globalement la formation pour que la formation soit à nouveau que dans l'état validé.
          Par la suite, si on rajoute un nouveau conteneur, la formation a de nouveau 2 états actifs (brouillon et validé).

          Laurence Aumeunier added a comment - En 4.3 la validation globale n'étant plus une action de workflow, le problème n'est plus reproductible. En 4.2 pour le reproduire : Ajouter un conteneur à une formation validée La formation passe en brouillon Valider globalement la formation => la formation apparait à la fois dans l'état brouillon et validé Il faut revalider globalement la formation pour que la formation soit à nouveau que dans l'état validé. Par la suite, si on rajoute un nouveau conteneur, la formation a de nouveau 2 états actifs (brouillon et validé).

            laurence Laurence Aumeunier
            lperier Laurence Perier
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: