Vous devez définir un ou plusieurs cycle de vie (workflow) pour vos contenus pouvant être proposés depuis le site.

Pour cela vous devez définir un fichier de workflow XML.

Référez-vous au manuel de paramétrage pour en savoir plus sur la création de fichier de workflow.

Le nom du fichier de workflow doit nécessairement commencé par "ugc-". En effet, dans les paramètres du service "Proposition de contenus" seuls les workflow commençant par "ugc-" sont disponibles.

Par ailleurs, le workflow qui sera associé aux contenus proposés doit nécessairement contenir l'action 1111 sur le modèle ci-dessous:

<!-- Création -->      
<action id="1111" name="plugin.classified-ads:PLUGINS_CLASSIFIED_ADS_WORKFLOW_ACTION_CREATE">      
    <pre-functions>      
        <function type="avalon">      
            <arg name="role">org.ametys.web.workflow.CreateContentFunction</arg>      
        </function>      
        <function type="avalon">      
            <arg name="role">org.ametys.cms.workflow.EditContentFunction</arg>      
        </function>      
    </pre-functions>      
    <results>      
        <unconditional-result old-status=" " status=" " step="1" />      
    </results>      
    <post-functions>      
        <function type="avalon">      
            <arg name="role">org.ametys.plugins.forms.workflow.FormEditionFunction</arg>      
        </function>      
        <function type="avalon">      
            <arg name="role">org.ametys.cms.workflow.SetCurrentStepIdAndNotifyFunction</arg>      
        </function>      
        <function type="avalon">      
            <arg name="role">org.ametys.cms.workflow.CreateVersionFunction</arg>      
        </function>      
    </post-functions>      
</action>      

C'est cette action 1111 qui est utilisée lors de la soumission d'un contenus depuis le service Proposition de contenus.

Le cycle de vie dépend de votre utilisation, il peut être très proche du cycle de vie standard.

Si vous souhaitez modéré les contenus à postériori par exemple, ajoutez la fonction de validation à l'action 1111.

Si vous utilisez le plugin UGC avec un mode d'intégration par transformation des contenus proposés vers un autre type de contenu, le cycle de vie peut être minimaliste et ne contenir que l'action 1111 et un seul état.

Le plugin Classified Ads apporte 2 cycles de vie pour les petites annonces : un cycle de vie avec validation à priori et un cycle de vie avec validation à posteriori. Vous pouvez vous référez à ces exemples pour créer votre propre workflow.

Envoi de mail de notifications aux auteurs

Le plugin UGC fournit aussi une fonction de workflow (org.ametys.plugins.ugc.workflow.SendMailToCreatorFunction) qui permet par simple configuration d'envoyer un mail au créateur du contenu proposé.

L'objet et le message du mail est configurable.

Elle peut par exemple d'être utilisé en post-function lors de la validation et/ou le refus du contenu.

<function type="avalon">     
   <arg name="role">org.ametys.plugins.ugc.workflow.SendMailToCreatorFunction</arg>     
   <arg name="subjectKey">plugin.classified-ads:PLUGINS_CLASSIFIED_ADS_WORKFLOW_MAIL_SUBJECT_ACTION_VALIDATE</arg>     
   <arg name="bodyKey">plugin.classified-ads:PLUGINS_CLASSIFIED_ADS_WORKFLOW_MAIL_BODY_ACTION_VALIDATE</arg>     
</function>     

L'objet du mail peut être paramétré avec :

  • {0} Le nom du contenu
  • {1} Le nom du site

Le message du mail, peut être paramétré avec :

  • {0} L'utilisateur qui agit sur le contenu (valide, modifie, etc ...)
  • {1} Le nom du contenu
  • {2} Le nom du site
  • {3} Le titre de la page (si elle existe)
  • {4} Le lien vers la page du contenu (si elle existe)

Exemples :

<message key="PLUGINS_CLASSIFIED_ADS_WORKFLOW_MAIL_BODY_ACTION_VALIDATE">L'utilisateur {0} a validé la petite annonce "{1}" du site "{2}". &#13;&#13;Pour vous rendre sur la page cliquez sur le lien ci-après {4}.</message>    
<message key="PLUGINS_CLASSIFIED_ADS_WORKFLOW_MAIL_BODY_ACTION_VALIDATE_ORPHAN">L'utilisateur {0} a validé la petite annonce "{1}" du site "{2}".</message>    

La clé **_ORPHAN est utilisée quand il n'y a pas de page associée au contenu

Accès aux boutons du cycle de vie

Pour accéder aux actions et état du cycle de vie depuis le ribbon, il vous faut définir les boutons/menus lié à ce cycle de vie.

Voici un exemple basé sur le plugin Classified Ads et le workflow de validation à posteriori

<extension id="org.ametys.plugins.classified.ads.postvalidation.WorkflowSteps" 
           point="org.ametys.core.ui.RibbonControlsManager" 
           class="org.ametys.cms.clientsideelement.WorkflowStepsClientSideElement"> 
    <workflow name="ugc-classified-ads-postvalidation"> 
        <workflow-actions mode="exclude"> 
            <action>2</action> 
            <action>220</action> 
            <action>222</action> 
            <action>6</action> 
            <action>8</action> 
            <action>10</action> 
            <action>12</action> 
        </workflow-actions> 
        <steps> 
            <step id="1"> <!-- Draft --> 
                <comments mode="include" /> 
            </step> 

            <step id="4"> <!-- Refused --> 
                <comments mode="include" /> 
            </step> 

            <step id="3"> <!-- Validated --> 
                <comments mode="include"/> 
            </step> 
        </steps> 
    </workflow> 
</extension> 

Il reste à ajouter ces menus/boutons à l'onglet des contenus. Ils seront visibles que les contenus liés à ce workflow (soit les petites annonces ici)

Pour cela le ribbon et l'onglet "Contenu" doit être surchargé comme ceci :

<tab label="plugin.cms:RIBBON_TABS_TAB_CONTENT_LABEL" override="true"> 
    <groups> 
        <group label="plugin.cms:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_WORKFLOW_LABEL" override="true" controlsOrder="1.10"> 
            <control id="org.ametys.plugins.classified.ads.postvalidation.WorkflowSteps"/> 
            <control id="org.ametys.plugins.classified.ads.prevalidation.WorkflowSteps"/> 
        </group> 
    </groups> 
</tab> 
Retour en haut