L'éditeur de scripts permet d'écrire et d'exécuter des scripts depuis l'outil back-office, cet outil est également présent dans l'administration et la vue repository.
Il se base sur la syntaxe GraalJS .
Il peut être enrichi avec vos propres personnalisations.
Enrichissement du référentiel de scripts Variables Fonctions Tutoriels Enrichissement du référentiel de scripts S'il y a des morceaux de code que vous utilisez régulièrement dans vos scripts, vous êtes encouragé à enrichir votre référentiel afin qu'ils soient disponibles dans tout vos scripts.
Il est possible d'enrichir l'outil de script en y ajoutant ses propres variables, fonctions et tutoriels en ajoutant le fichier WEB-INF/param/scripts.xml .
Le format est le suivant, chaque balise est facultative.
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<?xml version="1.0" encoding="UTF-8"?>
<binding>
<variables>...</variables>
<functions>...</functions>
<tutorials>...</tutorials>
</binding> <?xml version="1.0" encoding="UTF-8"?>
<binding>
<variables>...</variables>
<functions>...</functions>
<tutorials>...</tutorials>
</binding>
<?xml version="1.0" encoding="UTF-8"?>
<binding>
<variables>...</variables>
<functions>...</functions>
<tutorials>...</tutorials>
</binding> Variables Pour définir des variables, sous la balise variables , il faut ajouter une balise variable par variable souhaitée.
Chaque balise variable comporte :
name : Nom de la variabletext : Texte explicatifscript : Code correspondant à l'initialisation de la variable. Il est recommandé de l'externaliser via l'attribut file qui contient un chemin relatifsignature : Signature de la variable
type : Type de la variable
examples comportant plusieurs balises example composée elle-même de :
text : Texte explicatif de l'exemplescript : Contenu de l'exemple. Il est recommandé de l'externaliser via l'attribut file qui contient un chemin relatif
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<variable>
<name>Content.selection</name>
<text type="i18n">PLUGINS_CMS_SCRIPT_VAR_SELECTION</text>
<script file="js/Content-variables.js"/>
<signature>
<type>org.ametys.cms.repository.Content[]</type>
</signature>
<examples>
<example>
<script file="examples/Content.selection-01.js"/>
</example>
</examples>
</variable> <variable>
<name>Content.selection</name>
<text type="i18n">PLUGINS_CMS_SCRIPT_VAR_SELECTION</text>
<script file="js/Content-variables.js"/>
<signature>
<type>org.ametys.cms.repository.Content[]</type>
</signature>
<examples>
<example>
<script file="examples/Content.selection-01.js"/>
</example>
</examples>
</variable> Voir le code
<variable>
<name>Content.selection</name>
<text type="i18n">PLUGINS_CMS_SCRIPT_VAR_SELECTION</text>
<script file="js/Content-variables.js"/>
<signature>
<type>org.ametys.cms.repository.Content[]</type>
</signature>
<examples>
<example>
<script file="examples/Content.selection-01.js"/>
</example>
</examples>
</variable>
Fonctions Pour définir des fonctions, sous la balise functions , il faut ajouter une balise function par variable souhaitée.
Chaque balise function comporte :
name : Nom de la fonctiontext : Texte explicatifscript : Code correspondant au contenu de la fonction. Il est recommandé de l'externaliser via l'attribut file qui contient un chemin relatifsignature : Signature de la fonction
type : Type de la valeur de retour de la fonctiontext : Documentation de la valeur de retourarguments composé de plusieurs balises argument avec :
name : Nom de l'argumenttype : Type de l'argumenttext : Texte explicatif de l'argumentoptional : Booléen indiquant si l'argument est optionnel
examples comportant plusieurs balises example composée elle-même de :
text : Texte explicatif de l'exemplescript : Contenu de l'exemple. Il est recommandé de l'externaliser via l'attribut file qui contient un chemin relatif
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<function>
<name>Solr.contentQuery</name>
<text i18n="true">plugin.cms:PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT</text>
<signature>
<type>org.ametys.plugins.repository.AmetysObjectIterable</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_RETURN</text>
<arguments>
<argument>
<name>query</name>
<type>String</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_QUERY</text>
</argument>
<argument>
<name>contentTypes</name>
<type>String/String[]</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_CONTENT_TYPES</text>
</argument>
<argument>
<name>facets</name>
<type>Object</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_FACETS</text>
</argument>
<argument>
<name>workspaceName</name>
<type>String</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_WORKSPACE</text>
</argument>
</arguments>
</signature>
<examples>
<example>
<script file="examples/Solr.contentQuery-01.js"/>
</example>
</examples>
</function> <function>
<name>Solr.contentQuery</name>
<text i18n="true">plugin.cms:PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT</text>
<signature>
<type>org.ametys.plugins.repository.AmetysObjectIterable</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_RETURN</text>
<arguments>
<argument>
<name>query</name>
<type>String</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_QUERY</text>
</argument>
<argument>
<name>contentTypes</name>
<type>String/String[]</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_CONTENT_TYPES</text>
</argument>
<argument>
<name>facets</name>
<type>Object</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_FACETS</text>
</argument>
<argument>
<name>workspaceName</name>
<type>String</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_WORKSPACE</text>
</argument>
</arguments>
</signature>
<examples>
<example>
<script file="examples/Solr.contentQuery-01.js"/>
</example>
</examples>
</function> Voir le code
<function>
<name>Solr.contentQuery</name>
<text i18n="true">plugin.cms:PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT</text>
<signature>
<type>org.ametys.plugins.repository.AmetysObjectIterable</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_RETURN</text>
<arguments>
<argument>
<name>query</name>
<type>String</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_QUERY</text>
</argument>
<argument>
<name>contentTypes</name>
<type>String/String[]</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_CONTENT_TYPES</text>
</argument>
<argument>
<name>facets</name>
<type>Object</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_FACETS</text>
</argument>
<argument>
<name>workspaceName</name>
<type>String</type>
<text type="i18n">PLUGINS_CMS_SCRIPT_FCT_SOLR_QUERY_CONTENT_SIGNATURE_ARG_WORKSPACE</text>
</argument>
</arguments>
</signature>
<examples>
<example>
<script file="examples/Solr.contentQuery-01.js"/>
</example>
</examples>
</function>
Tutoriels Les tutoriels sont uniquement de la documentation, sous la balise tutorials , il faut ajouter une balise tutorial par tutoriel souhaité.
Chaque balise tutorial comporte :
name : Libellétext : Texte explicatifexamples comportant plusieurs balises example composée elle-même de :
text : Texte explicatif de l'exemplescript : Contenu de l'exemple. Il est recommandé de l'externaliser via l'attribut file qui contient un chemin relatif
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<tutorial>
<name type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP</name>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_DESCRIPTION</text>
<examples>
<example>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_EXAMPLE_01</text>
<script file="tutorials/tuto-01.js"/>
</example>
<example>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_EXAMPLE_02</text>
<script file="tutorials/tuto-02.js"/>
</example>
</examples>
</tutorial> <tutorial>
<name type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP</name>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_DESCRIPTION</text>
<examples>
<example>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_EXAMPLE_01</text>
<script file="tutorials/tuto-01.js"/>
</example>
<example>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_EXAMPLE_02</text>
<script file="tutorials/tuto-02.js"/>
</example>
</examples>
</tutorial> Voir le code
<tutorial>
<name type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP</name>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_DESCRIPTION</text>
<examples>
<example>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_EXAMPLE_01</text>
<script file="tutorials/tuto-01.js"/>
</example>
<example>
<text type="i18n">PLUGINS_CORE_UI_SCRIPT_TUTO_FIRSTSTEP_EXAMPLE_02</text>
<script file="tutorials/tuto-02.js"/>
</example>
</examples>
</tutorial>