version 1.1.2.3, 2008/08/26 14:00:41
|
version 1.1.2.11, 2010/07/23 17:30:38
|
Line 1
|
Line 1
|
from types import * |
from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
|
|
|
import logging |
|
|
definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub'] |
definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub'] |
|
|
Line 18 def getTextFromNode(nodename):
|
Line 20 def getTextFromNode(nodename):
|
rc = rc + node.data |
rc = rc + node.data |
return rc |
return rc |
|
|
|
def getTemplate(self, tpName): |
|
"""get a template file either form the instance or from the product""" |
|
#ext=self.ZopeFind(self.aq_parent,obj_ids=[tpName]) |
|
if hasattr(self,tpName): |
|
pt = getattr(self,tpName) |
|
else: |
|
pt=PageTemplateFile('zpt/'+tpName, globals()).__of__(self) |
|
assert(pt) |
|
return pt |
|
|
def sortStopWordsF(self,xo,yo): |
def sortStopWordsF(self,xo,yo): |
if not hasattr(self,'_v_stopWords'): |
if not hasattr(self,'_v_stopWords'): |
self._v_stopWords=self.stopwords_en.data.split("\n") |
self._v_stopWords=self.stopwords_en.data.split("\n") |
|
|
x=str(xo[1]) |
x=unicodify(xo[1]) |
y=str(yo[1]) |
y=unicodify(yo[1]) |
|
|
strx=x.split(" ") |
strx=x.split(" ") |
stry=y.split(" ") |
stry=y.split(" ") |
Line 75 def sortI(x,y):
|
Line 86 def sortI(x,y):
|
return cmp(x[1],y[1]) |
return cmp(x[1],y[1]) |
|
|
|
|
def unicodify(str): |
def unicodify(s): |
"""decode str (utf-8 or latin-1 representation) into unicode object""" |
"""decode str (utf-8 or latin-1 representation) into unicode object""" |
logging.error("unicodify: %s"%str) |
if not s: |
if not str: |
return u"" |
return "" |
if isinstance(s, str): |
if type(str) is StringType: |
|
try: |
try: |
return str.decode('utf-8') |
return s.decode('utf-8') |
except: |
except: |
return str.decode('latin-1') |
return s.decode('latin-1') |
else: |
else: |
return str |
return s |
|
|
def utf8ify(str): |
def utf8ify(s): |
"""encode unicode object or string into byte string in utf-8 representation""" |
"""encode unicode object or string into byte string in utf-8 representation. |
if not str: |
assumes string objects to be utf-8""" |
|
if not s: |
return "" |
return "" |
if type(str) is StringType: |
if isinstance(s, str): |
return str |
return s |
|
else: |
|
return s.encode('utf-8') |
|
|
|
|
|
def shortenString(s, l, ellipsis='...'): |
|
"""returns a string of length l (or l-1) by omitting characters in the middle of s, replacing with ellipsis.""" |
|
l1 = int((l - len(ellipsis)) / 2) |
|
return "%s%s%s"%(s[:l1],ellipsis,s[-l1:]) |
|
|
|
|
|
# |
|
# navigation methods (should better be a mixin class) |
|
# |
|
def getBreadcrumbs(self): |
|
"""return list of breadcrumbs from here to the root""" |
|
crumbs = [(self.title, self.absolute_url(), self)] |
|
parent = self.aq_parent |
|
if hasattr(parent, 'getBreadcrumbs'): |
|
if self.title: |
|
return parent.getBreadcrumbs() + crumbs |
else: |
else: |
return str.encode('utf-8') |
# if there's no title, skip this level |
|
return parent.getBreadcrumbs() |
|
|
|
return crumbs |
|
|
|
|
|
def getSection(self, crumbs=None): |
|
"""returns the current section name""" |
|
# use breadcrumbs if available |
|
if crumbs is not None and len(crumbs) > 0: |
|
return crumbs[0][2].getId() |
|
|
|
p = self |
|
sec = None |
|
# descend parents to the root (and remember the last id) |
|
while p is not None and p.meta_type != 'MPIWGRoot': |
|
sec = p.getId() |
|
p = p.aq_parent |
|
|
|
return sec |
|
|
|
def getSubSection(self, crumbs=None): |
|
"""returns the current subsection name""" |
|
# use breadcrumbs if available |
|
if crumbs is not None and len(crumbs) > 1: |
|
return crumbs[1][2].getId() |
|
|
|
p = self |
|
sec = None |
|
subsec = None |
|
# descend parents to the root (and remember the last id) |
|
while p is not None and p.meta_type != 'MPIWGRoot': |
|
subsec = sec |
|
sec = p.getId() |
|
p = p.aq_parent |
|
|
|
return subsec |
|
|