Migration graphique 2.8 vers 2.9

    • Ajout un message de warning lors de l'ajout d'un lien

      Lors de l'ajout ou la modification d'un lien coté front-office, un nouveau message de warning est affiché à l'utilisateur dès que le lien saisi ne commence ni par http ni https.

      La classe CSS associée à ce texte est "add-links-dialog-url-warning", à ajouter dans vos fichiers CSS pour personnaliser le rendu graphique.
      Exemple :

      .add-links-dialog-url-warning
      {
          margin-top: 5px;
          color: #ffae01;
      }

    • InputData - Affectation d'un thème aux liens personnalisés

      Jusque là, lors de l'utilisation de l'annuaire de liens via les InputData (en dehors d'un service), l'ajout d'un lien personnalisé n'était pas géré. Les chartes qui tentaient de le faire n'arrivaient pas à ajouter le lien personnalisé à un thème, donc celui-ci n'était jamais remonté. Maintenant, il est possible d'ajouter des liens personnalisés à des InputData.

      Lorsqu'une charte fait appel à un bouton d'ajout de favori depuis un InputData, il doit appeler le template display-add-user-link-btn-inputdata avec les paramètres :

      • customTheme portant le nom d'un thème (tel que défini dans link-themes.xml)
      • displayUserLinks étant un booléen extrait en général depuis l'attribut displayUserLinks de l'InputData concerné
        Par exemple
      <xsl:call-template name="display-add-user-link-btn-inputdata">
          <xsl:with-param name="customTheme" select="'AUTRES_APPLICATIONS'"/>
          <xsl:with-param name="displayUserLinks" select="/cms/inputData/linkDirectory/@displayUserLinks"/>
      </xsl:call-template>

      Attention à ce que l'InputData concerné porte bien l'attribut displayUserLinks="true" (Ca devait être le cas avant, ce n'était pour autant pas toujours fait).

    • InputData - Plusieurs InputData pour un gabarit

      Cette migration n'est pas nécessaire si vous n'avez qu'un seul menu à la fois référençant l'annuaire de liens (en dehors de services) dans un gabarit donné.

      Lorsque plusieurs InputData link-directory peuvent être remontés par un seul gabarit ou pour faire des menus multiples depuis les InputData link-directory dans un seul gabarit. Il est nécessaire d'ajouter des identifiants à ces InputData pour pouvoir les différencier. Ainsi, les personnalisations ne se croiseront pas.

      Ancienne méthode

      Jusque là, nous essayons de nous référer au thème pour différencier les liens à afficher dans un menu ou dans un autre. Cependant, un lien qui appartient à plusieurs thèmes est automatiquement (dé)sélectionné des différents menus lorsque l'un d'entre eux est personnalisé.

      <themes templates="index,page" configurable="true"> 
          <theme id="MESSAGERIE" lang="fr"/> 
          <theme id="AGENDA" lang="fr"/> 
          <theme id="APPLICATIONS_CLIENT" lang="fr"/> 
          <theme id="AUTRES_APPLICATIONS" lang="fr"/> 
      </themes> 

      Pour cet exemple, nous avons une entête de page portant sur les thèmes MESSAGERIE et AGENDA (qui ne sont pas configurables via la charte, mais le sont pourtant via la déclaration).

      Un menu personnalisable portant sur les liens contenus dans APPLICATIONS_CLIENT, et un autre sur AUTRES_APPLICATIONS.

      Dans la charte, pour sélectionner les liens appartenant à un thème, nous utilisons l'expression XPath :

      /cms/inputData/linkDirectory/links/link[contains(themes, 'Autres applications')] 

      A noter : Ce n'est pas l'identifiant du thème qui est utilisé mais son libellé.

      Lorsqu'un lien appartient à la fois à APPLICATIONS_CLIENT et AUTRES_APPLICATIONS et qu'il est sélectionné pour être mis en favori, même si cela est fait depuis le second menu, il est automatiquement mis en favori dans les deux menus.

      Nouvelle méthode

      Il est nécessaire de séparer chaque menu et de les identifier. Pour cela, nous avons rajouté la notion d'identifiant d'InputData : inputDataId.

      <themes templates="index,page"> 
          <theme id="MESSAGERIE" lang="fr"/> 
          <theme id="AGENDA" lang="fr"/> 
      </themes> 
      <themes templates="index,page" configurable="true" inputDataId="appClient"> 
          <theme id="APPLICATIONS_CLIENT" lang="fr"/> 
      </themes> 
      <themes templates="index,page" configurable="true" inputDataId="appOther"> 
          <theme id="AUTRES_APPLICATIONS" lang="fr"/> 
      </themes> 

      Dans la charte, pour récupérer l'ensemble des liens correspondant à InputData, nous utilisons l'expression XPath : 

      /cms/inputData/linkDirectory[@id='appOther']/links/link 

      Ainsi, lors de la personnalisation, les liens sont mis en favoris en fonction de l'identifiant de l'InputData, et il est possible de sélectionner plusieurs thèmes pour un seul InputData.

      Exemple

      Fichier link-themes.xml :

      <?xml version="1.0" encoding="UTF-8" ?>
      <link-themes>
          <themes templates="index,page" configurable="true" displayUserLinks="true">
              <theme id="OUTILS" lang="fr"/>
              <theme id="TOOLS" lang="en"/>
          </themes>
      </link-themes>

      Ancien XML retourné :

      <linkDirectory applicable="true" configurable="true">
          <themes>
              <theme>directoryTheme://9afefe2e-9f17-4059-a9fc-21b68166879f</theme>
          </themes>
          <links>
              <link id="directoryLink://f9706d93-c83e-44fb-b22b-e012d797a8fe" lang="fr" url="http://www.ametys.org/forum/" urlType="URL" title="Forum" content="" alternative="Forum Ametys" pictureAlternative="" user-selected="false" color="#9900CC" pictureType="external" picturePath="picture" pictureName="chat.png" pictureSize="4497" imageType="link-metadata" limitedAccess="false" userLink="false" isHidden="false" status="NORMAL">
                  <themes>Outils</themes>
              </link>
              <link id="directoryLink://2e62b33d-fe90-4447-b135-01b11d6e270e" lang="fr" url="https://fr-fr.facebook.com/AmetysCMS" urlType="URL" title="Facebook" content="" alternative="Facebook" pictureAlternative="" user-selected="false" color="#9900CC" pictureType="external" picturePath="picture" pictureName="facebook.png" pictureSize="2809" imageType="link-metadata" limitedAccess="false" userLink="false" isHidden="false" status="NORMAL">
                  <themes>Outils</themes>
              </link>
              <link id="directoryLink://5a7746c6-1fe2-4292-9326-6fe88db24f9b" lang="fr" url="https://twitter.com/ametyscms" urlType="URL" title="Twitter" content="" alternative="Twitter" pictureAlternative="" user-selected="false" color="#9900CC" pictureType="external" picturePath="picture" pictureName="twitter_black.jpg" pictureSize="5140" imageType="link-metadata" limitedAccess="false" userLink="false" isHidden="false" status="NORMAL">
                  <themes>Outils</themes>
              </link>
              <link id="directoryLink://c5bd0a76-d671-4f76-8f64-ddf63b5f9d8e" lang="fr" url="https://wiki.ametys.org/display/AMETYSFR/Documentation+du+CMS+Ametys" urlType="URL" title="Wiki" content="" alternative="Wiki Ametys" pictureAlternative="" user-selected="false" color="#9900CC" pictureType="external" picturePath="picture" pictureName="wiki.png" pictureSize="7008" imageType="link-metadata" limitedAccess="false" userLink="false" isHidden="false" status="NORMAL">
                  <themes>Outils</themes>
              </link>
          </links>
      </linkDirectory>

      Nouveau XML retourné :

      <linkDirectory applicable="true" configurable="true" displayUserLinks="true" id="">
          <themes>
              <theme>directoryTheme://9afefe2e-9f17-4059-a9fc-21b68166879f</theme>
          </themes>
          <links>
              <link id="directoryLink://f9706d93-c83e-44fb-b22b-e012d797a8fe" lang="fr" url="http://www.ametys.org/forum/" urlType="URL" title="Forum" content="" alternative="Forum Ametys" pictureAlternative="" user-selected="false" color="#9900CC" pictureType="external" picturePath="picture" pictureName="chat.png" pictureSize="4497" imageType="link-metadata" limitedAccess="false" userLink="false" isHidden="false" status="NORMAL">
                  <themes>
                      <theme id="directoryTheme://9afefe2e-9f17-4059-a9fc-21b68166879f" name="OUTILS" label="Outils"/>
                  </themes>
              </link>
              <link id="directoryLink://2e62b33d-fe90-4447-b135-01b11d6e270e" lang="fr" url="https://fr-fr.facebook.com/AmetysCMS" urlType="URL" title="Facebook" content="" alternative="Facebook" pictureAlternative="" user-selected="false" color="#9900CC" pictureType="external" picturePath="picture" pictureName="facebook.png" pictureSize="2809" imageType="link-metadata" limitedAccess="false" userLink="false" isHidden="false" status="NORMAL">
                  <themes>
                      <theme id="directoryTheme://9afefe2e-9f17-4059-a9fc-21b68166879f" name="OUTILS" label="Outils"/>
                  </themes>
              </link>
              <link id="directoryLink://5a7746c6-1fe2-4292-9326-6fe88db24f9b" lang="fr" url="https://twitter.com/ametyscms" urlType="URL" title="Twitter" content="" alternative="Twitter" pictureAlternative="" user-selected="false" color="#9900CC" pictureType="external" picturePath="picture" pictureName="twitter_black.jpg" pictureSize="5140" imageType="link-metadata" limitedAccess="false" userLink="false" isHidden="false" status="NORMAL">
                  <themes>
                      <theme id="directoryTheme://9afefe2e-9f17-4059-a9fc-21b68166879f" name="OUTILS" label="Outils"/>
                  </themes>
              </link>
              <link id="directoryLink://c5bd0a76-d671-4f76-8f64-ddf63b5f9d8e" lang="fr" url="https://wiki.ametys.org/display/AMETYSFR/Documentation+du+CMS+Ametys" urlType="URL" title="Wiki" content="" alternative="Wiki Ametys" pictureAlternative="" user-selected="false" color="#9900CC" pictureType="external" picturePath="picture" pictureName="wiki.png" pictureSize="7008" imageType="link-metadata" limitedAccess="false" userLink="false" isHidden="false" status="NORMAL">
                  <themes>
                      <theme id="directoryTheme://9afefe2e-9f17-4059-a9fc-21b68166879f" name="OUTILS" label="Outils"/>
                  </themes>
              </link>
          </links>
      </linkDirectory>

      Nous pouvons constater qu'il y a plusieurs différences :

      1. La donnée displayUserLinks est parsée, il était donc impossible de définir auparavant si les liens personnalisés allés être parsés et s'il fallait ajouter le bouton puisque l'élément n'était pas visible.
      2. L'InputData porte un identifiant ce qui en permet d'en créer plusieurs pour faire des menus différenciés. Cependant, cette donnée est gérée par défaut dans les templates des XSL noyau comme étant vide. Mais elle est paramétrable pour faire appel aux templates noyau sur un autre InputData que celui ayant l'identifiant vide (identifiant par défaut).
      3. Les noms des thèmes auxquelles appartiennent chaque lien ne sont plus simplement listés et séparés par des virgules mais on des balises indépendantes.
Retour en haut