diff --git a/_build/data/permissions/transport.policy.tpl.administrator.php b/_build/data/permissions/transport.policy.tpl.administrator.php index 333dff8762e..705b079397a 100644 --- a/_build/data/permissions/transport.policy.tpl.administrator.php +++ b/_build/data/permissions/transport.policy.tpl.administrator.php @@ -10,11 +10,6 @@ use MODX\Revolution\modAccessPermission; $permissions = []; -$permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'about', - 'description' => 'perm.about_desc', - 'value' => true, -]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ 'name' => 'access_permissions', 'description' => 'perm.access_permissions_desc', @@ -45,11 +40,6 @@ 'description' => 'perm.class_map_desc', 'value' => true, ]); -$permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'components', - 'description' => 'perm.components_desc', - 'value' => true, -]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ 'name' => 'content_types', 'description' => 'perm.content_types_desc', @@ -65,11 +55,6 @@ 'description' => 'perm.create_desc', 'value' => true, ]); -$permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'credits', - 'description' => 'perm.credits_desc', - 'value' => true, -]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ 'name' => 'customize_forms', 'description' => 'perm.customize_forms_desc', @@ -285,11 +270,6 @@ 'description' => 'perm.error_log_view_desc', 'value' => true, ]); -$permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'export_static', - 'description' => 'perm.export_static_desc', - 'value' => true, -]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ 'name' => 'file_create', 'description' => 'perm.file_create_desc', @@ -396,38 +376,33 @@ 'value' => true, ]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'menu_reports', - 'description' => 'perm.menu_reports_desc', - 'value' => true, -]); -$permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'menu_security', - 'description' => 'perm.menu_security_desc', + 'name' => 'menu_access', + 'description' => 'perm.menu_access_desc', 'value' => true, ]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'menu_site', - 'description' => 'perm.menu_site_desc', + 'name' => 'menu_content', + 'description' => 'perm.menu_content_desc', 'value' => true, ]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'menu_support', - 'description' => 'perm.menu_support_desc', + 'name' => 'menu_media', + 'description' => 'perm.menu_media_desc', 'value' => true, ]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'menu_system', - 'description' => 'perm.menu_system_desc', + 'name' => 'menu_packages', + 'description' => 'perm.menu_packages_desc', 'value' => true, ]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'menu_tools', - 'description' => 'perm.menu_tools_desc', + 'name' => 'menu_reports', + 'description' => 'perm.menu_reports_desc', 'value' => true, ]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ - 'name' => 'menu_trash', - 'description' => 'perm.menu_trash_desc', + 'name' => 'menu_system', + 'description' => 'perm.menu_system_desc', 'value' => true, ]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ @@ -775,6 +750,11 @@ 'description' => 'perm.steal_locks_desc', 'value' => true, ]); +$permissions[] = $xpdo->newObject(modAccessPermission::class, [ + 'name' => 'trash_view', + 'description' => 'perm.trash_view_desc', + 'value' => true, +]); $permissions[] = $xpdo->newObject(modAccessPermission::class, [ 'name' => 'tree_show_element_ids', 'description' => 'perm.tree_show_element_ids_desc', diff --git a/_build/data/transport.core.accesspolicies.php b/_build/data/transport.core.accesspolicies.php index f63910e0fa3..22213792293 100644 --- a/_build/data/transport.core.accesspolicies.php +++ b/_build/data/transport.core.accesspolicies.php @@ -23,15 +23,15 @@ function jsonifyPermissions(array $permissions = []) { $corePermissions = [ modAccessPolicy::POLICY_RESOURCE => ['add_children', 'create', 'copy', 'delete', 'list', 'load', 'move', 'publish', 'remove', 'save', 'steal_lock', 'undelete', 'unpublish', 'view'], - modAccessPolicy::POLICY_ADMINISTRATOR => ['about', 'access_permissions', 'actions', 'change_password', 'change_profile', 'charsets', 'class_map', 'components', 'content_types', 'countries', 'create', 'credits', 'customize_forms', 'dashboards', 'database', 'database_truncate', 'delete_category', 'delete_chunk', 'delete_context', 'delete_document', 'delete_eventlog', 'delete_plugin', 'delete_propertyset', 'delete_role', 'delete_snippet', 'delete_static_resource', 'delete_symlink', 'delete_template', 'delete_tv', 'delete_user', 'delete_weblink', 'directory_chmod', 'directory_create', 'directory_list', 'directory_remove', 'directory_update', 'edit_category', 'edit_chunk', 'edit_context', 'edit_document', 'edit_locked', 'edit_plugin', 'edit_propertyset', 'edit_role', 'edit_snippet', 'edit_static_resource', 'edit_symlink', 'edit_template', 'edit_tv', 'edit_user', 'edit_weblink', 'element_tree', 'empty_cache', 'error_log_erase', 'error_log_view', 'events', 'export_static', 'file_create', 'file_list', 'file_manager', 'file_remove', 'file_tree', 'file_unpack', 'file_update', 'file_upload', 'file_view', 'flush_sessions', 'frames', 'help', 'home', 'language', 'languages', 'lexicons', 'list', 'load', 'logout', 'mgr_log_view', 'mgr_log_erase', 'menu_reports', 'menu_security', 'menu_site', 'menu_support', 'menu_system', 'menu_tools', 'menu_trash', 'menu_user', 'menus', 'messages', 'namespaces', 'new_category', 'new_chunk', 'new_context', 'new_document', 'new_document_in_root', 'new_plugin', 'new_propertyset', 'new_role', 'new_snippet', 'new_static_resource', 'new_symlink', 'new_template', 'new_tv', 'new_user', 'new_weblink', 'packages', 'policy_delete', 'policy_edit', 'policy_new', 'policy_save', 'policy_template_delete', 'policy_template_edit', 'policy_template_new', 'policy_template_save', 'policy_template_view', 'policy_view', 'property_sets', 'providers', 'publish_document', 'purge_deleted', 'remove', 'remove_locks', 'resource_duplicate', 'resource_quick_create', 'resource_quick_update', 'resource_tree', 'resourcegroup_delete', 'resourcegroup_edit', 'resourcegroup_new', 'resourcegroup_resource_edit', 'resourcegroup_resource_list', 'resourcegroup_save', 'resourcegroup_view', 'save', 'save_category', 'save_chunk', 'save_context', 'save_document', 'save_plugin', 'save_propertyset', 'save_role', 'save_snippet', 'save_template', 'save_tv', 'save_user', 'search', 'set_sudo', 'settings', 'source_delete', 'source_edit', 'source_save', 'source_view', 'sources', 'steal_locks', 'tree_show_element_ids', 'tree_show_resource_ids', 'undelete_document', 'unlock_element_properties', 'unpublish_document', 'usergroup_delete', 'usergroup_edit', 'usergroup_new', 'usergroup_save', 'usergroup_user_edit', 'usergroup_user_list', 'usergroup_view', 'view', 'view_category', 'view_chunk', 'view_context', 'view_document', 'view_element', 'view_eventlog', 'view_offline', 'view_plugin', 'view_propertyset', 'view_role', 'view_snippet', 'view_sysinfo', 'view_template', 'view_tv', 'view_unpublished', 'view_user', 'workspaces'], + modAccessPolicy::POLICY_ADMINISTRATOR => ['access_permissions', 'actions', 'change_password', 'change_profile', 'charsets', 'class_map', 'content_types', 'countries', 'create', 'customize_forms', 'dashboards', 'database', 'database_truncate', 'delete_category', 'delete_chunk', 'delete_context', 'delete_document', 'delete_eventlog', 'delete_plugin', 'delete_propertyset', 'delete_role', 'delete_snippet', 'delete_static_resource', 'delete_symlink', 'delete_template', 'delete_tv', 'delete_user', 'delete_weblink', 'directory_chmod', 'directory_create', 'directory_list', 'directory_remove', 'directory_update', 'edit_category', 'edit_chunk', 'edit_context', 'edit_document', 'edit_locked', 'edit_plugin', 'edit_propertyset', 'edit_role', 'edit_snippet', 'edit_static_resource', 'edit_symlink', 'edit_template', 'edit_tv', 'edit_user', 'edit_weblink', 'element_tree', 'empty_cache', 'error_log_erase', 'error_log_view', 'events', 'file_create', 'file_list', 'file_manager', 'file_remove', 'file_tree', 'file_unpack', 'file_update', 'file_upload', 'file_view', 'flush_sessions', 'frames', 'help', 'home', 'language', 'languages', 'lexicons', 'list', 'load', 'logout', 'mgr_log_view', 'mgr_log_erase', 'menu_access', 'menu_content', 'menu_media', 'menu_packages', 'menu_reports', 'menu_system', 'menu_user', 'menus', 'messages', 'namespaces', 'new_category', 'new_chunk', 'new_context', 'new_document', 'new_document_in_root', 'new_plugin', 'new_propertyset', 'new_role', 'new_snippet', 'new_static_resource', 'new_symlink', 'new_template', 'new_tv', 'new_user', 'new_weblink', 'packages', 'policy_delete', 'policy_edit', 'policy_new', 'policy_save', 'policy_template_delete', 'policy_template_edit', 'policy_template_new', 'policy_template_save', 'policy_template_view', 'policy_view', 'property_sets', 'providers', 'publish_document', 'purge_deleted', 'remove', 'remove_locks', 'resource_duplicate', 'resource_quick_create', 'resource_quick_update', 'resource_tree', 'resourcegroup_delete', 'resourcegroup_edit', 'resourcegroup_new', 'resourcegroup_resource_edit', 'resourcegroup_resource_list', 'resourcegroup_save', 'resourcegroup_view', 'save', 'save_category', 'save_chunk', 'save_context', 'save_document', 'save_plugin', 'save_propertyset', 'save_role', 'save_snippet', 'save_template', 'save_tv', 'save_user', 'search', 'set_sudo', 'settings', 'source_delete', 'source_edit', 'source_save', 'source_view', 'sources', 'steal_locks', 'trash_view', 'tree_show_element_ids', 'tree_show_resource_ids', 'undelete_document', 'unlock_element_properties', 'unpublish_document', 'usergroup_delete', 'usergroup_edit', 'usergroup_new', 'usergroup_save', 'usergroup_user_edit', 'usergroup_user_list', 'usergroup_view', 'view', 'view_category', 'view_chunk', 'view_context', 'view_document', 'view_element', 'view_eventlog', 'view_offline', 'view_plugin', 'view_propertyset', 'view_role', 'view_snippet', 'view_sysinfo', 'view_template', 'view_tv', 'view_unpublished', 'view_user', 'workspaces'], modAccessPolicy::POLICY_LOAD_ONLY => ['load'], modAccessPolicy::POLICY_LOAD_LIST_VIEW => ['load', 'list', 'view'], modAccessPolicy::POLICY_OBJECT => ['load', 'list', 'view', 'save', 'remove'], modAccessPolicy::POLICY_ELEMENT => ['add_children', 'create', 'delete', 'list', 'load', 'remove', 'save', 'view', 'copy'], - modAccessPolicy::POLICY_CONTENT_EDITOR => ['change_profile', 'class_map', 'countries', 'delete_document', 'delete_static_resource', 'delete_symlink', 'delete_weblink', 'edit_document', 'edit_static_resource', 'edit_symlink', 'edit_weblink', 'frames', 'help', 'home', 'language', 'list', 'load', 'logout', 'menu_reports', 'menu_site', 'menu_support', 'menu_tools', 'menu_user', 'new_document', 'new_static_resource', 'new_symlink', 'new_weblink', 'resource_duplicate', 'resource_tree', 'save_document', 'source_view', 'tree_show_resource_ids', 'view', 'view_document', 'view_template'], + modAccessPolicy::POLICY_CONTENT_EDITOR => ['change_profile', 'class_map', 'countries', 'delete_document', 'delete_static_resource', 'delete_symlink', 'delete_weblink', 'edit_document', 'edit_static_resource', 'edit_symlink', 'edit_weblink', 'frames', 'help', 'home', 'language', 'list', 'load', 'logout', 'menu_content', 'menu_reports', 'menu_user', 'new_document', 'new_static_resource', 'new_symlink', 'new_weblink', 'resource_duplicate', 'resource_tree', 'save_document', 'source_view', 'tree_show_resource_ids', 'view', 'view_document', 'view_template'], modAccessPolicy::POLICY_MEDIA_SOURCE_ADMIN => ['create', 'copy', 'load', 'list', 'save', 'remove', 'view'], modAccessPolicy::POLICY_MEDIA_SOURCE_USER => ['load', 'list', 'view'], - modAccessPolicy::POLICY_DEVELOPER => ['about', 'change_password', 'change_profile', 'charsets', 'class_map', 'components', 'content_types', 'countries', 'create', 'credits', 'customize_forms', 'dashboards', 'database', 'delete_category', 'delete_chunk', 'delete_context', 'delete_document', 'delete_eventlog', 'delete_plugin', 'delete_propertyset', 'delete_role', 'delete_snippet', 'delete_template', 'delete_tv', 'delete_user', 'directory_chmod', 'directory_create', 'directory_list', 'directory_remove', 'directory_update', 'edit_category', 'edit_chunk', 'edit_context', 'edit_document', 'edit_locked', 'edit_plugin', 'edit_propertyset', 'edit_role', 'edit_snippet', 'edit_static_resource', 'edit_symlink', 'edit_template', 'edit_tv', 'edit_user', 'edit_weblink', 'element_tree', 'empty_cache', 'error_log_erase', 'error_log_view', 'export_static', 'file_create', 'file_list', 'file_manager', 'file_remove', 'file_tree', 'file_unpack', 'file_update', 'file_upload', 'file_view', 'frames', 'help', 'home', 'language', 'languages', 'lexicons', 'list', 'load', 'logout', 'mgr_log_view', 'mgr_log_erase', 'menu_reports', 'menu_site', 'menu_support', 'menu_system', 'menu_tools', 'menu_user', 'menus', 'messages', 'namespaces', 'new_category', 'new_chunk', 'new_context', 'new_document', 'new_document_in_root', 'new_plugin', 'new_propertyset', 'new_role', 'new_snippet', 'new_static_resource', 'new_symlink', 'new_template', 'new_tv', 'new_user', 'new_weblink', 'packages', 'property_sets', 'providers', 'publish_document', 'purge_deleted', 'remove', 'resource_duplicate', 'resource_quick_create', 'resource_quick_update', 'resource_tree', 'save', 'save_category', 'save_chunk', 'save_context', 'save_document', 'save_plugin', 'save_propertyset', 'save_snippet', 'save_template', 'save_tv', 'save_user', 'search', 'settings', 'source_delete', 'source_edit', 'source_save', 'source_view', 'sources', 'tree_show_element_ids', 'tree_show_resource_ids', 'undelete_document', 'unlock_element_properties', 'unpublish_document', 'view', 'view_category', 'view_chunk', 'view_context', 'view_document', 'view_element', 'view_eventlog', 'view_offline', 'view_plugin', 'view_propertyset', 'view_role', 'view_snippet', 'view_sysinfo', 'view_template', 'view_tv', 'view_unpublished', 'view_user', 'workspaces'], + modAccessPolicy::POLICY_DEVELOPER => ['change_password', 'change_profile', 'charsets', 'class_map', 'content_types', 'countries', 'create', 'customize_forms', 'dashboards', 'database', 'delete_category', 'delete_chunk', 'delete_context', 'delete_document', 'delete_eventlog', 'delete_plugin', 'delete_propertyset', 'delete_role', 'delete_snippet', 'delete_template', 'delete_tv', 'delete_user', 'directory_chmod', 'directory_create', 'directory_list', 'directory_remove', 'directory_update', 'edit_category', 'edit_chunk', 'edit_context', 'edit_document', 'edit_locked', 'edit_plugin', 'edit_propertyset', 'edit_role', 'edit_snippet', 'edit_static_resource', 'edit_symlink', 'edit_template', 'edit_tv', 'edit_user', 'edit_weblink', 'element_tree', 'empty_cache', 'error_log_erase', 'error_log_view', 'file_create', 'file_list', 'file_manager', 'file_remove', 'file_tree', 'file_unpack', 'file_update', 'file_upload', 'file_view', 'frames', 'help', 'home', 'language', 'languages', 'lexicons', 'list', 'load', 'logout', 'mgr_log_view', 'mgr_log_erase', 'menu_access', 'menu_content', 'menu_media', 'menu_packages', 'menu_reports', 'menu_system', 'menu_user', 'menus', 'messages', 'namespaces', 'new_category', 'new_chunk', 'new_context', 'new_document', 'new_document_in_root', 'new_plugin', 'new_propertyset', 'new_role', 'new_snippet', 'new_static_resource', 'new_symlink', 'new_template', 'new_tv', 'new_user', 'new_weblink', 'packages', 'property_sets', 'providers', 'publish_document', 'purge_deleted', 'remove', 'resource_duplicate', 'resource_quick_create', 'resource_quick_update', 'resource_tree', 'save', 'save_category', 'save_chunk', 'save_context', 'save_document', 'save_plugin', 'save_propertyset', 'save_snippet', 'save_template', 'save_tv', 'save_user', 'search', 'settings', 'source_delete', 'source_edit', 'source_save', 'source_view', 'sources', 'tree_show_element_ids', 'tree_show_resource_ids', 'undelete_document', 'unlock_element_properties', 'unpublish_document', 'view', 'view_category', 'view_chunk', 'view_context', 'view_document', 'view_element', 'view_eventlog', 'view_offline', 'view_plugin', 'view_propertyset', 'view_role', 'view_snippet', 'view_sysinfo', 'view_template', 'view_tv', 'view_unpublished', 'view_user', 'workspaces'], modAccessPolicy::POLICY_CONTEXT => ['load', 'list', 'view', 'save', 'remove', 'copy', 'view_unpublished'], modAccessPolicy::POLICY_HIDDEN_NAMESPACE => ['load' => false, 'list' => false, 'view' => true], ]; diff --git a/_build/data/transport.core.menus.php b/_build/data/transport.core.menus.php index a7ee89b2078..f935e6ef942 100644 --- a/_build/data/transport.core.menus.php +++ b/_build/data/transport.core.menus.php @@ -22,7 +22,7 @@ [ 'text' => 'site', 'description' => '', - 'permissions' => 'menu_site', + 'permissions' => 'menu_content', 'action' => '', 'icon' => '', 'children' => [ @@ -94,7 +94,7 @@ [ 'text' => 'media', 'description' => '', - 'permissions' => 'file_manager', + 'permissions' => 'menu_media', 'action' => '', 'icon' => '', 'children' => [ @@ -121,7 +121,7 @@ [ 'text' => 'components', 'description' => '', - 'permissions' => 'components', + 'permissions' => 'menu_packages', 'action' => '', 'icon' => '', 'children' => [ @@ -186,7 +186,7 @@ [ 'text' => 'access', 'description' => '', - 'permissions' => 'access_permissions', + 'permissions' => 'menu_access', 'action' => '', 'icon' => '', 'children' => [ @@ -260,7 +260,7 @@ [ 'text' => 'admin', 'description' => '', - 'permissions' => 'settings', + 'permissions' => 'menu_system', 'action' => '', 'icon' => '', 'children' => [ diff --git a/core/lexicon/en/permissions.inc.php b/core/lexicon/en/permissions.inc.php index 43d2ae252d5..14fac9f7d4e 100644 --- a/core/lexicon/en/permissions.inc.php +++ b/core/lexicon/en/permissions.inc.php @@ -6,7 +6,6 @@ * @package modx * @subpackage lexicon */ -$_lang['perm.about_desc'] = 'The About page.'; $_lang['perm.access_permissions_desc'] = 'Any Access Permission-related pages and actions.'; $_lang['perm.actions_desc'] = 'The Actions page.'; $_lang['perm.add_children_desc'] = 'To add any Resources as children of the specified Resource or Elements to a Category.'; @@ -14,12 +13,10 @@ $_lang['perm.change_profile_desc'] = 'User can change their profile.'; $_lang['perm.charsets_desc'] = 'To view a list of charsets.'; $_lang['perm.class_map_desc'] = 'To view a list of classes in the Class Map.'; -$_lang['perm.components_desc'] = 'To view the Extras menu.'; $_lang['perm.content_types_desc'] = 'The Content Types page.'; $_lang['perm.copy_desc'] = 'The ability to copy an object.'; $_lang['perm.countries_desc'] = 'To view a list of countries.'; $_lang['perm.create_desc'] = 'Basic "create" access on new objects.'; -$_lang['perm.credits_desc'] = 'View the Credits page.'; $_lang['perm.customize_forms_desc'] = 'View and manage the Form Customization page.'; $_lang['perm.dashboards_desc'] = 'View and manage Custom Dashboards.'; $_lang['perm.database_desc'] = 'The System Info page.'; @@ -64,7 +61,6 @@ $_lang['perm.empty_cache_desc'] = 'To empty the site cache.'; $_lang['perm.error_log_erase_desc'] = 'To erase the error log.'; $_lang['perm.error_log_view_desc'] = 'To view the error log.'; -$_lang['perm.export_static_desc'] = 'To export the site to static HTML.'; $_lang['perm.file_create_desc'] = 'To create a file.'; $_lang['perm.file_list_desc'] = 'To list files within a given physical directory.'; $_lang['perm.file_manager_desc'] = 'To use the file manager utility.'; @@ -86,13 +82,12 @@ $_lang['perm.logout_desc'] = 'To be able to logout as a user.'; $_lang['perm.mgr_log_view_desc'] = 'To view the manager action log.'; $_lang['perm.mgr_log_erase_desc'] = 'To clear the manager action log.'; +$_lang['perm.menu_access_desc'] = 'Show the main menu item "Access".'; +$_lang['perm.menu_content_desc'] = 'Show the main menu item "Content".'; +$_lang['perm.menu_media_desc'] = 'Show the main menu item "Media".'; +$_lang['perm.menu_packages_desc'] = 'Show the main menu item "Extras".'; $_lang['perm.menu_reports_desc'] = 'Show the main menu item "Reports".'; -$_lang['perm.menu_security_desc'] = 'Show the main menu item "Security".'; -$_lang['perm.menu_site_desc'] = 'Show the main menu item "Site".'; -$_lang['perm.menu_support_desc'] = 'Show the main menu item "Support".'; $_lang['perm.menu_system_desc'] = 'Show the main menu item "System".'; -$_lang['perm.menu_tools_desc'] = 'Show the main menu item "Tools".'; -$_lang['perm.menu_trash_desc'] = 'Show the main menu item "Trash Manager".'; $_lang['perm.menu_user_desc'] = 'Show the main menu item "User".'; $_lang['perm.menus_desc'] = 'To edit or save any main Menu items.'; $_lang['perm.messages_desc'] = 'To send or view any personal Messages.'; @@ -165,6 +160,7 @@ $_lang['perm.sources_desc'] = 'To manage Media Sources and Media Source Types.'; $_lang['perm.steal_lock_desc'] = 'To "steal", or delete, a lock from a Resource.'; $_lang['perm.steal_locks_desc'] = 'To "steal" locks, overriding a current lock on a Resource.'; +$_lang['perm.trash_view_desc'] = 'To view a Trash Manager.'; $_lang['perm.tree_show_resource_ids_desc'] = 'Show the IDs in the Resource tree.'; $_lang['perm.tree_show_element_ids_desc'] = 'Show the IDs in the Elements tree.'; $_lang['perm.undelete_desc'] = 'Basic permission to "undelete" any object.'; diff --git a/manager/assets/modext/core/modx.layout.js b/manager/assets/modext/core/modx.layout.js index c3af2f20978..c06b0af53d8 100644 --- a/manager/assets/modext/core/modx.layout.js +++ b/manager/assets/modext/core/modx.layout.js @@ -309,38 +309,49 @@ Ext.extend(MODx.Layout, Ext.Viewport, { listeners: { success: { fn: function(response) { - const trashTrigger = Object.values(response.object).find(item => item.id === 'emptifier'); - if (trashTrigger) { - const trashTab = baseTabs.add({ - id: 'modx-trash-link', - title: '', - updateState(deletedCount = 0) { - const tab = this; - const tabEl = tab.tabEl; - const tooltipTarget = new Ext.Element(tabEl); - - if (deletedCount === 0) { - tab.disable(); - tabEl.classList.remove('active'); - } else { - tab.enable(); - tabEl.classList.add('active'); - } - - tab.tooltip = new Ext.ToolTip({ - target: tooltipTarget, - title: _('trash.manage_recycle_bin_tooltip', { count: deletedCount }), - }); - }, - }); - if (!trashTrigger.disabled) { - trashTab.tabEl.classList.add('active'); - } - if (trashTrigger.tooltip) { - trashTab.tooltip = new Ext.ToolTip({ - target: new Ext.Element(trashTab.tabEl), - title: trashTrigger.tooltip + if (MODx.perm.trash_view) { + const trashTrigger = Object.values(response.object).find(item => item.id === 'emptifier'); + if (trashTrigger) { + const trashTab = baseTabs.add({ + id: 'modx-trash-link', + title: '', + updateState(deletedCount = 0) { + const tab = this; + const tabEl = tab.tabEl; + const tooltipTarget = new Ext.Element(tabEl); + + if (deletedCount === 0) { + tab.disable(); + tabEl.classList.remove('active'); + } else { + tab.enable(); + tabEl.classList.add('active'); + } + + tab.tooltip = new Ext.ToolTip({ + target: tooltipTarget, + title: _('trash.manage_recycle_bin_tooltip', { count: deletedCount }), + }); + }, }); + if (!trashTrigger.disabled) { + trashTab.tabEl.classList.add('active'); + } + if (trashTrigger.tooltip) { + trashTab.tooltip = new Ext.ToolTip({ + target: new Ext.Element(trashTab.tabEl), + title: trashTrigger.tooltip + }); + if (!trashTrigger.disabled) { + trashTab.tabEl.classList.add('active'); + } + if (trashTrigger.tooltip) { + trashTab.tooltip = new Ext.ToolTip({ + target: new Ext.Element(trashTab.tabEl), + title: trashTrigger.tooltip + }); + } + } } } }, diff --git a/manager/controllers/default/resource/trash.class.php b/manager/controllers/default/resource/trash.class.php index 08b8e0968fd..5c16c4eccc4 100644 --- a/manager/controllers/default/resource/trash.class.php +++ b/manager/controllers/default/resource/trash.class.php @@ -42,7 +42,7 @@ public function getPageTitle() */ public function checkPermissions() { - return $this->modx->hasPermission('menu_trash'); + return $this->modx->hasPermission('trash_view'); } /** diff --git a/setup/includes/upgrades/common/3.1.0-policy-permissions-menu-update.php b/setup/includes/upgrades/common/3.1.0-policy-permissions-menu-update.php new file mode 100644 index 00000000000..2e8af674615 --- /dev/null +++ b/setup/includes/upgrades/common/3.1.0-policy-permissions-menu-update.php @@ -0,0 +1,122 @@ + [ + 'name' => 'menu_content', + 'description' => 'perm.menu_content_desc', + 'menu_text' => 'site', + 'menu_only' => false, + ], + 'menu_trash' => [ + 'name' => 'trash_view', + 'description' => 'perm.trash_view_desc', + 'menu_text' => '', + 'menu_only' => false, + ], + 'components' => [ + 'name' => 'menu_packages', + 'description' => 'perm.menu_packages_desc', + 'menu_text' => 'components', + 'menu_only' => false, + ], + 'settings' => [ + 'name' => 'menu_system', + 'description' => 'perm.menu_system_desc', + 'menu_text' => 'admin', + 'menu_only' => true, + ], + 'file_manager' => [ + 'name' => 'menu_media', + 'description' => 'perm.menu_media_desc', + 'menu_text' => 'media', + 'menu_only' => true, + ], + 'access_permissions' => [ + 'name' => 'menu_access', + 'description' => 'perm.menu_access_desc', + 'menu_text' => 'access', + 'menu_only' => true, + ], +]; + +// Remove permissions +foreach ($permissionsRemove as $permissionItem) { + /** @var modAccessPermission $permission */ + + $c = $modx->newQuery(modAccessPermission::class); + $c->where([ + 'name' => $permissionItem, + 'template:IN' => $defaultAaccessPolicyTemplateIds, + ]); + $permissions = $modx->getIterator(modAccessPermission::class, $c); + + foreach ($permissions as $permission) { + if ($permission instanceof modAccessPermission) { + if ($permission->remove()) { + $this->runner->addResult( + modInstallRunner::RESULT_SUCCESS, + sprintf($messageTemplate, 'ok', $this->install->lexicon('permission_remove_success', ['name' => $permissionItem])) + ); + } else { + $this->runner->addResult( + modInstallRunner::RESULT_WARNING, + sprintf($messageTemplate, 'warning', $this->install->lexicon('permission_remove_failed', ['name' => $permissionItem])) + ); + } + } + } +} + +// Update permissions +foreach ($permissionsUpdate as $permissionName => $permissionItem) { + /** @var modAccessPermission $permission */ + $c = $modx->newQuery(modAccessPermission::class); + $c->where([ + 'name' => $permissionName, + 'template:IN' => $defaultAaccessPolicyTemplateIds, + ]); + $permissions = $modx->getIterator(modAccessPermission::class, $c); + + foreach ($permissions as $permission) { + if ($permission instanceof modAccessPermission) { + // Update only menu or menu and permission + if ($permissionItem['menu_only']) { + $permission->set('name', $permissionName); + } else { + $permission->set('name', $permissionItem['name']); + $permission->set('description', $permissionItem['description']); + } + + if ($permission->save()) { + $this->runner->addResult( + modInstallRunner::RESULT_SUCCESS, + sprintf($messageTemplate, 'ok', $this->install->lexicon('permission_update_success', ['name' => $permissionName])) + ); + + // Update menu item + $menuItem = $modx->getObject(modMenu::class, ['text' => $permissionItem['menu_text'], 'permissions' => $permissionName]); + if ($menuItem) { + $menuItem->set('permissions', $permissionItem['name']); + $menuItem->save(); + } + } else { + $this->runner->addResult( + modInstallRunner::RESULT_WARNING, + sprintf($messageTemplate, 'warning', $this->install->lexicon('permission_update_failed', ['name' => $permissionName])) + ); + } + } + } +} \ No newline at end of file diff --git a/setup/includes/upgrades/mysql/3.1.0-pl.php b/setup/includes/upgrades/mysql/3.1.0-pl.php index ab985fbd2ab..ff41ffe6edc 100644 --- a/setup/includes/upgrades/mysql/3.1.0-pl.php +++ b/setup/includes/upgrades/mysql/3.1.0-pl.php @@ -11,3 +11,4 @@ include dirname(__DIR__) . '/common/3.1.0-remove-deprecated-resource-fields.php'; include dirname(__DIR__) . '/common/3.1.0-modify-usergrouprole-authority-index.php'; include dirname(__DIR__) . '/common/3.1.0-trash-menu.php'; +include dirname(__DIR__) . '/common/3.1.0-policy-permissions-menu-update.php'; diff --git a/setup/lang/en/upgrades.inc.php b/setup/lang/en/upgrades.inc.php index df41e6937e7..6487ef3ae61 100644 --- a/setup/lang/en/upgrades.inc.php +++ b/setup/lang/en/upgrades.inc.php @@ -39,6 +39,10 @@ $_lang['menu_update_success'] = 'Menu item `[[+text]]` updated.'; $_lang['menu_update_failed'] = 'Menu item `[[+text]]` could not be updated.'; $_lang['modify_column'] = 'Modified column `[[+column]]` from `[[+old]]` to `[[+new]]` on table [[+table]]'; +$_lang['permission_remove_success'] = 'Access Permission `[[+name]]` removed.'; +$_lang['permission_remove_failed'] = 'Access Permission `[[+name]]` could not be removed.'; +$_lang['permission_update_success'] = 'Access Permission `[[+name]]` updated.'; +$_lang['permission_update_failed'] = 'Access Permission `[[+name]]` could not be updated.'; $_lang['rename_column'] = 'Renamed column `[[+old]]` to `[[+new]]` on table [[+table]].'; $_lang['rename_table'] = 'Renamed table `[[+old]]` to `[[+new]]`.'; $_lang['remove_fulltext_index'] = 'Removed full-text index `[[+index]]`.';