Example #1
0
 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();
     }
 }
Example #2
0
 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);
 }
Example #4
0
    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);
 }
Example #6
0
 /**
  * @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;
     }
 }
Example #7
0
 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);
     }
 }
Example #8
0
 /**
  * @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);
 }
Example #9
0
 /**
  * @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;
     }
 }
Example #10
0
 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);
 }
Example #11
0
 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();
 }
Example #12
0
 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);
     }
 }