Diff for /ECHO_content/ECHO_Nav.py between versions 1.37 and 1.68

version 1.37, 2004/07/21 16:36:18 version 1.68, 2005/12/05 17:18:43
Line 1 Line 1
 # Objekte zur Erzeugung von Navigationselementen  # Objekte zur Erzeugung von Navigationselement
   from AccessControl import ClassSecurityInfo
 from Globals import DTMLFile  from Globals import DTMLFile
 from OFS.Image import Image,cookId  from OFS.Image import Image,cookId
 from OFS.Folder import Folder  from OFS.Folder import Folder
Line 12  from Products.PageTemplates.ZopePageTemp Line 12  from Products.PageTemplates.ZopePageTemp
 import os.path  import os.path
 from Globals import package_home  from Globals import package_home
 import urllib  import urllib
 from ECHO_helpers import displayTypes,checkOnlyOneInGroup  from ECHO_helpers import *
 from ECHO_collection import content_html  from ECHO_collection import content_html
   from types import *
   
   
 from Globals import DTMLFile  from Globals import DTMLFile
Line 27  import re Line 27  import re
 import string  import string
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate  from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 import os.path  import os.path
 from Globals import package_home  
 import urllib  import urllib
 from ECHO_helpers import displayTypes,checkOnlyOneInGroup  from ECHO_helpers import displayTypes,checkOnlyOneInGroup
 from ECHO_collection import content_html  from ECHO_collection import content_html
   import zLOG
   
   try:    
       from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder
   except:
       zLOG.LOG('ECHO_Nav',zLOG.INFO,'ZSQLSimpleSearch not supported')
   
   
   
Line 51  class ECHO_ZCatalogElement(SimpleItem): Line 56  class ECHO_ZCatalogElement(SimpleItem):
         self.weight=weight          self.weight=weight
         self.content=contentType          self.content=contentType
   
           
     manage_options= SimpleItem.manage_options+(      manage_options= SimpleItem.manage_options+(
         {'label':'Main Config','action':'changeECHO_ZCatalogElementForm'},          {'label':'Main Config','action':'changeECHO_ZCatalogElementForm'},
         )          )
Line 75  class ECHO_ZCatalogElement(SimpleItem): Line 81  class ECHO_ZCatalogElement(SimpleItem):
     def changeECHO_ZCatalogElementForm(self):      def changeECHO_ZCatalogElementForm(self):
         """change"""          """change"""
                   
         pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_ZCatalogElement.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeECHO_ZCatalogElement.zpt')).__of__(self)
         return pt()          return pt()
   
     def changeECHO_ZCatalogElement(self,title,field,catalogId,baseUrl,weight,contentType,RESPONSE=None):      def changeECHO_ZCatalogElement(self,title,field,catalogId,baseUrl,weight,contentType,RESPONSE=None):
Line 93  class ECHO_ZCatalogElement(SimpleItem): Line 99  class ECHO_ZCatalogElement(SimpleItem):
         return getattr(self,self.catalogId).uniqueValuesFor(self.field)          return getattr(self,self.catalogId).uniqueValuesFor(self.field)
           
     def getNavList(self):      def getNavList(self):
         """ausgabe der treffer list für navigation"""          """ausgabe der treffer list fuer navigation"""
                   
         records=self.getKeywordList()          records=self.getKeywordList()
                   
                   records=[x.encode('utf-8') for x in records]
           records.sort()
         if not records:          if not records:
             return []              return []
         else:          else:
             ret=[]              ret=[]
             for record in records:              for record in records:
                
                 #print "RC",record                  #print "RC",record
                 #if record:                  #if record:
                 #    ret.append((record,self.baseUrl+urllib.quote(record)))                  #    ret.append((record,self.baseUrl+urllib.quote(record)))
Line 116  class ECHO_ZCatalogElement(SimpleItem): Line 124  class ECHO_ZCatalogElement(SimpleItem):
   
 def manage_addECHO_ZCatalogElementForm(self):  def manage_addECHO_ZCatalogElementForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_ZCatalogElement.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_ZCatalogElement.zpt')).__of__(self)
     return pt()      return pt()
   
 def manage_addECHO_ZCatalogElement(self,id,title,field,baseUrl,weight,contentType,RESPONSE=None):  def manage_addECHO_ZCatalogElement(self,id,title,field,catalogId,baseUrl,weight,contentType,RESPONSE=None):
     """Add an ECHO_ZCatalogelement"""      """Add an ECHO_ZCatalogelement"""
     self._setObject(id,ECHO_ZCatalogElement(id,title,field,baseUrl,weight,contentType))  
       self._setObject(id,ECHO_ZCatalogElement(id,title,field,catalogId,baseUrl,weight,contentType))
           
     if RESPONSE is not None:      if RESPONSE is not None:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
Line 140  class ECHO_contentType(Image): Line 149  class ECHO_contentType(Image):
   
     def changeECHO_contentTypeForm(self):      def changeECHO_contentTypeForm(self):
         """Change the description text"""          """Change the description text"""
         pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_contentType.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeECHO_contentType.zpt')).__of__(self)
         return pt()          return pt()
   
     def changeECHO_contentType(self,description,RESPONSE=None):      def changeECHO_contentType(self,description,RESPONSE=None):
Line 193  class ECHO_sqlElement(SimpleItem): Line 202  class ECHO_sqlElement(SimpleItem):
     meta_type="ECHO_sqlElement"      meta_type="ECHO_sqlElement"
     baseUrl=""      baseUrl=""
           
   
       
     def __init__(self,id,title,query,field,searchField,baseUrl,weight,contentType):      def __init__(self,id,title,query,field,searchField,baseUrl,weight,contentType):
         """init"""          """init"""
         self.id=id          self.id=id
Line 204  class ECHO_sqlElement(SimpleItem): Line 215  class ECHO_sqlElement(SimpleItem):
         else:          else:
             self.searchField=searchField              self.searchField=searchField
         self.baseUrl=baseUrl          self.baseUrl=baseUrl
         self.weight=weight  
         self.content=contentType          self.content=contentType
   
     manage_options= SimpleItem.manage_options+(      manage_options= SimpleItem.manage_options+(
Line 236  class ECHO_sqlElement(SimpleItem): Line 247  class ECHO_sqlElement(SimpleItem):
     def changeECHO_sqlElementForm(self):      def changeECHO_sqlElementForm(self):
         """change"""          """change"""
                   
         pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_sqlElement.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeECHO_sqlElement.zpt')).__of__(self)
         return pt()          return pt()
   
     def changeECHO_sqlElement(self,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):      def changeECHO_sqlElement(self,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):
Line 252  class ECHO_sqlElement(SimpleItem): Line 263  class ECHO_sqlElement(SimpleItem):
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
     def searchQuery(self,query=None,obj=None):      try:    
         #presently a hack, tests if search is of the search method, if not look at the next level.          searchQuery=ZSQLExtendFolder.ZSQLSimpleSearch
         if not query:      except:
             query=self.query          zLOG.LOG('ECHO_Nav',zLOG.INFO,'ZSQLSimpleSearch not supported')
               
         if self.search.meta_type=="Z SQL Method":  
             return self.search(var=self.query)  
         else:  
             if self.aq_parent.aq_parent.search.meta_type=="Z SQL Method":  
                 return self.aq_parent.aq_parent.search(var=self.query)  
             else:  
                 return []  
   
           
     def getNavList(self):      def getNavList(self):
         """ausgabe der treffer list für navigation"""          """ausgabe der treffer list fuer navigation"""
                   
         records=self.searchQuery()          #naechste schritte sind trial and error, warum geht mal das eine mal das andere 2.3 / 2.4 ??
           
           try:
           try:
           records=self.ZSQLSimpleSearch(query=self.query)
           except:
                   records=self.searchQuery(self.aq_parent,query=self.query) #python 2.4 version (??)
           except:
               records=self.searchQuery()#python 2.3 version(??)
               
                   
         if not records:          if not records:
Line 287  class ECHO_sqlElement(SimpleItem): Line 297  class ECHO_sqlElement(SimpleItem):
   
 def manage_addECHO_sqlElementForm(self):  def manage_addECHO_sqlElementForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_sqlElement.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_sqlElement.zpt')).__of__(self)
     return pt()      return pt()
   
 def manage_addECHO_sqlElement(self,id,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):  def manage_addECHO_sqlElement(self,id,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):
Line 298  def manage_addECHO_sqlElement(self,id,ti Line 308  def manage_addECHO_sqlElement(self,id,ti
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
   
   
 class ECHO_pageTemplate(ZopePageTemplate):  class ECHO_pageTemplate(ZopePageTemplate,ECHO_basis):
     """pageTemplate Objekt"""      """pageTemplate Objekt"""
     meta_type="ECHO_pageTemplate"      meta_type="ECHO_pageTemplate"
       security=ClassSecurityInfo()
       
   
     _default_content_fn = os.path.join(package_home(globals()),      _default_content_fn = os.path.join(package_home(globals()),
                                        'html/ECHO_pageTemplateDefault.html')                                         'html/ECHO_pageTemplateDefault.html')
   
     manage_options=ZopePageTemplate.manage_options+(      manage_options=ZopePageTemplate.manage_options+ECHO_basis.manage_options+(
         {'label':'Main Config','action':'changeECHO_pageTemplateWeightForm'},          {'label':'Main Config','action':'changeECHO_pageTemplateMainForm'},
           {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
         )          )
   
       security.declarePublic('content_html')
   
       def addChanges(self):
           """do nothing leere methode, notwendig, da bei veerbung 
           von dieser klasse nur ueberschrieben werden kann, 
           falls methode per url aufgerufen werden soll"""
           
           return True
       
     def content_html(self):      def content_html(self):
     """content_html"""      """content_html"""
     return content_html(self,'pageTemplate')      return content_html(self,'pageTemplate')
   
     def changeECHO_pageTemplateWeightForm(self):      def changeECHO_pageTemplateMainForm(self):
         """change"""          """change"""
         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_pageTemplateWeight.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeECHO_pageTemplateMain.zpt')).__of__(self)
         return pt()          return pt()
   
     def changeECHO_pageTemplateWeight(self,weight,contentType,label,RESPONSE=None):      def changeECHO_pageTemplateMain(self,weight,contentType,label,description,RESPONSE=None,isAlwaysClickable=None,suffix=None,prefix=None):
         """change"""          """change"""
         self.weight=weight          self.weight=weight
         self.contentType=contentType          self.contentType=contentType
         self.label=label          self.label=label
           self.description=description
           self.isAlwaysClickable=isAlwaysClickable
           self.suffix=suffix
           self.prefix=prefix
                   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
     def getLabel(self):  
         if hasattr(self,'label'):  
             return self.label.encode('utf-8')  
         else:  
             return 0  
           
     def getWeight(self):      def getWeight(self):
         """get weight"""          """get weight"""
         if hasattr(self,'weight'):          if hasattr(self,'weight'):
Line 359  class ECHO_pageTemplate(ZopePageTemplate Line 379  class ECHO_pageTemplate(ZopePageTemplate
   
 def manage_addECHO_pageTemplateForm(self):  def manage_addECHO_pageTemplateForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_pageTemplate.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_pageTemplate.zpt')).__of__(self)
     return pt()      return pt()
   
 from urllib import quote  from urllib import quote
Line 410  class ECHO_navigation(Folder): Line 430  class ECHO_navigation(Folder):
     """Navigations Element"""      """Navigations Element"""
     meta_type="ECHO_Navigation"      meta_type="ECHO_Navigation"
   
     displayedMetaTypes=displayTypes      def searchExternalCollection(self,url,simpleSearch):
           """search external collection via xmlrpc"""
           server=xmlrpclib.Server(url)
           
           results=server.getSubcolsXMLRpc(simpleSearch)
           
           return results
       
       def getXMLRpcConnection(self,url):
           """getxmlrpc"""
           if not hasattr(self,"_v_server"):
               self._v_server=[]
           
           server=xmlrpclib.Server(url)
           self._v_server.append(server)
           
           return len(self._v_server)-1
       
       def getXMLRpcMethod(self,nr,method,compressed=None):
           """getmethod"""
           
           ret= eval('self._v_server[%i].%s'%(nr,method))
           if compressed:
               ret=decodeRPC(ret)
           return ret
       
       def getNavInfo(self):
           """root informationen"""
           if hasattr(self,'logo_image'):
               if hasattr(self.logo_image,'tag'):
                   imageTag=self.logo_image.tag()
           else:
               imageTag=''
           return (self.title,imageTag)
   
       def linkBar(self,parent):
           """linkbarer balken"""
           str=""
   
           
           while not(parent.meta_type == "ECHO_root"):
               fragment="""<a href="%s">%s</a>"""%(parent.absolute_url(),parent.label)
               str=fragment+"/"+str
               parent=parent.aq_parent
   
           return str
       
       def decode(self,str):
           """decoder"""
           if not str:
               return ""
           if type(str)==StringType:
               
               return str
           else:
               try:
                   return str.encode('utf-8')
               except:
                   return str.encode('latin-1')
       def ECHOFormatListStr(self,list,search="\n",replace="<br>"):
           """formatiert liste im str"""
           if list:
                   return re.sub(search,replace,list)
           else:
                   return 
   
       def ECHO_cacheManageForm(self):
               """change form"""
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_cacheManageForm')).__of__(self)
               pt.content_type="text/html"
               return pt()
   
       def ECHO_cacheManage(self,cacheManagerName=None,deleteCache=None, activateCache=None,RESPONSE=None):
               """cachemanager"""
               if cacheManagerName=="": chacheManagerName=None
               
               self.cacheManagerName=cacheManagerName
               self.setCache(managerName=cacheManagerName)
               
               if deleteCache:
                   try:
                       self.deleteCache()
                   except:
                       for roots in self.ZopeFind(self,obj_metatypes=['ECHO_root'],search_sub=1):
                           roots[1].deleteCache()
                       
   
               self.activateCache=activateCache
   
               if RESPONSE is not None:
                       RESPONSE.redirect('manage_main')
           
       def setCache(self,obj=None,RESPONSE=None,managerName='CacheManager'):
           """setze alle collections auf cache = CacheManager"""
   
   
           if not obj:
               obj = self
               
           entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_collection','VLP_resource'],search_sub=1)
   
           for entry in entries:
               entry[1].ZCacheable_setManagerId(managerName)
   
           
           return "changed all CM in: "+self.title
   
       
   
       displayableMetaTypes=displayTypes
   
     def getImageViewers(self):      def getImageViewers(self):
         """images"""          """images"""
Line 426  class ECHO_navigation(Folder): Line 555  class ECHO_navigation(Folder):
         self.id=id          self.id=id
         self.title=title          self.title=title
         self.pathToHierarchy=pathToHierarchy          self.pathToHierarchy=pathToHierarchy
           self.displayedMetaTypes=displayTypes
   
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Main Config','action':'ECHO_navigationConfigForm'},          {'label':'Main Config','action':'ECHO_navigationConfigForm'},
           {'label':'Cache','action':'ECHO_cacheManageForm'},
   
         )          )
       displayedMetaTypes=displayTypes
   
     def ECHO_navigationConfigForm(self):      def ECHO_navigationConfigForm(self):
         """configForm"""          """configForm"""
         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_navigation.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeECHO_navigation.zpt')).__of__(self)
         return pt()          return pt()
           
     def ECHO_navigationConfig(self,title,pathToHierarchy,RESPONSE=None):      def ECHO_navigationConfig(self,title,pathToHierarchy,displayedMetaTypes=displayTypes,RESPONSE=None):
         """config"""          """config"""
         self.title=title          self.title=title
         self.pathToHierarchy=pathToHierarchy          self.pathToHierarchy=pathToHierarchy
           self.displayedMetaTypes=toList(displayedMetaTypes)[0:]
   
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 464  class ECHO_navigation(Folder): Line 599  class ECHO_navigation(Folder):
         temp=re.sub("/",".",temp)          temp=re.sub("/",".",temp)
         temp="self.aq_parent"+temp          temp="self.aq_parent"+temp
                   
           
         objtemp=eval(temp)          objtemp=eval(temp)
         nav={}          nav={}
         obj=objtemp  
   
           #check if cash is enabled and if already exists and if not empty
           if getattr(self,'_v_hash',None) and getattr(self,'activateCache',None) and self._v_hash.get(str(depth),None):
              
              return self._v_hash[str(depth)]
                   
           # if not generate new hash
           obj=objtemp      
   
         for keys in obj.ZopeFind(obj,obj_metatypes=self.displayedMetaTypes):          for keys in obj.ZopeFind(obj,obj_metatypes=self.displayedMetaTypes):
             x=keys[1]              x=keys[1]
               
             if hasattr(x,"meta_type"):  
   
                 if x.meta_type in self.displayedMetaTypes:  
                      
                     if depth>1:                      if depth>1:
                         nav[x.getId()]=(self.getColls(x,int(depth)-1,checkOnly),x)                          nav[x.getId()]=(self.getColls(x,int(depth)-1,checkOnly),x)
                     else:                      else:
                         nav[x.getId()]=(None,x)                          nav[x.getId()]=(None,x)
                                           
           #store in cache if activated
           if getattr(self,'activateCache',None):
               
               try:
                   self._v_hash[str(depth)]={}
               except:
                   self._v_hash={}
                   self._v_hash[str(depth)]={}
   
               for x in nav.keys():
                   self._v_hash[str(depth)][x]=nav[x]
   
         #print nav  
         return nav          return nav
   
     def barFromHash(self,hash,start=None,sortField=None,location=None):      def barFromHash(self,hash,start=None,sortField=None,location=None):
         """Erzeuge Navigations Element"""          """Erzeuge Navigations Element"""
         #print "hash",hash                  
         listNav=[]          listNav=[]
         if not start:          if not start:
             temp=hash              temp=hash
             sortField="weight"              sortField="weight"
         else: # list mit pfad zum hash          else: # liste mit pfad zum hash
             temp=hash              temp=hash
             #print "HI",sortField              #print "HI",sortField
             if not sortField:              if not sortField:
Line 531  class ECHO_navigation(Folder): Line 677  class ECHO_navigation(Folder):
                 if (temp[x][1].meta_type=="ECHO_sqlElement") or (temp[x][1].meta_type=="ECHO_ZCatalogElement"):                  if (temp[x][1].meta_type=="ECHO_sqlElement") or (temp[x][1].meta_type=="ECHO_ZCatalogElement"):
                           
                     for z in temp[x][1].getNavList():                      for z in temp[x][1].getNavList():
                         listNav.append((z[0],z[1],None))                          listNav.append((z[0],z[1],None,'',''))
                           
                 else:                  else:
                     # add label falls existiert und nicht leer                      # add label falls existiert und nicht leer
                     if hasattr(temp[x][1],'label'):                      if hasattr(temp[x][1],'label'):
                         if not temp[x][1].label=='':  
                             label=temp[x][1].label.encode('utf-8','ignore')  
                                                           
                           if not temp[x][1].label=='':
                               try:
                                   label=temp[x][1].getLabel()
                               except:
                                   label=temp[x][1].label.encode('utf-8')
                         else:                          else:
                             label=temp[x][1].title.encode('utf-8')                              label=temp[x][1].title.encode('utf-8')
                     else:                      else:
                         label=temp[x][1].title.encode('utf-8')                                                      label=temp[x][1].title.encode('utf-8')                            
   
                       try:
                           label=label.encode('utf-8')
                       except:
                           label=label.decode('latin-1')
                           
                     if location:                      if location:
   
                         loc=getattr(temp[x][1],'location','top')                          loc=getattr(temp[x][1],'location','top')
                         if (loc==location):                          if (loc==location):
                             listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1]))  
                               
                               listNav.append((label,createPath(self,self.absolute_url(),temp[x][1].absolute_url(relative=1))+getattr(temp[x][1],'queryString',''),temp[x][1],getattr(temp[x][1],'prefix',''),getattr(temp[x][1],'suffix','')))
                     else:                      else:
                         listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1]))  
   
                           listNav.append((label,createPath(self,self.absolute_url(),temp[x][1].absolute_url(relative=1))+getattr(temp[x][1],'queryString',''),temp[x][1],getattr(temp[x][1],'prefix',''),getattr(temp[x][1],'suffix','')))
           #print self.REQUEST
         return listNav          return listNav
   
     def tempSorted(self,hash,field="weight"):      def tempSorted(self,hash,field="weight"):
Line 559  class ECHO_navigation(Folder): Line 717  class ECHO_navigation(Folder):
         for x in hash.keys():          for x in hash.keys():
             #print hash[x][1]              #print hash[x][1]
             if hasattr(hash[x][1],field):              if hasattr(hash[x][1],field):
                   try:
                       weight=int(getattr(hash[x][1],field))
                   except:
                 weight=getattr(hash[x][1],field)                  weight=getattr(hash[x][1],field)
                 #print weight                  #print weight
             else:              else:
Line 575  class ECHO_navigation(Folder): Line 736  class ECHO_navigation(Folder):
                           
     def isSelectedPath(self,item):      def isSelectedPath(self,item):
         """test is path is already selected"""          """test is path is already selected"""
         found=re.search("\?(.*)/",item[1])  
           testStr=re.sub("/index_html",'',self.REQUEST.get('URL',''))
   
           #falls exakte Übereinstimmung dann immer 1
           if (testStr==item[1]) and (self.REQUEST.get('QUERY_STRING','')==''):
               
               return 1
              
           found=re.search("\?(.*)",item[1])
           
         if found:          if found:
             temp=re.sub(" ","%20",found.group(0))              temp=re.sub(" ","%20",found.group(0))
             
             #print temp+"::"+self.REQUEST['QUERY_STRING']              #print temp+"::"+self.REQUEST['QUERY_STRING']
             if ("?"+self.REQUEST['QUERY_STRING'])==temp:              if ("?"+self.REQUEST['QUERY_STRING'])==temp:
                   if getattr(item[2],'isAlwaysClickable',None): #immer auswaehlbar?
                   
                       return 2
                   else:
                       return 1
   
           if (getattr(item[2],'meta_type','')=="ECHO_pageTemplate") and (re.search(item[1],self.REQUEST['URL'])):
               if getattr(item[2],'isAlwaysClickable',None): #immer auswaehlbar?
                   
                   return 2
               else:
                 return 1                  return 1
   
         if re.search(item[1]+"/",self.REQUEST['URL']):          if re.search(item[1]+"/",self.REQUEST['URL']):
               if getattr(item[2],'isAlwaysClickable',None): #immer auswaehlbar?
                   
                   return 2
               else:
             return 1              return 1
         else:          else:
             return 0              return 0
                   
           
       def getPathStyle(self, item, style=""):
           """returns a string with the given style + 'sel' if the path is already selected."""
   
           if self.isSelectedPath(item):
               return style + 'sel'
           else:
               return style
           
       
     def buttonsFromHash(self,hash,start=None,orientation="horizontal"):      def buttonsFromHash(self,hash,start=None,orientation="horizontal"):
                   
         """Generate Buttons"""          """Generate Buttons"""
Line 615  class ECHO_navigation(Folder): Line 810  class ECHO_navigation(Folder):
                           
             description=temp[x][1].title              description=temp[x][1].title
                     
             url=createPath(self.absolute_url(),temp[key][1].absolute_url())              
               url=createPath(self,self.absolute_url(),temp[key][1].absolute_url(relative=1))
   
             if (self.REQUEST['URL']==url) | (self.REQUEST['URL']==url+"/index_html"):              if (self.REQUEST['URL']==url) | (self.REQUEST['URL']==url+"/index_html"):
                 html=html+startTag+"[%s]" % description+endTag                  html=html+startTag+"[%s]" % description+endTag
Line 667  class ECHO_navigation(Folder): Line 863  class ECHO_navigation(Folder):
         return nr+1          return nr+1
           
     def secondNavElements(self):      def secondNavElements(self):
         """Zweite Ordnung"""          """Zweite Ordnung Navigationselemente"""
                   
         hash=self.createNavHash(2,checkOnly="no")          hash=self.createNavHash(2,checkOnly="no")
           
         actual_url=self.REQUEST['URL']          actual_url=self.REQUEST['URL']
                   
         ult_temp=re.sub(self.absolute_url(),"",actual_url)          ult_temp=re.sub(self.absolute_url(),"",actual_url)
Line 746  class ECHO_navigation(Folder): Line 943  class ECHO_navigation(Folder):
   
 def manage_addECHO_navigationForm(self):  def manage_addECHO_navigationForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_navigation.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_navigation.zpt')).__of__(self)
     return pt()      return pt()
   
 def manage_addECHO_navigation(self,id,title,pathToHierarchy,RESPONSE=None):  def manage_addECHO_navigation(self,id,title,pathToHierarchy,RESPONSE=None):
Line 761  def manage_addECHO_navigation(self,id,ti Line 958  def manage_addECHO_navigation(self,id,ti
   
   
   
 def createPath(url1,url2):  def createPath(self,url1,url2):
       #bugfix in absolute_url, ploetzlich erschein in absolute_url der physikalische pfad.
       
       if self.REQUEST.has_key('VirtualRootPhysicalPath'):
           vp="/".join(self.REQUEST['VirtualRootPhysicalPath'])
           if vp[0]=="/":
               vp=vp[1:]
           
           url2=url2.replace(vp+"/",'')
       else:
     temp1=url1.split("/")      temp1=url1.split("/")
     temp2=url2.split("/")      temp2=url2.split("/")
     for test in temp1:      for test in temp1:
         if temp2[0]==test:          if temp2[0]==test:
             del temp2[0]              del temp2[0]
   
     #print "CP:"+url1+"::"+url2+"::"+url1+"/"+string.join(temp2,"/")          url2= string.join(temp2,"/")
     return url1+"/"+string.join(temp2,"/")          
       return url1+"/"+url2
   
 def sortWeight(x,y):  def sortWeight(x,y):
     #print x[1],y[1]      #print x[1],y[1]

Removed from v.1.37  
changed lines
  Added in v.1.68


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>