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 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>OFS.Folder</string>
<string>Folder</string>
</tuple>
<none/>
<global name="Folder" module="OFS.Folder"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -18,12 +15,39 @@
<none/>
</value>
</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>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</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>
<key> <string>id</string> </key>
<value> <string>erp5_ical_style</string> </value>
......
......@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -74,11 +71,18 @@
or events related to the same sale opportunity)\n
"""\n
project = None\n
ptype = context.getPortalType()\n
if ptype == \'Task\':\n
project = context.getSourceProjectValue()\n
if ptype in context.getPortalEventTypeList():\n
project = context.getFollowUpValue()\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
project = real_context.getSourceProjectValue()\n
elif portal_type in context.getPortalEventTypeList():\n
project = real_context.getFollowUpValue()\n
\n
if project is not None:\n
# we have to tweak here because not all object have references\n
if hasattr(project, \'getReference\'):\n
......@@ -102,7 +106,7 @@ return \'\'\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
<value> <string>brainObject=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -122,17 +126,19 @@ return \'\'\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>brainObject</string>
<string>None</string>
<string>project</string>
<string>_getattr_</string>
<string>real_context</string>
<string>context</string>
<string>ptype</string>
<string>_getattr_</string>
<string>portal_type</string>
<string>hasattr</string>
</tuple>
</value>
......@@ -145,7 +151,9 @@ return \'\'\n
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<none/>
</tuple>
</value>
</item>
<item>
......
......@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -69,17 +66,21 @@
<item>
<key> <string>_body</string> </key>
<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
anything else is an event too.\n
anything else is an journal.\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
ptype = context.getPortalType()\n
if ptype == \'Task\':\n
if portal_type == \'Task\':\n
return \'todo\'\n
if ptype in context.getPortalEventTypeList():\n
elif portal_type in context.getPortalEventTypeList():\n
return \'event\'\n
return \'event\'\n
return \'journal\'\n
</string> </value>
</item>
<item>
......@@ -96,7 +97,7 @@ return \'event\'\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
<value> <string>brainObject=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -116,15 +117,17 @@ return \'event\'\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>brainObject</string>
<string>None</string>
<string>portal_type</string>
<string>_getattr_</string>
<string>context</string>
<string>ptype</string>
</tuple>
</value>
</item>
......@@ -136,7 +139,9 @@ return \'event\'\n
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<none/>
</tuple>
</value>
</item>
<item>
......
......@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -68,7 +65,7 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>return context.Base_getICalStatusItem()[1]\n
<value> <string>return context.Base_getICalStatusItem(brainObject)[1]\n
</string> </value>
</item>
<item>
......@@ -85,7 +82,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
<value> <string>brainObject=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -105,15 +102,16 @@
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>brainObject</string>
<string>_getitem_</string>
<string>_getattr_</string>
<string>context</string>
<string>context</string>
</tuple>
</value>
</item>
......@@ -125,7 +123,9 @@
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<none/>
</tuple>
</value>
</item>
<item>
......
......@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -68,7 +65,7 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>return context.Base_getICalStatusItem()[0]\n
<value> <string>return context.Base_getICalStatusItem(brainObject)[0]\n
</string> </value>
</item>
<item>
......@@ -85,7 +82,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
<value> <string>brainObject=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -105,12 +102,13 @@
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>brainObject</string>
<string>_getitem_</string>
<string>_getattr_</string>
<string>context</string>
......@@ -125,7 +123,9 @@
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<none/>
</tuple>
</value>
</item>
<item>
......
......@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -69,17 +66,15 @@
<item>
<key> <string>_body</string> </key>
<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
Status is one of: \'needs-action\', \'in-process\', \'completed\' and \'cancelled\'\n
or nothing, then we\'ll assume it is \'needs-action\'.\n
Sample implementation for a Task:\n
For todo status is one of: \'needs-action\', \'in-process\', \'completed\' and \'cancelled\' or nothing,\n
then we\'ll assume it is \'needs-action\'.\n
For event status is one of: \'cancelled\', \'confirmed\', \'tentative\' or nothing, \n
then we\'ll assume it is \'tentative\'.\n
"""\n
\n
if context.getPortalType() != \'Task\':\n
return (\'\', 0)\n
\n
status_map = {\n
status = \'\'\n
status_map_task = {\n
\'draft\' : (\'needs-action\', 0),\n
\'planned\' : (\'needs-action\', 33),\n
\'ordered\' : (\'in-process\', 66),\n
......@@ -87,7 +82,26 @@ status_map = {\n
\'cancelled\' : (\'cancelled\', 0)\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>
</item>
<item>
......@@ -104,7 +118,7 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
<value> <string>brainObject=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -124,15 +138,24 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<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>status_map</string>
<string>_getattr_</string>
<string>portal_type</string>
<string>_getiter_</string>
<string>status_item</string>
<string>_getitem_</string>
</tuple>
</value>
</item>
......@@ -144,7 +167,9 @@ return status_map.get(context.getSimulationState(), (\'\', 0))\n
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<none/>
</tuple>
</value>
</item>
<item>
......
......@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.ERP5Form.Form</string>
<string>ERP5Form</string>
</tuple>
<none/>
<global name="ERP5Form" module="Products.ERP5Form.Form"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -49,6 +46,16 @@
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
......@@ -74,7 +81,7 @@
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<key> <string>bottom</string> </key>
<value>
<list>
<string>listbox</string>
......@@ -82,25 +89,25 @@
</value>
</item>
<item>
<key> <string>center</string> </key>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<key> <string>right</string> </key>
<value>
<list/>
</value>
......@@ -118,11 +125,11 @@
</item>
<item>
<key> <string>name</string> </key>
<value> <string>Folder_asRSS</string> </value>
<value> <string>Folder_viewContentListAsICal</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>template_ical_style</string> </value>
<value> <string>ical_view</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
......
......@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.ERP5Form.ListBox</string>
<string>ListBox</string>
</tuple>
<none/>
<global name="ListBox" module="Products.ERP5Form.ListBox"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -319,49 +316,53 @@
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>anchor</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>columns</string> </key>
<value>
<list>
<tuple>
<string>title</string>
<string>ical_summary</string>
<string>summary</string>
</tuple>
<tuple>
<string>creation_date</string>
<string>ical_created</string>
<string>created</string>
</tuple>
<tuple>
<string>modification_date</string>
<string>ical_last-modified</string>
<string>last-modified</string>
</tuple>
<tuple>
<string>uid</string>
<string>ical_uid</string>
<string>uid</string>
</tuple>
<tuple>
<string>start_date</string>
<string>ical_dtstart</string>
<string>dtstart</string>
</tuple>
<tuple>
<string>stop_date</string>
<string>ical_dtend</string>
<string>dtend</string>
</tuple>
<tuple>
<string>Base_getICalComponent</string>
<string>ical_component</string>
<string>component</string>
</tuple>
<tuple>
<string>Base_getICalCategory</string>
<string>ical_categories</string>
<string>categories</string>
</tuple>
<tuple>
<string>Base_getICalStatus</string>
<string>ical_status</string>
<string>status</string>
</tuple>
<tuple>
<string>Base_getICalPercentComplete</string>
<string>ical_percent-complete</string>
<string>percent-complete</string>
</tuple>
</list>
</value>
......@@ -444,7 +445,7 @@
</item>
<item>
<key> <string>page_template</string> </key>
<value> <string>Listbox_viewAsICal</string> </value>
<value> <string></string> </value>
</item>
<item>
<key> <string>portal_types</string> </key>
......@@ -521,11 +522,8 @@
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.MethodField</string>
<string>Method</string>
</tuple>
<none/>
<global name="Method" module="Products.Formulator.MethodField"/>
<tuple/>
</tuple>
</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 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>OFS.DTMLMethod</string>
<string>DTMLMethod</string>
</tuple>
<none/>
<global name="DTMLMethod" module="OFS.DTMLMethod"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -38,39 +35,110 @@
<key> <string>raw</string> </key>
<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-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
BEGIN:VEVENT\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
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
</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(\'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
</dtml-if>\n
<dtml-if expr="loop_item.get(\'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 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
</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
</dtml-if>\n
<dtml-if expr="loop_item[\'COMPONENT\']==\'todo\'">\n
BEGIN:VTODO\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
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
</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(\'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
</dtml-if>\n
<dtml-if expr="loop_item.get(\'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
COMPLETED:<dtml-var expr="loop_item[\'COMPLETED\']">\n
</dtml-if>\n
......@@ -80,14 +148,9 @@ PERCENT-COMPLETE:<dtml-var expr="loop_item[\'PERCENT-COMPLETE\']">\n
<dtml-if expr="loop_item.get(\'LOCATION\')">\n
LOCATION:<dtml-var expr="loop_item[\'LOCATION\']">\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
</dtml-if>\n
</dtml-in>\n
END:VCALENDAR\n
</dtml-in>
]]></string> </value>
</item>
......
......@@ -3,11 +3,8 @@
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PageTemplates.ZopePageTemplate</string>
<string>ZopePageTemplate</string>
</tuple>
<none/>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
<tuple/>
</tuple>
</pickle>
<pickle>
......@@ -48,12 +45,7 @@
<key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
<tal:block tal:define="dummy python:request.RESPONSE.setHeader(\'Content-Type\', \'text/calendar;; charset=utf-8\');"\n
><tal:block tal:define="listbox python:form[\'listbox\'];" \n
><tal:block tal:content="structure python: listbox.render()" />\n
</tal:block>\n
</tal:block>\n
<tal:block metal:use-macro="here/ical_view/macros/master" />
]]></string> </value>
</item>
......@@ -67,7 +59,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_ical_style</string> </value>
<value> <string>form_list</string> </value>
</item>
<item>
<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
Release-ready.
* Release-ready.
2007-08-13
First working version.
\ No newline at end of file
* First working version.
\ No newline at end of file
7
\ No newline at end of file
14
\ No newline at end of file
erp5_ical_core
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