Mercurial > hg > MPIWGWeb
changeset 271:690d5dea34bd
Merge with d672a6f6c9029a93614d45aa5c0f5e4b977f7a87
author | casties |
---|---|
date | Tue, 30 Sep 2014 13:59:13 +0200 |
parents | 761869998ad0 (current diff) d672a6f6c902 (diff) |
children | 66f86cb8f69b 79f3f6492ec9 |
files | zpt/www/main_template.zpt |
diffstat | 9 files changed, 156 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/HashTree.py Fri Sep 05 11:44:40 2014 +0200 +++ b/HashTree.py Tue Sep 30 13:59:13 2014 +0200 @@ -211,7 +211,7 @@ """ keys = self._splitkey(key) node = self.root - logging.debug("hashtree.add: keys=%s value=%s"%(repr(keys), repr(value))) + #logging.debug("hashtree.add: keys=%s value=%s"%(repr(keys), repr(value))) for k in keys: nextnode = node.getNode(k) if nextnode is None:
--- a/MPIWGDepartment.py Fri Sep 05 11:44:40 2014 +0200 +++ b/MPIWGDepartment.py Tue Sep 30 13:59:13 2014 +0200 @@ -146,7 +146,7 @@ proj = pf.getProject(projectNumber=self.getProjectNumber()) return proj - def getProjects(self, count=0, active=0, archived=0, depthFirst=True): + def getProjects(self, count=0, active=0, archived=0, depthFirst=True, filter=None): """returns a list of projects of this department. active = 0 : all projects @@ -158,7 +158,7 @@ archived = 2 : archived projects """ pf = self.getMPIWGRoot().getProjectFolder() - projects = pf.getProjectsAsList(self.getProjectNumber(), active=active, archived=archived, depthFirst=depthFirst) + projects = pf.getProjectsAsList(self.getProjectNumber(), active=active, archived=archived, depthFirst=depthFirst, filter=filter) #logging.debug("getProjects projects=%s"%repr(projects)) if count > 0: return projects[:count]
--- a/MPIWGProjects.py Fri Sep 05 11:44:40 2014 +0200 +++ b/MPIWGProjects.py Tue Sep 30 13:59:13 2014 +0200 @@ -350,6 +350,9 @@ self.items[int(n)][t] = form[k] except: logging.error("InfoBlock editItems: error changing item %s!"%k) + + if k == 'block_title': + self.title = form[k] self._p_changed = True if RESPONSE is not None: @@ -563,6 +566,16 @@ return t + def getProjectType(self): + """returns the type of project""" + t = getattr(self, 'projectType', None) + return t + + def setProjectType(self, s): + """set the type of project""" + self.projectType = s + + def getMPIWGProject(self): """Return this project for acquisition.""" return self @@ -631,10 +644,10 @@ return tree.getAncestorsOf(self.getNumber()) - def getSubProjects(self, active=1): + def getSubProjects(self, active=1, archived=1, filter=None): """returns a list of child projects""" tree = self.getProjectTree() - return [p for p in tree.getChildrenOf(self.getNumber()) if p.checkActive(active)] + return [p for p in tree.getChildrenOf(self.getNumber()) if (filter is None or filter(p)) and p.checkActive(active) and p.checkArchived(archived)] def getRelatedDigitalSources(self): @@ -1516,6 +1529,12 @@ else: self.setActiveFlag(False) + if formdata.has_key('projectType'): + if formdata.get('projectType'): + self.projectType = formdata.get('projectType') + else: + self.projectType = None + # make dict of responsible scientists checkedScientists = {} names = {} @@ -1921,7 +1940,7 @@ tree = HashTree(keySeparator='.', keyFn=getInt) for p in self.objectValues(spec='MPIWGProject'): # add all projects - logging.debug("add to project tree: %s, %s"%(repr(p.getNumber()),p)) + #logging.debug("add to project tree: %s, %s"%(repr(p.getNumber()),p)) tree.add(p.getNumber(), p) self._v_projectTree = tree @@ -1930,7 +1949,7 @@ return tree - def getProjectsAsList(self, start=None, active=1, archived=1, depthFirst=True): + def getProjectsAsList(self, start=None, active=1, archived=1, depthFirst=True, filter=None): """Return flattened list of projects, starting from start. active = 0 : all projects @@ -1951,7 +1970,8 @@ #logging.debug("getProjectsAsList: node=(%s,%s) pl=%s"%(node.key,node.value,repr(pl))) #logging.debug("getProjectsAsList: node=(%s,%s) pl=%s"%(node.key,node.value,[p.getNumber() for p in pl])) # return filtered list - return [p for p in pl if (p.checkActive(active) and p.checkArchived(archived))] + return [p for p in pl if ((filter is None or filter(p)) and p.checkActive(active) and p.checkArchived(archived))] + #return [p for p in pl if (p.checkActive(active) and p.checkArchived(archived))] def getProject(self, projectNumber=None):
--- a/MPIWGStaff.py Fri Sep 05 11:44:40 2014 +0200 +++ b/MPIWGStaff.py Tue Sep 30 13:59:13 2014 +0200 @@ -100,7 +100,7 @@ def getMemberList(self, department=None, sortBy='last_name', onlyCurrent=False, arrivedWithin=None, - onlyPublished=True, onlyWithEmail=True, onlyScholar=True, limit=0): + onlyPublished=True, onlyWithEmail=True, onlyScholar=True, status=None, limit=0): """Return the list of members. Returns a list of MPIWGStaffMember objects. @@ -128,6 +128,10 @@ if arrivedWithin is not None: wheres.append("date_from > CURRENT_DATE - interval %s") args.append(arrivedWithin) + + if status is not None: + wheres.append("status ilike %s") + args.append('%%%s%%'%status) # assemble query query = "SELECT * FROM personal_www_list"
--- a/css/mpiwg.css Fri Sep 05 11:44:40 2014 +0200 +++ b/css/mpiwg.css Tue Sep 30 13:59:13 2014 +0200 @@ -349,7 +349,7 @@ div.subnav h2.subnavhead { background-color: white; color: #d45a00; - border-bottom: 1px solid #dccbae; + /* border-bottom: 1px solid #dccbae; */ font-size: 11px; font-weight: bold; margin: 0; @@ -363,6 +363,25 @@ text-indent: -14px; } +div.subnav li.dept.lv1 { + padding-left: 3em; +} +div.subnav li.dept.lv2 { + padding-left: 4em; +} +div.subnav li.dept.lv3 { + padding-left: 5em; +} +div.subnav li.dept.lv4 { + padding-left: 6em; +} +div.subnav li.dept.lv5 { + padding-left: 7em; +} +div.subnav li.dept.lv6 { + padding-left: 8em; +} + div.subnav li.dept .type { font-style: italic; color: #6a4d3c; @@ -1425,6 +1444,22 @@ color: #333; } +div.subnav .proj_switcher { + background-color: white; + text-align: right; + padding: 2px 0; +} +div.subnav .proj_switcher .proj_state { + padding: 2px 6px; + border-top: 1px solid #DCCBAE; + border-left: 1px solid #DCCBAE; + border-right: 1px solid #DCCBAE; +} +div.subnav .proj_switcher .proj_state.on { + background-color: #FCF2DF; +} + + /* * special sideblocks */ @@ -1494,6 +1529,21 @@ } /* + * sub row (between main and foot) + */ +#subrow { + display: table; +} +#subrow .leftbox { + border-top: 0; +} +#subrow .main { + min-width: 690px; + padding: 0 20px; + border-top: 0; +} + +/* * footer */ #footservices {
--- a/js/mpiwg.js Fri Sep 05 11:44:40 2014 +0200 +++ b/js/mpiwg.js Tue Sep 30 13:59:13 2014 +0200 @@ -38,9 +38,6 @@ $content.animate({'left':'-='+settings.scrollBy}, 'fast'); }).css('cursor', 'pointer'); }); - - - }; }(jQuery));
--- a/zpt/project/edit_basic.zpt Fri Sep 05 11:44:40 2014 +0200 +++ b/zpt/project/edit_basic.zpt Tue Sep 30 13:59:13 2014 +0200 @@ -37,14 +37,19 @@ <tr> <td>Started at:</td> <td><input tal:attributes="name python:'startedAt'; - value python:here.getStartedAt()" type="text" len="15" /> + value python:here.getStartedAt()" type="text" size="10" /> (format dd.mm.yyyy or mm.yyyy or yyyy)</td> </tr> <tr> <td>Completed at:</td> <td><input tal:attributes="name python:'completedAt'; value python:here.getCompletedAt()" - type="text" len="15" /> (format dd.mm.yyyy or mm.yyyy or yyyy)</td> + type="text" size="10" /> (format dd.mm.yyyy or mm.yyyy or yyyy)</td> + </tr> + <tr> + <td>Type of project page:</td> + <td><input name="projectType" tal:attributes="value here/getProjectType" + type="text" size="20" /></td> </tr> </table>
--- a/zpt/project/project_index_html.zpt Fri Sep 05 11:44:40 2014 +0200 +++ b/zpt/project/project_index_html.zpt Tue Sep 30 13:59:13 2014 +0200 @@ -9,7 +9,23 @@ <tal:block tal:define="global proBaseUrl string:$root/${secmap/research}/projects; global images here/getImageList; - global dept here/getDepartmentId;" /> + global dept here/getDepartmentId; + global pNum here/getNumber;" /> + <script tal:content="string:var sliderUrl = 'api/subProjects_slider_html?pro=$pNum';"> + </script> + <script> + $(window).on('load', function () { + $('.ajaxSlider').each(function () { + var $this = $(this); + $this.AjaxSlider({ + dataUrl : sliderUrl, + dataSel : 'div.center>div', + scrollBy: '130px', + }); + }); + initialize_swipe(".ajaxSlider"); + }); + </script> </metal:block> </head> <body> @@ -70,15 +86,17 @@ <div class="sidebar" metal:fill-slot="sidebar"> <!-- this project is part of --> + <tal:block tal:condition="oldnav"> <div class="sideblock" tal:define="parents here/getSuperProjects;" tal:condition="parents"> <div class="project parent"> Part of: <a tal:define="parent python:parents[-1]" tal:content="parent/getLabel" - tal:attributes="href python:parent.getUrl(baseUrl=proBaseUrl)+test(here.isArchivedProject(),'?showArchive=yes','')" /> + tal:attributes="href python:parent.getUrl(baseUrl=proBaseUrl)+test(here.isArchivedProject(),'?archived=2','')" /> </div> <!-- end parent --> </div> + </tal:block> <!-- sideblock --> <!-- related projects --> @@ -136,34 +154,35 @@ <!-- related publications --> <!-- projects covered --> + <tal:block tal:condition="oldnav"> <div class="sideblock" - tal:define="showArchive python:(request.get('showArchive','no')=='yes'); - children here/getSubProjects;" + tal:define="children python:here.getSubProjects(archived=archived);" tal:condition="children"> <h2> Projects <span class="proj_state"> - <a href="?" tal:omit-tag="python:not (here.isArchivedProject() or showArchive)">current</a> + <a href="?" tal:omit-tag="python:not (here.isArchivedProject() or archived==2)">current</a> - <a href="?showArchive=yes" tal:omit-tag="python:here.isArchivedProject() or showArchive">completed</a> + <a href="?archived=2" tal:omit-tag="python:here.isArchivedProject() or archived==2">completed</a> </span> </h2> <tal:y tal:repeat="child children"> - <tal:x tal:condition="python:not (child.isArchivedProject() or showArchive)"> + <tal:x tal:condition="python:not child.isArchivedProject()"> <div class="project"> <a tal:content="child/getLabel" tal:attributes="href python:child.getUrl(baseUrl=proBaseUrl)" /> </div> </tal:x> - <tal:x tal:condition="python:child.isArchivedProject() and (here.isArchivedProject() or showArchive)"> + <tal:x tal:condition="python:child.isArchivedProject()"> <div class="project inactive" tal:define="started child/getStartedAt"> <a tal:content="child/getLabel" - tal:attributes="href python:child.getUrl(baseUrl=proBaseUrl)" /> + tal:attributes="href python:child.getUrl(baseUrl=proBaseUrl)+'?archived=2'" /> (<span tal:condition="started" tal:content="string:$started-"/><tal:x tal:condition="not:started">Completed: </tal:x><span tal:content="child/getCompletedAt"/>) </div> </tal:x> </tal:y> </div> + </tal:block> <!-- projects covered --> <!-- custom info blocks --> @@ -230,5 +249,40 @@ </div> <!-- sidebar --> + <!-- subrow --> + <div id="subrow" metal:fill-slot="subrow" + tal:define="projects python:here.getProjectsAsList(start=pNum, filter=lambda p:p.getNumber()!=pNum and p.getProjectType()=='Project');" + tal:condition="projects"> + <div class="leftbox"></div> + <div class="main"> + <!-- sub-project thumbs --> + <div class="box"> + <div tal:attributes="class python:test(len(projects)>5, 'ajaxSlider', None);"> + <div class="row quintuple"> + <div class="col" tal:repeat="project python:projects[:5]"> + <div class="mini project" + tal:define="url python:project.getUrl(baseUrl=proBaseUrl)"> + <div class="thumb"> + <a tal:attributes="href url"><img + tal:attributes="src python:project.getThumbUrl(default=root+'/images/dummy_thumb.jpg')" /></a> + </div> + <div class="title"> + <a tal:attributes="href url" + tal:content="project/getLabel"> Mental Models in + the History of Knowledge </a> + </div> + <div class="author" + tal:content="python:project.getContent('xdata_01')"> + Matteo Valleriani, Jürgen Renn</div> + </div> + </div> + </div> + <!-- /row --> + </div> + <!-- /item --> + </div> + </div> + </div> + </body> </html> \ No newline at end of file
--- a/zpt/www/main_template.zpt Fri Sep 05 11:44:40 2014 +0200 +++ b/zpt/www/main_template.zpt Tue Sep 30 13:59:13 2014 +0200 @@ -100,6 +100,8 @@ <metal:block metal:define-slot="sidebar" /><!-- /sidebar --> </div><!-- /maincontent --> + + <metal:block metal:define-slot="subrow"/> <div id="footservices"> <div class="text">