--- ECHO_content/ECHO_collection.py 2005/01/18 15:40:03 1.202 +++ ECHO_content/ECHO_collection.py 2005/06/22 20:09:38 1.227 @@ -39,6 +39,7 @@ from Globals import Persistent, package_ from Acquisition import Implicit import urllib +import cgi import smtplib import time from Ft.Xml.Domlette import NonvalidatingReader @@ -64,7 +65,7 @@ import xml.dom.minidom import ECHO_helpers from ECHO_helpers import * from ECHO_language import * - +from ECHO_movie import * #regexp for extracting elements from xml patternTXT=r"<\s*txt.*?>(.*?)" @@ -153,8 +154,7 @@ class ECHO_layoutTemplate(ZopePageTempla self.ZBindings_edit(self._default_bindings) if text is None: - self._default_content_fn = os.path.join(package_home(globals()), - 'zpt/ECHO_%s_template_standard.zpt'%EchoType) + self._default_content_fn = os.path.join(package_home(globals()),'zpt','ECHO_%s_template_standard.zpt'%EchoType) text = open(self._default_content_fn).read() self.pt_edit(text, content_type) @@ -212,10 +212,11 @@ class ECHO_fullText(ZopePageTemplate,ECH def getPage(self,nr='1'): """get page n""" - dom=xml.dom.minidom.parseString(self()) + #return self().encode('latin-1','ignore') + dom=xml.dom.minidom.parseString(self().encode('utf-8','ignore')) pages=dom.getElementsByTagName('page') - return pages[int(nr)-1].toxml('utf-8') + return pages[int(nr)-1].toxml() # Product registration and Add support manage_addECHO_fullTextForm = PageTemplateFile( @@ -262,9 +263,6 @@ class ECHO_resource(Folder,Persistent,EC getSubCols = ECHO_helpers.getSubCols - security.declareProtected('View','index_html') - - security.declareProtected('View','createPDF') def createPDF(self,RESPONSE=None,local=None,dpi=150): @@ -561,7 +559,7 @@ class ECHO_resource(Folder,Persistent,EC startpage=self.createImageUrl() params="startpage=%s"%startpage - print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params)) + #print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params)) ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read() @@ -655,7 +653,7 @@ class ECHO_resource(Folder,Persistent,EC - + security.declarePublic('content_html') def content_html(self): """template fuer content""" return ECHO_basis.content_html(self,'resource') @@ -968,7 +966,7 @@ class ECHO_resource(Folder,Persistent,EC def getMDValue(self,fieldName,empty=None): - if empty: + if not empty: return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) else: @@ -1065,7 +1063,8 @@ class ECHO_resource(Folder,Persistent,EC if ret == "": return None else: - return ret + + return ret except: return None @@ -1102,7 +1101,9 @@ class ECHO_resource(Folder,Persistent,EC retdata={} fields=[] fieldlist=self.standardMD.fieldList - + + tags=self.findTagsFromMapping(self.contentType) + self.referencetypes=tags[2] for referenceTypeF in self.referencetypes: if referenceTypeF[1].title.lower() == referenceType.lower(): @@ -1197,7 +1198,9 @@ class ECHO_resource(Folder,Persistent,EC if not error=="": #Fehler beim Auslesen des Metafiles return "ERROR:",error - + if not self.contentType: + self.contentType=metadict['bib_type'].lower() + if not (metadict['bib_type'].lower()==self.contentType.lower()): self.REQUEST.SESSION['contentStorage']=metadict['bib_type'] self.REQUEST.SESSION['contentZope']=self.contentType @@ -1235,6 +1238,7 @@ class ECHO_resource(Folder,Persistent,EC return None + security.declareProtected('View','index_html') def index_html(self): """standard page""" pdf=self.checkRDF(self.link) @@ -1302,8 +1306,8 @@ def manage_addECHO_resourceForm(self): -def manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,copyrightType=None,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None): - """addaresource""" +def manage_addECHO_resource(self,id,title,label,description="",responsible="",link="",metalink="",weight="",copyrightType=None,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None): + """addresource""" newObj=ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords) @@ -1318,7 +1322,7 @@ class ECHO_externalLink(Folder,ECHO_basi security=ClassSecurityInfo() meta_type='ECHO_externalLink' - + security.declarePublic('content_html') def content_html(self): """template fuer content""" return ECHO_basis.content_html(self,'externalLink') @@ -1364,6 +1368,7 @@ class ECHO_externalLink(Folder,ECHO_basi manage_options = Folder.manage_options+( {'label':'Main Config','action':'ECHO_externalLink_config'}, + {'label':'Graphic Coords','action':'ECHO_graphicEntry'}, ) @@ -1394,21 +1399,42 @@ class ECHO_link(ECHO_externalLink): meta_type="ECHO_link" - + def content_html(self): """template fuer link""" if hasattr(self,"link_template"): return ECHO_basis.content_html(self,'link') else: return ECHO_basis.content_html(self,'collection') - + + def index_html(self): + """standard link""" + + splitted=self.link.split("?") + if len(splitted)>1: + params=cgi.parse_qs(splitted[1]) + + for x in params.keys(): + if type(params[x]) is ListType: + params[x]=params[x][0] + + + else: + params={} + + params['backLink']=self.aq_parent.absolute_url() + + self.REQUEST.SESSION['_ECHOLink']=splitted[0]+"?"+urllib.urlencode(params) + + return self.REQUEST.RESPONSE.redirect(splitted[0]+"?"+urllib.urlencode(params)) + def manage_addECHO_linkForm(self): """Form for external Links""" pt=zptFile(self, 'zpt/AddECHO_linkForm.zpt') return pt() -def manage_addECHO_link(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None): +def manage_addECHO_link(self,id,title,label,description="",contentType="",responsible="",link="",weight="",coords=[],credits=None,RESPONSE=None): """Add an external Link""" newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords) @@ -1526,7 +1552,7 @@ class ECHO_collection(Folder, Persistent ret="" argv=self.REQUEST.form - resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink']) + resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_movie','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink']) for resource in resources: try: @@ -1541,7 +1567,7 @@ class ECHO_collection(Folder, Persistent ret="" argv=self.REQUEST.form - resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) + resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_movie','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink']) for resource in resources: try: @@ -1550,7 +1576,22 @@ class ECHO_collection(Folder, Persistent except: pass return ret - + + def changeLabelsInCollection(self): + """change all lables of a collection""" + ret="" + argv=self.REQUEST.form + + resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_movie','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink']) + for resource in resources: + + try: + ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" + resource[1].label=argv[resource[1].getId()][0:] + except: + pass + return ret + def updateCollection(self,RESPONSE=None): """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner""" files=os.listdir(self.path) @@ -1762,7 +1803,8 @@ class ECHO_collection(Folder, Persistent ret+="

"+label+"

" manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","") return ret - + + security.declarePublic('getImageTag') def getImageTag(self): """GetTag""" try: @@ -1770,6 +1812,23 @@ class ECHO_collection(Folder, Persistent except: return "" + + def addMovie(self,id,title,label,description,contentType,responsible,link,thumbUrl,rawFile,lowresFile,metalink,weight,credits=None,coords=None,RESPONSE=None): + """SSS""" + print "we are here" + #manage_addECHO_movie(self,id,title,label,description,responsible,link,thumbUrl,rawFile,metalink,weight,credits=None,coords=None,RESPONSE=None) + if not hasattr(self,id): + try: + manage_addECHO_movie(self,id,title,label,description,responsible,link,thumbUrl,rawFile,lowresFile,metalink,weight,credits=None,coords=None,RESPONSE=None) + return "done" + except: + return None + else: + obj=getattr(self,id) + obj.changeECHO_movie_main(metalink,link,rawFile,lowresFile,thumbUrl,title,label,description,contentType,weight=weight) + + return "changed" + def addResource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None): """SSS""" try: @@ -1792,29 +1851,32 @@ class ECHO_collection(Folder, Persistent except: return "" - def getCollectionTreeXML(self): + def getCollectionTreeXML(self,pwstr=None): """Tree as XML""" - def addPassWd(str): + def addPassWd(str,pwstr=None): """adds a user/passwd to an url""" - txt2=re.sub(r"(http://)(.*?)","\g<1>www:3333@\g<2>",str) + if pwstr: + txt2=re.sub(r"(http://)(.*?)","\g<1>%s@\g<2>"%pwstr,str) + else: + txt2=re.sub(r"(http://)(.*?)","\g<1>www:3333@\g<2>",str) return txt2 - def getCollection(object,depth=0): + def getCollection(object,depth=0,pwstr=None): depth+=1 collections="" for entry in object.__dict__.keys(): element=getattr(object,entry) try: if element.meta_type in ["ECHO_collection","ECHO_group"]: - collections+="" + collections+="" collections+=getCollection(element,depth)+"\n" except: """nothing""" return collections ret="""""" - return ret+""+getCollection(self)+"" + return ret+""+getCollection(self,pwstr=pwstr)+"" def createAllJSAreas(self): """create area calls for JavaScript""" @@ -1863,7 +1925,7 @@ class ECHO_collection(Folder, Persistent return ECHO_rerenderLinksMD(self,obj,types) - def __init__(self,id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle,secondaryLink,imageTag="",bgcolour=""): + def __init__(self,id,title,label,description="",contentType="",responsible="",credits="",weight="",sortfield="",coords=[],secondaryLinkTitle="",secondaryLink="",imageTag="",bgcolour=""): self.id = id """Festlegen der ID""" @@ -1955,8 +2017,8 @@ class ECHO_collection(Folder, Persistent pt=zptFile(self, 'zpt/ECHO_content_overview.zpt') return pt() + security.declareProtected('View','index_html') - def index_html(self): """standard page""" if self.ZCacheable_isCachingEnabled(): @@ -1974,7 +2036,8 @@ class ECHO_collection(Folder, Persistent elif hasattr(self,'collection_index_template'): ret=self.collection_index_template() elif hasattr(self,'main_index_template'): - ret=self.main_index_template() + + ret=self.main_index_template.__of__(self)(self.main_template) else: pt=zptFile(self, 'zpt/ECHO_main_index_template_standard.zpt') pt.content_type="text/html" @@ -1983,6 +2046,7 @@ class ECHO_collection(Folder, Persistent self.ZCacheable_set(ret) return ret + security.declarePublic('content_html') def content_html(self,**argv): """template fuer content""" #print "NN",argv @@ -2023,11 +2087,11 @@ class ECHO_collection(Folder, Persistent """javascript""" return sendFile(self, 'js/hl_add.js', 'text/plain') - def getAllMapAreas(self): + def getAllMapAreas(self,mapColTypes=['ECHO_collection','ECHO_resource','ECHO_link','ECHO_externalLink']): """Give list of coordinates""" - mapColTypes=['ECHO_collection','ECHO_resource'] + areas=[] - for entry in self.getSubCols(self,subColTypes=mapColTypes): + for entry in self.getSubCols(subColTypes=mapColTypes): object=entry areas.extend(object.getMapAreas()) return areas @@ -2054,7 +2118,7 @@ def manage_addECHO_collectionForm(self): return pt() -def manage_addECHO_collection(self,id,title,label,description,contentType,responsible,weight,sortfield,coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""): +def manage_addECHO_collection(self,id,title,label,description="",contentType="",responsible="",weight=0,sortfield="weight",coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""): """add a echo collection""" @@ -2162,6 +2226,7 @@ class ECHO_group(ECHO_collection): except: return "ECHO_groups" + security.declarePublic('content_html') def content_html(self): """template fuer content""" return ECHO_basis.content_html(self,'group') @@ -2343,13 +2408,29 @@ class ECHO_root(Folder,Persistent,Implic meta_type="ECHO_root" - # testing templates with macros... ROC -## content_overview_template2 = zptObjectOrFile(None, 'content_overview_template', orphaned=True) -## print "COT: ", content_overview_template2, repr(content_overview_template2) - -## def content_overview_template(self): -## content_overview_template2._cook_check() -## return content_overview_template2() + def printer(self,txt): + print txt + print txt[2] + print txt[2].getImageTag() + print "HO" + return txt[2].getImageTag() + + def printer2(self,txt): + print txt + + + def item2(self,txt): + return txt[2] + + def getContentOverviewTemplate(self): + """produces overview template with macro""" + pt = zptObjectOrFile(self, 'content_overview_template') + return pt + + def mapstyle_css(self): + """send mapstyle.css""" + sendFile(self, 'html/ECHO_mapstyle.css', 'text/css') + ###Cdli adds -> have to be removed def getTablet(self,item): @@ -2371,6 +2452,10 @@ class ECHO_root(Folder,Persistent,Implic def checkResource(self,id): """checks if a resource is in the tree, gives back none or list of resources""" + if not id: + id="" + splitted=id.split("/") + id=splitted[len(splitted)-1] if hasattr(self,"_v_checkResource") and self._v_checkResource.has_key(id): #existiert ein cache und id ist bereits drin? return self._v_checkResource[id] @@ -2591,10 +2676,12 @@ class ECHO_root(Folder,Persistent,Implic return getattr(found,field).decode('ascii','ignore') except: return "" - + + security.declarePublic('getImageTag') def getImageTag(self): """needed by main_template""" return "" + secondaryLink="" #needed by main_template secondaryLinkTitle="" #needed by main_template @@ -2602,6 +2689,7 @@ class ECHO_root(Folder,Persistent,Implic """hack""" return "#dddddd" + security.declareProtected('View','contentTypeSelector_HTML') def contentTypeSelector_HTML(self,selected=None): """give type selector""" if not selected: @@ -2644,23 +2732,6 @@ class ECHO_root(Folder,Persistent,Implic """nothing""" return retStr - def renderingTypeSelector_HTML(self,selected=None): - """give type selector""" - if not selected: - retStr="