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