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} &rarr; ${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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.