work in progress: page layout for 'book' compound objects
This commit is contained in:
		
							parent
							
								
									c74af2b960
								
							
						
					
					
						commit
						dbc720c54a
					
				
					 8 changed files with 65 additions and 39 deletions
				
			
		|  | @ -17,7 +17,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_g3" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.Grid3" | ||||
|  | @ -25,7 +25,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_lt" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.ListThumbs" | ||||
|  | @ -33,7 +33,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_l1" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.List1" | ||||
|  | @ -41,7 +41,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_l3" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.List3" | ||||
|  | @ -49,7 +49,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_l2" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.List2" | ||||
|  | @ -57,7 +57,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_ht" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.HeaderThumbs" | ||||
|  | @ -65,7 +65,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_h0" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.Header0" | ||||
|  | @ -73,7 +73,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_h1" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.Header1" | ||||
|  | @ -81,7 +81,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_h2" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.Header2" | ||||
|  | @ -89,7 +89,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_h3" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.Header3" | ||||
|  | @ -107,7 +107,7 @@ | |||
| 
 | ||||
|   <zope:adapter | ||||
|         name="lobo_ig3" | ||||
|         for="loops.interfaces.IConcept | ||||
|         for="loops.interfaces.IConceptSchema | ||||
|              loops.browser.skin.Lobo" | ||||
|         provides="zope.interface.Interface" | ||||
|         factory="loops.browser.lobo.standard.ImageGrid3" | ||||
|  |  | |||
|  | @ -165,7 +165,7 @@ class Layout(Base, ConceptView): | |||
|         result = [] | ||||
|         for p in parts: | ||||
|             viewName = 'lobo_' + p | ||||
|             view = component.queryMultiAdapter((self.context, self.request), | ||||
|             view = component.queryMultiAdapter((self.adapted, self.request), | ||||
|                                                name=viewName) | ||||
|             if view is not None: | ||||
|                 view.parent = self | ||||
|  |  | |||
|  | @ -2,8 +2,6 @@ | |||
| loops - Linked Objects for Organization and Processing Services | ||||
| =============================================================== | ||||
| 
 | ||||
|   ($Id$) | ||||
| 
 | ||||
|   >>> from zope import component | ||||
|   >>> from zope.traversing.api import getName | ||||
| 
 | ||||
|  | @ -349,6 +347,17 @@ Micro Articles | |||
|   u'Systemic KM talks about organizational knowledge.' | ||||
| 
 | ||||
| 
 | ||||
| Books, Sections, and Pages | ||||
| ========================== | ||||
| 
 | ||||
|   >>> import os | ||||
|   >>> from loops.setup import importData | ||||
|   >>> importPath = os.path.join(os.path.dirname(__file__), 'book') | ||||
|   >>> importData(loopsRoot, importPath, 'loops_book_de.dmp') | ||||
| 
 | ||||
|   >>> from loops.compound.book.browser import PageLayout | ||||
| 
 | ||||
| 
 | ||||
| Fin de partie | ||||
| ============= | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| # | ||||
| #  Copyright (c) 2008 Helmut Merz helmutm@cy55.de | ||||
| #  Copyright (c) 2012 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 | ||||
|  | @ -18,8 +18,6 @@ | |||
| 
 | ||||
| """ | ||||
| Compound objects like articles, blog posts, storyboard items, ... | ||||
| 
 | ||||
| $Id$ | ||||
| """ | ||||
| 
 | ||||
| from zope.cachedescriptors.property import Lazy | ||||
|  | @ -27,35 +25,40 @@ from zope.interface import implements | |||
| from zope.traversing.api import getName | ||||
| 
 | ||||
| from loops.common import AdapterBase | ||||
| from loops.compound.interfaces import ICompound, compoundPredicateName | ||||
| from loops.compound.interfaces import ICompound, compoundPredicateNames | ||||
| 
 | ||||
| 
 | ||||
| class Compound(AdapterBase): | ||||
| 
 | ||||
|     implements(ICompound) | ||||
| 
 | ||||
|     compoundPredicateNames = compoundPredicateNames | ||||
| 
 | ||||
|     @Lazy | ||||
|     def compoundPredicate(self): | ||||
|         return self.context.getConceptManager()[compoundPredicateName] | ||||
|     def compoundPredicates(self): | ||||
|         return [self.context.getConceptManager()[n]  | ||||
|                     for n in self.compoundPredicateNames] | ||||
| 
 | ||||
|     def getParts(self): | ||||
|         if self.context.__parent__ is None: | ||||
|             return [] | ||||
|         return self.context.getResources([self.partOf]) | ||||
|         return self.context.getResources(self.compoundPredicates) | ||||
| 
 | ||||
|     def add(self, obj, position=None): | ||||
|         if position is None: | ||||
|             order = self.getMaxOrder() + 1 | ||||
|         else: | ||||
|             order = self.getOrderForPosition(position) | ||||
|         self.context.assignResource(obj, self.partOf, order=order) | ||||
|         self.context.assignResource(obj, self.partOf,  | ||||
|                                     order=order) | ||||
| 
 | ||||
|     def remove(self, obj, position=None): | ||||
|         if position is None: | ||||
|             self.context.deassignResource(obj, [self.partOf]) | ||||
|             self.context.deassignResource(obj, self.compoundPredicates) | ||||
|         else: | ||||
|             rel = self.getPartRelations()[position] | ||||
|             self.context.deassignResource(obj, [self.partOf], order=rel.order) | ||||
|             self.context.deassignResource(obj, self.compoundPredicates,  | ||||
|                                           order=rel.order) | ||||
| 
 | ||||
|     def reorder(self, parts): | ||||
|         existing = list(self.getPartRelations()) | ||||
|  | @ -77,7 +80,7 @@ class Compound(AdapterBase): | |||
|     # helper methods and properties | ||||
| 
 | ||||
|     def getPartRelations(self): | ||||
|         return self.context.getResourceRelations([self.partOf]) | ||||
|         return self.context.getResourceRelations(self.compoundPredicates) | ||||
| 
 | ||||
|     def getMaxOrder(self): | ||||
|         rels = self. getPartRelations() | ||||
|  | @ -117,5 +120,5 @@ class Compound(AdapterBase): | |||
| 
 | ||||
|     @Lazy | ||||
|     def partOf(self): | ||||
|         return self.conceptManager[compoundPredicateName] | ||||
|         return self.compoundPredicates[0] | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,16 +1,31 @@ | |||
| type(u'documenttype', u'Dokumentenart', options=u'qualifier:assign', | ||||
|     viewName=u'') | ||||
| 
 | ||||
| # book types | ||||
| type(u'book', u'Buch', viewName=u'', typeInterface=u'', | ||||
|     options=u'action.portlet:create_subtype,edit_concept') | ||||
| type(u'page', u'Seite', viewName=u'', typeInterface=u'', | ||||
| type(u'page', u'Seite', viewName=u'page_layout',  | ||||
|     typeInterface=u'loops.compound.book.interfaces.IPage', | ||||
|     options=u'action.portlet:edit_concept') | ||||
| type(u'section', u'Kapitel', viewName=u'', typeInterface=u'', | ||||
|     options=u'action.portlet:create_subtype,edit_concept') | ||||
| 
 | ||||
| concept(u'ispartof', u'is Part of', u'predicate', options=u'', predicateInterface=u'') | ||||
| concept(u'issubtype', u'is Subtype', u'predicate', options=u'', predicateInterface=u'') | ||||
| concept(u'system', u'System', u'domain') | ||||
| 
 | ||||
| # predicates | ||||
| concept(u'ispartof', u'is Part of', u'predicate', options=u'',  | ||||
|     predicateInterface=u'') | ||||
| concept(u'issubtype', u'is Subtype', u'predicate', options=u'hide_children', | ||||
|     predicateInterface='loops.interfaces.IIsSubtype') | ||||
| 
 | ||||
| # document types | ||||
| concept(u'keyquestions', u'Leitfragen', u'documenttype') | ||||
| concept(u'maintext', u'Haupttext', u'documenttype') | ||||
| concept(u'quote', u'Zitat', u'documenttype') | ||||
| concept(u'story', u'Geschichte', u'documenttype') | ||||
| concept(u'usecase', u'Fallbeispiel', u'documenttype') | ||||
| 
 | ||||
| child(u'book', u'section', u'issubtype') | ||||
| child(u'section', u'section', u'issubtype') | ||||
| child(u'section', u'page', u'issubtype') | ||||
| child(u'system', u'personal_info', u'standard') | ||||
| # book structure | ||||
| child(u'book', u'section', u'issubtype', usePredicate=u'ispartof') | ||||
| child(u'section', u'section', u'issubtype', usePredicate=u'ispartof') | ||||
| child(u'section', u'page', u'issubtype', usePredicate=u'ispartof') | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| # | ||||
| #  Copyright (c) 2008 Helmut Merz helmutm@cy55.de | ||||
| #  Copyright (c) 2012 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 | ||||
|  | @ -18,8 +18,6 @@ | |||
| 
 | ||||
| """ | ||||
| Compound objects like articles, blog posts, storyboard items, ... | ||||
| 
 | ||||
| $Id$ | ||||
| """ | ||||
| 
 | ||||
| #TODO: move generic stuff to cybertools.composer | ||||
|  | @ -31,7 +29,7 @@ from loops.interfaces import IConceptSchema | |||
| from loops.util import _ | ||||
| 
 | ||||
| 
 | ||||
| compoundPredicateName = 'ispartof' | ||||
| compoundPredicateNames = ['ispartof'] | ||||
| 
 | ||||
| 
 | ||||
| class ICompound(IConceptSchema): | ||||
|  |  | |||
|  | @ -1,4 +1,5 @@ | |||
| # $Id$ | ||||
| # tests.py | ||||
| # Package loops.compound | ||||
| 
 | ||||
| import unittest, doctest | ||||
| from zope.testing.doctestunit import DocFileSuite | ||||
|  |  | |||
|  | @ -480,6 +480,7 @@ | |||
|   <include package=".browser" /> | ||||
|   <include package=".classifier" /> | ||||
|   <include package=".compound.blog" /> | ||||
|   <include package=".compound.book" /> | ||||
|   <include package=".compound.microart" /> | ||||
|   <include package=".config" /> | ||||
|   <include package=".constraint" /> | ||||
|  | @ -492,7 +493,6 @@ | |||
|   <include package=".media" /> | ||||
|   <include package=".organize" /> | ||||
|   <include package=".rest" /> | ||||
|   <!--<include package=".search" />--> | ||||
|   <include package=".security" /> | ||||
|   <include package=".system" /> | ||||
|   <include package=".versioning" /> | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue