Продолжаем вытачивать
полуфабрикат продукта для 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'.
Комментариев нет:
Отправить комментарий