Annotation of OSAS/OSA_system/OSAS_addfiles.py, revision 1.43
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.40 dwinter 18: from Globals import package_home
1.21 dwinter 19:
20: from xml.sax import make_parser
21: from xml.sax.handler import ContentHandler
1.43 ! dwinter 22: import zLOG
1.21 dwinter 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+" "+" "
31: return tmp
32:
33:
1.1 dwinter 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"""
1.40 dwinter 53: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addDocument.zpt')).__of__(self)
1.1 dwinter 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"""
1.24 dwinter 66: return OSAS_add.add(self.standardMD,no_upload=1)
1.1 dwinter 67:
68:
69: security.declarePublic('add2')
70: def add2(self):
71: """ anlegen naechster schritt"""
1.24 dwinter 72: return OSAS_add.add2(self.standardMD)
1.1 dwinter 73:
74: def add3(self):
75: """Foldername"""
76: return OSAS_add.add3(self)
77:
78: def add4(self):
79: """Applet"""
1.41 dwinter 80:
1.1 dwinter 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:
1.27 dwinter 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']
1.41 dwinter 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():
1.36 dwinter 107:
108: #print str(self.metadata[tag]).decode('utf-8').encode('utf-8')
109: self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"
1.27 dwinter 110:
1.41 dwinter 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')
1.36 dwinter 114: #return renderxml
1.30 dwinter 115: metapath=self.REQUEST.SESSION['pathnew']+"/index.meta"
1.41 dwinter 116:
117: f=open(metapath,'w')
1.36 dwinter 118:
1.41 dwinter 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:
1.27 dwinter 124: return OSAS_add.addText2(self)
1.1 dwinter 125:
1.35 dwinter 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']
1.41 dwinter 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')
1.35 dwinter 147: metapath=self.REQUEST.SESSION['pathnew']+"/index.meta"
1.41 dwinter 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:
1.35 dwinter 156: return OSAS_add.addPdf2(self)
157:
1.1 dwinter 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"""
1.2 dwinter 164: return OSAS_add.addImages2(self)
165:
1.1 dwinter 166:
167: def manage_AddOSAS_add_DocumentForm(self):
168: """interface for adding the OSAS_add_Metadata"""
1.40 dwinter 169: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_document.zpt')).__of__(self)
1.1 dwinter 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:
1.2 dwinter 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"""
1.40 dwinter 202: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addText.zpt')).__of__(self)
1.2 dwinter 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:
1.35 dwinter 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:
1.2 dwinter 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)
1.35 dwinter 227:
1.2 dwinter 228: def manage_AddOSAS_add_TextForm(self):
229: """interface for adding the OSAS_add_Metadata"""
1.40 dwinter 230: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_text.zpt')).__of__(self)
1.2 dwinter 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)
1.3 dwinter 242:
1.21 dwinter 243:
1.3 dwinter 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:
1.38 dwinter 252: def XmlToTree(self,URL,pwstr=None):
1.21 dwinter 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
1.24 dwinter 263: begin=""
264: end=""
265: if self.depth==1:
266: begin="<b>"
267: end="</b>"
268:
1.32 dwinter 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"
1.21 dwinter 270:
271:
272:
273: def endElement(self,name):
274: if name=="element":
275: self.depth-=1
276:
1.38 dwinter 277: if pwstr=="":
278: pwstr=None
279:
1.23 dwinter 280: try:
1.38 dwinter 281: if pwstr:
282: URL+="/getCollectionTreeXML?pwstr=%s"%pwstr
283: else:
284: URL+="/getCollectionTreeXML"
1.23 dwinter 285: parser=make_parser()
286: curHandler=requestHandler()
287: parser.setContentHandler(curHandler)
288:
289: parser.parse(urllib.urlopen(URL))
290: return curHandler.retStr
1.37 dwinter 291:
1.23 dwinter 292: except:
1.41 dwinter 293: return URL
1.23 dwinter 294: return urllib.urlopen(URL).read()
1.41 dwinter 295:
1.32 dwinter 296:
1.3 dwinter 297: def __init__(self,id,collection):
298: self.id=id
299: self.collection=collection
300:
1.23 dwinter 301:
302:
303:
304: def getPartners(self,URL):
305: """Zeige Partnerliste"""
306: class requestHandler(ContentHandler):
307: def __init__(self):
308: self.ret=[]
1.5 dwinter 309:
1.23 dwinter 310: def startElement(self,name,attrs):
311: if name=="partner":
1.37 dwinter 312: self.ret.append((attrs.get('id'),attrs.get('title').encode('utf-8')))
1.23 dwinter 313:
314:
315: URL+="/getPartnersXML"
1.41 dwinter 316: parser=make_parser()
317: curHandler=requestHandler()
1.37 dwinter 318: parser.setContentHandler(curHandler)
1.41 dwinter 319: parser.parse(urllib.urlopen(URL))
320: try:
1.37 dwinter 321:
1.41 dwinter 322: return curHandler.ret
1.23 dwinter 323: except:
1.41 dwinter 324: return [("",URL)]
325:
1.21 dwinter 326:
1.5 dwinter 327: def addContextData(self,path):
1.32 dwinter 328: """Hinzufuegen zu einer Sammlung"""
1.42 dwinter 329:
330: server=getattr(self,'serverUrl',self.REQUEST['SERVER_URL'])
331:
1.6 dwinter 332: try:
1.42 dwinter 333: urllib.urlopen(server+"/"+path+"/index.meta")
1.9 dwinter 334:
1.6 dwinter 335: except:
1.43 ! dwinter 336: zLOG.LOG("OSAS_addfiles (addContextData)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
1.14 dwinter 337: return self.REQUEST['SERVER_URL']+path+"/index.meta file has to exist!"
1.3 dwinter 338:
1.10 dwinter 339: links=[(path,'standard storage')]
340:
1.32 dwinter 341: links+=OSAS_show.readContexts(path) # auslesen von contexten fuer den link
1.10 dwinter 342: #print "LINK",links
1.15 dwinter 343: #return links
1.9 dwinter 344: self.REQUEST.SESSION['links']=links
1.40 dwinter 345: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','contextDataMain.zpt')).__of__(self)
1.9 dwinter 346: return pt()
1.5 dwinter 347:
1.37 dwinter 348:
1.25 dwinter 349: def addContextData2(self,path,collection,link,label,description,content_type,responsible,weight,credits=None):
1.5 dwinter 350: """Hinzufuegen der Resource"""
351: splitted=path.split("/")
1.13 dwinter 352: #print "BLU"
1.5 dwinter 353: id=splitted[len(splitted)-1]
354: title=splitted[len(splitted)-1]
1.42 dwinter 355: server=getattr(self,'serverUrl',self.REQUEST['SERVER_URL'])
356:
357: metalink=server+"/"+path+"/index.meta"
1.13 dwinter 358:
1.9 dwinter 359: #link=TOBEDONE"
1.37 dwinter 360: """Hinzufuegen der Ressource"""
1.3 dwinter 361:
1.26 dwinter 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})
1.21 dwinter 363:
1.37 dwinter 364:
1.39 dwinter 365: try:
366: retStr=urllib.urlopen(collection+"/addResource",params).read()
367: except:
368: return "An Error occured adding the resource\n", collection,params
369:
1.41 dwinter 370: #print "added"
371: if not retStr:
1.37 dwinter 372: return "An Error occured adding the resource\n", collection,params
1.41 dwinter 373:
1.37 dwinter 374: #print collection+"/"+id+"/copyIndex_meta2echo_resource"
1.21 dwinter 375:
1.37 dwinter 376: urllib.urlopen(collection+"/"+id+"/copyIndex_meta2echo_resource").read()
1.41 dwinter 377: #print "copy2res"
1.37 dwinter 378: urllib.urlopen(collection+"/"+id+"/generate_label").read()
1.41 dwinter 379: #print "label"
1.37 dwinter 380: urllib.urlopen(collection+"/"+id+"/generate_title").read()
1.41 dwinter 381: #print "title"
1.5 dwinter 382: return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
383:
1.3 dwinter 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"""
1.40 dwinter 391: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_add_contextData.zpt')).__of__(self)
1.3 dwinter 392: return pt()
393:
394:
1.42 dwinter 395: def change_OSAS_add_contextData(self,collection,serverUrl,pwstr=None,RESPONSE=None):
1.3 dwinter 396: """Change"""
1.38 dwinter 397: self.pwstr=pwstr
1.3 dwinter 398: self.collection=collection
1.42 dwinter 399: self.serverUrl=serverUrl
1.3 dwinter 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"""
1.40 dwinter 405: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_contextData.zpt')).__of__(self)
1.3 dwinter 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)
1.2 dwinter 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"""
1.40 dwinter 437: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addPresentation.zpt')).__of__(self)
1.2 dwinter 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"""
1.40 dwinter 457: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_presentation.zpt')).__of__(self)
1.2 dwinter 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):
1.18 dwinter 471: """Hinzufüge der Combine Text und Image"""
1.2 dwinter 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:
1.15 dwinter 484:
1.2 dwinter 485:
486: security.declarePublic('combineTextImage_config')
487: def combineTextImage_config(self):
488: """Main configuration"""
1.40 dwinter 489: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_combineTextImage.zpt')).__of__(self)
1.2 dwinter 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"""
1.18 dwinter 502: """gibt input formular zur erstellung des texttools meta tag aus"""
1.41 dwinter 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=""
1.18 dwinter 528:
1.41 dwinter 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()
1.28 dwinter 543:
1.33 dwinter 544: def getViewerTemplateSets(self,obj_ids=None):
545: """Get the ViewerTemplateSet title for configuration"""
1.18 dwinter 546: ret=[]
1.33 dwinter 547: viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
548:
1.18 dwinter 549: try:
1.33 dwinter 550: viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
1.28 dwinter 551:
1.33 dwinter 552: for viewerTemplateSet in viewerTemplateSets:
553: ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1]))
1.28 dwinter 554:
1.18 dwinter 555: return ret
556:
557: except:
1.33 dwinter 558: return [('no ViewerTemplateSetfolders','')]
1.18 dwinter 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]
1.31 dwinter 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)
1.18 dwinter 574: except:
575: return default
1.31 dwinter 576:
1.2 dwinter 577:
578: def combineTextImage2(self,path):
579: """Eingabe von Metadateninformationen"""
1.41 dwinter 580:
581: # correct path
582: path=re.sub("//","/",path)
1.7 dwinter 583: OSAS_add.combineTextImage2(self,path) # Add images
584: splitted=path.split("/")
585: linkPath=splitted[len(splitted)-1]
1.28 dwinter 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:
1.7 dwinter 594: self.REQUEST.SESSION['linkViewerEnvironment']=linkViewerEnvironment
1.28 dwinter 595:
1.24 dwinter 596: writeToContext(path,linkViewerEnvironment,"ECHO standard environment",unique="yes")
1.7 dwinter 597:
1.40 dwinter 598: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_combineTextImageFinal.zpt')).__of__(self)
1.7 dwinter 599:
600: return pt()
601:
1.33 dwinter 602: def isSelectedViewerTemplateSet(self,obj,id):
1.18 dwinter 603: """is ausgewählt"""
604:
1.33 dwinter 605: if self.REQUEST['viewerTemplateSet']==id:
1.18 dwinter 606: return 1
607: else:
608: return None
1.7 dwinter 609:
1.24 dwinter 610: def writeToContext(path,link,description,unique="no"):
1.7 dwinter 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:
1.24 dwinter 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:
1.28 dwinter 622:
1.24 dwinter 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:
1.7 dwinter 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"
1.36 dwinter 643: writefile.write(dom.toxml(encoding="UTF-8"))
1.7 dwinter 644: writefile.close()
1.2 dwinter 645:
646: def manage_AddOSAS_combineTextImageForm(self):
647: """interface for adding the OSAS_add_Metadata"""
1.40 dwinter 648: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_combineTextImage.zpt')).__of__(self)
1.2 dwinter 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>