--- a/src/pyams_default_theme/shared/site/folder.py Sun Nov 11 20:05:10 2018 +0100
+++ b/src/pyams_default_theme/shared/site/folder.py Mon Nov 12 11:35:52 2018 +0100
@@ -12,12 +12,18 @@
__docformat__ = 'restructuredtext'
-from pyams_content.shared.site.interfaces import ISiteFolder
+from pyramid.httpexceptions import HTTPSeeOther
+
+from pyams_content.shared.site import ISiteElementNavigation
+from pyams_content.shared.site.interfaces import FOLDER_REDIRECT_DISPLAY_MODE, ISiteFolder
from pyams_default_theme.interfaces import IContentSummaryInfo
-from pyams_content.shared.site import ISiteElementNavigation
from pyams_i18n.interfaces import II18n
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_portal.views import PortalContextIndexPage, PortalContextPreviewPage
from pyams_skin.layer import IPyAMSUserLayer
from pyams_utils.adapter import ContextRequestAdapter, adapter_config
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
+from pyams_utils.url import relative_url
from pyams_workflow.interfaces import IWorkflowPublicationInfo
from pyams_content import _
@@ -52,3 +58,27 @@
return None
button_title = _("Consult folder")
+
+
+@pagelet_config(name='', context=ISiteFolder, layer=IPyAMSUserLayer)
+class SiteFolderIndexPage(PortalContextIndexPage):
+ """Site folder index page"""
+
+ def __call__(self, **kwargs):
+ if self.context.navigation_mode == FOLDER_REDIRECT_DISPLAY_MODE:
+ target = next(self.context.get_visible_items(self.request), None)
+ if target is not None:
+ return HTTPSeeOther(relative_url(target, request=self.request))
+ return super(SiteFolderIndexPage, self).__call__(**kwargs)
+
+
+@pagelet_config(name='preview.html', context=ISiteFolder, layer=IPyAMSUserLayer, permission=VIEW_SYSTEM_PERMISSION)
+class SiteFolderPreviewPage(PortalContextPreviewPage):
+ """Site folder preview page"""
+
+ def __call__(self, **kwargs):
+ if self.context.navigation_mode == FOLDER_REDIRECT_DISPLAY_MODE:
+ target = next(self.context.get_visible_items(self.request), None)
+ if target is not None:
+ return HTTPSeeOther(relative_url(target, request=self.request, view_name='preview.html'))
+ return super(SiteFolderPreviewPage, self).__call__(**kwargs)