Azioni sul documento
Analisi e modifica del profilo di Generic Setup
Cosa paster non fa
Se nella maggior parte dei casi paster ci permette di non mettere mano ai file XML nel profilo di Generic Setup generato, ma il nostro è un caso particolare.
Fondamentalmente stiamo andando a descrivere il nostro nuovo tipo come se fosse uno dei tipi base Plone. Il consiglio in questo caso è quindi quello di ignorare ciò che paster ha generato e partire dalla descrizione originale.
Le definizioni dei tipi base di Plone sono nel profilo di Generci Setup del prodotto CMFPlone. Nel nostro caso specifico Products.CMFPlone/Products/CMFPlone/profiles/default/types/Link.xml.
Dopo aver sostituito il contenuto del nostro Link.xml con quello originale di Plone, effettuiamo le modifiche qui sotto che analizzeremo subito dopo.
<?xml version="1.0"?>
<object name="Link"
meta_type="Factory-based Type Information with dynamic views"
i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<property name="title" i18n:translate="">Link</property>
<property name="description"
i18n:translate="">A link to an internal or external resource.</property>
<property name="content_icon">link_icon.gif</property>
<property name="content_meta_type">ATLink</property>
<property name="product">collective.popuplink</property>
<property name="factory">addPopupLink</property>
<property name="immediate_view">link_redirect_view</property>
<property name="global_allow">True</property>
<property name="filter_content_types">True</property>
<property name="allowed_content_types"/>
<property name="allow_discussion">False</property>
<property name="default_view">link_redirect_view</property>
<property name="view_methods">
<element value="link_redirect_view"/>
</property>
<alias from="(Default)" to="(dynamic view)"/>
<alias from="edit" to="atct_edit"/>
<alias from="sharing" to="@@sharing"/>
<alias from="view" to="(selected layout)"/>
<action title="View" action_id="view" category="object" condition_expr=""
url_expr="string:${object_url}" visible="True"
i18n:attributes="title">
<permission value="View"/>
</action>
<action title="Edit" action_id="edit" category="object" condition_expr="not:object/@@plone_lock_info/is_locked_for_current_user|python:True"
url_expr="string:${object_url}/edit" visible="True"
i18n:attributes="title">
<permission value="Modify portal content"/>
</action>
<action title="References" action_id="references" category="object"
condition_expr="object/archetype_tool/has_graphviz"
url_expr="string:${object_url}/reference_graph" visible="True"
i18n:attributes="title">
<permission value="Modify portal content"/>
<permission value="Review portal content"/>
</action>
<action title="External Edit" action_id="external_edit" category="object"
condition_expr="object/externalEditorEnabled"
url_expr="string:${object_url}/external_edit" visible="False"
i18n:attributes="title">
<permission value="Modify portal content"/>
</action>
</object>
Analisi delle modifiche
- L'unica modifica (importante) è cambiare la property con attributo name="product" in quella che paster aveva generato (il namespace del nostro prodotto).
- La property con attributo name="factory" viene cambiata (torneremo alla sezione successiva sulla cosa).
- Gli attributi relativi all'internazionalizzazione (i18n:domain) rimangono a valore "plone". Questo ci permette di sfruttare le traduzioni originali!

twitter
