From 2697a82dab009bf75fa8ff9ca19ff6b0f8fb09d3 Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Tue, 10 Mar 2015 11:51:54 +0100
Subject: [PATCH] neue controls -> sideboxes

---
 bricks.xml                            |  96 +++++++++++++++++++-
 lib/QUI/Bricks/Controls/Banner.php    |  49 ++++++++++
 lib/QUI/Bricks/Controls/SideBox1.php  | 124 ++++++++++++++++++++++++++
 lib/QUI/Bricks/Controls/SocialBox.php |   2 +-
 4 files changed, 269 insertions(+), 2 deletions(-)
 create mode 100644 lib/QUI/Bricks/Controls/Banner.php
 create mode 100644 lib/QUI/Bricks/Controls/SideBox1.php

diff --git a/bricks.xml b/bricks.xml
index 5363014..a8af262 100644
--- a/bricks.xml
+++ b/bricks.xml
@@ -72,7 +72,6 @@
             </description>
 
             <settings>
-
                 <setting name="title">
                     <locale group="quiqqer/bricks" var="SocialBox.title" />
                 </setting>
@@ -80,9 +79,104 @@
                 <setting name="socialList" data-qui="package/quiqqer/bricks/bin/Controls/SocialBox">
                     <locale group="quiqqer/bricks" var="SocialBox.socialList" />
                 </setting>
+            </settings>
+        </brick>
+
+
+        <brick control="\QUI\Bricks\Controls\Banner">
+            <title>
+                <locale group="quiqqer/bricks" var="brick.control.banner.title" />
+            </title>
+            <description>
+                <locale group="quiqqer/bricks" var="brick.control.banner.description" />
+            </description>
 
+            <settings>
+                <setting name="title">
+                    <locale group="quiqqer/bricks" var="brick.control.banner.setting.title" />
+                </setting>
+                <setting name="text">
+                    <locale group="quiqqer/bricks" var="brick.control.banner.setting.text" />
+                </setting>
             </settings>
+        </brick>
 
+
+        <brick control="\QUI\Bricks\Controls\SideBox1">
+            <title>
+                <locale group="quiqqer/bricks" var="brick.control.sidebox1.title" />
+            </title>
+            <description>
+                <locale group="quiqqer/bricks" var="brick.control.sidebox1.description" />
+            </description>
+
+            <settings>
+                <setting name="site" data-qui="controls/projects/project/site/Select">
+                    <locale group="quiqqer/bricks" var="brick.control.sidebox1.setting.site" />
+                </setting>
+                <setting name="showImage" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showImage" />
+                </setting>
+                <setting name="showTitle" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showTitle" />
+                </setting>
+                <setting name="showShort" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showShort" />
+                </setting>
+                <setting name="showContent" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showContent" />
+                </setting>
+            </settings>
+        </brick>
+
+
+        <brick control="\QUI\Bricks\Controls\SideBox2">
+            <title>
+                <locale group="quiqqer/bricks" var="brick.control.sidebox2.title" />
+            </title>
+            <description>
+                <locale group="quiqqer/bricks" var="brick.control.sidebox2.description" />
+            </description>
+
+            <settings>
+                <setting name="site" data-qui="controls/projects/project/site/Select">
+                    <locale group="quiqqer/bricks" var="brick.control.sidebox2.setting.site" />
+                </setting>
+                <setting name="showImage" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showImage" />
+                </setting>
+                <setting name="showTitle" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showTitle" />
+                </setting>
+                <setting name="showShort" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showShort" />
+                </setting>
+            </settings>
+        </brick>
+
+
+        <brick control="\QUI\Bricks\Controls\SideBox3">
+            <title>
+                <locale group="quiqqer/bricks" var="brick.control.sidebox3.title" />
+            </title>
+            <description>
+                <locale group="quiqqer/bricks" var="brick.control.sidebox3.description" />
+            </description>
+
+            <settings>
+                <setting name="site" data-qui="controls/projects/project/site/Select">
+                    <locale group="quiqqer/bricks" var="brick.control.sidebox3.setting.site" />
+                </setting>
+                <setting name="showImage" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showImage" />
+                </setting>
+                <setting name="showTitle" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showTitle" />
+                </setting>
+                <setting name="showShort" type="checkbox">
+                    <locale group="quiqqer/bricks" var="brick.control.setting.showShort" />
+                </setting>
+            </settings>
         </brick>
 
     </bricks>
diff --git a/lib/QUI/Bricks/Controls/Banner.php b/lib/QUI/Bricks/Controls/Banner.php
new file mode 100644
index 0000000..ddb220f
--- /dev/null
+++ b/lib/QUI/Bricks/Controls/Banner.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file contains QUI\Bricks\Controls\Banner
+ */
+
+namespace QUI\Bricks\Controls;
+
+use QUI;
+
+/**
+ * Class Banner
+ *
+ * @package quiqqer/bricks
+ */
+class Banner extends QUI\Control
+{
+    /**
+     * constructor
+     * @param Array $attributes
+     */
+    public function __construct($attributes = array())
+    {
+        // default options
+        $this->setAttributes(array(
+            'title'    => '',
+            'text'     => '',
+            'class'    => 'quiqqer-bricks-banner',
+            'nodeName' => 'section'
+        ));
+
+        parent::setAttributes( $attributes );
+    }
+
+    /**
+     * (non-PHPdoc)
+     * @see \QUI\Control::create()
+     */
+    public function getBody()
+    {
+        $Engine = QUI::getTemplateManager()->getEngine();
+
+        $Engine->assign(array(
+            'this' => $this
+        ));
+
+        return $Engine->fetch( dirname( __FILE__ ) .'/Banner.html' );
+    }
+}
\ No newline at end of file
diff --git a/lib/QUI/Bricks/Controls/SideBox1.php b/lib/QUI/Bricks/Controls/SideBox1.php
new file mode 100644
index 0000000..1f0011e
--- /dev/null
+++ b/lib/QUI/Bricks/Controls/SideBox1.php
@@ -0,0 +1,124 @@
+<?php
+
+/**
+ * This file contains QUI\Bricks\Controls\SideBox1
+ */
+
+namespace QUI\Bricks\Controls;
+
+use QUI;
+
+/**
+ * Class SocialBox
+ *
+ * @package quiqqer/bricks
+ */
+class SideBox1 extends QUI\Control
+{
+    /**
+     * constructor
+     * @param Array $attributes
+     */
+    public function __construct($attributes = array())
+    {
+        // default options
+        $this->setAttributes(array(
+            'showImage'       => true,
+            'showTitle'       => true,
+            'showDescription' => true,
+            'showContent'     => true,
+
+            'class'    => 'quiqqer-bricks-sidebox1',
+            'nodeName' => 'article',
+            'site'     => false
+        ));
+
+        parent::setAttributes( $attributes );
+    }
+
+    /**
+     * (non-PHPdoc)
+     * @see \QUI\Control::create()
+     */
+    public function getBody()
+    {
+        $Engine = QUI::getTemplateManager()->getEngine();
+
+        $Engine->assign(array(
+            'this' => $this,
+            'Site' => $this->_getSite()
+        ));
+
+        return $Engine->fetch( dirname( __FILE__ ) .'/SideBox1.html' );
+    }
+
+    /**
+     * Return the site object
+     *
+     * @return QUI\Projects\Site
+     */
+    protected function _getSite()
+    {
+        $Project = $this->_getProject();
+        $site    = $this->getAttribute( 'site' );
+
+        if ( is_numeric( $site ) )
+        {
+            try
+            {
+                return $Project->get( (int)$site );
+
+            } catch ( QUI\Exception $Exception )
+            {
+                QUI\System\Log::addWarning( $Exception->getMessage() );
+
+                return $Project->firstChild();
+            }
+        }
+
+        $sitetypes = explode( ';', $site );
+
+        $ids   = array();
+        $types = array();
+        $where = array();
+
+        foreach ( $sitetypes as $sitetypeEntry )
+        {
+            if ( is_numeric( $sitetypeEntry ) )
+            {
+                $ids[] = $sitetypeEntry;
+                continue;
+            }
+
+            $types[] = $sitetypeEntry;
+        }
+
+        if ( !empty( $ids ) )
+        {
+            $where['id'] = array(
+                'type'  => 'IN',
+                'value' => $ids
+            );
+        }
+
+        if ( !empty( $types ) )
+        {
+            $where['type'] = array(
+                'type'  => 'IN',
+                'value' => $types
+            );
+        }
+
+        $result = $Project->getSites(array(
+            'where_or' => $where,
+            'limit'    => 1,
+            'order'    => 'release_from ASC'
+        ));
+
+        if ( isset( $result[ 0 ] ) ) {
+            return $result[ 0 ];
+        }
+
+        return $Project->firstChild();
+    }
+}
\ No newline at end of file
diff --git a/lib/QUI/Bricks/Controls/SocialBox.php b/lib/QUI/Bricks/Controls/SocialBox.php
index f7fb2a1..69e16ff 100644
--- a/lib/QUI/Bricks/Controls/SocialBox.php
+++ b/lib/QUI/Bricks/Controls/SocialBox.php
@@ -11,7 +11,7 @@
 /**
  * Class SocialBox
  *
- * @package quiqqer/template-qui
+ * @package quiqqer/bricks
  */
 class SocialBox extends QUI\Control
 {
-- 
GitLab