diff --git a/layout_paragraphs.permissions.yml b/layout_paragraphs.permissions.yml deleted file mode 100644 index f6a659c60661b87ab715e04352a8c4aabdce2f9c..0000000000000000000000000000000000000000 --- a/layout_paragraphs.permissions.yml +++ /dev/null @@ -1,3 +0,0 @@ -edit layout paragraphs plugin config: - title: 'Edit Layout Paragraphs Plugin Config' - description: "Allow access to the 'Layout plugin configuration' form when creating/editing a Layout" diff --git a/modules/layout_paragraphs_permissions/layout_paragraphs_permissions.module b/modules/layout_paragraphs_permissions/layout_paragraphs_permissions.module index 8721e0e4d2d38987ea5bd53a09d48e44ee5163dc..2a468c4b43eb5cf6be374be625c11fcf84299d32 100644 --- a/modules/layout_paragraphs_permissions/layout_paragraphs_permissions.module +++ b/modules/layout_paragraphs_permissions/layout_paragraphs_permissions.module @@ -5,6 +5,7 @@ * Contains Layout Paragraphs Permissions module. */ +use Drupal\Core\Form\FormStateInterface; use Drupal\layout_paragraphs\LayoutParagraphsLayout; /** @@ -45,3 +46,30 @@ function layout_paragraphs_permissions_access(LayoutParagraphsLayout $layout_par $operation ); } + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function layout_paragraphs_permissions_form_layout_paragraphs_component_form_alter(&$form, FormStateInterface $form_state, $form_id) { + $form['layout_paragraphs']['#process'][] = 'layout_paragraphs_permissions_layout_plugin_form_process'; +} + +/** + * Process callback to check permission for layout plugin forms. + * + * @param array $element + * The element. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The form state. + * @param array $complete_form + * The complete form array. + * + * @return array + * The processed element. + */ +function layout_paragraphs_permissions_layout_plugin_form_process(array $element, FormStateInterface $form_state, array $complete_form) { + if (!empty($element['config']) && is_array($element['config'])) { + $element['config']['#access'] = Drupal::currentUser()->hasPermission('edit layout paragraphs plugin config'); + } + return $element; +} diff --git a/modules/layout_paragraphs_permissions/layout_paragraphs_permissions.permissions.yml b/modules/layout_paragraphs_permissions/layout_paragraphs_permissions.permissions.yml index 11f772cfe3cdff7b303faad4820025e2d8ae2216..218e46890d068b35fd90d46a4fcf7f6cae97a9d3 100644 --- a/modules/layout_paragraphs_permissions/layout_paragraphs_permissions.permissions.yml +++ b/modules/layout_paragraphs_permissions/layout_paragraphs_permissions.permissions.yml @@ -1,3 +1,7 @@ reorder layout paragraphs components: title: 'Reorder layout paragraphs components' - description: 'Grants access to drag and drop, move, and other navigation for Layout Paragraphs components.' \ No newline at end of file + description: 'Grants access to drag and drop, move, and other navigation for Layout Paragraphs components.' + +edit layout paragraphs plugin config: + title: 'Edit Layout Paragraphs Plugin Config' + description: "Allow access to the 'Layout plugin configuration' form when creating/editing a Layout"