--- ECHO_content/ECHO_collection.py 2012/01/04 08:41:37 1.310.2.2
+++ ECHO_content/ECHO_collection.py 2012/09/03 13:11:09 1.310.2.9
@@ -36,6 +36,8 @@ from Globals import Persistent, package_
from Acquisition import Implicit
from Products.ZCatalog.CatalogPathAwareness import CatalogAware
from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon
+import ECHO_helpers
+from Acquisition import aq_parent
try:
from Products.MetaDataProvider.MetaDataClient import MetaDataClient
except:
@@ -79,11 +81,13 @@ except:
pass
from ECHO_movie import *
-import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen
+#import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen
import xmlrpclib
import logging
+from ECHO_root import ECHO_root
+
#ersetzt logging.info
def logger(txt,method,txt2):
"""logging"""
@@ -693,6 +697,8 @@ class ECHO_collection(CatalogAware, Fold
meta_type='ECHO_collection'
default_catalog='resourceCatalog'
+ rootMetaTypes = ['ECHO_root', 'ECHO_main', 'ECHO_nav']
+
# viewClassificationList=viewClassificationListMaster
displayTypes=displayTypes
@@ -705,12 +711,11 @@ class ECHO_collection(CatalogAware, Fold
return crumbs[0][2].getId()
p = self
-
sec = None
# descend parents to the root (and remember the last id)
- while p is not None and p.meta_type != 'ECHO_root' and p.meta_type!='ECHO_main' and p.meta_type!='ECHO_nav':
+ while p is not None and p.meta_type not in self.rootMetaTypes:
sec = p.getId()
- p = p.aq_parent
+ p = aq_parent(p.context)
return sec
@@ -724,12 +729,21 @@ class ECHO_collection(CatalogAware, Fold
sec = None
subsec = None
# descend parents to the root (and remember the last id)
- while p is not None and p.meta_type != 'ECHO_root' and p.meta_type!='ECHO_main' and p.meta_type!='ECHO_nav':
+ while p is not None and p.meta_type not in self.rootMetaTypes:
subsec = sec
sec = p.getId()
- p = p.aq_parent
+ p = aq_parent(p.context)
return subsec
+
+
+ def getCrumb(self):
+ """returns breadcrumb for this object"""
+ return ECHO_helpers.getCrumb(self)
+
+ def getHierCrumbs(self):
+ """returns a list of hierarchical breadcrumbs from self to the ECHO_root"""
+ return ECHO_helpers.getHierCrumbs(self)
def exportImportObjects_html(self,RESPONSE):
@@ -1074,39 +1088,18 @@ class ECHO_collection(CatalogAware, Fold
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
- def changeViewerTemplateSetsForm(self):
+
+ def changeViewerForm(self):
"""change the viewer template set"""
- pt=zptFile(self, 'zpt/changeViewerTemplateSet')
+ pt=zptFile(self, 'zpt/changeECHOViewer')
return pt()
-
- def getViewerTemplateSets(self,obj_ids=None,RESPONSE=None):
- """Get the ViewerTemplateSet title for configuration"""
- ret=[]
-
- try:
- viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
-
- for viewerTemplateSet in viewerTemplateSets:
- ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1]))
-
- return ret
-
- except:
- return [('no ViewerTemplateSetfolders','')]
-
+
def getTextToolsField(self,name,default=''):
- """Lese viewerTemplateSet der Collection not implemented yet!"""
+ """Lese text tool field der Collection not implemented yet!"""
return default
- def isSelectedViewerTemplateSet(self,obj,id):
- """is ausgewaehlt"""
-
- if self.REQUEST['viewerTemplateSet']==id:
- return 1
- else:
- return None
def changeViewer(self,newViewer,REQUEST=None,RESPONSE=None):
"""changes all ressources to the newViewer"""
@@ -1398,7 +1391,7 @@ class ECHO_collection(CatalogAware, Fold
{'label':'Export/Import Objects','action':'exportImportObjects_html'},
{'label':'Graphic Coords','action':'ECHO_graphicEntry'},
{'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
- {'label':'Change Viewer Templates and Image Viewer','action':'changeViewerTemplateSetsForm'},
+ {'label':'Change Image Viewer','action':'changeViewerForm'},
{'label':'ImportCollection','action':'importCollection'},
{'label':'Change access rights', 'action':'changeAccessRightsCollectionForm'},
)
@@ -1414,7 +1407,7 @@ class ECHO_collection(CatalogAware, Fold
if not hasattr(self,'sortfield'):
self.sortfield="weight"
- pt=zptFile(self, 'zpt/ChangeECHO_collection.zpt')
+ pt=zptFile(self, 'zpt/ChangeECHO_Collection.zpt')
return pt()
@@ -1458,8 +1451,15 @@ class ECHO_collection(CatalogAware, Fold
def showOverview(self):
"""overview"""
- if 'ECHO_overview.html' in self.__dict__.keys():
- return getattr(self,'ECHO_overview.html')()
+ # use ECHO_overview.html template in this instance
+ if 'ECHO_overview.html' in self:
+ return self['ECHO_overview.html']()
+
+ # use ECHO_overview_main template in path
+ if hasattr(self, 'ECHO_overview_main'):
+ return getattr(self, 'ECHO_overview_main')()
+
+ # use template from Product
pt=zptFile(self, 'zpt/ECHO_content_overview.zpt')
return pt()
@@ -1468,23 +1468,35 @@ class ECHO_collection(CatalogAware, Fold
def index_html(self):
"""standard page"""
if self.ZCacheable_isCachingEnabled():
-
result = self.ZCacheable_get()
if result is not None:
# Got a cached value.
return result
-
- if 'index.html' in self.__dict__.keys():
- ret=getattr(self,'index.html')()
-
- elif 'overview' in self.__dict__.keys():
+
+ # old Zope 2.9 method
+ #if 'index.html' in self.__dict__.keys():
+ # ret=getattr(self,'index.html')()
+
+ # use Zope 2.12 IContainer for child access
+ if 'index.html' in self:
+ # use index.html template if it exists
+ ret = self['index.html']()
+
+ elif 'overview' in self:
+ # use red-rectangle template when there's an 'overview'
ret=self.showOverview()
+
+ # use getattr for acquisition
elif hasattr(self,'collection_index_template'):
- ret=self.collection_index_template()
+ # use 'collection_index_template' in acquisition path
+ ret=self.collection_index_template()
+
elif hasattr(self,'main_index_template'):
-
+ # use 'main_index_template' in acquisition path
ret=self.main_index_template.__of__(self)(self.main_template)
+
else:
+ # use template from Product
pt=zptFile(self, 'zpt/ECHO_main_index_template_standard.zpt')
pt.content_type="text/html"
ret=pt.render()
@@ -1513,8 +1525,8 @@ class ECHO_collection(CatalogAware, Fold
def area_img(self):
"""area image"""
- bt = BrowserCheck(self)
- if bt.isIE or bt.isN4:
+ bt = browserType(self)
+ if bt['isIE'] or bt['isN4']:
return sendFile(self, 'images/red.gif', 'image/gif')
else:
return sendFile(self, 'images/reda.png', 'image/png')
@@ -1862,873 +1874,6 @@ def createNode(self,descrs,node):
return "XX"
-class ECHO_root(Folder,Persistent,Implicit):
- """ECHO Root Folder"""
-
- security=ClassSecurityInfo()
-
- meta_type="ECHO_root"
- management_page_charset="utf-8"
-
- getSubCols = ECHO_helpers.getSubCols
-
- manage_options=Folder.manage_options+(
- {'label':'Main Config','action':'ECHO_copyright_configForm'},
- {'label':'Change Weights','action':'changeWeights'},
- {'label':'Generate from RDF','action':'generateFromRDFForm'},
- {'label':'update Resource Catalog','action':'updateResourceCatalog'},
- )
-
-
-
-
- def getECHORootURL(self):
- return self.absolute_url()
-
- def getECHORoot(self):
- return self
-
-
-
- def mod_re_sub(self,pattern,replace,string):
- """re.sub aus mod re zur Verfuegung stellen"""
- return re.sub(pattern,replace,string)
-
- def findObjectFromFulltext(self,existUri):
- '''
-
- @param url:
- @param existUri:
- '''
-
- if existUri:
- #TODO: at the moment assume that the filename is unique, the whole has to changed to a system of ids.
- filename=existUri.split("/")[-1]
-
- founds=self.resourceCatalog.search({'fullTextUrl':os.path.splitext(filename)[0]})
-
- ret=[(found.title,found.getObject().absolute_url(),found.getObject().aq_parent.absolute_url()) for found in founds]
-
- return ret
-
- def reindex(self,RESPONSE=None):
- """indiziere alle Objecte neu"""
-
- if RESPONSE:
- RESPONSE.write("
")
-
- resources=self.ZopeFind(self,obj_metatypes=["ECHO_resource"], search_sub=1)
-
- for resource in resources:
- resource[1].reindex()
- #print "
done %s
\n"
- if RESPONSE:
- RESPONSE.write("
done %s
\n"%resource[0])
-
- if RESPONSE:
- RESPONSE.write("