Annotation of OSAS/OSA_system/OSAS_addfiles.py, revision 1.46
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.44 dwinter 22: import sys
1.43 dwinter 23: import zLOG
1.21 dwinter 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+" "+" "
32: return tmp
33:
34:
1.1 dwinter 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"""
1.40 dwinter 54: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addDocument.zpt')).__of__(self)
1.1 dwinter 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"""
1.24 dwinter 67: return OSAS_add.add(self.standardMD,no_upload=1)
1.1 dwinter 68:
69:
70: security.declarePublic('add2')
71: def add2(self):
72: """ anlegen naechster schritt"""
1.24 dwinter 73: return OSAS_add.add2(self.standardMD)
1.1 dwinter 74:
75: def add3(self):
76: """Foldername"""
77: return OSAS_add.add3(self)
78:
79: def add4(self):
80: """Applet"""
1.41 dwinter 81:
1.1 dwinter 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:
1.27 dwinter 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']
1.41 dwinter 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():
1.36 dwinter 108:
109: #print str(self.metadata[tag]).decode('utf-8').encode('utf-8')
110: self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"
1.27 dwinter 111:
1.41 dwinter 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')
1.36 dwinter 115: #return renderxml
1.30 dwinter 116: metapath=self.REQUEST.SESSION['pathnew']+"/index.meta"
1.41 dwinter 117:
118: f=open(metapath,'w')
1.36 dwinter 119:
1.41 dwinter 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:
1.27 dwinter 125: return OSAS_add.addText2(self)
1.1 dwinter 126:
1.35 dwinter 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']
1.41 dwinter 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')
1.35 dwinter 148: metapath=self.REQUEST.SESSION['pathnew']+"/index.meta"
1.41 dwinter 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:
1.35 dwinter 157: return OSAS_add.addPdf2(self)
158:
1.1 dwinter 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"""
1.2 dwinter 165: return OSAS_add.addImages2(self)
166:
1.1 dwinter 167:
168: def manage_AddOSAS_add_DocumentForm(self):
169: """interface for adding the OSAS_add_Metadata"""
1.40 dwinter 170: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_document.zpt')).__of__(self)
1.1 dwinter 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:
1.2 dwinter 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"""
1.40 dwinter 203: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addText.zpt')).__of__(self)
1.2 dwinter 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:
1.35 dwinter 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:
1.2 dwinter 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)
1.35 dwinter 228:
1.2 dwinter 229: def manage_AddOSAS_add_TextForm(self):
230: """interface for adding the OSAS_add_Metadata"""
1.40 dwinter 231: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_text.zpt')).__of__(self)
1.2 dwinter 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)
1.3 dwinter 243:
1.21 dwinter 244:
1.3 dwinter 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:
1.38 dwinter 253: def XmlToTree(self,URL,pwstr=None):
1.21 dwinter 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
1.24 dwinter 264: begin=""
265: end=""
266: if self.depth==1:
267: begin="<b>"
268: end="</b>"
269:
1.32 dwinter 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"
1.21 dwinter 271:
272:
273:
274: def endElement(self,name):
275: if name=="element":
276: self.depth-=1
277:
1.38 dwinter 278: if pwstr=="":
279: pwstr=None
280:
1.23 dwinter 281: try:
1.38 dwinter 282: if pwstr:
283: URL+="/getCollectionTreeXML?pwstr=%s"%pwstr
284: else:
285: URL+="/getCollectionTreeXML"
1.23 dwinter 286: parser=make_parser()
287: curHandler=requestHandler()
288: parser.setContentHandler(curHandler)
289:
290: parser.parse(urllib.urlopen(URL))
291: return curHandler.retStr
1.37 dwinter 292:
1.23 dwinter 293: except:
1.41 dwinter 294: return URL
1.23 dwinter 295: return urllib.urlopen(URL).read()
1.41 dwinter 296:
1.32 dwinter 297:
1.3 dwinter 298: def __init__(self,id,collection):
299: self.id=id
300: self.collection=collection
301:
1.23 dwinter 302:
303:
304:
305: def getPartners(self,URL):
306: """Zeige Partnerliste"""
307: class requestHandler(ContentHandler):
308: def __init__(self):
309: self.ret=[]
1.5 dwinter 310:
1.23 dwinter 311: def startElement(self,name,attrs):
312: if name=="partner":
1.37 dwinter 313: self.ret.append((attrs.get('id'),attrs.get('title').encode('utf-8')))
1.23 dwinter 314:
315:
316: URL+="/getPartnersXML"
1.41 dwinter 317: parser=make_parser()
318: curHandler=requestHandler()
1.37 dwinter 319: parser.setContentHandler(curHandler)
1.41 dwinter 320: parser.parse(urllib.urlopen(URL))
321: try:
1.37 dwinter 322:
1.41 dwinter 323: return curHandler.ret
1.23 dwinter 324: except:
1.41 dwinter 325: return [("",URL)]
326:
1.21 dwinter 327:
1.5 dwinter 328: def addContextData(self,path):
1.32 dwinter 329: """Hinzufuegen zu einer Sammlung"""
1.42 dwinter 330:
331: server=getattr(self,'serverUrl',self.REQUEST['SERVER_URL'])
1.44 dwinter 332: if path[0]=="/": #strip leading slash
333: urlpath=path[1:]
334: else:
335: urlpath=path
1.6 dwinter 336: try:
1.44 dwinter 337: urllib.urlopen(server+"/"+urlpath+"/index.meta")
1.9 dwinter 338:
1.6 dwinter 339: except:
1.45 dwinter 340: zLOG.LOG("OSAS_addfiles (addContextData)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
1.44 dwinter 341: return server+"/"+urlpath+"/index.meta file has to exist!"
1.3 dwinter 342:
1.46 ! casties 343: links=[(path,'storage server view')]
! 344: # libcoll viewer with imagepath: needs pageimg directory
! 345: links+=[('http://libcoll.mpiwg-berlin.mpg.de/libview?mode=imagepath&url=%s/pageimg'%path,'libcoll standard viewer (pageimg)')]
! 346: # libcoll viewer with imagepath: needs pageimg directory
! 347: links+=[('http://libcoll.mpiwg-berlin.mpg.de/libview?mode=texttool&url=%s'%path,'libcoll standard viewer (texttool)')]
! 348:
1.32 dwinter 349: links+=OSAS_show.readContexts(path) # auslesen von contexten fuer den link
1.10 dwinter 350: #print "LINK",links
1.15 dwinter 351: #return links
1.9 dwinter 352: self.REQUEST.SESSION['links']=links
1.40 dwinter 353: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','contextDataMain.zpt')).__of__(self)
1.9 dwinter 354: return pt()
1.5 dwinter 355:
1.37 dwinter 356:
1.25 dwinter 357: def addContextData2(self,path,collection,link,label,description,content_type,responsible,weight,credits=None):
1.5 dwinter 358: """Hinzufuegen der Resource"""
359: splitted=path.split("/")
1.13 dwinter 360: #print "BLU"
1.5 dwinter 361: id=splitted[len(splitted)-1]
362: title=splitted[len(splitted)-1]
1.42 dwinter 363: server=getattr(self,'serverUrl',self.REQUEST['SERVER_URL'])
1.44 dwinter 364: if path[0]=="/": #strip leading slash
365: urlpath=path[1:]
366: else:
367: urlpath=path
368:
369:
370: metalink=server+"/"+urlpath+"/index.meta"
1.13 dwinter 371:
1.9 dwinter 372: #link=TOBEDONE"
1.37 dwinter 373: """Hinzufuegen der Ressource"""
1.3 dwinter 374:
1.26 dwinter 375: 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 376:
1.37 dwinter 377:
1.39 dwinter 378: try:
379: retStr=urllib.urlopen(collection+"/addResource",params).read()
380: except:
381: return "An Error occured adding the resource\n", collection,params
382:
1.41 dwinter 383: #print "added"
384: if not retStr:
1.37 dwinter 385: return "An Error occured adding the resource\n", collection,params
1.41 dwinter 386:
1.37 dwinter 387: #print collection+"/"+id+"/copyIndex_meta2echo_resource"
1.45 dwinter 388: #TODO: fehler falls generate label oder title nicht funktioniert abfangen, bei ECHO geht das z.B. manchmal nicht.
1.37 dwinter 389: urllib.urlopen(collection+"/"+id+"/copyIndex_meta2echo_resource").read()
1.41 dwinter 390: #print "copy2res"
1.44 dwinter 391: try:
392: urllib.urlopen(collection+"/"+id+"/generate_label").read()
393: except:
394: zLOG.LOG("OSAS_addfiles (addContextData2,label not generated)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
395: try:
396: urllib.urlopen(collection+"/"+id+"/generate_title").read()
397: except:
398: zLOG.LOG("OSAS_addfiles (addContextData2,title not generated)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
399:
400:
1.5 dwinter 401: return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
402:
1.3 dwinter 403: manage_options = Folder.manage_options+(
404: {'label':'Main Config','action':'add_contextData_config'},
405: )
406:
407:
408: def add_contextData_config(self):
409: """Main configuration"""
1.40 dwinter 410: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_add_contextData.zpt')).__of__(self)
1.3 dwinter 411: return pt()
412:
413:
1.42 dwinter 414: def change_OSAS_add_contextData(self,collection,serverUrl,pwstr=None,RESPONSE=None):
1.3 dwinter 415: """Change"""
1.38 dwinter 416: self.pwstr=pwstr
1.3 dwinter 417: self.collection=collection
1.42 dwinter 418: self.serverUrl=serverUrl
1.3 dwinter 419: if RESPONSE is not None:
420: RESPONSE.redirect('manage_main')
421:
422: def manage_AddOSAS_add_contextDataForm(self):
423: """interface for adding the OSAS_add_Metadata"""
1.40 dwinter 424: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_contextData.zpt')).__of__(self)
1.3 dwinter 425: return pt()
426:
427: def manage_AddOSAS_add_contextData(self,id,collection,RESPONSE=None):
428: """add the OSAS_root"""
429: newObj=OSAS_add_contextData(id,collection)
430: self.Destination()._setObject(id,newObj)
431: if RESPONSE is not None:
432: RESPONSE.redirect('manage_main')
433:
434:
435: InitializeClass(OSAS_add_contextData)
1.2 dwinter 436:
437: class OSAS_add_Presentation(Folder):
438: """Hinzufügen der Presentationsinformationen"""
439: security=ClassSecurityInfo()
440:
441: def __init__(self,id):
442: """initialize a new instance"""
443: self.id = id
444:
445:
446: meta_type='OSAS_add_Presentation'
447: manage_options = Folder.manage_options+(
448: {'label':'Main Config','action':'add_Presentation_config'},
449: )
450:
451:
452:
453: security.declarePublic('add_Presentation_config')
454: def add_Presentation_config(self):
455: """Main configuration"""
1.40 dwinter 456: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addPresentation.zpt')).__of__(self)
1.2 dwinter 457: return pt()
458:
459: security.declarePublic('change_OSAS_add_Presentation')
460: def change_OSAS_add_Presentation(self,RESPONSE=None):
461: """Change"""
462: # self.RootFolderName=RootFolderName
463: if RESPONSE is not None:
464: RESPONSE.redirect('manage_main')
465:
466: def addPresentation(self,path):
467: """Hinzufügen der Presenationsinformation"""
468: return OSAS_add.addPresentation(self,path)
469:
470: def addPresentation2(self):
471: """Eingabe von Metadateninformationen"""
472: return OSAS_add.addPresentation2(self)
473:
474: def manage_AddOSAS_add_PresentationForm(self):
475: """interface for adding the OSAS_add_Metadata"""
1.40 dwinter 476: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_presentation.zpt')).__of__(self)
1.2 dwinter 477: return pt()
478:
479: def manage_AddOSAS_add_Presentation(self,id,RESPONSE=None):
480: """add the OSAS_root"""
481: newObj=OSAS_add_Presentation(id)
482: self.Destination()._setObject(id,newObj)
483: if RESPONSE is not None:
484: RESPONSE.redirect('manage_main')
485:
486:
487: InitializeClass(OSAS_add_Presentation)
488:
489: class OSAS_combineTextImage(Folder):
1.18 dwinter 490: """Hinzufüge der Combine Text und Image"""
1.2 dwinter 491: security=ClassSecurityInfo()
492:
493: def __init__(self,id):
494: """initialize a new instance"""
495: self.id = id
496:
497:
498: meta_type='OSAS_combineTextImage'
499: manage_options = Folder.manage_options+(
500: {'label':'Main Config','action':'combineTextImage_config'},
501: )
502:
1.15 dwinter 503:
1.2 dwinter 504:
505: security.declarePublic('combineTextImage_config')
506: def combineTextImage_config(self):
507: """Main configuration"""
1.40 dwinter 508: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_combineTextImage.zpt')).__of__(self)
1.2 dwinter 509: return pt()
510:
511: security.declarePublic('change_OSAS_combineTextImage')
512: def change_OSAS_combineTextImage(self,RESPONSE=None):
513: """Change"""
514: # self.RootFolderName=RootFolderName
515: if RESPONSE is not None:
516: RESPONSE.redirect('manage_main')
517:
518: security.declarePublic('combineTextImage')
519: def combineTextImage(self,path):
520: """Hinzufügen der Presenationsinformation"""
1.18 dwinter 521: """gibt input formular zur erstellung des texttools meta tag aus"""
1.41 dwinter 522: files = os.listdir(path)
523:
524: texts=[]
525: imagefolders=[]
526: presentationfolders=[]
527:
528: splitted=path.split("/")
529: externxml=readArchimedesXML(splitted[len(splitted)-1])
530:
531: for filename in files:
532: #print "FN",filename
533: if archive.isdigilib2(path+"/"+filename):
534: imagefolders.append(filename)
535:
536: if archive.isFullText(path,filename):
537: #print "HI"
538: texts.append(filename)
539: if archive.isPresentation(path,filename):
540: presentationfolders.append(filename)
541:
542: dom=xml.dom.minidom.parse(path+"/index.meta")
543: try:
544: filelanguage=archive.getText(dom.getElementsByTagName('lang')[0].childNodes)
545: except:
546: filelanguage=""
1.18 dwinter 547:
1.41 dwinter 548: self.REQUEST.SESSION['isolist']=OSAS_add.getISO()
549:
550: tmp=self.REQUEST.SESSION['isolist'].keys()
551: tmp.sort()
552: self.REQUEST.SESSION['isolistsort']=tmp
553: self.REQUEST.SESSION['path']=path
554: self.REQUEST.SESSION['texts']=texts
555: self.REQUEST.SESSION['imagefolders']=imagefolders
556: self.REQUEST.SESSION['presentationfolders']=presentationfolders
557: self.REQUEST.SESSION['filelanguage']=filelanguage
558: self.REQUEST.SESSION['externxml']=externxml
559:
560: newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ImageandText')).__of__(self)
561: return newtemplate()
1.28 dwinter 562:
1.33 dwinter 563: def getViewerTemplateSets(self,obj_ids=None):
564: """Get the ViewerTemplateSet title for configuration"""
1.18 dwinter 565: ret=[]
1.33 dwinter 566: viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
567:
1.18 dwinter 568: try:
1.33 dwinter 569: viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
1.28 dwinter 570:
1.33 dwinter 571: for viewerTemplateSet in viewerTemplateSets:
572: ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1]))
1.28 dwinter 573:
1.18 dwinter 574: return ret
575:
576: except:
1.33 dwinter 577: return [('no ViewerTemplateSetfolders','')]
1.18 dwinter 578:
579: def getTextToolsField(self,path,name,default=''):
580: """Lese Textoolsfelder aus index.meta im path aus"""
581:
582: try:
583: dom=xml.dom.minidom.parse(path+"/index.meta")
584: node=dom.getElementsByTagName('texttool')[0] #getNode
585: subnode=node.getElementsByTagName(name)[0]
1.31 dwinter 586:
587: # bei text wird nur der Folder gebraucht
588: if name=="text":
589: splitted=getText(subnode.childNodes).split("/")
590: return splitted[len(splitted)-2]
591: else:
592: return getText(subnode.childNodes)
1.18 dwinter 593: except:
594: return default
1.31 dwinter 595:
1.2 dwinter 596:
597: def combineTextImage2(self,path):
598: """Eingabe von Metadateninformationen"""
1.41 dwinter 599:
600: # correct path
601: path=re.sub("//","/",path)
1.7 dwinter 602: OSAS_add.combineTextImage2(self,path) # Add images
603: splitted=path.split("/")
604: linkPath=splitted[len(splitted)-1]
1.28 dwinter 605: linkViewerEnvironmentImages="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir=%s&step=thumb" % linkPath
606: linkViewerEnvironmentOnlyText="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir=%s&step=textonly" % linkPath
607:
608: if self.REQUEST.has_key('image'): # bilder vorhanden
609: linkViewerEnvironment=linkViewerEnvironmentImages
610: else:
611: linkViewerEnvironment=linkViewerEnvironmentOnlyText
612:
1.7 dwinter 613: self.REQUEST.SESSION['linkViewerEnvironment']=linkViewerEnvironment
1.28 dwinter 614:
1.24 dwinter 615: writeToContext(path,linkViewerEnvironment,"ECHO standard environment",unique="yes")
1.7 dwinter 616:
1.40 dwinter 617: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_combineTextImageFinal.zpt')).__of__(self)
1.7 dwinter 618:
619: return pt()
620:
1.33 dwinter 621: def isSelectedViewerTemplateSet(self,obj,id):
1.18 dwinter 622: """is ausgewählt"""
623:
1.33 dwinter 624: if self.REQUEST['viewerTemplateSet']==id:
1.18 dwinter 625: return 1
626: else:
627: return None
1.7 dwinter 628:
1.24 dwinter 629: def writeToContext(path,link,description,unique="no"):
1.7 dwinter 630: """Created an additional entry to the index.meta file of path"""
631: dom=xml.dom.minidom.parse(path+"/index.meta")
632: node=dom.getElementsByTagName('resource')[0]
633:
1.24 dwinter 634: if unique=="yes":
635:
636: contexts=node.getElementsByTagName('context')
637: for context in contexts:
638: nameTag=getText(context.getElementsByTagName('name')[0].childNodes)
639: linkTag=getText(context.getElementsByTagName('link')[0].childNodes)
640:
1.28 dwinter 641:
1.24 dwinter 642: linkTag=re.sub("\:86","",linkTag) # alter port 86 gleich ohne port nummer (hack)
643: if (nameTag==description) and (linkTag==link):
644: node.removeChild(context).unlink()
645:
1.7 dwinter 646: subnode=dom.createElement('context')
647:
648: linknode=dom.createElement('link')
649: namelinknode=dom.createTextNode(link)
650: linknode.appendChild(namelinknode)
651: subnode.appendChild(linknode)
652:
653: linknode=dom.createElement('name')
654: namelinknode=dom.createTextNode(description)
655: linknode.appendChild(namelinknode)
656: subnode.appendChild(linknode)
657:
658: node.appendChild(subnode)
659:
660: writefile=file(path+"/index.meta","w")
661: #print path+"/index.meta"
1.36 dwinter 662: writefile.write(dom.toxml(encoding="UTF-8"))
1.7 dwinter 663: writefile.close()
1.2 dwinter 664:
665: def manage_AddOSAS_combineTextImageForm(self):
666: """interface for adding the OSAS_add_Metadata"""
1.40 dwinter 667: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_combineTextImage.zpt')).__of__(self)
1.2 dwinter 668: return pt()
669:
670: def manage_AddOSAS_combineTextImage(self,id,RESPONSE=None):
671: """add the OSAS_root"""
672: newObj=OSAS_combineTextImage(id)
673: self.Destination()._setObject(id,newObj)
674: if RESPONSE is not None:
675: RESPONSE.redirect('manage_main')
676:
677:
678: InitializeClass(OSAS_combineTextImage)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>