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

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