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

2012-03-22

ZMI, Вкладка редактирования

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

A product’s management views are defined in the manage_options class attribute.

Чтобы сделать вкладку редактирования, я внес в класс продукта следующие строки (выделены жирным):
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
    ) + RoleManager.manage_options + Item.manage_options # security, undo, ownership

    security = ClassSecurityInfo()

    security.declareProtected('View management screens', 'editForm')
    editForm = DTMLFile('www/vcuFileEdit', globals())

    security.declareProtected('Change Images and Files', 'editFunction')
    def editFunction(self, filename, REQUEST=None):
        """Changes attributes."""
        self.title = filename
        if REQUEST is not None:
            return self.editForm(REQUEST, management_view='Edit',
                manage_tabs_message='VCU File attribs changed.')

    def __init__(self, id, filename):
        self.fid = ''
        self.id = id
        self.title = filename

    security.declarePublic('getFID')
    def getFID(self):
        """File ID"""
        return self.fid
Добавлены два метода (editForm, editFunction) и один атрибут (manage_options). Пока код ничего полезного не делает, это только заготовка, которая, тем не менее, выполняет все требования со стороны Zope. Остается только наполнить форму и обработчик реальными данными.

Сама форма редактирования выглядит так:


и нарисована она в новом файле 'vcufile\www\vcuFileEdit.dtml'.

Посмотрим на его содержимое
<dtml-var manage_page_header>
<dtml-var manage_tabs>
<p class="form-help">
    You can update the data for this file object using the form below.
</p>
<form action="editFunction">
<table cellspacing="0" cellpadding="2" border="0">
  <tr>
    <td align="left" valign="top">
        <div class="form-optional">Filename</div>
    </td>
    <td align="left" valign="top">
        <input type="text" name="filename" size="40"
            value="&dtml-title;"/>
    </td>
  </tr>
  <tr>
    <td align="left" valign="top"> </td>
    <td align="left" valign="top">
        <div class="form-element">
            <input class="form-element" type="submit" name="submit" value=" Save Changes " />
        </div>
    </td>
  </tr>
</table>
<p class="form-help">
    Lorem ipsum dolor sit amet, ...
</p>
</form>
<dtml-var manage_page_footer>
Пока это очень похоже на форму добавления. Из отличий особо можно отметить строку '<dtml-var manage_tabs>' очевидного назначения. А если не очевидно, попробуйте ее убрать и посмотреть, что получится.

На этом пока все. В следующий раз будем делать вкладку 'View' и, может быть, 'Properties'.

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

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

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (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) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (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) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)