[silva.core.smi][Sylvain Viollon] Add a site configuration scree...
[email protected] Tue, 22 Oct 2013 17:31:20 +0200
| Newsgroups | gmane.comp.web.zope.silva.cvs |
|---|---|
| Message-ID | <[email protected]> |
author: Sylvain Viollon
date: Tue Oct 22 17:31:16 2013 +0200
revision: 704:8e6ba8e6a4b8 in silva.core.smi
branch: 2.4
details: https://hg.infrae.com/silva.core.smi?cmd=changeset;node=8e6ba8e6a4b8
modified: src/silva/core/smi/about.py src/silva/core/smi/admin.py src/silva/core/smi/admin_templates/configurationscreen.cpt src/silva/core/smi/userinfo.py
added: src/silva/core/smi/admin.py src/silva/core/smi/admin_templates/configurationscreen.cpt
removed:
log: Add a site configuration screen that is a list of services. Services
forms will now be available inside the SMI.
diffstat:
src/silva/core/smi/about.py | 2 +-
src/silva/core/smi/admin.py | 53 ++++++++++++
src/silva/core/smi/admin_templates/configurationscreen.cpt | 58 ++++++++++++++
src/silva/core/smi/userinfo.py | 2 +-
4 files changed, 113 insertions(+), 2 deletions(-)
diffs (143 lines):
diff -r 47f8bcb11871 -r 8e6ba8e6a4b8 src/silva/core/smi/about.py
--- a/src/silva/core/smi/about.py Wed Oct 09 15:56:03 2013 +0200
+++ b/src/silva/core/smi/about.py Tue Oct 22 17:31:16 2013 +0200
@@ -40,7 +40,7 @@
class AboutMenu(LinkMenuItem):
grok.adapts(UserSettingsMenu, Interface)
- grok.order(10)
+ grok.order(0)
name = _('About')
icon = 'about'
trigger = 'text-overlay'
diff -r 47f8bcb11871 -r 8e6ba8e6a4b8 src/silva/core/smi/admin.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/silva/core/smi/admin.py Tue Oct 22 17:31:16 2013 +0200
@@ -0,0 +1,53 @@
+
+from Acquisition import aq_parent
+
+from five import grok
+from silva.core.interfaces import IContainer, IRoot
+from silva.core.interfaces import IIconResolver, ISiteManager
+from silva.core.interfaces import ISilvaService, ISilvaInvisibleService
+from silva.translations import translate as _
+from silva.ui import rest
+from silva.ui.menu import MenuItem
+
+from .userinfo import UserSettingsMenu
+
+
+class ConfigurationScreen(rest.PageWithTemplateREST):
+ grok.adapts(rest.Screen, IContainer)
+ grok.name('admin')
+ grok.require('zope2.ViewManagementScreens')
+
+ def get_menu_title(self):
+ return _("Site Configuration")
+
+ def get_services(self, container):
+ services = []
+ for candidate in container.objectValues():
+ if ISilvaService.providedBy(candidate):
+ if not ISilvaInvisibleService.providedBy(candidate):
+ # We assume service icons are URLs
+ services.append({
+ 'name': candidate.meta_type,
+ 'icon': self.get_icon(candidate),
+ 'path': self.get_content_path(candidate)})
+ return sorted(services, key=lambda i: i['name'].lower())
+
+ def update(self):
+ self.get_icon = IIconResolver(self.request).get_content_url
+ self.main_services = self.get_services(self.context.get_root())
+ self.local_services = None
+ container = self.context.get_publication()
+ while not IRoot.providedBy(container):
+ if ISiteManager(container).is_site():
+ self.local_services = self.get_services(container)
+ break
+ container = aq_parent(container).get_publication()
+
+
+class ConfiguationMenu(MenuItem):
+ grok.adapts(UserSettingsMenu, IContainer)
+ grok.order(10)
+ grok.require('zope2.ViewManagementScreens')
+ name = _('Site Preferences')
+ icon = 'preferences'
+ screen = ConfigurationScreen
diff -r 47f8bcb11871 -r 8e6ba8e6a4b8 src/silva/core/smi/admin_templates/configurationscreen.cpt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/silva/core/smi/admin_templates/configurationscreen.cpt Tue Oct 22 17:31:16 2013 +0200
@@ -0,0 +1,58 @@
+<tal:screen>
+ <div class="listing-header">
+ <table>
+ <colgroup>
+ <col width="36" />
+ <col />
+ </colgroup>
+ <tr>
+ <th />
+ <th i18n:translate="">Configuration</th>
+ </tr>
+ </table>
+ </div>
+ <dl class="listing" i18n:domain="silva">
+ <dt i18n:translate="">Global Configuration</dt>
+ <dd>
+ <table>
+ <colgroup>
+ <col width="26" />
+ <col />
+ </colgroup>
+ <tr class="item" tal:repeat="service rest.main_services">
+ <td>
+ <ins class="icon"
+ style="background:url(${service.icon}) no-repeat center center;" />
+ </td>
+ <td>
+ <a class="open-screen" rel="admin" href="${service.path}"
+ tal:content="service.name">Service</a>
+ </td>
+ </tr>
+ </table>
+ </dd>
+ <tal:local tal:condition="rest.local_services">
+ <dt i18n:translate="">Local Configuration</dt>
+ <dd>
+ <table>
+ <colgroup>
+ <col width="26" />
+ <col />
+ </colgroup>
+ <tr class="item" tal:repeat="service rest.local_services">
+ <td>
+ <ins class="icon"
+ style="background:url(${service.icon}) no-repeat center center;" />
+ </td>
+ <td>
+ <a class="open-screen" rel="admin" href="${service.path}"
+ tal:content="service.name">Service</a>
+ </td>
+ </tr>
+ </table>
+ </dd>
+ </tal:local>
+ </dl>
+ <div class="listing-footer">
+ </div>
+</tal:screen>
diff -r 47f8bcb11871 -r 8e6ba8e6a4b8 src/silva/core/smi/userinfo.py
--- a/src/silva/core/smi/userinfo.py Wed Oct 09 15:56:03 2013 +0200
+++ b/src/silva/core/smi/userinfo.py Tue Oct 22 17:31:16 2013 +0200
@@ -126,7 +126,7 @@
class PreferencesMenu(LinkMenuItem):
grok.adapts(UserSettingsMenu, Interface)
grok.order(5)
- name = _('Preferences')
+ name = _('User Preferences')
icon = 'preferences'
trigger = 'form-popup'