From 269df6b860b3fa82efe4e2f8026dd0948093fbcc Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 15 Mar 2010 15:23:00 +0000 Subject: [PATCH] - portal page with - now fully editable - portal links git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3770 fd906abe-77d9-0310-91a1-e0d9ade77398 --- CHANGES.txt | 6 ++++ browser/common.py | 12 +++++-- system/README.txt | 7 ++++ system/site/browser.py | 71 ++++++++++++++++++++++++++++++++++---- system/site/configure.zcml | 18 ++++++++++ system/site/interfaces.py | 54 +++++++++++++++++++++++++++++ system/site/link.py | 41 ++++++++++++++++++++++ system/site/view_macros.pt | 19 ++++++++-- version.py | 2 +- 9 files changed, 219 insertions(+), 11 deletions(-) create mode 100644 system/site/interfaces.py create mode 100644 system/site/link.py diff --git a/CHANGES.txt b/CHANGES.txt index cbe93f5..e84ca84 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,6 +3,12 @@ Change Log $Id$ +1.1 +--- + +- portal page with - now fully editable - portal links +- calendar portlet + 1.0 --- diff --git a/browser/common.py b/browser/common.py index 5bc1c9a..af079a6 100644 --- a/browser/common.py +++ b/browser/common.py @@ -277,10 +277,18 @@ class BaseView(GenericView, I18NView): return self.adapted.description @Lazy - def dcTitle(self): + def dublincore(self): zdc = IZopeDublinCore(self.context) zdc.languageInfo = self.languageInfo - return zdc.title or self.title + return zdc + + @Lazy + def dcTitle(self): + return self.dublincore.title or self.title + + @Lazy + def dcDescription(self): + return self.dublincore.description or self.description @Lazy def headTitle(self): diff --git a/system/README.txt b/system/README.txt index ab90402..e1ea5d0 100644 --- a/system/README.txt +++ b/system/README.txt @@ -46,6 +46,13 @@ In addition to the application site we need a loops system management site. [u'jobs'] +Portal Links +============ + + >>> from loops.system.site.link import Link + >>> from loops.system.site.browser import PortalPage + + Agents and Jobs =============== diff --git a/system/site/browser.py b/system/site/browser.py index 5da05a1..da43553 100644 --- a/system/site/browser.py +++ b/system/site/browser.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2009 Helmut Merz helmutm@cy55.de +# Copyright (c) 2010 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 @@ -28,8 +28,11 @@ from zope.security import canAccess from zope.traversing.api import getParent, getRoot, traverse from zope.traversing.browser import absoluteURL -from loops.browser.common import BaseView +from cybertools.browser.action import actions +from loops.browser.action import DialogAction +from loops.browser.common import BaseView, adapted from loops.browser.concept import ConceptView +from loops.system.site.interfaces import ILink from loops import util from loops.util import _ @@ -37,6 +40,66 @@ from loops.util import _ site_macros = ViewPageTemplateFile('view_macros.pt') +actions.register('createPortalLink', 'portlet', DialogAction, + title=_(u'Create Link...'), + description=_(u'Create a link to a loops site.'), + viewName='create_concept.html', + dialogName='createPortalLink', + typeToken='.loops/concepts/portal_link', + fixedType=True, + innerForm='inner_concept_form.html', +) + +actions.register('editPortalLink', 'portlet', DialogAction, + title=_(u'Edit Link...'), + description=_(u'Modify link.'), + viewName='edit_concept.html', + dialogName='editPortalLink', +) + +class PortalPage(ConceptView): + """ A query view linking to pages on other loops sites. + """ + + @Lazy + def site_macros(self): + return site_macros.macros + + @property + def macro(self): + return self.site_macros['portal_page'] + + @Lazy + def root(self): + return getRoot(self.context) + + @Lazy + def portalLinks(self): + result = [] + for c in self.context.getChildren(): + link = adapted(c) + if ILink.providedBy(link): + site = traverse(self.root, link.site) + path = link.path or 'home' + target = traverse(site, 'views/' + path) + if canAccess(target, 'title'): + siteInfo = SiteDetails(target, self.request) + siteInfo.title = link.title + if link.description: + siteInfo.description = link.description + if link.url: + siteInfo.url = link.url + result.append(siteInfo) + return result + + +class SiteDetails(BaseView): + + pass + + +# old loops_sites.html view + class SitesListing(ConceptView): @Lazy @@ -61,7 +124,3 @@ class SitesListing(ConceptView): result.append(SiteDetails(s, self.request)) return result - -class SiteDetails(BaseView): - - pass diff --git a/system/site/configure.zcml b/system/site/configure.zcml index 5d6ebe1..507909b 100644 --- a/system/site/configure.zcml +++ b/system/site/configure.zcml @@ -5,6 +5,24 @@ xmlns:browser="http://namespaces.zope.org/browser" i18n_domain="loops"> + + + + + + + + + + + + + + + +

loops Sites

-
diff --git a/version.py b/version.py index e1305bf..c201bea 100644 --- a/version.py +++ b/version.py @@ -21,7 +21,7 @@ loops version specifications. """ revision = '$Id$' -version = '0.9' +version = '1.1' package = 'loops' from cybertools.util.version import versions