Plugin newsletter

Version: Not specified

Features detail

newsletter/rights

Extensions:

newsletter.rights.access

Extension point extended:
org.ametys.core.right.RightsExtensionPoint

Configuration:

<extension point="org.ametys.core.right.RightsExtensionPoint" id="newsletter.rights.access">
<right id="Plugins_Newsletter_Right_AccessNewsletter">
<label>PLUGINS_NEWSLETTER_RIGHTS_ACCESS_NEWSLETTER_LABEL</label>
<description>PLUGINS_NEWSLETTER_RIGHTS_ACCESS_NEWSLETTER_DESCRIPTION</description>
<category>PLUGINS_NEWSLETTER_RIGHTS_CATEGORY</category>
</right>
</extension>

newsletter.rights.create

Extension point extended:
org.ametys.core.right.RightsExtensionPoint

Configuration:

<extension point="org.ametys.core.right.RightsExtensionPoint" id="newsletter.rights.create">
<right id="Plugins_Newsletter_Right_CreateNewsletter">
<label>PLUGINS_NEWSLETTER_RIGHTS_CREATE_NEWSLETTER_LABEL</label>
<description>PLUGINS_NEWSLETTER_RIGHTS_CREATE_NEWSLETTER_DESCRIPTION</description>
<category>PLUGINS_NEWSLETTER_RIGHTS_CATEGORY</category>
</right>
</extension>

newsletter.rights.edit

Extension point extended:
org.ametys.core.right.RightsExtensionPoint

Configuration:

<extension point="org.ametys.core.right.RightsExtensionPoint" id="newsletter.rights.edit">
<right id="Plugins_Newsletter_Right_EditNewsletters">
<label>PLUGINS_NEWSLETTER_RIGHTS_EDIT_NEWSLETTER_LABEL</label>
<description>PLUGINS_NEWSLETTER_RIGHTS_EDIT_NEWSLETTER_DESCRIPTION</description>
<category>PLUGINS_NEWSLETTER_RIGHTS_CATEGORY</category>
</right>
</extension>

newsletter.rights.validate

Extension point extended:
org.ametys.core.right.RightsExtensionPoint

Configuration:

<extension point="org.ametys.core.right.RightsExtensionPoint" id="newsletter.rights.validate">
<right id="Plugins_Newsletter_Right_ValidateNewsletters">
<label>PLUGINS_NEWSLETTER_RIGHTS_VALIDATE_NEWSLETTER_LABEL</label>
<description>PLUGINS_NEWSLETTER_RIGHTS_VALIDATE_NEWSLETTER_DESCRIPTION</description>
<category>PLUGINS_NEWSLETTER_RIGHTS_CATEGORY</category>
</right>
</extension>

newsletter.rights.set.automatic

Extension point extended:
org.ametys.core.right.RightsExtensionPoint

Configuration:

<extension point="org.ametys.core.right.RightsExtensionPoint" id="newsletter.rights.set.automatic">
<right id="Plugins_Newsletter_Right_SetAutomatic">
<label>PLUGINS_NEWSLETTER_RIGHTS_SET_AUTOMATIC_LABEL</label>
<description>PLUGINS_NEWSLETTER_RIGHTS_SET_AUTOMATIC_DESCRIPTION</description>
<category>PLUGINS_NEWSLETTER_RIGHTS_CATEGORY</category>
</right>
</extension>

newsletter.rights.handle.category

Extension point extended:
org.ametys.core.right.RightsExtensionPoint

Configuration:

<extension point="org.ametys.core.right.RightsExtensionPoint" id="newsletter.rights.handle.category">
<right id="Plugins_Newsletter_Right_HandleCategory">
<label>PLUGINS_NEWSLETTER_RIGHTS_HANDLE_CATEGORY_LABEL</label>
<description>PLUGINS_NEWSLETTER_RIGHTS_HANDLE_CATEGORY_DESCRIPTION</description>
<category>PLUGINS_NEWSLETTER_RIGHTS_CATEGORY</category>
</right>
</extension>

newsletter.rights.handle.subscribers

Extension point extended:
org.ametys.core.right.RightsExtensionPoint

Configuration:

<extension point="org.ametys.core.right.RightsExtensionPoint" id="newsletter.rights.handle.subscribers">
<right id="Plugins_Newsletter_Right_HandleSubscribers">
<label>PLUGINS_NEWSLETTER_RIGHTS_SUBSCRIBERS_LABEL</label>
<description>PLUGINS_NEWSLETTER_RIGHTS_SUBSCRIBERS_DESCRIPTION</description>
<category>PLUGINS_NEWSLETTER_RIGHTS_CATEGORY</category>
</right>
</extension>

newsletter/newsletter-clientside-targetfactory

Extensions:

newsletter-category

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.plugins.newsletter.NewsletterCategoryMessageTargetFactory

Extension point extended:
org.ametys.core.ui.MessageTargetFactoriesManager

Configuration:

<extension id="newsletter-category" point="org.ametys.core.ui.MessageTargetFactoriesManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.plugins.newsletter.NewsletterCategoryMessageTargetFactory"/>
<scripts>
<file>js/Ametys/plugins/newsletter/NewsletterCategoryMessageTargetFactory.js</file>
<file>js/Ametys/cms/newsletter/CategoryDAO.js</file>
<file>js/Ametys/cms/newsletter/NewsletterCategory.js</file>
</scripts>
<depends>
<org.ametys.core.ui.MessageTargetFactoriesManager>newsletter-category</org.ametys.core.ui.MessageTargetFactoriesManager>
</depends>
</extension>

newsletter/mail

Depends on:
runtime.sending.mail

Extensions:

org.ametys.plugins.newsletter.site.configuration

Extension point extended:
org.ametys.web.site.SiteConfigurationExtensionPoint

Configuration:

<extension point="org.ametys.web.site.SiteConfigurationExtensionPoint" id="org.ametys.plugins.newsletter.site.configuration">
<param id="newsletter-mail-sender" type="string">
<label i18n="true">PLUGINS_NEWSLETTER_MAIL_CONFIG_SENDER</label>
<description i18n="true">PLUGINS_NEWSLETTER_MAIL_CONFIG_SENDER_DESCRIPTION</description>
<validation>
<mandatory/>
<regexp>^((\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z0-9][A-Za-z0-9]+))|([^<]+<(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z0-9][A-Za-z0-9]+)>)$</regexp>
</validation>
<default-value>webmaster@company.com</default-value>
<category i18n="true">PLUGINS_NEWSLETTER_NEWSLETTER_CONFIG_CATEGORY</category>
<group i18n="true">PLUGINS_NEWSLETTER_MAIL_CONFIG_GROUP</group>
</param>
<param id="newsletter-mail-include-images" type="boolean">
<label i18n="true">PLUGINS_NEWSLETTER_MAIL_CONFIG_INCLUDE_IMAGES</label>
<description i18n="true">PLUGINS_NEWSLETTER_MAIL_CONFIG_INCLUDE_IMAGES_DESCRIPTION</description>
<default-value>false</default-value>
<category i18n="true">PLUGINS_NEWSLETTER_NEWSLETTER_CONFIG_CATEGORY</category>
<group i18n="true">PLUGINS_NEWSLETTER_MAIL_CONFIG_GROUP</group>
</param>
<param id="newsletter-subscription-descending" type="boolean">
<label i18n="true">PLUGINS_NEWSLETTER_SUBSCRIPTION_DESCENDING_LABEL</label>
<description i18n="true">PLUGINS_NEWSLETTER_SUBSCRIPTION_DESCENDING_DESCRIPTION</description>
<default-value>true</default-value>
<category i18n="true">PLUGINS_NEWSLETTER_NEWSLETTER_CONFIG_CATEGORY</category>
<group i18n="true">PLUGINS_NEWSLETTER_SUBSCRIPTION_CONFIG_GROUP</group>
</param>
<param id="newsletter-subscription-ascending" type="boolean">
<label i18n="true">PLUGINS_NEWSLETTER_SUBSCRIPTION_ASCENDING_LABEL</label>
<description i18n="true">PLUGINS_NEWSLETTER_SUBSCRIPTION_ASCENDING_DESCRIPTION</description>
<default-value>false</default-value>
<category i18n="true">PLUGINS_NEWSLETTER_NEWSLETTER_CONFIG_CATEGORY</category>
<group i18n="true">PLUGINS_NEWSLETTER_SUBSCRIPTION_CONFIG_GROUP</group>
</param>
<param id="newsletter-enable-tracking" type="boolean">
<label i18n="true">PLUGINS_NEWSLETTER_ENABLE_TRACKING_LABEL</label>
<description i18n="true">PLUGINS_NEWSLETTER_ENABLE_TRACKING_DESCRIPTION</description>
<default-value>true</default-value>
<category i18n="true">PLUGINS_NEWSLETTER_NEWSLETTER_CONFIG_CATEGORY</category>
<group i18n="true">PLUGINS_NEWSLETTER_TRACKING_CONFIG_GROUP</group>
</param>
</extension>

newsletter/tags

Extensions:

org.ametys.plugins.newsletters.Tag

Associated java class:
org.ametys.cms.tag.StaticTagProvider

Extension point extended:
org.ametys.cms.tag.TagProviderExtensionPoint

Configuration:

<extension point="org.ametys.cms.tag.TagProviderExtensionPoint" id="org.ametys.plugins.newsletters.Tag" class="org.ametys.cms.tag.StaticTagProvider">
<label i18n="true">PLUGINS_NEWSLETTER_STATIC_TAG</label>
<description i18n="true">PLUGINS_NEWSLETTER_STATIC_TAG_DESC</description>
<tag id="NEWSLETTER_CATEGORY" target="PAGE">
<label i18n="true">PLUGINS_NEWSLETTER_STATIC_TAG_CATEGORY</label>
<description i18n="true">PLUGINS_NEWSLETTER_STATIC_TAG_CATEGORY_DESC</description>
</tag>
</extension>

newsletter/category.provider.repository

Extensions:

org.ametys.plugins.newsletter.category.JCRCategoryProvider

Associated java class:
org.ametys.plugins.newsletter.category.JCRCategoryProvider

Extension point extended:
org.ametys.plugins.newsletter.category.CategoryProviderExtensionPoint

Configuration:

<extension point="org.ametys.plugins.newsletter.category.CategoryProviderExtensionPoint" id="org.ametys.plugins.newsletter.category.JCRCategoryProvider" class="org.ametys.plugins.newsletter.category.JCRCategoryProvider">
<label i18n="true">PLUGINS_NEWSLETTER_CATEGORYPROVIDER_JCR_LABEL</label>
<description i18n="true">PLUGINS_NEWSLETTER_CATEGORYPROVIDER_JCR_DESC</description>
</extension>

org.ametys.plugins.newsletter.category.SitemapCategoryProvider

Associated java class:
org.ametys.plugins.newsletter.category.SitemapCategoryProvider

Extension point extended:
org.ametys.plugins.newsletter.category.CategoryProviderExtensionPoint

Configuration:

<extension point="org.ametys.plugins.newsletter.category.CategoryProviderExtensionPoint" id="org.ametys.plugins.newsletter.category.SitemapCategoryProvider" class="org.ametys.plugins.newsletter.category.SitemapCategoryProvider">
<label i18n="true">PLUGINS_NEWSLETTER_CATEGORYPROVIDER_SITEMAP_LABEL</label>
<description i18n="true">PLUGINS_NEWSLETTER_CATEGORYPROVIDER_SITEMAP_DESC</description>
</extension>

newsletter/factories

Depends on:
factories

Components:

org.ametys.plugins.newsletter.category.CategoryDAO

Associated java class:
org.ametys.plugins.newsletter.category.CategoryDAO

Configuration:

<component id="org.ametys.plugins.newsletter.category.CategoryDAO" class="org.ametys.plugins.newsletter.category.CategoryDAO" role="org.ametys.plugins.newsletter.category.CategoryDAO"/>

Extensions:

org.ametys.plugins.newsletter.category.CategoryFactory
Ametys object for storing a newsletter category

Associated java class:
org.ametys.plugins.newsletter.category.CategoryFactory

Extension point extended:
org.ametys.plugins.repository.AmetysObjectFactoryExtensionPoint

Configuration:

<extension point="org.ametys.plugins.repository.AmetysObjectFactoryExtensionPoint" id="org.ametys.plugins.newsletter.category.CategoryFactory" class="org.ametys.plugins.newsletter.category.CategoryFactory">
<scheme>category</scheme>
<nodetype>ametys:category</nodetype>
<nodetype-definition>nodetypes/newsletter_nodetypes.xml</nodetype-definition>
</extension>

newsletter/workflow

Components:

org.ametys.plugins.newsletter.workflow.CreateNewsletterFunction
Workflow function for creating a newsletter

Associated java class:
org.ametys.plugins.newsletter.workflow.CreateNewsletterFunction

Configuration:

<component role="org.ametys.plugins.newsletter.workflow.CreateNewsletterFunction" id="org.ametys.plugins.newsletter.workflow.CreateNewsletterFunction" class="org.ametys.plugins.newsletter.workflow.CreateNewsletterFunction"> </component>

org.ametys.plugins.newsletter.workflow.SendNewsletterFunction
Workflow function for sending a newsletter

Associated java class:
org.ametys.plugins.newsletter.workflow.SendNewsletterFunction

Configuration:

<component role="org.ametys.plugins.newsletter.workflow.SendNewsletterFunction" id="org.ametys.plugins.newsletter.workflow.SendNewsletterFunction" class="org.ametys.plugins.newsletter.workflow.SendNewsletterFunction"> </component>

newsletter/workflow_function

Extensions:

org.ametys.newsletter.workflow.Edit

Associated java class:
org.ametys.cms.clientsideelement.SmartContentClientSideElement

Associated javascript class:
Ametys.plugins.cms.content.controller.SmartContentController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.workflow.Edit" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.cms.clientsideelement.SmartContentClientSideElement">
<class name="Ametys.plugins.cms.content.controller.SmartContentController">
<action>Ametys.plugins.cms.content.actions.OpenContentAction.edit</action>
<workflow-name>newsletter</workflow-name>
<label i18n="true">plugin.cms:CONTENT_EDIT_LABEL</label>
<default-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_NOCONTENT</default-description>
<icon-glyph>ametysicon-edit5</icon-glyph>
<icon-small file="true" plugin="cms">img/content/edit_16.png</icon-small>
<icon-medium file="true" plugin="cms">img/content/edit_32.png</icon-medium>
<icon-large file="true" plugin="cms">img/content/edit_32.png</icon-large>
<selection-target-id>^content$</selection-target-id>
<selection-enable-multiselection>false</selection-enable-multiselection>
<selection-description-multiselectionforbidden i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_MANYCONTENT</selection-description-multiselectionforbidden>
<allright-start-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_START</allright-start-description>
<allright-end-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_END</allright-end-description>
<allright-content-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_CONTENT</allright-content-description>
<error-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_ERROR</error-description>
<enabled-on-workflow-action-only>2</enabled-on-workflow-action-only>
<workflowaction-start-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_WORKFLOWACTION_START</workflowaction-start-description>
<workflowaction-end-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_WORKFLOWACTION_END</workflowaction-end-description>
<workflowaction-content-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_WORKFLOWACTION_CONTENT</workflowaction-content-description>
<enabled-on-unlock-only>true</enabled-on-unlock-only>
<locked-start-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_LOCKED_START</locked-start-description>
<locked-end-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_LOCKED_END</locked-end-description>
<locked-content-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_LOCKED_CONTENT</locked-content-description>
<enabled-on-modifiable-only>true</enabled-on-modifiable-only>
<nomodifiable-start-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_NOMODIFIABLE_START</nomodifiable-start-description>
<nomodifiable-end-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_NOMODIFIABLE_END</nomodifiable-end-description>
<nomodifiable-content-description i18n="true">plugin.cms:CONTENT_EDIT_DESCRIPTION_NOMODIFIABLE_CONTENT</nomodifiable-content-description>
</class>
<scripts>
<file plugin="cms">js/Ametys/plugins/cms/content/controller/SmartContentController.js</file>
<file plugin="cms">js/Ametys/plugins/cms/content/actions/OpenContentAction.js</file>
</scripts>
<depends>
<org.ametys.core.ui.UIToolsFactoriesManager>uitool-content</org.ametys.core.ui.UIToolsFactoriesManager>
<org.ametys.core.ui.StaticFileImportsManager>org.ametys.cms.Constants</org.ametys.core.ui.StaticFileImportsManager>
</depends>
</extension>

org.ametys.newsletter.workflow.WorkflowSteps

Associated java class:
org.ametys.cms.clientsideelement.WorkflowStepsClientSideElement

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.workflow.WorkflowSteps" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.cms.clientsideelement.WorkflowStepsClientSideElement">
<workflow name="newsletter">
<steps>
<step id="1">
<action>
<menu-4-action>Ametys.plugins.newsletter.workflow.ValidateAction.act</menu-4-action>
</action>
<workflow-actions mode="exclude">
<action>2</action>
<action>6</action>
</workflow-actions>
</step>
<step id="2">
<action>
<menu-4-action>Ametys.plugins.newsletter.workflow.ValidateAction.act</menu-4-action>
<selection-enable-multiselection>false</selection-enable-multiselection>
<selection-description-multiselectionforbidden i18n="true">PLUGINS_NEWSLETTER_WORKFLOW_SELECTION_MANYCONTENT</selection-description-multiselectionforbidden>
</action>
<workflow-actions mode="exclude">
<action>2</action>
<action>6</action>
</workflow-actions>
</step>
<step id="3">
<workflow-actions mode="exclude">
<action>2</action>
<action>6</action>
</workflow-actions>
</step>
</steps>
</workflow>
<scripts>
<file>js/Ametys/plugins/newsletter/workflow/ValidateAction.js</file>
</scripts>
<depends>
<org.ametys.core.ui.MessageTargetFactoriesManager>content</org.ametys.core.ui.MessageTargetFactoriesManager>
<org.ametys.core.ui.StaticFileImportsManager>org.ametys.cms.Constants</org.ametys.core.ui.StaticFileImportsManager>
</depends>
</extension>

newsletter/copy-updater

Extensions:

org.ametys.plugins.newsletter.NewsletterCopyUpdater

Associated java class:
org.ametys.plugins.newsletter.NewsletterCopyUpdater

Extension point extended:
org.ametys.web.site.CopyUpdaterExtensionPoint

Configuration:

<extension point="org.ametys.web.site.CopyUpdaterExtensionPoint" id="org.ametys.plugins.newsletter.NewsletterCopyUpdater" class="org.ametys.plugins.newsletter.NewsletterCopyUpdater" logger="org.ametys.plugins.newsletter.newslettercopyupdater"> </extension>

newsletter/content-type.newsletter

Extensions:

org.ametys.plugins.newsletter.Content.newsletter

Associated java class:
org.ametys.cms.contenttype.HTMLContentType

Extension point extended:
org.ametys.cms.contenttype.ContentTypeExtensionPoint

Configuration:

<extension point="org.ametys.cms.contenttype.ContentTypeExtensionPoint" id="org.ametys.plugins.newsletter.Content.newsletter" class="org.ametys.cms.contenttype.HTMLContentType">
<cms:content-type private="true">
<cms:label i18n="true">PLUGINS_NEWSLETTER_CONTENT_LABEL</cms:label>
<cms:description i18n="true">PLUGINS_NEWSLETTER_CONTENT_DESCRIPTION</cms:description>
<cms:default-title i18n="true">PLUGINS_NEWSLETTER_CONTENT_DEFAULT_TITLE</cms:default-title>
<cms:icons>
<cms:glyph>ametysicon-envelope14</cms:glyph>
<cms:small>img/content/icon-small.png</cms:small>
<cms:medium>img/content/icon-medium.png</cms:medium>
<cms:large>img/content/icon-large.png</cms:large>
</cms:icons>
<cms:metadata name="title" type="string">
<label i18n="true">PLUGINS_NEWSLETTER_TITLE</label>
<description i18n="true">PLUGINS_NEWSLETTER_TITLE_DESC</description>
<validation>
<mandatory/>
</validation>
</cms:metadata>
<cms:metadata name="newsletter-number" type="long">
<label i18n="true">PLUGINS_NEWSLETTER_NUMBER</label>
<description i18n="true">PLUGINS_NEWSLETTER_NUMBER_DESC</description>
</cms:metadata>
<cms:metadata name="newsletter-date" type="date">
<label i18n="true">PLUGINS_NEWSLETTER_DATE</label>
<description i18n="true">PLUGINS_NEWSLETTER_DATE_DESC</description>
</cms:metadata>
<cms:metadata name="content" type="rich-text">
<label i18n="true">PLUGINS_NEWSLETTER_CONTENT</label>
<description i18n="true">PLUGINS_NEWSLETTER_CONTENT_DESC</description>
<validation>
<mandatory/>
</validation>
<widget-params>
<param name="validElements">*[*]</param>
<param name="validStyles">null</param>
<param name="validClasses">null</param>
</widget-params>
</cms:metadata>
<cms:metadata-set name="main" type="view">
<cms:metadata-ref name="title"/>
<cms:metadata-ref name="newsletter-number"/>
<cms:metadata-ref name="newsletter-date"/>
<cms:metadata-ref name="content"/>
</cms:metadata-set>
<cms:metadata-set name="index" type="view">
<cms:metadata-ref name="title"/>
<cms:metadata-ref name="newsletter-number"/>
<cms:metadata-ref name="newsletter-date"/>
<cms:metadata-ref name="content"/>
</cms:metadata-set>
<cms:metadata-set name="main" type="edition">
<cms:metadata-ref name="title"/>
<cms:metadata-ref name="newsletter-number"/>
<cms:metadata-ref name="newsletter-date"/>
<cms:metadata-ref name="content"/>
</cms:metadata-set>
<cms:metadata-set name="search" type="view" internal="true">
<cms:metadata-ref name="title"/>
</cms:metadata-set>
<cms:metadata-set name="abstract" type="view">
<cms:metadata-ref name="title"/>
<cms:metadata-ref name="newsletter-number"/>
<cms:metadata-ref name="newsletter-date"/>
</cms:metadata-set>
<cms:metadata-set name="link" type="view">
<cms:metadata-ref name="title"/>
</cms:metadata-set>
<cms:metadata-set name="details" type="view" internal="true">
<cms:metadata-ref name="title"/>
<cms:metadata-ref name="newsletter-number"/>
<cms:metadata-ref name="newsletter-date"/>
</cms:metadata-set>
</cms:content-type>
</extension>

org.ametys.newsletter.addnewsletter

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.plugins.newsletter.controller.NewsletterController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.addnewsletter" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.plugins.newsletter.controller.NewsletterController">
<action>Ametys.plugins.newsletter.category.NewsletterActions.addNewsletter</action>
<selection-target-id>^newsletter-category$</selection-target-id>
<selection-target-parameter>
<name>^template$</name>
<value>^.+$</value>
</selection-target-parameter>
<label i18n="true">PLUGINS_NEWSLETTER_CONTENT_CREATENEWSLETTERACTION_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_CONTENT_CREATENEWSLETTERACTION_DESCRIPTION</default-description>
<selection-description-nomatch i18n="true">PLUGINS_NEWSLETTER_CONTENT_CREATENEWSLETTERACTION_DISABLED</selection-description-nomatch>
<selection-description-empty i18n="true">PLUGINS_NEWSLETTER_CONTENT_CREATENEWSLETTERACTION_DISABLED</selection-description-empty>
<icon-glyph>ametysicon-envelope14</icon-glyph>
<icon-decorator>decorator-ametysicon-add64</icon-decorator>
<icon-decorator-type>action-create</icon-decorator-type>
<icon-small file="true">img/newsletter_16.png</icon-small>
<icon-medium file="true">img/newsletter_32.png</icon-medium>
<icon-large file="true">img/newsletter_48.png</icon-large>
<initWorkflowActionId>1</initWorkflowActionId>
<workflowName>newsletter</workflowName>
<contentTypes>org.ametys.plugins.newsletter.Content.newsletter</contentTypes>
<defaultContentTitle i18n="true">PLUGINS_NEWSLETTER_CONTENT_CREATENEWSLETTERACTION_DEFAULT_TITLE</defaultContentTitle>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/controller/NewsletterController.js</file>
<file>js/Ametys/plugins/newsletter/category/NewsletterActions.js</file>
</scripts>
<depends>
<org.ametys.core.ui.UIToolsFactoriesManager>uitool-content</org.ametys.core.ui.UIToolsFactoriesManager>
<org.ametys.core.ui.StaticFileImportsManager>org.ametys.cms.Content</org.ametys.core.ui.StaticFileImportsManager>
</depends>
<right>Plugins_Newsletter_Right_CreateNewsletter</right>
</extension>

newsletter/newsletter.dao

Components:

org.ametys.plugins.newsletter.NewsletterDAO

Associated java class:
org.ametys.plugins.newsletter.NewsletterDAO

Configuration:

<component id="org.ametys.plugins.newsletter.NewsletterDAO" class="org.ametys.plugins.newsletter.NewsletterDAO" role="org.ametys.plugins.newsletter.NewsletterDAO"/>

newsletter/newsletter.automatic.ui

Components:

org.ametys.plugins.newsletter.auto.AutomaticNewsletterDAO

Associated java class:
org.ametys.plugins.newsletter.auto.AutomaticNewsletterDAO

Configuration:

<component id="org.ametys.plugins.newsletter.auto.AutomaticNewsletterDAO" class="org.ametys.plugins.newsletter.auto.AutomaticNewsletterDAO" role="org.ametys.plugins.newsletter.auto.AutomaticNewsletterDAO"/>

Extensions:

org.ametys.newsletter.SetAutoNewsletter

Associated java class:
org.ametys.plugins.newsletter.auto.AutomaticNewsletterClientSideElement

Associated javascript class:
Ametys.plugins.newsletter.controller.AutomaticNewsletterController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.SetAutoNewsletter" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.plugins.newsletter.auto.AutomaticNewsletterClientSideElement">
<class name="Ametys.plugins.newsletter.controller.AutomaticNewsletterController">
<action>Ametys.plugins.newsletter.category.NewsletterActions.setAutomaticNewsletter</action>
<selection-target-id>^newsletter-category$</selection-target-id>
<selection-target-parameter>
<name>^template$</name>
<value>^.+$</value>
</selection-target-parameter>
<label i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_BUTTON_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_BUTTON_DESCRIPTION</default-description>
<disabled-description i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_BUTTON_DISABLED</disabled-description>
<no-template-description i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_BUTTON_NOTEMPLATE</no-template-description>
<no-auto-description i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_BUTTON_NOAUTO</no-auto-description>
<toggled-description i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_BUTTON_TOGGLED</toggled-description>
<icon-glyph>ametysicon-envelope14</icon-glyph>
<icon-decorator>decorator-ametysicon-gear39</icon-decorator>
<icon-decorator-type>ametys-edit</icon-decorator-type>
<icon-small file="true">img/newsletter_automatic_16.png</icon-small>
<icon-medium file="true">img/newsletter_automatic_32.png</icon-medium>
<icon-large file="true">img/newsletter_automatic_48.png</icon-large>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/controller/NewsletterController.js</file>
<file>js/Ametys/plugins/newsletter/controller/AutomaticNewsletterController.js</file>
<file>js/Ametys/plugins/newsletter/category/NewsletterActions.js</file>
<file>js/Ametys/plugins/newsletter/category/AutomaticNewsletterUI.js</file>
</scripts>
<depends>
<org.ametys.core.ui.MessageTargetFactoriesManager>newsletter-category</org.ametys.core.ui.MessageTargetFactoriesManager>
<org.ametys.core.ui.StaticFileImportsManager>org.ametys.cms.Content</org.ametys.core.ui.StaticFileImportsManager>
</depends>
<right>Plugins_Newsletter_Right_SetAutomatic</right>
</extension>

newsletter/newsletter.automatic.cron.params

Specific configuration parameters detail:

newsletter.automatic.scheduler.hour

Configuration:

<param type="string" id="newsletter.automatic.scheduler.hour">
<label i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_CONFIG_SCHEDULER_HOUR_LABEL</label>
<description i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_CONFIG_SCHEDULER_HOUR_DESC</description>
<default-value>2:00</default-value>
<category i18n="true">PLUGINS_NEWSLETTER_NEWSLETTER_CONFIG_CATEGORY</category>
<group i18n="true">PLUGINS_NEWSLETTER_AUTOMATIC_SCHEDULING_CONFIG_GROUP</group>
<widget>edition.string-time</widget>
</param>

newsletter/newsletter.automatic.cron

Use shared configuration parameters:
newsletter.automatic.scheduler.hour

Components:

org.ametys.plugins.newsletter.auto.AutomaticNewslettersScheduler

Associated java class:
org.ametys.plugins.newsletter.auto.AutomaticNewslettersScheduler

Configuration:

<component role="org.ametys.plugins.newsletter.auto.AutomaticNewslettersScheduler" id="org.ametys.plugins.newsletter.auto.AutomaticNewslettersScheduler" class="org.ametys.plugins.newsletter.auto.AutomaticNewslettersScheduler" logger="org.ametys.plugins.newsletter.auto.AutomaticNewslettersScheduler">
<workflow name="newsletter" initialActionId="1" validateActionIds="3,4"/>
</component>

newsletter/newsletter.datasource.config

Specific configuration parameters detail:

plugins.newsletters.datasource
This parameter contains the data source to use to connect the newsletters' database

Configuration:

<param id="plugins.newsletters.datasource" type="datasource">
<label i18n="true">PLUGINS_NEWSLETTERS_CONFIG_DATASOURCE_LABEL</label>
<description i18n="true">PLUGINS_NEWSLETTERS_CONFIG_DATASOURCE_DESCRIPTION</description>
<widget>edition.datasource-sql</widget>
<widget-params>
<param name="allowCreation">true</param>
<param name="allowPrivate">true</param>
<param name="allowInternal">true</param>
<param name="allowedDbTypes">derby,mysql,oracle,postgresql,hsqldb</param>
</widget-params>
<validation>
<custom-validator class="org.ametys.core.datasource.SQLDatabaseTypeValidator">
<mandatory/>
<allowed-dbtypes>derby,mysql,oracle,postgresql,hsqldb</allowed-dbtypes>
</custom-validator>
</validation>
<category i18n="true">PLUGINS_NEWSLETTER_NEWSLETTER_CONFIG_CATEGORY</category>
<group i18n="true">PLUGINS_NEWSLETTER_DATASOURCE_CONFIG_GROUP</group>
<order>10</order>
</param>

newsletter/subscribers

Use shared configuration parameters:
plugins.newsletters.datasource

Components:

org.ametys.plugins.newsletter.daos.SubscribersDAO

Associated java class:
org.ametys.plugins.newsletter.daos.SubscribersDAO

Configuration:

<component role="org.ametys.plugins.newsletter.daos.SubscribersDAO" id="org.ametys.plugins.newsletter.daos.SubscribersDAO" class="org.ametys.plugins.newsletter.daos.SubscribersDAO">
<datasource type="config">plugins.newsletters.datasource</datasource>
<sqlMap resource="/org/ametys/plugins/newsletter/daos/subscribers.xml"/>
</component>

Extensions:

org.ametys.newsletter.Subscribers

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.button.OpenToolButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.Subscribers" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.ribbon.element.ui.button.OpenToolButtonController">
<opentool-id>uitool-newsletter-subscribers</opentool-id>
<selection-target-id>^newsletter-category$</selection-target-id>
<label i18n="true">PLUGINS_NEWSLETTER_SUBSCRIBERS_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_SUBSCRIBERS_DESCRIPTION</default-description>
<icon-glyph>ametysicon-envelope14</icon-glyph>
<icon-decorator>decorator-ametysicon-multiple25</icon-decorator>
<icon-decorator-type>action-default</icon-decorator-type>
<icon-small file="true">img/subscriber/icon_small.png</icon-small>
<icon-medium file="true">img/subscriber/icon_medium.png</icon-medium>
<icon-large file="true">img/subscriber/icon_large.png</icon-large>
</class>
<depends>
<org.ametys.core.ui.UIToolsFactoriesManager>uitool-newsletter-subscribers</org.ametys.core.ui.UIToolsFactoriesManager>
</depends>
<right>Plugins_Newsletter_Right_HandleSubscribers</right>
</extension>

uitool-newsletter-subscribers

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.tool.factory.UniqueToolFactory

Extension point extended:
org.ametys.core.ui.UIToolsFactoriesManager

Configuration:

<extension id="uitool-newsletter-subscribers" point="org.ametys.core.ui.UIToolsFactoriesManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.tool.factory.UniqueToolFactory">
<toolClass>Ametys.plugins.newsletter.subscribers.SubscribersTool</toolClass>
<title i18n="true">PLUGINS_NEWSLETTER_SUBSCRIBERS_LABEL</title>
<description i18n="true">PLUGINS_NEWSLETTER_SUBSCRIBERS_DESCRIPTION</description>
<icon-glyph>ametysicon-envelope14</icon-glyph>
<icon-decorator>decorator-ametysicon-multiple25</icon-decorator>
<icon-decorator-type>action-default</icon-decorator-type>
<icon-small file="true">img/subscriber/icon_small.png</icon-small>
<icon-medium file="true">img/subscriber/icon_medium.png</icon-medium>
<icon-large file="true">img/subscriber/icon_large.png</icon-large>
<default-location>cl</default-location>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/subscribers/SubscribersTool.js</file>
</scripts>
<css>
<file>css/newsletter-tool.css</file>
</css>
<depends>
<org.ametys.core.ui.MessageTargetFactoriesManager>newsletter-category</org.ametys.core.ui.MessageTargetFactoriesManager>
</depends>
</extension>

org.ametys.newsletter.subscribers.Export

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.ButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.subscribers.Export" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.ribbon.element.ui.ButtonController">
<action>Ametys.plugins.newsletter.subscribers.SubscribersActions.exportXls</action>
<selection-target-id>^newsletter-category$</selection-target-id>
<label i18n="true">PLUGINS_NEWSLETTER_UITOOL_SUBSCRIBERS_EXPORT_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_UITOOL_SUBSCRIBERS_EXPORT_DESC</default-description>
<icon-glyph>ametysicon-arrow88</icon-glyph>
<icon-small file="true">img/subscriber/export_16.png</icon-small>
<icon-medium file="true">img/subscriber/export_32.png</icon-medium>
<icon-large file="true">img/subscriber/export_32.png</icon-large>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/subscribers/SubscribersActions.js</file>
</scripts>
<right>Plugins_Newsletter_Right_HandleSubscribers</right>
</extension>

org.ametys.newsletter.subscribers.ImportCsv

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.ButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.subscribers.ImportCsv" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.ribbon.element.ui.ButtonController">
<action>Ametys.plugins.newsletter.subscribers.SubscribersActions.importCsv</action>
<selection-target-id>^newsletter-category$</selection-target-id>
<label i18n="true">PLUGINS_NEWSLETTER_UITOOL_SUBSCRIBERS_IMPORT_CSV_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_UITOOL_SUBSCRIBERS_IMPORT_CSV_DESC</default-description>
<icon-glyph>ametysicon-file-extension-csv</icon-glyph>
<icon-decorator>decorator-ametysicon-upload119</icon-decorator>
<icon-decorator-type>action-create</icon-decorator-type>
<icon-small file="true">img/subscriber/import_csv_16.png</icon-small>
<icon-medium file="true">img/subscriber/import_csv_32.png</icon-medium>
<icon-large file="true">img/subscriber/import_csv_48.png</icon-large>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/subscribers/SubscribersActions.js</file>
</scripts>
<depends>
<org.ametys.core.ui.MessageTargetFactoriesManager>newsletter-category</org.ametys.core.ui.MessageTargetFactoriesManager>
</depends>
<right>Plugins_Newsletter_Right_HandleSubscribers</right>
</extension>

org.ametys.newsletter.subscribers.AddSubscribers

Associated java class:
org.ametys.plugins.newsletter.subscribe.SubscribersClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.ButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.subscribers.AddSubscribers" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.plugins.newsletter.subscribe.SubscribersClientSideElement">
<class name="Ametys.ribbon.element.ui.ButtonController">
<action>Ametys.plugins.newsletter.subscribers.SubscribersActions.addSubscribers</action>
<selection-target-id>^newsletter-category$</selection-target-id>
<label i18n="true">PLUGINS_NEWSLETTER_UITOOL_SUBSCRIBERS_ADD_SUBSCRIBERS_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_UITOOL_SUBSCRIBERS_ADD_SUBSCRIBERS_DESC</default-description>
<icon-glyph>ametysicon-black302</icon-glyph>
<icon-decorator>decorator-ametysicon-add64</icon-decorator>
<icon-decorator-type>action-create</icon-decorator-type>
<icon-small file="true">img/subscriber/add_16.png</icon-small>
<icon-medium file="true">img/subscriber/add_32.png</icon-medium>
<icon-large file="true">img/subscriber/add_48.png</icon-large>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/subscribers/SubscribersActions.js</file>
</scripts>
<depends>
<org.ametys.core.ui.MessageTargetFactoriesManager>newsletter-category</org.ametys.core.ui.MessageTargetFactoriesManager>
</depends>
<right>Plugins_Newsletter_Right_HandleSubscribers</right>
</extension>

org.ametys.newsletter.subscribers.RemoveSubscribers

Associated java class:
org.ametys.plugins.newsletter.subscribe.SubscribersClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.ButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.subscribers.RemoveSubscribers" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.plugins.newsletter.subscribe.SubscribersClientSideElement">
<class name="Ametys.ribbon.element.ui.ButtonController">
<action>Ametys.plugins.newsletter.subscribers.SubscribersActions.removeSubscribers</action>
<selection-target-id>^newsletter-category$</selection-target-id>
<selection-subtarget-id>^newsletter-subscriber$</selection-subtarget-id>
<label i18n="true">PLUGINS_NEWSLETTER_UITOOL_SUBSCRIBERS_REMOVE_SUBSCRIBERS_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_UITOOL_SUBSCRIBERS_REMOVE_SUBSCRIBERS_DESC</default-description>
<icon-glyph>ametysicon-delete30</icon-glyph>
<icon-small file="true">img/subscriber/delete_16.png</icon-small>
<icon-medium file="true">img/subscriber/delete_32.png</icon-medium>
<icon-large file="true">img/subscriber/delete_48.png</icon-large>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/subscribers/SubscribersActions.js</file>
</scripts>
<depends>
<org.ametys.core.ui.MessageTargetFactoriesManager>newsletter-category</org.ametys.core.ui.MessageTargetFactoriesManager>
</depends>
<right>Plugins_Newsletter_Right_HandleSubscribers</right>
</extension>

newsletter/newsletters-service

Extensions:

org.ametys.plugins.newsletter.services.rights

Extension point extended:
org.ametys.core.right.RightsExtensionPoint

Configuration:

<extension point="org.ametys.core.right.RightsExtensionPoint" id="org.ametys.plugins.newsletter.services.rights">
<right id="Newsletters_Right_Service_Newsletters">
<label i18n="true">PLUGINS_NEWSLETTER_RIGHT_SERVICE_NEWSLETTERS_LABEL</label>
<description i18n="true">PLUGINS_NEWSLETTER_RIGHT_SERVICE_NEWSLETTERS_DESCRIPTION</description>
<category i18n="true">plugin.web:PLUGINS_WEB_RIGHTS_SERVICE_CREATE_CATEGORY</category>
</right>
</extension>

edition.select-newsletter-category

Associated java class:
org.ametys.core.ui.widgets.StaticClientSideWidget

Associated javascript class:
Ametys.cms.newsletter.widget.SelectCategory

Extension point extended:
org.ametys.core.ui.widgets.WidgetsManager

Configuration:

<extension id="edition.select-newsletter-category" point="org.ametys.core.ui.widgets.WidgetsManager" class="org.ametys.core.ui.widgets.StaticClientSideWidget">
<class name="Ametys.cms.newsletter.widget.SelectCategory">
<ftypes>string</ftypes>
<supports-enumerated>false</supports-enumerated>
<supports-non-enumerated>true</supports-non-enumerated>
<supports-multiple>false</supports-multiple>
<supports-non-multiple>true</supports-non-multiple>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/NewslettersTree.js</file>
<file>js/Ametys/cms/newsletter/widget/SelectCategory.js</file>
<file>js/Ametys/cms/newsletter/helper/ChooseCategory.js</file>
</scripts>
</extension>

org.ametys.newsletter.service.SubscribeService

Associated java class:
org.ametys.web.service.StaticService

Extension point extended:
org.ametys.web.service.ServiceExtensionPoint

Configuration:

<extension point="org.ametys.web.service.ServiceExtensionPoint" class="org.ametys.web.service.StaticService" id="org.ametys.newsletter.service.SubscribeService">
<url>service/subscribe.html</url>
<right>Newsletters_Right_Service_Newsletters</right>
<label i18n="true">NEWSLETTERS_SERVICE_SUBSCRIBE_LABEL</label>
<description i18n="true">NEWSLETTERS_SERVICE_SUBSCRIBE_DESCRIPTION</description>
<category i18n="true">plugin.web:PLUGINS_WEB_SERVICE_CATEGORY_10_CONTENT</category>
<thumbnail>
<glyph>ametysicon-envelope14</glyph>
<decorator>decorator-ametysicon-black302</decorator>
<small>img/services/newsletter_form_16.png</small>
<medium>img/services/newsletter_form_32.png</medium>
<large>img/services/newsletter_form_48.png</large>
</thumbnail>
<parameters>
<parameter name="header" type="string">
<label i18n="true">NEWSLETTERS_SERVICE_SUBSCRIBE_TITLE_LABEL</label>
<description i18n="true">NEWSLETTERS_SERVICE_SUBSCRIBE_TITLE_DESC</description>
</parameter>
<parameter name="categories" type="string" multiple="false">
<label i18n="true">NEWSLETTERS_SERVICE_SUBSCRIBE_CATEGORY_LABEL</label>
<description i18n="true">NEWSLETTERS_SERVICE_SUBSCRIBE_CATEGORY_DESC</description>
<widget>edition.select-newsletter-category</widget>
<validation>
<mandatory/>
</validation>
</parameter>
<parameter name="xslt" type="string">
<label i18n="true">NEWSLETTERS_SERVICE_SUBSCRIBE_XSLT_LABEL</label>
<description i18n="true">NEWSLETTERS_SERVICE_SUBSCRIBE_XSLT_DESC</description>
<default-value>pages/services/subscribe/subscribe_1.4.xsl</default-value>
<validation>
<mandatory/>
</validation>
<widget>edition.combobox</widget>
<enumeration>
<custom-enumerator class="org.ametys.web.service.ServiceXSLTEnumerator">
<path>pages/services/subscribe</path>
<values>
<value>pages/services/subscribe/subscribe.xsl</value>
</values>
</custom-enumerator>
</enumeration>
</parameter>
</parameters>
<indexation>
<parameter>header</parameter>
</indexation>
<css>
<file plugin="core-ui">font/ametys/AmetysIcon.css</file>
</css>
</extension>

org.ametys.newsletter.service.ListService

Associated java class:
org.ametys.web.service.StaticService

Extension point extended:
org.ametys.web.service.ServiceExtensionPoint

Configuration:

<extension point="org.ametys.web.service.ServiceExtensionPoint" class="org.ametys.web.service.StaticService" id="org.ametys.newsletter.service.ListService">
<url>service/list.html</url>
<cacheable>true</cacheable>
<right>Newsletters_Right_Service_Newsletters</right>
<label i18n="true">NEWSLETTERS_SERVICE_LIST_LABEL</label>
<description i18n="true">NEWSLETTERS_SERVICE_LIST_DESCRIPTION</description>
<category i18n="true">plugin.web:PLUGINS_WEB_SERVICE_CATEGORY_10_CONTENT</category>
<thumbnail>
<glyph>ametysicon-envelope14</glyph>
<small>img/services/newsletter_list_16.png</small>
<medium>img/services/newsletter_list_32.png</medium>
<large>img/services/newsletter_list_48.png</large>
</thumbnail>
<parameters>
<parameter name="header" type="string">
<label i18n="true">NEWSLETTERS_SERVICE_LIST_TITLE_LABEL</label>
<description i18n="true">NEWSLETTERS_SERVICE_LIST_TITLE_DESC</description>
</parameter>
<parameter name="category" type="string">
<label i18n="true">NEWSLETTERS_SERVICE_LIST_CATEGORY_LABEL</label>
<description i18n="true">NEWSLETTERS_SERVICE_LIST_CATEGORY_DESC</description>
<widget>edition.select-newsletter-category</widget>
<validation>
<mandatory/>
</validation>
</parameter>
<parameter name="length" type="long">
<label i18n="true">NEWSLETTERS_SERVICE_LIST_NUMBER_ARCHIVED</label>
<description i18n="true">NEWSLETTERS_SERVICE_LIST_NUMBER_ARCHIVED_DESC</description>
<default-value>10</default-value>
</parameter>
<parameter name="rss" type="boolean">
<label i18n="true">NEWSLETTERS_SERVICE_LIST_RSS_FEED</label>
<description i18n="true">NEWSLETTERS_SERVICE_LIST_RSS_FEED_DESC</description>
<default-value>false</default-value>
</parameter>
<parameter name="xslt" type="string">
<label i18n="true">NEWSLETTERS_SERVICE_LIST_XSLT_LABEL</label>
<description i18n="true">NEWSLETTERS_SERVICE_LIST_XSLT_DESC</description>
<default-value>pages/services/list/list_1.4.xsl</default-value>
<validation>
<mandatory/>
</validation>
<widget>edition.combobox</widget>
<enumeration>
<custom-enumerator class="org.ametys.web.service.ServiceXSLTEnumerator">
<path>pages/services/list</path>
<values>
<value>pages/services/list/list.xsl</value>
</values>
</custom-enumerator>
</enumeration>
</parameter>
</parameters>
<indexation>
<parameter>header</parameter>
</indexation>
<css>
<file plugin="core-ui">font/ametys/AmetysIcon.css</file>
</css>
</extension>

newsletter/newsletter.archive.service.cache.policy

Extensions:

org.ametys.plugins.newsletter.NewsletterArchiveServiceCachePolicy

Associated java class:
org.ametys.plugins.newsletter.NewsletterArchiveServiceCachePolicy

Extension point extended:
org.ametys.web.cache.pageelement.PageElementCachePolicyExtensionPoint/zoneItem

Configuration:

<extension point="org.ametys.web.cache.pageelement.PageElementCachePolicyExtensionPoint/zoneItem" id="org.ametys.plugins.newsletter.NewsletterArchiveServiceCachePolicy" class="org.ametys.plugins.newsletter.NewsletterArchiveServiceCachePolicy"/>

newsletter/newsletter.fo.user.preferences

Components:

org.ametys.plugins.newsletter.userpref.NewsletterUserPreferencesStorage

Associated java class:
org.ametys.plugins.newsletter.userpref.NewsletterUserPreferencesStorage

Configuration:

<component role="org.ametys.plugins.newsletter.userpref.NewsletterUserPreferencesStorage" id="org.ametys.plugins.newsletter.userpref.NewsletterUserPreferencesStorage" class="org.ametys.plugins.newsletter.userpref.NewsletterUserPreferencesStorage" logger="org.ametys.plugins.newsletter.userpref.NewsletterUserPreferencesStorage"/>

Extensions:

org.ametys.plugins.newsletter.FOUserPrefs

Associated java class:
org.ametys.plugins.newsletter.userpref.NewsletterUserPreferenceProvider

Extension point extended:
org.ametys.core.userpref.UserPreferencesExtensionPoint.FO

Configuration:

<extension point="org.ametys.core.userpref.UserPreferencesExtensionPoint.FO" id="org.ametys.plugins.newsletter.FOUserPrefs" class="org.ametys.plugins.newsletter.userpref.NewsletterUserPreferenceProvider"/>

newsletter/newsletter.ga.component

Components:

org.ametys.plugins.newsletter.ga.GAUriBuilder

Associated java class:
org.ametys.plugins.newsletter.ga.GAUriBuilder

Configuration:

<component role="org.ametys.plugins.newsletter.ga.GAUriBuilder" id="org.ametys.plugins.newsletter.ga.GAUriBuilder" class="org.ametys.plugins.newsletter.ga.GAUriBuilder" logger="org.ametys.plugins.newsletter.ga.GAUriBuilder"/>

newsletter/newsletter.ga.xslt.helper

Components:

org.ametys.plugins.newsletter.ga.GAXsltHelper

Associated java class:
org.ametys.plugins.newsletter.ga.GAXsltHelper

Configuration:

<component role="org.ametys.plugins.newsletter.ga.GAXsltHelper" id="org.ametys.plugins.newsletter.ga.GAXsltHelper" class="org.ametys.plugins.newsletter.ga.GAXsltHelper" logger="org.ametys.plugins.newsletter.ga.GAXsltHelper"/>

newsletter/userinterface.newsletter.ribbon

Extensions:

org.ametys.newsletter.NewsletterTab

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.ribbon.element.tab.TabController

Extension point extended:
org.ametys.core.ui.RibbonTabsManager

Configuration:

<extension id="org.ametys.newsletter.NewsletterTab" point="org.ametys.core.ui.RibbonTabsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.ribbon.element.tab.TabController">
<selection-target-id>^(newsletter-category|newsletter-category-provider)$</selection-target-id>
</class>
</extension>

org.ametys.newsletter.userinterface.Newsletters

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.button.OpenToolButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.userinterface.Newsletters" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.ribbon.element.ui.button.OpenToolButtonController">
<opentool-id>uitool-newsletters</opentool-id>
<label i18n="true">PLUGINS_NEWSLETTER_UITOOL_NEWSLETTERS_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_UITOOL_NEWSLETTERS_DESC</default-description>
<footer i18n="true">PLUGINS_NEWSLETTER_UITOOL_NEWSLETTERS_FOOTER</footer>
<icon-glyph>ametysicon-envelope14</icon-glyph>
<icon-small file="true">img/newsletters_16.png</icon-small>
<icon-medium file="true">img/newsletters_32.png</icon-medium>
<icon-large file="true">img/newsletters_48.png</icon-large>
</class>
<depends>
<org.ametys.core.ui.UIToolsFactoriesManager>uitool-newsletters</org.ametys.core.ui.UIToolsFactoriesManager>
</depends>
<right context-prefix="/cms">Plugins_Newsletter_Right_AccessNewsletter</right>
</extension>

uitool-newsletters

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.tool.factory.UniqueToolFactory

Extension point extended:
org.ametys.core.ui.UIToolsFactoriesManager

Configuration:

<extension id="uitool-newsletters" point="org.ametys.core.ui.UIToolsFactoriesManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.tool.factory.UniqueToolFactory">
<toolClass>Ametys.plugins.newsletter.NewslettersTool</toolClass>
<title i18n="true">PLUGINS_NEWSLETTER_UITOOL_NEWSLETTERS_LABEL</title>
<description i18n="true">PLUGINS_NEWSLETTER_UITOOL_NEWSLETTERS_DESC</description>
<footer i18n="true">PLUGINS_NEWSLETTER_UITOOL_NEWSLETTERS_FOOTER</footer>
<icon-glyph>ametysicon-envelope14</icon-glyph>
<icon-small file="true">img/newsletters_16.png</icon-small>
<icon-medium file="true">img/newsletters_32.png</icon-medium>
<icon-large file="true">img/newsletters_48.png</icon-large>
<default-location>l</default-location>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/NewslettersTool.js</file>
<file>js/Ametys/plugins/newsletter/NewslettersTree.js</file>
<file>js/Ametys/plugins/newsletter/NewslettersTree/NewsletterNodeEntry.js</file>
<file>js/Ametys/cms/newsletter/CategoryDAO.js</file>
</scripts>
<css>
<file>css/newsletter-tool.css</file>
</css>
<depends>
<org.ametys.core.ui.UIToolsFactoriesManager>uitool-content</org.ametys.core.ui.UIToolsFactoriesManager>
<org.ametys.core.ui.MessageTargetFactoriesManager>content</org.ametys.core.ui.MessageTargetFactoriesManager>
<org.ametys.core.ui.MessageTargetFactoriesManager>newsletter-category</org.ametys.core.ui.MessageTargetFactoriesManager>
</depends>
</extension>

org.ametys.newsletter.category.Add

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.ButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.category.Add" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.ribbon.element.ui.ButtonController">
<action>Ametys.plugins.newsletter.category.CategoryActions.addCategory</action>
<selection-target-id>^(newsletter-category|newsletter-category-provider)$</selection-target-id>
<selection-target-parameter>
<name>^mode$</name>
<value>^write$</value>
</selection-target-parameter>
<label i18n="true">PLUGINS_NEWSLETTER_UITOOL_CATEGORY_ADD_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_UITOOL_CATEGORY_ADD_DESC</default-description>
<selection-description-nomatch i18n="true">PLUGINS_NEWSLETTER_CONTENT_EDITCATEGORYACTION_DISABLED</selection-description-nomatch>
<selection-description-empty i18n="true">PLUGINS_NEWSLETTER_CONTENT_EDITCATEGORYACTION_DISABLED</selection-description-empty>
<icon-glyph>ametysicon-catalog2</icon-glyph>
<icon-decorator>decorator-ametysicon-add64</icon-decorator>
<icon-decorator-type>action-create</icon-decorator-type>
<icon-small file="true">img/category/add_16.png</icon-small>
<icon-medium file="true">img/category/add_32.png</icon-medium>
<icon-large file="true">img/category/add_48.png</icon-large>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/category/CategoryActions.js</file>
</scripts>
<right context-prefix="/cms">Plugins_Newsletter_Right_HandleCategory</right>
</extension>

org.ametys.newsletter.category.Edit

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.ButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.category.Edit" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.ribbon.element.ui.ButtonController">
<action>Ametys.plugins.newsletter.category.CategoryActions.editCategory</action>
<selection-target-id>^newsletter-category$</selection-target-id>
<selection-target-parameter>
<name>^mode$</name>
<value>^write$</value>
</selection-target-parameter>
<label i18n="true">PLUGINS_NEWSLETTER_UITOOL_CATEGORY_EDIT_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_UITOOL_CATEGORY_EDIT_DESC</default-description>
<selection-description-nomatch i18n="true">PLUGINS_NEWSLETTER_CONTENT_EDITCATEGORYACTION_DISABLED</selection-description-nomatch>
<selection-description-empty i18n="true">PLUGINS_NEWSLETTER_CONTENT_EDITCATEGORYACTION_DISABLED</selection-description-empty>
<icon-glyph>ametysicon-catalog2</icon-glyph>
<icon-decorator>decorator-ametysicon-edit45</icon-decorator>
<icon-decorator-type>action-edit</icon-decorator-type>
<icon-small file="true">img/category/edit_16.png</icon-small>
<icon-medium file="true">img/category/edit_32.png</icon-medium>
<icon-large file="true">img/category/edit_48.png</icon-large>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/category/CategoryActions.js</file>
</scripts>
<right context-prefix="/cms">Plugins_Newsletter_Right_HandleCategory</right>
</extension>

org.ametys.newsletter.category.Delete

Associated java class:
org.ametys.core.ui.StaticClientSideElement

Associated javascript class:
Ametys.ribbon.element.ui.ButtonController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.category.Delete" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.core.ui.StaticClientSideElement">
<class name="Ametys.ribbon.element.ui.ButtonController">
<action>Ametys.plugins.newsletter.category.CategoryActions.deleteCategory</action>
<selection-target-id>^newsletter-category$</selection-target-id>
<selection-target-parameter>
<name>^mode$</name>
<value>^write$</value>
</selection-target-parameter>
<label i18n="true">PLUGINS_NEWSLETTER_UITOOL_CATEGORY_DELETE_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_UITOOL_CATEGORY_DELETE_DESC</default-description>
<selection-description-nomatch i18n="true">PLUGINS_NEWSLETTER_CONTENT_EDITCATEGORYACTION_DISABLED</selection-description-nomatch>
<selection-description-empty i18n="true">PLUGINS_NEWSLETTER_CONTENT_EDITCATEGORYACTION_DISABLED</selection-description-empty>
<icon-glyph>ametysicon-catalog2</icon-glyph>
<icon-decorator>decorator-ametysicon-delete30</icon-decorator>
<icon-decorator-type>action-remove</icon-decorator-type>
<icon-small file="true">img/category/delete_16.png</icon-small>
<icon-medium file="true">img/category/delete_32.png</icon-medium>
<icon-large file="true">img/category/delete_48.png</icon-large>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/category/CategoryActions.js</file>
</scripts>
<right context-prefix="/cms">Plugins_Newsletter_Right_HandleCategory</right>
</extension>

org.ametys.newsletter.templatesmenu

Associated java class:
org.ametys.plugins.newsletter.category.TemplatesMenu

Associated javascript class:
Ametys.plugins.newsletter.controller.TemplateMenuController

Extension point extended:
org.ametys.core.ui.RibbonControlsManager

Configuration:

<extension id="org.ametys.newsletter.templatesmenu" point="org.ametys.core.ui.RibbonControlsManager" class="org.ametys.plugins.newsletter.category.TemplatesMenu">
<class name="Ametys.plugins.newsletter.controller.TemplateMenuController">
<selection-target-id>^newsletter-category$</selection-target-id>
<label i18n="true">PLUGINS_NEWSLETTER_CATEGORY_TEMPLATESMENU_LABEL</label>
<default-description i18n="true">PLUGINS_NEWSLETTER_CATEGORY_TEMPLATESMENU_DESCRIPTION</default-description>
<icon-glyph>ametysicon-column3</icon-glyph>
<icon-small file="true">img/category/template_16.png</icon-small>
<icon-medium file="true">img/category/template_32.png</icon-medium>
<icon-large file="true">img/category/template_48.png</icon-large>
<items-config>
<action>Ametys.plugins.newsletter.category.CategoryActions.setTemplate</action>
<parent-controller>org.ametys.newsletter.templatesmenu</parent-controller>
</items-config>
</class>
<scripts>
<file>js/Ametys/plugins/newsletter/controller/TemplateMenuController.js</file>
<file>js/Ametys/plugins/newsletter/category/CategoryActions.js</file>
</scripts>
<right context-prefix="/cms">Plugins_Newsletter_Right_HandleCategory</right>
</extension>

newsletter/org.ametys.newsletter.sql.init

Extensions:

org.ametys.newsletter.SqlTablesInit

Associated java class:
org.ametys.core.script.SqlTablesInit

Extension point extended:
org.ametys.runtime.plugin.InitExtensionPoint

Configuration:

<extension point="org.ametys.runtime.plugin.InitExtensionPoint" id="org.ametys.newsletter.SqlTablesInit" class="org.ametys.core.script.SqlTablesInit">
<datasource type="config">plugins.newsletters.datasource</datasource>
<script testTable="Newsletter_Subscribers">newsletter.sql</script>
</extension>

newsletter/org.ametys.plugins.newsletter.ribbon.imports

Extensions:

org.ametys.plugins.newsletter.ribbon.Imports

Associated java class:
org.ametys.core.ui.StaticRibbonImportManager

Extension point extended:
org.ametys.core.ui.RibbonImportManager

Configuration:

<extension id="org.ametys.plugins.newsletter.ribbon.Imports" point="org.ametys.core.ui.RibbonImportManager" class="org.ametys.core.ui.StaticRibbonImportManager">
<workspace match="cms|web">
<file>cms-ribbon.xml</file>
</workspace>
</extension>