2013/11/09

Event Listing View

event_listing 是 plone.app.events 模組裡定義的 Browser Page,可以被指定成為 Plone Site 或 Folder 的 view method 選項,提供豐富的顯示方式。

event_listing.pt 有定義 mode 變數,預設值是 'future':

tal:define="mode request/mode|string:future;"

如果 @@event_listing 沒有指定 mode 變數值,它會再檢查 _date 變數,最後決定 mode 預設值是 'date' 或 'future'。

if self.mode is None:
    self.mode = self._date and 'day' or 'future'

點選 Past 頁籤時,它會指定 'past' 給 mode 變數,此時 header_string() 會回傳 main_msgid 的翻譯值,其他情況下,還可能搭配 sub_msgid 變數值。

頁籤的連結網址,也配合變數值來產生,例如 mode_past_url 會把 'past' 傳給 _date_nav_url():

def _date_nav_url(self, mode, datestr=''):
    return '%s?mode=%s%s' % (
        self.request.getURL(),
        mode,
        datestr and '&date=%s' % datestr or ''
    )

event_listing.pt 經由 view/mode_past_url 來指派網址值:

browser/event_listing.pt
<a class="mode_past" href=""
  tal:attributes="href view/mode_past_url"
  i18n:translate="mode_past_link">Past</a>

No comments: