diff --git a/panels_ipe/js/panels_ipe.js b/panels_ipe/js/panels_ipe.js index da17f14..d270976 100644 --- a/panels_ipe/js/panels_ipe.js +++ b/panels_ipe/js/panels_ipe.js @@ -102,7 +102,7 @@ // Set up our initial tabs. var tab_collection = new Drupal.panels_ipe.TabCollection(); - if (settings.panels_ipe.layout.changeable) { + if (settings.panels_ipe.user_permission.change_layout) { tab_collection.add(createTabModel(Drupal.t('Change Layout'), 'change_layout')); } tab_collection.add(createTabModel(Drupal.t('Manage Content'), 'manage_content')); @@ -126,7 +126,7 @@ // Set up our initial tab views. var tab_views = {}; - if (settings.panels_ipe.layout.changeable) { + if (settings.panels_ipe.user_permission.change_layout) { tab_views.change_layout = new Drupal.panels_ipe.LayoutPicker(); } tab_views.manage_content = new Drupal.panels_ipe.BlockPicker(); diff --git a/panels_ipe/js/views/BlockPicker.js b/panels_ipe/js/views/BlockPicker.js index f500bcc..c270d54 100644 --- a/panels_ipe/js/views/BlockPicker.js +++ b/panels_ipe/js/views/BlockPicker.js @@ -139,11 +139,13 @@ // Add a unique class to our top region to scope CSS. this.$el.addClass('ipe-block-picker-list'); - // Prepend a custom button for creating content. - this.$('.ipe-categories').prepend(this.template_create_button({ - name: 'Create Content', - active: create_active - })); + // Prepend a custom button for creating content, if the user has access. + if (drupalSettings.panels_ipe.user_permission.create_content) { + this.$('.ipe-categories').prepend(this.template_create_button({ + name: 'Create Content', + active: create_active + })); + } // If the create content category is active, render items in our top // region. diff --git a/panels_ipe/js/views/BlockView.js b/panels_ipe/js/views/BlockView.js index 9c8ba63..4dc7af9 100644 --- a/panels_ipe/js/views/BlockView.js +++ b/panels_ipe/js/views/BlockView.js @@ -33,7 +33,7 @@ '
  • ' + ' ' + '
  • ' + - '<% if (plugin_id == "block_content") { %>' + + '<% if (plugin_id == "block_content" && edit_access) { %>' + '
  • ' + ' ' + '
  • ' + @@ -84,7 +84,9 @@ // We modify our content if the IPE is active. if (this.model.get('active')) { // Prepend the ipe-actions header. - this.$el.prepend(this.template_actions(this.model.toJSON())); + var template_vars = this.model.toJSON(); + template_vars['edit_access'] = drupalSettings.panels_ipe.user_permission.create_content; + this.$el.prepend(this.template_actions(template_vars)); // Add an active class. this.$el.addClass('active'); diff --git a/panels_ipe/src/Plugin/DisplayBuilder/InPlaceEditorDisplayBuilder.php b/panels_ipe/src/Plugin/DisplayBuilder/InPlaceEditorDisplayBuilder.php index 8dc42de..b0d9035 100644 --- a/panels_ipe/src/Plugin/DisplayBuilder/InPlaceEditorDisplayBuilder.php +++ b/panels_ipe/src/Plugin/DisplayBuilder/InPlaceEditorDisplayBuilder.php @@ -130,7 +130,12 @@ class InPlaceEditorDisplayBuilder extends StandardDisplayBuilder { 'id' => $layout->getPluginId(), 'label' => $layout_definition['label'], 'original' => true, - 'changeable' => $this->panelsStorage->access($storage_type, $storage_id, 'change layout', $this->account)->isAllowed(), + ]; + + // Add information about the current user's permissions. + $settings['user_permission'] = [ + 'change_layout' => $this->panelsStorage->access($storage_type, $storage_id, 'change layout', $this->account)->isAllowed(), + 'create_content' => $this->account->hasPermission('administer blocks'), ]; // Add the display variant's config.