allow entering of survey data for other person; prerequisite: keep URL params in title and breadcrumbs links
This commit is contained in:
parent
60604cd38b
commit
396e17c0dc
5 changed files with 36 additions and 4 deletions
|
@ -252,6 +252,16 @@ class BaseView(GenericView, I18NView, SortableMixin):
|
|||
result.append(view)
|
||||
return result
|
||||
|
||||
@Lazy
|
||||
def urlParamString(self):
|
||||
return self.getUrlParamString()
|
||||
|
||||
def getUrlParamString(self):
|
||||
qs = self.request.get('QUERY_STRING')
|
||||
if qs:
|
||||
return '?' + qs
|
||||
return ''
|
||||
|
||||
@Lazy
|
||||
def principalId(self):
|
||||
principal = self.request.principal
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
<h1 tal:define="tabview item/tabview|nothing"
|
||||
tal:attributes="ondblclick item/openEditWindow">
|
||||
<a tal:omit-tag="python: level > 1"
|
||||
tal:attributes="href request/URL"
|
||||
tal:attributes="href string:${request/URL}${item/urlParamString}"
|
||||
tal:content="item/title">Title</a>
|
||||
<a title="Show tabular view"
|
||||
i18n:attributes="title"
|
||||
|
|
|
@ -120,6 +120,9 @@ class NodeView(BaseView):
|
|||
url=absoluteURL(p, self.request)))
|
||||
if self.virtualTarget:
|
||||
data.extend(self.virtualTarget.breadcrumbs())
|
||||
if data and not '?' in data[-1]['url']:
|
||||
if self.urlParamString:
|
||||
data[-1]['url'] += self.urlParamString
|
||||
return data
|
||||
|
||||
def viewModes(self):
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2013 Helmut Merz helmutm@cy55.de
|
||||
# Copyright (c) 2015 Helmut Merz helmutm@cy55.de
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -52,6 +52,16 @@ class SurveyView(ConceptView):
|
|||
self.registerDojo()
|
||||
return template.macros['survey']
|
||||
|
||||
@Lazy
|
||||
def title(self):
|
||||
title = self.context.title
|
||||
personId = self.request.form.get('person')
|
||||
if personId:
|
||||
person = adapted(getObjectForUid(personId))
|
||||
if person is not None:
|
||||
return '%s: %s' % (title, person.title)
|
||||
return title
|
||||
|
||||
@Lazy
|
||||
def tabview(self):
|
||||
if self.editable:
|
||||
|
@ -147,6 +157,8 @@ class SurveyView(ConceptView):
|
|||
if 'submit' not in form:
|
||||
return []
|
||||
respManager = Responses(self.context)
|
||||
respManager.personId = (self.request.form.get('person') or
|
||||
respManager.getPersonId())
|
||||
data = {}
|
||||
response = Response(self.adapted, None)
|
||||
for key, value in form.items():
|
||||
|
@ -222,7 +234,10 @@ class SurveyView(ConceptView):
|
|||
def getValues(self, question):
|
||||
setting = None
|
||||
if self.data is None:
|
||||
self.data = Responses(self.context).load()
|
||||
respManager = Responses(self.context)
|
||||
respManager.personId = (self.request.form.get('person') or
|
||||
respManager.getPersonId())
|
||||
self.data = respManager.load()
|
||||
if self.data:
|
||||
setting = self.data.get(question.uid)
|
||||
if setting is None:
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
<div class="button" id="show_questionnaire">
|
||||
<a href="" xxonclick="back(); return false"
|
||||
i18n:translate=""
|
||||
tal:attributes="href view/virtualTargetUrl">
|
||||
tal:attributes="href string:${request/URL}${item/urlParamString}">
|
||||
Back to Questionnaire</a>
|
||||
<br />
|
||||
</div>
|
||||
|
@ -67,6 +67,10 @@
|
|||
</div>
|
||||
<form method="post">
|
||||
<table class="listing">
|
||||
<input type="hidden" name="person"
|
||||
tal:define="personId request/person|nothing"
|
||||
tal:condition="personId"
|
||||
tal:attributes="value personId" />
|
||||
<tal:group repeat="group item/groups">
|
||||
<tr>
|
||||
<td> </td>
|
||||
|
|
Loading…
Add table
Reference in a new issue