Principes
L’imposition de contenu est une extension de la déclinaison de contenu dans des projets. La spécificité est de créer un lien fort entre source et déclinaisons donnant lieu à des synchronisations automatique à chaque modification de la source.
Note
|
Cette fonctionnalité est destinée à certains cas très spécifiques de déclinaison de contenus. Cette section va décrire un ensemble de concepts fonctionnels donnant lieu à des conditions d’utilisation très particulières. Il est donc conseillé de bien les maîtriser et de faire très attention lors de son utilisation. |
Pré-requis techniques à l’imposition
L’imposition de contenu nécessite les mêmes pré-requis que la déclinaison de contenu plus :
-
l’objet à décliner doit comporter le champs
virtualobject
(child vers la même nature)
Note
|
Tout objet disposant du champs virtualobject est éligible à la
fonctionnalité d’imposition. Si la valeur du champs est spécifiée,
cela indique que l’objet est imposé et que sa source est l’objet pointé.
|
Fonctionnement
La création du lien fort entre les déclinaison se schématise de cette façon :
Entre même langues, chaque version de l’entité est considérée comme une déclinaison.
Les versions anglaises des projets 1 et 2 dépendent de la version hors projet. Leur cycle de vie dépend de celle-ci. Dans les faits, à chaque modification de la version "hors projet", les versions des projets 1 et 2 sont modifiées.
On peut remarquer que la version anglaise du projet 3 n’est pas dépendante, il est tout à fait possible d’imposer une déclinaison à certains projets mais de laisser libre les déclinaisons dans d’autres.
Configuration
Champs personnalisables
La mise à jour des contenus projets se fait après modification du contenu
source via le déclencheur produit com.wedia.wxm.database.trigger.SlaveManager
.
Bien que l’ensemble des informations soient reportées aux instances imposées, certains champs restent inchangés comme la langue, le groupe ou l’identifiant projet (media).
Ainsi, en plus des champs produit, nous vous permettons de déclarer vous même des champs "contextuels" à votre projet qui ne doivent pas être impactés lors des mises à jour. Pour rendre ces champs "non imposé", vous devez leur appliquer l’étiquette wxm_not_imposed_property
.
Par exemple, vous imposez un article sur plusieurs arborescences de projets. L’information de lien sur l’arborescence est spécifique à chaque projet. Vous devrez donc appliquer l’étiquette à cette information.
Le report des propriétés se fait champ par champ, vous pouvez donc appliquer l’étiquette à un champ de collection par exemple. Dans ce cas, les éléments de collections ne seront pas reportés dans les déclinaisons imposées.
Caution
|
Dans le cas des collections, l’application de l’étiquette sur un champ de la structure en collection n’est pas prise en compte : la mise à jour des déclinaisons imposées nécessite la suppression et la re-création de l’ensemble des objets la collection. |
Important
|
L’application de l’étiquette wxm_not_imposed_property n’a pas
d’impact sur l’étape de configuration du wizard de déclinaison.
Tout champ disposant de l’étiquette wxm_manual_forced_value devra disposer
aussi de wxm_not_imposed_property sans quoi les modifications seraient
supprimées lors de la prochaine mise à jour.
|
Sécurité et modification des objets
L’application de l’étiquette wxm_not_imposed_property
n’a pas d’impact sur
les formulaires de contributions ou la sécurité.
Vous devez donc prévoir et développer des facettes spécifiques à appliquer à un objet imposé.
Vous devez aussi revoir vos règles de sécurité en conséquence.
Sécuriser la possibilité d’imposer
Nous n’avons pas de domaine de sécurité spécifique à tester pour savoir si un utilisateur a le droit d’imposer ou non un contenu à un projet.
Par contre, l’affichage du choix imposer un contenu
dépend, en plus de la présence du champ virtualobject
, d’une variable de type booléen en request : canImposeContent
.
Initialisée par défaut à true
dans l’action wizardpushcontent
, vous êtes libre de la modifier dans une perso rôle/objet et de conditionner sa valeur suivant vos critères personnels.
FAQ
- Puis-je imposer un élément de collection ?
-
Non, un élément de collection répond à des spécificités techniques incompatibles avec l’imposition, il ne vous sera pas permis de l’imposer à un autre objet.
- Un projet possède une déclinaison de mon objet, comment le rendre "imposé" de ma version ?
-
Vous ne pouvez pas transformer une déclinaison standard en déclinaison "imposée", vous devez d’abord la supprimer et ensuite imposer votre version.
Le wizard ne permet d’ailleurs pas de sélectionner un projet où une déclinaison existe déjà.