• Manuel de migration technique et graphique 1.3.0 vers 1.4.0

      Changement de l'ordre des modules

      L'ordre des modules est maintenant toujours le même quand un espace projet est créé :

      1. index
      2. calendars
      3. documents
      4. forum
      5. tasks
      6. wiki

      Le script suivant est à exécuter dans la console d'administration afin de réorganiser les modules des projets existants

      var pageDao = serviceManager.lookup(org.ametys.web.repository.page.PageDAO.ROLE); 
      var query = session.getWorkspace().getQueryManager().createQuery("//element(*, ametys:site)[@ametys:type = 'org.ametys.plugins.workspaces.project.sitetype']/ametys-internal:sitemaps/*", javax.jcr.query.Query.XPATH); 
      var nodes = query.execute().getNodes(); 
      
      var count = 0; 
      
      var positions = ["index", "calendars", "documents", "forum", "tasks", "wiki"]; 
      
      while (nodes.hasNext()) 
      { 
          var node = nodes.next(); 
          var parentId = node.getId(); 
          for (var i=0; i < positions.length; i++) 
          { 
              var page = node.getNode(positions[i]); 
              var pageId = page.getId(); 
              pageDao.movePage("page://" + pageId, "sitemap://" + parentId, i+1); 
          } 
          count++; 
       } 
      print(count + " sitemaps have been updated"); 
    • Service

      Service

      Supprimez le custom_nodetypes.xml

      Exécutez le script suivant pour migrer l'ensemble des services de vos espaces projet.
      Réconstruisez le workspace Live ensuite.

      function __getWorkspacesServicesNodes(serviceId)     
      {     
        var query = qm.createQuery("//element(*, ametys:zoneItem)[@ametys-internal:type = 'SERVICE' and @ametys-internal:service = 'org.ametys.plugins.workspaces." + serviceId + "']", javax.jcr.query.Query.XPATH);     
        return query.execute().getNodes();     
      }     
      
      function __migrateService(node, params)     
      {     
        var paramsNode = node.getNode("ametys:service_parameters");     
        var hasChanges = false;     
        for (var name in params)     
        {     
          var hasChanges = false;     
          var type = params[name];     
          if (type == 'long')     
          {     
            hasChanges = __convertStringPropertyToLong(paramsNode, "ametys:" + name) || hasChanges;     
          }     
          else if (type == 'boolean')     
          {     
            hasChanges = __convertStringPropertyToBoolean(paramsNode, "ametys:" + name) || hasChanges;     
          }     
        }     
           
        return hasChanges;     
      }     
      
      function __convertStringPropertyToBoolean(node, propertyName)     
      {     
        var hasChanged = false;     
        if (node.hasProperty(propertyName))     
        {     
          var property = node.getProperty(propertyName);     
          if (property.getType() == 1) // 1 is for string     
          {     
            var valueAsString = property.getString();     
            property.remove();     
           
            if (valueAsString == "true")     
            {     
              node['setProperty(java.lang.String, boolean)'](propertyName, true);     
              hasChanged = true;     
            }     
            else if (valueAsString == "false")     
            {     
              node['setProperty(java.lang.String, boolean)'](propertyName, false);     
              hasChanged = true;     
            }     
          }     
        }     
        return hasChanged;     
      }    
      
      function __convertStringPropertyToLong(node, propertyName)     
      {     
        var hasChanged = false;     
        if (node.hasProperty(propertyName))     
        {     
          var property = node.getProperty(propertyName);     
          if (property.getType() == 1) // 1 is for string     
          {     
            var valueAsString = property.getString();     
            property.remove();     
           
            if (valueAsString)     
            {     
              node['setProperty(java.lang.String, long)'](propertyName, Number(valueAsString));     
              hasChanged = true;     
            }     
          }     
        }     
        return hasChanged;     
      }     
      
      function migrateTasksService()     
      {     
        var params = {'assigned-to-current-user': 'boolean', 'max-results': 'long', 'results-per-page': 'long', 'enable-add-task': 'boolean'};     
        var nodes = __getWorkspacesServicesNodes('service.Tasks');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }    
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " tasks services have been migrated.");     
        }     
      }    
      
      function migrateFilteredEventsService()     
      {     
        var params = {'max-results': 'long', 'results-per-page': 'long', 'search-period': 'long', 'enable-creation': 'boolean'};     
        var nodes = __getWorkspacesServicesNodes('service.FilteredEvents');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }    
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " filtered events services have been migrated.");     
        }     
      }    
      
      function migrateProjectsCatalogueService()     
      {     
        var params = {'memberOnly': 'boolean', 'use_old_categories_system': 'boolean', 'display_restricted_pages': 'boolean', 'ping_activated': 'boolean'};     
        var nodes = __getWorkspacesServicesNodes('service.ProjectsCatalogue');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }    
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " projects catalogue services have been migrated.");     
        }     
      }    
      
      function migrateActivityStreamService()     
      {     
        var params = {'activities-per-page': 'long', 'max-activities': 'long', 'chronological-order': 'boolean'};     
        var nodes = __getWorkspacesServicesNodes('service.ActivityStream');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }    
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " activity stream services have been migrated.");     
        }     
      }
      
      function migrateMembersService()     
      {     
        var params = {'nbMembers': 'long', 'expandGroup': 'boolean'};     
        var nodes = __getWorkspacesServicesNodes('service.Members');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }    
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " members services have been migrated.");     
        }     
      }
      
      function migrateModuleMembersService()     
      {     
        var params = {'results-per-page': 'long'};     
        var nodes = __getWorkspacesServicesNodes('module.Members');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }    
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " module members services have been migrated.");    
        }     
      }    
      
      function migrateSimpleFilteredEventsService()     
      {     
        var params = {'max-results': 'long', 'search-period': 'long'};     
        var nodes = __getWorkspacesServicesNodes('service.simple.FilteredEvents');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }    
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " simple filtered events services have been migrated.");     
        }     
      }   
      
      function migrateSimpleTasksService()     
      {     
        var params = {'max-results': 'long'};     
        var nodes = __getWorkspacesServicesNodes('service.simple.Tasks');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }   
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " simple tasks services have been migrated.");     
        }     
      }   
      
      function migrateSimpleDocumentsService()     
      {     
        var params = {'max-results': 'long'};     
        var nodes = __getWorkspacesServicesNodes('service.simple.Documents');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }   
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " simple documents services have been migrated.");     
        }     
      }   
      
      function migrateSimpleProjectsCatalogueService()     
      {     
        var params = {'max-results': 'long', 'memberOnly': 'boolean'};     
        var nodes = __getWorkspacesServicesNodes('service.simple.ProjectsCatalogue');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }   
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " simple projects catalogue services have been migrated.");     
        }     
      }   
      
      function migrateSimpleActivityStreamService()     
      {     
        var params = {'max-results': 'long'};     
        var nodes = __getWorkspacesServicesNodes('service.simple.ActivityStream');     
        var count = 0;     
        while (nodes.hasNext())     
        {     
          if (__migrateService(nodes.nextNode(), params))     
          {     
            count++;     
          }     
        }   
      
        if (count > 0)     
        {     
          session.save();     
          print(count + " simple activity stream services have been migrated.");     
        }     
      }   
      
      function migrateProjectManagers()     
      {     
        var query = qm.createQuery("//element(*, ametys:project)", javax.jcr.query.Query.XPATH);     
        var projectNodes = query.execute().getNodes();     
        var count = 0;     
           
        while (projectNodes.hasNext())     
        {     
          var hasChanged = false;     
          var projectNode = projectNodes.nextNode();     
           
          var managersNodeName = 'ametys:managers';     
          if (!projectNode.hasNode(managersNodeName))     
          {     
            var managersNode = projectNode.addNode(managersNodeName, 'ametys:multipleItem');     
            managersNode.setProperty('ametys-internal:typeId', 'user');     
           
            hasChanged = true;     
          }     
           
          var managerNodeName = 'ametys:manager';     
          if (projectNode.hasNode(managerNodeName))     
          {     
            var managerNodes = projectNode.getNodes(managerNodeName);     
            var index = 1;     
            while (managerNodes.hasNext())     
            {     
              var managerNode = managerNodes.nextNode();     
              session.move(managerNode.getPath(), managerNode.getParent().getPath() + '/' + managersNodeName + '/ametys:' + index++);     
            }     
           
            hasChanged = true;     
          }     
           
          if (hasChanged)     
          {     
            count++;     
          }     
        }     
           
        if (count > 0)     
        {     
          session.save();     
          print(count + " workspace projects have been migrated.");     
        }     
      }   
      
      var qm = session.getWorkspace().getQueryManager();   
      
      migrateTasksService();     
      migrateFilteredEventsService();     
      migrateProjectsCatalogueService();     
      migrateActivityStreamService();
      migrateMembersService();
      migrateModuleMembersService();     
      migrateSimpleFilteredEventsService();     
      migrateSimpleTasksService();     
      migrateSimpleDocumentsService();     
      migrateSimpleProjectsCatalogueService();     
      migrateSimpleActivityStreamService();     
      migrateProjectManagers();   
      
      print("End of migration, you can rebuild the Live workspace");     
    • Service Catalogue des espaces projets

      Service Catalogue des espaces projets

      Un nouveau paramètre a été ajouté au service de catalogue des espaces projet (service angular) : "Utiliser les anciennes catégories". 

      Vous pouvez configurer manuellement vos services Catalogue pour activer ce paramètre, ou passer le script JCR suivant qui configurera automatiquement vos services Catalogue pour ajouter le paramètre et l'activer :

      var qm = session.getWorkspace().getQueryManager();       
      var query = qm.createQuery("//element(*, ametys:zoneItem)[@ametys-internal:type='SERVICE' and @ametys-internal:service='org.ametys.plugins.workspaces.service.ProjectsCatalogue']/ametys:service_parameters", javax.jcr.query.Query.XPATH);       
      it = query.execute().getNodes();       
      var count = 0;       
      while (it.hasNext())       
      {       
        var node = it.nextNode();       
        if (!node.hasProperty("ametys:use_old_categories_system"))       
        {       
          node.setProperty("ametys:use_old_categories_system", "true");       
          node.save();       
             
          count++;       
        }       
      }       
             
      print(count + " services have been updated");  
Retour en haut

v1