$tags->addColumn('id', 'integer', array('unsigned' => true, 'autoincrement' => true));
$tags->setPrimaryKey(array('id'));
$tags->addColumn('name', 'string', array('length' => 64));
+
+ $casestudies = $schema->createTable('casestudies');
+ $casestudies->addColumn('id', 'integer', array('unsigned' => true, 'autoincrement' => true));
+ $casestudies->setPrimaryKey(array('id'));
+ $casestudies->addColumn('titre', 'text');
+ $casestudies->addColumn('description', 'text');
+ $casestudies->addColumn('url', 'text');
+ $casestudies->addColumn('visuel', 'string', array('length' => 128));
+ $casestudies->addColumn('visuel_detail', 'string', array('length' => 128));
+ $casestudies->addColumn('legende', 'text');
+ $casestudies->addColumn('couleur', 'text');
+ $casestudies->addColumn('blocs', 'text');
+ $casestudies->addColumn('tags', 'text');
}
protected function _initAcl() {
return $acl;
}
+ protected function _makeNavigationOnePage(&$navigation, $r, $t, $isAdmin, $locale = false) {
+ $page = parent::_makeNavigationOnePage($navigation, $r, $t, $isAdmin, $locale);
+
+ if (!$page) {
+ return;
+ }
+
+ if ($page->getTemplate() == 'casestudies') {
+ $this->addStudiesPages($page);
+ }
+ }
+
+ /**
+ *
+ * @param CubeIT_Navigation_Page_Locale $page
+ */
+ protected function addStudiesPages($page) {
+ $datas = $this->getCMSDatasOfNavigationPage($page);
+ //fb($datas);
+ $db = Zend_Db_Table::getDefaultAdapter();
+ $s = $db->select()->from('casestudies')
+ ->order('id ASC');
+ $q = $s->query();
+
+ fb("datas", $datas['seourl_stu']);
+
+ while ($r = $q->fetch()) {
+ if ($r->titre == '') {
+ continue;
+ }
+ $p = new CubeIT_Navigation_Page_Locale();
+ $p->setController('Studies');
+ $p->setId($page->getId() . '/' . $r->id);
+ $p->setAutoUri($r, $datas['seourl_stu'], $page->getLocale());
+ $p->setSitemap(true);
+ $p->setEditable(false);
+ $p->setDomain($page->getDomain());
+ $p->setLabel($r->titre);
+ $page->addPage($p);
+ }
+
+ /* foreach ($datas['studies'] as $k => $studie) {
+ if ($studie['titre'] == '') {
+ continue;
+ }
+ $p = new CubeIT_Navigation_Page_Locale();
+ $p->setController('Studies');
+ $p->setId($page->getId() . '/' . $k);
+ $p->setAutoUri($studie, $datas['seourl_stu'], $page->getLocale());
+ $p->setSitemap(true);
+ $p->setEditable(false);
+ $p->setDomain($page->getDomain());
+ $p->setLabel($studie['titre']);
+ $page->addPage($p);
+ } */
+ }
+
/**
*
* @return array
$templates['Agence'] = array('agence' => 'L\'agence');
$templates['Realisations'] = array('realisations' => 'Réalisations');
$templates['Casestudies'] = array('casestudies' => 'Case-Studies');
+ $templates['CasestudiesDetail'] = array('casestudies_detail' => 'Case-Studies (détail)');
$templates['Expertises'] = array('expertises' => 'Expertises');
$templates['Contact'] = array('contact' => 'Contact');
$templates['Mentions'] = array('mentions' => 'Mentions légales');
--- /dev/null
+<?php\r
+\r
+class StudiesController extends CubeIT_Controller_PageController {\r
+\r
+ public function indexAction() {\r
+ $parent = $this->view->currentPage->getParent();\r
+\r
+ $datas = $this->getBootstrap()->getCMSDatasOfNavigationPage($parent);\r
+ $this->view->datas = $datas;\r
+\r
+ $url = $this->getRequest()->getParam('page');\r
+\r
+ $ok = false;\r
+\r
+ $db = Zend_Db_Table::getDefaultAdapter();\r
+ $s = $db->select()->from('casestudies')\r
+ ->order('id ASC');\r
+ $q = $s->query();\r
+\r
+ while ($r = $q->fetch()) {\r
+ if (CubeIT_Navigation_Page::generateAutoUri($r, $datas['seourl_stu'], null) == $url) {\r
+\r
+ $this->view->casestudies_titre = $datas["titre"];\r
+ $this->view->titre = $r->titre;\r
+ $this->view->studie = $r;\r
+\r
+ $ok = true;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (!$ok) {\r
+ $this->_404();\r
+ return;\r
+ }\r
+ }\r
+\r
+}\r
+\r
+?>\r
$titre->setLabel('Titre');\r
$this->addElement($titre);\r
\r
- $studies = new Cubedesigners_Form_CMS_Sub_Casestudies_Studies();\r
- $studies->setLabel('Etudes de cas');\r
- $this->addSubForm($studies, 'studies');\r
+ $stuurl = new Zend_Form_Element_Text('seourl_stu');\r
+ $stuurl->setLabel('Modèle d\'URL des études de cas');\r
+ $this->addElement($stuurl);\r
+\r
+ $studies = new Cubedesigners_Form_CMS_Element_Casestudies('studies');\r
+ $studies->setLabel('Gestion des études de cas');\r
+ $this->addElement($studies);\r
}\r
\r
}\r
--- /dev/null
+<?php\r
+\r
+class Cubedesigners_Form_CMS_Element_Casestudies extends CubeIT_Form_Element_List {\r
+\r
+ public function init() {\r
+ parent::init();\r
+\r
+ $this->setBaseForm(new Cubedesigners_Form_CMS_Sub_Casestudies_Studies());\r
+ $this->clearDecorators();\r
+ }\r
+\r
+}\r
$select->setAttrib('data-name', 'selected-type');
$this->addElement($select);
+ $margin = new Zend_Form_Element_Text('margin');
+ $margin->setLabel("Décalage du vertical bloc (en pixels)");
+ $this->addElement($margin);
+
$titre = new Zend_Form_Element_Text('titre');
$titre->setLabel('Titre');
$this->addElement($titre);
$video = new CubeIT_Form_Element_WebVideo('video');
$video->setLabel('URL de la vidéo');
$this->addElement($video);
+
+ $video_background = new CubeIT_Form_Element_File_Image('video_background');
+ $video_background->setLabel('Fond de la vidéo');
+ $video_background->setMaxItems(1);
+ $this->addElement($video_background);
+
+ $type = new Zend_Form_Element_Hidden('form-type');
+ $type->setAttrib('data-name', 'form-type');
+ $type->setValue('test');
+ $this->addElement($type);
}
}
<?php
-class Cubedesigners_Form_CMS_Sub_Casestudies_Studies extends CubeIT_Form_Multi_SubForm {
+class Cubedesigners_Form_CMS_Sub_Casestudies_Studies extends CubeIT_Form_List {
public function init() {
parent::init();
+ $id = new CubeIT_Form_Element_Id();
+ $this->addElement($id);
- $studie = new Cubedesigners_Form_CMS_Sub_Casestudies_Studie();
- $this->setBaseSubForm($studie);
- $this->setBaseLegend('Edition de l\'etude de cas « $titre »');
- $this->setNewLegend('Nouvelle étude de cas');
+ $titre = new Zend_Form_Element_Text('titre');
+ $titre->setLabel('Titre');
+ $this->addElement($titre);
+
+ $description = new Zend_Form_Element_Text('description');
+ $description->setLabel('Description');
+ $this->addElement($description);
+
+ $url = new CubeIT_Form_Element_Url('url');
+ $url->setLabel('URL du site');
+ $this->addElement($url);
+
+ $visuel = new CubeIT_Form_Element_File_Image('visuel');
+ $visuel->setLabel('Visuel de la page Case Studies');
+ $visuel->setMaxItems(1);
+ $this->addElement($visuel);
+
+ $visuel_detail = new CubeIT_Form_Element_File_Image('visuel_detail');
+ $visuel_detail->setLabel('Visuel de la page de détail');
+ $visuel_detail->setMaxItems(1);
+ $this->addElement($visuel_detail);
+
+ $legende = new Zend_Form_Element_Text('legende');
+ $legende->setLabel('Legende du visuel');
+ $this->addElement($legende);
+
+ $color = new Zend_Form_Element_Text('couleur');
+ $color->setLabel('Code couleur de la zone de contenu');
+ $this->addElement($color);
+
+ $blocs = new Cubedesigners_Form_CMS_Sub_Casestudies_Content_Blocs('blocs');
+ $blocs->setLegend('Contenu');
+ $this->addSubForm($blocs, 'blocs');
+
+ $tags = new Cubedesigners_Form_Element_Tags('tags');
+ $tags->setLabel('Tags');
+ $this->addElement($tags);
+
+ $bootstrap = Bootstrap::getInstance();
+ $view = $bootstrap->getView();
+
+ $this->setListTitle('Etudes de cas')
+ ->setNewTitle('Créer une étude de cas')
+ ->setEditTitle('Edition de l\'éétude de cas « $titre »')
+ ->setBaseTable('casestudies')
+ ->setIdColumn('id')
+ ->setTitleColumn('titre');
}
}
--- /dev/null
+<?php\r
+\r
+class Cubedesigners_View_Helper_CasestudiesDetail extends Zend_View_Helper_Abstract {\r
+\r
+ public function CasestudiesDetail($studie) {\r
+\r
+ $visuel_detail = $this->view->imageProcess($studie->visuel_detail, $studie->titre, 980, 400);\r
+\r
+ $res = '<div id="casestudies-detail-visuel">';\r
+ $res .= '<div class="visuel-holder">';\r
+ $res .= '<div class="visuel">' . $visuel_detail . '</div>';\r
+\r
+\r
+ $res .= '<div class="legende">' . $studie->legende . '</div>';\r
+\r
+ if ($studie->url != '') {\r
+ $res .= '<a href="' . $studie->url . '" style="float:right">' . __("Voir le site") . '</a>';\r
+ }\r
+\r
+ $res .= '</div>';\r
+ $res .= '</div>';\r
+\r
+ $style = '';\r
+ if ($studie->couleur != '') {\r
+ $style = 'background-color:' . $studie->couleur;\r
+ }\r
+ $res .= '<div id="casestudies-detail-content" style="' . $style . ';">';\r
+\r
+ $blocs = json_decode($studie->blocs, true);\r
+\r
+ foreach ($blocs as $bloc) {\r
+\r
+ $margin = '';\r
+\r
+ if ($bloc["margin"] != '') {\r
+ $margin = 'margin-top:' . $bloc["margin"] . 'px;';\r
+ }\r
+\r
+ if ($bloc["selectedtype"] == "text") {\r
+\r
+ $res .= '<div class="detail-text" style="' . $margin . '" >';\r
+ $res .= '<div class="titre">' . $bloc["titre"] . '</div>';\r
+ $res .= '<div class="texte">' . $bloc["texte"] . '</div>';\r
+ $res .= '</div>';\r
+ }\r
+\r
+ if ($bloc["selectedtype"] == "visuel") {\r
+ $visuel = $this->view->imageProcess()->imageProcessGetUrl($bloc["visuel"], '', 1200, null);\r
+ $width = -1;\r
+ $height = -1;\r
+ CubeIT_Image::getDimensions($visuel, $width, $height);\r
+\r
+\r
+\r
+ $res .= '<div class="detail-visuel" style="background-image:url(\'' . $visuel . '\');height:' . $height . 'px;' . $margin . '"></div>';\r
+ }\r
+\r
+\r
+ $addVideoBackground = false;\r
+ if ($bloc["video_background"] != false) {\r
+ $addVideoBackground = true;\r
+ }\r
+\r
+ if ($bloc["selectedtype"] == "video") {\r
+\r
+ if ($addVideoBackground) {\r
+ $background = $this->view->imageProcess()->imageProcessGetUrl($bloc["video_background"], '', 1200, null);\r
+ $width = -1;\r
+ $height = -1;\r
+ CubeIT_Image::getDimensions($background, $width, $height);\r
+ $res.= '<div class="detail-video-background" style="width:100%;background-position:50%;background-image:url(\'' . $background . '\');height:' . $height . 'px;">';\r
+ }\r
+\r
+ $res .= '<div class="detail-video" style="' . $margin . '" >';\r
+ $video = $this->view->videoWeb($bloc["video"], 980);\r
+ $res .= '<div>' . $video . '</div>';\r
+ $res .= '</div>';\r
+\r
+ if ($addVideoBackground) {\r
+ $res.= "</div>";\r
+ }\r
+ }\r
+ }\r
+ $res .= '</div>';\r
+\r
+ return $res;\r
+ }\r
+\r
+}\r
+\r
+?>\r
\r
class Cubedesigners_View_Helper_CasestudiesList extends Zend_View_Helper_Abstract {\r
\r
- public function CasestudiesList($studies) {\r
+ public function CasestudiesList($datas) {\r
+\r
+ $db = Zend_Db_Table::getDefaultAdapter();\r
+ $s = $db->select()->from('casestudies')\r
+ ->order('id ASC');\r
+ $q = $s->query();\r
\r
$count = 1;\r
\r
$res = '';\r
\r
- foreach ($studies as $studie) {\r
-\r
+ while ($r = $q->fetch()) {\r
$addSpacer = false;\r
\r
if ($count == 3) {\r
$count++;\r
}\r
\r
- $image = $this->view->imageProcess($studie['visuel'], $studie['titre'], 300, 225);\r
-\r
- $res .= '<div class="bloc' . $addClass . '" data-tags="' . $studie["tags"] . '">';\r
+ $image = $this->view->imageProcess($r->visuel, $r->titre, 300, 225);\r
+ $url = CubeIT_Navigation_Page::generateAutoUri($r, $datas['seourl_stu']);\r
+ $res .= '<a href="' . $url . '">';\r
+ $res .= '<div class="bloc' . $addClass . '" data-tags="' . $r->tags . '">';\r
$res .= '<div class="project-photo">' . $image . '</div>';\r
- $res .= '<div class="project-title">' . $studie["titre"] . '</div>';\r
- $res .= '<div class="project-description">' . $studie["description"] . '</div>';\r
+ $res .= '<div class="project-title">' . $r->titre . '</div>';\r
+ $res .= '<div class="project-description">' . $r->description . '</div>';\r
$res .= '</div>';\r
+ $res .= '</a>';\r
\r
// if ($addSpacer) {\r
// $res .= '<div class="spacer"></div>';\r
\r
$tagslist = Array();\r
\r
- foreach ($studies as $studie) {\r
- $temp = explode(',', $studie["tags"]);\r
+ $db0 = Zend_Db_Table::getDefaultAdapter();\r
+ $s0 = $db0->select()->from('casestudies')\r
+ ->order('id ASC');\r
+ $q0 = $s0->query();\r
+\r
+ while ($r0 = $q0->fetch()) {\r
+ $temp = explode(',', $r0->tags);\r
\r
for ($i = 0; $i < count($temp); $i++) {\r
if (!in_array($temp[$i], $tagslist)) {\r
--- /dev/null
+<?php\r
+$this->headScript()->addScriptAndStyle('casestudies');\r
+$this->headScript()->addScriptAndStyle('casestudies_detail');\r
+?>\r
+\r
+<div class="casestudies-detail-title"><?php echo $this->markupDotclear($this->titre); ?></div>\r
+\r
+<?php\r
+echo $this->CasestudiesDetail($this->studie);\r
+?>\r
+\r
+<div class="title"><?php echo $this->markupDotclear($this->casestudies_titre); ?></div>\r
+\r
+<div id="casestudies-list">\r
+ <?php echo $this->CasestudiesList($this->datas); ?>\r
+</div>
\ No newline at end of file
<?php\r
$this->headScript()->addScriptAndStyle('casestudies');\r
-\r
-fb($this->studies);\r
?>\r
\r
<div class="title"><?php echo $this->markupDotclear($this->titre); ?></div>\r
\r
\r
<div id="casestudies-list">\r
- <?php echo $this->CasestudiesList($this->studies); ?>\r
+ <?php\r
+ $datas = Bootstrap::getInstance()->getCMSDatasOfPage($this->id);\r
+ echo $this->CasestudiesList($datas);\r
+ ?>\r
</div>\r
\r
function initSelectType() {\r
$( "select[data-name='selected-type']" ).each( function() {\r
var cible = $(this).parent().parent();\r
- displayFormTypeElements( cible, 'text' );\r
+ displayFormTypeElements( cible, this.value );\r
});\r
\r
$(document).on("change", "select[data-name='selected-type']", function() {\r
}\r
\r
function displayFormTypeElements( cible, choice ) {\r
- \r
+\r
switch ( choice ) {\r
case 'text' :\r
cible.children(".elementwrap-titre").css("display","block");\r
cible.children(".elementwrap-texte").css("display","block");\r
cible.children(".elementwrap-visuel").css("display","none");\r
cible.children(".elementwrap-video").css("display","none");\r
+ cible.children(".elementwrap-video_background").css("display","none");\r
break;\r
\r
case 'visuel' :\r
cible.children(".elementwrap-texte").css("display","none");\r
cible.children(".elementwrap-visuel").css("display","block");\r
cible.children(".elementwrap-video").css("display","none");\r
+ cible.children(".elementwrap-video_background").css("display","none");\r
break;\r
\r
case 'video' :\r
cible.children(".elementwrap-texte").css("display","none");\r
cible.children(".elementwrap-visuel").css("display","none");\r
cible.children(".elementwrap-video").css("display","block");\r
+ cible.children(".elementwrap-video_background").css("display","block");\r
break;\r
}\r
\r
margin: 0 auto;
padding: 0 0 50px 0;
overflow: hidden;
-}
-
-#casestudies-list .bloc {
+
+ .bloc {
width:300px;
float:left;
}
-#casestudies-list .bloc .project-photo {
+a,a:hover {
+ color:#000;
+}
+
+.bloc .project-photo {
width:300px;
height:225px;
background-color: #ccc;
margin:0 0 20px 0;
}
-#casestudies-list .bloc .project-title {
+.bloc .project-title {
font-size: 32px;
}
-#casestudies-list .bloc .project-description {
+ .bloc .project-description {
font-size: 14px;
margin-bottom: 20px;
}
-#casestudies-list .blocmargin {
+.blocmargin {
margin-right:40px;
}
-#casestudies-list .spacer {
+.spacer {
clear: left;
height:20px;
+}
+
+}
+
+
+/*.casestudies-detail-visuel {
+ width: 1200px;
+ margin: auto;
+}
+*/
+#casestudies-detail-content {
+ background-color: #3885E0;
}
\ No newline at end of file
--- /dev/null
+/* Case studies detail Title */\r
+.casestudies-detail-title {\r
+ min-width: 980px;\r
+ max-width: 980px;\r
+ width:100%;\r
+ margin: 0 auto;\r
+ padding: 50px 0px 50px 0;\r
+ font-size: 32px;\r
+}\r
+\r
+/* Case studies detail visuel */\r
+#casestudies-detail-visuel {\r
+ padding-bottom:50px;\r
+}\r
+\r
+#casestudies-detail-visuel a {\r
+ background-color: #3885e0;\r
+ border-radius: 2px;\r
+ padding: 5px 20px;\r
+ color:#fff;\r
+}\r
+\r
+#casestudies-detail-visuel a:hover,\r
+#casestudies-detail-visuel a:active {\r
+ background-color: #65a8f6;\r
+ color:#fff;\r
+}\r
+\r
+#casestudies-detail-visuel .visuel-holder {\r
+ min-width: 980px;\r
+ max-width: 980px;\r
+ width:100%;\r
+ margin: 0 auto;\r
+ overflow:hidden;\r
+}\r
+\r
+#casestudies-detail-visuel .visuel-holder .visuel {\r
+ width:980px;\r
+ height:400px;\r
+ padding-bottom: 20px;\r
+}\r
+\r
+\r
+#casestudies-detail-visuel .visuel-holder .legende {\r
+ font-size: 18px;\r
+ float:left;\r
+}\r
+\r
+#casestudies-detail-content {\r
+ text-align: center;\r
+ background-color: #0194d5;\r
+ padding: 50px 0 0px 0;\r
+}\r
+\r
+#casestudies-detail-content .detail-text {\r
+ color: #fff;\r
+ width:640px;\r
+ margin:auto;\r
+ //padding: 0px 0 50px 0;\r
+ position: relative;\r
+ z-index: 10;\r
+}\r
+\r
+#casestudies-detail-content .detail-text .titre {\r
+ font-size:32px;\r
+ padding-bottom: 20px;\r
+}\r
+\r
+#casestudies-detail-content .detail-text .texte {\r
+ font-size:18px;\r
+}\r
+\r
+#casestudies-detail-content .detail-visuel {\r
+ padding: 0px 0 50px 0;\r
+ z-index: 1;\r
+}\r
+\r
+#casestudies-detail-content .detail-video-background {\r
+ display: table;\r
+}\r
+\r
+\r
+#casestudies-detail-content .detail-video {\r
+ padding: 0px 0 50px 0;\r
+ position: relative;\r
+ z-index: 5;\r
+ text-align: center;\r
+ vertical-align: middle;\r
+ display: table-cell;\r
+}\r
+\r
+#casestudies-detail-content .detail-visuel {\r
+ width:100%;\r
+ background-position: 50%;\r
+ position: relative;\r
+}
\ No newline at end of file