Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 13/10/2017 12:14:38

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Page qui "génère" le html d'un "program" et "subprogram"

Bonjour,

J'utilise actuellement Ametys ODF 2.5.2

-Objectif : Je cherche à modifier la façon dont les informations sont organisés dans un "program" (une formation ?)

Solution actuelle : Dans le fichier skins/nom_du_skin/stylesheets/content/program/program-main.xsl j'ai rajouté du code javascript avant $j("#tabs-<xsl:value-of select="$programAnchor"/>").tabs(); pour déplacer des éléments dans les différents onglets ("présentation"/"programme"/"admission"/"et après"/"contacts") via le DOM (code html).


Solution envisagée : Au lieu de modifier le DOM en javascript, je voudrais modifier le fichier qui "génère" le code html à partir du formulaire (celui que l 'on voit lorsque l'on fait "Modifier le contenu" dans l'onglet formation). Le problème c'est que je n'ai pas trouvé ce fichier.  Si vous pouviez m'indiquer son emplacement, cela serait parfait smile

Bonne journée,
Mathieu

Offline

#2 16/10/2017 11:11:48

Laurence Aumeunier
Expert Team
Registered: 10/08/2010
Posts: 142

Re: Page qui "génère" le html d'un "program" et "subprogram"

Bonjour,

Le rendu graphique d'un contenu et le formulaire de modification sont 2 choses différentes.

Vous pouvez surcharger le rendu sans modifier le DOM en javascript. Dans votre XSL skins/nom_du_skin/stylesheets/content/program/program-main.xsl vous avez accès à tous les templates XSL qui permettent de générer le code HTML, vous pouvez les surcharger comme vous le souhaitez.

La XSL par importée par défaut est celle-ci : https://code.ametys.org/projects/ODF/re … ads%2F2.x. Par exemple, pour réorganiser les informations dans les différents onglets, vous devez re-écrire les templates "tabs-xx" dans votre fichier.

Pour l'organisation du formulaire, il n'y a pas de XSL. Le formaulaire est généré à partir d'une vue du type de contenu (cf. https://wiki.ametys.org/pages/viewpage. … u-Lesvues) .
A la ligne 4006 du fichier https://code.ametys.org/projects/ODF/re … ads%2F2.x, vous trouverez la déclaration de la vue "main" de type "edition". C'est cette vue qui est utilisée par défaut pour le formulaire des formations. Elle peut aussi être surchargée.


Laurence Aumeunier
Ametys Expert

Offline

#3 19/10/2017 08:22:20

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Page qui "génère" le html d'un "program" et "subprogram"

Bonjour,

Laurence Aumeunier wrote:

La XSL importée par défaut est celle-ci : https://code.ametys.org/projects/ODF/re … m-main.xsl .Par exemple, pour réorganiser les informations dans les différents onglets, vous devez ré-écrire les templates "tabs-xx" dans votre fichier.

Je vois que ma question n'était pas très claire, mais cela répond parfaitement à mon problème  big_smile .

Remarque : Il faut faire attention aux namespaces qu'il y a dans la portion de code que l'on récupère,  et penser à ajouter ceux qui manquent dans les attributs de la balise stylesheet (dans mon cas : xmlns:exsl="http://exslt.org/common" ). Je sais que c'est logique et que c'est assez bête comme erreur mais ça fait perdre un peu de temps   hmm

Merci et bonne journée,
Mathieu

Offline

#4 23/10/2017 17:35:34

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Page qui "génère" le html d'un "program" et "subprogram"

Bonjour,

je pensais avoir compris l'autre jour, mais il faut croire que non  sad

Nouvel objectif : Je cherche à pouvoir sélectionner plusieurs "référentiels NSF" (je ne sais pas pourquoi c'est le seul qui est en sélection unique hmm )

Les différentes étapes de mon raisonnement :

-1 : Dans WEB-INF/param/odf/code_nsf.xml , j'ai trouvé la liste des codes NSF. J'ai comparé avec le fichier code_rome.xml, a priori il n'y a pas de contraintes/autorisations à ce niveau pour la sélection d'une seule ou plusieurs valeurs de code.


-2 : Ici : https://code.ametys.org/projects/ODF/re … plugin.xml à la ligne 3614,  j'ai trouvé le code suivant :

 <extension point="org.ametys.cms.contenttype.ContentTypeExtensionPoint"
           id="odf-enumeration.CodeNsf" 
           config="odf-enumeration/code_nsf.xml"/>

Mais je n'ai pas trouvé d'autre fichier code_nsf.xml que celui qui contient la liste des codes.


-3 : En fouillant dans les jars, dans ametys-plugin-odf-2.5.2.jar, à l’intérieur du fichier org/ametys/plugins/odf/plugin.xml j'ai trouvé :

<!-- NSF -->
                    <cms:metadata name="nsfCode" type="string" multiple="true">
                        <label i18n="true">PLUGINS_ODF_PROGRAM_NSF_REF</label>
                        <description i18n="true">PLUGINS_ODF_PROGRAM_NSF_REF_DESC</description>
                        <enumeration>
                            <custom-enumerator class="org.ametys.odf.enumeration.StaticODFEnumerator">
                                <constant>CODE_NSF</constant>
                            </custom-enumerator>
                        </enumeration>          
                    </cms:metadata> 

puis

<!-- DGESIP -->
                    <cms:metadata name="dgesipCode" type="string" multiple="true">
                        <label i18n="true">PLUGINS_ODF_PROGRAM_DGESIP</label>
                        <description i18n="true">PLUGINS_ODF_PROGRAM_DGESIP_DESC</description>    
                        <widget>sorted-multiselect</widget>    
                        <enumeration>
                            <custom-enumerator class="org.ametys.odf.enumeration.StaticODFEnumerator">
                                <constant>CODE_DGESIP</constant>
                            </custom-enumerator>
                        </enumeration>    
                    </cms:metadata>

J'en ai déduis qu'il me faut ajouter : <widget>sorted-multiselect</widget>

-4 : En lisant https://wiki.ametys.org/pages/viewpage. … nuexistant j'ai cru comprendre que je devais crée un fichier WEB-INF/param/content-types/_override/org.ametys.plugins.odf.plugin.xml
Et a l’intérieur j'y ai mis :

<cms:content-type xmlns:cms="http://www.ametys.org/schema/cms">
    
<cms:metadata name="nsfCode" type="string" multiple="true">
    <label i18n="true">PLUGINS_ODF_PROGRAM_NSF_REF</label>
    <description i18n="true">PLUGINS_ODF_PROGRAM_NSF_REF_DESC</description>
    <widget>sorted-multiselect</widget> 
    <enumeration>
        <custom-enumerator class="org.ametys.odf.enumeration.StaticODFEnumerator">
            <constant>CODE_NSF</constant>
        </custom-enumerator>
    </enumeration>          
</cms:metadata>

</cms:content-type>

Mais cela ne fonctionne pas sad

Je pense que je ne suis pas très loin de la solution, j'ai du loupé une étape mais je ne vois pas laquelle sad

Offline

#5 23/10/2017 17:45:45

Laurence Aumeunier
Expert Team
Registered: 10/08/2010
Posts: 142

Re: Page qui "génère" le html d'un "program" et "subprogram"

Bonjour,

Oui c'est juste le nom du fichier XML qui n'est pas correct. Pour une formation c'est WEB-INF/param/content-types/_override/org.ametys.plugins.odf.Content.program.xml (le nom du fichier doit être l'identifiant du type de contenu)

Ceci dit, cela ressemble à un bug, car si la donnée est définie comme multiple, il n'est pas normal de ne pouvoir sélectionner qu'une valeur dans le formulaire... N'hésitez pas à ouvrir une issue dans notre JIRA https://issues.ametys.org/

Attention sur https://code.ametys.org/projects/ODF/re … plugin.xml il faut sélectionner la branche "2.x" pour voir ce qui correspond à votre version. La branche "master" est la branche de développement actuelle, compatible uniquement avec Ametys 4.


Laurence Aumeunier
Ametys Expert

Offline

#6 24/10/2017 16:32:37

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Page qui "génère" le html d'un "program" et "subprogram"

Bonjour,

Merci c'est parfait, cela marche avec le bon nom de fichier big_smile

J'essayerais de me souvenir que ça dépend du type de contenu que l'on veut surcharger, j'avais simplement repris l'arborescence du jar pour crée le nom de fichier  hmm

Encore merci et bonne journée,
Mathieu

Offline

Board footer

Powered by FluxBB