Déclaration et modification d'un type de contenu

 

Le CMS Ametys supporte différents types de contenus (article, actualité, galeries photos, FAQ, ...). Les types de contenus disponibles dépendent des extensions (plugins) utilisés.

Les types de contenus les plus couramment sont décrits dans le Manuel Utilisateur.

Un type de contenu est un point d'extension multiple. Un intégrateur peut créer des nouveaux type de contenus (séminaire, poste, etc) suivant vos besoins.

  1. Définition
    1. Les icônes
    2. Les métadonnées
      1. Déclaration simple
      2. Validation
      3. Widget d'édition
      4. Métadonnée composite
      5. Les énumérations
      6. Restrictions
        1. Restriction en lecture ou lecture/écriture
        2. Restriction en lecture ou lecture/écriture en fonction d'un droit
        3. Restriction en lecture ou lecture/écriture en fonction d'un état du workflow
        4. Restrictions sur les composites multiples (repeater)
    3. Les vues
  2. Déclaration d'un nouveau type de contenu
    1. Définition dans le répertoire WEB-INF/param/content-types
    2. Exemple complet de déclaration d'un contenu simple
    3. Définition dans un plugin
  3. Le rendu graphique
  4. Modification d'un type de contenu existant
    1. Restriction en lecture ou lecture/écriture
    2. Restriction en lecture ou lecture/écriture en fonction d'un droit
    3. Restriction en lecture ou lecture/écriture en fonction d'un état du workflow

Définition

Un type de contenu est défini par:

  • Un identifiant unique
  • Un libellé
  • Une description
  • Des icônes de taille 16x16, 32x32 et 48x48 pixels
  • Un droit (optionnel) pour restreinte la création du type de contenu aux personnes ayant droit
  • Un jeu de métadonnées (ex: titre, description, image, fichiers, date, ...) typées.
  • Des vues

Chaque vue définie la liste des métadonnées qui lui sont nécessaires, parmi les métadonnées du contenus. Par exemple, une vue "abstract" (résumé) aura besoin des métadonnées titre et illustration, tandis qu'une vue "main" (complète) aura besoin de l'ensemble des métadonnées.

Un type de contenu est un point d'extension de type org.ametys.cms.contenttype.ContentTypeExtensionPoint. Sa déclaration doit respecté le format XML suivant:

Format XML de déclaration d'un type de contenu

<extension point="org.ametys.cms.contenttype.ContentTypeExtensionPoint"
		   id="org.ametys.web.default.Content.article"
           class="org.ametys.web.contenttype.WebContentType">
	
	<cms:content-type>
		<cms:label i18n="true">CONTENT_ARTICLE_LABEL</cms:label>
        <cms:description i18n="true">CONTENT_ARTICLE_DESCRIPTION</cms:description>
        <cms:default-title i18n="true">CONTENT_ARTICLE_DEFAULT_TITLE</cms:default-title>
        <cms:icons>
            <cms:small>img/content/article/icon-small.png</cms:small>
            <cms:medium>img/content/article/icon-medium.png</cms:medium>
            <cms:large>img/content/article/icon-large.png</cms:large>
        </cms:icons>
                    
        <cms:right>Web_Right_Article_Create</cms:right>

		<!-- Déclaration des métadonnées ici -->

		<!-- Déclaration des vues ici -->

	</cms:content-type>
</extention>

Les icônes

L'icône "medium", ainsi que le libellé et la description sont utilisées pour le menu "Ajouter un contenu"

<cms:icons>
    <cms:small>img/content/article/icon-small.png</cms:small>
    <cms:medium>img/content/article/icon-medium.png</cms:medium>
	<cms:large>img/content/article/icon-large.png</cms:large>
</cms:icons>

L'icône "small" est utilisée lors d'un l'insertion d'un contenu dans une page et dans les résultats du moteur de recherche.

L'icône "large" est à ce jour pas utilisée.

Les métadonnées

Les métadonnées sont des paramètres classiques comme décrits dans la page Généralités sur les paramètres avec quelques variations et éléments supplémentaires.

Déclaration simple

Comme tout paramètre, une métadonnée possède à minima un nom unique, libellé, une description et un type (string, date, long, ...) et se déclare comme suit dans la balise <cms:metadata>:

Exemple de déclaration d'une métadonné "Titre" de type string, obligatoire

<cms:metadata name="title" type="string">
	<label i18n="true">CONTENT_ARTICLE_TITLE</label>
    <description i18n="true">CONTENT_ARTICLE_TITLE_DESC</description>
    <validation>
    	<mandatory />
    </validation>
</cms:metadata>

Voir la liste des types disponibles pour une métadonnée.

Validation

L'instruction <validation> permet de définir des règles de validation sur une métadonnée:

  • <mandatory> pour rendre la métadonnée obligatoire
  • <regexp> pour définir une expression régulière
  • <invalidText> pour personnaliser le message en cas de saisie incorrecte (expression régulière non respectée)
  • <custom-validator> classe java implémentant l'interface org.ametys.runtime.util.parameter.Validator pour définir son propre validateur
    • Par exemple org.ametys.runtime.plugins.core.util.parameter.TextValidator pour champ texte simple ou org.ametys.runtime.plugins.core.util.parameter.RichTextValidator pour champ riche, supportent une sous balise

      • <maxlength> pour un nombre de caractères maximums supporté

 

Exemple de validation pour un champ "adresse mail" obligatoire

<validation>
	<custom-validator class="org.ametys.runtime.plugins.core.util.parameter.TextValidator"> 
       <maxlength>60</maxlength>
	   <mandatory/>
       <regexp>^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z0-9][A-Za-z0-9]+)$</regexp>
	   <invalidText i18n="true">PLUGINS_WEB_REGEXP_INVALID_MAIL</invalidText>
	</custom-validator>
</validation>

Voir d'autres exemples sur la page Généralités sur les paramètres, chapitre "Validation".

Widget d'édition

Il est possible de préciser un "widget" pour l'édition de la métadonnée. Par exemple, pour une métadonnée de type "string", on peut utiliser le widget "textarea" pour éditer la métadonnée sur plusieurs lignes.
L'utilisation d'un widget se fait au travers de la balise <widget> comme dans l'exemple ci-dessous:

Exemple d'utilisation d'un widget

<cms:metadata name="abstract" type="string">
    <label i18n="false">CONTENT_ARTICLE_ABSTRACT</label>
    <description i18n="true">CONTENT_ARTICLE_ABSTRACT_DESC</description>
    <widget>textarea</widget>
</cms:metadata>

Voir la liste des widgets d'édition disponibles pour les métadonnées de contenus.

Métadonnée composite

Une métadonnée peut être "composite", c'est à dire elle-même composée d'autres métadonnées. Par exemple, une illustration est composée d'un fichier et d'un texte alternatif.

Exemple de déclaration d'une métadonnée composite

<cms:metadata name="illustration" type="composite">
	<label i18n="true">CONTENT_ARTICLE_ILLUSTRATION</label>
    <description i18n="true">CONTENT_ARTICLE_ILLUSTRATION_DESC</description>
    <cms:metadata name="image" type="file">
    	<label i18n="true">CONTENT_ARTICLE_IMAGE</label>
        <description i18n="true">CONTENT_ARTICLE_IMAGE_DESC</description>
        <widget>external-or-resource-image</widget>
    </cms:metadata>
    <cms:metadata name="alt-text" type="string">
    	<label i18n="true">CONTENT_ARTICLE_IMAGE_ALT</label>
        <description i18n="true">CONTENT_ARTICLE_IMAGE_ALT_DESC</description>
    </cms:metadata>
</cms:metadata>

Il est possible de définir des métadonnées composites multiples, c'est à dire pouvant être répétées autant de fois que souhaité. Par exemple pour pouvoir ajouter 0 à n pièces jointes à un contenu. C'est ce qu'on appelle des "repeater".

Exemple de déclaration d'un repeater

<cms:repeater name="attachments" initial-size="0">
	<label i18n="true">PLUGINS_ODF_PROGRAM_ATTACHED_FILES</label>
    <description i18n="true">PLUGINS_ODF_PROGRAM_ATTACHED_FILES_DESC</description>
    <cms:add-label i18n="true">PLUGINS_ODF_PROGRAM_ATTACHED_FILE_ADD</cms:add-label>
    <cms:del-label i18n="true">PLUGINS_ODF_PROGRAM_ATTACHED_FILE_DEL</cms:del-label>
    <cms:metadata name="attachment" type="file">
    	<label i18n="true">PLUGINS_ODF_PROGRAM_ATTACHED_FILE</label>
        <description i18n="true">PLUGINS_ODF_PROGRAM_ATTACHED_FILE_DESC</description>    
    </cms:metadata>    
    <cms:metadata name="attachment-text" type="string">
    	<label i18n="true">PLUGINS_ODF_PROGRAM_ATTACHED_FILE_TEXT</label>
    	<description i18n="true">PLUGINS_ODF_PROGRAM_ATTACHED_FILE_TEXT_DESC</description>    
    </cms:metadata>        
</cms:repeater>        

- cms:add-label permet de redéfinir le tooltip du bouton d'ajout ("Ajouter une entrée" par défaut)
- cms:del-label permet de redéfinir le tooltip du bouton de suppression ("Supprimer une entrée" par défaut)


Les énumérations

Une métadonnée énumérée peut prendre une valeur parmi une liste définie : une liste statique ou dynamique.

Voir les généralité sur les paramètres pour l'écriture d'une liste statique de valeurs.

Restrictions

Il est possible de définir des restrictions en lecture et/ou écriture sur les métadonnées.

Les restrictions peuvent être de plusieurs sorte :

  • restriction en lecture ou lecture/écriture
  • restriction en lecture ou lecture/écriture en fonction d'un droit
  • restriction en lecture ou lecture/écriture en fonction d'un état de workflow
Restriction en lecture ou lecture/écriture
<cms:metadata name="typology" type="string">
	<label i18n="false">Typologie</label>
	<description i18n="false">Typologie de projet</description>
	<cms:restrict-to>
		<cms:cannot read-write-direction="write"/>
	</cms:restrict-to>
</cms:metadata>

Dans cette configuration, si l'attribut read-write-direction vaut:

  • write : le contributeur peut voir la métadonnée, sans pouvoir la modifier (accès en lecture seule)
  • read : le contributeur ne peut ni voir, ni modifier la métadonnée
Restriction en lecture ou lecture/écriture en fonction d'un droit
<cms:metadata name="typology" type="string">
	<label i18n="false">Typologie</label>
	<description i18n="false">Typologie de projet</description>
	<cms:restrict-to>
		<cms:right id="Web_Right_SuperEdit" read-write-direction="write"/>
	</cms:restrict-to>
</cms:metadata>

Dans cette configuration,

  • la balise <right> détermine le droit que doit posséder le contributeur
  • si l'attribut read-write-direction vaut :
    • write : le contributeur ne peut modifier la métadonnée que si il possède le droit "Web_Right_SuperEdit", sinon, il aura accès à la métadonnée uniquement en lecture
    • read : le contributeur aura accès en lecture/écriture la métadonnée que si il possède le droit "Web_Right_SuperEdit"
Restriction en lecture ou lecture/écriture en fonction d'un état du workflow
<cms:metadata name="typology" type="string">
	<label i18n="false">Typologie</label>
	<description i18n="false">Typologie de projet</description>
	<cms:restrict-to>
		<cms:workflow step="2" read-write-direction="write"/>
        <cms:workflow step="3" read-write-direction="read"/>
	</cms:restrict-to>
</cms:metadata>

Dans cette configuration,

  • la balise <workflow> détermine l'état de workflow concerné par la restriction
  • si l'attribut read-write-direction vaut :
    • write : le contributeur ne peut modifier la métadonnée que si le contenu est actuellement dans l'état de workflow défini
    • read : le contributeur aura accès à la métadonnée en lecture/écriture que si le contenu est actuellement dans l'état de workflow défini
Restrictions sur les composites multiples (repeater)

Les restrictions décrites ci-dessus peuvent s'appliquer également aux repeaters

<cms:repeater name="photos" initial-size="0">
	<label i18n="false">Photos</label>
	<description i18n="false">Photos</description>
	<cms:add-label i18n="false">Ajouter une photos</cms:add-label>
	<cms:del-label i18n="false">Supprimer la photos</cms:del-label>
	<cms:restrict-to>
		<cms:right read-write-direction="write" id="Web_Right_SuperEdit"/>
	</cms:restrict-to>
	<cms:metadata name="image" type="file">
		<label i18n="false">Fichier</label>
		<description i18n="false">Fichier image</description>
	</cms:metadata>
	<cms:metadata name="legend" type="string">
		<label i18n="false">Légende</label>
		<description i18n="false">Légende</description>
	</cms:metadata>
</cms:repeater>

 


Si un contributeur n'a pas accès en écriture à un repeater, alors il ne pourra pas ni ajouter, ni supprimer, ni déplacer les entrées du repeater

 

Les vues

Une vue est un ensemble de métadonnées. Chaque vue fait référence aux métadonnées déclarées nécessaires à son affichage.

Une vue est déclarée comme suit, dans la balise <cms:metadata-set> :

Exemple de vue "main"

<cms:metadata-set name="main" type="view">
	<cms:metadata-ref name="title" />
    <cms:metadata-ref name="document-subtitle" />
    <cms:metadata-ref name="illustration">
     	<cms:metadata-ref name="image" />
        <cms:metadata-ref name="alt-text" />
    </cms:metadata-ref>
    <cms:metadata-ref name="abstract" />
    <cms:metadata-ref name="content" />
    <cms:label i18n="true">PLUGINS_WEB_VIEW_MAIN</cms:label>
    <cms:description i18n="true">PLUGINS_WEB_VIEW_MAIN_DESC</cms:description>
</cms:metadata-set>

Exemple de vue "abstract"

<cms:metadata-set name="abstract" type="view">
	<cms:metadata-ref name="title" />
    <cms:metadata-ref name="illustration">
    	<cms:metadata-ref name="image" />
        <cms:metadata-ref name="alt-text" />
    </cms:metadata-ref>
    <cms:metadata-ref name="abstract" />
    <cms:metadata-ref name="content" />
    <cms:label i18n="true">PLUGINS_WEB_VIEW_ABSTRACT</cms:label>
    <cms:description i18n="true">PLUGINS_WEB_VIEW_ABSTRACT_DESC</cms:description>
</cms:metadata-set>
  • L'attribut name est le nom de vue (ex: main, abstract, link; details, search, ...)
  • L'attribute type définit le type de vue: view pour une vue destinée à l'affichage, edition pour une vue d'édition
  • L'attribute internal, optionnel permet de "privatiser" la vue, c'est à dire la rendre invisible pour le contributeur. C'est le cas par exemple de la vue "details" utilisée pour l'indexation des métadonnées pour la recherche.
  • Les balises cms:metadata-ref font référence à une métadonnée décrite dans le type de contenu, en indiquant son nom
  • la balise  cms:label définit le libellé de la vue
  • la balise cms:description définit la description de la vue

Les vues obligatoires

Vous pouvez définir autant de vues que vous souhaitez. En revanche certaines vues sont obligatoires et doivent être déclarées pour tous types de contenus:

  • la vue "main" de type "view" utilisée pour le rendu du contenu dans sa vue "complète"
  • la vue "main" de type "edition" utilisée pour l'édition du contenu
  • la vue "abstract" de type "view" utilisée pour le rendu du contenu dans sa vue "résumé" (dans une remontée de contenu par exemple)
  • la vue "link" de type "view" utilisée pour le rendu du contenu dans sa vue "lien"
  • la vue "details" de type "view" pour définir les métadonnées à afficher dans l'outil "Propriétés du contenu"
  • la vue "index" pour définir les métadonnées qui seront indexées par le moteur de recherche

Pour être rendu, une vue est liée à un fichier Les données XML en entrée de cette XSL correspondent aux métadonnées déclarées dans cette vue.

 

Déclaration d'un nouveau type de contenu

Un type de contenu peut-être défini à 2 endroits :

  • dans le répertoire WEB-INF/param/content-types
  • dans un nouveau plugin pour éventuellement mettre en place des traitements plus avancés, comme personnaliser la pipeline de rendu par exemple

Définition dans le répertoire WEB-INF/param/content-types

Dans WEB-INF/param/content-types/[nom_du_plugin] le nouveau type de contenu se définit de la manière suivante :

  • un fichier <id_du_content_type>.xml contient la déclaration du nouveau type de contenu (métadonnées + vues) comme décrit ci-dessus.

    Exemple de fichier <id_du_contenu>.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <cms:content-type xmlns:cms="http://www.ametys.org/schema/cms">
       	<cms:label i18n="true">application:CONTENT_SEMINAIRE_LABEL</cms:label>
        <cms:description i18n="true">application:CONTENT_SEMINAIRE_DESCRIPTION</cms:description>
        <cms:default-title i18n="true">application:CONTENT_SEMINAIRE_DEFAULT_TITLE</cms:default-title>
        <cms:icons>
        	<cms:small>img/seminaire_16.png</cms:small>
            <cms:medium>img/seminaire_32.png</cms:medium>
        </cms:icons>
    
    	[...]
    </cms:content-type>
    
  • l'identifiant réel interne du type de contenu est "content-type.<id_du_content_type>"
  • le répertoire resources/img contient les ressources (notamment les icônes 16x16 et 32x32 pixels du type de contenu)
  • le catalogue i18n par défaut est celui de l'application (dans WEB-INF/i18n)
  • le répertoire stylesheets/content-type.<id_du_content_type> contient l'ensemble des fichiers content-type.<id_du_content_type>.xsl et content-type.<id_du_content_type>-<nom_de_la_vue>.xsl pour le rendu graphique des différentes vues

Le répertoire [nom_du_plugin] peut correspondre à n'importe quel nom de plugins existant. Il est conseillé d'utiliser "web".

Exemple d'organisation de fichiers pour la déclaration d'un nouveau type de contenu "séminaire"

Exemple complet de déclaration d'un contenu simple

Voici ci-dessus l'exemple complet de déclaration d'un nouveau de type de contenu

<?xml version="1.0" encoding="UTF-8" ?>
 
<cms:content-type
    xmlns:cms="http://www.ametys.org/schema/cms">
 
    <cms:label i18n="true">CONTENT_SIMPLE_LABEL</cms:label>
    <cms:description i18n="true">CONTENT_SIMPLE_DESCRIPTION</cms:description>
 	<!-- Les icônes -->
    <cms:icons>
        <cms:small>img/content/simple_16.png</cms:small>
        <cms:medium>img/content/simple_32.png</cms:medium>
        <cms:large>img/content/simple_50.png</cms:large>
    </cms:icons>
 
    <!-- Liste des métadonnées -->
    <cms:metadata name="title" type="string">
        <label i18n="true">CONTENT_SIMPLE_TITLE</label>
        <description i18n="true">CONTENT_SIMPLE_TITLE_DESC</description>
        <validation>
            <mandatory />
        </validation>
    </cms:metadata>
 
    <cms:metadata name="content" type="rich-text">
        <label i18n="true">CONTENT_SIMPLE_CONTENT</label>
        <description i18n="true">CONTENT_SIMPLE_CONTENT_DESC</description>
        <validation>
            <mandatory />
        </validation>
    </cms:metadata>
 
    <cms:metadata name="seo" type="composite">
        <label i18n="true">CONTENT_SIMPLE_SEO</label>
        <description i18n="true">CONTENT_SIMPLE_SEO_DESC</description>
        <cms:metadata name="keywords" type="string" multiple="true">
            <label i18n="true">CONTENT_SIMPLE_SEO_KEYWORDS</label>
            <description i18n="true">CONTENT_SIMPLE_SEO_KEYWORDS_DESC</description>
        </cms:metadata>
        <cms:metadata name="subject" type="string">
            <label i18n="true">CONTENT_SIMPLE_SEO_SUBJECT</label>
            <description i18n="true">CONTENT_SIMPLE_SEO_SUBJECT_DESC</description>
        </cms:metadata>
        <cms:metadata name="description" type="string">
            <label i18n="true">CONTENT_SIMPLE_SEO_DESCRIPTION</label>
            <description i18n="true">CONTENT_SIMPLE_SEO_DESCRIPTION_DESC</description>
        </cms:metadata>
    </cms:metadata>
    <!-- Fin de la liste des métadonnées -->
 
    <!-- Vue d'édition -->
    <cms:metadata-set name="main" type="edition">
        <cms:metadata-ref name="title" />
        <cms:metadata-ref name="content" />
        <cms:metadata-ref name="seo">
            <cms:metadata-ref name="keywords" />
            <cms:metadata-ref name="subject" />
            <cms:metadata-ref name="description" />
        </cms:metadata-ref>
    </cms:metadata-set>
    
    <!-- Autres vues -->
    <cms:metadata-set name="main" type="view">
		<cms:metadata-ref name="title" />
        <cms:metadata-ref name="content" />
        <cms:metadata-ref name="seo">
            <cms:metadata-ref name="keywords" />
            <cms:metadata-ref name="subject" />
            <cms:metadata-ref name="description" />
        </cms:metadata-ref>
    </cms:metadata-set>
 
    <cms:metadata-set name="abstract" type="view">
        <cms:metadata-ref name="title" />
    </cms:metadata-set>
 
    <cms:metadata-set name="link" type="view">
        <cms:metadata-ref name="title" />
    </cms:metadata-set>

	<cms:metadata-set name="index" type="view" internal="true">
		<cms:metadata-ref name="title" />
		<cms:metadata-ref name="content" />
	</cms:metadata-set>
 
	<cms:metadata-set name="details" type="view" internal="true">
		<cms:metadata-ref name="title" />
	</cms:metadata-set>
</cms:content-type>

 

Définition dans un plugin

Dans un plugin, un nouveau type de contenu est défini dans une extension dans le fichier plugin.xml :

<extension point="org.ametys.cms.contenttype.ContentTypeExtensionPoint"
	id="org.ametys.web.default.Content.article"
    class="org.ametys.web.contenttype.WebContentType">

 	<cms:content-type>
		[...]
	</cms:content-type>
 </extension>

Le rendu graphique

Le rendu graphique d'un type de contenu est traité dans la partie Intégration graphique.

Modification d'un type de contenu existant

Il est possible de surcharger un type de contenu existant. Par exemple, pour lui ajouter des métadonnées et/ou des vues.

Pour surcharger un type de contenu, vous devez créer un fichier <id du content type>.xml dans le répertoire WEB-INF/param/content-types/_override de votre application

Exemple de surcharge des contenus "Actualité" et "Galerie multimédia"

Exemple de surcharge: ajout de la métadonnée "subject" et redéfinition de la vue "link"

<?xml version="1.0" encoding="UTF-8" ?>

<cms:content-type xmlns:cms="http://www.ametys.org/schema/cms">
	<cms:metadata name="subject" type="string">
        <label i18n="true">application:CONTENT_NEWS_SUBJECT</label>
        <description i18n="true">application:CONTENT_NEWS_SUBJECT_DESC</description>
    </cms:metadata>

	<cms:metadata-set name="link" type="view">
        <cms:metadata-ref name="title" />
        <cms:metadata-ref name="document-subtitle" />
        <cms:metadata-ref name="start-date" />
        <cms:metadata-ref name="end-date" />  
		<cms:metadata-ref name="subject" />                       
        <cms:label i18n="true">plugin.web:PLUGINS_WEB_VIEW_ABSTRACT</cms:label>
    </cms:metadata-set>

	<cms:metadata-set name="main" type="edition">
    	<cms:metadata-ref name="title" />
        <cms:metadata-ref name="document-subtitle" />
        <cms:metadata-ref name="start-date" />
        <cms:metadata-ref name="end-date" />
        <cms:metadata-ref name="illustration">
        	<cms:metadata-ref name="image" />
            <cms:metadata-ref name="alt-text" />
        </cms:metadata-ref>
		<cms:metadata-ref name="subject" />
        <cms:metadata-ref name="abstract" />
        <cms:metadata-ref name="content" />
        <cms:metadata-ref name="comment" />
        <cms:metadata-ref name="contact">
        	<cms:metadata-ref name="name" />
        	<cms:metadata-ref name="mail" />
     	</cms:metadata-ref>
     	<cms:dublin-core/>
    </cms:metadata-set>
</cms:content-type>

 

 

 


Restriction en lecture ou lecture/écriture

 

<cms:metadata name="typology" type="string">    <label i18n="false">Typologie</label>    <description i18n="false">Typologie de projet</description>    <cms:restrict-to>        <cms:cannot read-write-direction="write"/>    </cms:restrict-to></cms:metadata>

 

Dans cette configuration, si l'attribut read-write-direction vaut:

  • write : le contributeur peut voir la métadonnée, sans pouvoir la modifier (accès en lecture seule)
  • read : le contributeur ne peut ni voir, ni modifier la métadonnée
Restriction en lecture ou lecture/écriture en fonction d'un droit

 

<cms:metadata name="typology" type="string">    <label i18n="false">Typologie</label>    <description i18n="false">Typologie de projet</description>    <cms:restrict-to>        <cms:right id="Web_Right_SuperEdit" read-write-direction="write"/>    </cms:restrict-to></cms:metadata>

 

Dans cette configuration,

  • la balise <right> détermine le droit que doit posséder le contributeur
  • si l'attribut read-write-direction vaut :
    • write : le contributeur ne peut modifier la métadonnée que si il possède le droit "Web_Right_SuperEdit", sinon, il aura accès à la métadonnée uniquement en lecture
    • read : le contributeur aura accès en lecture/écriture la métadonnée que si il possède le droit "Web_Right_SuperEdit"

 

Restriction en lecture ou lecture/écriture en fonction d'un état du workflow

 

<cms:metadata name="typology" type="string">    <label i18n="false">Typologie</label>    <description i18n="false">Typologie de projet</description>    <cms:restrict-to>        <cms:workflow step="2" read-write-direction="write"/>        <cms:workflow step="3" read-write-direction="read"/>    </cms:restrict-to></cms:metadata>

 

Dans cette configuration,

  • la balise <workflow> détermine l'état de workflow concerné par la restriction
  • si l'attribut read-write-direction vaut :
    • write : le contributeur ne peut modifier la métadonnée que si le contenu est actuellement dans l'état de workflow défini
    • read : le contributeur aura accès à la métadonnée en lecture/écriture que si le contenu est actuellement dans l'état de workflow défini