Commit 7015185e authored by Alexander Emmerich's avatar Alexander Emmerich

erp5_forum_tutorial: Add forum tutorial

parent e274b020
......@@ -50,10 +50,6 @@
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
......
......@@ -50,10 +50,6 @@
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
......@@ -77,7 +73,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DiscussionModuleThread_viewAddThreadDialog</string> </value>
<value> <string>string:${object_url}/DiscussionThreadModule_viewAddThreadDialog</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -48,10 +48,6 @@
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
......
......@@ -50,10 +50,6 @@
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
......
......@@ -48,10 +48,6 @@
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
......
<local_roles_item>
<local_roles>
<role id='ADM'>
<item>Auditor</item>
<item>Author</item>
</role>
<role id='USR'>
<item>Auditor</item>
<item>Author</item>
</role>
<role id='VSR'>
<role id='VST'>
<item>Auditor</item>
</role>
<role id='lm1tnw5i0d'>
<item>Owner</item>
</role>
</local_roles>
</local_roles_item>
\ No newline at end of file
<local_roles_item>
<local_roles>
<role id='ADM'>
<item>Auditor</item>
</role>
<role id='USR'>
<item>Auditor</item>
</role>
<role id='VSR'>
<item>Auditor</item>
</role>
<role id='lm1tnw5i0d'>
<item>Owner</item>
</role>
</local_roles>
</local_roles_item>
\ No newline at end of file
......@@ -79,7 +79,6 @@
<role>Assignor</role>
<role>Associate</role>
<role>Auditor</role>
<role>Author</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
......
......@@ -26,7 +26,7 @@
</item>
<item>
<key> <string>codification</string> </key>
<value> <string>FRN</string> </value>
<value> <string>FRM</string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -36,10 +36,6 @@
<key> <string>id</string> </key>
<value> <string>forum</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Forum</string> </value>
......
......@@ -6,14 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>function/forum/administrator</string>
</tuple>
</value>
</item>
<item>
<key> <string>codification</string> </key>
<value> <string>ADM</string> </value>
......@@ -26,10 +18,6 @@
<key> <string>id</string> </key>
<value> <string>administrator</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Administrator</string> </value>
......
......@@ -18,10 +18,6 @@
<key> <string>id</string> </key>
<value> <string>user</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>User</string> </value>
......
......@@ -6,17 +6,9 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>function/forum/visitor</string>
</tuple>
</value>
</item>
<item>
<key> <string>codification</string> </key>
<value> <string>VSR</string> </value>
<value> <string>VST</string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -26,10 +18,6 @@
<key> <string>id</string> </key>
<value> <string>visitor</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Visitor</string> </value>
......
......@@ -2,4 +2,7 @@
<portal_type id="Discussion Post">
<item>TextDocument</item>
</portal_type>
<portal_type id="Discussion Thread">
<item>DiscussionThread</item>
</portal_type>
</property_sheet_list>
\ No newline at end of file
......@@ -6,7 +6,8 @@
<multi_property id='category'>function/forum/user</multi_property>
</role>
<role id='Auditor'>
<property id='title'>Visitor Forum</property>
<property id='title'>Visitor</property>
<property id='description'>Forum Visitors can view the discussion thread module and the public threads inside it.</property>
<multi_property id='category'>function/forum/visitor</multi_property>
</role>
</type_roles>
\ No newline at end of file
......@@ -6,9 +6,4 @@
<multi_property id='category'>function/forum/user</multi_property>
<multi_property id='category'>function/forum/administrator</multi_property>
</role>
<role id='Auditor'>
<property id='title'>Forum Visitor</property>
<property id='description'>Just a visitor.</property>
<multi_property id='category'>function/forum/visitor</multi_property>
</role>
</type_roles>
\ No newline at end of file
......@@ -6,25 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_property_domain_dict</string> </key>
<value>
<dictionary>
<item>
<key> <string>short_title</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>acquire_local_roles</string> </key>
<value> <int>1</int> </value>
......@@ -37,13 +18,7 @@
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>factory</string> </key>
<value> <string>addTextDocument</string> </value>
<value> <string>A post for a forum</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......@@ -62,53 +37,15 @@
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Base Type</string> </value>
<key> <string>type_class</string> </key>
<value> <string>TextDocument</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>domain_name</string> </key>
<key> <string>type_interface</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>property_name</string> </key>
<value> <string>short_title</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<tuple>
<global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>domain_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>property_name</string> </key>
<value> <string>title</string> </value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -8,30 +8,19 @@
<dictionary>
<item>
<key> <string>_property_domain_dict</string> </key>
<value>
<dictionary>
<item>
<key> <string>short_title</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>content_icon</string> </key>
<value> <string>folder_icon.gif</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>factory</string> </key>
......@@ -45,28 +34,16 @@
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string>document_icon.gif</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Discussion Thread Module</string> </value>
</item>
<item>
<key> <string>immediate_view</string> </key>
<value> <string>Folder_view</string> </value>
</item>
<item>
<key> <string>init_script</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>meta_type</string> </key>
<value> <string>ERP5 Folder</string> </value>
</item>
<item>
<key> <string>permission</string> </key>
<value>
......@@ -74,26 +51,49 @@
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Base Type</string> </value>
<key> <string>type_class</string> </key>
<value> <string>Folder</string> </value>
</item>
<item>
<key> <string>product</string> </key>
<value> <string>ERP5Type</string> </value>
<key> <string>type_interface</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>type_class</string> </key>
<value> <string>Folder</string> </value>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>short_title</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<tuple>
<global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
......@@ -108,12 +108,9 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<tuple>
<global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
......
......@@ -7,160 +7,47 @@
<pickle>
<dictionary>
<item>
<key> <string>_property_domain_dict</string> </key>
<value>
<dictionary>
<item>
<key> <string>short_title</string> </key>
<key> <string>content_icon</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<key> <string>description</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
<none/>
</value>
</item>
<item>
<key> <string>acquire_local_roles</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>content_icon</string> </key>
<value> <string>None</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>ERP5 default document. Supports synchronisation and XML.</string> </value>
</item>
<item>
<key> <string>factory</string> </key>
<value> <string>addXMLObject</string> </value>
</item>
<item>
<key> <string>filter_content_types</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string>document_icon.gif</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Discussion Thread</string> </value>
</item>
<item>
<key> <string>id_generator</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id_group</string> </key>
<value> <string>None</string> </value>
</item>
<item>
<key> <string>immediate_view</string> </key>
<value> <string>XMLObject_view</string> </value>
</item>
<item>
<key> <string>init_script</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>meta_type</string> </key>
<value> <string>ERP5 XML Object</string> </value>
</item>
<item>
<key> <string>permission</string> </key>
<value> <string>View</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Base Type</string> </value>
</item>
<item>
<key> <string>product</string> </key>
<value> <string>ERP5Type</string> </value>
</item>
<item>
<key> <string>searchable_text_method_id</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>searchable_text_property_id</string> </key>
<value>
<tuple>
<string>title</string>
<string>description</string>
<string>id</string>
<string>reference</string>
<string>short_title</string>
</tuple>
</value>
</item>
<item>
<key> <string>short_title</string> </key>
<value> <string>None</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>domain_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>property_name</string> </key>
<value> <string>short_title</string> </value>
<key> <string>type_class</string> </key>
<value> <string>XMLObject</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<tuple>
<global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>domain_name</string> </key>
<key> <string>type_interface</string> </key>
<value>
<none/>
<tuple/>
</value>
</item>
<item>
<key> <string>property_name</string> </key>
<value> <string>title</string> </value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -18,7 +18,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
<value> <string>ERP5 Forum</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -6,31 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
......@@ -41,6 +16,10 @@
<key> <string>action</string> </key>
<value> <string>Base_edit</string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
......@@ -98,8 +77,8 @@
<value>
<list>
<string>my_title</string>
<string>my_text_content</string>
<string>my_source_title</string>
<string>my_text_content</string>
</list>
</value>
</item>
......
......@@ -81,6 +81,10 @@
<key> <string>container_getter_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>context_getter_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
......@@ -129,6 +133,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value> <string></string> </value>
......@@ -240,6 +248,10 @@
<key> <string>container_getter_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>context_getter_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
......@@ -288,6 +300,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value> <string></string> </value>
......@@ -385,7 +401,7 @@
</item>
<item>
<key> <string>base_category</string> </key>
<value> <string>Source</string> </value>
<value> <string>source</string> </value>
</item>
<item>
<key> <string>catalog_index</string> </key>
......@@ -401,6 +417,10 @@
<key> <string>container_getter_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>context_getter_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
......@@ -449,6 +469,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
......@@ -486,7 +510,7 @@
<value>
<list>
<tuple>
<string>person</string>
<string>Person</string>
<string>Person</string>
</tuple>
</list>
......
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......
person = context.getPortalObject().portal_membership.getAuthenticatedMember().getUserValue()
person = context.ERP5Site_getAuthenticatedMemberPersonValue
discussion_post = context.newContent(
title=title,
......@@ -6,8 +6,8 @@ discussion_post = context.newContent(
source_value=person,
portal_type='Discussion Post'
)
if batch_mode:
return discussion_post
#if batch_mode:
#return discussion_post
translateString = context.Base_translateString
......
......@@ -50,12 +50,16 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>title, text_content, form_id, batch_mode=False, **kw</string> </value>
<value> <string>title, text_content, form_id, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>DiscussionThreadModule_addReply</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Add Reply</string> </value>
</item>
</dictionary>
</pickle>
</record>
......
person = context.getPortalObject().portal_membership.getAuthenticatedMember().getUserValue()
person = context.ERP5Site_getAuthenticatedMemberPersonValue()
translateString = context.Base_translateString
discussion_thread = context.newContent(
title=title,
text_content=text_content,
subject_list=subject_list,
portal_type='Discussion Thread'
)
discussion_post = discussion_thread.newContent(
......@@ -18,9 +19,9 @@ portal_status_message = translateString(
'New post created. Your post will be reviewed for approval..'
)
if batch_mode:
#if batch_mode:
# For unit tests
return discussion_thread
# return discussion_thread
return discussion_thread.Base_redirect('view',
keep_items = dict(portal_status_message=portal_status_message), **kw)
......@@ -50,12 +50,16 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>title, text_content, form_id, batch_mode=False, **kw</string> </value>
<value> <string>title, text_content, subject_list, form_id, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>DiscussionThreadModule_addThread</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Add Thread</string> </value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -6,31 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
......@@ -41,6 +16,10 @@
<key> <string>action</string> </key>
<value> <string>DiscussionThreadModule_addReply</string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
......@@ -97,8 +76,8 @@
<key> <string>left</string> </key>
<value>
<list>
<string>my_title</string>
<string>my_text_content</string>
<string>your_title</string>
<string>your_text_content</string>
</list>
</value>
</item>
......
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......
......@@ -6,31 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
......@@ -41,9 +16,13 @@
<key> <string>action</string> </key>
<value> <string>DiscussionThreadModule_addThread</string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Use this dialog to create a reply and associate it with a post.</string> </value>
<value> <string>Use this dialog to create a post and associate it with a thread</string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
......@@ -105,7 +84,9 @@
<item>
<key> <string>right</string> </key>
<value>
<list/>
<list>
<string>your_subject_list</string>
</list>
</value>
</item>
</dictionary>
......@@ -113,7 +94,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>DiscussionModuleThread_viewAddThreadDialog</string> </value>
<value> <string>DiscussionThreadModule_viewAddThreadDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
......@@ -137,7 +118,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>New Post</string> </value>
<value> <string>New Threads</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
......
......@@ -2,13 +2,13 @@
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="StringField" module="Products.Formulator.StandardFields"/>
<global name="TextAreaField" module="Products.Formulator.StandardFields"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_text_content</string> </value>
<value> <string>your_subject_list</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -18,13 +18,21 @@
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>line_too_long</string> </key>
<value> <string>A line was too long.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
<value> <string>You entered too many characters.</string> </value>
</item>
<item>
<key> <string>too_many_lines</string> </key>
<value> <string>You entered too many lines.</string> </value>
</item>
</dictionary>
</value>
......@@ -49,14 +57,6 @@
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
......@@ -73,6 +73,10 @@
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
......@@ -82,15 +86,19 @@
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
......@@ -101,6 +109,10 @@
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
......@@ -124,14 +136,6 @@
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
......@@ -148,6 +152,10 @@
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
......@@ -157,15 +165,19 @@
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
......@@ -176,6 +188,10 @@
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
......@@ -199,14 +215,6 @@
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
......@@ -223,6 +231,10 @@
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
......@@ -232,17 +244,21 @@
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Text Content</string> </value>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Subject List</string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
......@@ -251,6 +267,10 @@
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>40</int> </value>
</item>
</dictionary>
</value>
</item>
......
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_text_content</string> </value>
<value> <string>your_text_content</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -237,7 +249,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Text Content</string> </value>
<value> <string>Content</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
......
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_title</string> </value>
<value> <string>your_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......
......@@ -6,31 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
......@@ -41,6 +16,10 @@
<key> <string>action</string> </key>
<value> <string>Base_doSelect</string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
......
......@@ -12,7 +12,6 @@
<list>
<string>columns</string>
<string>selection_name</string>
<string>sort</string>
<string>title</string>
</list>
</value>
......@@ -44,10 +43,6 @@
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
......@@ -63,10 +58,6 @@
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
......@@ -83,7 +74,7 @@
<string>Title</string>
</tuple>
<tuple>
<string>translated_validation_state</string>
<string>translated_validation_state_title</string>
<string>State</string>
</tuple>
<tuple>
......@@ -124,21 +115,6 @@
<key> <string>selection_name</string> </key>
<value> <string>discussion_thread_module_selection</string> </value>
</item>
<item>
<key> <string>sort</string> </key>
<value>
<list>
<tuple>
<string>Date</string>
<string>asc</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Discussion Threads</string> </value>
......
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -154,6 +158,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -229,6 +237,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -261,10 +273,7 @@
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
......
......@@ -6,31 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
......@@ -41,6 +16,10 @@
<key> <string>action</string> </key>
<value> <string>Base_edit</string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
......@@ -84,15 +63,15 @@
<item>
<key> <string>center</string> </key>
<value>
<list>
<string>my_listbox</string>
</list>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
<list>
<string>my_subject_list_test</string>
</list>
</value>
</item>
<item>
......@@ -101,7 +80,7 @@
<list>
<string>my_title</string>
<string>my_rating</string>
<string>my_text_content</string>
<string>my_listbox</string>
</list>
</value>
</item>
......@@ -109,7 +88,8 @@
<key> <string>right</string> </key>
<value>
<list>
<string>my_translated_validation_state</string>
<string>my_translated_validation_state_title</string>
<string>my_subject_list</string>
</list>
</value>
</item>
......
......@@ -94,15 +94,11 @@
<value> <string></string> </value>
</item>
<item>
<key> <string>full_text_search_key</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>full_text_search_key_script</string> </key>
<key> <string>global_attributes</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>global_attributes</string> </key>
<key> <string>global_search_column</string> </key>
<value> <string></string> </value>
</item>
<item>
......@@ -130,7 +126,7 @@
<value> <string></string> </value>
</item>
<item>
<key> <string>page_navigation_mode</string> </key>
<key> <string>page_navigation_template</string> </key>
<value> <string></string> </value>
</item>
<item>
......@@ -185,6 +181,10 @@
<key> <string>stat_method</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>style_columns</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
......@@ -269,15 +269,11 @@
<value> <string></string> </value>
</item>
<item>
<key> <string>full_text_search_key</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>full_text_search_key_script</string> </key>
<key> <string>global_attributes</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>global_attributes</string> </key>
<key> <string>global_search_column</string> </key>
<value> <string></string> </value>
</item>
<item>
......@@ -305,7 +301,7 @@
<value> <string></string> </value>
</item>
<item>
<key> <string>page_navigation_mode</string> </key>
<key> <string>page_navigation_template</string> </key>
<value> <string></string> </value>
</item>
<item>
......@@ -360,6 +356,10 @@
<key> <string>stat_method</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>style_columns</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
......@@ -409,6 +409,10 @@
<string>rating</string>
<string>Rating</string>
</tuple>
<tuple>
<string>creation_date</string>
<string>Date</string>
</tuple>
</list>
</value>
</item>
......@@ -470,20 +474,16 @@
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>full_text_search_key</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>full_text_search_key_script</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>global_attributes</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>global_search_column</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
......@@ -513,12 +513,12 @@
</value>
</item>
<item>
<key> <string>page_navigation_mode</string> </key>
<value> <string>slider</string> </value>
<key> <string>page_navigation_template</string> </key>
<value> <string>ListBox_viewSliderPageNavigationRenderer</string> </value>
</item>
<item>
<key> <string>page_template</string> </key>
<value> <string>ListBox_ThreadAsHTML</string> </value>
<value> <string>ListBox_threadAsHTML</string> </value>
</item>
<item>
<key> <string>portal_types</string> </key>
......@@ -556,12 +556,17 @@
</item>
<item>
<key> <string>selection_name</string> </key>
<value> <string>search_selection</string> </value>
<value> <string></string> </value>
</item>
<item>
<key> <string>sort</string> </key>
<value>
<list/>
<list>
<tuple>
<string>Date</string>
<string>asc</string>
</tuple>
</list>
</value>
</item>
<item>
......@@ -580,6 +585,12 @@
<key> <string>stat_method</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>style_columns</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Threads</string> </value>
......@@ -604,10 +615,7 @@
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="Method" module="Products.Formulator.MethodField"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
......@@ -620,10 +628,7 @@
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<tuple>
<global name="Method" module="Products.Formulator.MethodField"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
......
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>my_subject_list</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_view_mode_subject_list</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewDMSFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Subject List</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="LinesField" module="Products.Formulator.StandardFields"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_subject_list_test</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>line_too_long</string> </key>
<value> <string>A line was too long.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>You entered too many characters.</string> </value>
</item>
<item>
<key> <string>too_many_lines</string> </key>
<value> <string>You entered too many lines.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>view_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>view_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Subject Liste</string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>view_separator</string> </key>
<value> <string encoding="cdata"><![CDATA[
<br />
]]></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>30</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_translated_validation_state</string> </value>
<value> <string>my_translated_validation_state_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -77,6 +77,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -152,6 +156,10 @@
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......@@ -209,7 +217,7 @@
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
......@@ -227,6 +235,10 @@
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ListBox_asSearchStyleHTML</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Listboxes in search engine style</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<tal:block metal:define-macro="main"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
tal:define="listbox_max_lines python: int(here.getMaxLineNumber());
total_line python: int(here.total_size);
current_page python: int(here.current_page) + 1;
current_page_max python: listbox_max_lines * current_page;
current_page_start python: (listbox_max_lines * (current_page - 1)) + 1;
current_page_stop python: (total_line < current_page_max) and total_line or current_page_max;
your_search_text python:here.getParamDict().get('your_search_text', None)">
<!-- ListBox (search mode) starts here. -->
<input type="hidden"
name="list_selection_name"
value="default"
tal:attributes="value selection_name" />
<input tal:condition="md5_string"
type="hidden"
name="md5_object_uid_list"
value="checksum"
tal:attributes="value md5_string" />
<input type="hidden" name="listbox_uid" value="1"/>
<input tal:condition="python:form_id and is_gadget_mode" type="hidden" name="gadget_form_id" tal:attributes="value form_id" />
<tal:block tal:define="expand python: 1;
date_renderer python: context.getContext().ERP5Site_viewSearchResult.listbox_modification_date.render_pdf;">
<tal:block metal:use-macro="template/macros/ListBoxContainer">
<tal:block metal:fill-slot="ListBoxBody">
<div class="search result">
<!-- Advanced Search header -->
<div class="centeredInner searchBar extendedSearchBar"
tal:define="search_default_text python:context.getContext().Base_translateString('Search')"
tal:condition="python:not is_gadget_mode and show_search_line">
<input name="top_your_search_text" size="40" value="" type="text"
value="Search" tal:attributes="value your_search_text | search_default_text;
onfocus string:if (this.value=='${search_default_text}') this.value='';"
onfocus="this.value='';"
onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_processAdvancedSearch');"/>
<input class="button" i18n:domain="ui" i18n:attributes="value"
value="Search" name="ERP5Site_processAdvancedSearch:method" type="submit" />
</div>
<!-- Result Header -->
<div class="resultList">
<div class="searchResultHeader" >
<span class="left"
tal:define="table_form_id request/current_form_id | form_id">
<a tal:condition="not:is_gadget_mode"
tal:attributes="href string:${context_url}/${table_form_id}?list_style=table">
<img id="style_toggle_icon"
tal:attributes="src string:${portal_url_string}/images/search_style_icon.png"
alt="Search Icon"
height="16"
title="Table mode"
i18n:domain="ui" i18n:attributes="title"/>
</a>
<input tal:condition="python:not is_gadget_mode and (is_domain_tree_supported or is_report_tree_supported)"
type="image" src="text_block.png" id="listbox_flat_list_mode"
title="Flat List" name="setFlatListMode:method"
value="1" alt="Flat List"
tal:attributes="src string:${portal_url_string}/images/text_block.png;
id string:${field_id}_flat_list_mode"
i18n:domain="ui" i18n:attributes="title" />
<input tal:condition="python: not is_gadget_mode and is_report_tree_supported"
type="image" src="view_tree.png" id="listbox_report_tree_mode"
title="Report Tree" name="setReportTreeMode:method"
value="1" alt="Report Tree"
tal:attributes="src string:${portal_url_string}/images/view_tree.png;
id string:${field_id}_report_tree_mode"
i18n:domain="ui" i18n:attributes="title" />
<input tal:condition="python: not is_gadget_mode and is_domain_tree_supported"
type="image" src="view_choose.png" id="listbox_domain_tree_mode"
title="Domain Tree" name="setDomainTreeMode:method"
value="1" alt="Domain Tree"
tal:attributes="src string:${portal_url_string}/images/view_choose.png;
id string:${field_id}_domain_tree_mode"
i18n:domain="ui" i18n:attributes="title" />
<input tal:condition="python:not is_gadget_mode and (is_domain_tree_supported or is_report_tree_supported)"
type="image" src="images/showall.png" id="listbox_reset_selection"
title="Show All" name="Folder_show:method"
id="listbox_reset_selection"
value="1" alt="Flat List"
tal:attributes="src string:${portal_url_string}/images/showall.png;"
i18n:domain="ui" i18n:attributes="title" />
<!-- supporting table mode for gadget mode -->
<button tal:condition="is_gadget_mode"
tal:define = "params python: {'list_style':'table'}"
title="Table mode"
type="button"
tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+table_form_id,box,box_id,params);"
i18n:domain="ui" i18n:attributes="title">
<img id="style_toggle_icon"
alt="Table Mode Icon"
tal:attributes="src string:${portal_url_string}/images/search_style_icon.png"
height="16"/>
</button>
<a tal:attributes="id string:${field_id}_title; href here/getListActionUrl"
tal:condition="python: here.field.get_value('list_action')">
<em i18n:translate=""
i18n:domain="ui" tal:content="here/getTitle" />
</a>
<tal:block tal:condition="python: not here.field.get_value('list_action')">
<em i18n:translate=""
i18n:domain="ui" tal:content="here/getTitle" />
</tal:block>
<!-- supporting domain tree mode for gadget mode (disabled)-->
<!--
<br tal:condition="is_gadget_mode"/>
<button tal:condition="python: is_gadget_mode and (is_domain_tree_supported or is_report_tree_supported)"
tal:define = "params python: {'setFlatListMode:method':1}"
id="listbox_flat_list_mode"
type="button"
title="Flat List"
alt="Flat List"
tal:attributes="id string:${field_id}_flat_list_mode;
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,box_id,params);"
i18n:domain="ui" i18n:attributes="title">
<img src="text_block.png"
tal:attributes="src string:${portal_url_string}/images/text_block.png;"/></button>
<button tal:condition="python: is_gadget_mode and is_report_tree_supported"
tal:define = "params python: {'setReportTreeMode:method':1}"
style="cursor:pointer;" id="listbox_report_tree_mode"
type="button"
title="Report Tree"
alt="Report Tree"
tal:attributes="id string:${field_id}_report_tree_mode;
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,box_id,params);"
i18n:domain="ui" i18n:attributes="title">
<img src="view_tree.png"
tal:attributes="src string:${portal_url_string}/images/view_tree.png;"/></button>
<button tal:condition="python: is_gadget_mode and is_domain_tree_supported"
tal:define = "params python: {'setDomainTreeMode:method':'1'}"
style="cursor:pointer;" id="listbox_domain_tree_mode"
type="button"
title="Domain Tree"
alt="Domain Tree"
tal:attributes="id string:${field_id}_domain_tree_mode;
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,box_id,params);"
i18n:domain="ui" i18n:attributes="title">
<img src="view_choose.png"
tal:attributes="src string:${portal_url_string}/images/view_choose.png;"/></button>
-->
</span>
<span class="right">
<tal:block tal:condition="python: total_line > 0"
tal:replace="structure python: real_context.Base_translateString('Results <em>${start} - ${stop}</em> of <em>${total}</em>.', mapping=dict(start=current_page_start, stop=current_page_stop, total=total_line))"/>
<span tal:condition="python: total_line == 0"
class="warning"
i18n:translate=""
i18n:domain="ui">No result !</span>
</span>
<div class="clear"></div>
</div>
<!-- Found results -->
<tal:block
tal:condition="is_web_mode">
<tal:block tal:define="global website python: real_context.getWebSiteValue()" />
</tal:block>
<table cellpadding="0" cellspacing="0" class="listbox search">
<tal:block tal:repeat="line line_list">
<tr tal:define="css python: test(repeat['line'].index % 2, 'DataB', 'DataA');
obj line/getObject;
url obj/absolute_url;
portal_type obj/getPortalType;
is_document python:portal_type in
real_context.getPortalDocumentTypeList() and portal_type != 'Web Page';
hidden_pop_dom_id string:dom_popup_${field_id}_${repeat/line/index};
details_dom_id string:${field_id}_search_details_${repeat/line/index};"
tal:attributes="id string:${field_id}_data_line_${repeat/line/index};
class python: '%s tbody' % css;">
<td class="icon">
<a tal:condition="is_document"
tal:attributes="href string: ${url}/Base_download"
i18n:translate=""
i18n:domain="ui"
title="Download Document">
<img tal:attributes="src obj/getIcon"
alt="Document Icon"/>
</a>
<img tal:condition="not: is_document"
tal:attributes="src obj/getIcon"
alt="Object Icon"
/>
</td>
<td>
<div class="item_nohighlight"
tal:attributes="onmouseover python: is_web_mode and 'showPopik(\'%s\', true)' % hidden_pop_dom_id or None;
onmouseout python: is_web_mode and 'showPopik(\'%s\', false)' % hidden_pop_dom_id or None;">
<div class="search_popup"
style="z-index:100;"
tal:condition="is_web_mode"
tal:attributes="id hidden_pop_dom_id">
<span tal:replace="structure python: obj.Document_getPopupInfo(website)"/>
</div>
<div>
<a tal:attributes="href string:${url}/view">
<span class="search_result_title" tal:content="python: obj.getTitle() or (hasattr(obj, 'getReference') and obj.getReference()) or obj.getId()" />
<span class="search_result_portal_type" tal:condition="python:portal_type != 'Web Page'" tal:content="obj/getTranslatedPortalType" />
</a>
</div>
<span class="searchDetails found"
tal:content="structure python: obj.Base_showFoundText(selection=selection)"/>
<div tal:condition="is_web_mode"
class="searchDetails coordinates">
<tal:block tal:condition="obj/getReference|nothing">
<a tal:attributes="href python: '%s/view' % website.getPermanentURL(obj)"
tal:content="obj/getReference|nothing"/>&nbsp;-&nbsp;
</tal:block>
<tal:block tal:repeat="section python: website.getWebSectionValueList(obj)">
<a href="#"
tal:content="section/getCompactTranslatedTitle"
tal:attributes="href python: '%s/view' %section.absolute_url()"/>
&nbsp;-&nbsp;
</tal:block>
<tal:block tal:repeat="owner obj/Base_getOwnerInfoList">
<a tal:content="owner/title"
tal:attributes="href owner/url"/>
&nbsp;-&nbsp;
</tal:block>
<a tal:content="python: date_renderer(obj.getModificationDate())"
tal:attributes="href string: ${url}/Base_viewHistory"/>
</div>
<div tal:condition="not: is_web_mode"
class="searchDetails coordinates">
<tal:block tal:condition="obj/getReference|nothing">
<a tal:attributes="href string: ${url}/view"
tal:content="obj/getReference|nothing"/>&nbsp;-&nbsp;
</tal:block>
<a tal:content="python: date_renderer(obj.getModificationDate())"
tal:attributes="href string: ${url}/Base_viewHistory"/>
</div>
</div>
</td>
</tr>
</tal:block>
<tr>
<td class="pageNavigation" colspan="2" style="white-space: nowrap; vertical-align: middle; text-align: right;">
<tal:block metal:use-macro="real_context/page_navigation_render/macros/page_navigation" />
</td>
</tr>
</table>
</div>
<!-- Advanced Search footer -->
<div class="centeredInner searchBar extendedSearchBar"
tal:condition="python: not is_gadget_mode and show_search_line">
<input name="bottom_your_search_text" size="40" value="" type="text"
onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_processAdvancedSearchBottom');"
tal:attributes="value your_search_text" />
<input class="button" i18n:domain="ui" i18n:attributes="value"
value="Search" name="ERP5Site_processAdvancedSearchBottom:method" type="submit" />
</div>
<!-- Advanced Search footer for gadgets -->
<div class="centeredInner searchBar extendedSearchBar"
tal:condition="python: is_gadget_mode and show_search_line">
<input tal:define ="params python: {'ERP5Site_processAdvancedSearchBottom:method':'','bottom_your_search_text':'this.value'};"
name="bottom_your_search_text" size="25" value="" type="text"
tal:attributes='value your_search_text;
onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url+"/"+form_id,box,box_id,params).replace("\"this.value\"","this.value")+ "return false;;}"'/>
</div>
</div>
</tal:block>
</tal:block>
</tal:block>
<!-- ListBox ends here. -->
</tal:block>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ListBox_asStandardHTML</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<tal:block metal:define-macro="main"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<tal:block tal:define="expand python: 1">
<tal:block metal:use-macro="template/macros/ListBoxContainer">
<tal:block metal:fill-slot="ListBoxBody">
<div class="ListSummary">
<table cellpadding="0" cellspacing="0"
summary="This table contains the listbox headers">
<tr>
<td style="height: 10px">
<img src="Left.png" alt="left"
tal:attributes="src string:${portal_url_string}/images/Left.png" />
</td>
<td class="Top" colspan="2" style="height: 10px">
<img src="spacer.png" style="width: 5px; height: 10px;" alt="spacer"
tal:attributes="src string:${portal_url_string}/images/spacer.png" />
</td>
<td class="Top" colspan="3" style="height: 10px">
<img src="spacer.png" style="width: 5px; height: 10px" alt="spacer"
tal:attributes="src string:${portal_url_string}/images/spacer.png" />
</td>
</tr>
<tr id="listbox_title_line" class="listbox_title_line"
tal:attributes="id string:${field_id}_title_line">
<td class="Left" style="width: 17px">
<img src="spacer.png" style="width: 5px; height: 5px" alt="spacer"
tal:attributes="src string:${portal_url_string}/images/spacer.png" />
</td>
<td style="white-space: nowrap; vertical-align: middle"
tal:condition="not: is_gadget_mode">
<input tal:condition="python: is_domain_tree_supported or is_report_tree_supported"
type="image" src="text_block.png" id="listbox_flat_list_mode"
class="listbox_flat_list_mode"
title="Flat List" name="setFlatListMode:method"
value="1" alt="Flat List"
tal:attributes="src string:${portal_url_string}/images/text_block.png;
id string:${field_id}_flat_list_mode"
i18n:domain="ui" i18n:attributes="title" />
<input tal:condition="is_report_tree_supported"
type="image" src="view_tree.png" id="listbox_report_tree_mode"
title="Report Tree" name="setReportTreeMode:method"
value="1" alt="Report Tree" class="listbox_report_tree_mode"
tal:attributes="src string:${portal_url_string}/images/view_tree.png;
id string:${field_id}_report_tree_mode"
i18n:domain="ui" i18n:attributes="title" />
<input tal:condition="is_domain_tree_supported"
type="image" src="view_choose.png" id="listbox_domain_tree_mode"
title="Domain Tree" name="setDomainTreeMode:method"
value="1" alt="Domain Tree" class="listbox_domain_tree_mode"
tal:attributes="src string:${portal_url_string}/images/view_choose.png;
id string:${field_id}_domain_tree_mode"
i18n:domain="ui" i18n:attributes="title" />
</td>
<td style="width: 100%; vertical-align: middle">
&nbsp;
<a class="listbox_title"
tal:attributes="id string:${field_id}_title; href here/getListActionUrl"
tal:condition="python: here.field.get_value('list_action')">
<tal:block i18n:translate=""
i18n:domain="ui" tal:content="here/getTitle" />:
</a>
<tal:block tal:condition="python: not here.field.get_value('list_action')">
<span class="listbox_title" i18n:translate=""
i18n:domain="ui" tal:content="here/getTitle" />:
</tal:block>
<span id="listbox_record_number" class="listbox_record_number"
tal:attributes="id string:${field_id}_record_number"
i18n:translate="" i18n:domain="ui"><tal:block tal:replace="here/total_size" i18n:name="number">0</tal:block> records</span>
<span id="listbox_item_number" class="listbox_item_number"
tal:attributes="id string:${field_id}_item_number"
tal:condition="show_select_column"
i18n:translate="" i18n:domain="ui"> - <tal:block tal:replace="python: len(here.getCheckedUidList())" i18n:name="number">0</tal:block> items selected</span>
</td>
<td class="pageNavigation" style="white-space: nowrap; vertical-align: middle; text-align: center;">
<tal:block metal:use-macro="real_context/page_navigation_render/macros/page_navigation" />
</td>
</tr>
</table>
</div>
<div class="listbox">
<table cellpadding="0" cellspacing="0"
summary="This table contains the listbox content">
<tr id="listbox_label_line" class="listbox_label_line"
tal:attributes="id string:${field_id}_label_line">
<td tal:condition="is_report_tree_mode"
class="Data" style="width: 50px; text-align: left; vertical-align: middle">
<select name="report_root_url"
tal:attributes="onchange string:submitAction(this.form, '${context_url}/setReportRoot')">
<tal:block tal:repeat="c here/getReportRootList">
<option value="base_domain"
tal:define="path python: c[0]; title python: c[1]"
tal:attributes="selected python: path == here.getSelectedReportPath(); value path"
tal:content="title" i18n:domain="ui" i18n:translate="">Domain</option>
</tal:block>
</select>
</td>
<td class="AnchorColumn Data" tal:condition="show_anchor_column">&nbsp;</td>
<td tal:condition="show_select_column"
class="Data" style="width: 50px; text-align: center; vertical-align: middle">
<input id="listbox_check_all" type="image"
name="checkAll:method" value="1"
src="checkall.png" alt="Check All" title="Check All"
class="listbox_check_all"
tal:attributes="id string:${field_id}_check_all;
name string:${field_id}_checkAll:method;
src string:${portal_url_string}/images/checkall.png"
i18n:domain="ui" i18n:attributes="title" />&nbsp;<input id="listbox_uncheck_all" type="image" name="uncheckAll:method" value="1"
src="%(portal_url_string)s/images/decheckall.png" style="border: 0" alt="Uncheck All" title="Uncheck All" class="listbox_uncheck_all"
tal:attributes="id string:${field_id}_uncheck_all;
name string:${field_id}_uncheckAll:method;
src string:${portal_url_string}/images/decheckall.png"
i18n:domain="ui" i18n:attributes="title" />
</td>
<tal:block tal:repeat="value here/getLabelValueList">
<tal:block tal:define="sql python: value[0];
title python: value[1];
sort_order python: value[2]">
<td tal:condition="sql" class="Data">
<button type="submit" class="sort_button"
tal:condition="not: is_gadget_mode"
name="setSelectionQuickSortOrder:method"
tal:attributes="title string:${title};
value string:${field_id}.${sql}"
i18n:domain="ui" i18n:attributes="title">
<span tal:content="title" i18n:domain="ui" i18n:translate="">ID</span>
</button>
<button tal:condition="is_gadget_mode"
tal:define ="params python: {'setSelectionQuickSortOrder:method':field_id+'.'+sql};"
type="button" class="sort_button"
tal:attributes="title string:${title};
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box_relative_url,box_id,params);"
i18n:domain="ui" i18n:attributes="title">
<span tal:content="title" i18n:domain="ui" i18n:translate="">ID</span>
</button>
<img tal:condition="python: sort_order == 'ascending'"
src="1bottomarrow.png" alt="Ascending Display" title="Ascending Display"
tal:attributes="src string:${portal_url_string}/images/1bottomarrow.png"
i18n:domain="ui" i18n:attributes="title" />
<img tal:condition="python: sort_order == 'descending'"
src="1toparrow.png" alt="Descending Display" title="Descending Display"
tal:attributes="src string:${portal_url_string}/images/1toparrow.png"
i18n:domain="ui" i18n:attributes="title" />
</td>
<td tal:condition="not: sql" class="Data" tal:content="title"
i18n:domain="ui" i18n:translate="">
ID
</td>
</tal:block>
</tal:block>
</tr>
<tr tal:condition="python: show_search_line or is_report_tree_mode"
id="listbox_search_line" class="listbox_search_line"
tal:attributes="id python: show_search_line and ('%s_search_line' % field_id) or ('%s_report_depth_line' % field_id)">
<tal:block tal:condition="is_report_tree_mode">
<td class="Data" style="width: 50px; text-align: left; vertical-align: middle" colspan="1"
tal:attributes="colspan python: show_search_line and 1 or (len(here.getSelectedColumnList()) + show_select_column + show_anchor_column + 1)"
tal:define="selection_index here/getSelectionIndex;
index python: selection_index is not None and '&amp;selection_index=%s' % selection_index or '';
is_report_opened python: int(not here.getSelection().isReportOpened());
requested_selection_name here/getRequestedSelectionName;
url here/getUrl"><tal:block tal:repeat="i python: range(0, 6)">&nbsp;<a href="?selection_name=default&amp;selection_index=0&amp;report_depth:int=0"
tal:attributes="href string:${url}?selection_name=${requested_selection_name}${index}&amp;report_depth:int=${i}"
tal:content="i">0</a></tal:block>&nbsp;-&nbsp;<a href="?selection_name=default&amp;selection_index=0&amp;is_report_opened:int=0"
tal:attributes="href string:${url}?selection_name=${requested_selection_name}${index}&amp;is_report_opened:int=${is_report_opened}"
tal:content="python: is_report_opened and 'Show' or 'Hide'"
i18n:domain="ui" i18n:translate="">Show</a>
</td>
</tal:block>
<td class="AnchorColumn" tal:condition="show_anchor_column">&nbsp;</td>
<td tal:condition="python: show_select_column and show_search_line"
class="Data" style="width: 50px; text-align: center; vertical-align: middle">
<input id="listbox_select" type="image" src="exec16.png"
title="Action" alt="Action" name="Base_doSelect:method"
class="listbox_select"
tal:attributes="id string:${field_id}_select;
src string:${portal_url_string}/images/exec16.png"
i18n:domain="ui" i18n:attributes="title" />
</td>
<tal:block tal:condition="show_search_line"
tal:repeat="value here/getSearchValueList">
<td class="DataB" style="padding-right: 5px"
tal:define="alias python: value[0];
param python: value[1];
search_field python: value[2]">
<span tal:condition="alias" style="font-size: -3">
<tal:block tal:condition="python: search_field is not None"
tal:replace="structure python: search_field.render(value = param, key = alias)" />
<tal:block tal:condition="python: search_field is None">
<input tal:condition="not: is_gadget_mode" name="id" size="8" value=""
tal:attributes="name alias; value param" style="width: 100%"
onkeypress="submitFormOnEnter(event, this.form, 'Base_doSelect');" />
<input tal:condition="is_gadget_mode"
tal:define ="params python: {alias:'this.value'};"
size="8" type="textarea"
tal:attributes='value python: selection.getParams().get(alias,"");
onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url+"/"+form_id,box_relative_url,box_id,params).replace("\"this.value\"","this.value")+ "return false;;}"'/>
</tal:block>
</span>
</td>
</tal:block>
</tr>
<tal:block tal:repeat="line line_list" tal:define="checked_uid_set here/getCheckedUidSet">
<tr id="listbox_data_line_0" class="DataA"
tal:define="css python: line.getRowCSSClassName() or test(repeat['line'].index % 2, 'DataB', 'DataA');
render_result line/render;"
tal:attributes="id string:${field_id}_data_line_${repeat/line/index}; class css">
<td tal:condition="is_report_tree_mode" class="DataA" align="left" valign="middle"
tal:attributes="class css"
tal:define="section_name python: line.getDomainTitle()">
<a tal:condition="section_name"
tal:define="method_id python: line.isOpen() and 'foldReport' or 'unfoldReport'"
tal:attributes="href string:${method_id}?report_url=${line/getDomainUrl}&amp;form_id=${form_id}&amp;list_selection_name=${selection_name};
class python:test(line.isOpen(), 'tree_open', 'tree_closed');
style python:'white-space: nowrap;; margin-left: %spx' % (line.getDepth() * 15)"
tal:content="section_name"/>
</td>
<td class="AnchorColumn Data" tal:condition="python:show_anchor_column and len(render_result)" style="width: 20px;">
<a href="#" tal:attributes="href python:render_result[0][4]"><img src="document_icon.gif" alt="document" tal:attributes="src string:${portal_url_string}/images/line_clickable.png" /></a>
</td>
<td tal:condition="show_select_column"
class="DataA" style="width: 50px; text-align: center; vertical-align: middle"
tal:attributes="class css">
<input tal:condition="python: not line.isSummary() and line.getObject() is not None"
type="checkbox" value="checked" name="uids:list"
tal:attributes="checked python: line.getUid() in checked_uid_set;
value line/getUid;" />
<tal:block tal:condition="python: line.isSummary() or line.getObject() is None"></tal:block>
</td>
<tal:block tal:repeat="value render_result">
<td tal:define="html python: value[0];
original_value python: value[1];
error python: value[2]"
class="DataA" align="left"
tal:attributes="class python: error and (css + 'Error') or css;
align python: isinstance(original_value, (float, int, long)) and 'right' or 'left'">
<input tal:condition="not: repeat/value/index"
type="hidden" value="1" name="listbox_uid:list"
tal:attributes="value python: line.getUid() or '';
name string:${field_id}_uid:list" />
<span tal:replace="structure html">value</span>
</td>
</tal:block>
</tr>
</tal:block>
<tr tal:condition="hide_rows_on_no_search_criterion"
class="listbox_missing_search_criterion">
<td tal:attributes="colspan python: len(here.getSearchValueList()) + 1">
<span i18n:translate=""
i18n:domain="ui">
To display actual content, please fill in one or more search criterion.
</span>
</td>
</tr>
<tr tal:condition="python:here.showStat() and not hide_rows_on_no_search_criterion" id="listbox_stat_line"
class="listbox_stat_line"
tal:attributes="id string:${field_id}_stat_line">
<td tal:condition="is_report_tree_mode" class="Data">&nbsp;</td>
<td class="AnchorColumn Data" tal:condition="show_anchor_column">&nbsp;</td>
<td tal:condition="show_select_column" class="Data">&nbsp;</td>
<tal:block tal:repeat="value here/getStatValueList">
<td class="Data" align="left"
tal:define="original_value python: value[0]; processed_value python: value[1]"
tal:attributes="align python: isinstance(original_value, (float, int, long)) and 'right' or 'left'"
tal:content="structure processed_value" />
</tal:block>
</tr>
</table>
</div>
</tal:block>
</tal:block>
</tal:block>
<!-- ListBox ends here. -->
</tal:block>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ListBox_asTableStyleHTML</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Listbox as tables renderer</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<tal:block metal:define-macro="main"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<!-- ListBox (table mode) starts here -->
<input tal:replace="nothing" type="hidden" name="form_id" tal:attributes="value form_id" tal:condition="form_id"/>
<!--<input type="hidden" name="selection_name" tal:attributes="value selection_name" tal:condition="selection_name"/>
<input type="hidden" name="selection_index" tal:attributes="value selection_index" tal:condition="selection_index"/>-->
<!--<input type="hidden" name="listbox_uid:list" value="" tal:attributes="name string:${field_id}_uid:list"/>
<input type="hidden" name="total_size" value="" tal:attributes="value here/total_size"/> -->
<input id="listbox_select" tal:attributes="id string:${field_id}_select"
title="Filter" alt="Filter" name="Base_doSelect:method"
type="submit" style="display: none"/>
<tal:block tal:define="expand python: 1;
table_form_id request/current_form_id | form_id;
your_search_text python:here.getParamDict().get('your_search_text', None)">
<tal:block metal:use-macro="template/macros/ListBoxContainer">
<tal:block metal:fill-slot="ListBoxBody">
<input tal:condition="python:is_gadget_mode" type="hidden" name="dom_id" tal:attributes="value dom_id" />
<table class="listbox table">
<caption>
<span class="left">
<a tal:condition="not:is_gadget_mode" tal:attributes="href string:${context_url}/${table_form_id}?list_style=search">
<img id="style_toggle_icon"
tal:attributes="src string:${context_url}/images/table_style_icon.png"
height="16"
title="Search mode"
alt="Search mode"
i18n:domain="ui" i18n:attributes="title"/>
</a>
<input tal:condition="python:not is_gadget_mode and (is_domain_tree_supported or is_report_tree_supported)"
type="image" src="text_block.png" id="listbox_flat_list_mode"
title="Flat List" name="setFlatListMode:method"
value="1" alt="Flat List"
tal:attributes="src string:${portal_url_string}/images/text_block.png;
id string:${field_id}_flat_list_mode"
i18n:domain="ui" i18n:attributes="title" />
<input tal:condition="python: not is_gadget_mode and is_report_tree_supported"
type="image" src="view_tree.png" id="listbox_report_tree_mode"
title="Report Tree" name="setReportTreeMode:method"
value="1" alt="Report Tree"
tal:attributes="src string:${portal_url_string}/images/view_tree.png;
id string:${field_id}_report_tree_mode"
i18n:domain="ui" i18n:attributes="title" />
<input tal:condition="python: not is_gadget_mode and is_domain_tree_supported"
type="image" src="view_choose.png" id="listbox_domain_tree_mode"
title="Domain Tree" name="setDomainTreeMode:method"
value="1" alt="Domain Tree"
tal:attributes="src string:${portal_url_string}/images/view_choose.png;
id string:${field_id}_domain_tree_mode"
i18n:domain="ui" i18n:attributes="title" />
<input tal:condition="python:not is_gadget_mode and (is_domain_tree_supported or is_report_tree_supported)"
type="image" id="listbox_reset_selection"
title="Show All" name="Folder_show:method"
id="listbox_reset_selection"
value="1" alt="Flat List"
tal:attributes="src string:${portal_url_string}/images/showall.png;"
i18n:domain="ui" i18n:attributes="title" />
<!-- supporting search mode for gadget mode -->
<button tal:condition="is_gadget_mode"
tal:define = "params python: {'list_style':'search'}"
type="button"
title="Search mode"
tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);"
i18n:domain="ui" i18n:attributes="title">
<img id="style_toggle_icon"
alt="Search mode"
tal:attributes="src string:${context_url}/images/table_style_icon.png"
height="16"/></button>
<a tal:attributes="id string:${field_id}_title; href here/getListActionUrl"
tal:condition="python: here.field.get_value('list_action')">
<em i18n:translate=""
i18n:domain="ui" tal:content="here/getTitle" />
</a>
<tal:block tal:condition="python: not here.field.get_value('list_action')">
<em i18n:translate=""
i18n:domain="ui" tal:content="here/getTitle" />
</tal:block>
<!-- supporting domain tree mode for gadget mode (disabled)-->
<!--
<br tal:condition="is_gadget_mode"/>
<button tal:condition="python: is_gadget_mode and (is_domain_tree_supported or is_report_tree_supported)"
tal:define = "params python: {'setFlatListMode:method':1}"
id="listbox_flat_list_mode"
type="button"
title="Flat List"
alt="Flat List"
tal:attributes="id string:${field_id}_flat_list_mode;
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);"
i18n:domain="ui" i18n:attributes="title">
<img tal:attributes="src string:${portal_url_string}/images/text_block.png;"/></button>
<button tal:condition="python: is_gadget_mode and is_report_tree_supported"
tal:define = "params python: {'setReportTreeMode:method':1}"
style="cursor:pointer;" id="listbox_report_tree_mode"
type="button"
title="Report Tree"
alt="Report Tree"
tal:attributes="id string:${field_id}_report_tree_mode;
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);"
i18n:domain="ui" i18n:attributes="title">
<img src="view_tree.png"
tal:attributes="src string:${portal_url_string}/images/view_tree.png;"/></button>
<button tal:condition="python: is_gadget_mode and is_domain_tree_supported"
tal:define = "params python: {'setDomainTreeMode:method':'1'}"
style="cursor:pointer;" id="listbox_domain_tree_mode"
type="button"
title="Domain Tree"
alt="Domain Tree"
tal:attributes="id string:${field_id}_domain_tree_mode;
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);"
i18n:domain="ui" i18n:attributes="title">
<img tal:attributes="src string:${portal_url_string}/images/view_choose.png;"/></button>
-->
</span>
<span class="right"
tal:define="listbox_max_lines python: int(here.getMaxLineNumber());
total_line python: int(here.total_size);
current_page python: int(here.current_page) + 1;
current_page_max python: listbox_max_lines * current_page;
current_page_start python: (listbox_max_lines * (current_page - 1)) + 1;
current_page_stop python: (total_line < current_page_max) and total_line or current_page_max;">
<tal:block condition="python: total_line > 0"
tal:replace="structure python: real_context.Base_translateString('Results <em>${start} - ${stop}</em> of <em>${total}</em>.', mapping=dict(start=current_page_start, stop=current_page_stop, total=total_line))"/>
<span tal:condition="python: total_line == 0" class="warning" i18n:translate="" i18n:domain="ui">No result !</span>
</span>
</caption>
<tr class ="thead listbox_search_line">
<td tal:condition="python:not is_gadget_mode and show_select_column"
class="Data" style="width: 50px; text-align: center; vertical-align: middle; white-space: nowrap;">
<input id="listbox_check_all" type="image"
name="checkAll:method" value="1"
alt="Check All" title="Check All"
tal:attributes="id string:${field_id}_check_all;
name string:${field_id}_checkAll:method;
src string:${portal_url_string}/images/checkall.png"
i18n:domain="ui" i18n:attributes="title" />&nbsp;<input id="listbox_uncheck_all"
type="image" name="uncheckAll:method" value="1"
style="border: 0" alt="Uncheck All" title="Uncheck All"
tal:attributes="id string:${field_id}_uncheck_all;
src string:${portal_url_string}/images/decheckall.png;
name string:${field_id}_uncheckAll:method;"
i18n:domain="ui" i18n:attributes="title" />
</td>
<tal:block tal:repeat="value here/getLabelValueList">
<tal:block tal:define="sql python: value[0];
title python: value[1];
sort_order python: value[2]">
<th tal:condition="sql">
<button tal:condition="not:is_gadget_mode" type="submit" class="sort_button"
name="setSelectionQuickSortOrder:method"
tal:attributes="title string:${title};
value string:${field_id}.${sql}"
i18n:domain="ui" i18n:attributes="title">
<span tal:content="title" i18n:domain="ui" i18n:translate="">ID</span>
</button>
<!-- Sort for gadget mode -->
<button tal:condition="is_gadget_mode"
tal:define ="params python: {'setSelectionQuickSortOrder:method':field_id+'.'+sql};"
type="button"
class="sort_button"
tal:attributes="title string:${title};
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);"
i18n:domain="ui" i18n:attributes="title">
<span tal:content="title" i18n:domain="ui" i18n:translate="">ID</span>
</button>
<img tal:condition="python: sort_order == 'ascending'"
alt="Ascending Display" title="Ascending Display"
tal:attributes="src string:${portal_url_string}/images/1bottomarrow.png"
style="float:left"
i18n:domain="ui" i18n:attributes="title"/>
<img tal:condition="python: sort_order == 'descending'"
alt="Descending Display" title="Descending Display"
tal:attributes="src string:${portal_url_string}/images/1toparrow.png"
style="float:left"
i18n:domain="ui" i18n:attributes="title"/>
</th>
<th tal:condition="not: sql" tal:content="title" i18n:domain="ui" i18n:translate=""/>
</tal:block>
</tal:block>
</tr>
<tr class="thead listbox_search_line" tal:condition="show_search_line">
<td tal:condition="python: show_select_column and show_search_line and not is_gadget_mode"
class="Data" style="width: 50px; text-align: center; vertical-align: middle">
<input id="listbox_select" type="image"
title="Action" alt="Action" name="Base_doSelect:method"
tal:attributes="id string:${field_id}_select;
src string:${portal_url_string}/images/exec16.png"
i18n:domain="ui" i18n:attributes="title" />
</td>
<td tal:repeat="value here/getSearchValueList">
<tal:block tal:define="alias python: value[0];
param python: value[1];
search_field python: value[2]"
tal:condition="alias">
<tal:block
tal:condition="python: search_field is not None"
tal:replace="structure python: search_field.render(value=param, key=alias)"/>
<input tal:condition="python: not is_gadget_mode and search_field is None"
name="id" size="5" value=""
type="text" tal:attributes="name alias; value param"/>
<!-- Search for gadget mode -->
<input tal:condition="python: is_gadget_mode and search_field is None"
tal:define ="params python: {alias:'this.value'};"
size="8"
type="textarea"
tal:attributes='value python: selection.getParams().get(alias,"");
onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url+"/"+form_id,box,dom_id,params).replace("\"this.value\"","this.value")+ "return false;;}"'/>
</tal:block>
</td>
</tr>
<tal:replace tal:content="nothing">
TODO: Move pagination pre-calcultion higher in that code.
</tal:replace>
<tr class="tbody" tal:condition="line_list"
tal:repeat="line line_list" tal:define="checked_uid_set here/getCheckedUidSet">
<td tal:condition="python: show_select_column and not is_gadget_mode"
class="DataA" style="width: 50px; text-align: center; vertical-align: middle"
>
<input tal:condition="python: not line.isSummary() and line.getObject() is not None"
type="checkbox" value="checked" id="listbox_cb_1" name="uids:list"
tal:attributes="checked python: line.getUid() in checked_uid_set;
value line/getUid;
id string:${field_id}_cb_${line/getUid}" />
<tal:block tal:condition="python: line.isSummary() or line.getObject() is None"></tal:block>
</td>
<tal:block tal:repeat="value line/render">
<td tal:define="html python: value[0];
original_value python: value[1];
error python: value[2];
editable_field python: value[3];
editable_field_css python: editable_field != None and editable_field.get_value('css_class')">
<input tal:condition="not: repeat/value/index"
type="hidden" value="1" name="listbox_uid:list"
tal:attributes="value python: line.getUid() or '';
name string:${field_id}_uid:list" />
<tal:block tal:replace="structure html">value</tal:block>
</td>
</tal:block>
</tr>
<tr tal:condition="python: int(here.total_size) > int(here.getMaxLineNumber())"
class="tfoot">
<td class="pageNavigation" style="white-space: nowrap; vertical-align: middle; text-align: right;"
tal:attributes="colspan python: len(here.getSelectedColumnList()) + bool(show_select_column)">
<tal:block metal:use-macro="real_context/page_navigation_render/macros/page_navigation" />
</td>
</tr>
<tr tal:condition="hide_rows_on_no_search_criterion"
class="listbox_missing_search_criterion">
<td tal:attributes="colspan python: len(here.getSearchValueList()) + 1">
<span i18n:translate=""
i18n:domain="ui">
To display actual content, please fill in one or more search criterion.
</span>
</td>
</tr>
</table>
<!-- Advanced Search footer -->
<div class="centeredInner extendedSearchBar"
tal:condition="python:not is_gadget_mode and show_search_line and your_search_text is not None">
<input name="bottom_your_search_text" size="40" value=""
type="text" tal:attributes="value your_search_text"
onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_processAdvancedSearchBottom');"/>
<input class="button" value="Search" name="ERP5Site_processAdvancedSearchBottom:method" type="submit" />
</div>
</tal:block>
</tal:block>
</tal:block>
<!-- ListBox ends here -->
</tal:block>
......@@ -46,15 +46,15 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ListBox_ThreadAsHTML</string> </value>
<value> <string>ListBox_threadAsHTML</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
......
......@@ -6,48 +6,85 @@
form_id python: here.getForm().id;
selection_name here/getSelectionName;
selection here/getSelection;
portal_url_string here/getPortalUrlString;
real_context here/getContext;
global portal_url_string here/getPortalUrlString;
context_url real_context/absolute_url;
md5_string here/getMD5Checksum;
hide_rows_on_no_search_criterion here/isHideRowsOnNoSearchCriterion;
line_list here/query;
is_domain_tree_mode here/isDomainTreeMode;
is_report_tree_mode here/isReportTreeMode;
is_domain_tree_supported here/isDomainTreeSupported;
is_report_tree_supported here/isReportTreeSupported;
global is_domain_tree_supported here/isDomainTreeSupported;
global is_report_tree_supported here/isReportTreeSupported;
global is_gadget_mode request/is_gadget_mode | nothing;
show_select_column here/showSelectColumn;
show_anchor_column here/showAnchorColumn;
show_search_line here/showSearchLine;
is_web_mode request/is_web_mode | nothing;
is_web_mode real_context/isWebMode | nothing;
is_dialog_mode request/dialog_mode | nothing;
list_style python:request.get('list_style',
selection.getParams().get('list_style', is_web_mode and 'table' or None));
is_gadget_mode request/is_gadget_mode | nothing;
">
<!-- ListBox starts here. -->
<input type="hidden" name="list_selection_name" value="default" tal:attributes="value selection_name" />
<input type="hidden" name="list_selection_name" value="default"
display_style_list here/getDisplayStyleList;
list_style here/getListboxDisplayStyle;
global_search_column here/getGlobalSearchColumn;
global_search_column_script string:Base_doSelect;
show_global_search python: global_search_column not in ('', None);
line_list here/query;
listbox_max_lines python: int(here.getMaxLineNumber());
total_line python: int(here.total_size);
is_sample python: getattr(here, 'is_sample', False);
current_page python: int(here.current_page) + 1;
current_page_max python: listbox_max_lines * current_page;
current_page_start python: (listbox_max_lines * (current_page - 1)) + 1;
current_page_stop python: (total_line < current_page_max) and total_line or current_page_max;
form_url string:${context_url}/${form_id};
need_pagination python: total_line > listbox_max_lines;
show_list_style_selection python: len(display_style_list) > 1;
show_listbox_tree_mode_selection python: not is_gadget_mode and
(is_domain_tree_supported or is_report_tree_supported);
show_list_action_link python: here.field.get_value('list_action');
page_navigation_template python: request.get('page_navigation_template', here.getPageNavigationTemplate());
is_slider_mode python: 'Slider' in page_navigation_template;
is_default_listbox_field python: field_id=='listbox';
field_prefix python: '';">
<!-- Define hidden input. -->
<input type="hidden"
name="list_selection_name"
value="default"
tal:attributes="value selection_name" />
<input type="hidden"
name="list_selection_name"
value="default"
tal:attributes="value selection_name;
name string:${field_id}_list_selection_name" />
<input tal:condition="md5_string" type="hidden" name="md5_object_uid_list" value="checksum" tal:attributes="value md5_string" />
<input tal:condition="md5_string"
type="hidden"
name="md5_object_uid_list"
value="checksum"
tal:attributes="value md5_string" />
<input tal:condition="form_id"
type="hidden"
name="form_id"
tal:attributes="value form_id"
tal:replace="nothing"/>
<input tal:condition="field_id"
type="hidden"
name="field_id"
tal:attributes="value field_id"
tal:replace="nothing"/>
<tal:block tal:condition="is_gadget_mode">
<tal:block tal:define="global box_relative_url python: request.get('box_relative_url', '');
global box python: real_context.restrictedTraverse(box_relative_url);
global box_id python: 'visual_%s' %box_relative_url.split('/')[-1];
global dom_id python: request.get('dom_id',None) or box_id;">
global box_id python: '%s_content' %box_relative_url.replace('/', '_');
global dom_id python: request.get('dom_id',None) or box_id;
global field_prefix string:${box_id}_">
<input tal:condition="python:form_id"
type="hidden" name="gadget_form_id"
type="hidden"
name="gadget_form_id"
tal:attributes="value form_id" />
</tal:block>
</tal:block>
<tal:replace tal:content="nothing">
Because TAL cannot accept unbalanced tags, the support for a domain tree is realized by a macro.
The macro ListBoxContainer is a no-op, if not in domain tree mode. Otherwise, the macro constructs
a domain tree and extracts the body in an extra table.
</tal:replace>
<tal:block tal:define="expand python: 0">
<tal:block tal:define="expand python: 0">
<tal:block metal:define-macro="ListBoxContainer">
<tal:block tal:condition="expand">
<tal:block tal:condition="not: is_domain_tree_mode">
......@@ -97,14 +134,6 @@
</tal:block>
</tal:block>
</tal:block>
<tal:block tal:condition="python: list_style == 'search'">
<span metal:use-macro="real_context/ListBox_asSearchStyleHTML/macros/main"/>
</tal:block>
<tal:block tal:condition="python: list_style == 'table'">
<span metal:use-macro="real_context/ListBox_asTableStyleHTML/macros/main"/>
</tal:block>
<tal:block tal:condition="python: list_style not in ('search', 'table')">
<span metal:use-macro="real_context/ListBox_asStandardHTML/macros/main"/>
</tal:block>
</tal:block>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>page_navigation_render</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<tal:block tal:replace="nothing"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<!-- First & Previous button navigation -->
<tal:block metal:define-macro="first_previous_page_navigation">
<tal:block tal:condition="python: here.current_page > 0">
<button type="image" src="2leftarrowv.png"
title="First Page" name="firstPage:method"
class="listbox_first_page"
tal:attributes="name string:${field_id}_firstPage:method;
src string:${portal_url_string}/images/2leftarrowv.png;
class python: test(is_default_listbox_field, 'listbox_first_page', 'listbox_first_page %s_first_page' %field_id)"
i18n:domain="ui" i18n:attributes="title">
<span class="image"/>
</button>
<button type="image" src="1leftarrowv.png"
title="Previous Page" name="previousPage:method"
class="listbox_previous_page"
tal:attributes="name string:${field_id}_previousPage:method;
src string:${portal_url_string}/images/1leftarrowv.png;
class python: test(is_default_listbox_field, 'listbox_previous_page', 'listbox_previous_page %s_previous_page' %field_id)"
i18n:domain="ui" i18n:attributes="title">
<span class="image"/>
</button>
</tal:block>
</tal:block>
<!-- Next & Last button navigation -->
<tal:block metal:define-macro="next_last_page_navigation">
<tal:block tal:condition="python: here.current_page < here.total_pages - 1">
<button type="image" src="1rightarrowv.png"
title="Next Page" name="nextPage:method" class="listbox_next_page"
tal:attributes="name string:${field_id}_nextPage:method;
src string:${portal_url_string}/images/1rightarrowv.png;
class python: test(is_default_listbox_field, 'listbox_next_page', 'listbox_next_page %s_next_page' %field_id)"
i18n:domain="ui" i18n:attributes="title">
<span class="image"/>
</button>
<button type="image" src="2rightarrowv.png"
title="Last Page" name="lastPage:method" class="listbox_last_page"
tal:attributes="name string:${field_id}_lastPage:method;
src string:${portal_url_string}/images/2rightarrowv.png;
class python: test(is_default_listbox_field, 'listbox_last_page', 'listbox_last_page %s_last_page' %field_id)"
i18n:domain="ui" i18n:attributes="title" >
<span class="image"/>
</button>
</tal:block>
</tal:block>
<!-- First & Previous button navigation (asynchronous mode) -->
<tal:block metal:define-macro="first_previous_page_navigation_asynchronous">
<tal:block tal:condition="python: here.current_page > 0">
<button tal:define ="params python: {field_id+'_firstPage:method':'', 'list_style':list_style}"
title="First Page"
name="firstPage"
type = "button"
class = "listbox_first_page"
tal:attributes="value string:|&lt;;
onclick python:
real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);
class python: test(is_default_listbox_field, 'listbox_first_page', 'listbox_first_page %s_first_page' %field_id)"
i18n:domain="ui" i18n:attributes="title">
<span class="image"/>
</button>
<button tal:define ="params python: {field_id+'_previousPage:method':'','page_start':here.current_page+1,'list_style':list_style}"
title="Previous Page"
name="previousPage"
type="button"
class="listbox_previous_page"
tal:attributes="value string:&lt;&lt;;
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);
class python: test(is_default_listbox_field, 'listbox_previous_page', 'listbox_previous_page %s_previous_page' %field_id)"
i18n:domain="ui" i18n:attributes="title">
<span class="image"/>
</button>
</tal:block>
</tal:block>
<!-- Next & Last button navigation (asynchronous mode) -->
<tal:block metal:define-macro="next_last_page_navigation_asynchronous">
<tal:block tal:condition="python: current_page < total_page">
<button tal:define ="params python: {field_id+'_nextPage:method':'','page_start':here.current_page+1,'list_style':list_style}"
title="Next Page"
name="nextPage"
type="button"
class="listbox_next_page"
tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);
class python: test(is_default_listbox_field, 'listbox_next_page', 'listbox_next_page %s_next_page' %field_id)"
i18n:domain="ui" i18n:attributes="title">
<span class="image"/>
</button>
<button tal:define ="params python: {field_id+'_lastPage:method':'','total_size':int(here.total_size), 'list_style':list_style}"
title="Last Page"
name="lastPage"
type="button"
class="listbox_last_page"
tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);
class python: test(is_default_listbox_field, 'listbox_last_page', 'listbox_last_page %s_last_page' %field_id)"
i18n:domain="ui" i18n:attributes="title">
<span class="image"/>
</button>
</tal:block>
</tal:block>
<!-- Type in listbox navigation -->
<tal:block metal:define-macro="type_in_page_navigation">
<input class="listbox_set_page"
name="page_start" onblur="this.value=this.defaultValue"
tal:attributes="name string:${field_id}_page_start;
class python: test(is_default_listbox_field, 'listbox_set_page', 'listbox_set_page %s_set_page' %field_id);
value python:here.current_page + 1;
size python:len(str(here.total_pages));
onkeypress string:submitFormOnEnter(event, this.form, '${field_id}_setPage')" />
/ <tal:block content="here/total_pages" />
</tal:block>
<!-- Type in listbox page number navigation (asyncronous) -->
<tal:block metal:define-macro="type_in_page_navigation_asynchronous">
<input class="listbox_set_page"
name="page_start" onblur="this.value=this.defaultValue"
tal:define="params python: {field_id+'_setPage:method':'',field_id+'_page_start':'this.value','list_style':list_style}"
tal:attributes='name string:${field_id}_page_start;
class python: test(is_default_listbox_field, "listbox_set_page", "listbox_set_page %s_set_page" %field_id);
value python:here.current_page + 1;
size python:len(str(here.total_pages));
onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url+"/"+form_id,box,dom_id,params).replace("\"this.value\"","this.value")+ "return false;;}"'/>
/ <tal:block content="here/total_pages" />
</tal:block>
<!-- Show list of direct listbox page selection -->
<tal:block metal:define-macro="text_link_page_navigation">
<tal:block tal:repeat="page_index page_index_list ">
<a tal:attributes="href python: '%s_setPage?%s_page_start=%s&list_selection_name=%s&listbox_uid:list=[]' %(field_id, field_id, page_index, selection_name);
class python: test(page_index==current_page, 'selected', '');
title string:Page ${page_index}"
tal:content="page_index"/>
</tal:block>
</tal:block>
<!-- Show list of direct listbox page selection (asynchronous) -->
<tal:block metal:define-macro="text_link_page_navigation_asynchronous">
<tal:block tal:repeat="page_index page_index_list ">
<a tal:define="params python: {field_id+'_setPage:method':'',field_id+'_page_start':page_index,'list_style':list_style, 'list_selection_name':selection_name, 'listbox_uid':[]}"
tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);
class python: test(page_index==current_page, 'selected', '');
title string:Page ${page_index}"
tal:content="page_index"/>
</tal:block>
</tal:block>
<!-- Text navigation (i.e. 1 2 3 4 .. n links)-->
<tal:block metal:define-macro="text_navigation"
tal:define="offset python: 7;
all_page_index_list python: range(1, here.total_pages + 1);
page_index_list python: all_page_index_list[max(current_page-offset, 1)-1: min(current_page+offset, len(all_page_index_list))];
is_default_listbox_field python: field_id=='listbox';">
<!-- Non gadget mode -->
<tal:block tal:condition="not: is_gadget_mode">
<tal:block metal:use-macro="real_context/page_navigation_render/macros/first_previous_page_navigation" />
<tal:block metal:use-macro="real_context/page_navigation_render/macros/text_link_page_navigation" />
<tal:block metal:use-macro="real_context/page_navigation_render/macros/next_last_page_navigation" />
</tal:block>
<!-- Gadget mode -->
<tal:block tal:condition="is_gadget_mode"
tal:define="max_lines python: here.getMaxLineNumber();
total_page python: here.total_pages;
page_id python: here.current_page;
current_page python: page_id + 1;
previous_page python: current_page - 1;
next_page python: current_page + 1;">
<tal:block metal:use-macro="real_context/page_navigation_render/macros/first_previous_page_navigation_asynchronous" />
<tal:block metal:use-macro="real_context/page_navigation_render/macros/text_link_page_navigation_asynchronous" />
<tal:block metal:use-macro="real_context/page_navigation_render/macros/next_last_page_navigation_asynchronous" />
</tal:block>
</tal:block>
<!-- Slider navigation with input (i.e. first, previous, next, last links)-->
<tal:block metal:define-macro="page_navigation"
tal:define="is_default_listbox_field python: field_id=='listbox';">
<tal:block tal:condition="python: here.total_pages > 1">
<!-- Non gadget mode -->
<tal:block tal:condition="not: is_gadget_mode">
<tal:block metal:use-macro="real_context/page_navigation_render/macros/first_previous_page_navigation" />
<tal:block metal:use-macro="real_context/page_navigation_render/macros/type_in_page_navigation" />
<tal:block metal:use-macro="real_context/page_navigation_render/macros/next_last_page_navigation" />
</tal:block>
<!-- Gadget mode -->
<tal:block tal:condition="is_gadget_mode"
tal:define="max_lines python: here.getMaxLineNumber();
total_page python: here.total_pages;
page_id python: here.current_page;
current_page python: page_id + 1;
previous_page python: current_page - 1;
next_page python: current_page + 1;">
<tal:block metal:use-macro="real_context/page_navigation_render/macros/first_previous_page_navigation_asynchronous" />
<tal:block metal:use-macro="real_context/page_navigation_render/macros/type_in_page_navigation_asynchronous" />
<tal:block metal:use-macro="real_context/page_navigation_render/macros/next_last_page_navigation_asynchronous" />
</tal:block>
</tal:block>
</tal:block>
</tal:block>
from Products.ERP5Type.tests.SecurityTestCase import SecurityTestCase
from httplib import OK as HTTP_OK
class TestDiscussionThread(SecurityTestCase):
"""
A Sample Test Class
"""
user_id_dict = {}
def getTitle(self):
return "TestDiscussionThread"
def afterSetUp(self):
"""
This is ran before each and every test, used to set up the environment
"""
user_list = [
# This is Dictator, a user of our portal and a forum admin
dict(title='Dictator', reference='admin', function='forum/administrator'),
# This is "Forum User", a user of our portal. He's funny, but has no administrative power
dict(title='Forum User', reference='forum_user', function='forum/user'),
# This is yet another user. He has no administrative power
dict(title='Another Forum User', reference='another_forum_user', function='forum/user'),
# This is a Lurker. He is lurking in the forum, but is not an User
dict(title='Forum visitor', reference='visitor', function='forum/visitor'),
# This is a Spy. He has an ERP5 account, but no specific forum access.
dict(title='Spy', reference='spy', function=None),
]
# now we create the users
for user in user_list:
if not self.portal.acl_users.searchUsers(login=user['reference'], exact_match=True):
self.user_id_dict[user['reference']] = \
self.createSimpleUser(**user).Person_getUserId()
self.commit()
self.tic()
self.forum_module = self.portal.getDefaultModule(portal_type='Discussion Thread')
self.assertTrue(self.forum_module is not None)
def _newThread(self, content=''):
"""Helper function to create a new Thread"""
return self.forum_module.DiscussionThreadModule_addThread(
title='Some title',
text_content=content,
form_id='DiscussionThreadModule_viewAddThreadDialog',
batch_mode=True,
)
def testUserCanCreateContent(self):
"""
Use case:
- user creates a thread
- that user can see it
- that user can reply to his thread
"""
# forum_user should be able to access/view the forum module
self.assertUserCanAccessDocument(self.user_id_dict['forum_user'], self.forum_module)
self.assertUserCanViewDocument(self.user_id_dict['forum_user'], self.forum_module)
self.assertUserCanAddDocument(self.user_id_dict['forum_user'], self.forum_module)
self.login(self.user_id_dict['forum_user'])
thread_content='Hey, lets create a new thread!'
thread = self._newThread(content=thread_content)
# user should be able to access/view the created thread
self.assertUserCanViewDocument(self.user_id_dict['forum_user'], thread)
self.assertUserCanAccessDocument(self.user_id_dict['forum_user'], thread)
self.assertUserCanAddDocument(self.user_id_dict['forum_user'], thread)
# get thread posts
thread_posts = thread.objectValues()
# thread should have only one post
self.assertEqual(len(thread_posts), 1)
# that unique post should have the right content
self.assertEqual(thread_posts[0].getTextContent(), thread_content)
# Check that the thread is inserted in the forum module
self.assertEqual(thread.getParentValue().getRelativeUrl(), self.forum_module.getRelativeUrl())
# the thread should have been published
self.assertEqual(thread.getValidationState(), 'public')
reply_content='Can we add a reply?'
post = thread.DiscussionThreadModule_addReply(
title='A new reply',
text_content=reply_content,
form_id='DiscussionThreadModule_viewAddReplyDialog',
batch_mode=True,
)
self.assertUserCanViewDocument(self.user_id_dict['forum_user'], post)
self.assertUserCanAccessDocument(self.user_id_dict['forum_user'], post)
self.tic()
thread_posts = thread.objectValues()
# original thread and reply:
# thread should have two posts
self.assertEqual(len(thread_posts), 2)
# Check that post was inserted in thread
self.assertEqual(post.getParentValue().getRelativeUrl(), thread.getRelativeUrl())
def testSpyCannotAccessButVisitorCan(self):
"""
Unassigneds can't display threads, and visitor can:
- user creates a thread
- outsiders can't read the thread
- visitor can read the thread
"""
self.login(self.user_id_dict['forum_user'])
thread = self._newThread()
self.failIfUserCanViewDocument(self.user_id_dict['spy'], thread)
self.failIfUserCanAccessDocument(self.user_id_dict['spy'], thread)
self.assertUserCanViewDocument(self.user_id_dict['visitor'], thread)
self.assertUserCanAccessDocument(self.user_id_dict['visitor'], thread)
# Check that visitor has permissions on related objects
# for example, if visitor has no permissions on the Person
# module, the above checks will pass, but the view
# will not work, because Person.getTitle() will fail
self.assertUserCanViewDocument(self.user_id_dict['visitor'], self.portal.person_module)
self.assertUserCanAccessDocument(self.user_id_dict['visitor'], self.portal.person_module)
response = self.publish('/%s/%s' % \
(self.portal.getId(), thread.getRelativeUrl()),
'visitor:visitor'
)
self.assertEqual(response.getStatus(), HTTP_OK)
def testVisitorCannotPost(self):
"""
Use case:
- user creates a thread
- visitor cannot reply
- visitor cannot post a new thread
"""
self.login(self.user_id_dict['forum_user'])
thread = self._newThread()
# visitor cannot reply to a thread
self.failIfUserCanAddDocument(self.user_id_dict['visitor'], thread)
# visitor cannot create a new thread
self.failIfUserCanAddDocument(self.user_id_dict['visitor'], self.forum_module)
def testAdminCanModerate(self):
"""
Use case:
- admin creates a thread
- admin can display it
- admin closes it
- admin can display it
- admin reopens it
"""
self.login(self.user_id_dict['admin'])
thread = self._newThread()
self.assertUserCanPassWorkflowTransition(self.user_id_dict['admin'], 'close_action', thread)
thread.close()
self.commit()
self.assertUserCanViewDocument(self.user_id_dict['admin'], thread)
self.assertUserCanAccessDocument(self.user_id_dict['admin'], thread)
self.assertUserCanPassWorkflowTransition(self.user_id_dict['admin'], 'unclose_action', thread)
def testUserCannotModerate(self):
"""
Use case:
- user creates thread
- user cannot close it
"""
self.login(self.user_id_dict['forum_user'])
thread = self._newThread()
self.assertUserCanPassWorkflowTransition(self.user_id_dict['forum_user'], 'close_action', thread)
self.failIfUserCanPassWorkflowTransition(self.user_id_dict['another_forum_user'], 'close_action', thread)
def testCanPostIfNotOwner(self):
"""
Use case:
- forum_user creates a thread
- another_forum_user displays it
- another_forum_user replies
"""
self.login(self.user_id_dict['forum_user'])
thread = self._newThread()
# other user (not thread owner) can access and view the thread
self.assertUserCanViewDocument(self.user_id_dict['another_forum_user'], thread)
self.assertUserCanAccessDocument(self.user_id_dict['another_forum_user'], thread)
# ... and can reply to thread even if he did not start it
self.assertUserCanAddDocument(self.user_id_dict['another_forum_user'], thread)
response = self.publish('/%s/%s' % \
(self.portal.getId(), thread.getRelativeUrl()),
'another_forum_user:another_forum_user'
)
self.assertEqual(response.getStatus(), HTTP_OK)
......@@ -33,8 +33,10 @@
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>discussion_thread_workflow</string> </value>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -47,12 +49,14 @@
<value> <string>discussion_thread_workflow</string> </value>
</item>
<item>
<key> <string>manager_bypass</string> </key>
<value> <int>1</int> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow</string> </value>
<key> <string>manager_bypass</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>state_variable</string> </key>
......@@ -67,10 +71,10 @@
<value>
<tuple>
<string>Access contents information</string>
<string>View</string>
<string>Add portal content</string>
<string>Modify portal content</string>
<string>Delete objects</string>
<string>Modify portal content</string>
<string>View</string>
</tuple>
</value>
</item>
......
......@@ -2,38 +2,54 @@
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Test Component" module="erp5.portal_type"/>
<global name="Workflow State" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>default_reference</string> </key>
<value> <string>testDiscussionThread</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>test.erp5.testDiscussionThread</string> </value>
<key> <string>acquire_permission</string> </key>
<value>
<tuple>
<string>Access contents information</string>
<string>Add portal content</string>
<string>Delete objects</string>
<string>Modify portal content</string>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Test Component</string> </value>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>sid</string> </key>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>erp5</string> </value>
<key> <string>id</string> </key>
<value> <string>state_cancelled</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Cancelled</string> </value>
</item>
</dictionary>
</pickle>
</record>
......@@ -48,67 +64,36 @@
<value>
<dictionary>
<item>
<key> <string>component_validation_workflow</string> </key>
<key> <string>Access contents information</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_log</string> </key>
<key> <string>Add portal content</string> </key>
<value>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>validate</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>ERP5TypeTestCase</string> </value>
<tuple/>
</value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
<key> <string>Delete objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>time</string> </key>
<key> <string>Modify portal content</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="DateTime" module="DateTime.DateTime"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<tuple>
<float>1377844658.71</float>
<string>GMT+9</string>
</tuple>
</state>
</object>
<tuple/>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>validated</string> </value>
<key> <string>View</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
......
......@@ -22,35 +22,31 @@
</value>
</item>
<item>
<key> <string>description</string> </key>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_closed</string> </value>
</item>
<item>
<key> <string>index</string> </key>
<key> <string>description</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
<key> <string>id</string> </key>
<value> <string>state_closed</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<key> <string>language</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<tuple/>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
......@@ -61,28 +57,6 @@
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -96,11 +70,11 @@
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Author</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Owner</string>
</tuple>
</value>
......@@ -136,11 +110,11 @@
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Author</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Owner</string>
</tuple>
</value>
......@@ -151,128 +125,4 @@
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <int>1</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Add portal content</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Delete objects</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>View</string> </key>
<value> <int>4</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -24,35 +24,25 @@
</value>
</item>
<item>
<key> <string>description</string> </key>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_draft</string> </value>
</item>
<item>
<key> <string>index</string> </key>
<key> <string>description</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
<key> <string>id</string> </key>
<value> <string>state_draft</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<value>
<tuple/>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
......@@ -63,28 +53,6 @@
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -98,8 +66,9 @@
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Manager</string>
<string>Assignor</string>
<string>Owner</string>
<string>Manager</string>
</tuple>
</value>
</item>
......@@ -107,8 +76,8 @@
<key> <string>Add portal content</string> </key>
<value>
<tuple>
<string>Manager</string>
<string>Owner</string>
<string>Manager</string>
</tuple>
</value>
</item>
......@@ -124,8 +93,8 @@
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Manager</string>
<string>Owner</string>
<string>Manager</string>
</tuple>
</value>
</item>
......@@ -133,8 +102,9 @@
<key> <string>View</string> </key>
<value>
<tuple>
<string>Manager</string>
<string>Owner</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
......@@ -144,128 +114,4 @@
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <int>1</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Add portal content</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Delete objects</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>View</string> </key>
<value> <int>4</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -13,40 +13,45 @@
</value>
</item>
<item>
<key> <string>description</string> </key>
<key> <string>categories</string> </key>
<value>
<none/>
<tuple>
<string>destination/portal_workflow/discussion_thread_workflow/transition_publish</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_publish_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_cancel</string> </value>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>index</string> </key>
<key> <string>description</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
<key> <string>id</string> </key>
<value> <string>state_hidden</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<key> <string>language</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<tuple/>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Cancelled</string> </value>
<value> <string>Hidden</string> </value>
</item>
</dictionary>
</pickle>
......@@ -62,130 +67,57 @@
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<key> <string>Access contents information</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
<tuple>
<string>Assignor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<key> <string>Add portal content</string> </key>
<value>
<dictionary/>
<tuple>
<string>Assignor</string>
<string>Owner</string>
<string>Manager</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<key> <string>Delete objects</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <int>1</int> </key>
<key> <string>Modify portal content</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
<tuple>
<string>Assignor</string>
<string>Owner</string>
<string>Manager</string>
</tuple>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<key> <string>View</string> </key>
<value>
<dictionary/>
<tuple>
<string>Owner</string>
<string>Assignee</string>
<string>Manager</string>
<string>Assignor</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
......
......@@ -18,41 +18,39 @@
<tuple>
<string>destination/portal_workflow/discussion_thread_workflow/transition_close</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_close_action</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_sticky</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_sticky_action</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_hide</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_hide_action</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_stick</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_stick_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_public</string> </value>
</item>
<item>
<key> <string>index</string> </key>
<key> <string>description</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
<key> <string>id</string> </key>
<value> <string>state_public</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<key> <string>language</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<tuple/>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
......@@ -63,28 +61,6 @@
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -98,11 +74,11 @@
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Author</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Owner</string>
</tuple>
</value>
......@@ -112,9 +88,9 @@
<value>
<tuple>
<string>Assignor</string>
<string>Author</string>
<string>Manager</string>
<string>Owner</string>
<string>Manager</string>
<string>Author</string>
</tuple>
</value>
</item>
......@@ -132,8 +108,8 @@
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
<string>Manager</string>
</tuple>
</value>
</item>
......@@ -141,11 +117,11 @@
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Author</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Owner</string>
</tuple>
</value>
......@@ -156,128 +132,4 @@
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <int>1</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Add portal content</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Delete objects</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>View</string> </key>
<value> <int>4</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -18,41 +18,37 @@
<tuple>
<string>destination/portal_workflow/discussion_thread_workflow/transition_close</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_close_action</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_unsticky</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_unsticky_action</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_unstick</string>
<string>destination/portal_workflow/discussion_thread_workflow/transition_unstick_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_sticky</string> </value>
</item>
<item>
<key> <string>index</string> </key>
<key> <string>description</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
<key> <string>id</string> </key>
<value> <string>state_sticky</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<key> <string>language</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<none/>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<tuple/>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
......@@ -73,130 +69,62 @@
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<key> <string>Access contents information</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
<tuple>
<string>Assignor</string>
<string>Author</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Owner</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<key> <string>Add portal content</string> </key>
<value>
<dictionary/>
<tuple>
<string>Assignor</string>
<string>Owner</string>
<string>Manager</string>
<string>Author</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<key> <string>Delete objects</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <int>1</int> </key>
<key> <string>Modify portal content</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
</dictionary>
<tuple>
<string>Assignor</string>
<string>Owner</string>
<string>Manager</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<key> <string>View</string> </key>
<value>
<dictionary/>
<tuple>
<string>Assignor</string>
<string>Author</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Owner</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
......
......@@ -6,24 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/discussion_thread_workflow/state_cancel</string>
<string>destination/portal_workflow/discussion_thread_workflow/state_cancelled</string>
</tuple>
</value>
</item>
......@@ -33,16 +21,12 @@
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -64,8 +48,10 @@
<value> <string>transition_cancel</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
......
......@@ -12,7 +12,7 @@
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Cancelled</string> </value>
<value> <string>Cancel</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
......@@ -25,18 +25,16 @@
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Cancel action.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -58,17 +56,15 @@
<value> <string>transition_cancel_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Cancel Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -6,18 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
......@@ -33,16 +21,12 @@
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -64,8 +48,10 @@
<value> <string>transition_close</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
......
......@@ -12,7 +12,7 @@
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Closed</string> </value>
<value> <string>Close</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
......@@ -25,18 +25,16 @@
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Close the thread.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -58,17 +56,15 @@
<value> <string>transition_close_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Close Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/discussion_thread_workflow/state_hidden</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_hide</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Hide</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -8,21 +8,18 @@
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=hide_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
<value> <string>Hide</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>after_script/portal_workflow/discussion_thread_workflow/transition_hide</string>
</tuple>
</value>
</item>
......@@ -32,16 +29,12 @@
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -60,19 +53,17 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_unsticky</string> </value>
<value> <string>transition_hide_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Unsticky</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
<value> <string>Hide Action</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -6,18 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
......@@ -33,12 +21,6 @@
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
......@@ -50,7 +32,9 @@
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple/>
<tuple>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
......@@ -64,8 +48,10 @@
<value> <string>transition_publish</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
......
......@@ -25,25 +25,23 @@
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Publish a thread.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Owner</string>
</tuple>
</value>
</item>
......@@ -58,17 +56,15 @@
<value> <string>transition_publish_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Publish Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -6,18 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
......@@ -33,16 +21,12 @@
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -61,15 +45,17 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_sticky</string> </value>
<value> <string>transition_stick</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Sticky</string> </value>
<value> <string>Stick</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
......
......@@ -8,34 +8,33 @@
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=unsticky_action</string> </value>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=stick_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Unsticky</string> </value>
<value> <string>Stick</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>after_script/portal_workflow/discussion_thread_workflow/transition_stick</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Unsticky the thread.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -54,19 +53,17 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_unsticky_action</string> </value>
<value> <string>transition_stick_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Unsticky Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
<value> <string>Stick Action</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -6,23 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/discussion_thread_workflow/state_public</string>
</tuple>
</value>
</item>
......@@ -32,16 +21,12 @@
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -63,8 +48,10 @@
<value> <string>transition_unclose</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
......
......@@ -12,31 +12,29 @@
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Unclosed</string> </value>
<value> <string>Unclose</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/discussion_thread_workflow/state_draft</string>
<string>after_script/portal_workflow/discussion_thread_workflow/transition_unclose</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Unclose the thread.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -58,17 +56,15 @@
<value> <string>transition_unclose_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Unclose Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/discussion_thread_workflow/state_public</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_unhide</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Unhide</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=unhide_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Unhide</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Unhide a thread in the forum</string> </value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_unhide_action</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Unhide Action</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/discussion_thread_workflow/state_public</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_unstick</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Unstick</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -8,35 +8,33 @@
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=sticky_action</string> </value>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=unstick_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Sticky</string> </value>
<value> <string>Unstick</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>after_script/portal_workflow/discussion_thread_workflow/transition_sticky</string>
<string>after_script/portal_workflow/discussion_thread_workflow/transition_unstick</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Sticky the thread.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
<none/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
......@@ -55,19 +53,17 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_sticky_action</string> </value>
<value> <string>transition_unstick_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Sticky Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
<value> <string>Unstick Action</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -6,13 +6,9 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The last transition</string> </value>
<value> <string>Transition id</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
......@@ -22,20 +18,6 @@
<key> <string>id</string> </key>
<value> <string>variable_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>transition/getReference|nothing</string> </value>
......
......@@ -6,13 +6,9 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The name of the user who performed the last transition</string> </value>
<value> <string>Name of the user who performed transition</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
......@@ -22,20 +18,6 @@
<key> <string>id</string> </key>
<value> <string>variable_actor</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>user/getIdOrUserName</string> </value>
......
......@@ -6,13 +6,9 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Comments about the last transition</string> </value>
<value> <string>Comment about transition</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
......@@ -22,20 +18,6 @@
<key> <string>id</string> </key>
<value> <string>variable_comment</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>python:state_change.kwargs.get(\'comment\', \'\')</string> </value>
......
......@@ -6,10 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Error message if validation failed</string> </value>
......@@ -22,20 +18,6 @@
<key> <string>id</string> </key>
<value> <string>variable_error_message</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -22,20 +22,10 @@
<key> <string>id</string> </key>
<value> <string>variable_history</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>state_change/getHistory</string> </value>
......
......@@ -12,30 +12,16 @@
</item>
<item>
<key> <string>description</string> </key>
<value> <string>portal type (use as filter for worklists)</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>1</int> </value>
<value> <string>Portal type (used as filter for worklists)</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variable_portal_type</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -6,13 +6,9 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Time of the last transition</string> </value>
<value> <string>Transition timestamp</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
......@@ -22,20 +18,6 @@
<key> <string>id</string> </key>
<value> <string>variable_time</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>state_change/getDateTime</string> </value>
......
2013-09-09 arnaud.fontaine
* ZODB Components: Migrate bt5 test to Live Test.
2013-09-08 arnaud.fontaine
* ZODB Components: Revert 'Allow to execute runUnitTest for bt5 Test Components' to fix tests bootstrap.
2013-09-03 arnaud.fontaine
* ZODB Components: Workflow History must always be kept, so avoid an extra step for developers.
2013-08-28 arnaud.fontaine
* ZODB Components: Migrate Documents, Extensions and Tests.
2011-02-23 Minashe
* Initial release.
\ No newline at end of file
2011 © Nexedi SA
\ No newline at end of file
erp5_base,
erp5_web,
erp5_ingestion_mysql_innodb_catalog,
erp5_ingestion,
erp5_dms
\ No newline at end of file
This business template is a result of http://www.erp5.com/developer-Learning.Track.Forum tutorial.
\ No newline at end of file
GPL
\ No newline at end of file
test.erp5.testDiscussionThread
\ No newline at end of file
erp5_full_text_mroonga_catalog
erp5_base
erp5_web
erp5_ingestion_mysql_innodb_catalog
erp5_ingestion
\ No newline at end of file
1.0
\ No newline at end of file
1
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment