Products.CMFPlone/plip-1486-redirection: add view manage-aliases
Stephan Klinger <jenkins-z4DKO/[email protected]>
| Newsgroups | gmane.comp.web.zope.plone.cvs |
|---|---|
| Message-ID | <[email protected]> |
Repository: Products.CMFPlone Branch: refs/heads/plip-1486-redirection Date: 2017-07-10T09:31:40+03:00 Author: Philip Bauer (pbauer) <[email protected]> Commit: https://github.com/plone/Products.CMFPlone/commit/92299ac56de1dc6424bb73a027e449f02df36015 add view manage-aliases remove managed-types from aliases-controlpanel (for now) store redirection_manageable_types in ITypesSchema Files changed: M Products/CMFPlone/controlpanel/browser/configure.zcml M Products/CMFPlone/controlpanel/browser/redirects-controlpanel.pt M Products/CMFPlone/controlpanel/browser/redirects-manage.pt M Products/CMFPlone/controlpanel/browser/redirects.py M Products/CMFPlone/interfaces/controlpanel.py diff --git a/Products/CMFPlone/controlpanel/browser/configure.zcml b/Products/CMFPlone/controlpanel/browser/configure.zcml index 1c1c008e6..3d35108ce 100644 --- a/Products/CMFPlone/controlpanel/browser/configure.zcml +++ b/Products/CMFPlone/controlpanel/browser/configure.zcml @@ -292,12 +292,18 @@ /> <browser:page - name="redirection-controlpanel" - for="*" - class=".redirects.RedirectsControlPanel" - permission="cmf.ManagePortal" - /> + name="redirection-controlpanel" + for="Products.CMFPlone.interfaces.IPloneSiteRoot" + class=".redirects.RedirectsControlPanel" + permission="cmf.ManagePortal" + /> - <adapter factory=".redirects.RedirectsControlPanelAdapter" /> + <browser:page + name="manage-aliases" + for="Products.CMFCore.interfaces.IContentish" + class=".redirects.RedirectsView" + permission="cmf.ModifyPortalContent" + allowed_attributes="redirects view_url errors" + /> </configure> diff --git a/Products/CMFPlone/controlpanel/browser/redirects-controlpanel.pt b/Products/CMFPlone/controlpanel/browser/redirects-controlpanel.pt index a7591d41d..93f030bce 100644 --- a/Products/CMFPlone/controlpanel/browser/redirects-controlpanel.pt +++ b/Products/CMFPlone/controlpanel/browser/redirects-controlpanel.pt @@ -47,74 +47,6 @@ Manage aliases </h1> - <p i18n:translate="description_manage_aliases"> - Using this form, you can select for which types you want to manage - aliases and manage all existing aliases. - </p> - - - <form - action="${view/view_url}" - method="post"> - <tal:block tal:repeat="widget python: view.form.widgets.values()"> - - <div - class="field" - tal:define="description widget/field/description; - error widget/error" - tal:attributes="class python:'field'+(error and ' error' or '')"> - - <label - i18n:translate="" - tal:attributes="for widget/name" - tal:content="widget/label"> - label - </label> - - <span - class="fieldRequired" - title="Required" - i18n:attributes="title title_required;" - i18n:translate="label_required" - tal:condition="widget/required"> - (Required) - </span> - - <div - class="formHelp" - i18n:translate="" - tal:content="description" - tal:condition="description"> - field description - </div> - - <div - tal:condition="error" - tal:content="structure error"> - The Error - </div> - - <div - class="widget" - tal:content="structure widget"> - <input type="text" /> - </div> - </div> - - </tal:block> - - <div - class="formControls" - i18n:domain="plone"> - <input - class="context" - type="submit" - value="Save" - name="form.button.Save" - i18n:attributes="value label_save;" /> - </div> - </form> - <form action="${view/view_url}" method="post"> @@ -194,12 +126,14 @@ <tal:redirects repeat="redirect view/redirects"> <div> + <label> <input type="checkbox" class="noborder" name="redirects:tuple" value="${redirect/redirect}" /> ${redirect/path} → ${redirect/redirect-to} + </label> </div> </tal:redirects> diff --git a/Products/CMFPlone/controlpanel/browser/redirects-manage.pt b/Products/CMFPlone/controlpanel/browser/redirects-manage.pt index 23f1c3a80..19f58b9a2 100644 --- a/Products/CMFPlone/controlpanel/browser/redirects-manage.pt +++ b/Products/CMFPlone/controlpanel/browser/redirects-manage.pt @@ -75,12 +75,14 @@ <tal:redirects repeat="redirect view/redirects"> <div> + <label> <input type="checkbox" class="noborder" name="redirects:tuple" tal:attributes="value redirect/redirect" /> - <span tal:replace="redirect/path" /> + <span tal:replace="redirect/path" /> + </label> </div> </tal:redirects> diff --git a/Products/CMFPlone/controlpanel/browser/redirects.py b/Products/CMFPlone/controlpanel/browser/redirects.py index 14a5c9918..e44b9dc90 100644 --- a/Products/CMFPlone/controlpanel/browser/redirects.py +++ b/Products/CMFPlone/controlpanel/browser/redirects.py @@ -1,31 +1,18 @@ -import csv -from cStringIO import StringIO - -from zope.interface import implementer -from zope.interface import Interface -from zope.component import adapts -from zope.component import getUtility -from zope.schema import Choice, Tuple - +# -*- coding: utf-8 -*- from AccessControl import getSecurityManager -#from Products.RedirectionTool.permissions import ModifyAliases +from cStringIO import StringIO +from plone.app.redirector.interfaces import IRedirectionStorage +from plone.memoize.instance import memoize +from Products.CMFCore.interfaces import ISiteRoot from Products.CMFCore.permissions import ManagePortal - from Products.Five.browser import BrowserView from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile - from Products.statusmessages.interfaces import IStatusMessage -from Products.CMFCore.interfaces import ISiteRoot -from Products.CMFCore.utils import getToolByName -from Products.CMFPlone.interfaces import IPloneSiteRoot -from plone.app.redirector.interfaces import IRedirectionStorage - - -from z3c.form import form, field +from zope.component import getUtility +from zope.i18nmessageid import MessageFactory -from plone.memoize.instance import memoize +import csv -from zope.i18nmessageid import MessageFactory _ = MessageFactory('plone') @@ -131,42 +118,8 @@ def view_url(self): return self.context.absolute_url() + '/@@manage-aliases' -class IAliasesSchema(Interface): - - managed_types = Tuple(title=_(u"Managed types"), - description=_(u"Select the types for which the " - "aliases can be managed"), - required=True, - missing_value=tuple(), - value_type=Choice( - vocabulary="plone.app.vocabularies.ReallyUserFriendlyTypes")) - - -@implementer(IAliasesSchema) -class RedirectsControlPanelAdapter(object): - - adapts(IPloneSiteRoot) - - def __init__(self, context): - self.context = context - self.rt = getUtility(IRedirectionStorage) - - def get_managed_types(self): - return self.rt.getRedirectionAllowedForTypes() - - def set_managed_types(self, value): - if type(value) in (str, unicode): - value = [value] - self.rt.setRedirectionAllowedForTypes(value) - - managed_types = property(get_managed_types, set_managed_types) - - -class RedirectsControlPanelForm(form.EditForm): - fields = field.Fields(IAliasesSchema) - - class RedirectsControlPanel(BrowserView): + template = ViewPageTemplateFile('redirects-controlpanel.pt') def __init__(self, context, request): @@ -217,16 +170,11 @@ def __call__(self): status.addStatusMessage(_(u"Aliases removed."), type='info') else: status.addStatusMessage(_(u"Alias removed."), type='info') - elif 'form.button.Save' in form: - dst = IAliasesSchema(self.context) - dst.managed_types = self.request.form['form.widgets.managed_types'] elif 'form.button.Add' in form: self.add(form['redirection'], form['target_path'], portal, storage, status) elif 'form.button.Upload' in form: self.upload(form['file'], portal, storage, status) - self.form = RedirectsControlPanelForm(self.context, self.request) - self.form.update() return self.template() def add(self, redirection, target, portal, storage, status): @@ -234,7 +182,7 @@ def add(self, redirection, target, portal, storage, status): abs_redirection, err = absolutize_path(redirection, is_alias=True) abs_target, target_err = absolutize_path(target, is_alias=False) - + if err and target_err: err = "{0} {1}".format(err, target_err) elif target_err: diff --git a/Products/CMFPlone/interfaces/controlpanel.py b/Products/CMFPlone/interfaces/controlpanel.py index e6526b644..de895c838 100644 --- a/Products/CMFPlone/interfaces/controlpanel.py +++ b/Products/CMFPlone/interfaces/controlpanel.py @@ -1379,6 +1379,25 @@ class ITypesSchema(Interface): value_type=schema.TextLine() ) + redirection_manageable_types = schema.Tuple( + title=_(u"Manage redirects for types"), + description=_(u"Select the types for which the " + "aliases can be managed"), + required=False, + default=( + 'Image', + 'File', + 'Link', + 'News Item', + 'Folder', + 'Document', + 'Event' + ), + missing_value=(), + value_type=schema.Choice( + source='plone.app.vocabularies.ReallyUserFriendlyTypes') + ) + class IMailSchema(Interface): ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot