The general principle of duplicate is called an entity declination
, a content entity in a different context than the original one.
Principles
This section describes the different principles of declination where the project is the only variable.
For all variations in relation to the notion of language, please refer to section translation.
An object can be declined in projects and groups if it has the master
, group
and media
fields:
The
group
property must be determined, an object containing this one will always be linked to a groupThe
media
property is not necessarily determined:If it is completed, the object belongs to the project and will be accessible and usable only from the project.
If it is empty, the object belongs to the group only.
Generally speaking, objects in this category are objects that we want to distribute within the group where they will be declined. The projects of the group, according to the configuration of the application will be free to exploit them or not.
There are several functional methods for decaying an object in a group according to the project variables but, technically, they use all these fields to work.
However, they may use other properties to provide other functions.
All the project variations of the same instance are presented in an tab other projects
accessible from the visualization action.
Technical prerequisites
To be able to copy content to another project, you must have installed the following components:
an object to be copied must inherit from the object
contentobject
at least the following information:property
master
property
lang
(not required)property
media
property
mediagroup
The product plugin
WXM_Mediacore
must be enabled and theisPushContentActive
parameter must be set toyes
Security must allow users to create objects (domain
objectdata
andinsert
action)
Execute a declination in a project
In the back-office, the copying to another project
functionality allows you to easily perform a declination from the visualization of an object:
in the toolbar, click the' copy to another project' button.
a window will open where you can select up to three actions:
make a single copy
propose the content (see content proposal)
impose content (see content imposition)
Select the content destinations
Setting up the new objects (optional step see setting up the new objects)
Confirm the action to be performed
A result page shows the objects created
Tip | The project selection list only shows projects where the user can create content and where there is not yet a declination of that content. It is therefore possible that the list presented may be empty in some cases. |
Easily set up the steps
You can simply intervene on the declination stepboard simply via labels:
Action selection
The selection of the action depends on several criteria specific to each of these actions. The declination of an object to another project will always be available, go to the "imposition" and "proposal" sections for more information on their activation.
Project selection
The smalllist
showing destination projects uses fields with the label wxm_datapushcontent_field
by default. If no field has it, the standard operation applies.
The list of displayed projects is the one where the current object is not declined. For objects configured as "content objects" (see settings and object configuration), you can apply an automatic filter to hide layout-driven projects and prevent, for example, users from manually pushing an object into a DTP project. This filter is not active by default. To enable it, you must change the value of the pushContentShowLayoutDrivenProjects
parameter of the WXM_MediaCore
plugin.
List of results
The smalllist
presenting newly created objects uses by default fields labeled wxm_datapushcontent_field
.
If no fields are shown on this label then the standard operation will apply.
Updating of allocations
During the declination action, the system creates a new object for the selected project context by duplicating the source and changing some properties automatically:
the media will be the one of destination
If the object is linked to other object instances via the attribution notion (child, childmulti) and these objects are also declineable, the system will automatically retrieve equivalent versions to update the property.
Caution | If no matching object is found in the desired context, the property will be empty. This implies that if the property is required by its structure configuration, an error will be removed and the declination action cancelled for this project. (see article on standard errors). |
Caution | We do not make a cascade declination: if you want this type of behavior you must customize it. |
Manually configure a property during declination
You can manually override a property when declining. Indeed, the creation of a declination using the module WmsUtils
, forced in the new object as well as a java.util.HashSet
we pass in parameter a java.util.HashMap
with the values which will be objects of collection not to duplicate (for example paragraphs).
...
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
initializes initialise la java.util.hashSet objects not to be copied cascade. You can customize this JSP in your SAN this wayHashSet 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 ofd'objets frontlink'de type objects are not duplicated
'frontlink';
notCopiedObjects.add("frontlink");
request.setAttribute("notCopiedObjects", notCopiedObjects);
%>
- /bov3/datapushcontent/initForcedValues.jsp
initializes the initialise la java. HashMap utility and iter on each object’s properties to overload them when copying.
You can customize a field in two ways:
if you specify the name or position of the property as a key:
you will overload the property globally, i. e. it will be applied regardless of the nature of the object.
you will overload the property in a fine way, i.e. it will be applied only for the nature of the specified object
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);
You can also customize properties by fields by overloading the properties in this wayVous pouvez aussi personnaliser les propriétés par champs en surchargeant les propriétés de cette façon :
[objects/[object namenom d’objet]]/bov3/datapushcontent/forcedvalues/properties/[property native type natif de la propriété]/[property nature]/[property namenom de la propriété].jsp
[objects/[object namenom d’objet]]/bov3/datapushcontent/forcedvalues/properties/[property namenom de la propriété].jsp
[objects/[object namenom d’objet]]/bov3/datapushcontent/forcedvalues/properties/[property native type natif de la propriété]/[property type de la propriété].jsp
À l’intérieur de ces JSPs, vous disposez pour travailler des variables suivantes :
form_object | nature of the current object in short declination |
activeRefererObject | reference object in declination |
itemValue |
|
colfield | name of the current property |
nature | nature of the object pointed out in the context of an attribution relationshipde 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 |
|
Standard errors
During a project declination, errors are displayed in the results list.
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 | Your votre session has expired, you need to log in again.a expirée, il faut vous reconnecter | |
function_not_activates | The project declination function is disabled. You must refer to your administrator.active | la fonction de déclinaison projet est désactivée. Vous devez en référer à votre administrateur |
object_not_found | The object to translate does not existl’objet à traduire n’existe pas. | |
not_authorized | You don’t have the necessary rights to see the instance. The destination project must be accessible to the user, make sure that he has access to it. | |
not_compliant | The requested object does not have the necessary properties for the declination function (see technical prerequisites). | |
mandatoryFields | The object could not be created because some mandatory fields are empty. This error is often solved because a match could not be found on an association. The value associated with this error is the list of fields that are empty. | |
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. |