diff --git a/handlers/admin/AdminDashboards.cfc b/handlers/admin/AdminDashboards.cfc index 0255edb..14e4305 100644 --- a/handlers/admin/AdminDashboards.cfc +++ b/handlers/admin/AdminDashboards.cfc @@ -162,7 +162,7 @@ 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 ) || !widgetService.isUserDashboardWidget( 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 }