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 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 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; } } }
/** * @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; } }
/** * @return CustomLayout|ThemeGridLayout */ public function duplicate() { $db = Loader::db(); $v = array($this->arLayoutSpacing, $this->arLayoutIsCustom); $db->Execute('insert into AreaLayouts (arLayoutSpacing, arLayoutIsCustom) values (?, ?)', $v); $newAreaLayoutID = $db->Insert_ID(); if ($newAreaLayoutID) { $newAreaLayout = Layout::getByID($newAreaLayoutID); $columns = $this->getAreaLayoutColumns(); foreach ($columns as $col) { $col->duplicate($newAreaLayout); } return $newAreaLayout; } }
public function duplicate() { $db = Loader::db(); $v = array($this->arLayoutMaxColumns, 1); $db->Execute('insert into AreaLayouts (arLayoutMaxColumns, arLayoutUsesThemeGridFramework) values (?, ?)', $v); $newAreaLayoutID = $db->Insert_ID(); if ($newAreaLayoutID) { $newAreaLayout = Layout::getByID($newAreaLayoutID); $columns = $this->getAreaLayoutColumns(); foreach ($columns as $col) { $col->duplicate($newAreaLayout); } 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); } }
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 getAreaLayoutObject() { return Layout::getByID($this->arLayoutID); }
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); } }