Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

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ètre isPushContentActive à "oui"

  • la sécurité doit permettre aux utilisateur de créer des objets (domaine objectdata et action insert)

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 :

  1. dans la barre d’outils, cliquez sur le bouton copier dans un autre projet
    topic fr d6bfe

  2. 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)
      topic fr fc098

  3. Sélectionnez les destinations du contenu.

  4. Paramétrage des nouveaux objets (étape optionnelle cf. paramètrage)

  5. Confirmez l’action à éffectuer

  6. 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

topic fr 552c0

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

topic fr 312d7

À 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

CTObjectField correspondant à la propriété courante;

colfield

nom de la propriété courante;

nature

nature de l’objet pointé dans le cadre d’une relation d’attribution;

forcedValues

java.util.HashMap des propriétés à forcer.

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 datatranslate, par défaut nous testons l’action view du domaine objectdata, vérifiez les règles de sécurité ou surchargez ce booléen avec une règle spécifique à vos développements.

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.
Il faut décliner les associations avant de décliner l’objet demandé.+ L’erreur est levée par une obligation structurelle. Si cette obligation n’est que fonctionnelle, vous pouvez créer une facette pour la rendre obligatoire uniquement en contribution back-office.
Personnalisez le champs pour gérer une valeur par défaut.

  • No labels