work in progress: view work items
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3098 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									a77166dfee
								
							
						
					
					
						commit
						94d38bbe2c
					
				
					 6 changed files with 79 additions and 6 deletions
				
			
		|  | @ -404,19 +404,16 @@ class BaseView(GenericView, I18NView): | |||
| 
 | ||||
|     @Lazy | ||||
|     def versionId(self): | ||||
|         #versionable = IVersionable(self.context, None) | ||||
|         versionable = IVersionable(self.target, None) | ||||
|         return versionable and versionable.versionId or '' | ||||
| 
 | ||||
|     @Lazy | ||||
|     def currentVersionId(self): | ||||
|         #versionable = IVersionable(self.context, None) | ||||
|         versionable = IVersionable(self.target, None) | ||||
|         return versionable and versionable.currentVersion.versionId or '' | ||||
| 
 | ||||
|     @Lazy | ||||
|     def hasVersions(self): | ||||
|         #versionable = IVersionable(self.context, None) | ||||
|         versionable = IVersionable(self.target, None) | ||||
|         return versionable and len(versionable.versions) > 1 or False | ||||
| 
 | ||||
|  | @ -424,8 +421,6 @@ class BaseView(GenericView, I18NView): | |||
|     def versionInfo(self): | ||||
|         if not self.useVersioning: | ||||
|             return None | ||||
|         #context = self.context | ||||
|         #versionable = IVersionable(context, None) | ||||
|         target = self.target | ||||
|         versionable = IVersionable(target, None) | ||||
|         if versionable is None: | ||||
|  | @ -512,6 +507,11 @@ class BaseView(GenericView, I18NView): | |||
| 
 | ||||
|     inlineEditable = False | ||||
| 
 | ||||
|     # work items | ||||
|     @Lazy | ||||
|     def workItems(self): | ||||
|         return [] | ||||
| 
 | ||||
|     # comments | ||||
| 
 | ||||
|     @Lazy | ||||
|  |  | |||
|  | @ -7,6 +7,7 @@ | |||
|           <metal:fields use-macro="item/template/macros/conceptfields" /> | ||||
|           <metal:fields use-macro="item/template/macros/conceptchildren" /> | ||||
|           <metal:fields use-macro="item/template/macros/conceptresources" /> | ||||
|           <metal:fields use-macro="view/work_macros/workitems" /> | ||||
|           <metal:fields use-macro="view/comment_macros/comments" /> | ||||
|   </div> | ||||
| </metal:data> | ||||
|  |  | |||
|  | @ -482,8 +482,19 @@ class NodeView(BaseView): | |||
|         self.recordAccess('external_edit') | ||||
|         return ExternalEditorView(target, self.request).load(url=url) | ||||
| 
 | ||||
|     # comments | ||||
|     # work items | ||||
| 
 | ||||
|     @Lazy | ||||
|     def work_macros(self): | ||||
|         from loops.organize.work.browser import work_macros | ||||
|         return work_macros.macros | ||||
| 
 | ||||
|     @Lazy | ||||
|     def workItems(self): | ||||
|         return component.getMultiAdapter((self.context, self.request), | ||||
|                                          name='workitems.html') | ||||
| 
 | ||||
|     # comments | ||||
| 
 | ||||
|     @Lazy | ||||
|     def comment_macros(self): | ||||
|  |  | |||
|  | @ -34,8 +34,10 @@ from cybertools.browser.action import actions | |||
| from cybertools.organize.interfaces import IWorkItems | ||||
| from loops.browser.action import DialogAction | ||||
| from loops.browser.form import ObjectForm, EditObject | ||||
| from loops.browser.node import NodeView | ||||
| from loops.organize.party import getPersonForUser | ||||
| from loops.organize.tracking.browser import BaseTrackView | ||||
| from loops.organize.tracking.report import TrackDetails | ||||
| from loops import util | ||||
| from loops.util import _ | ||||
| 
 | ||||
|  | @ -43,6 +45,37 @@ from loops.util import _ | |||
| work_macros = ViewPageTemplateFile('work_macros.pt') | ||||
| 
 | ||||
| 
 | ||||
| class WorkItemsView(NodeView): | ||||
| 
 | ||||
|     def __init__(self, context, request): | ||||
|         self.context = context | ||||
|         self.request = request | ||||
| 
 | ||||
|     @Lazy | ||||
|     def workItems(self): | ||||
|         ts = self.loopsRoot.getRecordManager().get('work') | ||||
|         if ts is not None: | ||||
|             return IWorkItems(ts) | ||||
| 
 | ||||
|     @Lazy | ||||
|     def allWorkItems(self): | ||||
|         result = [] | ||||
|         target = self.virtualTargetObject | ||||
|         workItems = self.workItems | ||||
|         if None in (workItems, target): | ||||
|             return result | ||||
|         for wi in workItems.query(task=util.getUidForObject(target)): | ||||
|             result.append(WorkItemDetails(self, wi)) | ||||
|         return result | ||||
| 
 | ||||
| 
 | ||||
| class WorkItemDetails(TrackDetails): | ||||
| 
 | ||||
|     @Lazy | ||||
|     def description(self): | ||||
|         return self.track.description | ||||
| 
 | ||||
| 
 | ||||
| class WorkItemView(BaseTrackView): | ||||
| 
 | ||||
|     pass | ||||
|  |  | |||
|  | @ -24,6 +24,12 @@ | |||
| 
 | ||||
|   <!-- application views --> | ||||
| 
 | ||||
|   <browser:page | ||||
|       name="workitems.html" | ||||
|       for="loops.interfaces.INode" | ||||
|       class="loops.organize.work.browser.WorkItemsView" | ||||
|       permission="zope.View" /> | ||||
| 
 | ||||
|   <browser:page | ||||
|       name="create_workitem.html" | ||||
|       for="loops.interfaces.INode" | ||||
|  |  | |||
|  | @ -2,6 +2,28 @@ | |||
| <!-- $Id$ --> | ||||
| 
 | ||||
| 
 | ||||
| <metal:work define-macro="workitems" | ||||
|                 tal:define="workItems nocall:view/workItems" | ||||
|                 tal:condition="workItems/allWorkItems"> | ||||
|   <br /> | ||||
|   <h2 i18n:translate="">Work Items</h2> | ||||
|   <metal:workitems define-macro="workitems_listing" | ||||
|                    tal:define="workItems nocall:workItems|nocall:view/workItems;"> | ||||
|     <tal:workitem tal:repeat="workItem workItems/allWorkItems"> | ||||
|       <br /> | ||||
|       <div class="comment"> | ||||
|         <h3> | ||||
|           <span tal:content="workItem/description">Subject</span></h3> | ||||
|         <div class="info"> | ||||
|           <span tal:replace="workItem/user/title">John</span>, | ||||
|           <span tal:replace="workItem/timeStamp">2007-03-30</span> | ||||
|         </div> | ||||
|       </div> | ||||
|     </tal:workitem> | ||||
|   </metal:workitems> | ||||
| </metal:work> | ||||
| 
 | ||||
| 
 | ||||
| <metal:block define-macro="create_workitem"> | ||||
|     <form method="post" | ||||
|           id="addWorkitem_form" class="dialog" | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm