Annotation of OSAS/OSA_system/OSAS_addfiles.py, revision 1.38

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

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