Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-03-23

ZMI, Вкладка просмотра (View)

Продолжаем вытачивать полуфабрикат продукта для Zope. На предыдущем шаге сделана форма (вкладка ZMI) редактирования 'Edit'. Теперь сделаем вкладку просмотра 'View'.

Вкладка 'View' делается аналогично вкладке редактирования и даже проще, потому, что нет нужды делать парную функцию — обработчик формы. Форма просмотра будет только «на чтение».

Для разнообразия сделаю ее на основе шаблона ZPT.
from Products.PageTemplates.PageTemplateFile import PageTemplateFile # ZPT files
from Globals import DTMLFile # dtml files

addForm = DTMLFile('www/vcuFileAdd', globals())

def addFunction(self, id, filename, REQUEST=None):
    """addForm processor function. Constructor.
    Create a new VCUFile and add it to container.
    """
    p = VCUFileProduct(id, filename)
    self.Destination()._setObject(id, p)
    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=0)
    return id
#def addFunction(dispatcher, id, filename):

class VCUFileProduct(Implicit, Persistent, RoleManager, Item):
    """VCUFile product class, implements IVCUFile
    """
    implements(IVCUFile)

    #Item requerements
    meta_type = 'VCUFile'
    id = ''
    title = ''

    # ZMI views
    manage_options = (
        {'label':'Edit',   'action': 'editForm'}, # # editForm invoke editFunction
        {'label':'View',   'action': ''}, # If your class has a default view method (index_html) you should also include a View view whose action is an empty string
    ) + RoleManager.manage_options + Item.manage_options # security, undo, ownership

    security = ClassSecurityInfo()

    security.declareProtected('View', 'index_html')
    index_html = PageTemplateFile('www/vcuFileView', globals()) # ZPT file

    security.declareProtected('View management screens', 'editForm')
    editForm = DTMLFile('www/vcuFileEdit', globals()) # DTML file
В модуль с классом продукта добавлены четыре строки (выделены жирным). Один импорт, один элемент кортежа 'manage_options' и метод 'index_html' с декларацией защиты.

Сама страничка просмотра сделана добавлением файла 'vcufile\www\vcuFileView.zpt' такого содержимого
<html>
  <head>
    <title tal:content="here/title_or_id">The title</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
  </head>
  <body>
    <h2><span tal:replace="here/title_or_id">content title or id</span>
        <span tal:condition="template/title"
              tal:replace="template/title">optional template title</span>
 </h2>
    This is VCU File <em tal:content="here/id">file id</em>.
  </body>
</html>
- самого примитивного (как просто делать заготовки :)

Осталось совсем чуть-чуть. Вкладку 'Properties' — и тема «заготовки Продукта Zope» будет закрыта.

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (185) web-develop (170) gov.ru (156) video (123) бытовуха (111) sysadm (100) GIS (97) Zope(Plone) (88) Book (81) programming (81) бурчалки (80) грабли (77) development (73) Fun (72) windsurfing (72) Microsoft (64) hiload (62) opensource (58) internet provider (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) language (45) hardware (44) JS (41) curse (40) money (40) driving (39) DBMS (38) bigdata (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) tourism (18) Apache (16) Manager (15) web-browser (15) Никонов (15) happiness (14) music (14) todo (14) PHP (13) weapon (13) HTTP. Apache (12) SSH (12) course (12) frameworks (12) functional programming (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) crypto (11) game (11) map (11) scala (10) HTTPD (9) ODF (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) Photo (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) display (4) holywar (4) nginx (4) pistol (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) USA (3) mount (3) spark (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) font (2) ftp (2) holiday (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Palanga (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) krusader (1) license (1) mindmap (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)

Google+ Followers