Exemplo n.º 1
0
 /**
  * Constructs a BaseCommand object.
  *
  * @param string $data
  *   The data to pass on to the client side.
  */
 public function __construct(LayoutPageVariantInterface $page_variant, LayoutRegionInterface $layout_region)
 {
     $this->command = 'layoutRegionReload';
     $data = PageLayout::getGroupedBlockArrays($page_variant);
     $region = array();
     foreach ($data['regions'] as $nr => $region) {
         if ($region['id'] === $layout_region->id()) {
             $this->data = $region;
             break;
         }
     }
 }
Exemplo n.º 2
0
 /**
  * @param LayoutPageVariantInterface $page_variant
  * @return array
  */
 public static function getGroupedBlockArrays(LayoutPageVariantInterface $page_variant)
 {
     $grouped = $page_variant->getRegionAssignments();
     $regions = $page_variant->getLayoutRegions();
     $data = array('id' => $page_variant->id(), 'layout' => $page_variant->getLayoutId());
     foreach ($regions as $region_id => $region) {
         // $region->init($page_variant);
         $options = $region->getOptions();
         if (isset($options['admin-width'])) {
             $options['width'] = self::calculateAdminWidthPercentage($options['admin-width']);
         }
         $plugin_definition = $region->getPluginDefinition();
         $region_data = array('id' => $region_id, 'label' => is_object($region->label()) ? (string) $region->label() : $region->label(), 'parent' => $region->getParentRegionId(), 'plugin_id' => $plugin_definition['id'], 'weight' => $region->getWeight(), 'actions' => self::getRegionActions($page_variant, $region), 'options' => $options, 'blocks' => array());
         $blocks = isset($grouped[$region_id]) && is_array($grouped[$region_id]) ? $grouped[$region_id] : array();
         foreach ($blocks as $block_id => $block) {
             $block_info = PageLayout::blockToArray($block);
             $region_data['blocks'][] = $block_info;
         }
         $data['regions'][] = $region_data;
     }
     return $data;
 }
Exemplo n.º 3
0
 /**
  * Constructs a BaseCommand object.
  *
  * @param string $data
  *   The data to pass on to the client side.
  */
 public function __construct(PageVariantInterface $page_variant)
 {
     $this->command = 'layoutReload';
     $this->data = PageLayout::getLayoutPageVariantClientData($page_variant);
 }
Exemplo n.º 4
0
 /**
  * Constructs a BaseCommand object.
  *
  * @param string $data
  *   The data to pass on to the client side.
  */
 public function __construct(BlockPluginInterface $block)
 {
     $this->command = 'layoutBlockReload';
     $this->data = PageLayout::blockToArray($block);
 }
Exemplo n.º 5
0
 /**
  * {@inheritdoc}
  */
 public function buildConfigurationForm(array $form, array &$form_state)
 {
     // Adding
     $adding_variant = !isset($this->configuration['layout']);
     $form = parent::buildConfigurationForm($form, $form_state);
     $form['layout'] = array('#title' => t('Layout'), '#type' => 'select', '#default_value' => $this->getLayoutId(), '#options' => Layout::getLayoutOptions(), '#disabled' => !$adding_variant, '#description' => t('Note: change a template would require salvaging blocks from disappearing regions. We will do that ... soon.'), '#required' => TRUE);
     $page = $form_state['build_info']['args'][0];
     if (!$adding_variant) {
         $page_variant = $page->getVariant($form_state['build_info']['args'][1]);
         $page_variant->init($page->getExecutable());
         $form['links'] = array('#type' => 'markup', '#markup' => l(t('Preview layout'), $page->get('path'), array('attributes' => array('target' => drupal_html_id($page->id())))));
         // This is just a quick hack, we need some form of theme_layout_ui call.
         $form['blocks'] = array('#title' => t('Blocks'), '#markup' => '<label>' . t('Layout UI') . '</label>' . '<div class="layout-configure-form">' . '<div id="layout-app">' . '<div class="operations">' . '<a class="highlight-blocks" href="#blocks">' . $this->t('Focus on blocks') . '</a> ' . '<a class="highlight-regions" href="#regions">' . $this->t('Focus on regions') . '</a> ' . '</div>' . '<div class="layout-app-inner"></div>' . '</div>' . '</div>', '#default_value' => '', '#attached' => array('library' => array('page_layout/layout'), 'js' => array(array('data' => PageLayout::getLayoutPageVariantClientData($page_variant), 'type' => 'setting'))));
     }
     return $form;
 }