Bouton de création de pages personnalisés ou Macros
Dernière publication:23/02/2018à 14:52RaphaëlFranchet
Il s'agit de réaliser un bouton de création de pages qui pré-paramètre l'assistant de création de pages, afin qu'en un clic l'utilisateur puisse créer une nouvelle actualité utilisant le gabarit "G" et le type de contenu "News" avec l'étiquette "A la une".
La déclaration d'un bouton s'effectue dans un fichier plugin.xml. Au besoin, vous serez amené à créer un nouveau plugin, suivez alors les instructions de la page Architecture d'un plugin Ametys.
Voici le paramétrage du bouton de création de page par défaut déclaré dans le plugin web.
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Déclarez votre propre bouton (en modifiant l'identifiant, les images, les clefs i18n) et en ajoutant les paramètres suivants :
title : Titre de la boite de dialogue
icon-small : Icone de la boite de dialogue
default-page-title : Titre par défaut pour la nouvelle page
default-pagetype : Type de page par défaut (template, redirection-cms, redirection-http ou blank)
default-template : Template sélectionné par défaut
default-pagecontent-type : Type d'élément par défaut (contenttype ou service)
default-contenttype : Type de contenu par défaut
default-service : Type de service par défaut
default-tags : Etiquettes par défaut au format : 'IDENTIFIANT1':'TYPE1', 'IDENTIFIANT2':'TYPE2'. Où le type est 'CONTENT' ou 'PAGE'. Par exemple 'FOOTER_LINKS': 'PAGE', 'SPECIAL_PAGES': 'PAGE', 'A_LA_UNE': 'CONTENT'.
force : si "true" l'assistant de paramétrage sera automatiquement validé.
Attention Il est de votre responsabilité si vous utilisez le mode macro (force=true) de vérifier que tous les droits sont corrects. Par exemple, si vous forcez la création d'une actualité, il faut ajouter la vérification du droit de création d'actualité sinon, la macro choisira automatiquement un autre type de contenu autorisé.
Enfin, référencez votre bouton dans le fichier de ruban (instructions).
Exemple
Voici un exemple de bouton de création d'actualités étiquettées "Pages spéciales".
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
<feature name="mymacro">
<extensions>
<!-- Ajouter une page -->
<extension id="mymacro.addNews"
point="org.ametys.cms.workspace.ribbon.RibbonControlsManager"
class="org.ametys.runtime.ui.impl.StaticContextualClientSideElement">
<action class="org.ametys.ribbon.control.button.SitemapOrModifiablePageActionButton">
<param name="action">org.ametys.web.tool.page.Add.act</param>
<param name="label" i18n="false">Nouvelle actualité spéciale</param>
<param name="default-description" i18n="false">Ce bouton permet de créer une nouvelle page doté du gabarit 'Page', d'une actualité et étiquetté 'Pages spéciales'</param>
<param name="no-right-description" i18n="false">Vous n'avez pas le droit de créer une actualité ici</param>
<param name="no-selection-description" i18n="false">Sélectionnez une page pour pouvoir créer une actualité</param>
<param name="footer" i18n="false">Consultez l'aide pour plus d'information</param>
<param name="icon-small" file="true" plugin="news">img/news_16.png</param>
<param name="icon-medium" file="true" plugin="news">img/news_32.png</param>
<param name="icon-large" file="true" plugin="news">img/news_48.png</param>
<param name="title">Ajouter une actualité spéciale...</param>
<param name="default-page-title">Nouvelle actualité spéciale</param>
<param name="default-pagetype">template</param>
<param name="default-template">page</param>
<param name="default-pagecontent-type">contenttype</param>
<param name="default-contenttype">org.ametys.web.default.Content.news</param>
<param name="default-tags">'SPECIAL_PAGES': 'PAGE'</param>
<param name="force">true</param>
</action>
<scripts>
<file plugin="web">js/org/ametys/web/tool/page/Actions.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-TagsCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-PageTypeCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-PageContentCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-CreatePageCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-Cards.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard.i18n.js</file>
<file plugin="web">js/org/ametys/ribbon/control/button/SitemapOrModifiablePageActionButton.js</file>
<file plugin="web">js/org/ametys/web/page/TemplatesMenu.i18n.js</file>
<file plugin="web">js/org/ametys/web/page/LinkPage.i18n.js</file>
<file plugin="web">js/org/ametys/web/zone/AddContentAction.i18n.js</file>
<file plugin="web">js/org/ametys/web/zone/AddServiceAction.i18n.js</file>
</scripts>
<css>
<file>css/pages/addpage.css</file>
</css>
<rights mode="AND">
<right>Web_Rights_Page_Create</right>
<right>Web_Rights_Page_Templates</right>
<right>Web_Rights_Page_AddContent</right>
<right>News_Right_News_Create</right>
<right>Web_Rights_Page_Tag</right>
</rights>
</extension>
</extensions>
</feature>
<feature name="mymacro">
<extensions>
<!-- Ajouter une page -->
<extension id="mymacro.addNews"
point="org.ametys.cms.workspace.ribbon.RibbonControlsManager"
class="org.ametys.runtime.ui.impl.StaticContextualClientSideElement">
<action class="org.ametys.ribbon.control.button.SitemapOrModifiablePageActionButton">
<param name="action">org.ametys.web.tool.page.Add.act</param>
<param name="label" i18n="false">Nouvelle actualité spéciale</param>
<param name="default-description" i18n="false">Ce bouton permet de créer une nouvelle page doté du gabarit 'Page', d'une actualité et étiquetté 'Pages spéciales'</param>
<param name="no-right-description" i18n="false">Vous n'avez pas le droit de créer une actualité ici</param>
<param name="no-selection-description" i18n="false">Sélectionnez une page pour pouvoir créer une actualité</param>
<param name="footer" i18n="false">Consultez l'aide pour plus d'information</param>
<param name="icon-small" file="true" plugin="news">img/news_16.png</param>
<param name="icon-medium" file="true" plugin="news">img/news_32.png</param>
<param name="icon-large" file="true" plugin="news">img/news_48.png</param>
<param name="title">Ajouter une actualité spéciale...</param>
<param name="default-page-title">Nouvelle actualité spéciale</param>
<param name="default-pagetype">template</param>
<param name="default-template">page</param>
<param name="default-pagecontent-type">contenttype</param>
<param name="default-contenttype">org.ametys.web.default.Content.news</param>
<param name="default-tags">'SPECIAL_PAGES': 'PAGE'</param>
<param name="force">true</param>
</action>
<scripts>
<file plugin="web">js/org/ametys/web/tool/page/Actions.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-TagsCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-PageTypeCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-PageContentCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-CreatePageCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-Cards.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard.i18n.js</file>
<file plugin="web">js/org/ametys/ribbon/control/button/SitemapOrModifiablePageActionButton.js</file>
<file plugin="web">js/org/ametys/web/page/TemplatesMenu.i18n.js</file>
<file plugin="web">js/org/ametys/web/page/LinkPage.i18n.js</file>
<file plugin="web">js/org/ametys/web/zone/AddContentAction.i18n.js</file>
<file plugin="web">js/org/ametys/web/zone/AddServiceAction.i18n.js</file>
</scripts>
<css>
<file>css/pages/addpage.css</file>
</css>
<rights mode="AND">
<right>Web_Rights_Page_Create</right>
<right>Web_Rights_Page_Templates</right>
<right>Web_Rights_Page_AddContent</right>
<right>News_Right_News_Create</right>
<right>Web_Rights_Page_Tag</right>
</rights>
</extension>
</extensions>
</feature>
<feature name="mymacro">
<extensions>
<!-- Ajouter une page -->
<extension id="mymacro.addNews"
point="org.ametys.cms.workspace.ribbon.RibbonControlsManager"
class="org.ametys.runtime.ui.impl.StaticContextualClientSideElement">
<action class="org.ametys.ribbon.control.button.SitemapOrModifiablePageActionButton">
<param name="action">org.ametys.web.tool.page.Add.act</param>
<param name="label" i18n="false">Nouvelle actualité spéciale</param>
<param name="default-description" i18n="false">Ce bouton permet de créer une nouvelle page doté du gabarit 'Page', d'une actualité et étiquetté 'Pages spéciales'</param>
<param name="no-right-description" i18n="false">Vous n'avez pas le droit de créer une actualité ici</param>
<param name="no-selection-description" i18n="false">Sélectionnez une page pour pouvoir créer une actualité</param>
<param name="footer" i18n="false">Consultez l'aide pour plus d'information</param>
<param name="icon-small" file="true" plugin="news">img/news_16.png</param>
<param name="icon-medium" file="true" plugin="news">img/news_32.png</param>
<param name="icon-large" file="true" plugin="news">img/news_48.png</param>
<param name="title">Ajouter une actualité spéciale...</param>
<param name="default-page-title">Nouvelle actualité spéciale</param>
<param name="default-pagetype">template</param>
<param name="default-template">page</param>
<param name="default-pagecontent-type">contenttype</param>
<param name="default-contenttype">org.ametys.web.default.Content.news</param>
<param name="default-tags">'SPECIAL_PAGES': 'PAGE'</param>
<param name="force">true</param>
</action>
<scripts>
<file plugin="web">js/org/ametys/web/tool/page/Actions.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-TagsCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-PageTypeCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-PageContentCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-CreatePageCard.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard-Cards.i18n.js</file>
<file plugin="web">js/org/ametys/web/tool/page/AddPageWizzard.i18n.js</file>
<file plugin="web">js/org/ametys/ribbon/control/button/SitemapOrModifiablePageActionButton.js</file>
<file plugin="web">js/org/ametys/web/page/TemplatesMenu.i18n.js</file>
<file plugin="web">js/org/ametys/web/page/LinkPage.i18n.js</file>
<file plugin="web">js/org/ametys/web/zone/AddContentAction.i18n.js</file>
<file plugin="web">js/org/ametys/web/zone/AddServiceAction.i18n.js</file>
</scripts>
<css>
<file>css/pages/addpage.css</file>
</css>
<rights mode="AND">
<right>Web_Rights_Page_Create</right>
<right>Web_Rights_Page_Templates</right>
<right>Web_Rights_Page_AddContent</right>
<right>News_Right_News_Create</right>
<right>Web_Rights_Page_Tag</right>
</rights>
</extension>
</extensions>
</feature>
puis dans cms-ribbon-default.xml j'ajoute après chaque apparition de "<control id="org.ametys.web.userinterface.AddPage"/>" :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
<control id="mymacro.addNews"/>
<control id="mymacro.addNews"/>
<control id="mymacro.addNews"/>
Toute modification du plugin.xml nécessite de redémarrer le cms