source: products/SimpleBlog/branches/plone-2.1-Blogging-APIs/skins/SimpleBlog/SimpleBlog_macros.pt

Last change on this file was 1, checked in by myroslav, 18 years ago

Building directory structure

File size: 25.6 KB
Line 
1<html xmlns:tal="http://xml.zope.org/namespaces/tal"
2      xmlns:metal="http://xml.zope.org/namespaces/metal"
3      i18n:domain="SimpleBlog">
4<body>
5
6<div metal:define-macro="blogGlobals"
7     tal:define="global fp python:here.simpleblog_tool.getFrontPage(here);
8                 global isDeliciousEnaled fp/isDeliciousEnabled;
9                 global isDiggEnabled fp/isDiggEnabled;
10                 global isYahooEnabled fp/isYahooEnabled;
11                 global isGoogleEnabled fp/isGoogleEnabled;
12                 global isSpurlEnabled fp/isSpurlEnabled;
13                 global isTagsEnabled fp/isTagsEnabled;
14                 global isAllowTrackback fp/getAllowTrackback"
15     tal:omit-tag="">
16</div>
17
18<div metal:define-macro="full" tal:define="showReadMore python:0" class="simpleBlogEntry">
19    <div metal:use-macro="obj/SimpleBlog_macros/macros/blogGlobals"/>
20    <div tal:define="size headerSize | python:1;title obj/title_or_id;
21                    showIcons fp/simpleblog_tool/getShowIcons"
22             class="simpleBlogTitle">
23                <tal:x replace='structure string:<h${size} class="noMargin">'/>
24            <a href="" tal:attributes="href obj/absolute_url" style="cursor:pointer;">
25                <img alt="" tal:condition="showIcons" src="#" tal:attributes="src string:${obj/portal_url}/${obj/getIcon};alt obj/title" />
26                <span tal:replace="title"/>
27            </a>
28                <tal:x replace="structure string:</h${size}>"/>
29
30    </div>
31    <div class="simpleBlogDescription documentDescription description" tal:content="structure python:obj.Description()">
32        description
33    </div>
34    <div tal:replace="structure python:obj.getBody()" class="simpleBlogBody"/><br/><br/>
35        <tal:tags metal:use-macro="obj/SimpleBlog_macros/macros/technoratiTags"/>
36        <tal:byLine metal:use-macro="obj/SimpleBlog_macros/macros/ByLineFoot"/>
37</div>
38
39<div metal:define-macro="descriptionOnly"  tal:define="showReadMore python:1" class="simpleBlogEntry">
40    <div metal:use-macro="obj/SimpleBlog_macros/macros/blogGlobals"/>
41    <div tal:define="size headerSize | python:1;title obj/title_or_id;
42                    showIcons fp/simpleblog_tool/getShowIcons"
43             class="simpleBlogTitle">
44                <tal:x replace='structure string:<h${size} class="noMargin">'/>
45            <a href="" tal:attributes="href obj/absolute_url" style="cursor:pointer;">
46                <img alt="" tal:condition="showIcons" src="#" tal:attributes="src string:${obj/portal_url}/${obj/getIcon};alt obj/title" />
47                <span tal:replace="title"/>
48            </a>
49                <tal:x replace="structure string:</h${size}>"/>
50    </div>
51    <div tal:content="structure python:obj.Description()" class="simpleBlogDescriptionOnly">
52        description
53    </div>
54        <tal:tags metal:use-macro="obj/SimpleBlog_macros/macros/technoratiTags"/>
55        <tal:byLine metal:use-macro="obj/SimpleBlog_macros/macros/ByLineFoot"/>
56
57</div>
58
59<div metal:define-macro="titleOnly" tal:define="showReadMore python:1" class="simpleBlogTitle">
60    <div metal:use-macro="obj/SimpleBlog_macros/macros/blogGlobals"/>
61    <tal:block tal:define="size headerSize | python:1;title obj/title_or_id;
62                        showIcons fp/simpleblog_tool/getShowIcons">
63                <tal:x replace='structure string:<h${size} class="noMargin">'/>
64            <a href="" tal:attributes="href obj/absolute_url" style="cursor:pointer;">
65                <img alt="" tal:condition="showIcons" src="#" tal:attributes="src string:${obj/portal_url}/${obj/getIcon};alt obj/title" />
66                <span tal:replace="title"/>
67            </a>
68                <tal:x replace="structure string:</h${size}>"/>
69    </tal:block>
70        <tal:tags metal:use-macro="obj/SimpleBlog_macros/macros/technoratiTags"/>
71        <tal:byLine metal:use-macro="obj/SimpleBlog_macros/macros/ByLineFoot"/>
72    <p />
73</div>
74
75<div metal:define-macro="ByLine" class="BlogByLine"
76     tal:define="fp nocall:fp | python:here.simpleblog_tool.getFrontPage(here);">
77     <span i18n:translate="blog_by_line">
78    Submitted by
79        <a href="" i18n:name="author" tal:attributes="href python:container.portal_membership.getHomeUrl(obj.Creator());" tal:content="obj/Creator">author</a>.
80    on <span i18n:name="date" tal:replace="python:here.toPortalTime(obj.simpleblog_tool.getEntryDate(obj), long_format=1)">Jun 2, 2002 2:42 pm</span>.
81     </span>
82     <span tal:define="cats python:obj.EntryCategory();
83                       pss modules/Products.PythonScripts.standard;"
84           class="simpleBlogBylineCats">
85           <tal:categories tal:repeat="cat cats" tal:condition="cats">
86                <span tal:omit-tag="" tal:condition="not: repeat/cat/start">|&nbsp;</span>
87                <strong><a href="#"
88                           tal:define="quotedCat python:pss.url_quote(cat)"
89                           tal:attributes="href string:${fp/absolute_url}/SimpleBlogCatSearch?category=${quotedCat}"
90                           title="category"><span  tal:omit-tag="" tal:content="cat"/></a></strong>
91           </tal:categories>
92     </span>
93</div>
94
95
96<div metal:define-macro="technoratiTags"
97     tal:define="cats python:obj.EntryTag();
98                 isTagsEnabled isTagsEnabled | here/isTagsEnabled"
99     tal:condition="python:isTagsEnabled and cats"
100     tal:omit-tag="">
101     _____<br/>
102     tags:
103     <span class="simpleBlogBylineCats">
104           <tal:categories tal:repeat="cat cats" tal:condition="cats"><span tal:omit-tag="" tal:condition="not: repeat/cat/start">|&nbsp;
105                      </span><strong><a href="#"
106                           rel="tag"   
107                           tal:define="quotedCat python:cat.lower().replace(' ', '+')"
108                           tal:attributes="href string:http://www.technorati.com/tag/${quotedCat}"><span  tal:omit-tag="" tal:content="cat"/></a></strong>
109           </tal:categories>
110     </span>
111</div>
112
113<div metal:define-macro="ByLineFoot" class="BlogByLine">
114    <tal:x define="allowed python:obj.portal_discussion.isDiscussionAllowedFor(obj);
115                   ccount python:allowed and obj.portal_discussion.getDiscussionFor(obj).replyCount(obj);
116                   tballowed isAllowTrackback | here/getAllowTrackback;
117                   tbcount python:len(obj.getTrackbacks());
118                   fp nocall:fp | python:here.simpleblog_tool.getFrontPage(here)">
119         <span i18n:translate="blog_by_line">
120         <span tal:define="edate python:obj.simpleblog_tool.getEntryDate(obj)"
121               i18n:name="date" tal:replace="python:DateTime(edate).strftime('%A, %B %d, %Y')">Jun 2, 2002 2:42 pm</span>
122         </span>
123         <span tal:define="cats python:obj.EntryCategory();
124                           pss modules/Products.PythonScripts.standard;"
125               tal:omit-tag="">
126               <tal:x tal:condition="cats"> in </tal:x>
127               <tal:categories tal:repeat="cat cats" tal:condition="cats">
128                    <span tal:omit-tag="" tal:condition="not: repeat/cat/start">|&nbsp;</span>
129                    <strong><a href="#"
130                               tal:define="quotedCat python:pss.url_quote(cat)"
131                               tal:attributes="href string:${fp/absolute_url}/SimpleBlogCatSearch?category=${quotedCat}"
132                               title="category"><span  tal:omit-tag="" tal:content="cat"/></a></strong>
133               </tal:categories>
134         </span>&nbsp;|&nbsp;
135         <strong><a href=""
136            tal:attributes="href obj/absolute_url"
137            i18n:translate="permalink">Permalink</a></strong>&nbsp;|&nbsp;
138         <tal:block condition="allowed">
139         <strong><a href=""
140              tal:attributes="href string:${obj/absolute_url}#comments"
141              tal:content="string:Comments (${ccount})">Comments</a></strong>
142            <tal:x condition="tbcount">&nbsp;|&nbsp;</tal:x>
143         </tal:block>
144         <strong tal:condition="python:tballowed and tbcount">
145            <tal:x tal:replace="string:TrackBack (${tbcount})">TrackBack</tal:x></strong>
146         <div tal:condition="tballowed"> trackback URL: &nbsp;
147               <tal:x replace="string:${obj/absolute_url}/sbtrackback"/>
148         </div>
149         <div tal:define="entryURL obj/absolute_url;
150                          entryTitle obj/Title;
151                          entryDescription obj/Description;
152                          entryDiggTopic obj/getDiggTopic;
153                          encodeURLData python:modules['Products.SimpleBlog.util'].encodeURLData;"
154              tal:omit-tag="">
155                <span tal:condition="isDeliciousEnaled | obj/isDeliciousEnabled">
156                   <a href=""
157                      title=""
158                      tal:define="url_data python:encodeURLData({'url':entryURL,'title':entryTitle});"
159                      tal:attributes="href string:http://del.icio.us/post?${url_data};
160                                      title string:del.icio.us: ${entryTitle}">
161                      <img src=""
162                           alt="del.icio.us"
163                           tal:attributes="src string:$portal_url/delicious.gif;" /></a>
164                </span>&nbsp;<span tal:condition="isDiggEnabled | obj/isDiggEnabled">
165                    <a href=""
166                        title=""
167                        tal:define="url_data python:encodeURLData({'phase':'2','url':entryURL,'title':entryTitle,'bodytext':entryDescription,'topic':entryDiggTopic});"
168                        tal:attributes="href string:http://digg.com/submit?${url_data};
169                                        title string:Digg: ${entryTitle}">
170                    <img src=""
171                        alt="Digg"
172                        tal:attributes="src string:$portal_url/digg.gif;" /></a>
173                </span>&nbsp;<span tal:condition="isYahooEnabled | obj/isYahooEnabled">
174                   <a href=""
175                      title=""
176                      tal:define="url_data python:encodeURLData({'u':entryURL,'t':entryTitle});"
177                      tal:attributes="href string:http://myweb2.search.yahoo.com/myresults/bookmarklet?${url_data};
178                                      title string:Yahoo: ${entryTitle}">
179                      <img src=""
180                           alt="Yahoo"
181                           tal:attributes="src string:$portal_url/yahoo.gif;" /></a>
182                </span>&nbsp;<span tal:condition="isGoogleEnabled | obj/isGoogleEnabled">
183                   <a href=""
184                      title=""
185                      tal:define="url_data python:encodeURLData({'op':'edit','output':'popup','bkmk':entryURL,'title':entryTitle});"
186                      tal:attributes="href string:http://www.google.com/bookmarks/mark?${url_data};
187                                      title string:Google: ${entryTitle}">
188                      <img src=""
189                           alt="Google"
190                           tal:attributes="src string:$portal_url/google.gif;" /></a>
191                </span>&nbsp;<span tal:condition="isSpurlEnabled | obj/isSpurlEnabled">
192                   <a href=""
193                      title=""
194                      tal:define="url_data python:encodeURLData({'url':entryURL,'title':entryTitle});"
195                      tal:attributes="href string:http://www.spurl.net/spurl.php?${url_data};
196                                      title string:Spurl: ${entryTitle}">
197                      <img src=""
198                           alt="Spurl"
199                           tal:attributes="src string:$portal_url/spurl.gif;" /></a>
200                </span>
201         </div>
202
203   </tal:x>
204</div>
205
206<!-- macro for the commandline showing the categories for the current entry and the comments plus actions to read more and add comments -->
207<div tal:condition="not: standardButtons" metal:define-macro="commandLineNonStandard" tal:define="allowed python:obj.portal_discussion.isDiscussionAllowedFor(obj)" class="BlogCommandLine">
208    <tal:comments tal:condition="allowed">
209        <tal:block tal:define="comments python:obj.portal_discussion.getDiscussionFor(obj);
210                                       tb_number python:len(obj.getTrackbacks())">
211            <a href="" tal:attributes="href obj/absolute_url"
212                           i18n:translate="comments">Comments</a>: <span tal:content="python:comments.replyCount(obj)" />&nbsp;
213            |&nbsp;<a href="" tal:attributes="href obj/absolute_url"
214                           i18n:translate="trackbacks">Trackbacks</a>: <span tal:content="tb_number" />&nbsp;
215            <span tal:condition="python:obj.portal_membership.checkPermission('Reply to item', obj)">
216                |&nbsp;<a href="" tal:attributes="href string:${obj/absolute_url}/discussion_reply_form?backurl=${obj/absolute_url}" title="Add new comment"
217                              i18n:translate="add_new_comment"
218                              i18n:attributes="title add_new_comment">Add new comment</a>&nbsp;
219            </span>
220        </tal:block>
221    </tal:comments>
222    <tal:readmore tal:condition="showReadMore | python:0">
223        <span tal:condition="allowed">|</span>
224        <a href="" tal:attributes="href obj/absolute_url" title="Read more"
225                   i18n:attributes="title read_full_blog"
226                   i18n:translate="read_full_blog">Read more</a>
227    </tal:readmore>
228    <span tal:condition="python:obj.portal_membership.checkPermission('Modify portal content', obj)">|
229    <a href="" tal:attributes="href string:${obj/absolute_url}/base_edit" title="Edit"
230           i18n:translate="edit_blog">Edit</a>
231    </span>
232</div>
233
234<div tal:condition="standardButtons" metal:define-macro="commandLine" tal:define="allowed python:obj.portal_discussion.isDiscussionAllowedFor(obj)" class="BlogCommandLine">
235    <div class="simpleBlogLinkButtons">
236        <tal:comments tal:condition="allowed">
237            <tal:block tal:define="comments python:obj.portal_discussion.getDiscussionFor(obj);
238                                               tb_number python:len(obj.getTrackbacks())">
239                <a href="" tal:attributes="href obj/absolute_url"
240                    i18n:translate="comments">Comments</a>: <span tal:content="python:comments.replyCount(obj)" />&nbsp;
241            |&nbsp;<a href="" tal:attributes="href obj/absolute_url"
242                           i18n:translate="trackbacks">Trackbacks</a>: <span tal:content="tb_number" />&nbsp;
243            </tal:block>
244        </tal:comments>
245        <tal:readmore tal:condition="showReadMore | python:0">
246            <span tal:condition="allowed">|</span>
247            <a href="" tal:attributes="href obj/absolute_url" title="Read more">Read more</a>
248        </tal:readmore>
249    </div>
250    <form action=""
251          method="post"
252          tal:condition="python:allowed and here.portal_membership.checkPermission('Reply to item', obj)"
253          tal:attributes="action string:${obj/absolute_url}/discussion_reply_form">         
254        <input type="Hidden" name="backurl" value="" tal:attributes="value obj/absolute_url">
255        <input class="standalone" type="submit" value="Add Comment" i18n:attributes="value add_new_comment"/>
256    </form>
257    <form action=""
258          method="post"
259          tal:condition="python:obj.portal_membership.checkPermission('Modify portal content', obj)"
260          tal:attributes="action string:${obj/absolute_url}/base_edit">         
261          <input class="standalone" type="submit" value="Edit" i18n:attributes="value edit_blog"/>
262    </form>
263</div>
264
265
266
267<!-- macro used by the portlets to compile a list of available categories -->
268<div metal:define-macro="portletCategories"
269     tal:define="cats python:here.simpleblog_tool.getAvailableCategories(here)"
270     tal:omit-tag="">
271    <tal:toggle tal:define="global toggle python:toggle or 0"/>
272    <dd tal:attributes="class python:test(toggle, 'portletItem even', 'portletItem odd')">
273        <strong i18n:translate="blog_categories">Categories:</strong>
274        <tal:toggle tal:define="global toggle python:test(toggle==1,0,1)"/>
275    </dd>
276    <tal:cats tal:repeat="cat python:here.simpleblog_tool.getSortedKeys(cats)">
277        <dd tal:define="pss modules/Products.PythonScripts.standard;
278                        fp nocall:fp | python:here.simpleblog_tool.getFrontPage(here);
279                        quotedCat python:pss.url_quote(cat);
280                        category python:'%s (%s)' %(cat,cats[cat])"
281            tal:condition="python:cats[cat]>0"
282            tal:attributes="class python:test(toggle, 'portletItem even', 'portletItem odd')">
283            <a href="#"
284               tal:attributes="href string:${fp/absolute_url}/SimpleBlogCatSearch?category=${quotedCat};
285                               title cat"><span tal:content="category"/></a>
286            <tal:toggle tal:define="global toggle python:test(toggle==1,0,1)"/>
287        </dd>
288    </tal:cats>
289</div>
290
291<!-- macro used by the portlets to compile a list of recent additions -->
292<div metal:define-macro="portletRecent"
293     tal:define="recent python:here.simpleblog_tool.searchForEntries(here)"
294     tal:omit-tag="">
295     <tal:toggle tal:define="global toggle python:toggle or 0"/>
296     <tal:block tal:condition="recent">
297        <dd tal:attributes="class python:test(toggle, 'portletItem even', 'portletItem odd')">
298            <strong i18n:translate="recent_additions">Recent entries:</strong>
299            <tal:toggle tal:define="global toggle python:test(toggle==1,0,1)"/>
300        </dd>
301        <tal:entries tal:repeat="entry recent">
302        <dd tal:attributes="class python:test(toggle, 'portletItem even', 'portletItem odd')">
303            <a href="#"
304                           tal:attributes="href entry/getURL;"
305                           title="entry">
306                           <img src="#" tal:attributes="src string:${portal_url}/${entry/getIcon};" alt="" />
307                           <span tal:content="python:entry.Title or entry.getId"/>
308                        </a>
309            <tal:toggle tal:define="global toggle python:test(toggle==1,0,1)"/>
310        </dd>
311        </tal:entries>
312        <dd tal:attributes="class python:test(toggle, 'portletItem even', 'portletItem odd')"
313            style="text-align:right;">
314            <a title="More..."
315               tal:attributes="href string:${here/absolute_url}/SimpleBlogFullSearch"
316               i18n:attributes="title box_morelink"
317               i18n:translate="box_morelink"
318               i18n:domain="plone">More...</a>
319            <tal:toggle tal:define="global toggle python:test(toggle==1,0,1)"/>
320        </dd>
321    </tal:block>
322    <dd tal:condition="not: recent"
323        tal:attributes="class python:test(toggle, 'portletItem even', 'portletItem odd')">       
324        <span i18n:translate="no_published_blog_entries">No blog entries are published.</span>
325        <tal:toggle tal:define="global toggle python:test(toggle==1,0,1)"/>
326    </dd>
327</div>
328
329<div metal:define-macro="portletCalendar"
330     tal:omit-tag=""
331     tal:define="DateTime python:modules['DateTime'].DateTime;
332                 current python:DateTime();
333                 anchor_url request/anchor_url | here_url;
334                 anchor_method request/anchor_method | template/getId;
335                 yearmonth here/getYearAndMonthToDisplay;
336                 nextYearMax python: current+365;
337                 prevYearMin python: current-365;
338                 year python:yearmonth[0];
339                 month python:yearmonth[1];
340                 prevMonthTime python:here.getPreviousMonth(month, year);
341                 nextMonthTime python:here.getNextMonth(month, year);
342                 weeks python:here.simpleblog_tool.getEventsForCalendar(month=month, year=year, context=here);
343                 translation_service nocall:here/translation_service;
344                 day_msgid nocall:translation_service/day_msgid;
345                 weekday_english nocall:translation_service/weekday_english;
346                 utranslate nocall:here/utranslate;
347                 toLocalizedTime nocall:here/toLocalizedTime;
348                 published_state python:here.simpleblog_tool.getPublishedState()"
349    i18n:domain="plone">
350    <!-- The calendar, rendered as a table -->
351
352    <table cellspacing="0" class="simpleBlogCalendar" id="thePloneCalendar" summary="Calendar" i18n:attributes="summary">
353        <thead>
354            <tr>
355                <th id="calendar-previous">
356                    <a href="#" rel="nofollow"
357                       title="Previous month"
358                       tal:attributes="href python:'%s/%s?month:int=%d&amp;year:int=%d' % (anchor_url, anchor_method, prevMonthTime.month(),prevMonthTime.year())"
359                       tal:condition="python: yearmonth > (prevYearMin.year(), prevYearMin.month())"
360                       i18n:attributes="title title_previous_month;">&laquo;</a>
361                </th>
362                <th colspan="5">
363                    <span i18n:translate="" tal:omit-tag="">
364                        <span i18n:name="monthname"
365                              tal:define="month_english python:translation_service.month_english(month);"
366                              tal:attributes="id string:calendar-month-$month_english"
367                              tal:content="python: utranslate(translation_service.month_msgid(month), default=month_english)"
368                              tal:omit-tag=""
369                              id="calendar-month-month">monthname</span>
370                        <span i18n:name="year"
371                              tal:content="string:$year"
372                              tal:attributes="id string:calendar-year-$year;"
373                              tal:omit-tag=""
374                              id="calendar-year">year</span>
375                    </span>
376                </th>
377                <th id="calendar-next">
378                    <a href="#" rel="nofollow"
379                       title="Next month"
380                       tal:attributes="href python:'%s/%s?month:int=%d&amp;year:int=%d' % (anchor_url, anchor_method, nextMonthTime.month(),nextMonthTime.year())"
381                       tal:condition="python: yearmonth &lt; (nextYearMax.year(), nextYearMax.month())"
382                       i18n:attributes="title title_next_month;">&raquo;</a>
383                </th>
384            </tr>
385            <tr tal:define="weekdaynumbers here/portal_calendar/getDayNumbers" class="weekdays">
386                <tal:data tal:repeat="daynumber weekdaynumbers">
387                    <td tal:define="weekday_english python:weekday_english(daynumber,format='a');"
388                        tal:content="python: utranslate(day_msgid(daynumber, format='s'), default=weekday_english)">Su</td>
389                </tal:data>
390            </tr>
391        </thead>
392        <tbody>
393            <tr tal:repeat="week weeks">
394              <tal:block repeat="day week">
395                <tal:block define="daynumber day/day;
396                                   datestring python: '%d%0.2d%0.2d' % (year, month, daynumber);
397                                   javascriptstring string:javascript:%sDay('%s');">
398                  <td class="event" tal:condition="day/event"
399                      tal:attributes="onmouseout  python: javascriptstring % ('hide', datestring);
400                                      onmouseover python: javascriptstring % ('show', datestring);
401                                      class       python:test(current.year()==year and current.month()==month and current.day()==int(daynumber), 'todayevent', 'event')">
402                    <span tal:define="begEndTimes python:here.getBeginAndEndTimes(day=daynumber, month=month, year=year)" tal:omit-tag="">
403                      <span tal:define="begin python:DateTime(begEndTimes[0].timeTime()+86400).ISO();
404                                        end python:DateTime(begEndTimes[1].strftime('%m/%d/%y')).ISO();
405                                        pss python:modules['Products'].PythonScripts.standard" tal:omit-tag="">
406                      <a href="" tal:attributes="href python:here.absolute_url()+'/SimpleBlogDaySearch?startdate=%s'%(pss.url_quote(end))">
407                        <span tal:replace="python: daynumber or default">&nbsp;</span>
408                      </a>
409                      </span>
410                    </span>
411                  </td>
412                  <tal:notdayevent tal:condition="not: day/event">
413                  <td tal:condition="python: current.year()==year and current.month()==month and current.day()==int(daynumber)"
414                      tal:content="python: daynumber or default" class="todaynoevent">
415                    &nbsp;
416                  </td>
417                  <td tal:condition="not: python: current.year()==year and current.month()==month and current.day()==int(daynumber)"
418                      tal:content="python: daynumber or default">
419                    &nbsp;
420                  </td>
421                  </tal:notdayevent>
422                </tal:block>
423              </tal:block>
424            </tr>
425        </tbody>
426    </table>
427
428
429    <!-- The sticky notes -->
430    <tal:week repeat="week weeks"><tal:day repeat="day week">
431        <div class="dayPopup"
432             id="dummy"
433             tal:attributes="id python:'day%d%0.2d%0.2d' % (year, month, day['day']) "
434             tal:condition="day/event">
435             <div class="date" tal:content="python:here.toLocalizedTime('%d/%0.2d/%0.2d' % (year, month, day['day']))">
436             2001-04-11
437             </div>
438             <tal:event repeat="anevent day/eventslist">
439             <div class="appointment" tal:content="python: here.getEventString(event=anevent)">an event</div>
440             </tal:event>
441        </div>
442      </tal:day>
443    </tal:week>
444
445</div>
446
447
448</body>
449</html>
Note: See TracBrowser for help on using the repository browser.