]> _ Git - fluidbook-v3.git/commitdiff
Work on view helpers & models | wip #487 @2
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Wed, 29 Jun 2016 15:23:43 +0000 (15:23 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Wed, 29 Jun 2016 15:23:43 +0000 (15:23 +0000)
framework/application/forms/CMS/Sub/Exemples/Category.php
framework/application/forms/CMS/Sub/Exemples/Fluidbook.php
framework/application/models/Reference.php
framework/application/models/Reference/Category.php
framework/application/views/helpers/Exemples.php [new file with mode: 0644]
framework/application/views/scripts/templates/exemples.phtml

index 0be9386ef48704731973b52a872b958bde902c59..d5c2bb57853ee0c17af475041ad77251848c5022 100644 (file)
@@ -10,12 +10,17 @@ class Fluidbook_Form_CMS_Sub_Exemples_Category extends CubeIT_Form_List_Model {
 \r
                $title = new Zend_Form_Element_Text('name');\r
                $title->setLabel('Nom');\r
-               $this->addElementLocalized($title,false);\r
+               $this->addElementLocalized($title, false);\r
+\r
+               $sortorder = new CubeIT_Form_Element_Int('sortorder');\r
+               $sortorder->setLabel('Ordre');\r
+               $this->addElement($sortorder);\r
 \r
                $this->setListTitle('Exemples')\r
                        ->setNewTitle('Créer une catégorie')\r
                        ->setEditTitle('Edition de la catégory « $name »')\r
                        ->setModel('Fluidbook_Model_Reference_Category')\r
-                       ->setTitleColumn("name");\r
+                       ->setTitleColumn("name")\r
+                       ->setAdditionnalColumns(array('sortorder'));\r
        }\r
 }
\ No newline at end of file
index d0a0dc4ec080680ca17cbad09e88771991cadf45..e175a343d8d1c834e8b9818f14cdea24f2231e95 100644 (file)
@@ -45,9 +45,7 @@ class Fluidbook_Form_CMS_Sub_Exemples_Fluidbook extends CubeIT_Form_List_Model {
                        ->setEditTitle('Edition de l\'exemple « $title »')\r
                        ->setModel('Fluidbook_Model_Reference')\r
                        ->setTitleColumn("title")\r
-                       ->setAdditionnalColumns(array('fluidbook_id', 'featured'))\r
+                       ->setAdditionnalColumns(array('fluidbook_id', 'featured','date'))\r
                        ->setSearchColumns(array('text', 'fluidbook_id'));\r
        }\r
-\r
-\r
 }
\ No newline at end of file
index 7fc37bd134120e0fa719be546ed8203dcb1ad34c..42f38035c564c509b637183c59f10b9c267f9990 100644 (file)
@@ -13,6 +13,8 @@ class Fluidbook_Model_Reference extends CubeIT_Model_Data_Table {
        protected $featured;\r
        protected $categories;\r
 \r
+       protected $_types = array('categories' => 'json', 'title' => 'json', 'text' => 'json', 'image' => 'json');\r
+\r
        public static function getSchema($schema) {\r
                $table = parent::getSchema($schema);\r
                $table->addColumn('title', 'text');\r
@@ -25,4 +27,18 @@ class Fluidbook_Model_Reference extends CubeIT_Model_Data_Table {
                $table->addColumn('categories', 'string', array('length' => 64));\r
                return $table;\r
        }\r
+\r
+       public function getUrl() {\r
+               $res = parent::getUrl();\r
+               if (CubeIT_Util_Json::isJson($res)) {\r
+                       $res = CubeIT_Util_Json::decode($res);\r
+               }\r
+               if (is_string($res)) {\r
+                       return $res;\r
+               }\r
+               if (!$res->en) {\r
+                       $res->en = $res->fr;\r
+               }\r
+               return $res;\r
+       }\r
 }
\ No newline at end of file
index fbed00d987c0e68ff8f7dd798875a2f66c2bd9f5..8f38b6de334c14de17e25fec4507bed570ae447b 100644 (file)
@@ -10,10 +10,12 @@ class Fluidbook_Model_Reference_Category extends CubeIT_Model_Data_Table{
        protected static $_table = 'exemples_categories';\r
 \r
        protected $name;\r
+       protected $sortorder;\r
 \r
        public static function getSchema($schema) {\r
                $table = parent::getSchema($schema);\r
                $table->addColumn('name', 'text');\r
+               $table->addColumn('sortorder', 'integer');\r
                return $table;\r
        }\r
 }
\ No newline at end of file
diff --git a/framework/application/views/helpers/Exemples.php b/framework/application/views/helpers/Exemples.php
new file mode 100644 (file)
index 0000000..cb55b12
--- /dev/null
@@ -0,0 +1,72 @@
+<?php\r
+\r
+class Fluidbook_View_Helper_Exemples extends CubeIT_View_Helper_Abstract {\r
+       /**\r
+        * @return string\r
+        */\r
+       public function exemples($category) {\r
+\r
+               $exemples = Fluidbook_Model_Reference::factory()->order('date', 'DESC')->find();\r
+\r
+               $max_featured = 2;\r
+               $normal_per_featured = 4;\r
+               $max_normal = $max_featured * $normal_per_featured;\r
+\r
+               $featured = array();\r
+               $normal = array();\r
+               foreach ($exemples as $id => $exemple) {\r
+                       if (!in_array($category, $exemple->getCategories())) {\r
+                               continue;\r
+                       }\r
+\r
+                       if ($exemple->getFeatured()) {\r
+                               $featured[] = $id;\r
+                       } else {\r
+                               $normal[] = $id;\r
+                       }\r
+               }\r
+\r
+\r
+               $nb_featured = count($featured);\r
+               if ($nb_featured < $max_featured) {\r
+                       for ($i = $nb_featured; $i < $max_featured; $i++) {\r
+                               $featured[] = array_shift($normal);\r
+                       }\r
+               }\r
+\r
+               $featured = array_slice($featured, 0, $max_featured);\r
+               $normal = array_slice($normal, 0, $max_normal);\r
+\r
+\r
+               $res = '';\r
+               for ($i = 0; $i < $max_featured; $i++) {\r
+                       $res .= $this->_publication($exemples[$featured[$i]], true);\r
+                       for ($j = 0; $j < $normal_per_featured; $j++) {\r
+                               $k = ($i * $normal_per_featured) + $j;\r
+                               $res .= $this->_publication($exemples[$normal[$k]], false);\r
+                       }\r
+               }\r
+\r
+               return $this->htmlElement($res, 'section', array('class' => "exemples"));\r
+       }\r
+\r
+       /**\r
+        * @param $f Fluidbook_Model_Reference\r
+        * @param bool $featured\r
+        */\r
+       protected function _publication($f, $featured = false) {\r
+               $f = $f->unserialize();\r
+\r
+               $res = $this->htmlElement($f->getTitle(), 'h3');\r
+               if ($featured) {\r
+                       $res .= $this->htmlElement($f->getText(), 'p');\r
+               }\r
+               $res .= $this->htmlElement(__('Voir le Fluidbook'), 'button', array('type' => 'button'));\r
+               $attrs = array();\r
+               if ($featured) {\r
+                       $attrs['class'] = 'featured';\r
+               }\r
+\r
+               return $this->link($res, $f->getUrl(), $attrs);\r
+       }\r
+}
\ No newline at end of file
index 596ff1db96340ef81f6bfe20b5e02bcf35840d19..80fc927326da6c7eb1e524ecb29478e659b5168d 100644 (file)
@@ -1,7 +1,3 @@
 <?php\r
-/**\r
- * Created by IntelliJ IDEA.\r
- * User: Vincent\r
- * Date: 22/06/2016\r
- * Time: 19:26\r
- */
\ No newline at end of file
+\r
+echo $this->exemples(1);
\ No newline at end of file