Diff for /ECHO_content/ECHO_Nav.py between versions 1.57 and 1.77

version 1.57, 2005/08/04 17:42:07 version 1.77, 2006/10/11 16:55:26
Line 1 Line 1
 # Objekte zur Erzeugung von Navigationselementen  # Objekte zur Erzeugung von Navigationselement
   
 from AccessControl import ClassSecurityInfo  from AccessControl import ClassSecurityInfo
 from Globals import DTMLFile  from Globals import DTMLFile
 from OFS.Image import Image,cookId  from OFS.Image import Image,cookId
Line 97  class ECHO_ZCatalogElement(SimpleItem): Line 96  class ECHO_ZCatalogElement(SimpleItem):
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
     def getKeywordList(self):      def getKeywordList(self):
           try:
         return getattr(self,self.catalogId).uniqueValuesFor(self.field)          return getattr(self,self.catalogId).uniqueValuesFor(self.field)
           except:
               #return getattr(self,self.catalogId).query(self.field)
   
               list= [x for x in getattr(getattr(self,self.catalogId),self.field).words()]
               list.sort()
               return list
           
     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 126  def manage_addECHO_ZCatalogElementForm(s Line 134  def manage_addECHO_ZCatalogElementForm(s
     pt=PageTemplateFile(os.path.join(package_home(globals()),'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 267  class ECHO_sqlElement(SimpleItem): Line 276  class ECHO_sqlElement(SimpleItem):
         zLOG.LOG('ECHO_Nav',zLOG.INFO,'ZSQLSimpleSearch not supported')          zLOG.LOG('ECHO_Nav',zLOG.INFO,'ZSQLSimpleSearch not supported')
                           
     def getNavList(self):       def getNavList(self): 
         """ausgabe der treffer list für navigation"""          """ausgabe der treffer list fuer navigation"""
           
           #naechste schritte sind trial and error, warum geht mal das eine mal das andere 2.3 / 2.4 ??
                   
         records=self.searchQuery()          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(query=self.query)#python 2.3 version(??)
               
                   
         if not records:          if not records:
Line 280  class ECHO_sqlElement(SimpleItem): Line 297  class ECHO_sqlElement(SimpleItem):
                 try:                  try:
                     ret.append((getattr(record,self.field),self.baseUrl+urllib.quote(str(getattr(record,self.getSearchField())))))                      ret.append((getattr(record,self.field),self.baseUrl+urllib.quote(str(getattr(record,self.getSearchField())))))
                 except:                  except:
                       zLOG.LOG('ECHO_Nav',zLOG.INFO,"error, search")
                     """notrhing"""                      """notrhing"""
                                           
             return ret              return ret
Line 314  class ECHO_pageTemplate(ZopePageTemplate Line 332  class ECHO_pageTemplate(ZopePageTemplate
   
     security.declarePublic('content_html')      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"""
Line 413  def manage_addECHO_pageTemplate(self, id Line 437  def manage_addECHO_pageTemplate(self, id
 class ECHO_navigation(Folder):  class ECHO_navigation(Folder):
     """Navigations Element"""      """Navigations Element"""
     meta_type="ECHO_Navigation"      meta_type="ECHO_Navigation"
       management_page_charset="utf-8"
       
       def getUsername(self):
           """get name of user"""
           username=str(self.REQUEST['AUTHENTICATED_USER'])
           if username=='Anonymous User':
               return None
           else:
               return username
           
       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):      def linkBar(self,parent):
         """linkbarer balken"""          """linkbarer balken"""
Line 430  class ECHO_navigation(Folder): Line 498  class ECHO_navigation(Folder):
         """decoder"""          """decoder"""
         if not str:          if not str:
             return ""              return ""
         if type(str)==StringType:          if type(str) is StringType:
               
             return str  
         else:  
             try:              try:
                 return str.encode('utf-8')                  return str.decode('utf-8')
             except:              except:
                 return str.encode('latin-1')          return str.decode('latin-1')
           else:
               
               return str
   
     def ECHOFormatListStr(self,list,search="\n",replace="<br>"):      def ECHOFormatListStr(self,list,search="\n",replace="<br>"):
         """formatiert liste im str"""          """formatiert liste im str"""
     if list:      if list:
Line 478  class ECHO_navigation(Folder): Line 547  class ECHO_navigation(Folder):
         if not obj:          if not obj:
             obj = self              obj = self
                           
         entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_collection'],search_sub=1)          entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_collection','VLP_resource'],search_sub=1)
   
         for entry in entries:          for entry in entries:
             #print entry[0]  
             entry[1].ZCacheable_setManagerId(managerName)              entry[1].ZCacheable_setManagerId(managerName)
   
                   
Line 584  class ECHO_navigation(Folder): Line 652  class ECHO_navigation(Folder):
   
     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
Line 633  class ECHO_navigation(Folder): Line 701  class ECHO_navigation(Folder):
                     # 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=='':                          if not temp[x][1].getLabel()=='':
                             try:  
                                 label=temp[x][1].getLabel()                                  label=temp[x][1].getLabel()
                             except:  
                                 label=temp[x][1].label  
                         else:                          else:
                             label=temp[x][1].title.encode('utf-8')                              try:
                                   label=temp[x][1].getTitle()
                               except:
                                   zLOG.LOG("ECHO_Nav",zLOG.ERROR,"%s has neither getLabel nor getTile implemented"%temp[x][1].getId())
                                   label=""
                     else:                      else:
                         label=temp[x][1].title.encode('utf-8')                                                      label=temp[x][1].getTitle()
   
                                           
                     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())+getattr(temp[x][1],'queryString',''),temp[x][1],getattr(temp[x][1],'prefix',''),getattr(temp[x][1],'suffix','')))  
                               
                               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())+getattr(temp[x][1],'queryString',''),temp[x][1],getattr(temp[x][1],'prefix',''),getattr(temp[x][1],'suffix','')))  
   
                           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 681  class ECHO_navigation(Folder): Line 754  class ECHO_navigation(Folder):
   
         testStr=re.sub("/index_html",'',self.REQUEST.get('URL',''))          testStr=re.sub("/index_html",'',self.REQUEST.get('URL',''))
   
       if len(item)<2:
           return 0
         #falls exakte Übereinstimmung dann immer 1          #falls exakte Übereinstimmung dann immer 1
         if (testStr==item[1]) and (self.REQUEST.get('QUERY_STRING','')==''):          if (testStr==item[1]) and (self.REQUEST.get('QUERY_STRING','')==''):
                           
Line 752  class ECHO_navigation(Folder): Line 827  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 807  class ECHO_navigation(Folder): Line 883  class ECHO_navigation(Folder):
         """Zweite Ordnung Navigationselemente"""          """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 898  def manage_addECHO_navigation(self,id,ti Line 975  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 (len(vp)>0):
               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.57  
changed lines
  Added in v.1.77


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