Diff for /ECHO_content/ECHO_collection.py between versions 1.160 and 1.187

version 1.160, 2004/08/05 13:51:32 version 1.187, 2004/10/28 13:38:40
Line 29  from Products.PageTemplates.PageTemplate Line 29  from Products.PageTemplates.PageTemplate
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate  from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from Globals import Persistent, package_home  from Globals import Persistent, package_home
 from Acquisition import Implicit  from Acquisition import Implicit
 from ECHO_helpers import displayTypes  from ECHO_helpers import *
 import urllib  import urllib
   import smtplib
 import time  import time
   from Ft.Xml.Domlette import NonvalidatingReader
   from Ft.Xml.Domlette import PrettyPrint
   from Ft.Xml import EMPTY_NAMESPACE
   
   import Ft.Xml.XPath
   import cStringIO
   import zLOG
   
 try:  try:
     from psycopg import libpq      from psycopg import libpq
Line 48  import xml.dom.minidom Line 56  import xml.dom.minidom
 from ECHO_graphicalOverview import javaHandler,javaScriptMain  from ECHO_graphicalOverview import javaHandler,javaScriptMain
 import ECHO_helpers  import ECHO_helpers
   
   def donatus(txt2):
       import xmlrpclib
   
       server = xmlrpclib.ServerProxy("http://archimedes.fas.harvard.edu/cgi-bin/donatus-rpc")
   
       txt=txt2.encode('utf-8')
       bin=xmlrpclib.Binary(txt)
   
       
   
       ret=server.donatus.analyze(bin)
   
           
       return ret['morphData'].data
   
   
   def donatusVariant2Lemma(morphData):
       """creates hash variant -> morphdata"""
       ret={}
       dom=xml.dom.minidom.parseString(morphData)
       lemmas=dom.getElementsByTagName('lemma')
       for lemma in lemmas:
           variants=lemma.getElementsByTagName('variant')
           for variant in variants:
               atr=variant.getAttribute('form')
               if ret.has_key(atr):
                   ret[atr].append=lemma.getAttribute('form')
               else:
                   ret[atr]=[lemma.getAttribute('form')]
   
       return ret
   
   #regexp for extracting elements from xml
   patternTXT=r"<\s*txt.*?>(.*?)</txt>"
   regexpTXT = re.compile(patternTXT, re.IGNORECASE + re.DOTALL)
   patternPage=r"<\s*page.*?>(.*?)</page>"
   regexpPage = re.compile(patternPage, re.IGNORECASE + re.DOTALL)
   
           
 def ECHO_rerenderLinksMD(self,obj=None,types=['title','label']):  def ECHO_rerenderLinksMD(self,obj=None,types=['title','label']):
         """Rerender all Links"""          """Rerender all Links"""
     ret=""      ret=""
Line 216  def content_html(self,type): Line 263  def content_html(self,type):
             pt.content_type="text/html"              pt.content_type="text/html"
             return pt()              return pt()
           
 def toList(field):  
     """Einzelfeld in Liste umwandeln"""  
     if type(field)==StringType:  
         return [field]  
     else:  
         return field  
           
 def getText(nodelist):  
   
   
   def getTextFromNode(nodename):
       nodelist=nodename.childNodes
     rc = ""      rc = ""
     for node in nodelist:      for node in nodelist:
         if node.nodeType == node.TEXT_NODE:          if node.nodeType == node.TEXT_NODE:
            rc = rc + node.data             rc = rc + node.data
     return rc      return rc
   
   
 def sendFile(self, filename, type):  def sendFile(self, filename, type):
     """sends an object or a local file (in the product) as response"""      """sends an object or a local file (in the product) as response"""
     paths = filename.split('/')      paths = filename.split('/')
Line 274  class BrowserCheck: Line 316  class BrowserCheck:
                   
 def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,xmlfrag=None,digiliburlprefix=None):  def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,xmlfrag=None,digiliburlprefix=None):
     """Einlesen der Metadaten und und erstellen des geaenderten XML file"""      """Einlesen der Metadaten und und erstellen des geaenderten XML file"""
     print "url",url  
     def updateTextToolNode(tag,value):      def updateTextToolNode(tag,value):
         #print dom,tag,value          #print dom,tag,value
         metanode=dom.getElementsByTagName('texttool')[0]          metanode=dom.getElementsByTagName('texttool')[0]
Line 303  def writeMetadata(url,metadict,project=N Line 345  def writeMetadata(url,metadict,project=N
     else:      else:
         try:          try:
             geturl=""              geturl=""
             for line in urllib.urlopen(url).readlines():              for line in ECHO_helpers.urlopen(url).readlines():
                 geturl=geturl+line                  geturl=geturl+line
   
   
Line 344  def writeMetadata(url,metadict,project=N Line 386  def writeMetadata(url,metadict,project=N
                 metanode.removeChild(nodeOld[0]).unlink()                  metanode.removeChild(nodeOld[0]).unlink()
   
         metanodeneu=dom.createElement(metaData)          metanodeneu=dom.createElement(metaData)
         try:                  metanodetext=dom.createTextNode(metadict[metaData])
             metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf-8"))          #try:
         except:              #metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf-8"))
             metanodetext=dom.createTextNode(metadict[metaData].encode('utf-8'))          #except:
               #metanodetext=dom.createTextNode(metadict[metaData].encode('utf-8'))
         metanodeneu.appendChild(metanodetext)          metanodeneu.appendChild(metanodetext)
         metanode.appendChild(metanodeneu)          metanode.appendChild(metanodeneu)
   
Line 374  def writeMetadata(url,metadict,project=N Line 417  def writeMetadata(url,metadict,project=N
     if digiliburlprefix:      if digiliburlprefix:
         updateTextToolNode('digiliburlprefix',digiliburlprefix)          updateTextToolNode('digiliburlprefix',digiliburlprefix)
           
           try:    
     return dom.toxml().encode('utf-8')      return dom.toxml().encode('utf-8')
       except:
        return dom.toxml('utf-8')
   
           
           
Line 385  def readMetadata(url): Line 431  def readMetadata(url):
     metadict={}      metadict={}
     try:      try:
         geturl=""          geturl=""
         for line in urllib.urlopen(url).readlines():          for line in ECHO_helpers.urlopen(url).readlines():
             geturl=geturl+line              geturl=geturl+line
                   
                   
Line 474  class ECHO_copyright(Folder): Line 520  class ECHO_copyright(Folder):
         {'label':'Main Config','action':'ECHO_copyright_configForm'},          {'label':'Main Config','action':'ECHO_copyright_configForm'},
         )          )
   
   
     def ECHO_copyright_configForm(self):      def ECHO_copyright_configForm(self):
         """change form"""          """change form"""
         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyright').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyright').__of__(self)
Line 532  class ECHO_layoutTemplate(ZopePageTempla Line 579  class ECHO_layoutTemplate(ZopePageTempla
   
 def manage_addECHO_layoutTemplateForm(self):  def manage_addECHO_layoutTemplateForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_layoutTemplate.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddECHO_layoutTemplate.zpt')).__of__(self)
     return pt()      return pt()
   
 from urllib import quote  from urllib import quote
Line 577  def manage_addECHO_layoutTemplate(self, Line 624  def manage_addECHO_layoutTemplate(self,
     REQUEST.RESPONSE.redirect(u+'/manage_main')      REQUEST.RESPONSE.redirect(u+'/manage_main')
     return ''      return ''
   
   class ECHO_fullText(ZopePageTemplate):
       """echo fulltext in xml"""
   
       meta_type="ECHO_fullText"
   
       def donatusVariant2Lemma(self,nr='1'):
           """analyze by donatus"""
           return donatusVariant2Lemma(donatus(self.lemmatize(nr)))
   
       def tagLex(self,nr="1"):
           """generate Links"""
           global retLex
           global toggle
   
           toggle=0
           retLex=""
   
           lemmatized=self.lemmatize(nr)[0:]
           #print "ho",repr(lemmatized)
           variants=donatusVariant2Lemma(donatus(lemmatized))
           
           def createTag(name,attrs):
                           global toggle
               
               if name=="w":
                   toggle=1
                   return ""
               else:
                   tag="<"
                   tag+=name
                   for attr in attrs.keys():
                       tag+=""" %s="%s" """%(attr,attrs[attr])
                   tag+=">"
               return tag
                   
           def createData(data):
               global toggle
               astring="""<a href="http://141.14.236.86/cgi-bin/toc/dict?step=remotetable;word=%s;lang=de" target="_blank">%s</a> """
               if toggle: # tag war ein w
                   toggle=0
                   if variants.has_key(data):
                       return astring%(variants[data][0],data)
                   else:
                       return astring%(data,data)
                   
                       
   
           # 3 handler functions
           def start_element(name, attrs):
               global retLex
               
               retLex+=createTag(name,attrs)
           def end_element(name):
               global retLex
               if not name=="w":
                   retLex+="</%s>"%(name.encode('utf-8'))
               
               
           def char_data(data):
               global retLex
               if data:
                   try:
                       retLex+=createData(data)
                   except:
                       """no"""
                       
           p = xml.parsers.expat.ParserCreate()
   
           p.StartElementHandler = start_element
           p.EndElementHandler = end_element
           p.CharacterDataHandler = char_data
           
           p.Parse(lemmatized.encode('utf-8'),1)
           #print repr(lemmatized.encode('utf-8'))
       
           return retLex
       
           
       def lemmatize(self,nr='1',lang="de"):
           """lemmatize"""
           global ret
           ret=""
           
           def createTag(name,attrs):
               tag="<"
               tag+=name
               for attr in attrs.keys():
                   tag+=""" %s="%s" """%(attr,attrs[attr])
               tag+=">"
               return tag
                   
           def insertW(str):
               splitted=str.split()
               wordlist=["<w>%s</w>"%split for split in splitted]
               return string.join(wordlist,'\n')
   
           # 3 handler functions
           def start_element(name, attrs):
               global ret
               ret+=createTag(name,attrs)
           def end_element(name):
               global ret
               ret+="</%s>"%(name.encode('utf-8'))
               
           def char_data(data):
               global ret
               ret+=insertW(data)
   
           p = xml.parsers.expat.ParserCreate()
   
           p.StartElementHandler = start_element
           p.EndElementHandler = end_element
           p.CharacterDataHandler = char_data
   
           p.Parse(self.getPage(nr), 1)
           txt="""<wtag locator="xxx">
           <section lang="%s"><s>%s</s></section>
           </wtag>"""
           ret=txt%(lang,ret)
   
           return ret
       
       def getPage(self,nr='1'):
           """get page n"""
           dom=xml.dom.minidom.parseString(self())
           pages=dom.getElementsByTagName('page')
           
           return pages[int(nr)-1].toxml('utf-8')
       
   # Product registration and Add support
   manage_addECHO_fullTextForm = PageTemplateFile(
       'zpt/AddECHO_fullText.zpt', globals())
   
   from urllib import quote
   
   def manage_addECHO_fullText(self, id, title=None, text=None,
                              REQUEST=None, submit=None):
       "Add a Page Template with optional file content."
   
       id = str(id)
       if REQUEST is None:
           self._setObject(id, ECHO_fullText(id, text))
           ob = getattr(self, id)
           if title:
               ob.pt_setTitle(title)
           return ob
       else:
           file = REQUEST.form.get('file')
           headers = getattr(file, 'headers', None)
           if headers is None or not file.filename:
               zpt = ECHO_fullText(id)
           else:
               zpt = ECHO_fullText(id, file, headers.get('content_type'))
   
           self._setObject(id, zpt)
   
           try:
               u = self.DestinationURL()
           except AttributeError:
               u = REQUEST['URL1']
   
           if submit == " Add and Edit ":
               u = "%s/%s" % (u, quote(id))
           REQUEST.RESPONSE.redirect(u+'/manage_main')
       return ''
   
 class ECHO_resource(Folder,Persistent):  class ECHO_resource(Folder,Persistent):
     """ECHO Ressource"""      """ECHO Ressource"""
Line 594  class ECHO_resource(Folder,Persistent): Line 805  class ECHO_resource(Folder,Persistent):
         """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#">\n"""
         ret+=self.getRDF(urn="echo:collectionroot")+"\n"          ret+=self.getRDF(urn="echo:colllectionroot")+"\n"
   
         ret+="""</RDF:RDF>"""          ret+="""</RDF:RDF>"""
             return ret               return ret 
Line 681  class ECHO_resource(Folder,Persistent): Line 892  class ECHO_resource(Folder,Persistent):
   
         try:          try:
             geturl=""              geturl=""
             for line in urllib.urlopen(url).readlines():              for line in ECHO_helpers.urlopen(url).readlines():
                 geturl=geturl+line                  geturl=geturl+line
   
   
Line 711  class ECHO_resource(Folder,Persistent): Line 922  class ECHO_resource(Folder,Persistent):
         params="accessright=%s"%accessright          params="accessright=%s"%accessright
   
   
         #print urllib.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()          #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
   
                   
         urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read()          ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read()
   
               
         if RESPONSE is not None:          if RESPONSE is not None:
Line 727  class ECHO_resource(Folder,Persistent): Line 938  class ECHO_resource(Folder,Persistent):
   
         try:          try:
             geturl=""              geturl=""
             for line in urllib.urlopen(url).readlines():              for line in ECHO_helpers.urlopen(url).readlines():
                 geturl=geturl+line                   geturl=geturl+line 
   
   
Line 791  class ECHO_resource(Folder,Persistent): Line 1002  class ECHO_resource(Folder,Persistent):
             return pt()              return pt()
           
           
       def createImageUrl(self,pn=1):
           """create ImageUrl"""
   
           
           resourcepath=readFieldFromXML(self.metalink,'resource','archive-path')
           
           digiliburlprefix=readFieldFromXML(self.metalink,'texttool','digiliburlprefix')
           images=readFieldFromXML(self.metalink,'texttool','image')
   
   
           if (not resourcepath) or (not digiliburlprefix) or (not images):
               zLOG.LOG("ECHO (createImageUrl)",zLOG.ERROR,"Cannot create ImageUrl for %s"%self.absolute_url())
               return None
           resourcepath=resourcepath.replace('/mpiwg/online','')
           if not digiliburlprefix: digiliburlprefix="http://echo.mpiwg-berlin.mpg.de/zogilib?"
   
           if (not images) or (not resourcepath): return None
   
           return "%sfn=%s&pn=%i"%(digiliburlprefix,resourcepath+"/"+images,pn)
       
       def copyTitleToInfoXML(self,RESPONSE=None):
           """copy title from the resource"""
           presentationXML=readFieldFromXML(self.metalink,'texttool','presentation')
           resourcepath=readFieldFromXML(self.metalink,'resource','archive-path')
           if (not presentationXML) or (not resourcepath): 
           if RESPONSE:
               RESPONSE.write("Error: %s\n"%self.getId())
           else:
               return None,self.absolute_url()
   
           try:
               fh=file(os.path.join(resourcepath,presentationXML),'w')
               fh.write("""<info>
               <author></author>
               <title>%s</title>
               <date></date>
               <display>yes</display>
               </info>"""%self.title)
               fh.close()
               return 1,self.getId()
           except:
               if RESPONSE:
                   RESPONSE.write("Error: %s\n"%self.getId())
               else:
                   return None,self.absolute_url()
   
           
     def setStartPage(self,startpage=None,RESPONSE=None):      def setStartPage(self,startpage=None,RESPONSE=None):
         """set start page, if no startpage defined use the generic one of the resource"""          """set start page, if no startpage defined use the generic one of the resource"""
   
         if (not (type(startpage)==StringType)) and ("__generic" in startpage): # checke ob generic in der liste          if (not (type(startpage)==StringType)):
               if ("__generic" in startpage): # checke ob generic in der liste
             startpage=self.absolute_url()+"/startpage_html"              startpage=self.absolute_url()+"/startpage_html"
               elif ("__firstPage" in startpage): # checke ob generic in der liste
                   startpage=self.createImageUrl()
                           
         if (not startpage) or (startpage=="__generic"):          if (not startpage):
              startpage=self.absolute_url()+"/startpage_html"               startpage=self.absolute_url()+"/startpage_html"
                   elif (startpage=="__generic"):
               startpage=self.absolute_url()+"/startpage_html"
           elif (startpage=="__firstPage"):
                   startpage=self.createImageUrl()
           
         params="startpage=%s"%startpage          params="startpage=%s"%startpage
           print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))
                   
         urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()          ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
           
                   
         path=self.metalink          path=self.metalink
Line 816  class ECHO_resource(Folder,Persistent): Line 1081  class ECHO_resource(Folder,Persistent):
         path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server          path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server
             path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server              path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server
         path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server          path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server
           path=re.sub('http://vision.mpiwg-berlin.mpg.de','',path) # falls vision als server
           path=re.sub('http://xserve02.mpiwg-berlin.mpg.de:18880','',path) # falls vision als server
           path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo
         path=re.sub('/index.meta','',path)           path=re.sub('/index.meta','',path) 
   
   
         urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()          ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 830  class ECHO_resource(Folder,Persistent): Line 1098  class ECHO_resource(Folder,Persistent):
             return pt()              return pt()
   
   
      
     def getTextToolsField(self,name,default=''):      def getTextToolsField(self,name,default=''):
         """Lese Textoolsfelder aus index.meta im path aus"""          """Lese Textoolsfelder aus index.meta im path aus"""
                   
Line 859  class ECHO_resource(Folder,Persistent): Line 1128  class ECHO_resource(Folder,Persistent):
         params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)          params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)
   
                   
         urllib.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()          ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
   
         #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)          #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)
         # hack Pfad auf die Dokumente          # hack Pfad auf die Dokumente
Line 879  class ECHO_resource(Folder,Persistent): Line 1148  class ECHO_resource(Folder,Persistent):
         path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server          path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server
         path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server          path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server
         path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server          path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server
         return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()          path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo
   
           path=re.sub('http://vision.rz-berlin.mpg.de','',path) # falls vision als server
   
           return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
   
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 913  class ECHO_resource(Folder,Persistent): Line 1187  class ECHO_resource(Folder,Persistent):
   
     def getFullTextXML(self,noredirect=None):      def getFullTextXML(self,noredirect=None):
         """getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong."""          """getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong."""
   
         try:          try:
             fh=urllib.urlopen(self.metalink)              #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"open %s"%self.metalink)
               fh=ECHO_helpers.urlopen(self.metalink)
               #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"opened %s"%self.metalink)
             dom=xml.dom.minidom.parse(fh)              dom=xml.dom.minidom.parse(fh)
             texttools=dom.getElementsByTagName('texttool')              texttools=dom.getElementsByTagName('texttool')
             text=texttools[0].getElementsByTagName('text')              text=texttools[0].getElementsByTagName('text')
             texturl=getText(text[0].childNodes)              texturl=getText(text[0].childNodes)
                           
               #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"found %s"%texturl)
                       fh.close()
               #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"closed fh")
               #keine url
               if not (texturl.split(":")[0] in ['http','ftp','file']): 
               if not noredirect:
                   return file(texturl).read()
                           else:
                   return texturl
   
             if not noredirect:              if not noredirect:
                             self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')                                self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')  
                       zLOG.LOG("ECHO Fulltext",zLOG.INFO,"redirect to:%s"%texturl)
                 self.REQUEST.RESPONSE.redirect(texturl)                  self.REQUEST.RESPONSE.redirect(texturl)
             else:              else:
                 return texturl                  return texturl
Line 937  class ECHO_resource(Folder,Persistent): Line 1225  class ECHO_resource(Folder,Persistent):
     def getImageView(self,noredirect=None):      def getImageView(self,noredirect=None):
         """getImages; give Imageviewr  and <error></error> if somthing goes wrong."""          """getImages; give Imageviewr  and <error></error> if somthing goes wrong."""
         try:          try:
             fh=urllib.urlopen(self.metalink)              fh=ECHO_helpers.urlopen(self.metalink)
             dom=xml.dom.minidom.parse(fh)              dom=xml.dom.minidom.parse(fh)
             texttools=dom.getElementsByTagName('texttool')              texttools=dom.getElementsByTagName('texttool')
             text=texttools[0].getElementsByTagName('image')              text=texttools[0].getElementsByTagName('image')
Line 947  class ECHO_resource(Folder,Persistent): Line 1235  class ECHO_resource(Folder,Persistent):
             archivepath=getText(text[0].childNodes)              archivepath=getText(text[0].childNodes)
             archivepath=re.sub('/mpiwg/online/','',archivepath)               archivepath=re.sub('/mpiwg/online/','',archivepath) 
             imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp              imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp
               fh.close()
   
             if not noredirect:              if not noredirect:
                             self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')                                self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')  
                 self.REQUEST.RESPONSE.redirect(imageurl)                  self.REQUEST.RESPONSE.redirect(imageurl)
Line 1186  class ECHO_resource(Folder,Persistent): Line 1476  class ECHO_resource(Folder,Persistent):
             except:              except:
                 """nothing"""                  """nothing"""
   
         urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()          ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()
   
   
         if RESPONSE is not None:          if RESPONSE is not None:
Line 1724  class ECHO_collection(Folder, Persistent Line 2014  class ECHO_collection(Folder, Persistent
             return ret               return ret 
   
             
       
     def changeLabels(self):      def changeLabels(self):
         """change form"""          """change form"""
         pt=PageTemplateFile('Products/ECHO_content/zpt/changeLabelsForm').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/changeLabelsForm').__of__(self)
Line 1736  class ECHO_collection(Folder, Persistent Line 2027  class ECHO_collection(Folder, Persistent
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
   
       def changeWeights(self):
           """change form"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/changeWeightForm').__of__(self)
           pt.content_type="text/html"
           return pt()
   
       def changeMetaDataLinks(self):
           """change form"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/changeMetaDataLinkForm').__of__(self)
           pt.content_type="text/html"
           return pt()
     def changeAccessRightsCollection(self):      def changeAccessRightsCollection(self):
         """change"""          """change"""
         ret=""          ret=""
Line 1751  class ECHO_collection(Folder, Persistent Line 2053  class ECHO_collection(Folder, Persistent
                 """not"""                  """not"""
         return ret          return ret
   
     def changeLabelsInCollection(self):      def changeMetaDataLinkInCollection(self):
         """change all lables of a collection"""          """change all lables of a collection"""
         ret=""          ret=""
         argv=self.REQUEST.form          argv=self.REQUEST.form
Line 1761  class ECHO_collection(Folder, Persistent Line 2063  class ECHO_collection(Folder, Persistent
                         
             try:              try:
                 ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"                  ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"
                             resource[1].label=argv[resource[1].getId()][0:]                              resource[1].metalink=argv[resource[1].getId()][0:]
               except:
                   """not"""
           return ret
   
       def changeMetaDataLinkInCollection(self):
           """change all lables of a collection"""
           ret=""
           argv=self.REQUEST.form
           
           resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
           for resource in resources:
              
               try:
                   ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"
                               resource[1].metalink=argv[resource[1].getId()][0:]
               except:
                   """not"""
           return ret
   
       def changeWeightsInCollection(self):
           """change all lables of a collection"""
           ret=""
           argv=self.REQUEST.form
           
           resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink'])
           for resource in resources:
              
               try:
                   ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"
                               resource[1].weight=argv[resource[1].getId()][0:]
             except:              except:
                 """not"""                  """not"""
         return ret          return ret
Line 1831  class ECHO_collection(Folder, Persistent Line 2163  class ECHO_collection(Folder, Persistent
         pt=PageTemplateFile('Products/ECHO_content/zpt/changeViewerTemplateSet').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/changeViewerTemplateSet').__of__(self)
             return pt()              return pt()
   
     def getViewerTemplateSets(self,obj_ids=None):      def getViewerTemplateSets(self,obj_ids=None,RESPONSE=None):
         """Get the ViewerTemplateSet title for configuration"""          """Get the ViewerTemplateSet title for configuration"""
         ret=[]          ret=[]
                   
Line 1893  class ECHO_collection(Folder, Persistent Line 2225  class ECHO_collection(Folder, Persistent
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
       def copyTitleToInfoXMLFolder(self,RESPONSE=None):
           """copy title into the title field of info.xml
           author and date werden leer!!!
           """
   
           
           resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
           
               
           for resource in resources:
               ret,txt=resource[1].copyTitleToInfoXML()
               if (not ret) and RESPONSE:
                   RESPONSE.write("error: %s\n"%txt)
               if ret and RESPONSE:
                   RESPONSE.write("ok: %s\n"%txt)
   
               #zLOG.LOG("ECHO (copyTitleToInfoXMLFolder)",zLOG.INFO,txt)   
           if RESPONSE is not None:
               RESPONSE.write("done!\n")
               RESPONSE.close()
               RESPONSE.redirect('manage_main')
   
     def copySearchFields(self,RESPONSE=None):      def copySearchFields(self,RESPONSE=None):
         """copys import metadatafields to the object"""          """copys import metadatafields to the object"""
Line 2020  class ECHO_collection(Folder, Persistent Line 2372  class ECHO_collection(Folder, Persistent
     def getCollectionTreeXML(self):      def getCollectionTreeXML(self):
         """Tree as XML"""          """Tree as XML"""
   
       def addPassWd(str):
           """adds a user/passwd to an url"""
           txt2=re.sub(r"(http://)(.*?)","\g<1>www:3333@\g<2>",str)
           return txt2
   
         def getCollection(object,depth=0):          def getCollection(object,depth=0):
             depth+=1              depth+=1
             collections=""              collections=""
Line 2027  class ECHO_collection(Folder, Persistent Line 2384  class ECHO_collection(Folder, Persistent
                 element=getattr(object,entry)                  element=getattr(object,entry)
                 try:                  try:
                     if element.meta_type in ["ECHO_collection","ECHO_group"]:                      if element.meta_type in ["ECHO_collection","ECHO_group"]:
                         collections+="<element name=\""+quote(element.title)+"\" url=\""+element.absolute_url()+"\">"                          collections+="<element name=\""+quote(element.title)+"\" url=\""+addPassWd(element.absolute_url())+"\">"
                         collections+=getCollection(element,depth)+"</element>\n"                          collections+=getCollection(element,depth)+"</element>\n"
                 except:                  except:
                     """nothing"""                      """nothing"""
Line 2217  class ECHO_collection(Folder, Persistent Line 2574  class ECHO_collection(Folder, Persistent
         {'label':'Main Config','action':'ECHO_collection_config'},          {'label':'Main Config','action':'ECHO_collection_config'},
         {'label':'Change Labels','action':'changeLabels'},          {'label':'Change Labels','action':'changeLabels'},
         {'label':'Change Titles','action':'changeTitles'},          {'label':'Change Titles','action':'changeTitles'},
       {'label':'Change Weights','action':'changeWeights'},
         {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},          {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},
         {'label':'Graphics','action':'ECHO_graphicEntry'},          {'label':'Graphics','action':'ECHO_graphicEntry'},
     {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},      {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
Line 2283  class ECHO_collection(Folder, Persistent Line 2641  class ECHO_collection(Folder, Persistent
         else:          else:
             return "#dddddd"              return "#dddddd"
                   
     def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",viewClassification=None,location=None):      def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",viewClassification=None,location=None,isAlwaysClickable=None):
         """Aenderung der Properties"""          """Aenderung der Properties"""
   
         self.secondaryLink=secondaryLink          self.secondaryLink=secondaryLink
Line 2292  class ECHO_collection(Folder, Persistent Line 2650  class ECHO_collection(Folder, Persistent
     self.bgcolour=bgcolour      self.bgcolour=bgcolour
         self.viewClassification=viewClassification          self.viewClassification=viewClassification
         self.location=location          self.location=location
       self.isAlwaysClickable=isAlwaysClickable
           
         if coords:          if coords:
             coordsnew=[ string.split(x,",") for x in coords]              coordsnew=[ string.split(x,",") for x in coords]
Line 2311  class ECHO_collection(Folder, Persistent Line 2670  class ECHO_collection(Folder, Persistent
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
                           
       def setAlwaysClickable(self,flag="yes"):
           """set clickable"""
           if flag=="yes":
               self.isAlwaysClickable="yes"
           else:
               self.isAlwaysClickable=None
   
           return flag
   
     def showOverview(self):      def showOverview(self):
         """overview"""          """overview"""
Line 2683  def manage_addECHO_userFolderForm(self): Line 3050  def manage_addECHO_userFolderForm(self):
     """add a user folder form"""      """add a user folder form"""
     return manage_addECHO_userFolder(self)      return manage_addECHO_userFolder(self)
   
   
   
   def createNode(self,descrs,node):
       name=descrs[node]['name']
       type=descrs[node]['type']
       urn=node
       #print "    will create",node.encode('utf-8')
       id=re.sub('[^a-zA-Z0-9]','',name).encode('ascii','ignore')
       #print "id",id
       #print type
       #self.REQUEST.RESPONSE.write("<p>%s<p>\n"%id)
       if type=="CDLI_group":
           
           try:
               manage_addECHO_collection(self,id,name,name,"","","","","")
           
           except:
               self.REQUEST.RESPONSE.write("<p>Error%s</p>\n"%id)
               
           self.REQUEST.RESPONSE.write("<p>Creates:%s</p>\n"%getattr(self,id).absolute_url())
           
           return type,getattr(self,id),urn
   
       if type=="CDLI_item":
           try:
               manage_addECHO_resource(self,id,name,name,"","",urn,"","")
           except:
               self.REQUEST.RESPONSE.write("<p>Error%s</p>\n"%id)
           self.REQUEST.RESPONSE.write("<p>Creates:%s</p>\n"%getattr(self,id).absolute_url())
           
           
       return "XX"
   
   
 class ECHO_root(Folder,Persistent,Implicit):  class ECHO_root(Folder,Persistent,Implicit):
     """ECHO Root Folder"""      """ECHO Root Folder"""
   
Line 2690  class ECHO_root(Folder,Persistent,Implic Line 3091  class ECHO_root(Folder,Persistent,Implic
           
     meta_type="ECHO_root"      meta_type="ECHO_root"
   
       ###CDLI adds -> have to be removed
       def getTablet(self,item):
           #print "getTablet"
       try:
           read=urllib.urlopen("http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl"%item).read()
                   read=re.sub("\[search\]","search",read)
           return read[read.find("<body>")+6:read.rfind("</body>")]
       except:
           return "<h1>Sorry no connection to the data server enlil.museum.upenn.edu</h1>"
       #return "http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl"
       ###END CDLI add
   
   
       def checkResource(self,id):
           """checks if a resource is in the tree, gives back none or list of resources"""
           if hasattr(self,"_v_checkResource") and self._v_checkResource.has_key(id): #existiert ein cache und id ist bereits drin?
                   return self._v_checkResource[id]
   
           else:
               resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],obj_ids=[id],search_sub=1)
   
               if not hasattr(self,"_v_checkResource"): self._v_checkResource={}#lege cache an falls nicht existent
               if resources:
                   self._v_checkResource[id]=resources[0:] # slicing to be sure that data is stabil
               else:
                   self._v_checkResource[id]=None
               
               return self._v_checkResource[id]
           
       def sendForm(self,fromaddr,content,server='mail.mpiwg-berlin.mpg.de'):
           """sendform"""
           toaddrs=["dwinter@mpiwg-berlin.mpg.de"]
           
           msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
              % (fromaddr, ", ".join(toaddrs),"testsub"))
           server = smtplib.SMTP(server)
           #server.set_debuglevel(1)
           msg=msg+content
           server.sendmail(fromaddr, toaddrs, msg)
           server.quit()
            
       def generateFromRDFForm(self):
           """change form"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/generateFromRDFForm').__of__(self)
           pt.content_type="text/html"
           return pt()
   
       def generateFromRDF(self,file,startNode="/Cuneiform Corpus"):
   
           """generate from RDF"""
   
           global seqs
           seqs={}
           global descrs
           descrs={}
           global key
           key=""
           global value
           value=""
   
           def getEdges(seqs,urn):
               """edges"""
               ret=[]
               return seqs[urn]
   
           def createSubs(self,seqs,descrs,urn,level=0):
               """create subs"""
               for edge in getEdges(seqs,urn):
                   cn=createNode(self,descrs,edge)
                   if cn[0]=="CDLI_group":
                       createSubs(cn[1],seqs,descrs,cn[2],level+1)
               return
   
           def start_element(name,attrs):
   
               global seqs
               global descrs
               global key
               global value
               seq=""
               if name=="RDF:Seq":
                   key=attrs.get('RDF:about')
                   try: # teste ob liste
                       x=seqs[key][0]
                   except:
   
                       seqs[key]=[]
   
               
               elif name=="RDF:Description":
                   key=attrs.get('RDF:about')
                   
   
               elif name=="RDF:li":
                   name=attrs.get('RDF:resource')
                   seqs[key].append(name)
   
               elif name=="ECHONAVIGATION:type":
                   value="type"
   
               elif name=="ECHONAVIGATION:name":
                   value="name"
               elif name=="ECHONAVIGATION:linkClickable":
                   value="linkClickable"
                   
           def end_element(name):
                   """nothing"""
                   key=""
                   value=""
   
           def char_data(data):
               """nothing"""
   
               data=re.sub("\n","",data)
               try:
                   if descrs[key].has_key(value):
                       descrs[key][value]+=data
                   else:
                       descrs[key][value]=data
               except:
   
                   descrs[key]={}
                   descrs[key][value]=data
                   
           p = xml.parsers.expat.ParserCreate()
           
           p.StartElementHandler = start_element
           p.EndElementHandler = end_element
           p.CharacterDataHandler = char_data
           
           
           p.ParseFile(file)
           self.REQUEST.RESPONSE.write("<html><body><h1>Start</h1>")
           createSubs(self,seqs,descrs,startNode)
           self.REQUEST.RESPONSE.write("<h1>done</h1></body></html>")
           #print "done"
   
           
           return "done"
       
           
   
           
       def changeWeightsInCollection(self):
           """change all lables of a collection"""
           ret=""
           argv=self.REQUEST.form
           
           resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink'])
           for resource in resources:
              
               try:
                   ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"
                               resource[1].weight=argv[resource[1].getId()][0:]
               except:
                   """not"""
           return ret
   
       def changeWeights(self):
           """change form"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/changeWeightForm').__of__(self)
           pt.content_type="text/html"
           return pt()
       getSubCols = ECHO_helpers.getSubCols
   
     manage_options=Folder.manage_options+(      manage_options=Folder.manage_options+(
         {'label':'Main Config','action':'ECHO_copyright_configForm'},          {'label':'Main Config','action':'ECHO_copyright_configForm'},
         {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},          {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
           {'label':'Change Weights','action':'changeWeights'},
           {'label':'Generate from RDF','action':'generateFromRDFForm'},
   
         )          )
   
           
Line 2741  class ECHO_root(Folder,Persistent,Implic Line 3309  class ECHO_root(Folder,Persistent,Implic
     def showContent(self,path):      def showContent(self,path):
         """return content/html"""          """return content/html"""
                   
         return urllib.urlopen(path+"/content_html").read()          return ECHO_helpers.urlopen(path+"/content_html").read()
           
     def getImageViewers(self):      def getImageViewers(self):
         """images"""          """images"""
Line 2960  class ECHO_root(Folder,Persistent,Implic Line 3528  class ECHO_root(Folder,Persistent,Implic
                                   
         return "changed all contenttypes in: "+self.title          return "changed all contenttypes in: "+self.title
   
       def deleteCache(self,obj=None,RESPONSE=None):
           """setze alle collections auf cache = CacheManager"""
   
       
           if not obj:
               obj = self
               
           entries=obj.ZopeFind(obj,search_sub=1)
   
           for entry in entries:
           if hasattr(entry[1],'_v_hash'):
               entry[1]._v_hash=None
               
   
   
           
           return "changed all CM in: "+self.title
   
   
       
     def ECHO_newViewerLink(self,obj=None):      def ECHO_newViewerLink(self,obj=None):
         """change links (:86 faellt weg)"""          """change links (:86 faellt weg)"""
   
Line 3026  class ECHO_root(Folder,Persistent,Implic Line 3614  class ECHO_root(Folder,Persistent,Implic
             for link in links:              for link in links:
                 link.tagName="a"                  link.tagName="a"
                 ref=link.getAttribute("ref")                  ref=link.getAttribute("ref")
           pn=link.getAttribute("page")
               
                 if self.checkRef(ref):                  if self.checkRef(ref):
               if pn:
                   link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn)
               else:
                     link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)                      link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
   
   
             newxml=dom.toxml('utf-8')              newxml=dom.toxml('utf-8')
         match=re.sub(r'<\?xml version=\"1.0\" encoding=\"utf-8\"\?>\n<txt>','',newxml)  
         match=re.sub(r'</txt>','',match)  
                   
         return match          retStr=regexpTXT.search(newxml)
   
           return retStr.group(1)
   
                                 
         return ""          return ""
   
     def xml2html(self,str,quote="yes"):      def xml2html(self,str,quote="yes"):
         """link2html fuer VLP muss hier noch raus"""          """link2html fuer VLP muss hier noch raus"""
   
         if str:          if str:
             if quote=="yes2":              if quote=="yes2":
                 str=re.sub("\&","&amp;",str)                  str=re.sub("\&","&amp;",str)
             dom=xml.dom.minidom.parseString(str)              #dom=xml.dom.minidom.parseString(str)
             links=dom.getElementsByTagName("link")          dom = NonvalidatingReader.parseString(str,"http://www.mpiwg-berlin.mpg.de/")
               #links=dom.getElementsByTagName("link")
               links=Ft.Xml.XPath.Evaluate(".//link", contextNode=dom)
               for link in links:
                   #link.tagName="a"
                           
                   ref=link.getAttributeNS(EMPTY_NAMESPACE,"ref")
           pn=link.getAttributeNS(EMPTY_NAMESPACE,"page")
   
             for link in links:          cns=link.childNodes[0:]
                 link.tagName="a"          
                 ref=link.getAttribute("ref")          newLink=dom.createElementNS(EMPTY_NAMESPACE,"a")
           for x in cns:
               newLink.appendChild(x)
           
               
           
           link.parentNode.replaceChild(newLink,link)
                 if self.checkRef(ref):                  if self.checkRef(ref):
                     link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)              if pn:
                   newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn)
               else:
                   newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
   
             return dom.toxml('utf-8')              #str= dom.toxml('utf-8')
           buf = cStringIO.StringIO()
           PrettyPrint(dom, stream=buf, encoding='UTF-8')
           str = buf.getvalue()
           buf.close()
           #str=PrettyPrint(dom.documentElement,encoding='UTF-8')
           #print link.toxml('utf-8')
           #print type(str)
           retStr=regexpPage.search(str)
           try: # hack warum fehtl manchmal page??
               return retStr.group(1)
           except:
               return str
         return ""          return ""
   
     def checkRef(self,ref):      def checkRef(self,ref):
         dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':''}          if ref[0:3]=='lit':
               if len(self.library_data({ 'id':ref}))>0:
                   return 1
           try:
               if ref[0:7]=="tec_cat":
                   return 1
           except:
               """nothing"""
               
           dbs={'vl_technology':'','vl_people':'','vl_sites':''}
         res=None          res=None
         for db in dbs.keys():          for db in dbs.keys():
   
             res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))              res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))
         return res          return res
                                                                           
Line 3089  class ECHO_root(Folder,Persistent,Implic Line 3720  class ECHO_root(Folder,Persistent,Implic
     <partners>"""      <partners>"""
                   
     for partner in partners:      for partner in partners:
             ret+="""<partner id="%s" title="%s"/>\n"""%(partner.getId(),unicode(partner.title,'utf-8','replace'))              ret+="""<partner id="%s" title="%s"/>\n"""%(partner.getId(),partner.title)
   
         return ret+"\n</partners>"          return ret+"\n</partners>"
           
Line 3196  class ECHO_root(Folder,Persistent,Implic Line 3827  class ECHO_root(Folder,Persistent,Implic
   
     def getMetaDatasXML(self,viewerType=None,filter=None):      def getMetaDatasXML(self,viewerType=None,filter=None):
         """gebe all ressourcen aus"""          """gebe all ressourcen aus"""
           # check if the request's host part was OK
           http_host = self.REQUEST['HTTP_HOST']
           host_port = self.REQUEST['SERVER_PORT']
           fix_host = None
           if http_host and http_host.rfind(host_port) == -1:
               print "HTTP_HOST needs fixing!"
               fix_host = http_host + ":" + host_port
   
         ret="""<?xml version="1.0" ?>          ret="""<?xml version="1.0" ?>
                  <index>"""                   <index>"""
         for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1):          for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1):
   
             echo_url=resource[1].absolute_url()              echo_url=resource[1].absolute_url()
               if fix_host:
                   #print "replacing ", http_host, " by ", fix_host
                   echo_url = string.replace(echo_url, http_host, fix_host, 1)
                           
             if hasattr(resource[1],'link'):              if hasattr(resource[1],'link'):
                 meta_url=echo_url+"/getMetaDataXML"                  meta_url=echo_url+"/getMetaDataXML"
Line 3219  class ECHO_root(Folder,Persistent,Implic Line 3861  class ECHO_root(Folder,Persistent,Implic
                                   
         ret +="""\n</index>"""          ret +="""\n</index>"""
                   
           
         self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml")          self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml")
         self.REQUEST.RESPONSE.write(ret)          self.REQUEST.RESPONSE.write(ret)
   

Removed from v.1.160  
changed lines
  Added in v.1.187


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