From 8feec5dc34cf01358610a67453326a00813bee18 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 9 Feb 2012 17:40:47 +0100 Subject: [PATCH 01/11] allow configuration of display value for relation fields --- expert/field.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/expert/field.py b/expert/field.py index e1de141..ab21814 100644 --- a/expert/field.py +++ b/expert/field.py @@ -51,6 +51,7 @@ class UrlField(Field): class RelationField(Field): renderer = 'target' + displayAttribute = 'title' def getValue(self, row): return self.getRawValue(row) @@ -60,7 +61,7 @@ class RelationField(Field): if value is None: return dict(title=u'', url=u'') nv = row.parent.context.view.nodeView - return dict(title=value.title, + return dict(title=getattr(value, self.displayAttribute), url=nv.getUrlForTarget(baseObject(value))) From 86da0990e12e7a637120e7a4a6c30d86212f063f Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 10 Feb 2012 07:52:18 +0100 Subject: [PATCH 02/11] add date field for reporting --- expert/field.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/expert/field.py b/expert/field.py index ab21814..8d770bc 100644 --- a/expert/field.py +++ b/expert/field.py @@ -20,6 +20,8 @@ Field definitions for reports. """ +from zope.i18n.locales import locales + from cybertools.composer.report.field import Field from cybertools.composer.report.result import ResultSet from loops.common import baseObject @@ -36,6 +38,24 @@ class TextField(Field): return row.parent.context.view.renderText(value, self.format) +class DateField(Field): + + format = ('date', 'short') + + def getDisplayValue(self, row): + value = self.getRawValue(row) + if not value: + return u'' + nv = row.parent.context.view.nodeView + langInfo = nv and getattr(nv, 'languageInfo', None) or None + if langInfo: + locale = locales.getLocale(langInfo.language) + fmt = locale.dates.getFormatter(*self.format) + return fmt.format(value) + else: + return value.isoformat()[:10] + + class UrlField(Field): renderer = 'target' From 0a6ba7bab1ce6582a67a9dd4ad98c93d833c7209 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 10 Feb 2012 18:13:28 +0100 Subject: [PATCH 03/11] bug fix: ignore target (and metadata) if view is not a node view, e.g. when in the management interface --- browser/skin/controller.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/skin/controller.py b/browser/skin/controller.py index 29418cf..f9e4a85 100644 --- a/browser/skin/controller.py +++ b/browser/skin/controller.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2011 Helmut Merz helmutm@cy55.de +# Copyright (c) 2012 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ class Controller(BaseController): def setupMetadata(self): macros = self.macros - target = self.view.virtualTarget + target = getattr(self.view, 'virtualTarget', None) if target is not None: desc = target.dcDescription if desc: From 7ca57713d5d5b7a37415202027cc411bf98b1337 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 11 Feb 2012 11:48:09 +0100 Subject: [PATCH 04/11] always call assignConcepts() on saving; some clean-ups... --- browser/action.py | 11 +---------- browser/form.py | 11 +++-------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/browser/action.py b/browser/action.py index e7ab214..a964fe2 100644 --- a/browser/action.py +++ b/browser/action.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2009 Helmut Merz helmutm@cy55.de +# Copyright (c) 2012 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,8 +18,6 @@ """ Base classes (sort of views) for action portlet items. - -$Id$ """ from urllib import urlencode @@ -75,7 +73,6 @@ class DialogAction(Action): @Lazy def url(self): - #return '%s/%s' % (self.page.getUrlForTarget(self.view), self.viewName) if self.target is not None: url = self.page.getUrlForTarget(self.target) else: @@ -96,9 +93,6 @@ class DialogAction(Action): if self.viewTitle: urlParams['view_title'] = self.viewTitle urlParams.update(self.addParams) - #url = self.page.getUrlForTarget(self.view) - #return self.jsOnClick % (self.dialogName, url, self.viewName, - # urlencode(urlParams)) if self.target is not None: url = self.page.getUrlForTarget(self.target) else: @@ -116,7 +110,6 @@ class DialogAction(Action): actions.register('info', 'object', DialogAction, description=_(u'Information about this object.'), viewName='object_info.html', - #dialogName='object_info', dialogName='', icon='cybertools.icons/info.png', cssClass='icon-action', @@ -152,8 +145,6 @@ actions.register('create_concept', 'portlet', DialogAction, viewName='create_concept.html', dialogName='createConcept', qualifier='create_concept', - #typeToken='.loops/concepts/topic', - #fixedType=True, innerForm='inner_concept_form.html', ) diff --git a/browser/form.py b/browser/form.py index f30b120..99ead4c 100644 --- a/browser/form.py +++ b/browser/form.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2010 Helmut Merz helmutm@cy55.de +# Copyright (c) 2012 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,8 +18,6 @@ """ Classes for form presentation and processing. - -$Id$ """ from zope import component, interface, schema @@ -561,8 +559,8 @@ class EditObject(FormController, I18NView): if k.startswith('state.'): stateKeys.append(k) self.collectAutoConcepts() - if self.old or self.selected: - self.assignConcepts(obj) + #if self.old or self.selected: + self.assignConcepts(obj) for k in stateKeys: self.updateState(k) notify(ObjectModifiedEvent(obj)) @@ -641,7 +639,6 @@ class EditObject(FormController, I18NView): form = self.request.form if form.get('version.create'): versionable = IVersionable(obj) - #level = int(form.get('version.level', 1)) level = int(form.get('version.level', 0)) version = versionable.createVersion(level) notify(ObjectCreatedEvent(version)) @@ -712,8 +709,6 @@ class EditConcept(EditObject): obj.deassignParent(concept, predicates) def update(self): - #self.object = self.view.virtualTargetObject - #self.object = self.view.item.context self.object = self.view.item.target formState = self.updateFields() self.view.formState = formState From bcb195148b40411c402c3779ac87019500d7e152 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 11 Feb 2012 11:51:33 +0100 Subject: [PATCH 05/11] allow for integer timestamp values, e.g. from tracks --- expert/field.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/expert/field.py b/expert/field.py index 8d770bc..7c50b60 100644 --- a/expert/field.py +++ b/expert/field.py @@ -24,6 +24,7 @@ from zope.i18n.locales import locales from cybertools.composer.report.field import Field from cybertools.composer.report.result import ResultSet +from cybertools.util.date import timeStamp2Date from loops.common import baseObject from loops.expert.report import ReportInstance from loops import util @@ -46,6 +47,8 @@ class DateField(Field): value = self.getRawValue(row) if not value: return u'' + if isinstance(value, int): + value = timeStamp2Date(value) nv = row.parent.context.view.nodeView langInfo = nv and getattr(nv, 'languageInfo', None) or None if langInfo: From 2b413e5f5887c4ea9a314d71c33d5ed144d20ab9 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 16 Feb 2012 09:40:17 +0100 Subject: [PATCH 06/11] provide actions for working with MicroArticles --- browser/loops.css | 10 +++++++++- compound/microart/browser.py | 20 ++++++++++++++++++++ locales/de/LC_MESSAGES/loops.mo | Bin 16160 -> 16432 bytes locales/de/LC_MESSAGES/loops.po | 14 +++++++++++++- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/browser/loops.css b/browser/loops.css index e4790e5..6c24dec 100644 --- a/browser/loops.css +++ b/browser/loops.css @@ -1,5 +1,4 @@ /* - $Id$ settings specific for view / node objects @@ -467,6 +466,15 @@ div.comment { padding-top: 0.4em; } +/* microart */ + +.micropart { + background-color: #f7f7f7; + padding: 0 5px 0 5px; + margin: 5px 0 5px 0; + text-decoration: none; +} + /* calendar, work items */ .today { diff --git a/compound/microart/browser.py b/compound/microart/browser.py index 816bc30..b9359fc 100755 --- a/compound/microart/browser.py +++ b/compound/microart/browser.py @@ -26,12 +26,32 @@ from zope import component from zope.app.pagetemplate import ViewPageTemplateFile from zope.cachedescriptors.property import Lazy +from loops.browser.action import actions, DialogAction from loops.browser.concept import ConceptView from loops.common import adapted from loops import util from loops.util import _ +actions.register('create_microart', 'portlet', DialogAction, + title=_(u'Create MicroArticle...'), + description=_(u'Create a new MicroArticle.'), + viewName='create_concept.html', + dialogName='createConcept', + typeToken='.loops/concepts/microart', + fixedType=True, + #prerequisites=['registerDojoTextWidget'], +) + +actions.register('edit_microart', 'portlet', DialogAction, + title=_(u'Edit MicroArticle...'), + description=_(u'Modify MicroArticle.'), + viewName='edit_concept.html', + dialogName='editConcept', + #prerequisites=['registerDojoTextWidget'], +) + + view_macros = ViewPageTemplateFile('view_macros.pt') diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index bbd614853603afa33b85582abf26286edd13cdc4..4ab90f5403fe0de38d11f4fd32198e26ad79a711 100644 GIT binary patch delta 6394 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 diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index a5bea16..c702499 100644 --- a/locales/de/LC_MESSAGES/loops.po +++ b/locales/de/LC_MESSAGES/loops.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: $Id$\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n" -"PO-Revision-Date: 2011-12-02 12:00 CET\n" +"PO-Revision-Date: 2012-02-16 12:00 CET\n" "Last-Translator: Helmut Merz \n" "Language-Team: loops developers \n" "MIME-Version: 1.0\n" @@ -108,6 +108,18 @@ msgstr "Tagebuch exportieren" # micro article +msgid "Edit MicroArticle..." +msgstr "MikroArtikel bearbeiten..." + +msgid "Modify MicroArticle." +msgstr "Tagebucheintrag ändern." + +msgid "Create MicroArticle..." +msgstr "Tagebucheintrag anlegen..." + +msgid "Create a new MicroArticle." +msgstr "Einen neuen Tagebucheintrag erzeugen" + msgid "Story" msgstr "Story" From 06a117f5d739398838cfc84c04d562c1115903e5 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 16 Feb 2012 09:50:29 +0100 Subject: [PATCH 07/11] provide actions for working with MicroArticles, + CSS improvements --- browser/loops.css | 7 ++++++- locales/de/LC_MESSAGES/loops.mo | Bin 16432 -> 16570 bytes locales/de/LC_MESSAGES/loops.po | 12 +++++++++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/browser/loops.css b/browser/loops.css index 6c24dec..a58473d 100644 --- a/browser/loops.css +++ b/browser/loops.css @@ -472,7 +472,12 @@ div.comment { background-color: #f7f7f7; padding: 0 5px 0 5px; margin: 5px 0 5px 0; - text-decoration: none; +} + +.micropart h3,h4,h5 { + font-weight: bold; + margin-bottom: 0.2em; + border-bottom: none; } /* calendar, work items */ diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index 4ab90f5403fe0de38d11f4fd32198e26ad79a711..0a47ea72d8af3a0b0d56aa7b44f4adba0d7f6208 100644 GIT binary patch delta 6453 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 diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index c702499..ffdfd5f 100644 --- a/locales/de/LC_MESSAGES/loops.po +++ b/locales/de/LC_MESSAGES/loops.po @@ -111,14 +111,20 @@ msgstr "Tagebuch exportieren" msgid "Edit MicroArticle..." msgstr "MikroArtikel bearbeiten..." +msgid "Edit MicroArticle" +msgstr "MikroArtikel bearbeiten" + msgid "Modify MicroArticle." -msgstr "Tagebucheintrag ändern." +msgstr "MikroArtikel ändern." msgid "Create MicroArticle..." -msgstr "Tagebucheintrag anlegen..." +msgstr "MikroArtikel anlegen..." msgid "Create a new MicroArticle." -msgstr "Einen neuen Tagebucheintrag erzeugen" +msgstr "Einen neuen MikroArtikel erzeugen" + +msgid "Create MicroArticle" +msgstr "MikroArtikel anlegen" msgid "Story" msgstr "Story" From b55ee6a7dd0ef64844b469ab2d1d5b1ce50f4160 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 17 Feb 2012 13:47:39 +0100 Subject: [PATCH 08/11] bug fix for comments: use correct target URL --- organize/comment/browser.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/organize/comment/browser.py b/organize/comment/browser.py index 1d6acad..1a46402 100644 --- a/organize/comment/browser.py +++ b/organize/comment/browser.py @@ -57,7 +57,8 @@ class CommentsView(NodeView): @Lazy def addUrl(self): - return '%s/create_comment.html' % self.getUrlForTarget(self.context) + return '%s/create_comment.html' % self.virtualTargetUrl + #return '%s/create_comment.html' % self.getUrlForTarget(self.context) @Lazy def addOnClick(self): From c25367013151e1e1b1183de21f2c450029f64846 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 25 Feb 2012 09:46:13 +0100 Subject: [PATCH 09/11] add header and list parts with thumbnail images --- browser/lobo/configure.zcml | 16 ++++++++++++++++ browser/lobo/standard.py | 14 ++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/browser/lobo/configure.zcml b/browser/lobo/configure.zcml index e24df89..d179e44 100644 --- a/browser/lobo/configure.zcml +++ b/browser/lobo/configure.zcml @@ -23,6 +23,14 @@ factory="loops.browser.lobo.standard.Grid3" permission="zope.View" /> + + + +

- +
diff --git a/browser/skin/lobo/lobo.css b/browser/skin/lobo/lobo.css index 5a4f624..d051940 100644 --- a/browser/skin/lobo/lobo.css +++ b/browser/skin/lobo/lobo.css @@ -63,6 +63,12 @@ ol, ul, p { margin-bottom: 0.5em; } +/* no vertical spacing for descriptions in grids */ +div.legend i p { + margin-top: 0; + margin-bottom: 0; +} + ol, ul { padding-left: 2em; } From 17de8893ae7314ffc06a8dd5ac4221bc97507188 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 25 Feb 2012 17:11:39 +0100 Subject: [PATCH 11/11] rearrane CSS class properties --- browser/skin/lobo/lobo.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/browser/skin/lobo/lobo.css b/browser/skin/lobo/lobo.css index d051940..97949b4 100644 --- a/browser/skin/lobo/lobo.css +++ b/browser/skin/lobo/lobo.css @@ -63,12 +63,6 @@ ol, ul, p { margin-bottom: 0.5em; } -/* no vertical spacing for descriptions in grids */ -div.legend i p { - margin-top: 0; - margin-bottom: 0; -} - ol, ul { padding-left: 2em; } @@ -490,6 +484,12 @@ img.notselected { margin-top: 5px; } +/* no vertical spacing for descriptions in grids */ +div.legend i p { + margin-top: 0; + margin-bottom: 0; +} + /* comments */ div.comment {