7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 from pyams_form.form import ajax_config, AJAXAddForm |
|
13 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager |
|
14 from pyams_form.schema import CloseButton |
|
15 from pyams_skin.help import ContentHelp |
|
16 from pyams_skin.interfaces.viewlet import IToolbarViewletManager |
|
17 from pyams_skin.skin import apply_skin |
|
18 from pyams_skin.viewlet.toolbar import ToolbarAction |
|
19 from pyams_template.template import template_config |
|
20 from pyams_utils.request import copy_request |
|
21 from pyams_zmi.form import AdminDialogAddForm |
|
22 |
12 |
23 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
24 |
14 |
25 |
15 |
26 # import standard library |
16 # import standard library |
27 import json |
17 import json |
28 |
18 |
29 # import interfaces |
19 # import interfaces |
30 from pyams_content.features.redirect.interfaces import IRedirectionManagerTarget, IRedirectionManager |
20 from pyams_content.features.redirect.interfaces import IRedirectionManagerTarget, IRedirectionManager |
31 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION |
21 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION |
|
22 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager |
32 from pyams_i18n.interfaces import II18n |
23 from pyams_i18n.interfaces import II18n |
33 from pyams_sequence.interfaces import ISequentialIdInfo |
24 from pyams_sequence.interfaces import ISequentialIdInfo |
34 from pyams_skin.interfaces import IPageHeader, IUserSkinnable, IContentHelp |
25 from pyams_skin.interfaces import IPageHeader, IUserSkinnable, IContentHelp |
|
26 from pyams_skin.interfaces.viewlet import IToolbarViewletManager |
35 from pyams_skin.layer import IPyAMSLayer |
27 from pyams_skin.layer import IPyAMSLayer |
36 from pyams_zmi.interfaces.menu import ISiteManagementMenu |
28 from pyams_zmi.interfaces.menu import ISiteManagementMenu |
37 from pyams_zmi.layer import IAdminLayer |
29 from pyams_zmi.layer import IAdminLayer |
38 from z3c.table.interfaces import IValues, IColumn |
30 from z3c.table.interfaces import IValues, IColumn |
39 |
31 |
40 # import packages |
32 # import packages |
41 from pyams_content.skin import pyams_content |
33 from pyams_content.skin import pyams_content |
|
34 from pyams_form.form import AJAXAddForm |
|
35 from pyams_form.schema import CloseButton |
42 from pyams_pagelet.pagelet import pagelet_config |
36 from pyams_pagelet.pagelet import pagelet_config |
|
37 from pyams_skin.help import ContentHelp |
43 from pyams_skin.page import DefaultPageHeaderAdapter |
38 from pyams_skin.page import DefaultPageHeaderAdapter |
|
39 from pyams_skin.skin import apply_skin |
44 from pyams_skin.table import BaseTable, SorterColumn, VisibilitySwitcherColumn, TrashColumn, I18nColumn |
40 from pyams_skin.table import BaseTable, SorterColumn, VisibilitySwitcherColumn, TrashColumn, I18nColumn |
45 from pyams_skin.viewlet.menu import MenuItem |
41 from pyams_skin.viewlet.menu import MenuItem |
|
42 from pyams_skin.viewlet.toolbar import ToolbarAction |
|
43 from pyams_template.template import template_config |
46 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter |
44 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter |
47 from pyams_utils.fanstatic import get_resource_path |
45 from pyams_utils.fanstatic import get_resource_path |
|
46 from pyams_utils.request import copy_request |
48 from pyams_utils.url import absolute_url |
47 from pyams_utils.url import absolute_url |
49 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
48 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
|
49 from pyams_zmi.form import AdminDialogAddForm |
50 from pyams_zmi.view import ContainerAdminView |
50 from pyams_zmi.view import ContainerAdminView |
51 from pyramid.decorator import reify |
51 from pyramid.decorator import reify |
52 from pyramid.exceptions import NotFound |
52 from pyramid.exceptions import NotFound |
53 from pyramid.view import view_config |
53 from pyramid.view import view_config |
54 from z3c.form import field, button |
54 from z3c.form import field, button |
360 def get_ajax_output(self, changes): |
360 def get_ajax_output(self, changes): |
361 message = [] |
361 message = [] |
362 translate = self.request.localizer.translate |
362 translate = self.request.localizer.translate |
363 for rule, source_url, target_url in changes: |
363 for rule, source_url, target_url in changes: |
364 if not message: |
364 if not message: |
365 message.append('{:<40} {:<40} => {:<40}'.format(translate(_("URL pattern")), |
365 message.append('{:<40} | {:<40} | {:<40}'.format(translate(_("Input URL")), |
366 translate(_("Input URL")), |
366 translate(_("URL pattern")), |
367 translate(_("Output URL")))) |
367 translate(_("Output URL")))) |
368 message.append('{:<40} {:<40} => {:<40}'.format('-' * 40, '-' * 40, '-' * 40)) |
368 message.append('{:<40}-|-{:<40}-|-{:<40}'.format('-' * 40, '-' * 40, '-' * 40)) |
369 message.append('{:<40} {:<40} => {:<40}'.format(rule.url_pattern, source_url, target_url)) |
369 message.append('{:<40} | {:<40} | {:<40}'.format(source_url, rule.url_pattern, target_url)) |
370 if not message: |
370 if not message: |
371 message.append(translate(_("No matching rule!"))) |
371 message.append(translate(_("No matching rule!"))) |
372 return { |
372 return { |
373 'status': 'success', |
373 'status': 'success', |
374 'content': {'html': '\n'.join(message)}, |
374 'content': {'html': '\n'.join(message)}, |