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));
     }
 }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
</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()];
     }
 }
Esempio n. 6
0
 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);
     }
 }
Esempio n. 7
0
<?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);
        }
Esempio n. 8
0
 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++;
     }
 }
Esempio n. 10
0
 public static function addPageTypeComposerOutputControlID(PageTypeComposerFormLayoutSetControl $control, $id)
 {
     self::$ptComposerOutputControlIDs[$id] = $control->getPageTypeComposerFormLayoutSetControlID();
 }
Esempio n. 11
0
 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);
 }
Esempio n. 12
0
 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;
 }
Esempio n. 13
0
 public function getPageTypeComposerControlOutputLabel()
 {
     $control = PageTypeComposerFormLayoutSetControl::getByID($this->ptComposerFormLayoutSetControlID);
     return $control->getPageTypeComposerControlDisplayLabel();
 }
Esempio n. 14
0
 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;
 }
Esempio n. 15
0
 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();
             }
         }
     }
 }
Esempio n. 16
0
<?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();
             }
         }
     }
 }