Diff for /ECHO_content/ECHO_Nav.py between versions 1.6 and 1.14

version 1.6, 2004/02/09 11:45:46 version 1.14, 2004/04/15 11:24:56
Line 1 Line 1
 # Objekte zur Erzeugung von Navigationselementen  # Objekte zur Erzeugung von Navigationselementen
   
   from Globals import DTMLFile
   from OFS.Image import Image,cookId
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
Line 12  import os.path Line 13  import os.path
 from Globals import package_home  from Globals import package_home
 import urllib  import urllib
   
   class ECHO_contentType(Image):
       """ContentType Object"""
   
       meta_type="ECHO_contentType"
   
       
       manage_options=Image.manage_options+(
           {'label':'Change Description','action':'changeECHO_contentTypeForm'},
          )
   
       def changeECHO_contentTypeForm(self):
           """Change the description text"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_contentType.zpt').__of__(self)
           return pt()
   
       def changeECHO_contentType(self,description,RESPONSE=None):
           """Change the Content"""
           self.description=description
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
   manage_addECHO_contentTypeForm=DTMLFile('dtml/ECHO_contentTypeAdd',globals(),
                                Kind='ECHO_contentType',kind='ECHO_contentType')
   
   def manage_addECHO_contentType(self, id, file=None, title='', precondition='', content_type='', description='',
                       REQUEST=None):
       """
       Add a new Image object.
   
       Creates a new Image object 'id' with the contents of 'file'.
       """
   
       id=str(id)
       title=str(title)
       content_type=str(content_type)
       precondition=str(precondition)
   
       id, title = cookId(id, title, file)
   
       self=self.this()
   
       # First, we create the image without data:
       self._setObject(id, ECHO_contentType(id,title,'',content_type, precondition))
   
       self._getOb(id).description=description
           
       # Now we "upload" the data.  By doing this in two steps, we
       # can use a database trick to make the upload more efficient.
       if file:
           self._getOb(id).manage_upload(file)
       if content_type:
           self._getOb(id).content_type=content_type
   
       if REQUEST is not None:
           try:    url=self.DestinationURL()
           except: url=REQUEST['URL1']
           REQUEST.RESPONSE.redirect('%s/manage_main' % url)
       return id
   
   
 class ECHO_sqlElement(SimpleItem):  class ECHO_sqlElement(SimpleItem):
     """Erzeuge navigation aus sql-abfrage"""      """Erzeuge navigation aus sql-abfrage"""
     meta_type="ECHO_sqlElement"      meta_type="ECHO_sqlElement"
     baseUrl=""      baseUrl=""
           
     def __init__(self,id,title,query,field,baseUrl,weight,content_type):      def __init__(self,id,title,query,field,searchField,baseUrl,weight,contentType):
         """init"""          """init"""
         self.id=id          self.id=id
         self.title=title          self.title=title
         self.query=query          self.query=query
         self.field=field          self.field=field
           if searchField=="":
               self.searchField=field
           else:
               self.searchField=searchField
         self.baseUrl=baseUrl          self.baseUrl=baseUrl
         self.weight=weight          self.weight=weight
         self.content=content_type          self.content=contentType
   
     manage_options= SimpleItem.manage_options+(      manage_options= SimpleItem.manage_options+(
         {'label':'Main Config','action':'changeECHO_sqlElementForm'},          {'label':'Main Config','action':'changeECHO_sqlElementForm'},
         )          )
   
       def getSearchField(self):
           try:
               return self.searchField
           except:
               return self.field
           
     def getWeight(self):      def getWeight(self):
         """get weight"""          """get weight"""
         if hasattr(self,'weight'):          if hasattr(self,'weight'):
Line 38  class ECHO_sqlElement(SimpleItem): Line 109  class ECHO_sqlElement(SimpleItem):
         else:          else:
             return 0              return 0
                   
     def getContent_type(self):      def getcontentType(self):
         """get weight"""          """get weight"""
                   
         if hasattr(self,'content_type'):          if hasattr(self,'contentType'):
             return self.content_type              return self.contentType
         else:          else:
             return 0              return 0
                   
Line 53  class ECHO_sqlElement(SimpleItem): Line 124  class ECHO_sqlElement(SimpleItem):
         pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_sqlElement.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_sqlElement.zpt').__of__(self)
         return pt()          return pt()
   
     def changeECHO_sqlElement(self,title,query,field,baseUrl,weight,content_type,RESPONSE=None):      def changeECHO_sqlElement(self,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):
         """change"""          """change"""
         self.title=title          self.title=title
         self.query=query          self.query=query
         self.field=field          self.field=field
           self.searchField=searchField
         self.baseUrl=baseUrl          self.baseUrl=baseUrl
         self.weight=weight          self.weight=weight
         self.content_type=content_type          self.contentType=contentType
                   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 76  class ECHO_sqlElement(SimpleItem): Line 148  class ECHO_sqlElement(SimpleItem):
         else:          else:
             ret=[]              ret=[]
             for record in records:              for record in records:
                 ret.append((getattr(record,self.field),self.baseUrl+str(getattr(record,self.field))))                  try:
                       ret.append((getattr(record,self.field),self.baseUrl+urllib.quote(str(getattr(record,self.getSearchField())))))
                   except:
                       """notrhing"""
                       
             return ret              return ret
           
   
Line 85  def manage_addECHO_sqlElementForm(self): Line 161  def manage_addECHO_sqlElementForm(self):
     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_sqlElement.zpt').__of__(self)      pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_sqlElement.zpt').__of__(self)
     return pt()      return pt()
   
 def manage_addECHO_sqlElement(self,id,title,query,field,baseUrl,weight,content_type,RESPONSE=None):  def manage_addECHO_sqlElement(self,id,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):
     """Add an ECHO_sqlelement"""      """Add an ECHO_sqlelement"""
     self._setObject(id,ECHO_sqlElement(id,title,query,field,baseUrl,weight,content_type))      self._setObject(id,ECHO_sqlElement(id,title,query,field,searchField,baseUrl,weight,contentType))
           
     if RESPONSE is not None:      if RESPONSE is not None:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
Line 109  class ECHO_pageTemplate(ZopePageTemplate Line 185  class ECHO_pageTemplate(ZopePageTemplate
         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_pageTemplateWeight.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_pageTemplateWeight.zpt').__of__(self)
         return pt()          return pt()
   
     def changeECHO_pageTemplateWeight(self,weight,content_type,RESPONSE=None):      def changeECHO_pageTemplateWeight(self,weight,contentType,RESPONSE=None):
         """change"""          """change"""
         self.weight=weight          self.weight=weight
         self.content_type=content_type          self.contentType=contentType
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 124  class ECHO_pageTemplate(ZopePageTemplate Line 200  class ECHO_pageTemplate(ZopePageTemplate
         else:          else:
             return 0              return 0
                   
     def getContent_Type(self):      def getcontentType(self):
         """get weight"""          """get weight"""
         if hasattr(self,'weight'):          if hasattr(self,'weight'):
             return self.weight              return self.weight
Line 134  class ECHO_pageTemplate(ZopePageTemplate Line 210  class ECHO_pageTemplate(ZopePageTemplate
   
   
   
     ## def __init__(self, id, text=None, content_type=None):      ## def __init__(self, id, text=None, contentType=None):
 ##         self.id = str(id)  ##         self.id = str(id)
 ##         self.ZBindings_edit(self._default_bindings)  ##         self.ZBindings_edit(self._default_bindings)
 ##         if text is None:  ##         if text is None:
 ##             text = open(self._default_cont).read()  ##             text = open(self._default_cont).read()
 ##         self.pt_edit(text, content_type)  ##         self.pt_edit(text, contentType)
   
 def manage_addECHO_pageTemplateForm(self):  def manage_addECHO_pageTemplateForm(self):
     """Form for adding"""      """Form for adding"""
Line 149  def manage_addECHO_pageTemplateForm(self Line 225  def manage_addECHO_pageTemplateForm(self
 from urllib import quote  from urllib import quote
   
   
 def manage_addECHO_pageTemplate(self, id, weight= 0,content_type=0,title=None, text=None,  def manage_addECHO_pageTemplate(self, id, weight= 0,contentType=0,title=None, text=None,
                            REQUEST=None, submit=None):                             REQUEST=None, submit=None):
     "Add a Page Template with optional file content."      "Add a Page Template with optional file content."
   
Line 159  def manage_addECHO_pageTemplate(self, id Line 235  def manage_addECHO_pageTemplate(self, id
         self._setObject(id, ECHO_pageTemplate(id, text))          self._setObject(id, ECHO_pageTemplate(id, text))
         ob = getattr(self, id)          ob = getattr(self, id)
         setattr(ob,'weight',weight)          setattr(ob,'weight',weight)
         setattr(ob,'content_type',content_type)          setattr(ob,'contentType',contentType)
         if title:          if title:
             ob.pt_setTitle(title)              ob.pt_setTitle(title)
         return ob          return ob
Line 169  def manage_addECHO_pageTemplate(self, id Line 245  def manage_addECHO_pageTemplate(self, id
         if headers is None or not file.filename:          if headers is None or not file.filename:
             zpt = ECHO_pageTemplate(id)              zpt = ECHO_pageTemplate(id)
         else:          else:
             zpt = ECHO_pageTemplate(id, file, headers.get('content_type'))              zpt = ECHO_pageTemplate(id, file, headers.get('contentType'))
   
         self._setObject(id, zpt)          self._setObject(id, zpt)
         ob = getattr(self, id)          ob = getattr(self, id)
         setattr(ob,'weight',weight)          setattr(ob,'weight',weight)
           if title:
               ob.pt_setTitle(title)
   
         try:          try:
             u = self.DestinationURL()              u = self.DestinationURL()
Line 190  class ECHO_navigation(Folder): Line 268  class ECHO_navigation(Folder):
     """Navigations Element"""      """Navigations Element"""
     meta_type="ECHO_Navigation"      meta_type="ECHO_Navigation"
   
     displayedMetaTypes=['ECHO_collection','ECHO_pageTemplate','ZSQLExtendFolder','ECHO_sqlElement']      displayedMetaTypes=['ECHO_group','ImageCollectionIFrame','ECHO_collection','ECHO_pageTemplate','ZSQLExtendFolder','ECHO_sqlElement','ECHO_resource','ECHO_externalLink']
           
     def __init__(self,id,title,pathToHierarchy):      def __init__(self,id,title,pathToHierarchy):
         """init"""          """init"""
Line 271  class ECHO_navigation(Folder): Line 349  class ECHO_navigation(Folder):
             sortField="weight"              sortField="weight"
         else: # list mit pfad zum hash          else: # list mit pfad zum hash
             temp=hash              temp=hash
             print "HI",sortField              #print "HI",sortField
             if not sortField:              if not sortField:
                 tempObj=self.pathToHierarchy[0:]                  tempObj=self.pathToHierarchy[0:]
                 tempObj=re.sub("/",".",tempObj)                  tempObj=re.sub("/",".",tempObj)
Line 282  class ECHO_navigation(Folder): Line 360  class ECHO_navigation(Folder):
                 obj=objtemp                  obj=objtemp
   
                 for x in start:                  for x in start:
                       #print "OBJ",start,obj,obj.getId(),x
   
                     obj=getattr(obj,x)                      obj=getattr(obj,x)
   
Line 290  class ECHO_navigation(Folder): Line 368  class ECHO_navigation(Folder):
                     sortField=obj.sortfield                      sortField=obj.sortfield
                 else:                  else:
                     sortField='weight'                      sortField='weight'
               #print "START",start
             for x in start:              for x in start:
                   #print "N2",x,temp[x]
                   try:
                     temp=temp[x][0]                      temp=temp[x][0]
         print "HELL",sortField                  except:
                       """nothing"""
                       return []
               #print "TEMP",temp,self.tempSorted(temp, field=sortField)
   
         for x in self.tempSorted(temp, field=sortField):          for x in self.tempSorted(temp, field=sortField):
             if not temp[x][1].title == "":              if not temp[x][1].title == "":
                 if temp[x][1].meta_type=="ECHO_sqlElement":                  if temp[x][1].meta_type=="ECHO_sqlElement":
                     for z in temp[x][1].getNavList():                      for z in temp[x][1].getNavList():
                         listNav.append((z[0],z[1]))                          listNav.append((z[0],z[1]))
                 else:                  else:
                     listNav.append((temp[x][1].title,createPath(self.absolute_url(),temp[x][1].absolute_url())))                      # add label fals existiert und nicht leer
                       if hasattr(temp[x][1],'label'):
                           if not temp[x][1].label=='':
                               label=temp[x][1].label
                               
                           else:
                               label=temp[x][1].title
                       else:
                           label=temp[x][1].title                            
                                           
         print self.getId(),start                      listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1]))
         print listNav                      
           #print self.getId(),start
           #print listNav
   
         #html=""          #html=""
         #for k in listNav:          #for k in listNav:
Line 313  class ECHO_navigation(Folder): Line 408  class ECHO_navigation(Folder):
   
     def tempSorted(self,hash,field="weight"):      def tempSorted(self,hash,field="weight"):
         ls=[]          ls=[]
         print "SORT",field  
         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):
Line 388  class ECHO_navigation(Folder): Line 483  class ECHO_navigation(Folder):
     def mainNavBar(self):      def mainNavBar(self):
         """print main navigation bar"""          """print main navigation bar"""
         keys=""          keys=""
         print "NAVBAR",self.getId()  
         try:          try:
             keys=self.buttonsFromHash(self.createNavHash(0))              keys=self.buttonsFromHash(self.createNavHash(0))
         except:          except:
Line 399  class ECHO_navigation(Folder): Line 494  class ECHO_navigation(Folder):
     def mainNavElements(self):      def mainNavElements(self):
         """print main navigation bar"""          """print main navigation bar"""
         keys=""          keys=""
         print "NAVELEMENT",self.getId()          #print "NAVELEMENT",self.getId()
         #try:          #try:
               
         keys=self.barFromHash(self.createNavHash(0))          keys=self.barFromHash(self.createNavHash(0))
Line 409  class ECHO_navigation(Folder): Line 504  class ECHO_navigation(Folder):
                           
         return keys          return keys
           
       def numberOfMainNavElements(self):
       """number of main elements"""
   
       return len(self.barFromHash(self.createNavHash(0))) 
   
     def secondNavElements(self):      def secondNavElements(self):
         """Zweite Ordnung"""          """Zweite Ordnung"""
                   
Line 430  class ECHO_navigation(Folder): Line 530  class ECHO_navigation(Folder):
         #print start          #print start
                 
         keys=self.barFromHash(hash,start=start)          keys=self.barFromHash(hash,start=start)
           
           
           return keys
   
       def navElements(self,order):
           """n-te Ordnung"""
           
           hash=self.createNavHash(order)
           actual_url=self.REQUEST['URL']
           
           ult_temp=re.sub(self.absolute_url(),"",actual_url)
           #print ult_temp
   
           splitted=ult_temp.split("/")
           
   
           ## if splitted[len(splitted)-1]=="index_html":
   ##             start=[splitted[len(splitted)-2]]
   ##         else:
   ##             start=[splitted[len(splitted)-1]]
   
           start=splitted[2:order+1]
           #print start
          
           keys=self.barFromHash(hash,start=start)
                   
                   
         return keys          return keys

Removed from v.1.6  
changed lines
  Added in v.1.14


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