Ejemplo n.º 1
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();
 }
Ejemplo n.º 2
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();
     }
 }
Ejemplo n.º 3
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;
            }
        }
    }
Ejemplo n.º 4
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;
     }
 }
Ejemplo n.º 5
0
 /**
  * @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;
     }
 }
Ejemplo n.º 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);
     }
 }
Ejemplo n.º 8
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);
 }
Ejemplo n.º 9
0
 public function getAreaLayoutObject()
 {
     return Layout::getByID($this->arLayoutID);
 }
Ejemplo n.º 10
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);
     }
 }