File:  [Repository] / OSAS / OSA_system / OSAS_addfiles.py
Revision 1.43: download - view: text, annotated - select for diffs - revision graph
Tue Feb 14 16:25:22 2006 UTC (18 years, 4 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
minor

    1: # Methoden und Classen zum Hinzufuegen von Dokumenten
    2: 
    3: 
    4: from OSAS_helpers import readArchimedesXML, getText
    5: import os
    6: import xml.dom.minidom
    7: import re
    8: import urllib
    9: import OSAS_add
   10: import OSAS_show
   11: import string
   12: from OFS.Folder import Folder
   13: from AccessControl import ClassSecurityInfo
   14: from Globals import InitializeClass
   15: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   16: from Products.PageTemplates.PageTemplate import PageTemplate
   17: import archive # check if this is necessary
   18: from Globals import package_home
   19: 
   20: from xml.sax import make_parser
   21: from xml.sax.handler import ContentHandler
   22: import zLOG
   23: 
   24: def spaces(depth):
   25:     """needed in XMLtoTree"""
   26:     tmp=""
   27:     k=0
   28:     while k<2*depth:
   29:         k+=1
   30:         tmp=tmp+"&nbsp;"+"&nbsp;"
   31:     return tmp
   32: 
   33: 
   34: class OSAS_add_Document(Folder):
   35:     """Hinzufuegen eines Dokumentes zum Storage"""
   36:     security=ClassSecurityInfo()
   37: 
   38:     def __init__(self,id):
   39:         """initialize a new instance"""
   40:         self.id = id
   41:         
   42:         
   43:     meta_type='OSAS_add_Document'    
   44:     manage_options = Folder.manage_options+(
   45:             {'label':'Main Config','action':'add_Document_config'},
   46:             )
   47:         
   48:      
   49:         
   50:     security.declarePublic('add_Document_config')
   51:     def add_Document_config(self):
   52:         """Main configuration"""
   53:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addDocument.zpt')).__of__(self)
   54:         return pt()
   55:     
   56:     security.declarePublic('change_OSAS_add_Document')
   57:     def change_OSAS_add_Document(self,RESPONSE=None):
   58:         """Change"""
   59: #        self.RootFolderName=RootFolderName
   60:         if RESPONSE is not None:
   61:             RESPONSE.redirect('manage_main')
   62: 
   63:     security.declarePublic('index_html')
   64:     def index_html(self):
   65:         """stantard aufruf"""
   66:         return OSAS_add.add(self.standardMD,no_upload=1)
   67: 
   68: 
   69:     security.declarePublic('add2')
   70:     def add2(self):
   71:         """ anlegen naechster schritt"""
   72:         return OSAS_add.add2(self.standardMD)
   73: 
   74:     def add3(self):
   75:         """Foldername"""
   76:         return OSAS_add.add3(self)
   77: 
   78:     def add4(self):
   79:         """Applet"""
   80:         
   81:         return OSAS_add.add4(self)
   82: 
   83:     def add5(self):
   84:         """Foldername"""
   85:         return OSAS_add.add5(self)
   86: 
   87:     def add6(self):
   88:         """write new index.meta file"""
   89:         return OSAS_add.add6(self)
   90: 
   91:     def addText2(self):
   92:         """add only a text"""
   93:         metadata=OSAS_add.parse_query_string(self.REQUEST['QUERY_STRING'])
   94:         metadata['archive-creation-date']=OSAS_add.date(self)
   95:         metadata['creator']=self.REQUEST['creator']
   96:         metadata['description']=self.REQUEST['content_description']
   97:         metadata['archive-path']=os.path.split(self.REQUEST.SESSION['pathnew'])[0]
   98:         #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
   99:         metadata['folder_name']=os.path.split(self.REQUEST.SESSION['pathnew'])[1]
  100:         metadata['content-type']="fulltext document"
  101:         self.reftype=self.REQUEST.SESSION['reftype']
  102:         self.REQUEST.SESSION['add_metadata']=metadata   
  103:         self.add_metadata=metadata
  104:         self.metadata=self.REQUEST.SESSION['metadata']
  105:         self.metadataprint=""
  106:         for tag in self.metadata.keys():
  107:             
  108:             #print str(self.metadata[tag]).decode('utf-8').encode('utf-8')
  109:             self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"
  110: 
  111:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index_meta')).__of__(self)
  112:         newtemplate.content_type="text/plain"
  113:         renderxml = newtemplate(encoding='utf-8')
  114:         #return renderxml
  115:         metapath=self.REQUEST.SESSION['pathnew']+"/index.meta"
  116:         
  117:         f=open(metapath,'w')
  118: 
  119:         f.write(renderxml)
  120:         f.close()
  121:         os.chmod(metapath,0664)
  122:         os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']) 
  123:         
  124:         return OSAS_add.addText2(self)
  125: 
  126:     def addPdf2(self):
  127:         """add only a pdf"""
  128:         metadata=OSAS_add.parse_query_string(self.REQUEST['QUERY_STRING'])
  129:         metadata['archive-creation-date']=OSAS_add.date(self)
  130:         metadata['creator']=self.REQUEST['creator']
  131:         metadata['description']=self.REQUEST['content_description']
  132:         metadata['archive-path']=os.path.split(self.REQUEST.SESSION['pathnew'])[0]
  133:         #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
  134:         metadata['folder_name']=os.path.split(self.REQUEST.SESSION['pathnew'])[1]
  135:         metadata['content-type']="fulltext document"
  136:         self.reftype=self.REQUEST.SESSION['reftype']
  137:         self.REQUEST.SESSION['add_metadata']=metadata   
  138:         self.add_metadata=metadata
  139:         self.metadata=self.REQUEST.SESSION['metadata']
  140:         self.metadataprint=""
  141:         for tag in self.metadata.keys():
  142:                 self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"
  143: 
  144:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index_meta')).__of__(self)
  145:         newtemplate.content_type="text/plain"
  146:         renderxml = newtemplate(encoding='utf-8')
  147:         metapath=self.REQUEST.SESSION['pathnew']+"/index.meta"
  148:         
  149:         
  150:         f=open(metapath,'w')
  151:         f.write(renderxml)
  152:         f.close()
  153:         os.chmod(metapath,0664)
  154:         os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']) 
  155:         
  156:         return OSAS_add.addPdf2(self)
  157: 
  158:     def addImages(self,path):
  159:         """Hinzufügen eines neuen Imagesfolders"""
  160:         return OSAS_add.addImages(self,path)
  161: 
  162:     def addImages2(self):
  163:         """Upload des neuen Imagefolders"""
  164:         return OSAS_add.addImages2(self)
  165: 
  166:     
  167: def manage_AddOSAS_add_DocumentForm(self):
  168:     """interface for adding the OSAS_add_Metadata"""
  169:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_document.zpt')).__of__(self)
  170:     return pt()
  171: 
  172: def manage_AddOSAS_add_Document(self,id,RESPONSE=None):
  173:     """add the OSAS_root"""
  174:     newObj=OSAS_add_Document(id)
  175:     self.Destination()._setObject(id,newObj)
  176:     if RESPONSE is not None:
  177:         RESPONSE.redirect('manage_main')
  178: 
  179:             
  180: InitializeClass(OSAS_add_Document)
  181: 
  182: 
  183: class OSAS_add_Text(Folder):
  184:     """Hinzufuegen eines Text-Dokumentes zum Storage"""
  185:     security=ClassSecurityInfo()
  186: 
  187:     def __init__(self,id):
  188:         """initialize a new instance"""
  189:         self.id = id
  190:         
  191:         
  192:     meta_type='OSAS_add_Text'    
  193:     manage_options = Folder.manage_options+(
  194:             {'label':'Main Config','action':'add_Text_config'},
  195:             )
  196:         
  197:      
  198:         
  199:     security.declarePublic('add_Text_config')
  200:     def add_Text_config(self):
  201:         """Main configuration"""
  202:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addText.zpt')).__of__(self)
  203:         return pt()
  204:     
  205:     security.declarePublic('change_OSAS_add_Text')
  206:     def change_OSAS_add_Text(self,RESPONSE=None):
  207:         """Change"""
  208: #        self.RootFolderName=RootFolderName
  209:         if RESPONSE is not None:
  210:             RESPONSE.redirect('manage_main')
  211: 
  212:     def addPdf(self,path):
  213:         """Add a pdf"""
  214:         return OSAS_add.addPdf(self,path)
  215: 
  216:     def addPdf2(self):
  217:         """Read the file and store it"""
  218:         return OSAS_add.addPdf2(self)
  219:     
  220:     def addText(self,path):
  221:         """Add a fulltext"""
  222:         return OSAS_add.addText(self,path)
  223: 
  224:     def addText2(self):
  225:         """Read the file and store it"""
  226:         return OSAS_add.addText2(self)
  227:     
  228: def manage_AddOSAS_add_TextForm(self):
  229:     """interface for adding the OSAS_add_Metadata"""
  230:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_text.zpt')).__of__(self)
  231:     return pt()
  232: 
  233: def manage_AddOSAS_add_Text(self,id,RESPONSE=None):
  234:     """add the OSAS_root"""
  235:     newObj=OSAS_add_Text(id)
  236:     self.Destination()._setObject(id,newObj)
  237:     if RESPONSE is not None:
  238:         RESPONSE.redirect('manage_main')
  239: 
  240:             
  241: InitializeClass(OSAS_add_Text)
  242: 
  243: 
  244: class OSAS_add_contextData(Folder):
  245:     """Einfuegen eines Documentes in eine Collection"""
  246:     
  247:     security=ClassSecurityInfo()
  248: 
  249:             
  250:     meta_type='OSAS_add_contextData'    
  251: 
  252:     def XmlToTree(self,URL,pwstr=None):
  253:         """Collection XML to Tree"""
  254:         
  255:         class requestHandler(ContentHandler):
  256:             def __init__(self):
  257:                 self.depth=0
  258:                 self.retStr=""
  259:                 
  260:             def startElement(self,name,attrs):
  261:                 if name=="element":
  262:                     self.depth+=1
  263:                     begin=""
  264:                     end=""
  265:                     if self.depth==1:
  266:                         begin="<b>"
  267:                         end="</b>"
  268:                         
  269:                     self.retStr+=spaces(self.depth)+"<input type='radio' name='collection' value='%s'>%s</input>"%(attrs.get('url'),begin+urllib.unquote(attrs.get('name'))+end)+"<br>\n"
  270: 
  271: 
  272:                     
  273:             def endElement(self,name):
  274:                 if name=="element":
  275:                     self.depth-=1
  276: 
  277:         if pwstr=="":
  278:             pwstr=None
  279:             
  280:         try:
  281:             if pwstr:
  282:                 URL+="/getCollectionTreeXML?pwstr=%s"%pwstr    
  283:             else:
  284:                 URL+="/getCollectionTreeXML"
  285:             parser=make_parser()
  286:             curHandler=requestHandler()
  287:             parser.setContentHandler(curHandler)
  288: 
  289:             parser.parse(urllib.urlopen(URL))
  290:             return curHandler.retStr
  291: 
  292:         except:
  293:             return URL
  294:             return urllib.urlopen(URL).read()
  295:             
  296:       
  297:     def __init__(self,id,collection):
  298:         self.id=id
  299:         self.collection=collection
  300: 
  301:   
  302:    
  303: 
  304:     def getPartners(self,URL):
  305:         """Zeige Partnerliste"""
  306:         class requestHandler(ContentHandler):
  307:             def __init__(self):
  308:                 self.ret=[]
  309:                 
  310:             def startElement(self,name,attrs):
  311:                 if name=="partner":
  312:                     self.ret.append((attrs.get('id'),attrs.get('title').encode('utf-8')))
  313: 
  314: 
  315:         URL+="/getPartnersXML"
  316:         parser=make_parser()    
  317:         curHandler=requestHandler()
  318:         parser.setContentHandler(curHandler)
  319:         parser.parse(urllib.urlopen(URL))               
  320:         try:    
  321:                   
  322:                 return curHandler.ret
  323:         except:
  324:                 return [("",URL)]
  325:             
  326:     
  327:     def addContextData(self,path):
  328:         """Hinzufuegen zu einer Sammlung"""
  329:         
  330:         server=getattr(self,'serverUrl',self.REQUEST['SERVER_URL'])
  331:         
  332:         try:
  333:             urllib.urlopen(server+"/"+path+"/index.meta")
  334:             
  335:         except:
  336: 	    zLOG.LOG("OSAS_addfiles (addContextData)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
  337:             return self.REQUEST['SERVER_URL']+path+"/index.meta file has to exist!"
  338: 
  339:         links=[(path,'standard storage')]
  340:         
  341:         links+=OSAS_show.readContexts(path) # auslesen von contexten fuer den link
  342:         #print "LINK",links
  343:         #return links
  344:         self.REQUEST.SESSION['links']=links
  345:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','contextDataMain.zpt')).__of__(self)
  346:         return pt()
  347:     
  348:    
  349:     def addContextData2(self,path,collection,link,label,description,content_type,responsible,weight,credits=None):
  350:         """Hinzufuegen der Resource"""
  351:         splitted=path.split("/")
  352:         #print "BLU"
  353:         id=splitted[len(splitted)-1]
  354:         title=splitted[len(splitted)-1]
  355:         server=getattr(self,'serverUrl',self.REQUEST['SERVER_URL'])
  356:         
  357:         metalink=server+"/"+path+"/index.meta"
  358:         
  359:         #link=TOBEDONE"
  360:         """Hinzufuegen der Ressource"""
  361: 
  362:         params=urllib.urlencode({'id':id,'title':title,'link':link,'label':label,'description':description,'contentType':content_type,'responsible':responsible,'weight':weight,'credits':credits,'metalink':metalink})
  363: 
  364: 
  365:         try:
  366:             retStr=urllib.urlopen(collection+"/addResource",params).read()
  367:         except:
  368:             return "An Error occured adding the resource\n", collection,params
  369:         
  370:         #print "added"
  371:         if not retStr:
  372:             return "An Error occured adding the resource\n", collection,params
  373:         
  374:         #print collection+"/"+id+"/copyIndex_meta2echo_resource"
  375: 
  376:         urllib.urlopen(collection+"/"+id+"/copyIndex_meta2echo_resource").read()
  377:         #print "copy2res"
  378:         urllib.urlopen(collection+"/"+id+"/generate_label").read()
  379:         #print "label"
  380:         urllib.urlopen(collection+"/"+id+"/generate_title").read()
  381:         #print "title"
  382:         return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
  383:         
  384:     manage_options = Folder.manage_options+(
  385:             {'label':'Main Config','action':'add_contextData_config'},
  386:             )
  387:         
  388:      
  389:     def add_contextData_config(self):
  390:         """Main configuration"""
  391:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_add_contextData.zpt')).__of__(self)
  392:         return pt()
  393:     
  394:     
  395:     def change_OSAS_add_contextData(self,collection,serverUrl,pwstr=None,RESPONSE=None):
  396:         """Change"""
  397:         self.pwstr=pwstr
  398:         self.collection=collection
  399:         self.serverUrl=serverUrl
  400:         if RESPONSE is not None:
  401:             RESPONSE.redirect('manage_main')
  402:             
  403: def manage_AddOSAS_add_contextDataForm(self):
  404:     """interface for adding the OSAS_add_Metadata"""
  405:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_contextData.zpt')).__of__(self)
  406:     return pt()
  407: 
  408: def manage_AddOSAS_add_contextData(self,id,collection,RESPONSE=None):
  409:     """add the OSAS_root"""
  410:     newObj=OSAS_add_contextData(id,collection)
  411:     self.Destination()._setObject(id,newObj)
  412:     if RESPONSE is not None:
  413:         RESPONSE.redirect('manage_main')
  414: 
  415:             
  416: InitializeClass(OSAS_add_contextData)
  417: 
  418: class OSAS_add_Presentation(Folder):
  419:     """Hinzufügen der Presentationsinformationen"""
  420:     security=ClassSecurityInfo()
  421: 
  422:     def __init__(self,id):
  423:         """initialize a new instance"""
  424:         self.id = id
  425:         
  426:         
  427:     meta_type='OSAS_add_Presentation'    
  428:     manage_options = Folder.manage_options+(
  429:             {'label':'Main Config','action':'add_Presentation_config'},
  430:             )
  431:         
  432:      
  433:         
  434:     security.declarePublic('add_Presentation_config')
  435:     def add_Presentation_config(self):
  436:         """Main configuration"""
  437:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addPresentation.zpt')).__of__(self)
  438:         return pt()
  439:     
  440:     security.declarePublic('change_OSAS_add_Presentation')
  441:     def change_OSAS_add_Presentation(self,RESPONSE=None):
  442:         """Change"""
  443: #        self.RootFolderName=RootFolderName
  444:         if RESPONSE is not None:
  445:             RESPONSE.redirect('manage_main')
  446: 
  447:     def addPresentation(self,path):
  448:         """Hinzufügen der Presenationsinformation"""
  449:         return OSAS_add.addPresentation(self,path)
  450: 
  451:     def addPresentation2(self):
  452:         """Eingabe von Metadateninformationen"""
  453:         return OSAS_add.addPresentation2(self)
  454:     
  455: def manage_AddOSAS_add_PresentationForm(self):
  456:     """interface for adding the OSAS_add_Metadata"""
  457:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_presentation.zpt')).__of__(self)
  458:     return pt()
  459: 
  460: def manage_AddOSAS_add_Presentation(self,id,RESPONSE=None):
  461:     """add the OSAS_root"""
  462:     newObj=OSAS_add_Presentation(id)
  463:     self.Destination()._setObject(id,newObj)
  464:     if RESPONSE is not None:
  465:         RESPONSE.redirect('manage_main')
  466: 
  467:             
  468: InitializeClass(OSAS_add_Presentation)
  469: 
  470: class OSAS_combineTextImage(Folder):
  471:     """Hinzufüge der Combine Text und Image"""
  472:     security=ClassSecurityInfo()
  473: 
  474:     def __init__(self,id):
  475:         """initialize a new instance"""
  476:         self.id = id
  477:         
  478:         
  479:     meta_type='OSAS_combineTextImage'    
  480:     manage_options = Folder.manage_options+(
  481:             {'label':'Main Config','action':'combineTextImage_config'},
  482:             )
  483:         
  484: 
  485:         
  486:     security.declarePublic('combineTextImage_config')
  487:     def combineTextImage_config(self):
  488:         """Main configuration"""
  489:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_combineTextImage.zpt')).__of__(self)
  490:         return pt()
  491:     
  492:     security.declarePublic('change_OSAS_combineTextImage')
  493:     def change_OSAS_combineTextImage(self,RESPONSE=None):
  494:         """Change"""
  495: #        self.RootFolderName=RootFolderName
  496:         if RESPONSE is not None:
  497:             RESPONSE.redirect('manage_main')
  498:             
  499:     security.declarePublic('combineTextImage')
  500:     def combineTextImage(self,path):
  501:         """Hinzufügen der Presenationsinformation"""
  502:         """gibt input formular zur erstellung des texttools meta tag aus"""
  503:         files = os.listdir(path)
  504:         
  505:         texts=[]
  506:         imagefolders=[]
  507:         presentationfolders=[]
  508: 
  509:         splitted=path.split("/")
  510:         externxml=readArchimedesXML(splitted[len(splitted)-1])
  511:         
  512:         for filename in files:
  513:                 #print "FN",filename
  514:                 if archive.isdigilib2(path+"/"+filename):
  515:                         imagefolders.append(filename)
  516:                         
  517:                 if archive.isFullText(path,filename):
  518:                         #print "HI"
  519:                         texts.append(filename)
  520:                 if archive.isPresentation(path,filename):
  521:                         presentationfolders.append(filename)
  522:         
  523:         dom=xml.dom.minidom.parse(path+"/index.meta")
  524:         try:
  525:                 filelanguage=archive.getText(dom.getElementsByTagName('lang')[0].childNodes)
  526:         except:
  527:                 filelanguage=""
  528:                 
  529:         self.REQUEST.SESSION['isolist']=OSAS_add.getISO()
  530:         
  531:         tmp=self.REQUEST.SESSION['isolist'].keys()
  532:         tmp.sort()
  533:         self.REQUEST.SESSION['isolistsort']=tmp
  534:         self.REQUEST.SESSION['path']=path
  535:         self.REQUEST.SESSION['texts']=texts
  536:         self.REQUEST.SESSION['imagefolders']=imagefolders
  537:         self.REQUEST.SESSION['presentationfolders']=presentationfolders
  538:         self.REQUEST.SESSION['filelanguage']=filelanguage
  539:         self.REQUEST.SESSION['externxml']=externxml
  540: 
  541:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ImageandText')).__of__(self)
  542:         return newtemplate()
  543:         
  544:     def getViewerTemplateSets(self,obj_ids=None):
  545:         """Get the ViewerTemplateSet title for configuration"""
  546:         ret=[]
  547:         viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
  548: 
  549:         try:
  550:             viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
  551:             
  552:             for viewerTemplateSet in viewerTemplateSets:
  553:                 ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1]))
  554:             
  555:             return ret
  556:         
  557:         except:
  558:             return [('no ViewerTemplateSetfolders','')]
  559: 
  560:     def getTextToolsField(self,path,name,default=''):
  561:         """Lese Textoolsfelder aus index.meta im path aus"""
  562:         
  563:         try:
  564:             dom=xml.dom.minidom.parse(path+"/index.meta")
  565:             node=dom.getElementsByTagName('texttool')[0] #getNode
  566:             subnode=node.getElementsByTagName(name)[0]
  567: 
  568:             # bei text wird nur der Folder gebraucht
  569:             if name=="text":
  570:                 splitted=getText(subnode.childNodes).split("/")
  571:                 return splitted[len(splitted)-2]
  572:             else:
  573:                 return getText(subnode.childNodes)
  574:         except:
  575:             return default
  576:    
  577: 
  578:     def combineTextImage2(self,path):
  579:         """Eingabe von Metadateninformationen"""
  580:         
  581:         # correct path
  582:         path=re.sub("//","/",path)
  583:         OSAS_add.combineTextImage2(self,path) # Add images
  584:         splitted=path.split("/")
  585:         linkPath=splitted[len(splitted)-1]
  586:         linkViewerEnvironmentImages="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir=%s&step=thumb" % linkPath
  587:         linkViewerEnvironmentOnlyText="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir=%s&step=textonly" % linkPath
  588: 
  589:         if self.REQUEST.has_key('image'): # bilder vorhanden
  590:             linkViewerEnvironment=linkViewerEnvironmentImages
  591:         else:
  592:             linkViewerEnvironment=linkViewerEnvironmentOnlyText
  593:             
  594:         self.REQUEST.SESSION['linkViewerEnvironment']=linkViewerEnvironment
  595:         
  596:         writeToContext(path,linkViewerEnvironment,"ECHO standard environment",unique="yes")
  597:         
  598:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_combineTextImageFinal.zpt')).__of__(self)
  599: 
  600:         return pt()
  601: 
  602:     def isSelectedViewerTemplateSet(self,obj,id):
  603:         """is ausgewählt"""
  604:         
  605:         if self.REQUEST['viewerTemplateSet']==id:
  606:             return 1
  607:         else:
  608:             return None
  609: 
  610: def writeToContext(path,link,description,unique="no"):
  611:     """Created an additional entry to the index.meta file of path"""
  612:     dom=xml.dom.minidom.parse(path+"/index.meta")
  613:     node=dom.getElementsByTagName('resource')[0]
  614: 
  615:     if unique=="yes":
  616:         
  617:         contexts=node.getElementsByTagName('context')
  618:         for context in contexts:
  619:             nameTag=getText(context.getElementsByTagName('name')[0].childNodes)
  620:             linkTag=getText(context.getElementsByTagName('link')[0].childNodes)
  621:             
  622:             
  623:             linkTag=re.sub("\:86","",linkTag) # alter port 86 gleich ohne port nummer (hack)
  624:             if (nameTag==description) and (linkTag==link):
  625:                 node.removeChild(context).unlink()
  626:                     
  627:     subnode=dom.createElement('context')
  628: 
  629:     linknode=dom.createElement('link')
  630:     namelinknode=dom.createTextNode(link)
  631:     linknode.appendChild(namelinknode)
  632:     subnode.appendChild(linknode)
  633: 
  634:     linknode=dom.createElement('name')
  635:     namelinknode=dom.createTextNode(description)
  636:     linknode.appendChild(namelinknode)
  637:     subnode.appendChild(linknode)
  638: 
  639:     node.appendChild(subnode)
  640:     
  641:     writefile=file(path+"/index.meta","w")
  642:     #print path+"/index.meta"
  643:     writefile.write(dom.toxml(encoding="UTF-8"))
  644:     writefile.close()
  645: 
  646: def manage_AddOSAS_combineTextImageForm(self):
  647:     """interface for adding the OSAS_add_Metadata"""
  648:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_combineTextImage.zpt')).__of__(self)
  649:     return pt()
  650: 
  651: def manage_AddOSAS_combineTextImage(self,id,RESPONSE=None):
  652:     """add the OSAS_root"""
  653:     newObj=OSAS_combineTextImage(id)
  654:     self.Destination()._setObject(id,newObj)
  655:     if RESPONSE is not None:
  656:         RESPONSE.redirect('manage_main')
  657: 
  658:             
  659: InitializeClass(OSAS_combineTextImage)

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