--- ECHO_content/ECHO_collection.py 2005/02/28 14:09:55 1.215 +++ ECHO_content/ECHO_collection.py 2005/09/12 22:23:44 1.235 @@ -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.*?>(.*?)" @@ -86,7 +87,55 @@ def setECHO_collectionInformation(self,t self.credits=toList(credits) self.weight=weight - +class ECHO_locale(ZopePageTemplate): + """localisierung""" + + meta_type="ECHO_locale" + + def __init__(self,id,lang,title,label,text=None,content_type=None): + self.lang=lang + self.title=title + self.label=label + if text: + self.pt_edit(text, content_type) + self.id=id + + manage_options = ZopePageTemplate.manage_options+( + {'label':'Main Config','action':'change_ECHO_localeForm'}, + ) + + def change_ECHO_localeForm(self): + """change form""" + pt=zptFile(self, 'zpt/ChangeECHO_localeForm.zpt') + return pt() + + def change_ECHO_locale(self,lang,title,label,text=None,content_type=None,RESPONSE=None): + """change echo locale""" + self.lang=lang + self.title=title + self.label=label + if not text is None: + self.pt_edit(text, content_type) + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + +def manage_addECHO_localeForm(self): + """Form for adding""" + pt=zptFile(self, 'zpt/AddECHO_localeForm.zpt') + return pt() + +def manage_addECHO_locale(self,lang,title,label,text=None,content_type=None,RESPONSE=None): + """add echo locale""" + + id="locale_"+lang + + self._setObject(id, ECHO_locale(id,lang,title,label,text,content_type)) + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + class ECHO_copyright(Folder,ECHO_basis): """Copyright informationen""" meta_type="ECHO_copyright" @@ -262,9 +311,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): @@ -1200,7 +1246,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 @@ -1238,6 +1286,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) @@ -1306,7 +1355,7 @@ 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""" + """addresource""" newObj=ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords) @@ -1367,6 +1416,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'}, ) @@ -1404,14 +1454,37 @@ class ECHO_link(ECHO_externalLink): return ECHO_basis.content_html(self,'link') else: return ECHO_basis.content_html(self,'collection') - + + def index_html(self): + """standard link""" + if self.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() + params['startLink']=splitted[0]+"?"+urllib.urlencode(params) + + + return self.REQUEST.RESPONSE.redirect(splitted[0]+"?"+urllib.urlencode(params)) + else: + return "" + 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) @@ -1432,6 +1505,63 @@ class ECHO_collection(Folder, Persistent path="/mpiwg/online/permanent/shipbuilding" + def localizeObjects(self): + """localize all objects""" + contents=self.ZopeFind(self,obj_metatypes=['ECHO_externalLink','ECHO_link','ECHO_mapText']) + + find=self.ZopeFind(self,obj_ids=('locale_en')) + if not find: + self.manage_addECHO_locale("en",'','') + for content in contents: + + if content[1].meta_type in ['ECHO_link','ECHO_externalLink']: + + find=content[1].ZopeFind(content[1],obj_metatypes=('ECHO_mapText')) + if find: + root=find[0][1] + + locale=find[0][1].ZopeFind(find[0][1],obj_ids=('locale_en')) + else: + root=None + else: + root=content[1] + locale=content[1].ZopeFind(content[1],obj_ids=('locale_en')) + if root and not locale: + root.manage_addECHO_locale("en",'','') + + pt=zptFile(self, 'zpt/localizeObjects.zpt') + return pt() + + + def localize(self,REQUEST,RESPONSE): + """localize""" + for key in REQUEST.form.keys(): + splitted=key.split("!") + + if splitted[0]=="" or splitted[0]=="en" or splitted[0]=="title" or splitted[0]=="label": + if splitted[0]=="en": + setattr(self.locale_en,splitted[1],REQUEST.form[key]) + else: + setattr(self,splitted[0],REQUEST.form[key]) + else: + obj=getattr(self,splitted[0]) + + if obj.meta_type=="ECHO_mapText": + if splitted[1]=="en": + obj.locale_en.pt_edit(REQUEST.form[key],None) + else: + obj.pt_edit(REQUEST.form[key],None) + else: + text=obj.ZopeFind(obj,obj_metatypes=['ECHO_mapText']) + if splitted[1]=="en": + + text[0][1].locale_en.pt_edit(REQUEST.form[key],None) + else: + text[0][1].pt_edit(REQUEST.form[key],None) + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + def getRDF(self,urn=None): """rdf of the collection""" @@ -1529,7 +1659,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: @@ -1544,7 +1674,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: @@ -1553,7 +1683,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) @@ -1774,6 +1919,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""" + + #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: @@ -1870,7 +2032,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""" @@ -1894,6 +2056,7 @@ class ECHO_collection(Folder, Persistent {'label':'Main Config','action':'ECHO_collection_config'}, {'label':'Change Labels','action':'changeLabels'}, {'label':'Change Titles','action':'changeTitles'}, + {'label':'Localize','action':'localizeObjects'}, {'label':'Change Weights','action':'changeWeights'}, {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'}, {'label':'Graphic Coords','action':'ECHO_graphicEntry'}, @@ -1929,7 +2092,7 @@ class ECHO_collection(Folder, Persistent security.declarePublic('changeECHO_collection') - def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",location=None,isAlwaysClickable=None): + def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",location=None,isAlwaysClickable=None,prefix="",suffix=""): """Aenderung der Properties""" self.secondaryLink=secondaryLink @@ -1938,7 +2101,9 @@ class ECHO_collection(Folder, Persistent self.bgcolour=bgcolour self.location=location self.isAlwaysClickable=isAlwaysClickable - + self.prefix=prefix[0:] + self.suffix=suffix[0:] + setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight) self.sortfield=sortfield @@ -1962,8 +2127,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(): @@ -2032,9 +2197,9 @@ 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(subColTypes=mapColTypes): object=entry @@ -2366,12 +2531,37 @@ class ECHO_root(Folder,Persistent,Implic def item2(self,txt): return txt[2] - + + def setLanguage(self,lang): + """Set language cookie""" + self.REQUEST.RESPONSE.setCookie('lang_exhibition',lang,path="/") + + def switchLanguage(self): + """Set language cookie""" + if self.getLanguage()=="en": + lang="de" + else: + lang="en" + + self.REQUEST.RESPONSE.setCookie('lang_exhibition',lang,path="/") + self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']) + def getLanguage(self): + """get language cookie""" + lang= self.REQUEST.cookies.get('lang_exhibition','de') + if lang == '': + lang="de" + return lang + 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): #print "getTablet" @@ -2629,6 +2819,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: @@ -2671,23 +2862,6 @@ class ECHO_root(Folder,Persistent,Implic """nothing""" return retStr - def renderingTypeSelector_HTML(self,selected=None): - """give type selector""" - if not selected: - retStr="