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>