Mercurial > hg > MPIWGWeb
changeset 16:54f135c1ed65
updated MPIWGFeature.
zpts moved to feature subfolder and renamed.
new date attribute.
nicer management interface.
author | casties |
---|---|
date | Fri, 05 Apr 2013 15:58:43 +0200 |
parents | aca0fce3824b |
children | 6d374d94c7e3 |
files | MPIWGDepartment.py MPIWGFeature.py SrvTxtUtils.py zpt/AddMPIWGFeature.zpt zpt/MPIWGFeatureChangeWeight.zpt zpt/MPIWGFeatureConfig.zpt zpt/MPIWGFeature_template_intro.zpt zpt/MPIWGFeature_template_main.zpt zpt/feature/default_template_main.zpt zpt/feature/default_template_teaser.zpt zpt/feature/manage_add_MPIWGFeature.zpt zpt/feature/manage_change_weight.zpt zpt/feature/manage_config.zpt |
diffstat | 13 files changed, 227 insertions(+), 93 deletions(-) [+] |
line wrap: on
line diff
--- a/MPIWGDepartment.py Fri Mar 08 16:17:58 2013 +0100 +++ b/MPIWGDepartment.py Fri Apr 05 15:58:43 2013 +0200 @@ -68,9 +68,6 @@ dir = getattr(self, lang, self.en) t = dir.title - if not t: - t = self.title - return t def getTitle(self, lang=None):
--- a/MPIWGFeature.py Fri Mar 08 16:17:58 2013 +0100 +++ b/MPIWGFeature.py Fri Apr 05 15:58:43 2013 +0200 @@ -1,16 +1,24 @@ from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate +from OFS.Folder import Folder +from AccessControl import ClassSecurityInfo from Globals import package_home + import string import re import os import logging -from OFS.Folder import Folder -from AccessControl import ClassSecurityInfo +import datetime + +from SrvTxtUtils import getMonthName from MPIWGHelper import * class MPIWGFeature(Folder): - """special object for feature texts on the MPIWG website """ + """special object for feature texts on the MPIWG website. + Has templates for English and German in Folders /en/ and /de/. + Feature teaser is /(en|de)/teaser.pt. Full page is /(en|de)/main.pt. + Full title is the title of /(en|de)/main.pt. + """ meta_type="MPIWGFeature" @@ -19,38 +27,61 @@ {'label':'Main Config','action':'changeForm'}, ) - changeWeightForm = PageTemplateFile('zpt/MPIWGFeatureChangeWeight', globals()) - changeForm = PageTemplateFile('zpt/MPIWGFeatureConfig', globals()) + changeWeightForm = PageTemplateFile('zpt/feature/manage_change_weight', globals()) + changeForm = PageTemplateFile('zpt/feature/manage_config', globals()) - def __init__(self, id, title=None, weight=0): + def __init__(self, id, title=None, weight=0, date=None, title_en=None, title_de=None): self.id = str(id) self.weight = weight if title is None: self.title = id else: self.title = title - - # add language folder and sample templates + + if date is None: + self.date = datetime.date.today() + else: + self.date = date + + # + # add language folder_en and sample templates + # + mainid = 'main.pt' + teaserid = 'teaser.pt' + # english self.manage_addFolder('en') - folder = getattr(self, 'en') - introid = 'intro.pt' - folder._setObject(introid, ZopePageTemplate(introid)) - intro = getattr(folder,introid) - intro.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_intro.zpt')).read(),'text/html') - mainid = 'main.pt' - folder._setObject(mainid, ZopePageTemplate(mainid)) - main = getattr(folder,mainid) - main.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_main.zpt')).read(),'text/html') + folder_en = getattr(self, 'en') + folder_en[teaserid] = ZopePageTemplate(teaserid) + teaser_en = getattr(folder_en,teaserid) + teaser_en.pt_edit(open(os.path.join(package_home(globals()),'zpt/feature/default_template_teaser.zpt')).read(),'text/html') + folder_en[mainid] = ZopePageTemplate(mainid) + main_en = getattr(folder_en,mainid) + main_en.pt_edit(open(os.path.join(package_home(globals()),'zpt/feature/default_template_main.zpt')).read(),'text/html') + if title_en is not None: + main_en.title = title_en + # german + self.manage_addFolder('de') + folder_de = getattr(self, 'de') + folder_de[teaserid] = ZopePageTemplate(teaserid) + teaser_de = getattr(folder_de,teaserid) + teaser_de.pt_edit(open(os.path.join(package_home(globals()),'zpt/feature/default_template_teaser.zpt')).read(),'text/html') + folder_de[mainid] = ZopePageTemplate(mainid) + main_de = getattr(folder_de,mainid) + main_de.pt_edit(open(os.path.join(package_home(globals()),'zpt/feature/default_template_main.zpt')).read(),'text/html') + if title_de is not None: + main_de.title = title_de def index_html(self): """default index page""" return self.getMain() - def getFullTitle(self): + def getFullTitle(self, lang=None): """returns the full title (from main.pt)""" - # get Language from MPIWGRoot - lang = self.getLang() + if lang is None: + # get Language from MPIWGRoot + lang = self.getLang() + dir = getattr(self, lang, self.en) pt = getattr(dir, 'main.pt') t = pt.title @@ -59,6 +90,29 @@ return t + def getDate(self): + """returns the date as a date object""" + return getattr(self, 'date', None) + + def getDateString(self, lang=None): + """returns the date as a string""" + d = self.getDate() + if d is None: + return '???' + + if lang is None: + # get Language from MPIWGRoot + lang = self.getLang() + + if lang == 'iso': + return d.isoformat() + elif lang == 'en': + return "%s %s, %s"%(getMonthName(d.month, 'en'), d.day, d.year) + elif lang == 'de': + return "%s. %s %s"%(d.day, getMonthName(d.month, 'de'), d.year) + + return None + def getUrl(self, baseUrl=None): """returns URL to this feature""" if baseUrl is None: @@ -133,12 +187,30 @@ if RESPONSE is not None: RESPONSE.redirect('manage_main') - def changeMPIWGFeature(self, title=None, weight=None, RESPONSE=None): + def changeMPIWGFeature(self, title=None, weight=None, date=None, title_en=None, title_de=None, RESPONSE=None): """change everything""" if title is not None: self.title = title if weight is not None: - self.weight = weight + self.weight = weight + if date is not None: + try: + self.date = datetime.datetime.strptime(date, '%Y-%m-%d').date() + except: + pass + + folder_en = self.get('en', None) + if folder_en is not None: + main_en = folder_en.get('main.pt', None) + if main_en is not None and title_en is not None: + main_en.title = title_en + + folder_de = self.get('de', None) + if folder_de is not None: + main_de = folder_de.get('main.pt', None) + if main_de is not None and title_de is not None: + main_de.title = title_de + if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -162,7 +234,7 @@ def manage_addMPIWGFeatureForm(self): """Form for adding""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFeature.zpt')).__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/feature/manage_add_MPIWGFeature.zpt')).__of__(self) return pt() def manage_addMPIWGFeature(self, id, title=None,weight=0,RESPONSE=None):
--- a/SrvTxtUtils.py Fri Mar 08 16:17:58 2013 +0100 +++ b/SrvTxtUtils.py Fri Apr 05 15:58:43 2013 +0200 @@ -10,8 +10,34 @@ import urllib2 import logging +srvTxtUtilsVersion = "1.6" -srvTxtUtilsVersion = "1.5" +map_months = {'en': [u"", + u"January", + u"February", + u"March", + u"April", + u"May", + u"June", + u"July", + u"August", + u"September", + u"October", + u"November", + u"December"], + 'de': [u"", + u"Januar", + u"Februar", + u"M\u00e4rz", + u"April", + u"Mai", + u"Juni", + u"Juli", + u"August", + u"September", + u"Oktober", + u"November", + u"Dezember"]} def getInt(number, default=0): """returns always an int (0 in case of problems)""" @@ -73,7 +99,9 @@ return text - +def getMonthName(mon, lang): + """returns the name of the month mon in the language lang""" + return map_months[lang][mon] def getHttpData(url, data=None, num_tries=3, timeout=10, noExceptions=False): """returns result from url+data HTTP request"""
--- a/zpt/AddMPIWGFeature.zpt Fri Mar 08 16:17:58 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -<html> -<body> -<h2>Create MPIWGWeb Feature object</h2> - - - -<form method="post" action="manage_addMPIWGFeature"> -<table> -<tr> - <td><b>ID</b></td> - <td><input type="text" size="40" name="id"></td> -</tr> -<tr> - <td><i>Title</i></td> - <td><input type="text" size="40" name="title"></td> -</tr> -<tr> - <td><i>Weight</i></td> - <td><input type="text" size="40" name="weight"></td> -</tr> - -</table> - -<input type="submit" value="create"> - -</form> -</body> -</html>
--- a/zpt/MPIWGFeatureChangeWeight.zpt Fri Mar 08 16:17:58 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -<html> -<h2>Change Weight</h2> -<form action="changeWeight" method="pro"> -<input tal:attributes="value here/weight|string:0" name="weight"><br> -<input type="submit"> -</form> -</html>
--- a/zpt/MPIWGFeatureConfig.zpt Fri Mar 08 16:17:58 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -<html> -<h2>Change MPIWG Feature</h2> -<form action="changeMPIWGFeature" method="pro"> -Title: <input tal:attributes="value here/title|nothing" name="title"><br> -Weight: <input tal:attributes="value here/weight|string:0" name="weight"><br> -<input type="submit"> -</form> -</html>
--- a/zpt/MPIWGFeature_template_intro.zpt Fri Mar 08 16:17:58 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" - "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> -<html metal:use-macro="here/main_template/macros/page"> - <tal:block metal:fill-slot="body"> - <!-- Insert here the main text --> - - - - <!-- Don't change from here --> - </tal:block> -</html>
--- a/zpt/MPIWGFeature_template_main.zpt Fri Mar 08 16:17:58 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" - "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> -<html metal:use-macro="here/main_template/macros/page"> - <tal:block metal:fill-slot="body"> - <!-- Insert here the main text --> - - - - <!-- Don't change from here --> - </tal:block> -</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/feature/default_template_main.zpt Fri Apr 05 15:58:43 2013 +0200 @@ -0,0 +1,15 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +</head> +<body> + <tal:block metal:fill-slot="feature"> + <!-- Insert here the main text --> + + + + <!-- Don't change from here --> + </tal:block> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/feature/default_template_teaser.zpt Fri Apr 05 15:58:43 2013 +0200 @@ -0,0 +1,20 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + </head> + <body> + <metal:block metal:define-macro="caption"> + <div class="caption"> + <!-- insert image caption here --> + </div> + </metal:block> + <metal:block metal:define-macro="text"> + <h1><a tal:attributes="href feature_url"><!-- insert title here --></a></h1> + <p> + <!-- insert teaser text here --> + </p> + </metal:block> + </body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/feature/manage_add_MPIWGFeature.zpt Fri Apr 05 15:58:43 2013 +0200 @@ -0,0 +1,28 @@ +<html> +<body> +<h2>Create MPIWGWeb Feature object</h2> + + + +<form method="post" action="manage_addMPIWGFeature"> +<table> +<tr> + <td><b>ID</b></td> + <td><input type="text" size="40" name="id"></td> +</tr> +<tr> + <td><i>Title</i></td> + <td><input type="text" size="40" name="title"></td> +</tr> +<tr> + <td><i>Weight</i></td> + <td><input type="text" size="40" name="weight"></td> +</tr> + +</table> + +<input type="submit" value="create"> + +</form> +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/feature/manage_change_weight.zpt Fri Apr 05 15:58:43 2013 +0200 @@ -0,0 +1,7 @@ +<html> +<h2>Change Weight</h2> +<form action="changeWeight" method="pro"> +<input tal:attributes="value here/weight|string:0" name="weight"><br> +<input type="submit"> +</form> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/feature/manage_config.zpt Fri Apr 05 15:58:43 2013 +0200 @@ -0,0 +1,32 @@ +<html> +<div tal:replace="structure here/manage_page_header">Header</div> +<!-- ZOPE management tabs --> +<h2 tal:define="manage_tabs_message options/manage_tabs_message | nothing" tal:replace="structure here/manage_tabs">Tabs</h2> +<!-- end of ZOPE management tabs --> +<h2>Change MPIWG Feature</h2> +<form action="changeMPIWGFeature" method="post"> + <table> + <tr> + <td><i>Internal title</i> (for management, in English)</td> + <td><input type="text" size="50" name="title" tal:attributes="value here/title|nothing"></td> + </tr> + <tr> + <td><i>Weight</i> (number for sorting)</td> + <td><input type="text" size="5" name="weight" tal:attributes="value here/weight|string:0"></td> + </tr> + <tr> + <td><i>Date</i> (ISO format, e.g. "2013-01-15")</td> + <td><input type="text" size="10" name="date" tal:attributes="value python:here.getDateString(lang='iso')"></td> + </tr> + <tr> + <td><i>Title in English</i> (e.g. "Science under Scrutiny")</td> + <td><input type="text" size="50" name="title_en" tal:attributes="value python:here.getFullTitle(lang='en')"></td> + </tr> + <tr> + <td><i>Title in German</i></td> + <td><input type="text" size="50" name="title_de" tal:attributes="value python:here.getFullTitle(lang='de')"></td> + </tr> + </table> + <input type="submit"> +</form> +</html>