File:  [Repository] / OSAS / OSA_system / OSAS_addfiles.py
Revision 1.49: download - view: text, annotated - select for diffs - revision graph
Wed Jun 14 16:33:42 2006 UTC (18 years ago) by casties
Branches: MAIN
CVS tags: HEAD
*** empty log message ***

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

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