Est appelé une déclinaison d’entité
le principe général de dupliquer
une entité de contenu dans un contexte différent à celui d’origine.
Principes
Cette section décrit les différents principes de déclinaison où le projet est la seule variable.
Pour toutes déclinaisons par rapport à la notion de langue, merci de vous référer à la section traduction.
Un objet peut être décliné dans des projets et groupes si celui-ci possède
les champs master
, group
et media
:
-
la propriété
group
est obligatoirement déterminée, un objet comportant celle-ci sera toujours lié à un groupe; -
le propriété
media
n’est pas obligatoirement déterminée :-
si elle est remplie, l’objet appartient au projet et ne sera accessible et exploitable que depuis celui-ci.
-
si elle est vide, on dira que l’objet appartient au groupe uniquement.
De manière générale, les objets de cette catégorie sont des objets que l’ont veut distribuer au sein du groupe où il seront déclinés. Les projets du groupe, suivant la configuration de l’application seront libres de les exploiter ou non.
-
Il existe plusieurs méthodes fonctionnelles pour décliner un objet dans un groupe suivant les variable de projet mais, techniquement, elles utilisent toutes ces champs pour fonctionner.
Elles peuvent par contre faire appel à d’autres propriété pour apporter d’autres fonctions.
L’ensemble des déclinaisons projet d’une même instance est présentée dans un
onglet autres projets
accessible depuis l’action de visualisation.
Pré-requis techniques à la déclinaison entre projets
Pour pouvoir copier un contenu dans un autre projet, il vous faut avoir installé les composants suivants :
-
un objet à copier doit hériter de l’objet
contentobjet
au moins les informations suivantes :-
propriété
master
-
propriété
lang
(non obligatoire) -
propriété
media
-
propriété
mediagroup
-
-
le plugin produit
WXM_Mediacore
doit être activé et le paramètreisPushContentActive
à "oui" -
la sécurité doit permettre aux utilisateur de créer des objets (domaine
objectdata
et actioninsert
)
Effectuer une déclinaison dans un projet
Dans le back-office, la fonctionnalité copier dans un autre projet
permet
d’effectuer aisément une déclinaison depuis la visualisation d’un objet :
-
dans la barre d’outils, cliquez sur le bouton
copier dans un autre projet
-
une fenêtre va s’ouvrir où vous pouvez sélectionner jusqu’à trois actions :
-
effectuer une copie simple
-
proposer le contenu (cf. proposition de contenu)
-
imposer le contenu (cf. imposition de contenu)
-
-
Sélectionnez les destinations du contenu.
-
Paramétrage des nouveaux objets (étape optionnelle cf. paramètrage)
-
Confirmez l’action à éffectuer
-
Une page résultat présente les objets créés
Tip
|
La liste de sélection de projet ne présente que les projets où l’utilisateur peut créer des contenus et où il n’existe pas encore de déclinaison de ce contenu. Il est donc possible que la liste présentée soit vide dans certains cas. |
Paramétrer facilement les étapes
Vous pouvez intervenir simplement sur l’étapier de déclinaison simplement via des étiquettes :
Sélection de l’action
La sélection de l’action dépend de plusieurs critères spécifiques à chacune de ces actions. La déclinaison d’un objet vers un autre projet sera toujours disponible, rendez vous dans les sections "imposition" et "proposition" pour obtenir plus d’informations sur leur activation.
Sélection des projets
La smalllist
présentant les projets de destination utilise par défaut les champs ayant l’étiquette wxm_datapushcontent_field. Si aucun champs ne la possède, le fonctionnement standard s’applique.
La liste des projets affichés est celle où l’objet courant n’est pas décliné. Pour les objet configuré comme "objet de contenu" (cf paramètres et configuration d’objet), vous avez la possibilité d’appliquer un filtre automatique pour masquer les projets layout-driven et ainsi empécher, par exemple, les utilisateurs de pousser manuellement un objet dans un projet PAO. Ce filtre n’est pas actif par défaut. Pour l’activer vous devez changer la valeur du paramètre pushContentShowLayoutDrivenProjects du plugin WXM_MediaCore.
Liste de résultats
La smalllist
présentant les objets nouvellement créés utilise par
défaut les champs portant l’étiquette wxm_datapushcontent_field
.
Si aucun champs ne cette étiquette alors le fonctionnement standard s’appliquera.
Mise à jour des attributions
Lors de l’action de déclinaison, le système crée un nouvel objet pour le contexte de projet sélectionné en dupliquant la source et en changeant certaines propriétés automatiquement :
-
le media sera celui de destination
-
si l’objet est lié à d’autres instances d’objet via la notion d’attribution (child, childmulti) et que ces objets sont aussi déclinables, le système va récupérer automatiquement les version équivalentes pour mettre à jour la propriété
Caution
|
Si aucun objet correspondant n’est découvert dans le contexte désiré, la propriété sera vide. Cela implique que si la propriété est obligatoire par sa configuration de structure, une erreur sera levée et l’action de déclinaison annulée pour ce projet. (cf. article sur les erreurs standards). |
Caution
|
Nous n’effectuons pas de déclinaison en cascade : si vous désirez ce type de comportement vous devez faire des personnalisations. |
Configurer manuellement une propriété lors de la déclinaison
Vous pouvez surcharger manuellement une propriété lors de la déclinaison. En effet, la création d’une déclinaison utilisant le module WmsUtils
, forcées dans le nouvel objet ainsi qu’une java.util.HashSet des nous passons en paramètre une java.util.HashMap avec les valeurs qui seront objets de collection à ne pas dupliquer (par exemple des paragraphes).
L’action de déclinaison projet est datapushcontent
.
Lors de la création, nous appelons les jsp suivantes :
- /bov3/datapushcontent/initNotCopiedObjects.jsp
-
initialise la java.util.HashSet des objets à ne pas copier en cascade Vous pouvez personnaliser cette JSP dans votre san de cette façon :
<%@page pageEncoding="ISO-8859-15"%>
<%@taglib prefix="noheto" uri="/WEB-INF/noheto.tld" %>
<%@taglib prefix="c" uri="/WEB-INF/c.tld" %>
<%--
/san/bov3/datapushcontent/initNotCopiedObjects.jsp
--%>
<%
java.util.Set notCopiedObjects = (java.util.HashSet) request.getAttribute("notCopiedObjects");
if (notCopiedObjects == null) {
notCopiedObjects = new java.util.HashSet();
}
// on ne duplique pas les collections d'objets de type 'frontlink';
notCopiedObjects.add("frontlink");
request.setAttribute("notCopiedObjects", notCopiedObjects);
%>
- /bov3/datapushcontent/initForcedValues.jsp
-
initialise la java.util.HashMap et itère sur chaque propriétés de l’objet afin de les surcharger lors de la copie
Vous pouvez personnaliser un champs de deux manières :
-
si vous indiquez en tant que clé le nom ou la position de la propriété: vous surchargerez la propriété de manière globale, c’est-à-dire qu’elle sera appliquée quelle que soit la nature de l’objet.
-
si vous indiquez en tant que clé [nom d’objet].[nom de propriété ou indice] : vous surchargerez la propriété de manière fine, c’est-à-dire qu’elle ne sera appliquée que pour la nature de l’objet précisé.
<%@page pageEncoding="ISO-8859-15"%>
<%@taglib prefix="noheto" uri="/WEB-INF/noheto.tld" %>
<%@taglib prefix="c" uri="/WEB-INF/c.tld" %>
<%--
/san/bov3/datapushcontent/initForcedValues.jsp
--%>
<%
java.util.Map forcedValues = (java.util.Map) request.getAttribute("forcedValues");
if (forcedValues == null) {
forcedValues = new java.util.HashMap();
}
/*
Lors d'une déclinaison, on veut systématiquement vider le champs 'tag' du
produit pour que l'utilisateur ressaisisse les associations de tag avec
des informations spécifiques au projet de destination
*/
if (!forcedValues.containsKey("tag")) {
forcedValues.put("tag", "");
}
request.setAttribute("forcedValues", forcedValues);
Vous pouvez aussi personnaliser les propriétés par champs en surchargeant les propriétés de cette façon :
-
[objects/[nom d’objet]]/bov3/datapushcontent/forcedvalues/properties/[type natif de la propriété]/[nature]/[nom de la propriété].jsp
-
[objects/[nom d’objet]]/bov3/datapushcontent/forcedvalues/properties/[nom de la propriété].jsp
-
[objects/[nom d’objet]]/bov3/datapushcontent/forcedvalues/properties/[type natif de la propriété]/[type de la propriété].jsp
À l’intérieur de ces JSPs, vous disposez pour travailler des variables suivantes :
form_object |
nature de l’objet courant en court de déclinaison; |
activeRefererObject |
objet de référence en court de déclinaison; |
itemValue |
|
colfield |
nom de la propriété courante; |
nature |
nature de l’objet pointé dans le cadre d’une relation d’attribution; |
forcedValues |
|
Erreurs standards
Lors d’une déclinaison projet, les erreurs sont affichées dans la liste des résultats.
Voici les codes d’erreur que vous pouvez rencontrez :
not_connected |
votre session a expirée, il faut vous reconnecter |
function_not_active |
la fonction de déclinaison projet est désactivée. Vous devez en référer à votre administrateur |
object_not_found |
l’objet à traduire n’existe pas. |
not_authorized |
vous n’avez pas les droits nécessaires pour voir l’instance le projet de destination doit être accessible à l’utilisateur.
Vérifiez qu’il a bien accès à celui-ci; la sécurité est testée dans les initialisations de l’action |
not_compliant |
l’objet demandé n’a pas les propriétés nécessaires pour la fonction de déclinaison (cf. pré-requis techniques) |
mandatoryFields |
l’objet n’a pu être créé car certains champs obligatoires
sont vides. Cette erreur est souvent levée car une correspondance n’a pu être
découverte sur une association. La valeur associée à cette erreur est la liste
des champs qui sont vides. |