From db4731cd4a894df39cb8687e3a26fd499b8a33fc Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Tue, 13 Jan 2015 13:58:59 +0100
Subject: [PATCH] permissions

---
 bin/Site/Area.js           | 25 ++++++++++++++++++++++++-
 lib/QUI/Bricks/Events.php  |  3 +++
 lib/QUI/Bricks/Manager.php |  7 +++++++
 locale.xml                 | 26 ++++++++++++++++++++++++++
 permissions.xml            | 17 +++++++++++++++++
 5 files changed, 77 insertions(+), 1 deletion(-)
 create mode 100644 permissions.xml

diff --git a/bin/Site/Area.js b/bin/Site/Area.js
index 1bf28d1..fbd1c64 100644
--- a/bin/Site/Area.js
+++ b/bin/Site/Area.js
@@ -225,7 +225,7 @@ define('package/quiqqer/bricks/bin/Site/Area', [
                 events :
                 {
                     onClick : function() {
-                        Elm.destroy();
+                        self.openBrickDeleteDialog( Elm );
                     }
                 }
             }).inject( Elm );
@@ -315,6 +315,29 @@ define('package/quiqqer/bricks/bin/Site/Area', [
             }).open();
         },
 
+        /**
+         * Opens the brick deletion dialog
+         *
+         * @param {HTMLElement} BrickElement - Element of the Brick
+         */
+        openBrickDeleteDialog : function(BrickElement)
+        {
+            new QUIConfirm({
+                title : 'Baustein löschen?',
+                icon  : 'icon-remove',
+                text  : 'Baustein wirklich löschen?',
+                information : 'Möchten Sie den Baustein für diese Seite wirklich löschen?',
+                maxHeight   : 300,
+                maxWidth    : 500,
+                events :
+                {
+                    onSubmit : function() {
+                        BrickElement.destroy();
+                    }
+                }
+            }).open();
+        },
+
         /**
          * Opens the brick settings dialog
          *
diff --git a/lib/QUI/Bricks/Events.php b/lib/QUI/Bricks/Events.php
index 133bb85..9c94167 100644
--- a/lib/QUI/Bricks/Events.php
+++ b/lib/QUI/Bricks/Events.php
@@ -25,6 +25,9 @@ class Events
      */
     static function onSiteSave($Site)
     {
+        QUI\Rights\Permission::checkPermission('quiqqer.blocks.assign');
+
+
         $areas = $Site->getAttribute( 'quiqqer.bricks.areas' );
         $areas = json_decode( $areas, true );
 
diff --git a/lib/QUI/Bricks/Manager.php b/lib/QUI/Bricks/Manager.php
index 35428d9..8c59e2a 100644
--- a/lib/QUI/Bricks/Manager.php
+++ b/lib/QUI/Bricks/Manager.php
@@ -38,6 +38,9 @@ class Manager
      */
     public function createBrickForProject(Project $Project, Brick $Brick)
     {
+        QUI\Rights\Permission::checkPermission( 'quiqqer.blocks.create' );
+
+
         QUI::getDataBase()->insert(
             $this->_getTable(),
             array(
@@ -69,6 +72,8 @@ public function clearCache()
      */
     public function deleteBrick($brickId)
     {
+        QUI\Rights\Permission::checkPermission( 'quiqqer.blocks.delete' );
+
         // check if brick exist
         $this->getBrickById( $brickId );
 
@@ -338,6 +343,8 @@ public function getBricksFromProject(Project $Project)
      */
     public function saveBrick($brickId, array $brickData)
     {
+        QUI\Rights\Permission::checkPermission( 'quiqqer.blocks.edit' );
+
         $Brick      = $this->getBrickById( $brickId );
         $areas      = array();
         $areaString = '';
diff --git a/locale.xml b/locale.xml
index 0f68308..b3924ca 100644
--- a/locale.xml
+++ b/locale.xml
@@ -42,10 +42,36 @@
             <de><![CDATA[Blöcke]]></de>
             <en><![CDATA[Bricks]]></en>
         </locale>
+
     </groups>
 
     <groups name="quiqqer/bricks" datatype="js">
 
     </groups>
 
+    <!-- permissions locale -->
+    <groups name="locale/permissions" datatype="php,js">
+        <locale name="quiqqer.blocks._title">
+            <de><![CDATA[Bausteine]]></de>
+            <en><![CDATA[Bricks]]></en>
+        </locale>
+
+        <locale name="quiqqer.blocks.edit._title">
+            <de><![CDATA[Darf Bausteine bearbeiten / editieren.]]></de>
+            <en><![CDATA[Can edit Bricks.]]></en>
+        </locale>
+        <locale name="quiqqer.blocks.assign._title">
+            <de><![CDATA[Darf Bausteine Seiten zu weisen.]]></de>
+            <en><![CDATA[Can assign Bricks to Sites.]]></en>
+        </locale>
+        <locale name="quiqqer.blocks.delete._title">
+            <de><![CDATA[Darf Bausteine löschen.]]></de>
+            <en><![CDATA[Can delete Bricks.]]></en>
+        </locale>
+        <locale name="quiqqer.blocks.create._title">
+            <de><![CDATA[Darf neue Bausteine erstellen.]]></de>
+            <en><![CDATA[Can create new Bricks.]]></en>
+        </locale>
+    </groups>
+
 </locales>
diff --git a/permissions.xml b/permissions.xml
new file mode 100644
index 0000000..fe32733
--- /dev/null
+++ b/permissions.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<permissions>
+
+    <permission name="quiqqer.blocks.create" type="bool">
+        <defaultvalue>1</defaultvalue>
+    </permission>
+    <permission name="quiqqer.blocks.edit" type="bool">
+        <defaultvalue>1</defaultvalue>
+    </permission>
+    <permission name="quiqqer.blocks.delete" type="bool">
+        <defaultvalue>1</defaultvalue>
+    </permission>
+    <permission name="quiqqer.blocks.assign" type="bool">
+        <defaultvalue>1</defaultvalue>
+    </permission>
+
+</permissions>
-- 
GitLab