[CMF-checkins] SVN: CMF/branches/yuppie-formlib/CMFCalendar/ -
replaced event views by formlib based forms
Yvo Schubbe
y.2006_ at wcm-solutions.de
Thu Nov 2 13:26:57 EST 2006
Log message for revision 71031:
- replaced event views by formlib based forms
Changed:
U CMF/branches/yuppie-formlib/CMFCalendar/browser/configure.zcml
U CMF/branches/yuppie-formlib/CMFCalendar/browser/event.py
D CMF/branches/yuppie-formlib/CMFCalendar/browser/templates/event.pt
D CMF/branches/yuppie-formlib/CMFCalendar/browser/templates/event_edit.pt
U CMF/branches/yuppie-formlib/CMFCalendar/locales/cmf_calendar.pot
-=-
Modified: CMF/branches/yuppie-formlib/CMFCalendar/browser/configure.zcml
===================================================================
--- CMF/branches/yuppie-formlib/CMFCalendar/browser/configure.zcml 2006-11-02 18:10:11 UTC (rev 71030)
+++ CMF/branches/yuppie-formlib/CMFCalendar/browser/configure.zcml 2006-11-02 18:26:56 UTC (rev 71031)
@@ -2,12 +2,18 @@
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser">
+ <adapter factory=".event.EventSchemaAdapter"/>
+
+ <utility
+ component=".event.EventTypeVocabularyFactory"
+ name="AvailableEventTypes"
+ />
+
<browser:page
for="Products.CMFCalendar.interfaces.IEvent"
layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"
name="view.html"
class=".event.EventView"
- template="templates/event.pt"
permission="zope2.View"
/>
@@ -16,7 +22,6 @@
layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"
name="edit.html"
class=".event.EventEditView"
- template="templates/event_edit.pt"
permission="cmf.ModifyPortalContent"
/>
Modified: CMF/branches/yuppie-formlib/CMFCalendar/browser/event.py
===================================================================
--- CMF/branches/yuppie-formlib/CMFCalendar/browser/event.py 2006-11-02 18:10:11 UTC (rev 71030)
+++ CMF/branches/yuppie-formlib/CMFCalendar/browser/event.py 2006-11-02 18:26:56 UTC (rev 71031)
@@ -15,305 +15,161 @@
$Id$
"""
-from DateTime.DateTime import DateTime
+from zope.app.form.browser import DatetimeI18nWidget
+from zope.app.schema.vocabulary import IVocabularyFactory
+from zope.component import adapts
+from zope.formlib import form
+from zope.interface import implements
+from zope.interface import Interface
+from zope.schema import Choice
+from zope.schema import Datetime
+from zope.schema import Field
+from zope.schema import Set
+from zope.schema import Tuple
+from zope.schema import Text
+from zope.schema import TextLine
+from zope.schema import URI
-from Products.CMFDefault.exceptions import ResourceLockedError
+from Products.CMFCore.utils import getToolByName
+from Products.CMFDefault.formlib.form import ContentEditFormBase
+from Products.CMFDefault.formlib.form import DisplayFormBase
+from Products.CMFDefault.formlib.schema import EmailLine
+from Products.CMFDefault.formlib.schema import ProxyFieldProperty
+from Products.CMFDefault.formlib.schema import SchemaAdapterBase
+from Products.CMFDefault.formlib.vocabulary import SimpleVocabulary
+
+from Products.CMFCalendar.interfaces import IMutableEvent
from Products.CMFCalendar.utils import Message as _
-from Products.CMFDefault.browser.utils import decode
-from Products.CMFDefault.browser.utils import FormViewBase
-from Products.CMFDefault.browser.utils import memoize
-from Products.CMFDefault.browser.utils import ViewBase
+class EventTypeVocabulary(object):
-class EventView(ViewBase):
-
- """View for IEvent.
+ """Vocabulary factory for available event types.
"""
- # interface
+ implements(IVocabularyFactory)
- @memoize
- @decode
- def contact_name(self):
- return self.context.contact_name
+ def __call__(self, context):
+ context = getattr(context, 'context', context)
+ mdtool = getToolByName(context, 'portal_metadata')
+ items = [ (str(v), unicode(v), _(v))
+ for v in mdtool.listAllowedSubjects(context) ]
+ return SimpleVocabulary.fromTitleItems(items)
- @memoize
- @decode
- def location(self):
- return self.context.location
+EventTypeVocabularyFactory = EventTypeVocabulary()
- @memoize
- @decode
- def contact_email(self):
- return self.context.contact_email
- @memoize
- @decode
- def event_types(self):
- return self.context.Subject()
+class IEventSchema(Interface):
- @memoize
- @decode
- def contact_phone(self):
- return self.context.contact_phone
-
- @memoize
- @decode
- def event_url(self):
- return self.context.event_url
-
- @memoize
- @decode
- def start_date(self):
- return DateTime(self.context.start()).Date()
-
- @memoize
- @decode
- def start_time(self):
- return DateTime(self.context.start()).Time()
-
- @memoize
- @decode
- def stop_date(self):
- return DateTime(self.context.end()).Date()
-
- @memoize
- @decode
- def stop_time(self):
- return DateTime(self.context.end()).Time()
-
-
-class EventEditView(FormViewBase):
-
- """Edit view for IMutableEvent.
+ """Schema for event views.
"""
- _BUTTONS = ({'id': 'change',
- 'title': _(u'Change'),
- 'transform': ('edit_control',),
- 'redirect': ('portal_types', 'object/edit')},
- {'id': 'change_and_view',
- 'title': _(u'Change and View'),
- 'transform': ('edit_control',),
- 'redirect': ('portal_types', 'object/view')})
+ title = TextLine(
+ title=_(u'Title'),
+ required=False,
+ missing_value=u'',
+ max_length=100)
- # interface
+ contact_name = TextLine(
+ title=_(u'Contact Name'),
+ required=False,
+ missing_value=u'',
+ max_length=100)
- @memoize
- @decode
- def title(self):
- title = self.request.form.get('title', None)
+ location = TextLine(
+ title=_(u'Location'),
+ required=False,
+ missing_value=u'',
+ max_length=100)
- if title is None:
- title = self.context.Title()
+ contact_email = EmailLine(
+ title=_(u'Contact Email'),
+ required=False)
- return title
+ categories = Set(
+ title=_(u'Category'),
+ required=False,
+ missing_value=set(),
+ value_type=Choice(vocabulary="AvailableEventTypes"))
- @memoize
- @decode
- def description(self):
- description = self.request.form.get('description', None)
+ contact_phone = TextLine(
+ title=_(u'Contact Phone'),
+ required=False,
+ missing_value=u'',
+ max_length=100)
- if description is None:
- description = self.context.Description()
+ event_url = URI(
+ title=_(u'URL'),
+ required=False,
+ missing_value=u'',
+ max_length=100)
- return description
+ start_date = Datetime(
+ title=_(u'From'),)
- @memoize
- @decode
- def contact_name(self):
- contact_name = self.request.form.get('contact_name', None)
+ stop_date = Datetime(
+ title=_(u'To'),)
- if contact_name is None:
- contact_name = self.context.contact_name
+ description = Text(
+ title=_(u'Description'),
+ required=False,
+ missing_value=u'')
- return contact_name
- @memoize
- @decode
- def location(self):
- location = self.request.form.get('location', None)
+class EventSchemaAdapter(SchemaAdapterBase):
- if location is None:
- location = self.context.location
+ """Adapter for IMutableEvent.
+ """
- return location
+ adapts(IMutableEvent)
+ implements(IEventSchema)
- @memoize
- @decode
- def contact_email(self):
- contact_email = self.request.form.get('contact_email', None)
+ title = ProxyFieldProperty(IEventSchema['title'], 'Title', 'setTitle')
+ contact_name = ProxyFieldProperty(IEventSchema['contact_name'])
+ location = ProxyFieldProperty(IEventSchema['location'])
+ contact_email = ProxyFieldProperty(IEventSchema['contact_email'])
+ categories = ProxyFieldProperty(IEventSchema['categories'],
+ 'Subject', 'setSubject')
+ contact_phone = ProxyFieldProperty(IEventSchema['contact_phone'])
+ event_url = ProxyFieldProperty(IEventSchema['event_url'])
+ start_date = ProxyFieldProperty(IEventSchema['start_date'],
+ 'start', 'setStartDate')
+ stop_date = ProxyFieldProperty(IEventSchema['stop_date'],
+ 'end', 'setEndDate')
+ description = ProxyFieldProperty(IEventSchema['description'],
+ 'Description', 'setDescription')
- if contact_email is None:
- contact_email = self.context.contact_email
- return contact_email
+class EventViewMixin(object):
- @memoize
- @decode
- def event_type(self):
- event_type = self.request.form.get('event_type', None)
+ def setUpWidgets(self, ignore_request=False):
+ super(EventViewMixin,
+ self).setUpWidgets(ignore_request=ignore_request)
+ self.widgets['title'].split = True
+ self.widgets['contact_name'].split = True
+ self.widgets['location'].split = True
+ self.widgets['contact_email'].split = True
+ self.widgets['categories'].split = True
+ self.widgets['categories'].size = 4
+ self.widgets['contact_phone'].split = True
+ self.widgets['start_date'].split = True
+ self.widgets['stop_date'].split = True
+ self.widgets['description'].height = 5
- if event_type is None:
- event_type = self.context.Subject()
- return event_type
+class EventView(EventViewMixin, DisplayFormBase):
- @memoize
- @decode
- def contact_phone(self):
- contact_phone = self.request.form.get('contact_phone', None)
+ """View for IEvent.
+ """
- if contact_phone is None:
- contact_phone = self.context.contact_phone
+ form_fields = form.FormFields(IEventSchema)
- return contact_phone
- @memoize
- @decode
- def event_url(self):
- event_url = self.request.form.get('event_url', None)
+class EventEditView(EventViewMixin, ContentEditFormBase):
- if event_url is None:
- event_url = self.context.event_url
+ """Edit view for IMutableEvent.
+ """
- return event_url
-
- @memoize
- @decode
- def start_time(self):
- start_string = self.request.form.get('start_time', None)
-
- if start_string is None:
- start_string = self.context.getStartTimeString().split()[0]
-
- return start_string
-
- @memoize
- @decode
- def startAMPM(self):
- start_ampm = self.request.form.get('startAMPM', None)
-
- if start_ampm is None:
- time_strings = self.context.getStartTimeString().split()
- start_ampm = (len(time_strings) == 2 and time_strings[1] or 'pm')
-
- return start_ampm
-
- @memoize
- @decode
- def stop_time(self):
- stop_string = self.request.form.get('stop_time', None)
-
- if stop_string is None:
- stop_string = self.context.getStopTimeString().split()[0]
-
- return stop_string
-
- @memoize
- @decode
- def stopAMPM(self):
- stop_ampm = self.request.form.get('stopAMPM', None)
-
- if stop_ampm is None:
- time_strings = self.context.getStopTimeString().split()
- stop_ampm = (len(time_strings) == 2 and time_strings[1] or 'pm')
-
- return stop_ampm
-
- @memoize
- @decode
- def effectiveYear(self):
- effective_year = self.request.form.get('effectiveYear', None)
-
- if effective_year is None:
- effective_year = self.context.getStartStrings()['year']
-
- return effective_year
-
- @memoize
- @decode
- def effectiveMo(self):
- effective_month = self.request.form.get('effectiveMo', None)
-
- if effective_month is None:
- effective_month = self.context.getStartStrings()['month']
-
- return effective_month
-
- @memoize
- @decode
- def effectiveDay(self):
- effective_day = self.request.form.get('effectiveDay', None)
-
- if effective_day is None:
- effective_day = self.context.getStartStrings()['day']
-
- return effective_day
-
- @memoize
- @decode
- def expirationYear(self):
- expiration_year = self.request.form.get('expirationYear', None)
-
- if expiration_year is None:
- expiration_year = self.context.getEndStrings()['year']
-
- return expiration_year
-
- @memoize
- @decode
- def expirationMo(self):
- expiration_month = self.request.form.get('expirationMo', None)
-
- if expiration_month is None:
- expiration_month = self.context.getEndStrings()['month']
-
- return expiration_month
-
- @memoize
- @decode
- def expirationDay(self):
- expiration_day = self.request.form.get('expirationDay', None)
-
- if expiration_day is None:
- expiration_day = self.context.getEndStrings()['day']
-
- return expiration_day
-
- # controllers
-
- def edit_control( self
- , title=None
- , description=None
- , event_type=None
- , effectiveDay=None
- , effectiveMo=None
- , effectiveYear=None
- , expirationDay=None
- , expirationMo=None
- , expirationYear=None
- , start_time=None
- , startAMPM=None
- , stop_time=None
- , stopAMPM=None
- , location=None
- , contact_name=None
- , contact_email=None
- , contact_phone=None
- , event_url=None
- , **kw
- ):
-
- try:
- self.context.edit( title, description, event_type, effectiveDay
- , effectiveMo, effectiveYear, expirationDay
- , expirationMo, expirationYear, start_time
- , startAMPM, stop_time, stopAMPM, location
- , contact_name, contact_email, contact_phone
- , event_url)
- return True, _(u'Event changed.')
- except ResourceLockedError, errmsg:
- return False, errmsg
-
+ form_fields = form.FormFields(IEventSchema)
+ form_fields['start_date'].custom_widget = DatetimeI18nWidget
+ form_fields['stop_date'].custom_widget = DatetimeI18nWidget
Deleted: CMF/branches/yuppie-formlib/CMFCalendar/browser/templates/event.pt
===================================================================
--- CMF/branches/yuppie-formlib/CMFCalendar/browser/templates/event.pt 2006-11-02 18:10:11 UTC (rev 71030)
+++ CMF/branches/yuppie-formlib/CMFCalendar/browser/templates/event.pt 2006-11-02 18:26:56 UTC (rev 71031)
@@ -1,74 +0,0 @@
-<html metal:use-macro="context/@@standard_macros/page">
-<head>
-
-<metal:slot fill-slot="style_slot">
-<tal:span tal:replace="structure context/getBaseTag" />
-</metal:slot>
-
-</head>
-<body>
-
-<metal:slot metal:fill-slot="body" i18n:domain="cmf_calendar">
-
-<table class="Event" border="0" cellpadding="5" width="100%" cellspacing="3">
- <tr>
- <th width="10%" i18n:translate="">Event Name</th>
- <td nowrap="nowrap" tal:content="view/title">Title</td>
- <th width="10%" i18n:translate="">Contact Name</th>
- <td nowrap="nowrap" tal:content="view/contact_name">contact_name</td>
- </tr>
- <tr>
- <th width="10%" i18n:translate="">Location</th>
- <td nowrap="nowrap" tal:content="view/location">location</td>
- <th width="10%" i18n:translate="">Contact Email</th>
- <td nowrap="nowrap" tal:condition="view/contact_email">
- <a tal:attributes="href string:mailto:${view/contact_email}"
- tal:content="view/contact_email"
- href="mailto:contact_email">contact_email</a></td>
- </tr>
- <tr>
- <th width="10%" i18n:translate="">Event type</th>
- <td valign="top" nowrap="nowrap"><tal:loop
- tal:repeat="event_type view/event_types"><tal:span
- tal:content="event_type" i18n:translate="" /> </tal:loop></td>
- <th width="10%" i18n:translate="">Contact Phone</th>
- <td nowrap="nowrap" tal:content="view/contact_phone">contact_phone</td>
- </tr>
- <tr tal:condition="view/event_url">
- <th width="10%" i18n:translate="">Event URL</th>
- <td colspan="3" nowrap="nowrap"><a href="event_url"
- tal:attributes="href view/event_url"
- tal:content="view/event_url">event_url</a></td>
- </tr>
- <tr>
- <td colspan="4"><hr /></td>
- </tr>
- <tr>
- <th width="10%" i18n:translate="">Start Date</th>
- <td tal:content="view/start_date">start</td>
- <th width="10%" i18n:translate="">Stop Date</th>
- <td tal:content="view/stop_date">end</td>
- </tr>
- <tr>
- <th width="10%" i18n:translate="">Start Time</th>
- <td tal:content="view/start_time">start</td>
- <th width="10%" i18n:translate="">Stop Time</th>
- <td tal:content="view/stop_time">end</td>
- </tr>
- <tr>
- <td colspan="4"><hr /></td>
- </tr>
- <tr>
- <th width="10%" i18n:translate="">Description</th>
- <td colspan="3" valign="top" nowrap="nowrap"
- tal:content="view/description">Description</td>
- </tr>
- <tr>
- <td colspan="4"> </td>
- </tr>
-</table>
-
-</metal:slot>
-
-</body>
-</html>
Deleted: CMF/branches/yuppie-formlib/CMFCalendar/browser/templates/event_edit.pt
===================================================================
--- CMF/branches/yuppie-formlib/CMFCalendar/browser/templates/event_edit.pt 2006-11-02 18:10:11 UTC (rev 71030)
+++ CMF/branches/yuppie-formlib/CMFCalendar/browser/templates/event_edit.pt 2006-11-02 18:26:56 UTC (rev 71031)
@@ -1,175 +0,0 @@
-<html metal:use-macro="context/@@standard_macros/page">
-<body>
-
-<metal:slot metal:fill-slot="body" i18n:domain="cmf_calendar">
-<h1 i18n:translate="">Edit: <tal:span
- tal:content="view/title" i18n:name="obj_title">Title</tal:span></h1>
-
-<form action="event_edit_form" method="post"
- tal:attributes="action view/form_action">
-<table class="FormLayout">
- <tr>
- <th i18n:translate="">Event Name</th>
- <td>
- <input type="text"
- name="title" maxlength="100" size="35" value="Title"
- tal:attributes="value view/title" />
- </td>
- <th i18n:translate="">Contact Name</th>
- <td>
- <input type="text"
- name="contact_name" maxlength="100" size="35" value="contact_name"
- tal:attributes="value view/contact_name" />
- </td>
- </tr>
- <tr>
- <th i18n:translate="">Location</th>
- <td>
- <input type="text"
- name="location" maxlength="100" size="35" value="location"
- tal:attributes="value view/location" />
- </td>
- <th i18n:translate="">Contact Email</th>
- <td>
- <input type="text"
- name="contact_email" maxlength="100" size="35" value="contact_email"
- tal:attributes="value view/contact_email" />
- </td>
- </tr>
- <tr>
- <th i18n:translate="">Event type</th>
- <td>
- <select name="event_type:list" multiple="multiple">
- <option tal:replace="nothing">Event Type 1</option>
- <option tal:replace="nothing">Event Type 2</option>
- <option tal:replace="nothing">...</option>
- <option value="subj"
- tal:repeat="subj python: context.portal_metadata.listAllowedSubjects(context)"
- tal:attributes="value subj;
- selected python: subj in view.event_type()"
- tal:content="subj" i18n:translate="">Event Type N</option>
- </select>
- </td>
- <th i18n:translate="">Contact Phone</th>
- <td>
- <input type="text" name="contact_phone" maxlength="100" size="35"
- value="contact_phone" id="cb_contact_phone"
- tal:attributes="value view/contact_phone" />
- </td>
- </tr>
- <tr>
- <th i18n:translate="">Event URL</th>
- <td colspan="3">
- <input type="text" name="event_url" size="55" maxlength="100"
- value="event_url"
- tal:attributes="value view/event_url" />
- </td>
- </tr>
- <tr>
- <th i18n:translate="">Start Date</th>
- <td>
- <select name="effectiveYear">
- <option value=""
- tal:repeat="year context/buildYears"
- tal:attributes="value year;
- selected python: year == view.effectiveYear()"
- tal:content="year">Year</option>
- </select>
-
- <select name="effectiveMo">
- <option value=""
- tal:repeat="month context/buildMonths"
- tal:attributes="value month;
- selected python: month == view.effectiveMo()"
- tal:content="month">Month</option>
- </select>
-
- <select name="effectiveDay">
- <option value=""
- tal:repeat="day context/buildDays"
- tal:attributes="value day;
- selected python: day == view.effectiveDay()"
- tal:content="day">Day</option>
- </select>
- </td>
- <th i18n:translate="">Stop Date</th>
- <td>
- <select name="expirationYear">
- <option value=""
- tal:repeat="year context/buildYears"
- tal:attributes="value year;
- selected python: year == view.expirationYear()"
- tal:content="year">Day</option>
- </select>
-
- <select name="expirationMo">
- <option value=""
- tal:repeat="month context/buildMonths"
- tal:attributes="value month;
- selected python: month == view.expirationMo()"
- tal:content="month">Month</option>
- </select>
-
- <select name="expirationDay">
- <option value=""
- tal:repeat="day context/buildDays"
- tal:attributes="value day;
- selected python: day == view.expirationDay()"
- tal:content="day">Day</option>
- </select>
- </td>
- </tr>
- <tr>
- <th i18n:translate="">Start Time</th>
- <td>
- <select name="start_time">
- <option value=""
- tal:repeat="bt context/buildTimes"
- tal:attributes="value bt; selected python: bt == view.start_time()"
- tal:content="bt">start time</option>
- </select>
-
- <input type="radio" name="startAMPM" value="am" id="cb_start_am"
- tal:attributes="checked python: view.startAMPM() == 'am'" />
- <label for="cb_start_am" i18n:translate="">am</label>
- <input type="radio" name="startAMPM" value="pm" id="cb_start_pm"
- tal:attributes="checked python: view.startAMPM() == 'pm'" />
- <label for="cb_start_pm" i18n:translate="">pm</label>
- </td>
- <th i18n:translate="">Stop Time</th>
- <td>
- <select name="stop_time">
- <option value=""
- tal:repeat="bt context/buildTimes"
- tal:attributes="value bt; selected python: bt == view.stop_time()"
- tal:content="bt">end time</option>
- </select>
-
- <input type="radio" name="stopAMPM" value="am" id="cb_stop_am"
- tal:attributes="checked python: view.stopAMPM() == 'am'" />
- <label for="cb_stop_am" i18n:translate="">am</label>
- <input type="radio" name="stopAMPM" value="pm" id="cb_stop_pm"
- tal:attributes="checked python: view.stopAMPM() == 'pm'" />
- <label for="cb_stop_pm" i18n:translate="">pm</label>
- </td>
- </tr>
- <tr>
- <th i18n:translate="">Description</th>
- <td class="TextField" colspan="3">
- <textarea name="description:text" rows="5" cols="70" wrap="soft"
- tal:content="view/description"></textarea>
- </td>
- </tr>
- <tr>
- <td> </td>
- <td colspan="3">
- <metal:macro metal:use-macro="context/@@form_widget/buttons" />
- </td>
- </tr>
-</table>
-</form>
-
-</metal:slot>
-
-</body>
-</html>
Modified: CMF/branches/yuppie-formlib/CMFCalendar/locales/cmf_calendar.pot
===================================================================
--- CMF/branches/yuppie-formlib/CMFCalendar/locales/cmf_calendar.pot 2006-11-02 18:10:11 UTC (rev 71030)
+++ CMF/branches/yuppie-formlib/CMFCalendar/locales/cmf_calendar.pot 2006-11-02 18:26:56 UTC (rev 71031)
@@ -12,175 +12,166 @@
##############################################################################
msgid ""
msgstr ""
-"Project-Id-Version: CMF 2.0\n"
+"Project-Id-Version: CMF 2.1\n"
"POT-Creation-Date: $Date$\n"
"Language-Team: CMF Developers <zope-cmf at zope.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: CMFCalendar/browser/event.py:316
-#: CMFCalendar/skins/zpt_calendar/event_edit_control.py:11
-msgid "Event changed."
+#: CMFCalendar/browser/event.py:102
+msgid "URL"
msgstr ""
-#: CMFCalendar/browser/event.py:93
-#: CMFCalendar/skins/zpt_calendar/event_edit_form.py:50
-msgid "Change"
+#: CMFCalendar/browser/event.py:108
+msgid "From"
msgstr ""
-#: CMFCalendar/browser/event.py:97
-#: CMFCalendar/skins/zpt_calendar/event_edit_form.py:51
-msgid "Change and View"
+#: CMFCalendar/browser/event.py:111
+msgid "To"
msgstr ""
-#: CMFCalendar/browser/templates/calendar_widgets.pt:13
-#: CMFCalendar/skins/zpt_calendar/calendarBox.pt:12
-msgid "CMF Calendar"
+#: CMFCalendar/browser/event.py:114
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:160
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:61
+msgid "Description"
msgstr ""
-#: CMFCalendar/browser/templates/calendar_widgets.pt:29
-#: CMFCalendar/browser/templates/calendar_widgets.pt:42
-#: CMFCalendar/browser/templates/event.pt:32
-#: CMFCalendar/browser/templates/event_edit.pt:46
-#: CMFCalendar/skins/zpt_calendar/calendarBox.pt:28
-#: CMFCalendar/skins/zpt_calendar/calendarBox.pt:41
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:49
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:31
-msgid "${DYNAMIC_CONTENT}"
+#: CMFCalendar/browser/event.py:68
+msgid "Title"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:15
-#: CMFCalendar/browser/templates/event_edit.pt:12
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:15
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:14
-msgid "Event Name"
-msgstr ""
-
-#: CMFCalendar/browser/templates/event.pt:17
-#: CMFCalendar/browser/templates/event_edit.pt:18
+#: CMFCalendar/browser/event.py:74
#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:21
#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:16
msgid "Contact Name"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:21
-#: CMFCalendar/browser/templates/event_edit.pt:26
+#: CMFCalendar/browser/event.py:80
#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:29
#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:20
msgid "Location"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:23
-#: CMFCalendar/browser/templates/event_edit.pt:32
+#: CMFCalendar/browser/event.py:86
#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:35
#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:22
msgid "Contact Email"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:30
-#: CMFCalendar/browser/templates/event_edit.pt:40
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:43
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:29
-msgid "Event type"
+#: CMFCalendar/browser/event.py:90
+msgid "Category"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:34
-#: CMFCalendar/browser/templates/event_edit.pt:53
+#: CMFCalendar/browser/event.py:96
#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:56
#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:33
msgid "Contact Phone"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:38
-#: CMFCalendar/browser/templates/event_edit.pt:61
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:64
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:37
-msgid "Event URL"
+#: CMFCalendar/browser/templates/calendar_widgets.pt:13
+#: CMFCalendar/skins/zpt_calendar/calendarBox.pt:12
+msgid "CMF Calendar"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:47
-#: CMFCalendar/browser/templates/event_edit.pt:69
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:72
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:46
-msgid "Start Date"
+#: CMFCalendar/browser/templates/calendar_widgets.pt:29
+#: CMFCalendar/browser/templates/calendar_widgets.pt:42
+#: CMFCalendar/skins/zpt_calendar/calendarBox.pt:28
+#: CMFCalendar/skins/zpt_calendar/calendarBox.pt:41
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:49
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:31
+msgid "${DYNAMIC_CONTENT}"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:49
-#: CMFCalendar/browser/templates/event_edit.pt:95
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:98
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:48
-msgid "Stop Date"
+#: CMFCalendar/profiles/default/types/Event.xml:5
+msgid "Event"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:53
-#: CMFCalendar/browser/templates/event_edit.pt:123
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:126
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:52
-msgid "Start Time"
+#: CMFCalendar/profiles/default/types/Event.xml:6
+msgid "Events are objects for use in Calendar topical queries on the catalog."
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:55
-#: CMFCalendar/browser/templates/event_edit.pt:139
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:142
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:54
-msgid "Stop Time"
+#: CMFCalendar/setuphandlers.py:42
+msgid "Appointment"
msgstr ""
-#: CMFCalendar/browser/templates/event.pt:62
-#: CMFCalendar/browser/templates/event_edit.pt:157
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:160
-#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:61
-msgid "Description"
+#: CMFCalendar/setuphandlers.py:43
+msgid "Convention"
msgstr ""
-#: CMFCalendar/browser/templates/event_edit.pt:134
-#: CMFCalendar/browser/templates/event_edit.pt:150
+#: CMFCalendar/setuphandlers.py:44
+msgid "Meeting"
+msgstr ""
+
+#: CMFCalendar/setuphandlers.py:45
+msgid "Social Event"
+msgstr ""
+
+#: CMFCalendar/setuphandlers.py:46
+msgid "Work"
+msgstr ""
+
+#: CMFCalendar/skins/zpt_calendar/event_edit_control.py:11
+msgid "Event changed."
+msgstr ""
+
+#: CMFCalendar/skins/zpt_calendar/event_edit_form.py:50
+msgid "Change"
+msgstr ""
+
+#: CMFCalendar/skins/zpt_calendar/event_edit_form.py:51
+msgid "Change and View"
+msgstr ""
+
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:126
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:52
+msgid "Start Time"
+msgstr ""
+
#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:137
#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:153
msgid "am"
msgstr ""
-#: CMFCalendar/browser/templates/event_edit.pt:137
-#: CMFCalendar/browser/templates/event_edit.pt:153
#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:140
#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:156
msgid "pm"
msgstr ""
-#: CMFCalendar/browser/templates/event_edit.pt:5
-#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:5
-msgid "Edit: ${obj_title}"
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:142
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:54
+msgid "Stop Time"
msgstr ""
-#: CMFCalendar/profiles/default/types/Event.xml:5
-msgid "Event"
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:15
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:14
+msgid "Event Name"
msgstr ""
-#: CMFCalendar/profiles/default/types/Event.xml:6
-msgid "Events are objects for use in Calendar topical queries on the catalog."
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:43
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:29
+msgid "Event type"
msgstr ""
-#: CMFCalendar/setuphandlers.py:42
-msgid "Appointment"
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:5
+msgid "Edit: ${obj_title}"
msgstr ""
-#: CMFCalendar/setuphandlers.py:43
-msgid "Convention"
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:64
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:37
+msgid "Event URL"
msgstr ""
-#: CMFCalendar/setuphandlers.py:44
-msgid "Meeting"
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:72
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:46
+msgid "Start Date"
msgstr ""
-#: CMFCalendar/setuphandlers.py:45
-msgid "Social Event"
+#: CMFCalendar/skins/zpt_calendar/event_edit_template.pt:98
+#: CMFCalendar/skins/zpt_calendar/event_view_template.pt:48
+msgid "Stop Date"
msgstr ""
-#: CMFCalendar/setuphandlers.py:46
-msgid "Work"
-msgstr ""
-
msgid "Su"
msgstr ""
More information about the CMF-checkins
mailing list