public function __construct(Block $block) { $c = $block->getBlockCollectionObject(); $type = $c->getPageTypeObject(); $template = $c->getPageTemplateObject(); $control = $block->getController()->getComposerOutputControlObject(); if (is_object($control)) { $control = FormLayoutSetControl::getByID($control->getPageTypeComposerFormLayoutSetControlID()); $label = $control->getPageTypeComposerFormLayoutSetControlCustomLabel(); if (!$label) { $cc = $control->getPageTypeComposerControlObject(); $label = $cc->getPageTypeComposerControlDisplayName(); } $components = array($type->getPageTypeDisplayName(), $template->getPageTemplateDisplayName(), $block->getAreaHandle(), $label); $this->block = $block; $this->setIdentifier($block->getBlockID()); $this->setDisplayName(implode(' > ', $components)); } }
public function getImportData($blockNode, $page) { $args = array(); $formLayoutSetControlID = ContentImporter::getPageTypeComposerFormLayoutSetControlFromTemporaryID((string) $blockNode->control['output-control-id']); $formLayoutSetControl = PageTypeComposerFormLayoutSetControl::getByID($formLayoutSetControlID); $pt = PageTemplate::getByID($page->getPageTemplateID()); $outputControl = PageTypeComposerOutputControl::getByPageTypeComposerFormLayoutSetControl($pt, $formLayoutSetControl); $args['ptComposerOutputControlID'] = $outputControl->getPageTypeComposerOutputControlID(); return $args; }
public function edit_composer($cID, $arHandle, $ptComposerFormLayoutSetControlID, $action) { $c = \Page::getByID($cID); $setControl = FormLayoutSetControl::getByID($ptComposerFormLayoutSetControlID); if (is_object($setControl)) { if (is_object($c) && !$c->isError()) { $formControl = $setControl->getPageTypeComposerControlObject(); if ($formControl instanceof BlockControl) { $b = $formControl->getPageTypeComposerControlBlockObject($c); if (is_object($b)) { $controller = $b->getController(); if ($controller->validateComposerEditBlockPassThruAction($b)) { return $this->deliverResponse($controller, $action); } } } } } $response = new Response(t('Access Denied')); return $response; }
</legend> <?php } ?> <?php if ($cfl->getPageTypeComposerFormLayoutSetDisplayDescription()) { ?> <span class="help-block"><?php echo $cfl->getPageTypeComposerFormLayoutSetDisplayDescription(); ?> </span> <?php } ?> <?php $controls = PageTypeComposerFormLayoutSetControl::getList($cfl); foreach ($controls as $con) { if (is_object($page)) { // we are loading content in $con->setPageObject($page); } $con->setTargetParentPageID($targetParentPageID); ?> <?php $con->render(); ?> <?php } ?> </fieldset>
public static function getPageTypeComposerOutputControlTemporaryID(FormLayoutSetControl $control) { if (isset(self::$ptComposerOutputControlIDs[$control->getPageTypeComposerFormLayoutSetControlID()])) { return self::$ptComposerOutputControlIDs[$control->getPageTypeComposerFormLayoutSetControlID()]; } }
public function duplicate(\Concrete\Core\Page\Type\Type $type) { // first, create a new set based on the current one. $set = $type->addPageTypeComposerFormLayoutSet($this->getPageTypeComposerFormLayoutSetDisplayName(), $this->getPageTypeComposerFormLayoutSetDescription()); $controls = FormLayoutSetControl::getList($this); foreach ($controls as $control) { $control->duplicate($set); } }
<?php defined('C5_EXECUTE') or die("Access Denied."); use Concrete\Core\Page\Type\Composer\FormLayoutSetControl as PageTypeComposerFormLayoutSetControl; $c = Page::getByPath('/dashboard/pages/types/form'); $cp = new Permissions($c); $ih = Loader::helper('concrete/ui'); $control = PageTypeComposerFormLayoutSetControl::getByID($_REQUEST['ptComposerFormLayoutSetControlID']); if (!is_object($control)) { die(t('Invalid control')); } $form = Loader::helper('form'); $object = $control->getPageTypeComposerControlObject(); $customTemplates = $object->getPageTypeComposerControlCustomTemplates(); $templates = array('' => t('** None')); foreach ($customTemplates as $template) { $templates[(string) $template->getPageTypeComposerControlCustomTemplateFilename()] = $template->getPageTypeComposerControlCustomTemplateName(); } if ($cp->canViewPage()) { if ($_POST['task'] == 'edit' && Loader::helper('validation/token')->validate('update_set_control')) { $sec = Loader::helper('security'); $label = $sec->sanitizeString($_POST['ptComposerFormLayoutSetControlCustomLabel']); $template = $sec->sanitizeString($_POST['ptComposerFormLayoutSetControlCustomTemplate']); $description = $sec->sanitizeString($_POST['ptComposerFormLayoutSetControlDescription']); $required = $sec->sanitizeInt($_POST['ptComposerFormLayoutSetControlRequired']); $control->updateFormLayoutSetControlCustomLabel($label); $control->updateFormLayoutSetControlCustomTemplate($template); $control->updateFormLayoutSetControlDescription($description); if ($object->pageTypeComposerFormControlSupportsValidation()) { $control->updateFormLayoutSetControlRequired($required); }
public static function getList(PageType $pagetype) { $sets = PageTypeComposerFormLayoutSet::getList($pagetype); $controls = array(); foreach ($sets as $s) { $setControls = PageTypeComposerFormLayoutSetControl::getList($s); foreach ($setControls as $sc) { $cnt = $sc->getPageTypeComposerControlObject(); $cnt->setPageTypeComposerFormLayoutSetControlObject($sc); $cnt->setPageTypeComposerFormControlRequired($sc->isPageTypeComposerFormLayoutSetControlRequired()); $controls[] = $cnt; } } return $controls; }
public function rescanFormLayoutSetControlDisplayOrder() { $sets = FormLayoutSetControl::getList($this); $displayOrder = 0; foreach ($sets as $s) { $s->updateFormLayoutSetControlDisplayOrder($displayOrder); $displayOrder++; } }
public static function addPageTypeComposerOutputControlID(PageTypeComposerFormLayoutSetControl $control, $id) { self::$ptComposerOutputControlIDs[$id] = $control->getPageTypeComposerFormLayoutSetControlID(); }
public function view() { $btc = $this->block->getInstance(); $btc->outputAutoHeaderItems(); $bv = new BlockView($this->block); $bv->addScopeItems(array('c' => $this->page, 'a' => $this->area, 'dialogController' => $this)); $this->set('bv', $bv); $canEditCustomTemplate = false; if ($this->permissions->canEditBlockCustomTemplate()) { $canEditCustomTemplate = true; switch ($this->block->getBlockTypeHandle()) { case BLOCK_HANDLE_SCRAPBOOK_PROXY: $bi = $this->block->getInstance(); $bx = \Block::getByID($bi->getOriginalBlockID()); $bt = \BlockType::getByID($bx->getBlockTypeID()); $bFilename = $bx->getBlockFilename(); break; case BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY: $bi = $this->block->getInstance(); $output = $bi->getComposerOutputControlObject(); $control = FormLayoutSetControl::getByID($output->getPageTypeComposerFormLayoutSetControlID()); $object = $control->getPageTypeComposerControlObject(); if ($object instanceof BlockControl) { $bt = $object->getBlockTypeObject(); } $bFilename = $this->block->getBlockFilename(); break; default: $bt = \BlockType::getByID($this->block->getBlockTypeID()); $bFilename = $this->block->getBlockFilename(); break; } $templates = array(); if (is_object($bt)) { $templates = $bt->getBlockTypeCustomTemplates(); } $this->set('bFilename', $bFilename); $this->set('templates', $templates); } $this->set('canEditCustomTemplate', $canEditCustomTemplate); }
public function update_set_control_display_order() { $fs = PageTypeComposerFormLayoutSet::getByID($_POST['ptComposerFormLayoutSetID']); if (is_object($fs)) { $pt = $fs->getPageTypeObject(); $this->view($pt->getPageTypeID()); if ($this->token->validate('update_set_control_display_order', $_POST['token'])) { $displayOrder = 0; foreach ($this->post('ptComposerFormLayoutSetControlID') as $ptComposerFormLayoutSetControlID) { $control = PageTypeComposerFormLayoutSetControl::getByID($ptComposerFormLayoutSetControlID); if (is_object($control)) { $control->updateFormLayoutSetControlDisplayOrder($displayOrder); $displayOrder++; } } } } exit; }
public function getPageTypeComposerControlOutputLabel() { $control = PageTypeComposerFormLayoutSetControl::getByID($this->ptComposerFormLayoutSetControlID); return $control->getPageTypeComposerControlDisplayLabel(); }
public function addBlock($bt, $a, $data) { $b = parent::addBlock($bt, $a, $data); $btHandle = $bt->getBlockTypeHandle(); if ($b->getBlockTypeHandle() == BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY) { $bi = $b->getInstance(); $output = $bi->getComposerOutputControlObject(); $control = FormLayoutSetControl::getByID($output->getPageTypeComposerFormLayoutSetControlID()); $object = $control->getPageTypeComposerControlObject(); if ($object instanceof BlockControl) { $_bt = $object->getBlockTypeObject(); $btHandle = $_bt->getBlockTypeHandle(); } } $theme = $this->getCollectionThemeObject(); if ($btHandle && $theme) { $areaTemplates = array(); if (is_object($a)) { $areaTemplates = $a->getAreaCustomTemplates(); } $themeTemplates = $theme->getThemeDefaultBlockTemplates(); if (!is_array($themeTemplates)) { $themeTemplates = array(); } $templates = array_merge($themeTemplates, $areaTemplates); if (count($templates) && isset($templates[$btHandle])) { $template = $templates[$btHandle]; $b->updateBlockInformation(array('bFilename' => $template)); } } return $b; }
public function rescanPageTypeComposerOutputControlObjects() { $sets = PageTypeComposerFormLayoutSet::getList($this); foreach ($sets as $s) { $controls = PageTypeComposerFormLayoutSetControl::getList($s); foreach ($controls as $cs) { $type = $cs->getPageTypeComposerControlTypeObject(); if ($type->controlTypeSupportsOutputControl()) { $cs->ensureOutputControlExists(); } } } }
<?php defined('C5_EXECUTE') or die("Access Denied."); use Concrete\Core\Page\Type\Composer\OutputControl as PageTypeComposerOutputControl; use Concrete\Core\Page\Type\Composer\FormLayoutSetControl as PageTypeComposerFormLayoutSetControl; $c = Page::getCurrentPage(); // retrieve all block controls attached to this page template. $pt = PageTemplate::getByID($c->getPageTemplateID()); $ptt = PageType::getByDefaultsPage($c); $controls = PageTypeComposerOutputControl::getList($ptt, $pt); $values = array(); foreach ($controls as $control) { $fls = PageTypeComposerFormLayoutSetControl::getByID($control->getPageTypeComposerFormLayoutSetControlID()); $cc = $fls->getPageTypeComposerControlObject(); $values[$control->getPageTypeComposerOutputControlID()] = $cc->getPageTypeComposerControlName(); } $form = Loader::helper('form'); ?> <div class="form-group"> <label for="ptComposerOutputControlID" class="control-label"><?php echo t('Control'); ?> </label> <?php echo $form->select('ptComposerOutputControlID', $values, $ptComposerOutputControlID); ?> </div>
public function execute(Batch $batch) { $this->batch = $batch; $pages = $this->getPagesOrderedForImport($batch); if (!$pages) { return; } foreach ($pages as $page) { $concretePage = $this->getPageByPath($batch, $page->getBatchPath()); foreach ($page->attributes as $attribute) { $ak = $this->getTargetItem('attribute', $attribute->getAttribute()->getHandle()); if (is_object($ak)) { $value = $attribute->getAttribute()->getAttributeValue(); $publisher = $value->getPublisher(); $publisher->publish($ak, $concretePage, $value); } } $em = \ORM::entityManager("migration_tool"); $r = $em->getRepository('\\PortlandLabs\\Concrete5\\MigrationTool\\Entity\\ContentMapper\\TargetItem'); $controls = $r->findBy(array('item_type' => 'composer_output_content')); $controlHandles = array_map(function ($a) { return $a->getItemID(); }, $controls); $blockSubstitutes = array(); // Now we have our $controls array which we will use to determine if any of the blocks on this page // need to be replaced by another block. foreach ($page->areas as $area) { $styleSet = $area->getStyleSet(); if (is_object($styleSet)) { $styleSetPublisher = $styleSet->getPublisher(); $publishedStyleSet = $styleSetPublisher->publish(); $concreteArea = \Area::getOrCreate($concretePage, $area->getName()); $concretePage->setCustomStyleSet($concreteArea, $publishedStyleSet); } foreach ($area->blocks as $block) { $bt = $this->getTargetItem('block_type', $block->getType()); if (is_object($bt)) { $value = $block->getBlockValue(); $publisher = $value->getPublisher(); $b = $publisher->publish($batch, $bt, $concretePage, $area, $value); $styleSet = $block->getStyleSet(); if (is_object($styleSet)) { $styleSetPublisher = $styleSet->getPublisher(); $publishedStyleSet = $styleSetPublisher->publish(); $b->setCustomStyleSet($publishedStyleSet); } if ($block->getCustomTemplate()) { $b->setCustomTemplate($block->getCustomTemplate()); } if (in_array($bt->getBlockTypeHandle(), $controlHandles)) { $blockSubstitutes[$bt->getBlockTypeHandle()] = $b; } } } } // Loop through all the blocks on the page. If any of them are composer output content blocks // We look in our composer mapping. foreach ($concretePage->getBlocks() as $b) { if ($b->getBlockTypeHandle() == BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY) { foreach ($controls as $targetItem) { if ($targetItem->isMapped() && intval($targetItem->getSourceItemIdentifier()) == intval($b->getBlockID())) { $substitute = $blockSubstitutes[$targetItem->getItemID()]; if ($substitute) { // We move the substitute to where the proxy block was. $blockDisplayOrder = $b->getBlockDisplayOrder(); $substitute->setAbsoluteBlockDisplayOrder($blockDisplayOrder); $control = $b->getController()->getComposerOutputControlObject(); if (is_object($control)) { $control = FormLayoutSetControl::getByID($control->getPageTypeComposerFormLayoutSetControlID()); if (is_object($control)) { $blockControl = $control->getPageTypeComposerControlObject(); if (is_object($blockControl)) { $blockControl->recordPageTypeComposerOutputBlock($substitute); } } } } } } // we delete the proxy block $b->deleteBlock(); } } } }