admin: allow changing form recipient role in a popup

This commit is contained in:
Frédéric Péters 2012-08-13 16:42:45 +02:00
parent 04db262c19
commit cd11fa46e0
1 changed files with 49 additions and 14 deletions

View File

@ -272,7 +272,8 @@ class FieldsDirectory(FieldsDirectory):
class FormDefPage(Directory):
_q_exports = ['', 'fields', 'edit', 'delete', 'duplicate', 'export',
'archive', 'invite', 'enable', 'workflow', 'category']
'archive', 'invite', 'enable', 'workflow', 'category',
'recipient']
def __init__(self, component):
try:
@ -295,30 +296,41 @@ class FormDefPage(Directory):
'<div class="bo-block">'
'<h3>%s</h3>' % _('Access')
'<ul>'
categories = get_categories()
if categories:
'<li>%s ' % _('Category:')
if self.formdef.category:
self.formdef.category.name
else:
_('None')
'-'
' '
'(<a href="category" rel="popup">%s</a>)' % _('change')
'</li>'
'<li>%s ' % _('Workflow:')
if self.formdef.workflow:
'<li>%s ' % _('Workflow:')
'%s' % self.formdef.workflow.name
if self.formdef.workflow_id:
pristine_workflow = Workflow.get(self.formdef.workflow_id)
if pristine_workflow.has_options():
' (<a href="workflow">%s</a>)' % _('options')
'</li>'
self.formdef.workflow.name
else:
'-'
if self.formdef.workflow_id:
pristine_workflow = Workflow.get(self.formdef.workflow_id)
if pristine_workflow.has_options():
' (<a href="workflow">%s</a>)' % _('options')
'</li>'
'<li>%s ' % _('Recipient Role:')
if self.formdef.receiver:
'<li>%s ' % _('Recipient Role:')
'<a href="../../roles/%s/">%s</a></li>' % (
'<a href="../../roles/%s/">%s</a>' % (
self.formdef.receiver.id, self.formdef.receiver.name)
else:
'-'
' '
'(<a href="recipient" rel="popup">%s</a>)' % _('change')
'</li>'
'<li>%s ' % _('Sender Roles:')
if self.formdef.roles:
'<li>%s ' % _('Sender Roles:')
roles = []
for x in self.formdef.roles:
if x == logged_users_role().id:
@ -328,7 +340,10 @@ class FormDefPage(Directory):
'%s' % ', '.join(roles)
if self.formdef.always_advertise:
' (%s)' % _('Always advertise')
'</li>'
else:
'-'
'</li>'
if self.formdef.acl_read:
'<li>%s ' % _('Read Access:')
'%s</li>' % {'none': _('None'),
@ -371,7 +386,7 @@ class FormDefPage(Directory):
'</div>'
'<div class="bo-block clear">'
'<h3 class="clear">%s (<a href="fields">%s</a>)</h3>' % (
'<h3 class="clear">%s (<a href="fields/">%s</a>)</h3>' % (
_('Fields'), _('edit'))
self.get_preview()
'</div>'
@ -410,6 +425,26 @@ class FormDefPage(Directory):
self.formdef.store()
redirect('.')
def recipient [html] (self):
form = Form(enctype='multipart/form-data')
form.add(SingleSelectWidget, 'receiver_id',
value=self.formdef.receiver_id,
options = get_user_roles())
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
if form.get_widget('cancel').parse():
return redirect('.')
if not form.is_submitted() or form.has_errors():
get_response().breadcrumb.append( ('recipient', _('Recipient Role')) )
html_top('forms', title=self.formdef.name)
'<p>%s</p>' % _('Select the role that will handle those forms.')
form.render()
else:
self.formdef.receiver_id = form.get_widget('receiver_id').parse()
self.formdef.store()
redirect('.')
def get_preview [html] (self):
form = Form()
on_page = 0