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) |                 result.append(view) | ||||||
|         return result |         return result | ||||||
| 
 | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def urlParamString(self): | ||||||
|  |         return self.getUrlParamString() | ||||||
|  | 
 | ||||||
|  |     def getUrlParamString(self): | ||||||
|  |         qs = self.request.get('QUERY_STRING') | ||||||
|  |         if qs: | ||||||
|  |             return '?' + qs | ||||||
|  |         return '' | ||||||
|  | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def principalId(self): |     def principalId(self): | ||||||
|         principal = self.request.principal |         principal = self.request.principal | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ | ||||||
|     <h1 tal:define="tabview item/tabview|nothing" |     <h1 tal:define="tabview item/tabview|nothing" | ||||||
|         tal:attributes="ondblclick item/openEditWindow"> |         tal:attributes="ondblclick item/openEditWindow"> | ||||||
|       <a tal:omit-tag="python: level > 1" |       <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> |          tal:content="item/title">Title</a> | ||||||
|       <a title="Show tabular view" |       <a title="Show tabular view" | ||||||
|          i18n:attributes="title" |          i18n:attributes="title" | ||||||
|  |  | ||||||
|  | @ -120,6 +120,9 @@ class NodeView(BaseView): | ||||||
|                                     url=absoluteURL(p, self.request))) |                                     url=absoluteURL(p, self.request))) | ||||||
|         if self.virtualTarget: |         if self.virtualTarget: | ||||||
|             data.extend(self.virtualTarget.breadcrumbs()) |             data.extend(self.virtualTarget.breadcrumbs()) | ||||||
|  |         if data and not '?' in data[-1]['url']: | ||||||
|  |             if self.urlParamString: | ||||||
|  |                 data[-1]['url'] += self.urlParamString | ||||||
|         return data |         return data | ||||||
| 
 | 
 | ||||||
|     def viewModes(self): |     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 | #  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 | #  it under the terms of the GNU General Public License as published by | ||||||
|  | @ -52,6 +52,16 @@ class SurveyView(ConceptView): | ||||||
|         self.registerDojo() |         self.registerDojo() | ||||||
|         return template.macros['survey'] |         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 |     @Lazy | ||||||
|     def tabview(self): |     def tabview(self): | ||||||
|         if self.editable: |         if self.editable: | ||||||
|  | @ -147,6 +157,8 @@ class SurveyView(ConceptView): | ||||||
|         if 'submit' not in form: |         if 'submit' not in form: | ||||||
|             return [] |             return [] | ||||||
|         respManager = Responses(self.context) |         respManager = Responses(self.context) | ||||||
|  |         respManager.personId = (self.request.form.get('person') or  | ||||||
|  |                                 respManager.getPersonId()) | ||||||
|         data = {} |         data = {} | ||||||
|         response = Response(self.adapted, None) |         response = Response(self.adapted, None) | ||||||
|         for key, value in form.items(): |         for key, value in form.items(): | ||||||
|  | @ -222,7 +234,10 @@ class SurveyView(ConceptView): | ||||||
|     def getValues(self, question): |     def getValues(self, question): | ||||||
|         setting = None |         setting = None | ||||||
|         if self.data is 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: |         if self.data: | ||||||
|             setting = self.data.get(question.uid) |             setting = self.data.get(question.uid) | ||||||
|         if setting is None: |         if setting is None: | ||||||
|  |  | ||||||
|  | @ -45,7 +45,7 @@ | ||||||
|     <div class="button" id="show_questionnaire"> |     <div class="button" id="show_questionnaire"> | ||||||
|       <a href="" xxonclick="back(); return false" |       <a href="" xxonclick="back(); return false" | ||||||
|          i18n:translate="" |          i18n:translate="" | ||||||
|          tal:attributes="href view/virtualTargetUrl"> |          tal:attributes="href string:${request/URL}${item/urlParamString}"> | ||||||
|         Back to Questionnaire</a> |         Back to Questionnaire</a> | ||||||
|       <br /> |       <br /> | ||||||
|     </div> |     </div> | ||||||
|  | @ -67,6 +67,10 @@ | ||||||
|     </div> |     </div> | ||||||
|     <form method="post"> |     <form method="post"> | ||||||
|       <table class="listing"> |       <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"> |         <tal:group repeat="group item/groups"> | ||||||
|           <tr> |           <tr> | ||||||
|             <td> </td> |             <td> </td> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue