Commit 3d15d7d4 authored by Ivan Tyagov's avatar Ivan Tyagov

Make iCal bt5 more generic and add support for dynamic skin selection from URL.

Return always dates in UTC.
Make ICal style applicable anywhere in an ERP5 site.
Update XML.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@22723 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 812285ee
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Folder" module="OFS.Folder"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_ical_core</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<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>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
<tal:block metal:define-macro="master"\n
><tal:block tal:define="dummy python: request.RESPONSE.setHeader(\'Content-Type\', \'text/calendar;; charset=utf-8\');\n
ical_string string:iCal;\n
dummy python: context.getPortalObject().portal_skins.changeSkin(ical_string);\n
dummy python: request.set(\'portal_skin\', ical_string);"\n
><tal:block tal:define="listbox_fields python: [field for field in form.get_fields() if\n
(field.meta_type == \'ListBox\' or \n
field.meta_type == \'ProxyField\' and\n
field.getRecursiveTemplateField().meta_type == \'ListBox\')]"\n
>BEGIN:VCALENDAR\n
VERSION:2.0\n
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\n
<tal:block tal:repeat="listbox_field listbox_fields"\n
><tal:block tal:content="structure python: listbox_field.render()"/></tal:block\n
>END:VCALENDAR</tal:block\n
></tal:block\n
></tal:block>
]]></string> </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>ical_view</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="Folder" module="OFS.Folder"/>
<string>OFS.Folder</string> <tuple/>
<string>Folder</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -18,12 +15,39 @@ ...@@ -18,12 +15,39 @@
<none/> <none/>
</value> </value>
</item> </item>
<item>
<key> <string>_local_properties</string> </key>
<value>
<tuple>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>business_template_registered_skin_selections</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item> <item>
<key> <string>_objects</string> </key> <key> <string>_objects</string> </key>
<value> <value>
<tuple/> <tuple/>
</value> </value>
</item> </item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>business_template_registered_skin_selections</string> </key>
<value> <string>iCal</string> </value>
</item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>erp5_ical_style</string> </value> <value> <string>erp5_ical_style</string> </value>
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<string>Products.PythonScripts.PythonScript</string> <tuple/>
<string>PythonScript</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -74,11 +71,18 @@ ...@@ -74,11 +71,18 @@
or events related to the same sale opportunity)\n or events related to the same sale opportunity)\n
"""\n """\n
project = None\n project = None\n
ptype = context.getPortalType()\n \n
if ptype == \'Task\':\n if brainObject is not None:\n
project = context.getSourceProjectValue()\n real_context = brainObject\n
if ptype in context.getPortalEventTypeList():\n else:\n
project = context.getFollowUpValue()\n real_context = context\n
\n
portal_type = real_context.getPortalType()\n
if portal_type == \'Task\':\n
project = real_context.getSourceProjectValue()\n
elif portal_type in context.getPortalEventTypeList():\n
project = real_context.getFollowUpValue()\n
\n
if project is not None:\n if project is not None:\n
# we have to tweak here because not all object have references\n # we have to tweak here because not all object have references\n
if hasattr(project, \'getReference\'):\n if hasattr(project, \'getReference\'):\n
...@@ -102,7 +106,7 @@ return \'\'\n ...@@ -102,7 +106,7 @@ return \'\'\n
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string></string> </value> <value> <string>brainObject=None</string> </value>
</item> </item>
<item> <item>
<key> <string>errors</string> </key> <key> <string>errors</string> </key>
...@@ -122,17 +126,19 @@ return \'\'\n ...@@ -122,17 +126,19 @@ return \'\'\n
<dictionary> <dictionary>
<item> <item>
<key> <string>co_argcount</string> </key> <key> <string>co_argcount</string> </key>
<value> <int>0</int> </value> <value> <int>1</int> </value>
</item> </item>
<item> <item>
<key> <string>co_varnames</string> </key> <key> <string>co_varnames</string> </key>
<value> <value>
<tuple> <tuple>
<string>brainObject</string>
<string>None</string> <string>None</string>
<string>project</string> <string>project</string>
<string>_getattr_</string> <string>real_context</string>
<string>context</string> <string>context</string>
<string>ptype</string> <string>_getattr_</string>
<string>portal_type</string>
<string>hasattr</string> <string>hasattr</string>
</tuple> </tuple>
</value> </value>
...@@ -145,7 +151,9 @@ return \'\'\n ...@@ -145,7 +151,9 @@ return \'\'\n
<item> <item>
<key> <string>func_defaults</string> </key> <key> <string>func_defaults</string> </key>
<value> <value>
<tuple>
<none/> <none/>
</tuple>
</value> </value>
</item> </item>
<item> <item>
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<string>Products.PythonScripts.PythonScript</string> <tuple/>
<string>PythonScript</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -69,17 +66,21 @@ ...@@ -69,17 +66,21 @@
<item> <item>
<key> <string>_body</string> </key> <key> <string>_body</string> </key>
<value> <string>"""\n <value> <string>"""\n
Figure out if it is an event or a todo.\n Figure out if it is an journal, event or a todo.\n
Sample implementation: Task is a todo, event is an event, \n Sample implementation: Task is a todo, event is an event, \n
anything else is an event too.\n anything else is an journal.\n
"""\n """\n
portal_type = None\n
if brainObject is not None:\n
portal_type = brainObject.getPortalType()\n
else:\n
portal_type = context.getPortalType()\n
\n \n
ptype = context.getPortalType()\n if portal_type == \'Task\':\n
if ptype == \'Task\':\n
return \'todo\'\n return \'todo\'\n
if ptype in context.getPortalEventTypeList():\n elif portal_type in context.getPortalEventTypeList():\n
return \'event\'\n return \'event\'\n
return \'event\'\n return \'journal\'\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
...@@ -96,7 +97,7 @@ return \'event\'\n ...@@ -96,7 +97,7 @@ return \'event\'\n
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string></string> </value> <value> <string>brainObject=None</string> </value>
</item> </item>
<item> <item>
<key> <string>errors</string> </key> <key> <string>errors</string> </key>
...@@ -116,15 +117,17 @@ return \'event\'\n ...@@ -116,15 +117,17 @@ return \'event\'\n
<dictionary> <dictionary>
<item> <item>
<key> <string>co_argcount</string> </key> <key> <string>co_argcount</string> </key>
<value> <int>0</int> </value> <value> <int>1</int> </value>
</item> </item>
<item> <item>
<key> <string>co_varnames</string> </key> <key> <string>co_varnames</string> </key>
<value> <value>
<tuple> <tuple>
<string>brainObject</string>
<string>None</string>
<string>portal_type</string>
<string>_getattr_</string> <string>_getattr_</string>
<string>context</string> <string>context</string>
<string>ptype</string>
</tuple> </tuple>
</value> </value>
</item> </item>
...@@ -136,7 +139,9 @@ return \'event\'\n ...@@ -136,7 +139,9 @@ return \'event\'\n
<item> <item>
<key> <string>func_defaults</string> </key> <key> <string>func_defaults</string> </key>
<value> <value>
<tuple>
<none/> <none/>
</tuple>
</value> </value>
</item> </item>
<item> <item>
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<string>Products.PythonScripts.PythonScript</string> <tuple/>
<string>PythonScript</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -68,7 +65,7 @@ ...@@ -68,7 +65,7 @@
</item> </item>
<item> <item>
<key> <string>_body</string> </key> <key> <string>_body</string> </key>
<value> <string>return context.Base_getICalStatusItem()[1]\n <value> <string>return context.Base_getICalStatusItem(brainObject)[1]\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
...@@ -85,7 +82,7 @@ ...@@ -85,7 +82,7 @@
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string></string> </value> <value> <string>brainObject=None</string> </value>
</item> </item>
<item> <item>
<key> <string>errors</string> </key> <key> <string>errors</string> </key>
...@@ -105,15 +102,16 @@ ...@@ -105,15 +102,16 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>co_argcount</string> </key> <key> <string>co_argcount</string> </key>
<value> <int>0</int> </value> <value> <int>1</int> </value>
</item> </item>
<item> <item>
<key> <string>co_varnames</string> </key> <key> <string>co_varnames</string> </key>
<value> <value>
<tuple> <tuple>
<string>brainObject</string>
<string>_getitem_</string> <string>_getitem_</string>
<string>_getattr_</string> <string>_getattr_</string>
<string>context</string> <string>context</string>
</tuple> </tuple>
</value> </value>
</item> </item>
...@@ -125,7 +123,9 @@ ...@@ -125,7 +123,9 @@
<item> <item>
<key> <string>func_defaults</string> </key> <key> <string>func_defaults</string> </key>
<value> <value>
<tuple>
<none/> <none/>
</tuple>
</value> </value>
</item> </item>
<item> <item>
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<string>Products.PythonScripts.PythonScript</string> <tuple/>
<string>PythonScript</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -68,7 +65,7 @@ ...@@ -68,7 +65,7 @@
</item> </item>
<item> <item>
<key> <string>_body</string> </key> <key> <string>_body</string> </key>
<value> <string>return context.Base_getICalStatusItem()[0]\n <value> <string>return context.Base_getICalStatusItem(brainObject)[0]\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
...@@ -85,7 +82,7 @@ ...@@ -85,7 +82,7 @@
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string></string> </value> <value> <string>brainObject=None</string> </value>
</item> </item>
<item> <item>
<key> <string>errors</string> </key> <key> <string>errors</string> </key>
...@@ -105,12 +102,13 @@ ...@@ -105,12 +102,13 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>co_argcount</string> </key> <key> <string>co_argcount</string> </key>
<value> <int>0</int> </value> <value> <int>1</int> </value>
</item> </item>
<item> <item>
<key> <string>co_varnames</string> </key> <key> <string>co_varnames</string> </key>
<value> <value>
<tuple> <tuple>
<string>brainObject</string>
<string>_getitem_</string> <string>_getitem_</string>
<string>_getattr_</string> <string>_getattr_</string>
<string>context</string> <string>context</string>
...@@ -125,7 +123,9 @@ ...@@ -125,7 +123,9 @@
<item> <item>
<key> <string>func_defaults</string> </key> <key> <string>func_defaults</string> </key>
<value> <value>
<tuple>
<none/> <none/>
</tuple>
</value> </value>
</item> </item>
<item> <item>
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<string>Products.PythonScripts.PythonScript</string> <tuple/>
<string>PythonScript</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -69,17 +66,15 @@ ...@@ -69,17 +66,15 @@
<item> <item>
<key> <string>_body</string> </key> <key> <string>_body</string> </key>
<value> <string>"""\n <value> <string>"""\n
Give an ICal status and percent-completed for a todo entry.\n Give an ICal status and percent-completed for a todo entry and status for a event entry.\n
Return a tuple of (status, percent_complete).\n Return a tuple of (status, percent_complete).\n
Status is one of: \'needs-action\', \'in-process\', \'completed\' and \'cancelled\'\n For todo status is one of: \'needs-action\', \'in-process\', \'completed\' and \'cancelled\' or nothing,\n
or nothing, then we\'ll assume it is \'needs-action\'.\n then we\'ll assume it is \'needs-action\'.\n
Sample implementation for a Task:\n For event status is one of: \'cancelled\', \'confirmed\', \'tentative\' or nothing, \n
then we\'ll assume it is \'tentative\'.\n
"""\n """\n
\n status = \'\'\n
if context.getPortalType() != \'Task\':\n status_map_task = {\n
return (\'\', 0)\n
\n
status_map = {\n
\'draft\' : (\'needs-action\', 0),\n \'draft\' : (\'needs-action\', 0),\n
\'planned\' : (\'needs-action\', 33),\n \'planned\' : (\'needs-action\', 33),\n
\'ordered\' : (\'in-process\', 66),\n \'ordered\' : (\'in-process\', 66),\n
...@@ -87,7 +82,26 @@ status_map = {\n ...@@ -87,7 +82,26 @@ status_map = {\n
\'cancelled\' : (\'cancelled\', 0)\n \'cancelled\' : (\'cancelled\', 0)\n
}\n }\n
\n \n
return status_map.get(context.getSimulationState(), (\'\', 0))\n status_map_event = {\n
\'CANCELLED\' : (\'expired\', \'deleted\', \'cancelled\'),\n
\'CONFIRMED\' : (\'started\', \'responded\', \'delivered\', \'assigned\', \'acknowledged\'),\n
\'TENTATIVE\' : (\'draft\', \'planned\', \'new\', \'ordered\')\n
}\n
\n
if brainObject is not None:\n
real_context = brainObject\n
else:\n
real_context = context\n
\n
portal_type = real_context.getPortalType()\n
if portal_type == \'Task\':\n
return status_map_task.get(real_context.getSimulationState(), (\'\', 0))\n
elif portal_type in context.getPortalEventTypeList():\n
for status_item in status_map_event:\n
if real_context.getSimulationState() in status_map_event[status_item]:\n
status = status_item\n
break\n
return (status, 0)\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
...@@ -104,7 +118,7 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n ...@@ -104,7 +118,7 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string></string> </value> <value> <string>brainObject=None</string> </value>
</item> </item>
<item> <item>
<key> <string>errors</string> </key> <key> <string>errors</string> </key>
...@@ -124,15 +138,24 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n ...@@ -124,15 +138,24 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n
<dictionary> <dictionary>
<item> <item>
<key> <string>co_argcount</string> </key> <key> <string>co_argcount</string> </key>
<value> <int>0</int> </value> <value> <int>1</int> </value>
</item> </item>
<item> <item>
<key> <string>co_varnames</string> </key> <key> <string>co_varnames</string> </key>
<value> <value>
<tuple> <tuple>
<string>_getattr_</string> <string>brainObject</string>
<string>status</string>
<string>status_map_task</string>
<string>status_map_event</string>
<string>None</string>
<string>real_context</string>
<string>context</string> <string>context</string>
<string>status_map</string> <string>_getattr_</string>
<string>portal_type</string>
<string>_getiter_</string>
<string>status_item</string>
<string>_getitem_</string>
</tuple> </tuple>
</value> </value>
</item> </item>
...@@ -144,7 +167,9 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n ...@@ -144,7 +167,9 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n
<item> <item>
<key> <string>func_defaults</string> </key> <key> <string>func_defaults</string> </key>
<value> <value>
<tuple>
<none/> <none/>
</tuple>
</value> </value>
</item> </item>
<item> <item>
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="ERP5Form" module="Products.ERP5Form.Form"/>
<string>Products.ERP5Form.Form</string> <tuple/>
<string>ERP5Form</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -49,6 +46,16 @@ ...@@ -49,6 +46,16 @@
<key> <string>action</string> </key> <key> <string>action</string> </key>
<value> <string></string> </value> <value> <string></string> </value>
</item> </item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item> <item>
<key> <string>encoding</string> </key> <key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value> <value> <string>UTF-8</string> </value>
...@@ -118,11 +125,11 @@ ...@@ -118,11 +125,11 @@
</item> </item>
<item> <item>
<key> <string>name</string> </key> <key> <string>name</string> </key>
<value> <string>Folder_asRSS</string> </value> <value> <string>Folder_viewContentListAsICal</string> </value>
</item> </item>
<item> <item>
<key> <string>pt</string> </key> <key> <string>pt</string> </key>
<value> <string>template_ical_style</string> </value> <value> <string>ical_view</string> </value>
</item> </item>
<item> <item>
<key> <string>row_length</string> </key> <key> <string>row_length</string> </key>
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="ListBox" module="Products.ERP5Form.ListBox"/>
<string>Products.ERP5Form.ListBox</string> <tuple/>
<string>ListBox</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -319,49 +316,53 @@ ...@@ -319,49 +316,53 @@
<key> <string>alternate_name</string> </key> <key> <string>alternate_name</string> </key>
<value> <string></string> </value> <value> <string></string> </value>
</item> </item>
<item>
<key> <string>anchor</string> </key>
<value> <int>0</int> </value>
</item>
<item> <item>
<key> <string>columns</string> </key> <key> <string>columns</string> </key>
<value> <value>
<list> <list>
<tuple> <tuple>
<string>title</string> <string>title</string>
<string>ical_summary</string> <string>summary</string>
</tuple> </tuple>
<tuple> <tuple>
<string>creation_date</string> <string>creation_date</string>
<string>ical_created</string> <string>created</string>
</tuple> </tuple>
<tuple> <tuple>
<string>modification_date</string> <string>modification_date</string>
<string>ical_last-modified</string> <string>last-modified</string>
</tuple> </tuple>
<tuple> <tuple>
<string>uid</string> <string>uid</string>
<string>ical_uid</string> <string>uid</string>
</tuple> </tuple>
<tuple> <tuple>
<string>start_date</string> <string>start_date</string>
<string>ical_dtstart</string> <string>dtstart</string>
</tuple> </tuple>
<tuple> <tuple>
<string>stop_date</string> <string>stop_date</string>
<string>ical_dtend</string> <string>dtend</string>
</tuple> </tuple>
<tuple> <tuple>
<string>Base_getICalComponent</string> <string>Base_getICalComponent</string>
<string>ical_component</string> <string>component</string>
</tuple> </tuple>
<tuple> <tuple>
<string>Base_getICalCategory</string> <string>Base_getICalCategory</string>
<string>ical_categories</string> <string>categories</string>
</tuple> </tuple>
<tuple> <tuple>
<string>Base_getICalStatus</string> <string>Base_getICalStatus</string>
<string>ical_status</string> <string>status</string>
</tuple> </tuple>
<tuple> <tuple>
<string>Base_getICalPercentComplete</string> <string>Base_getICalPercentComplete</string>
<string>ical_percent-complete</string> <string>percent-complete</string>
</tuple> </tuple>
</list> </list>
</value> </value>
...@@ -444,7 +445,7 @@ ...@@ -444,7 +445,7 @@
</item> </item>
<item> <item>
<key> <string>page_template</string> </key> <key> <string>page_template</string> </key>
<value> <string>Listbox_viewAsICal</string> </value> <value> <string></string> </value>
</item> </item>
<item> <item>
<key> <string>portal_types</string> </key> <key> <string>portal_types</string> </key>
...@@ -521,11 +522,8 @@ ...@@ -521,11 +522,8 @@
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="Method" module="Products.Formulator.MethodField"/>
<string>Products.Formulator.MethodField</string> <tuple/>
<string>Method</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Change_bindings_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Change_cache_settings_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Change_permissions_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_FTP_access_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Manage_WebDAV_Locks_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Manage_properties_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Take_ownership_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_Undo_changes_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_View_management_screens_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_WebDAV_Lock_items_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_WebDAV_Unlock_items_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>_WebDAV_access_Permission</string> </key>
<value>
<list>
<string>Manager</string>
</list>
</value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<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>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
<tal:block \n
xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:i18n="http://xml.zope.org/namespaces/i18n"\n
tal:define="line_list here/query;\n
label_list here/getLabelValueList;\n
real_context here/getContext;"\n
><tal:block tal:replace="structure python: real_context.Listbox_asICal(label_list, line_list)"/></tal:block>
]]></string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/calendar; charset=utf-8</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ListBox_asHTML</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="DTMLMethod" module="OFS.DTMLMethod"/>
<string>OFS.DTMLMethod</string> <tuple/>
<string>DTMLMethod</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -38,39 +35,110 @@ ...@@ -38,39 +35,110 @@
<key> <string>raw</string> </key> <key> <string>raw</string> </key>
<value> <string encoding="cdata"><![CDATA[ <value> <string encoding="cdata"><![CDATA[
BEGIN:VCALENDAR\n
VERSION:2.0\n
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\n
<dtml-in prefix="loop" expr="items">\n <dtml-in prefix="loop" expr="items">\n
<dtml-if expr="loop_item[\'COMPONENT\']==\'journal\'">\n
BEGIN:VJOURNAL\n
<dtml-if expr="loop_item.get(\'CREATED\')">\n
CREATED:<dtml-var expr="loop_item[\'CREATED\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'LAST-MODIFIED\')">\n
LAST-MODIFIED:<dtml-var expr="loop_item[\'LAST-MODIFIED\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'DTSTAMP\')">\n
DTSTAMP:<dtml-var expr="loop_item[\'DTSTAMP\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'UID\')">\n
UID:uuid<dtml-var expr="loop_item[\'UID\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'SUMMARY\')">\n
SUMMARY:<dtml-var expr="loop_item[\'SUMMARY\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'DESCRIPTION\')">\n
DESCRIPTION:<dtml-var expr="loop_item[\'DESCRIPTION\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'DTSTART\')">\n
DTSTART:<dtml-var expr="loop_item[\'DTSTART\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'URL\')">\n
URL:<dtml-var expr="loop_item[\'URL\']">\n
</dtml-if>\n
END:VJOURNAL\n
</dtml-if>\n
<dtml-if expr="loop_item[\'COMPONENT\']==\'event\'">\n <dtml-if expr="loop_item[\'COMPONENT\']==\'event\'">\n
BEGIN:VEVENT\n BEGIN:VEVENT\n
<dtml-if expr="loop_item.get(\'CREATED\')">\n
CREATED:<dtml-var expr="loop_item[\'CREATED\']">\n CREATED:<dtml-var expr="loop_item[\'CREATED\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'LAST-MODIFIED\')">\n
LAST-MODIFIED:<dtml-var expr="loop_item[\'LAST-MODIFIED\']">\n LAST-MODIFIED:<dtml-var expr="loop_item[\'LAST-MODIFIED\']">\n
DTSTAMP:<dtml-var expr="loop_item[\'CREATED\']">\n </dtml-if>\n
<dtml-if expr="loop_item.get(\'DTSTAMP\')">\n
DTSTAMP:<dtml-var expr="loop_item[\'DTSTAMP\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'UID\')">\n
UID:uuid<dtml-var expr="loop_item[\'UID\']">\n UID:uuid<dtml-var expr="loop_item[\'UID\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'SUMMARY\')">\n
SUMMARY:<dtml-var expr="loop_item[\'SUMMARY\']">\n SUMMARY:<dtml-var expr="loop_item[\'SUMMARY\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'DESCRIPTION\')">\n
DESCRIPTION:<dtml-var expr="loop_item[\'DESCRIPTION\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'STATUS\')">\n
STATUS:<dtml-var expr="loop_item[\'STATUS\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'DTSTART\')">\n
DTSTART:<dtml-var expr="loop_item[\'DTSTART\']">\n DTSTART:<dtml-var expr="loop_item[\'DTSTART\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'DTEND\')">\n
DTEND:<dtml-var expr="loop_item[\'DTEND\']">\n DTEND:<dtml-var expr="loop_item[\'DTEND\']">\n
<dtml-if expr="loop_item.get(\'LOCATION\', \'\')">\n
LOCATION:<dtml-var expr="loop_item[\'LOCATION\']">\n
</dtml-if>\n </dtml-if>\n
<dtml-if expr="loop_item.get(\'CATEGORIES\', \'\')">\n <dtml-if expr="loop_item.get(\'URL\')">\n
URL:<dtml-var expr="loop_item[\'URL\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'CATEGORIES\')">\n
CATEGORIES:<dtml-var expr="loop_item[\'CATEGORIES\']">\n CATEGORIES:<dtml-var expr="loop_item[\'CATEGORIES\']">\n
</dtml-if>\n </dtml-if>\n
<dtml-if expr="loop_item.get(\'LOCATION\')">\n
LOCATION:<dtml-var expr="loop_item[\'LOCATION\']">\n
</dtml-if>\n
END:VEVENT\n END:VEVENT\n
</dtml-if>\n </dtml-if>\n
<dtml-if expr="loop_item[\'COMPONENT\']==\'todo\'">\n <dtml-if expr="loop_item[\'COMPONENT\']==\'todo\'">\n
BEGIN:VTODO\n BEGIN:VTODO\n
<dtml-if expr="loop_item.get(\'CREATED\')">\n
CREATED:<dtml-var expr="loop_item[\'CREATED\']">\n CREATED:<dtml-var expr="loop_item[\'CREATED\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'LAST-MODIFIED\')">\n
LAST-MODIFIED:<dtml-var expr="loop_item[\'LAST-MODIFIED\']">\n LAST-MODIFIED:<dtml-var expr="loop_item[\'LAST-MODIFIED\']">\n
DTSTAMP:<dtml-var expr="loop_item[\'CREATED\']">\n </dtml-if>\n
<dtml-if expr="loop_item.get(\'DTSTAMP\')">\n
DTSTAMP:<dtml-var expr="loop_item[\'DTSTAMP\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'UID\')">\n
UID:uuid<dtml-var expr="loop_item[\'UID\']">\n UID:uuid<dtml-var expr="loop_item[\'UID\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'SUMMARY\')">\n
SUMMARY:<dtml-var expr="loop_item[\'SUMMARY\']">\n SUMMARY:<dtml-var expr="loop_item[\'SUMMARY\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'DESCRIPTION\')">\n
DESCRIPTION:<dtml-var expr="loop_item[\'DESCRIPTION\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'STATUS\')">\n <dtml-if expr="loop_item.get(\'STATUS\')">\n
STATUS:<dtml-var expr="loop_item[\'STATUS\']">\n STATUS:<dtml-var expr="loop_item[\'STATUS\']">\n
</dtml-if>\n </dtml-if>\n
<dtml-if expr="loop_item.get(\'DTSTART\')">\n
DTSTART:<dtml-var expr="loop_item[\'DTSTART\']">\n DTSTART:<dtml-var expr="loop_item[\'DTSTART\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'DTEND\')">\n
DUE:<dtml-var expr="loop_item[\'DTEND\']">\n DUE:<dtml-var expr="loop_item[\'DTEND\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'URL\')">\n
URL:<dtml-var expr="loop_item[\'URL\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'CATEGORIES\')">\n
CATEGORIES:<dtml-var expr="loop_item[\'CATEGORIES\']">\n
</dtml-if>\n
<dtml-if expr="loop_item.get(\'COMPLETED\')">\n <dtml-if expr="loop_item.get(\'COMPLETED\')">\n
COMPLETED:<dtml-var expr="loop_item[\'COMPLETED\']">\n COMPLETED:<dtml-var expr="loop_item[\'COMPLETED\']">\n
</dtml-if>\n </dtml-if>\n
...@@ -80,14 +148,9 @@ PERCENT-COMPLETE:<dtml-var expr="loop_item[\'PERCENT-COMPLETE\']">\n ...@@ -80,14 +148,9 @@ PERCENT-COMPLETE:<dtml-var expr="loop_item[\'PERCENT-COMPLETE\']">\n
<dtml-if expr="loop_item.get(\'LOCATION\')">\n <dtml-if expr="loop_item.get(\'LOCATION\')">\n
LOCATION:<dtml-var expr="loop_item[\'LOCATION\']">\n LOCATION:<dtml-var expr="loop_item[\'LOCATION\']">\n
</dtml-if>\n </dtml-if>\n
<dtml-if expr="loop_item.get(\'CATEGORIES\')">\n
CATEGORIES:<dtml-var expr="loop_item[\'CATEGORIES\']">\n
</dtml-if>\n
END:VTODO\n END:VTODO\n
</dtml-if>\n </dtml-if>\n
</dtml-in>\n </dtml-in>
END:VCALENDAR\n
]]></string> </value> ]]></string> </value>
</item> </item>
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<tuple> <tuple>
<tuple> <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
<string>Products.PageTemplates.ZopePageTemplate</string> <tuple/>
<string>ZopePageTemplate</string>
</tuple>
<none/>
</tuple> </tuple>
</pickle> </pickle>
<pickle> <pickle>
...@@ -48,12 +45,7 @@ ...@@ -48,12 +45,7 @@
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[ <value> <string encoding="cdata"><![CDATA[
<tal:block tal:define="dummy python:request.RESPONSE.setHeader(\'Content-Type\', \'text/calendar;; charset=utf-8\');"\n <tal:block metal:use-macro="here/ical_view/macros/master" />
><tal:block tal:define="listbox python:form[\'listbox\'];" \n
><tal:block tal:content="structure python: listbox.render()" />\n
</tal:block>\n
</tal:block>\n
]]></string> </value> ]]></string> </value>
</item> </item>
...@@ -67,7 +59,7 @@ ...@@ -67,7 +59,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>template_ical_style</string> </value> <value> <string>form_list</string> </value>
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<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>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
<tal:block metal:use-macro="here/ical_view/macros/master" />
]]></string> </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>form_view</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
2007-07-22 zstoinov
* Make iCal bt5 more generic and add support for dynamic skin selection from URL.
2007-08-29 2007-08-29
Release-ready. * Release-ready.
2007-08-13 2007-08-13
First working version. * First working version.
\ No newline at end of file \ No newline at end of file
7 14
\ No newline at end of file \ No newline at end of file
erp5_ical_core
erp5_ical_style erp5_ical_style
\ 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