From 8c6b72a38616f3ff39836dc76f03c853dcaaaa97 Mon Sep 17 00:00:00 2001 From: Brayden Tan Date: Fri, 30 Jun 2023 13:54:11 +0800 Subject: [PATCH 1/6] [twgit] Init feature 'feature-DASH-24_admin-dashboard-widgets-missing-feature-checking'. From 003aefcdc6b55c7d844a190cc2e7cabf3176c413 Mon Sep 17 00:00:00 2001 From: Brayden Tan Date: Fri, 30 Jun 2023 13:54:59 +0800 Subject: [PATCH 2/6] DASH-24 add admin dashboard widgets feature checking --- handlers/admin/AdminDashboards.cfc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/handlers/admin/AdminDashboards.cfc b/handlers/admin/AdminDashboards.cfc index 0255edb..c14264e 100644 --- a/handlers/admin/AdminDashboards.cfc +++ b/handlers/admin/AdminDashboards.cfc @@ -1,7 +1,8 @@ component extends="preside.system.base.AdminHandler" { - property name="widgetService" inject="adminDashboardWidgetService"; - property name="siteService" inject="siteService"; + property name="widgetService" inject="adminDashboardWidgetService"; + property name="siteService" inject="siteService"; + property name="featureService" inject="featureService"; public void function renderWidgetContent( event, rc, prc ) { var widgetId = rc.widgetId ?: ""; @@ -166,6 +167,11 @@ component extends="preside.system.base.AdminHandler" { continue; } + var widgetFeature = featureService.getFeatureForWidget( widget.id ); + if ( len( trim( widgetFeature ) ) && !featureService.isFeatureEnabled( feature=widgetFeature, siteTemplate=activeSiteTemplate ) ) { + continue; + } + widget.title = translateResource( uri=widget.title , defaultValue=widget.title ); widget.description = translateResource( uri=widget.description, defaultValue="" ); widget.icon = translateResource( uri=widget.icon , defaultValue="fa-magic" ); From 1fb73d649d1c97f511a284ed03df8391a280e6d7 Mon Sep 17 00:00:00 2001 From: Brayden Tan Date: Tue, 4 Jul 2023 11:39:31 +0800 Subject: [PATCH 3/6] DASH-24 update admin widget enabled check approach --- handlers/admin/AdminDashboards.cfc | 8 +++----- services/AdminDashboardWidgetService.cfc | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/handlers/admin/AdminDashboards.cfc b/handlers/admin/AdminDashboards.cfc index c14264e..0ec69ca 100644 --- a/handlers/admin/AdminDashboards.cfc +++ b/handlers/admin/AdminDashboards.cfc @@ -1,8 +1,7 @@ component extends="preside.system.base.AdminHandler" { - property name="widgetService" inject="adminDashboardWidgetService"; - property name="siteService" inject="siteService"; - property name="featureService" inject="featureService"; + property name="widgetService" inject="adminDashboardWidgetService"; + property name="siteService" inject="siteService"; public void function renderWidgetContent( event, rc, prc ) { var widgetId = rc.widgetId ?: ""; @@ -167,8 +166,7 @@ component extends="preside.system.base.AdminHandler" { continue; } - var widgetFeature = featureService.getFeatureForWidget( widget.id ); - if ( len( trim( widgetFeature ) ) && !featureService.isFeatureEnabled( feature=widgetFeature, siteTemplate=activeSiteTemplate ) ) { + if ( !widgetService.isEnabled( widget.id ) ) { continue; } diff --git a/services/AdminDashboardWidgetService.cfc b/services/AdminDashboardWidgetService.cfc index 6387957..267c741 100644 --- a/services/AdminDashboardWidgetService.cfc +++ b/services/AdminDashboardWidgetService.cfc @@ -343,6 +343,22 @@ component { return $helpers.isTrue( result ?: "" ); } + public boolean function isEnabled( required string widgetId ) { + var coldbox = $getColdbox(); + var isEnabledEvent = "admin.admindashboards.widget.#widgetId#.isEnabled"; + var result = true; + + if ( coldbox.handlerExists( isEnabledEvent ) ) { + result = coldbox.runEvent( + event = isEnabledEvent + , private = true + , prePostExempt = true + ); + } + + return $helpers.isTrue( result ?: "" ); + } + public numeric function nextWidgetSlot( required string dashboardId, required numeric column ) { var currentMax = $getPresideObject( "admin_dashboard_widget" ).selectData( filter = { dashboard=arguments.dashboardId, column=arguments.column } From 95a1774bc096ea66e3f1d39eda8ef88a90a33900 Mon Sep 17 00:00:00 2001 From: Brayden Tan Date: Tue, 4 Jul 2023 11:42:44 +0800 Subject: [PATCH 4/6] DASH-24 move the enabled check to first --- handlers/admin/AdminDashboards.cfc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handlers/admin/AdminDashboards.cfc b/handlers/admin/AdminDashboards.cfc index 0ec69ca..4cf2937 100644 --- a/handlers/admin/AdminDashboards.cfc +++ b/handlers/admin/AdminDashboards.cfc @@ -162,11 +162,11 @@ component extends="preside.system.base.AdminHandler" { var widget = Duplicate( unsortedOrTranslated[ id ] ); if ( widget.siteTemplates == "*" || ListFindNoCase( widget.siteTemplates, activeSiteTemplate ) ) { - if ( ! widgetService.isUserDashboardWidget( widget.id ) ) { + if ( !widgetService.isEnabled( widget.id ) ) { continue; } - if ( !widgetService.isEnabled( widget.id ) ) { + if ( ! widgetService.isUserDashboardWidget( widget.id ) ) { continue; } From 406bc136a9168b6d29cae9e6f5ccd44696d9d80f Mon Sep 17 00:00:00 2001 From: Brayden Tan Date: Tue, 4 Jul 2023 11:45:34 +0800 Subject: [PATCH 5/6] DASH-24 optimise condition check --- handlers/admin/AdminDashboards.cfc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/handlers/admin/AdminDashboards.cfc b/handlers/admin/AdminDashboards.cfc index 4cf2937..14e4305 100644 --- a/handlers/admin/AdminDashboards.cfc +++ b/handlers/admin/AdminDashboards.cfc @@ -162,11 +162,7 @@ component extends="preside.system.base.AdminHandler" { var widget = Duplicate( unsortedOrTranslated[ id ] ); if ( widget.siteTemplates == "*" || ListFindNoCase( widget.siteTemplates, activeSiteTemplate ) ) { - if ( !widgetService.isEnabled( widget.id ) ) { - continue; - } - - if ( ! widgetService.isUserDashboardWidget( widget.id ) ) { + if ( !widgetService.isEnabled( widget.id ) || !widgetService.isUserDashboardWidget( widget.id ) ) { continue; } From d0df03814acee30876dc3d35561f1a364ff30758 Mon Sep 17 00:00:00 2001 From: Dominic Watson Date: Tue, 4 Jul 2023 15:55:16 +0100 Subject: [PATCH 6/6] [twgit] Init feature 'feature-DASH-24-feature-checks-for-dash-widgets'.