From 4d53d0acb391dd175087147204797ef0e9a8040c Mon Sep 17 00:00:00 2001 From: jbpenrath Date: Tue, 26 Jan 2021 15:36:52 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(pagetree)=20Page=20node=20can=20be=20?= =?UTF-8?q?foldable=20or=20not=20according=20to=20a=20limit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a setting `CMS_PAGETREE_DESCENDANTS_LIMIT` to define a limit of descendants to allow a page node to be foldable or not. If this setting is not defined, there is no descendants limit. --- cms/admin/pageadmin.py | 2 ++ cms/static/cms/sass/components/pagetree/_tree.scss | 4 ++++ cms/templates/admin/cms/page/tree/menu.html | 9 +++++++-- cms/utils/conf.py | 1 + docs/reference/configuration.rst | 12 ++++++++++++ 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index cb522d923a5..921688110a3 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -1461,6 +1461,7 @@ def get_tree_rows(self, request, pages, language, root_pages, open_nodes=[]): is_popup = (IS_POPUP_VAR in request.POST or IS_POPUP_VAR in request.GET) languages = get_language_list(site.pk) user_can_add = page_permissions.user_can_add_subpage + descendants_limit = get_cms_setting('PAGETREE_DESCENDANTS_LIMIT') def render_page_row(page): page.title_cache = {trans.language: trans for trans in page.filtered_translations} @@ -1486,6 +1487,7 @@ def render_page_row(page): 'node': page.node, 'ancestors': [node.item for node in page.node.get_cached_ancestors()], 'descendants': [node.item for node in page.node.get_cached_descendants()], + 'follow_descendants': page.node.numchild <= descendants_limit, 'request': request, 'lang': language, 'metadata': metadata, diff --git a/cms/static/cms/sass/components/pagetree/_tree.scss b/cms/static/cms/sass/components/pagetree/_tree.scss index 078bfc4c8b8..e091590e7ee 100644 --- a/cms/static/cms/sass/components/pagetree/_tree.scss +++ b/cms/static/cms/sass/components/pagetree/_tree.scss @@ -857,6 +857,9 @@ .jstree-closed > .jstree-ocl { @include icon(arrow-right); } + .jstree-unfoldable > .jstree-ocl { + @include icon(minus); + } .jstree-loading > .jstree-ocl { @include icon(loader); &:before { @@ -905,6 +908,7 @@ } .jstree-open, + .jstree-unfoldable, .jstree-closed, .jstree-loading { > .jstree-anchor { diff --git a/cms/templates/admin/cms/page/tree/menu.html b/cms/templates/admin/cms/page/tree/menu.html index e11783704a7..24b420b5a94 100644 --- a/cms/templates/admin/cms/page/tree/menu.html +++ b/cms/templates/admin/cms/page/tree/menu.html @@ -2,8 +2,13 @@ {# INFO: columns are defined in base.html options #} {% spaceless %} -