Mercurial > hg > MPIWGWeb
changeset 80:b1893c4c9d2c
more display of project pages.
author | casties |
---|---|
date | Wed, 08 May 2013 19:59:25 +0200 |
parents | 7f26c8e6c8e9 |
children | 975a8d88e315 |
files | MPIWGHelper.py MPIWGProjects.py MPIWGStaff.py css/mpiwg.css zpt/project/project_template.zpt |
diffstat | 5 files changed, 131 insertions(+), 61 deletions(-) [+] |
line wrap: on
line diff
--- a/MPIWGHelper.py Wed May 08 17:03:50 2013 +0200 +++ b/MPIWGHelper.py Wed May 08 19:59:25 2013 +0200 @@ -148,3 +148,11 @@ return subsec + +def getUrl(self, baseUrl=None): + """returns URL to this object""" + if baseUrl is None: + return self.absolute_url() + + return '%s/%s' % (baseUrl, self.getId()) +
--- a/MPIWGProjects.py Wed May 08 17:03:50 2013 +0200 +++ b/MPIWGProjects.py Wed May 08 19:59:25 2013 +0200 @@ -15,21 +15,19 @@ import re import os import email -import xmlhelper # Methoden zur Verwaltung der projekt xml import sys import logging import time +import unicodedata import xml.etree.ElementTree as ET from SrvTxtUtils import getInt, unicodify, utf8ify, serialize, refreshingImageFileIndexHtml, shortenString from Products.ZDBInterface.ZDBInterfaceFolder import ZDBInterfaceFolder +import xmlhelper # Methoden zur Verwaltung der projekt xml from HashTree import HashTree - -import MPIWGRoot -import MPIWGLink -import MPIWGTemplate +import MPIWGHelper # TODO: better names for the fields fieldLabels = {'WEB_title':'WEB_Title', @@ -57,6 +55,10 @@ # die folgenden Klassen sind jetzt in einzelne Files ausgelagert aus Kompatibilitaetsgruenden, bleiben die Klassen hier noch drin. # Sonst funktionieren die alten Webseiten nicht mehr. +import MPIWGRoot +import MPIWGLink +import MPIWGTemplate + class MPIWGRoot(MPIWGRoot.MPIWGRoot): """depricated""" @@ -65,6 +67,7 @@ class MPIWGTemplate(MPIWGTemplate.MPIWGTemplate): """depricated""" + class MPIWGProject_publication(Folder): """publications object fuer project""" @@ -122,6 +125,9 @@ return self.bookId + getUrl = MPIWGHelper.getUrl + + def editPublication(self, text=None, description=None, link=None, RESPONSE=None): """edit a publication""" @@ -151,9 +157,9 @@ objid = None projectLabel = None + # templates editDescription = PageTemplateFile('zpt/project/related_project/edit_basic', globals()) - def redirect(self, RESPONSE, url): """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen""" @@ -197,6 +203,9 @@ return label + getUrl = MPIWGHelper.getUrl + + def editRelatedProject(self, link=None, RESPONSE=None): """edit a publication""" @@ -238,6 +247,8 @@ showImage = PageTemplateFile('zpt/project/image/projectImageView', globals()) editForm = PageTemplateFile('zpt/project/image/edit_basic', globals()) + getUrl = MPIWGHelper.getUrl + def editImage(self, file=None, caption=None, RESPONSE=None): """edit the Image""" if (not file) and (not caption): @@ -373,14 +384,21 @@ return n - def getProjectTitle(self): + def getProjectTitle(self, forSorting=False): """returns the project title""" t = getattr(self, 'WEB_title', None) if isinstance(t, list): # compat with old lists - return t[0] - else: - return t + t = t[0] + + if forSorting and t is not None: + # remove stopwords and signs for sorting + if t.lower().startswith('a '): + t = t[2:] + elif isinstance(t, unicode) and unicodedata.category(t[0])[0] != 'L': + t = t[1:] + + return t def getLabel(self): @@ -460,12 +478,7 @@ return self.absolute_url() - def getUrl(self, baseUrl=None): - """returns URL to this Project""" - if baseUrl is None: - return self.absolute_url() - - return '%s/%s' % (baseUrl, self.getId()) + getUrl = MPIWGHelper.getUrl def getThumbUrl(self, default=None): @@ -491,7 +504,7 @@ if pp > 0: num = num[:pp] - return self.getMPIWGRoot().getDepartment(projectNumber=num) + return self.en.getMPIWGRoot().getDepartment(projectNumber=num) def getDepartmentId(self): @@ -1119,7 +1132,6 @@ return self.preview(newcontent) self.copyObjectToArchive() - self.ZCacheable_invalidate() self.WEB_project_description = newcontent[0:] self.REQUEST.RESPONSE.redirect("./index.html") @@ -1178,7 +1190,7 @@ for resp in self.getResponsibleScientistsList(): logging.debug("resp=%s key=%s"%(repr(resp),repr(key))) # TODO: we need to get ASCII keys!! - if utf8ify(resp.get('key', '').lower()) == utf8ify(key).lower(): + if utf8ify(resp.get('key', '')).lower() == utf8ify(key).lower(): return True return False @@ -1284,7 +1296,7 @@ username = None if key: # get username from db - member = self.getMPIWGRoot().getStaffFolder().getMember(key=key) + member = self.en.getMPIWGRoot().getStaffFolder().getMember(key=key) if member is not None: username = member.getUsername() @@ -1810,7 +1822,7 @@ key = key[0] # get username from db - member = self.getMPIWGRoot().getStaffFolder().getMember(key=key) + member = self.en.getMPIWGRoot().getStaffFolder().getMember(key=key) if member is not None: username = member.getUsername()
--- a/MPIWGStaff.py Wed May 08 17:03:50 2013 +0200 +++ b/MPIWGStaff.py Wed May 08 19:59:25 2013 +0200 @@ -1741,13 +1741,10 @@ logging.error(escidocid) logging.error(value) + def getSelectedPublications(self): """hole publications aus der datenbank""" - - query="select * from pubmanbiblio where lower(key_main) = lower(%s) order by priority DESC" - - return self.executeZSQL(query,[self.getKey()]) @@ -1756,17 +1753,14 @@ ret="" #founds=self.ZSQLInlineSearch(_table='research_interest',key_main=person.getKeyUTF8()) - founds=self.ZSQLInlineSearch(_table='research_interest',key_main=self.getKey()) + founds=self.executeZSQL('select * from research_interest where lower(key_main) = %s', [self.getKey().lower()]) if founds: ret="<p class=\"bio_section_header\">Research interests: </p><br/>" for found in self.sortPriority(founds): ret+=found.interest+"<br/>" - - if (self.content.current_work) and (not self.content.current_work==""): ret+="<p class=\"bio_section_header\">Current work: </p><br/>" - - ret+=self.current_work+"<br/>" + ret+=self.content.current_work+"<br/>" if (self.content.cv) and (not self.content.cv==""): ret+="<p class=\"bio_section_header\">Curriculum Vitae: </p><br/>" ret+=self.formatAscii(self.content.cv)
--- a/css/mpiwg.css Wed May 08 17:03:50 2013 +0200 +++ b/css/mpiwg.css Wed May 08 19:59:25 2013 +0200 @@ -921,6 +921,36 @@ margin-left: 80px; } + +/* + * figures (in project descriptions) + */ +div.figure { + float: left; + width: 220px; + padding: 0.5em 1em 0 0; +} +div.figure div.image img { + width: 220px; +} +div.figure div.figcaption { + font-size: 10px; + color: #9f917a; + margin-top: 0.5em; +} + +/* + * project description + */ +h3.authors { + margin-top: 0.5em; +} + +div.description { + margin-top: 0.5em; + line-height: 1.5; +} + /* * sidebar */ @@ -929,7 +959,7 @@ width: 220px; border-top: 3px solid #dccbae; background-color: white; - padding: 20px 8px 20px 0; + padding: 20px 10px 20px 0; } div.sideblock h2 { @@ -958,6 +988,34 @@ } /* + * project sidebars + */ +div.sideblock h2 { + position: relative; +} +div.sideblock h2 .proj_state { + position: absolute; + right: 0; +} + +div.sideblock .project { + background: url(../images/internal.png) no-repeat scroll 6px 11px #F5DAAF; + border-bottom: 1px solid #F3BE7C; + padding: 6px 6px 6px 20px; +} +div.sideblock .project.inactive { + background: url(../images/internal.png) no-repeat scroll 6px 11px #f6e6cc; +} +div.sideblock .project.parent { + background: url(../images/up.png) no-repeat scroll 6px 11px #F9F4E1; + border-bottom: 1px solid #DCCBAE; + color: #666666; +} +div.sideblock .project a { + color: #333; +} + +/* * footer */ #footer {
--- a/zpt/project/project_template.zpt Wed May 08 17:03:50 2013 +0200 +++ b/zpt/project/project_template.zpt Wed May 08 19:59:25 2013 +0200 @@ -14,7 +14,8 @@ <body> <!-- middle column --> - <div class="center" metal:fill-slot="center"> + <div class="center project" metal:fill-slot="center"> + <!-- version header --> <h2 tal:condition="not:here/isCurrentVersion"> This is an outdated version of this project! For the current version, please refer to <a tal:define="parentUrl python:here.aq_parent.getUrl(baseUrl=proBaseUrl)" @@ -26,41 +27,39 @@ <span tal:content="here/getCompletedAt"/>) </p> </tal:x> + <!-- /version header --> <h1 tal:content="here/getProjectTitle">History of Scientific Objectivity, 18th-19th Cs</h1> - <p class="maintext_authors"> + <h3 class="authors"> <tal:block tal:repeat="person here/getResponsibleScientistsList"> - <a tal:define="username person/username|nothing" tal:omit-tag="python:not username or not here.getStaffFolder().isActiveMember(key=person.get('key',None))" - tal:attributes="href string:$root/${secmap/staff}/members/$username" tal:content="person/name"> Name of + <a tal:define="username person/username|nothing; key person/key|nothing;" + tal:omit-tag="python:not username or not here.getStaffFolder().isActiveMember(key=key)" + tal:attributes="href string:$root/${secmap/staff}/members/$username" tal:content="person/name"> Name of responsible person</a><tal:block tal:condition="not:repeat/person/end">, </tal:block> </tal:block> - </p> - - <p class="maintext_more" tal:define="others here/getInvolvedScholars" tal:condition="others"> - Other involved scholars: <span tal:content="structure others">Scholars </span> - </p> - <p class="maintext_more" tal:define="partners here/getCooperationPartners" tal:condition="partners"> - Cooperation Partners: <span tal:content="structure partners">Partners</span> - </p> + </h3> - <!-- inline image --> - <div class="pic_inline_container" tal:condition="images"> - <tal:block tal:repeat="image python:images"> - <div class="pic_inline"> - <a tal:condition="image/width" - tal:attributes="href python:request['URL1']+'/'+image.getId()+'/showImage'" target="image"><img width="220" - tal:attributes="src image/absolute_url" alt=""/><!-- <img tal:replace="structure python:image.tag(scale=min(220.0/image.width,1), border='0')" /> - --></a> + <h3 class="authors" tal:define="others here/getInvolvedScholars" tal:condition="others"> + Other involved scholars: <span tal:content="structure others">Scholars </span> + </h3> + <h3 class="authors" tal:define="partners here/getCooperationPartners" tal:condition="partners"> + Cooperation Partners: <span tal:content="structure partners">Partners</span> + </h3> + + <div class="description"> + <!-- inline image --> + <div class="figure" tal:condition="images" tal:repeat="image python:images"> + <div class="image"> + <a tal:condition="image/width" tal:attributes="href python:image.getUrl()+'/showImage'" target="_blank"><img + tal:attributes="src image/getUrl" alt="" /></a> <pre tal:condition="not:image/width">empty image</pre> </div> - <div class="caption_inline" tal:content="structure image/caption"> - J.-A.-D. Ingres: Mme Moitessier, 1856. Oel/Lw. 120 x 92,1 cm. London, National Gallery. - </div> - </tal:block> + <div class="figcaption" tal:content="structure image/caption">J.-A.-D. Ingres: Mme Moitessier, 1856. Oel/Lw. 120 x 92,1 + cm. London, National Gallery.</div> + </div> + <!-- inline image --> + <div tal:content="structure python:here.getDescription(filter=True)">Project description</div> </div> - <!-- inline image --> - - <div tal:content="structure python:here.getDescription(filter=True)">Project description</div> </div> @@ -82,7 +81,7 @@ <!-- related projects --> <div class="sideblock" tal:define="projects here/getRelatedProjectList" tal:condition="projects"> <h2>Related Projects</h2> - <div class="item" tal:repeat="project projects"> + <div class="project" tal:repeat="project projects"> <a tal:attributes="href string:$proBaseUrl/${project/getProjectId}" tal:content="project/getProjectLabel" /> </div> @@ -117,8 +116,7 @@ <tal:x tal:condition="python:hasattr(publication, 'description')"> <div tal:content="structure publication/description" /> </tal:x> - </div> - <!-- end item --> + </div><!-- end item --> </tal:block> </div> <!-- sideblock -->