Diff for /ECHO_content/ECHO_helpers.py between versions 1.79 and 1.97

version 1.79, 2007/01/23 18:22:29 version 1.97, 2009/04/14 16:31:27
Line 17  import ECHO_collection Line 17  import ECHO_collection
 import base64  import base64
 import bz2  import bz2
 import xmlrpclib  import xmlrpclib
 import zLOG  import sys
 import logging  import logging
   
 displayTypes = ['ZSQLExtendFolder','ZSQLBibliography','ECHO_group','ECHO_collection','ECHO_resource','ECHO_link','ECHO_sqlElement','ECHO_pageTemplate','ECHO_externalLink','ImageCollectionIFrame','VLP_resource','VLP_essay','ECHO_ZCatalogElement','ImageCollection','versionedFileFolder','ECHO_movie']  #erstzt logging
   def logger(txt,method,txt2):
       """logging"""
       logging.info(txt+ txt2)
   
   displayTypes = ['ZSQLExtendFolder','ZSQLBibliography','ECHO_group','ECHO_collection','ECHO_resource','ECHO_link','ECHO_sqlElement','ECHO_pageTemplate','ECHO_externalLink','ImageCollectionIFrame','VLP_resource','VLP_essay','ECHO_ZCatalogElement','ImageCollection','versionedFileFolder','extVersionedFileFolder','ECHO_movie']
   
   def normalizeCt(str):
           """normalizes content_type"""
           #str= str.replace(" ","_")
           return str.replace("-"," ").lower()
   
 #decode and compress for xmlrpc communication with OSAS_server  #decode and compress for xmlrpc communication with OSAS_server
   
Line 30  def encodeRPC(string): Line 39  def encodeRPC(string):
 def decodeRPC(string):  def decodeRPC(string):
     return bz2.decompress(base64.decodestring(string))      return bz2.decompress(base64.decodestring(string))
   
   def unicodify(s):
       """decode str (utf-8 or latin-1 representation) into unicode object"""
       if not s:
           return u""
       if isinstance(s, str):
           try:
               return s.decode('utf-8')
           except:
               return s.decode('latin-1')
       else:
           return s
   
   def utf8ify(s):
       """encode unicode object or string into byte string in utf-8 representation.
          assumes string objects to be utf-8"""
       if not s:
           return ""
       if isinstance(s, str):
           return s
       else:
           return s.encode('utf-8')
   
   
 def content_html(self,type):  def content_html(self,type):
         """template fuer content"""          """template fuer content"""
         #templates = self.ZopeFind(self.aq_parent,obj_ids=[type+"_template"])          #templates = self.ZopeFind(self.aq_parent,obj_ids=[type+"_template"])
Line 38  def content_html(self,type): Line 70  def content_html(self,type):
         #    return templates[0][1]()          #    return templates[0][1]()
   
         if hasattr(self,type+"_template"):          if hasattr(self,type+"_template"):
             logging.info("type: %s"%type)  
             obj=getattr(self,type+"_template")              obj=getattr(self,type+"_template")
             return obj()              return obj()
         else:          else:
Line 56  class ECHO_basis: Line 88  class ECHO_basis:
     management_page_charset="utf-8"      management_page_charset="utf-8"
     isVisible = True      isVisible = True
           
       # Managment for the PID
       def setPID(self,pid):
           """set the pid"""
           logging.debug(self.getID()+" PID set to "+pid)
           self.pid=pid
           return True
           
       def getPID(self):
           """get the pid"""
   
           pid =getattr(self,'pid',None)
   
           if pid == self.getParentPID():
               return None
           else:
               return pid
   
           
       def getParentPID(self):
           """get the PID of the parent"""
           parent = self.aq_parent
           
           pidF = getattr(parent,'getPID',None)
           
           if pidF is None:
               return None
               
           else:
               return pidF()
   
       def unicodify(self, s):
           """return unicode object for string (utf-8 or latin1) or unicode object s"""
           return unicodify(s)
       
       # compatibility of old decode method
       decode = unicodify
   
   
       def utf8ify(self, s):
           """return utf-8 encoded string object for string or unicode object s"""
           return utf8ify(s)
   
       
     def manage_addECHO_locale(self,lang,title,label,text=None,content_type=None,RESPONSE=None):      def manage_addECHO_locale(self,lang,title,label,text=None,content_type=None,RESPONSE=None):
             return ECHO_collection.manage_addECHO_locale(self,lang,title,label)              return ECHO_collection.manage_addECHO_locale(self,lang,title,label)
                           
Line 67  class ECHO_basis: Line 142  class ECHO_basis:
     def showRDF(self):      def showRDF(self):
             """showrdf"""              """showrdf"""
             self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')              self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
             ret="""<?xml version="1.0" encoding="utf-8"?>\n<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  xmlns:ECHONAVIGATION="http://www.echo.eu/rdf#">\n"""              ret="""<?xml version="1.0" encoding="utf-8"?>\n<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  xmlns:ECHONAVIGATION="http://www.echo.eu/rdf#"
               xmlns:MPIWG="http://www.mpiwg-berlin.mpg.de/ns/mpiwg">\n"""
   
             ret+=self.getRDF(urn="echo:collectionroot")+"\n"              ret+=self.getRDF(urn="echo:collectionroot")+"\n"
   
Line 130  class ECHO_basis: Line 206  class ECHO_basis:
                     nurn=self.absolute_url()+'/showMetaDataXML'                      nurn=self.absolute_url()+'/showMetaDataXML'
                     ret+=getRDFDescription(self,self.absolute_url()+'/showMetaDataXML',urn=nurn,nameDef="Metadata",typeName="ECHO_metaData")                      ret+=getRDFDescription(self,self.absolute_url()+'/showMetaDataXML',urn=nurn,nameDef="Metadata",typeName="ECHO_metaData")
   
             return ret  
                           
               return ret
     def content_html_XMLRpc(self):      def content_html_XMLRpc(self):
         """xml_rpc_version"""          """xml_rpc_version"""
         return encodeRPC(self.content_html())          return encodeRPC(self.content_html())
Line 165  class ECHO_basis: Line 241  class ECHO_basis:
         return self.isVisible          return self.isVisible
     return True      return True
           
       def getDescription(self):
           """get content of description field"""
           
         
           return self.unicodify(getattr(self,'description',''));
       
     def getTitle(self):      def getTitle(self):
         """title"""          """title"""
         if hasattr(self,'getLanguage'):          if hasattr(self,'getLanguage'):
Line 351  class ECHO_basis: Line 433  class ECHO_basis:
             js+="""addArea('%s', 'overview', %s, '%s', '%s');\n"""%(ob.getFullId(),ob.getCoordString(),ob.getType(),perm)              js+="""addArea('%s', 'overview', %s, '%s', '%s');\n"""%(ob.getFullId(),ob.getCoordString(),ob.getType(),perm)
         return js          return js
   
     def createMapHead(self):      def createMapHead(self,mapColTypes=None):
         """create javascript include and script tags for head"""          """create javascript include and script tags for head"""
         pt=zptFile(self, 'zpt/ECHO_content_map_frag_js')          pt=zptFile(self, 'zpt/ECHO_content_map_frag_js')
         return pt()          return pt(mapColTypes=mapColTypes)
   
     def createMapImg(self):      def createMapImg(self):
         """generate img-tag for map"""          """generate img-tag for map"""
Line 377  class ECHO_basis: Line 459  class ECHO_basis:
         """generate map link"""          """generate map link"""
         bt = BrowserCheck(self)          bt = BrowserCheck(self)
         id = ob.getFullId()          id = ob.getFullId()
         link = ob.getLinkId()          url = ob.getTargetUrl()
           if url == "":
               # ECHOResource with empty link -> no link
               href = 'href="#" onclick="return false;"'
           else:
               href = 'href="%s"'%ob.getLinkId()
           
           if target is None:
               targetattr = ""
           else:
               targetattr = 'target="%s"'%target
                
         if text is None:          if text is None:
             text = ob.getLabel()              text = ob.getLabel()
               
         if text is None:          if text is None:
             text = "link"              text = "link"
               
         tiptext = ob.getTip()          tiptext = ob.getTip()
         tag = ""          tag = ""
         if bt.isN4:          if bt.isN4:
             # N4 needs layer for highlighting              # N4 needs layer for highlighting
             tag += '<ilayer id="a.%s"><a class="maplink" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="%s"'%(id,id,id,link,target)              tag += '<ilayer id="a.%s"><a class="maplink" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" %s %s'%(id,id,id,href,targetattr)
             tag += ">" + text + "</a></ilayer>"              tag += ">" + text + "</a></ilayer>"
         else:          else:
             # a-element              # a-element
             tag = '<a id="a.%s" class="maplink" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="%s"'%(id,id,id,link,target)              tag = '<a id="a.%s" class="maplink" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" %s %s'%(id,id,id,href,targetattr)
             if tiptext:              if tiptext:
                 tag += ' title="%s"'%tiptext                  tag += ' title="%s"'%tiptext
             tag += ">" + text + "</a>"              tag += ">" + text + "</a>"
Line 401  class ECHO_basis: Line 496  class ECHO_basis:
         bt = BrowserCheck(self)          bt = BrowserCheck(self)
         id = ob.getFullId()          id = ob.getFullId()
         link = ob.getLinkId()          link = ob.getLinkId()
           url = ob.getTargetUrl()
           if url == "":
               # ECHOResource with empty link -> no link
               href = 'href="#" onclick="return false;"'
           else:
               href = 'href="%s"'%ob.getLinkId()
           
           if target is None:
               targetattr = ""
           else:
               targetattr = 'target="%s"'%target
         tiptext = ob.getTip()          tiptext = ob.getTip()
         tag = ""          tag = ""
   
Line 426  class ECHO_basis: Line 532  class ECHO_basis:
                                   
                 if float(rot) < 0:                  if float(rot) < 0:
                     marksrc = circlesrc                      marksrc = circlesrc
                 tag += '<a href="%s"><img border="0" src="%s&rot=%s" /></a>'%(link,marksrc,rot)                  tag += '<a %s><img border="0" src="%s&rot=%s" /></a>'%(href,marksrc,rot)
             elif ob.isTypeText():              elif ob.isTypeText():
                 # N4 - Text                  # N4 - Text
                 tag += '<div id="t.%s" class="maptext"'%(id)                  tag += '<div id="t.%s" class="maptext"'%(id)
Line 435  class ECHO_basis: Line 541  class ECHO_basis:
                 tag += '</div>'                  tag += '</div>'
             else:              else:
                 # N4 - Area                  # N4 - Area
                 tag += '<a href="%s"><img border="0" width="1000" height="1000" src="trans_img"'%(link)                  tag += '<a %s><img border="0" width="1000" height="1000" src="trans_img"'%(href)
                 if tiptext:                  if tiptext:
                     tag += ' alt="%s"'%tiptext                      tag += ' alt="%s"'%tiptext
                 tag += ' /></a>'                  tag += ' /></a>'
Line 444  class ECHO_basis: Line 550  class ECHO_basis:
             #              #
             # (more or less) DOM capable browser              # (more or less) DOM capable browser
             #              #
             tag = '<a id="b.%s" class="mapmarklink" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="%s">'%(id,id,id,link,target)              tag = '<a id="b.%s" class="mapmarklink" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" %s %s>'%(id,id,id,href,targetattr)
             if ob.isTypeArrow():              if ob.isTypeArrow():
                 # DOM - Arrow                  # DOM - Arrow
                 rot = ob.angle                  rot = ob.angle
Line 586  def getSubCols(self, sortfield=None, Line 692  def getSubCols(self, sortfield=None,
                isVisible=True):                 isVisible=True):
                   
         def sort(x,y):          def sort(x,y):
                   try:
                           if type(x[0])==type(y[0]):
                 return cmp(x[0],y[0])                  return cmp(x[0],y[0])
                           else:
                                   if type(x[0])==types.StringType:
                                           tmpX=unicodify(x[0])
                                           tmpY=y[0]
                                   else:
                                           tmpY=unicodify(y[0])
                                           tmpX=x[0]
                                   return cmp(tmpX,tmpY)
                   
                   except:
                           logging.error("Error at ECHO_helpers.sort:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
                           logging.error("                         : %s %s"%sys.exc_info()[0:2])
                           logging.error("Error at ECHO_helpers.sort:"+repr(x)+"--"+repr(type(x[0])))
                           logging.error("Error at ECHO_helpers.sort:"+repr(y)+"--"+repr(type(y[0])))
                           logging.error("Error at ECHO_helpers.sort:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB")
                           return 0
         def sortfnc(sortfield,x,y):          def sortfnc(sortfield,x,y):
                 try:                  try:
                         xa=x[1].getMDValue(sortfield,generic=generic)                          xa=x[1].getMDValue(sortfield,generic=generic)
Line 699  def reloadMetaDataFromStorage(self,RESPO Line 822  def reloadMetaDataFromStorage(self,RESPO
   
             return ret              return ret
           
 def getRDFDescription(self,linkURL,urn=None,nameDef=None,typeName=None):  def getRDFDescription(self,linkURL,urn=None,nameDef=None,typeName=None,ap=""):
             """rdf"""              """rdf"""
                           
             ret=""              ret=""
Line 709  def getRDFDescription(self,linkURL,urn=N Line 832  def getRDFDescription(self,linkURL,urn=N
             clickable="""<ECHONAVIGATION:linkClickable>%s</ECHONAVIGATION:linkClickable>"""              clickable="""<ECHONAVIGATION:linkClickable>%s</ECHONAVIGATION:linkClickable>"""
             #link="""<ECHONAVIGATION:link RDF:about="%s"/>"""              #link="""<ECHONAVIGATION:link RDF:about="%s"/>"""
             type="""<ECHONAVIGATION:type>%s</ECHONAVIGATION:type>"""              type="""<ECHONAVIGATION:type>%s</ECHONAVIGATION:type>"""
               
             #xlink="""<ECHONAVIGATION:xlink xlink:href="%s"/>"""                      #xlink="""<ECHONAVIGATION:xlink xlink:href="%s"/>"""        
               
               if ap=="":
                   ap2=""
               else:
                   ap2 = """<MPIWG:archive-path>%s</MPIWG:archive-path>"""%ap
               
             if not urn:              if not urn:
                     #urn="urn:"+re.sub('/',':',self.absolute_url())                      #urn="urn:"+re.sub('/',':',self.absolute_url())
                     urn=self.absolute_url()                      urn=self.absolute_url()
Line 736  def getRDFDescription(self,linkURL,urn=N Line 866  def getRDFDescription(self,linkURL,urn=N
             else:              else:
                     type2=type%typeName                      type2=type%typeName
                           
             
             #ret=about2+"\n"+name2+"\n"+link2+"\n"+type2+"\n"+clickable2+"\n</RDF:Description>"              #ret=about2+"\n"+name2+"\n"+link2+"\n"+type2+"\n"+clickable2+"\n</RDF:Description>"
             ret=about2+"\n"+name2+"\n"+type2+"\n"+clickable2+"\n</RDF:Description>"              ret=about2+"\n"+name2+"\n"+type2+"\n"+clickable2+"\n"+ap2+"\n</RDF:Description>"
             return ret              return ret
           
 def getCopyrightsFromForm(self,argv):   def getCopyrightsFromForm(self,argv): 
Line 924  def writeMetadata(url,metadict,project=N Line 1055  def writeMetadata(url,metadict,project=N
   
   
                 except:                  except:
                     zLOG.LOG("ECHO writeMetadata",zLOG.ERROR,"XCannot open: "+url)                      logger("ECHO writeMetadata",logging.ERROR,"XCannot open: "+url)
                     return (None,"XCannot open: "+url)                      return (None,"XCannot open: "+url)
   
                 try:                  try:
                         dom=xml.dom.minidom.parseString(geturl)                          dom=xml.dom.minidom.parseString(geturl)
                 except:                  except:
                     zLOG.LOG("ECHO writeMetadata",zLOG.ERROR,"Cannot parse: "+url+"<br>"+geturl)                      logger("ECHO writeMetadata",logging.ERROR,"Cannot parse: "+url+"<br>"+geturl)
                     return (None,"Cannot parse: "+url+"<br>"+geturl)                      return (None,"Cannot parse: "+url+"<br>"+geturl)
   
                   
Line 1159  class MapArea(SimpleItem): Line 1290  class MapArea(SimpleItem):
             parent = self.aq_parent              parent = self.aq_parent
             text = parent.getMapText()              text = parent.getMapText()
             if text is not None:              if text is not None:
                 return text.document_src()                  #return text.document_src()
                   return text()
         return ""          return ""
   
     def getLabel(self):      def getLabel(self):
Line 1169  class MapArea(SimpleItem): Line 1301  class MapArea(SimpleItem):
                 return self.aq_parent.label or self.aq_parent.id                  return self.aq_parent.label or self.aq_parent.id
         return self.label          return self.label
   
       def getTargetUrl(self):
           """returns the URL of the linked object"""
           if hasattr(self, 'aq_parent'):
               p = self.aq_parent
               # ECHOResource and ECHOLink have 'link' attribute
               if hasattr(p, 'link'):
                   if p.link is None:
                       # return empty string for empty link
                       return ""
                   else:
                       return p.link
                   
           # return None for unknown type
           return None
   
     def setLabel(self, label):      def setLabel(self, label):
         """sets the label"""          """sets the label"""
         self.label = label          self.label = label
Line 1214  class MapText(Folder,ZopePageTemplate): Line 1361  class MapText(Folder,ZopePageTemplate):
         self.ZBindings_edit(self._default_bindings)          self.ZBindings_edit(self._default_bindings)
         if text is None:          if text is None:
             text = open(self._default_content_fn).read()              text = open(self._default_content_fn).read()
           if content_type is None:
               content_type = self.content_type
         self.pt_edit(text, content_type)          self.pt_edit(text, content_type)
   
     def createLocale(self):      def createLocale(self):

Removed from v.1.79  
changed lines
  Added in v.1.97


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