Manuel d'intégration

Installation

  • Arrêter le serveur
  • Télécharger les jars du plugin et ajouter-les (ametys-plugin-translationflagging-1.3.0.jar et ametys-plugin-translationflagging-resources-1.3.0.jar) dans le répertoire WEB-INF/lib de votre application Ametys

  • Ajouter le bouton permettant d'ouvrir l'outil dans le fichier WEB-INF/params/cms-ribbon-default.xml. L'identifiant du bouton est org.ametys.translationflagging.SetTranslation.
    Ajoutez-le dans l'onglet Page
<tab label="plugin.web:RIBBON_TABS_TAB_PAGE_LABEL" id="org.ametys.cms.page.Tab">
	<groups>
		[...]
		<group label="plugin.web:RIBBON_TABS_TAB_PAGE_GROUPS_GROUP_PAGE_LABEL" icon="">
			<large>...</large>
			<medium>
				<layout align="top" size="small" cols="2">
					[...]
					<control id="org.ametys.translationflagging.SetTranslation"/>
				</layout>
			</medium>
			<small>...</small>
		</group>
	</groups>
</tab>

 

  • Redémarrer le serveur

Notifications par mail

Quand un contenu est modifié et validé dans une page liée à d'autres pages traduites, un e-mail peut être envoyé aux contributeurs ayant le droit de modifier la version traduite (droit d'édition en ligne sur le contenu) et ayant le droit de recevoir des alertes par courrier électronique sur la traduction pour les informer qu'une nouvelle version est disponible.


Pour activer cette fonction, modifiez le fichier de workflow de vos contenus WEB-INF/param/workflow.xml ajouter la post-fonction org.ametys.plugins.translationflagging.TranslationAlertFunction pour l'action de validation comme suit:

 

<post-functions>        
	<function type="avalon">
    	<arg name="role">org.ametys.plugins.translationflagging.TranslationAlertFunction</arg>
	</function>
</post-functions>

Insérer cette post-function après la balise <results>

<action id="4" name="plugin.web:WORKFLOW_ACTION_VALIDATE">
    <restrict-to>
        <conditions type="AND">
            <condition type="avalon">
                <arg name="role">org.ametys.cms.workflow.ContentCheckRightsCondition</arg>
                <arg name="right">Workflow_Rights_Validate</arg>
            </condition>
            <condition type="avalon">
                <arg name="role">org.ametys.cms.workflow.LockCondition</arg>
            </condition>
        </conditions>
    </restrict-to>
    <pre-functions>
        <function type="avalon">
            <arg name="role">org.ametys.web.workflow.ValidateContentFunction</arg>
        </function>
    </pre-functions>
    <results>
        <unconditional-result old-status=" " status=" " step="3" />
    </results>
    <post-functions>
        <function type="avalon">
            <arg name="role">org.ametys.plugins.translationflagging.TranslationAlertFunction</arg>
        </function>
    </post-functions>
</action>

 

Intégration graphique

Voici un exemple de code pour afficher des drapeaux sur votre charte graphique selon ce qui a été saisi par le contributeur, pour mener à la page cible dans l'autre langue.

<xsl:variable name="raw-translations">
        <xsl:for-each select="/cms/page/metadata/translations/*">
            <xsl:variable name="hrefResolved" select="resolver:resolve('page', .)"/>
            <xsl:if test="$hrefResolved != ''">
                <xsl:element name="{local-name()}">
                    <xsl:value-of select="$hrefResolved"/>
                </xsl:element>
            </xsl:if>
        </xsl:for-each>
</xsl:variable>
<xsl:variable name="translations" select="exsl:node-set($raw-translations)"/>
 
 
<xsl:if test="$translations/*">
			<div class="translation">
				<a name="translation"></a>
			   	<span class="hidden-L"><i18n:text i18n:key="SKIN_TRANSLATION" i18n:catalogue="skin.{$skin}"/></span>
				<ul>
					<xsl:for-each select="$translations/*">
						<li>
							<xsl:attribute name="class">
								<xsl:if test="position() = 1"><xsl:text>first </xsl:text></xsl:if>
								<xsl:if test="position() = last()"><xsl:text>last </xsl:text></xsl:if>
								<xsl:text>translation-</xsl:text><xsl:value-of select="local-name()"/>
							</xsl:attribute>
							
	                        <a href="{.}" title="skin.{$skin}:SKIN_TRANSLATION_{local-name()}" i18n:attr="title">
	                        	<img width="14" height="11" src="{ametys:skinURL(concat('img/translation/', local-name(), '.png'))}" alt="skin.{$skin}:SKIN_TRANSLATION_{local-name()}" i18n:attr="alt"/>
	                        </a>
						</li>
					</xsl:for-each>
				</ul>
			</div>
</xsl:if>

Peut nécessiter ceci dans l'en-tête XSL de votre fichier :

xmlns:resolver="org.ametys.cms.transformation.xslt.ResolveURIComponent"
xmlns:ametys="org.ametys.web.transformation.xslt.AmetysXSLTHelper"

Il vous faut ensuite bien sur les clefs i18n utilisées dans votre charte. Par exemple :

	<message key="SKIN_TRANSLATION">Traductions :</message>
	<message key="SKIN_TRANSLATION_fr">Voir la page en français</message>
	<message key="SKIN_TRANSLATION_en">See this page in english</message>
	<message key="SKIN_TRANSLATION_es">Ver esta página en español</message>
	<message key="SKIN_TRANSLATION_de">Diese Seite in deutsch</message>
	<message key="SKIN_TRANSLATION_it">Visualizza questa pagina in italiano</message>
	<message key="SKIN_TRANSLATION_zh">?????????</message>

Et il faut aussi les images dans "resources/img/translation" : fr.png, en.png, es.png, de.png, it.png, zh.png.