public function submit($arLayoutID) { if ($this->validateAction()) { $arLayout = AreaLayout::getByID($arLayoutID); if (!is_object($arLayout)) { throw new Exception(t('Invalid layout object.')); } if ($_POST['arLayoutPresetID'] == '-1') { UserPreset::add($arLayout, $_POST['arLayoutPresetName']); } else { $existingPreset = UserPreset::getByID($_POST['arLayoutPresetID']); if (is_object($existingPreset)) { $existingPreset->updateName($_POST['arLayoutPresetName']); $existingPreset->updateAreaLayoutObject($arLayout); } } $pr = new EditResponse(); if ($existingPreset) { $pr->setMessage(t('Area layout preset updated successfully.')); } else { $pr->setMessage(t('Area layout preset saved successfully.')); } $pr->outputJSON(); } }
public function testThemeGridAreaLayoutContainer() { $layout = \Concrete\Core\Area\Layout\ThemeGridLayout::add(); $layout->addLayoutColumn()->setAreaLayoutColumnSpan(4); $column = $layout->addLayoutColumn(); $column->setAreaLayoutColumnSpan(2); $column->setAreaLayoutColumnOffset(2); $layout->addLayoutColumn()->setAreaLayoutColumnSpan(6); $elemental = \Concrete\Core\Page\Theme\Theme::add('elemental'); Page::addHomePage(); Core::make('cache/request')->disable(); $c = Page::getByID(1); $c->setTheme($elemental); $c = Page::getByID(1); $req = Request::getInstance(); $req->setCurrentPage($c); $layout = \Concrete\Core\Area\Layout\Layout::getByID(1); $this->assertInstanceOf('\\Concrete\\Core\\Area\\Layout\\ThemeGridLayout', $layout); $columns = $layout->getAreaLayoutColumns(); $this->assertEquals(3, count($columns)); $formatter = $layout->getFormatter(); $this->assertInstanceOf('\\Concrete\\Core\\Area\\Layout\\Formatter\\ThemeGridFormatter', $formatter); $this->assertEquals('<div class="row"></div>', (string) $formatter->getLayoutContainerHtmlObject()); $req->clearCurrentPage(); }
public function addLayoutColumn() { $columnID = parent::addLayoutColumn(); $db = Loader::db(); $db->Execute('insert into AreaLayoutCustomColumns (arLayoutColumnID, arLayoutColumnWidth) values (?, 0)', array($columnID)); return CustomColumn::getByID($columnID); }
public function layout($arLayoutID) { $arLayout = Layout::getByID($arLayoutID); if (is_object($arLayout) && $arLayout instanceof CustomLayout) { $css = <<<EOL \tdiv.ccm-layout-column { \t\t\tfloat: left; \t\t} \t\t/* clearfix */ \t\tdiv.ccm-layout-column-wrapper {*zoom:1;} \t\tdiv.ccm-layout-column-wrapper:before, div.ccm-layout-column-wrapper:after {display:table;content:"";line-height:0;} \t\tdiv.ccm-layout-column-wrapper:after {clear:both;} EOL; $wrapper = 'ccm-layout-column-wrapper-' . $arLayout->getAreaLayoutID(); $columns = $arLayout->getAreaLayoutColumns(); if (count($columns) > 0) { $margin = $arLayout->getAreaLayoutSpacing() / 2; if ($arLayout->hasAreaLayoutCustomColumnWidths()) { foreach ($columns as $col) { $arLayoutColumnID = $col->getAreaLayoutColumnID(); $width = $col->getAreaLayoutColumnWidth(); if ($width) { $width .= 'px'; } $css .= "#{$wrapper} div#ccm-layout-column-{$arLayoutColumnID} { width: {$width}; }\n"; } } else { $width = 100 / count($columns); $css .= <<<EOL \t#{$wrapper} div.ccm-layout-column { \twidth: {$width}%; \t} EOL; } $css .= <<<EOL \t#{$wrapper} div.ccm-layout-column-inner { \tmargin-right: {$margin}px; \tmargin-left: {$margin}px; \t} \t#{$wrapper} div.ccm-layout-column:first-child div.ccm-layout-column-inner { \tmargin-left: 0px; \t} \t#{$wrapper} div.ccm-layout-column:last-child div.ccm-layout-column-inner { \tmargin-right: 0px; \t} EOL; $response = new Response(); $response->setContent($css); $response->headers->set('Content-Type', 'text/css'); return $response; } } }
public function addLayoutColumn() { $columnID = parent::addLayoutColumn(); $db = Loader::db(); $db->Execute('insert into AreaLayoutThemeGridColumns (arLayoutColumnID) values (?)', array($columnID)); return ThemeGridColumn::getByID($columnID); }
/** * @return PresetLayout */ public function duplicate() { $db = Loader::db(); $v = array($this->arLayoutIsPreset); $db->Execute('insert into AreaLayouts (arLayoutIsPreset) values (?)', $v); $newAreaLayoutID = $db->Insert_ID(); if ($newAreaLayoutID) { $v = array($newAreaLayoutID, $this->getAreaLayoutPresetHandle()); $db->Execute('insert into AreaLayoutsUsingPresets (arLayoutID, preset) values (?, ?)', $v); $newAreaLayout = Layout::getByID($newAreaLayoutID); return $newAreaLayout; } }
public function save($post) { if (isset($post['arLayoutID'])) { // we are passing it in directly –likely from import $values = array('arLayoutID' => $post['arLayoutID']); parent::save($values); return; } else { $db = Database::connection(); $arLayoutID = $db->GetOne('select arLayoutID from btCoreAreaLayout where bID = ?', array($this->bID)); if (!$arLayoutID) { $arLayout = $this->addFromPost($post); } else { $arLayout = AreaLayout::getByID($arLayoutID); if ($arLayout instanceof PresetLayout) { return; } // save spacing if ($arLayout->isAreaLayoutUsingThemeGridFramework()) { $columns = $arLayout->getAreaLayoutColumns(); for ($i = 0; $i < count($columns); ++$i) { $col = $columns[$i]; $span = $post['span'][$i] ? $post['span'][$i] : 0; $offset = $post['offset'][$i] ? $post['offset'][$i] : 0; $col->setAreaLayoutColumnSpan($span); $col->setAreaLayoutColumnOffset($offset); } } else { $arLayout->setAreaLayoutColumnSpacing($post['spacing']); if ($post['isautomated']) { $arLayout->disableAreaLayoutCustomColumnWidths(); } else { $arLayout->enableAreaLayoutCustomColumnWidths(); $columns = $arLayout->getAreaLayoutColumns(); for ($i = 0; $i < count($columns); ++$i) { $col = $columns[$i]; $width = $post['width'][$i] ? $post['width'][$i] : 0; $col->setAreaLayoutColumnWidth($width); } } } } $values = array('arLayoutID' => $arLayout->getAreaLayoutID()); parent::save($values); } }
/** * @param bool $disableControls */ public function display($disableControls = false) { $layout = $this->getAreaLayoutObject(); $a = $layout->getAreaObject(); $as = new SubArea($this->getAreaLayoutColumnDisplayID(), $a->getAreaHandle(), $a->getAreaID()); $as->setAreaDisplayName(t('Column %s', $this->getAreaLayoutColumnIndex() + 1)); if ($disableControls) { $as->disableControls(); } $c = $a->getAreaCollectionObject(); $as->load($c); if (!$this->getAreaID()) { $this->setAreaID($as->getAreaID()); } $as->setSubAreaBlockObject($this->arLayout->getBlockObject()); $as->display($c); }
/** * @return SubArea|null */ public function getSubAreaObject() { $layout = $this->getAreaLayoutObject(); $a = $layout->getAreaObject(); if (is_object($a)) { $as = new SubArea($this->getAreaLayoutColumnDisplayID(), $a->getAreaHandle(), $a->getAreaID()); $as->setAreaGridMaximumColumns($this->getSubAreaMaximumColumns()); $as->setAreaDisplayName(t('Column %s', $this->getAreaLayoutColumnIndex() + 1)); $c = $a->getAreaCollectionObject(); $as->load($c); if (!$this->getAreaID()) { $this->setAreaID($as->getAreaID()); } $as->setSubAreaBlockObject($this->arLayout->getBlockObject()); return $as; } else { return null; } }
public function save($post) { $db = Loader::db(); $arLayoutID = $db->GetOne('select arLayoutID from btCoreAreaLayout where bID = ?', array($this->bID)); if (!$arLayoutID) { $arLayout = $this->addFromPost($post); } else { $arLayout = AreaLayout::getByID($arLayoutID); // save spacing if ($arLayout->isAreaLayoutUsingThemeGridFramework()) { $columns = $arLayout->getAreaLayoutColumns(); for ($i = 0; $i < count($columns); $i++) { $col = $columns[$i]; $span = $post['span'][$i] ? $post['span'][$i] : 0; $offset = $post['offset'][$i] ? $post['offset'][$i] : 0; $col->setAreaLayoutColumnSpan($span); $col->setAreaLayoutColumnOffset($offset); } } else { $arLayout->setAreaLayoutColumnSpacing($post['spacing']); if ($post['isautomated']) { $arLayout->disableAreaLayoutCustomColumnWidths(); } else { $arLayout->enableAreaLayoutCustomColumnWidths(); $columns = $arLayout->getAreaLayoutColumns(); for ($i = 0; $i < count($columns); $i++) { $col = $columns[$i]; $width = $post['width'][$i] ? $post['width'][$i] : 0; $col->setAreaLayoutColumnWidth($width); } } } } $values = array('arLayoutID' => $arLayout->getAreaLayoutID()); parent::save($values); }
public function updateAreaLayoutObject(Layout $arLayout) { $db = Loader::db(); $db->Execute('update AreaLayoutPresets set arLayoutID = ? where arLayoutPresetID = ?', array($arLayout->getAreaLayoutID(), $this->arLayoutPresetID)); $this->arLayoutID = $arLayout->getAreaLayoutID(); }
public function save($post) { if (isset($post['arLayoutID']) && !isset($post['arLayoutEdit'])) { // terribly lame, but in import we pass arLayoutID and we also pass it in the post of editing a layout // We need to somehow differentiate the two. If it's JUST arLayoutID we're using the migration tool // if it includes arLayoutEdit (which is included in the form) then run the standrd block save. // we are passing it in directly –likely from import $values = array('arLayoutID' => $post['arLayoutID']); parent::save($values); return; } else { $db = Database::connection(); $arLayoutID = $db->GetOne('select arLayoutID from btCoreAreaLayout where bID = ?', array($this->bID)); if (!$arLayoutID) { $arLayout = $this->addFromPost($post); } else { $arLayout = AreaLayout::getByID($arLayoutID); if ($arLayout instanceof PresetLayout) { return; } // save spacing if ($arLayout->isAreaLayoutUsingThemeGridFramework()) { $columns = $arLayout->getAreaLayoutColumns(); for ($i = 0; $i < count($columns); ++$i) { $col = $columns[$i]; $span = $post['span'][$i] ? $post['span'][$i] : 0; $offset = $post['offset'][$i] ? $post['offset'][$i] : 0; $col->setAreaLayoutColumnSpan($span); $col->setAreaLayoutColumnOffset($offset); } } else { $arLayout->setAreaLayoutColumnSpacing($post['spacing']); if ($post['isautomated']) { $arLayout->disableAreaLayoutCustomColumnWidths(); } else { $arLayout->enableAreaLayoutCustomColumnWidths(); $columns = $arLayout->getAreaLayoutColumns(); for ($i = 0; $i < count($columns); ++$i) { $col = $columns[$i]; $width = $post['width'][$i] ? $post['width'][$i] : 0; $col->setAreaLayoutColumnWidth($width); } } } } $values = array('arLayoutID' => $arLayout->getAreaLayoutID()); parent::save($values); } }