public function getParentRegionOptions() { $regions = $this->pageVariant->getLayoutRegions(); $options = array(); $contained_region_ids = $this->getAllContainedRegionIds(); foreach ($regions as $region) { // @todo: filter to avoid nesting bugs & filter for valid parent region types. if ($region->id() !== $this->id() && !in_array($region->id(), $contained_region_ids)) { $options[$region->id()] = $region->label(); } } return $options; }
/** * @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; }