Changeset 7710 for main/waeup.sirp/trunk/src/waeup/sirp/applicants
- Timestamp:
- 27 Feb 2012, 16:14:12 (13 years ago)
- Location:
- main/waeup.sirp/trunk/src/waeup/sirp/applicants
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py
r7708 r7710 61 61 grok.name('index') 62 62 grok.require('waeup.Public') 63 label = 'Application Section'63 label = _('Application Section') 64 64 pnav = 3 65 65 … … 73 73 grok.name('manage') 74 74 grok.template('applicantsrootmanagepage') 75 label = 'Manage application section'75 label = _('Manage application section') 76 76 pnav = 3 77 77 grok.require('waeup.manageApplication') 78 taboneactions = ['Add applicants container', 'Remove selected','Cancel'] 79 tabtwoactions1 = ['Remove selected local roles'] 80 tabtwoactions2 = ['Add local role'] 81 subunits = 'Applicants Containers' 78 taboneactions = [_('Add applicants container'), _('Remove selected'), 79 _('Cancel')] 80 tabtwoactions1 = [_('Remove selected local roles')] 81 tabtwoactions2 = [_('Add local role')] 82 subunits = _('Applicants Containers') 82 83 83 84 def update(self): … … 101 102 return get_users_with_local_roles(self.context) 102 103 103 @jsaction( 'Remove selected')104 @jsaction(_('Remove selected')) 104 105 def delApplicantsContainers(self, **data): 105 106 form = self.request.form … … 113 114 deleted.append(id) 114 115 except: 115 self.flash( 'Could not delete%s: %s: %s' % (116 self.flash(_('Could not delete:') + ' %s: %s: %s' % ( 116 117 id, sys.exc_info()[0], sys.exc_info()[1])) 117 118 if len(deleted): 118 self.flash( 'Successfully removed:%s' % ', '.join(deleted))119 self.flash(_('Successfully removed:') + ' %s' % ', '.join(deleted)) 119 120 self.redirect(self.url(self.context, '@@manage')) 120 121 return 121 122 122 @action( 'Add applicants container', validator=NullValidator)123 @action(_('Add applicants container'), validator=NullValidator) 123 124 def addApplicantsContainer(self, **data): 124 125 self.redirect(self.url(self.context, '@@add')) 125 126 return 126 127 127 @action( 'Cancel', validator=NullValidator)128 @action(_('Cancel'), validator=NullValidator) 128 129 def cancel(self, **data): 129 130 self.redirect(self.url(self.context)) 130 131 return 131 132 132 @action( 'Add local role', validator=NullValidator)133 @action(_('Add local role'), validator=NullValidator) 133 134 def addLocalRole(self, **data): 134 135 return add_local_role(self,3, **data) 135 136 136 @action( 'Remove selected local roles')137 @action(_('Remove selected local roles')) 137 138 def delLocalRoles(self, **data): 138 139 return del_local_roles(self,3,**data) … … 143 144 grok.name('add') 144 145 grok.template('applicantscontaineraddpage') 145 label = 'Add applicants container'146 label = _('Add applicants container') 146 147 pnav = 3 147 148 … … 155 156 return super(ApplicantsContainerAddFormPage, self).update() 156 157 157 @action( 'Add applicants container')158 @action(_('Add applicants container')) 158 159 def addApplicantsContainer(self, **data): 159 160 year = data['year'] … … 164 165 if code in self.context.keys(): 165 166 self.flash( 166 'An applicants container for the same application ' 167 'type and entrance year exists already in the database.') 167 _('An applicants container for the same application type and entrance year exists already in the database.')) 168 168 return 169 169 # Add new applicants container... … … 174 174 container.title = title 175 175 self.context[code] = container 176 self.flash( 'Added:"%s".' % code)176 self.flash(_('Added:') + ' "%s".' % code) 177 177 self.redirect(self.url(self.context, u'@@manage')) 178 178 return 179 179 180 @action( 'Cancel', validator=NullValidator)180 @action(_('Cancel'), validator=NullValidator) 181 181 def cancel(self, **data): 182 182 self.redirect(self.url(self.context, '@@manage')) … … 186 186 """ 187 187 grok.context(IApplicantsRoot) 188 title = u'Applicants'188 title = _(u'Applicants') 189 189 190 190 class ApplicantsContainerBreadcrumb(Breadcrumb): … … 250 250 form_fields = grok.AutoFields(IApplicantsContainer).omit( 251 251 'title', 'description_dict') 252 taboneactions = [ 'Save','Cancel']253 tabtwoactions = [ 'Add applicant', 'Remove selected','Cancel']254 tabthreeactions1 = [ 'Remove selected local roles']255 tabthreeactions2 = [ 'Add local role']252 taboneactions = [_('Save'),_('Cancel')] 253 tabtwoactions = [_('Add applicant'), _('Remove selected'),_('Cancel')] 254 tabthreeactions1 = [_('Remove selected local roles')] 255 tabthreeactions2 = [_('Add local role')] 256 256 # Use friendlier date widget... 257 257 form_fields['startdate'].custom_widget = FriendlyDateWidget('le') … … 261 261 @property 262 262 def label(self): 263 return 'Manage applicants container'263 return _('Manage applicants container') 264 264 265 265 pnav = 3 … … 301 301 self.applyData(self.context, **data) 302 302 self.context.description_dict = self._description() 303 self.flash( 'Form has been saved.')304 return 305 306 @jsaction( 'Remove selected')303 self.flash(_('Form has been saved.')) 304 return 305 306 @jsaction(_('Remove selected')) 307 307 def delApplicant(self, **data): 308 308 form = self.request.form … … 310 310 child_id = form['val_id'] 311 311 else: 312 self.flash( 'No applicant selected!')312 self.flash(_('No applicant selected!')) 313 313 self.redirect(self.url(self.context, '@@manage')+'?tab2') 314 314 return … … 321 321 deleted.append(id) 322 322 except: 323 self.flash( 'Could not delete%s: %s: %s' % (323 self.flash(_('Could not delete:') + ' %s: %s: %s' % ( 324 324 id, sys.exc_info()[0], sys.exc_info()[1])) 325 325 if len(deleted): 326 self.flash( 'Successfully removed:%s' % ', '.join(deleted))326 self.flash(_('Successfully removed:') + ' %s' % ', '.join(deleted)) 327 327 self.redirect(self.url(self.context, u'@@manage')+'?tab2') 328 328 return 329 329 330 @action( 'Add applicant', validator=NullValidator)330 @action(_('Add applicant'), validator=NullValidator) 331 331 def addApplicant(self, **data): 332 332 self.redirect(self.url(self.context, 'addapplicant')) 333 333 return 334 334 335 @action( 'Cancel', validator=NullValidator)335 @action(_('Cancel'), validator=NullValidator) 336 336 def cancel(self, **data): 337 337 self.redirect(self.url(self.context)) 338 338 return 339 339 340 @action( 'Add local role', validator=NullValidator)340 @action(_('Add local role'), validator=NullValidator) 341 341 def addLocalRole(self, **data): 342 342 return add_local_role(self,3, **data) 343 343 344 @action( 'Remove selected local roles')344 @action(_('Remove selected local roles')) 345 345 def delLocalRoles(self, **data): 346 346 return del_local_roles(self,3,**data) -
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantdisplaypage.pt
r7687 r7710 1 <h2> ... <span tal:replace="context/translated_state">Application State</span> ... </h2> 1 <h2> 2 ... <span tal:replace="context/translated_state">APPLICATIONSTATE</span> ... 3 </h2> 2 4 3 5 <div class="workflow"> 4 6 <div tal:repeat="msg context/history/messages"> 5 <span tal:replace="msg"> message</span><br />7 <span tal:replace="msg">MESSAGE</span><br /> 6 8 </div> 7 9 </div> … … 9 11 <img src="" tal:attributes="src view/passport_url" /> 10 12 11 <table class="form-table">13 <table i18n:domain="waeup.sirp" class="form-table"> 12 14 <tbody> 13 15 <tal:block repeat="widget view/widgets"> … … 22 24 </tal:block> 23 25 <tr> 24 <td class="fieldname" >26 <td class="fieldname" i18n:translate=""> 25 27 Admitted Course of Study: 26 28 </td> … … 30 32 </tr> 31 33 <tr> 32 <td class="fieldname" >34 <td class="fieldname" i18n:translate=""> 33 35 Password: 34 36 </td> … … 39 41 </tbody> 40 42 </table> 41 <h3 i18n:translate=" acceptance_fee_tickets">43 <h3 i18n:translate=""> 42 44 Acceptance Fee Payment Tickets 43 45 </h3> … … 45 47 <thead> 46 48 <tr> 47 <th >Payment Id</th>48 <th >Creation Date</th>49 <th >Payment Date</th>50 <th >Category</th>51 <th >Item</th>52 <th >State</th>49 <th i18n:translate="">Payment Id</th> 50 <th i18n:translate="">Creation Date</th> 51 <th i18n:translate="">Payment Date</th> 52 <th i18n:translate="">Category</th> 53 <th i18n:translate="">Item</th> 54 <th i18n:translate="">State</th> 53 55 </tr> 54 56 </thead> -
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicanteditpage.pt
r7687 r7710 1 1 <form action="." tal:attributes="action request/URL" method="post" 2 enctype="multipart/form-data">2 i18n:domain="waeup.sirp" enctype="multipart/form-data"> 3 3 4 <h2> ... <span tal:replace="context/translated_state">Application State</span> ... </h2> 4 <h2> 5 ... <span tal:replace="context/translated_state">APPLICATIONSTATE</span> ... 6 </h2> 5 7 6 8 <div class="workflow"> 7 9 <div tal:repeat="msg context/history/messages"> 8 <span tal:replace="msg"> message</span><br />10 <span tal:replace="msg">MESSAGE</span><br /> 9 11 </div> 10 12 </div> … … 32 34 </tal:block> 33 35 <tr> 34 <td class="fieldname" >36 <td class="fieldname" i18n:translate=""> 35 37 Photograph 36 38 </td> … … 39 41 <input type="file" name="form.passport" /> 40 42 <br /> 41 <span i18n:translate=" max_file_size">43 <span i18n:translate=""> 42 44 Max. file size: 43 45 </span> … … 45 47 </tr> 46 48 <tr tal:condition="view/manage_applications"> 47 <td class="fieldname" >Password:</td>49 <td class="fieldname" i18n:translate="">Password:</td> 48 50 <td> 49 51 <input name="password" type="password" /> … … 51 53 </tr> 52 54 <tr tal:condition="view/manage_applications"> 53 <td class="fieldname" >Retype password:</td>55 <td class="fieldname" i18n:translate="">Retype password:</td> 54 56 <td> 55 57 <input name="control_password" type="password" /> … … 57 59 </tr> 58 60 <tr tal:condition="view/manage_applications"> 59 <td class="fieldname" >Application Transition:</td>61 <td class="fieldname" i18n:translate="">Application Transition:</td> 60 62 <td> 61 63 <select id="transition" name="transition"> … … 73 75 <input id="confirm_passport" name="confirm_passport" 74 76 type="checkbox" value="True"/> 77 <span i18n:translate=""> 75 78 I confirm that the Passport Photograph uploaded on this form is a 76 79 true picture of me. 80 </span> 77 81 </div> 78 82 … … 86 90 87 91 <br /><br /> 88 <h3 i18n:translate=" acceptance_fee_tickets">92 <h3 i18n:translate=""> 89 93 Acceptance Fee Payment Tickets 90 94 </h3> … … 94 98 <tr> 95 99 <th> </th> 96 <th >Payment Id</th>97 <th >Creation Date</th>98 <th >Payment Date</th>99 <th >Category</th>100 <th >Item</th>101 <th >State</th>100 <th i18n:translate="">Payment Id</th> 101 <th i18n:translate="">Creation Date</th> 102 <th i18n:translate="">Payment Date</th> 103 <th i18n:translate="">Category</th> 104 <th i18n:translate="">Item</th> 105 <th i18n:translate="">State</th> 102 106 </tr> 103 107 </thead> -
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantregemailsent.pt
r7494 r7710 1 <div >1 <div i18n:domain="waeup.sirp"> 2 2 <p> 3 An email with your user name and password 4 has been sent to <span tal:replace="view/email">user@foo.baz</span>. 3 <span i18n:translate=""> An email with your user name and password 4 has been sent to 5 </span> 6 <span tal:replace="view/email">user@foo.baz</span>. 5 7 </p> 6 <p >8 <p i18n:translate=""> 7 9 Please check your email account to proceed. 8 10 </p> 9 <p >11 <p i18n:translate=""> 10 12 Thanks for using SIRP! 11 13 </p> -
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantregister.pt
r7669 r7710 1 1 <form action="." tal:attributes="action request/URL" method="post" 2 2 i18n:domain="waeup.sirp" enctype="multipart/form-data"> 3 3 4 4 <table class="form-table"> … … 8 8 <td class="fieldname"> 9 9 <span tal:condition="widget/required">*</span> 10 <span tal:content="widget/label"> label</span>:10 <span tal:content="widget/label">LABEL</span>: 11 11 </td> 12 12 <td> … … 15 15 </span> 16 16 <tal:error tal:condition="widget/error"> 17 <span tal:replace="structure widget/error"> error</span>17 <span tal:replace="structure widget/error">ERROR</span> 18 18 </tal:error> 19 19 <tal:hint tal:condition="widget/hint"> 20 <span tal:content="structure widget/hint"> hint</span>20 <span tal:content="structure widget/hint">HINT</span> 21 21 </tal:hint> 22 22 </td> … … 24 24 </tal:block> 25 25 <tr tal:condition="view/captcha_code"> 26 <td i18n:translate=" solve_captcha">26 <td i18n:translate=""> 27 27 Please solve the captcha<br />to prevent misuse of this service: 28 28 </td> … … 34 34 </tbody> 35 35 </table> 36 <p >36 <p i18n:translate=""> 37 37 An account will be created for you and an email with your login 38 38 credentials will be sent to the address provided. -
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantscontaineraddpage.pt
r7669 r7710 1 1 <form action="." tal:attributes="action request/URL" method="post" 2 2 class="edit-form" enctype="multipart/form-data"> 3 3 4 4 <table class="form-table"> … … 8 8 <td class="fieldname"> 9 9 <span tal:condition="widget/required">*</span> 10 <span tal:content="widget/label"> label</span>:10 <span tal:content="widget/label">LABEL</span>: 11 11 </td> 12 12 <td> … … 15 15 </span> 16 16 <tal:error tal:condition="widget/error"> 17 <span tal:replace="structure widget/error"> error</span>17 <span tal:replace="structure widget/error">ERROR</span> 18 18 </tal:error> 19 19 <tal:hint tal:condition="widget/hint"> 20 <span tal:content="structure widget/hint"> hint</span>20 <span tal:content="structure widget/hint">HINT</span> 21 21 </tal:hint> 22 22 </td> -
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantscontainermanagepage.pt
r7686 r7710 1 <form action="." tal:attributes="action request/URL" method="POST" class="edit-form" enctype="multipart/form-data"> 1 <form action="." tal:attributes="action request/URL" method="POST" 2 i18n:domain="waeup.sirp" class="edit-form" enctype="multipart/form-data"> 2 3 3 4 <ul class="tabs" data-tabs="tabs"> 4 5 <li tal:attributes="class view/tab1"> 5 6 <a href="#tab-1"> 6 <span >Settings7 <span i18n:translate="">Settings 7 8 </span></a> 8 9 </li> 9 10 <li tal:attributes="class view/tab2"> 10 11 <a href="#tab-2"> 11 <span >Applicants12 <span i18n:translate="">Applicants 12 13 </span></a> 13 14 </li> 14 15 <li tal:attributes="class view/tab3"> 15 16 <a href="#tab-3"> 16 <span >Local Roles17 <span i18n:translate="">Local Roles 17 18 </span></a> 18 19 </li> … … 27 28 <span tal:condition="widget/required">* 28 29 </span> 29 <span tal:content="widget/label"> label30 <span tal:content="widget/label">LABEL 30 31 </span>: 31 32 </td> … … 35 36 </span> 36 37 <tal:error tal:condition="widget/error"> 37 <span tal:replace="structure widget/error"> error38 <span tal:replace="structure widget/error">ERROR 38 39 </span> 39 40 </tal:error> 40 41 <tal:hint tal:condition="widget/hint"> 41 <span tal:content="structure widget/hint"> hint42 <span tal:content="structure widget/hint">HINT 42 43 </span> 43 44 </tal:hint> </td> … … 53 54 </div> 54 55 </div> 55 <div id="tab-2" tal:attributes="class view/tab2"> <h3>Applicants</h3> 56 <div id="tab-2" tal:attributes="class view/tab2"> 57 <h3 i18n:translate="">Applicants</h3> 56 58 <table class="display dataTableManage"> 57 59 <thead> … … 59 61 <th> 60 62 </th> 61 <th >Application Number63 <th i18n:translate="">Application Number 62 64 </th> 63 <th >Full Name65 <th i18n:translate="">Full Name 64 66 </th> 65 <th >First Choice67 <th i18n:translate="">First Choice 66 68 </th> 67 <th >Application State69 <th i18n:translate="">Application State 68 70 </th> 69 71 </tr> … … 76 78 <td> 77 79 <a tal:attributes="href python: view.url(appl)" 78 tal:content="appl/__name__"> Number</a>80 tal:content="appl/__name__">NUMBER</a> 79 81 </td> 80 82 <td> 81 <span tal:replace="appl/display_fullname">F ullname83 <span tal:replace="appl/display_fullname">FULLNAME 82 84 </span> 83 85 </td> 84 86 <td> 85 <span tal:replace="appl/course1/code|nothing">F irst Choice87 <span tal:replace="appl/course1/code|nothing">FIRSTCHOICE 86 88 </span> 87 89 </td> 88 90 <td> 89 <span tal:replace="appl/translated_state">S tate91 <span tal:replace="appl/translated_state">STATE 90 92 </span> 91 93 </td> … … 106 108 <th> 107 109 </th> 108 <th >User Id110 <th i18n:translate="">User Id 109 111 </th> 110 <th >Name112 <th i18n:translate="">Name 111 113 </th> 112 <th >Local Role114 <th i18n:translate="">Local Role 113 115 </th> 114 116 </tr> -
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantsrootmanagepage.pt
r7464 r7710 1 <form action="." tal:attributes="action request/URL" method="POST" enctype="multipart/form-data"> 1 <form action="." tal:attributes="action request/URL" 2 i18n:domain="waeup.sirp" method="POST" enctype="multipart/form-data"> 2 3 <ul class="tabs" data-tabs="tabs"> 3 4 <li class="active"> … … 8 9 <li> 9 10 <a href="#tab-2"> 10 <span >Local Roles11 <span i18n:translate="">Local Roles 11 12 </span></a> 12 13 </li> … … 14 15 <div class="tab-content"> 15 16 <div id="tab-1" class="active"> 16 <h3 tal:content="view/subunits"> Applicants Containers</h3>17 <h3 tal:content="view/subunits">SUBUNITS</h3> 17 18 <table class="display dataTableManage"> 18 19 <thead> … … 20 21 <th> 21 22 </th> 22 <th >Year23 <th i18n:translate="">Year 23 24 </th> 24 <th >Code25 <th i18n:translate="">Code 25 26 </th> 26 <th >Title27 <th i18n:translate="">Title 27 28 </th> 28 29 </tr> … … 30 31 <tbody> 31 32 <tr tal:repeat="entry context/values" class="gradeC"> <td> 32 <input type="checkbox" name="val_id" tal:attributes="value entry/__name__" /> </td> 33 <td tal:content="entry/year">Year </td> <td> 34 <a href="" tal:attributes="href python:view.url(entry)" tal:content="entry/__name__">Code</a> </td> 35 <td tal:content="entry/title">Title </td> 33 <input type="checkbox" name="val_id" 34 tal:attributes="value entry/__name__" /> </td> 35 <td tal:content="entry/year">YEAR</td> <td> 36 <a href="" 37 tal:attributes="href python:view.url(entry)" 38 tal:content="entry/__name__">CODE</a> </td> 39 <td tal:content="entry/title">TITLE</td> 36 40 </tr> 37 41 </tbody> … … 39 43 <div tal:condition="view/availableActions"> 40 44 <span tal:repeat="action view/actions" tal:omit-tag=""> 41 <input tal:condition="python:action.label in view.taboneactions" tal:replace="structure action/render"/> 45 <input tal:condition="python:action.label in view.taboneactions" 46 tal:replace="structure action/render"/> 42 47 </span> 43 48 </div> … … 49 54 <th> 50 55 </th> 51 <th >User Id56 <th i18n:translate="">User Id 52 57 </th> 53 <th >Name58 <th i18n:translate="">Name 54 59 </th> 55 <th >Local Role60 <th i18n:translate="">Local Role 56 61 </th> 57 62 </tr> 58 63 </thead> 59 64 <tbody> 60 <tr tal:repeat="entry view/getUsersWithLocalRoles" class="gradeC"> <td> 61 <input type="checkbox" name="role_id" tal:attributes="value python: entry['user_name']+'|'+entry['local_role']" /> </td> 62 <td tal:content="entry/user_name"> USERNAME </td> 63 <td tal:content="entry/user_title"> USERTITLE </td> 64 <td tal:content="entry/local_role_title"> LOCAL ROLE </td> 65 <tr tal:repeat="entry view/getUsersWithLocalRoles" class="gradeC"> 66 <td> <input type="checkbox" name="role_id" 67 tal:attributes="value python: entry['user_name']+'|'+entry['local_role']" /> </td> 68 <td tal:content="entry/user_name">USERNAME</td> 69 <td tal:content="entry/user_title">USERTITLE</td> 70 <td tal:content="entry/local_role_title">LOCAL ROLE</td> 65 71 </tr> 66 72 </tbody> … … 68 74 <div tal:condition="view/availableActions"> 69 75 <span tal:repeat="action view/actions" tal:omit-tag=""> 70 <input tal:condition="python:action.label in view.tabtwoactions1" tal:replace="structure action/render"/> 76 <input tal:condition="python:action.label in view.tabtwoactions1" 77 tal:replace="structure action/render"/> 71 78 </span> 72 79 </div> <br /><br /> … … 74 81 <tr> <td> 75 82 <select id="user" name="user"> 76 <option tal:repeat="user view/getUsers" tal:attributes="value user/name"> 83 <option tal:repeat="user view/getUsers" 84 tal:attributes="value user/name"> 77 85 <span tal:replace="user/val/title">USERTITLE 78 86 </span> … … 80 88 </select> </td> <td> 81 89 <select id="local_role" name="local_role"> 82 <option tal:repeat="localrole view/getLocalRoles" tal:attributes="value localrole/name"> 90 <option tal:repeat="localrole view/getLocalRoles" 91 tal:attributes="value localrole/name"> 83 92 <span tal:replace="localrole/title">LOCALROLETITLE 84 93 </span> … … 87 96 <div tal:condition="view/availableActions"> 88 97 <span tal:repeat="action view/actions" tal:omit-tag=""> 89 <input tal:condition="python:action.label in view.tabtwoactions2" tal:replace="structure action/render"/> 98 <input tal:condition="python:action.label in view.tabtwoactions2" 99 tal:replace="structure action/render"/> 90 100 </span> 91 101 </div> </td> -
main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantsrootpage.pt
r7493 r7710 1 <table >1 <table i18n:domain="waeup.sirp"> 2 2 <thead> 3 3 <tr> 4 <th>Year</th><th>Code</th><th>Title</th><th>Application Period</th> 4 <th i18n:translate="">Year</th> 5 <th i18n:translate="">Code</th> 6 <th i18n:translate="">Title</th> 7 <th i18n:translate="">Application Period</th> 5 8 </tr> 6 9 </thead> … … 9 12 <td tal:content="entry/year">Year 10 13 </td> 11 <td tal:content="entry/__name__">C ode14 <td tal:content="entry/__name__">CODE 12 15 </td> 13 16 <td> 14 17 <a href="" 15 18 tal:attributes="href python:view.url(entry)" 16 tal:content="entry/title">T itle</a>19 tal:content="entry/title">TITLE</a> 17 20 </td> 18 21 <td> 19 <span tal:content="python: layout.formatDate(entry.startdate)">S tart</span>22 <span tal:content="python: layout.formatDate(entry.startdate)">START</span> 20 23 - 21 <span tal:content="python: layout.formatDate(entry.enddate)">E nd</span>24 <span tal:content="python: layout.formatDate(entry.enddate)">END</span> 22 25 </td> 23 26 </tr>
Note: See TracChangeset for help on using the changeset viewer.