diff --git a/include/controllers/default/cockpit/permissions/groups.php b/include/controllers/default/cockpit/permissions/groups.php new file mode 100644 index 000000000..4f36d2f22 --- /dev/null +++ b/include/controllers/default/cockpit/permissions/groups.php @@ -0,0 +1,64 @@ +permission()->check(['global','permissions-all', 'permission-groups'])) { + return ; + } + + $action = c::getPagePiece(2); + + switch ( $action ) { + + case 'content': + $this->search(); + break; + + case 'new': + $this->form(); + break; + + case 'remove': + $id_group = $_REQUEST[ 'id_group' ]; + $group = Crunchbutton_Group::o( $id_group ); + if( $group->id_group ){ + $group->delete(); + } + echo 'ok'; + break; + + default: + if( is_numeric( $action ) ){ + $this->form(); + exit; + } + c::view()->page = 'permissions'; + c::view()->display('permissions/groups/index'); + break; + } + + } + + private function search(){ + $search = []; + if ( $_REQUEST[ 'name' ] ) { + $search[ 'name' ] = $_REQUEST[ 'name' ]; + } + c::view()->groups = Crunchbutton_Group::find( $search ); + c::view()->layout( 'layout/ajax' ); + c::view()->display( 'permissions/groups/content' ); + } + + private function form(){ + $id_group = c::getPagePiece(2); + if( $id_group != 'new' ){ + c::view()->group = Crunchbutton_Group::o( $id_group ); + } else { + c::view()->group = new Crunchbutton_Group(); + } + c::view()->display( 'permissions/groups/form' ); + } + +} \ No newline at end of file diff --git a/include/controllers/default/crunchbutton/api/permissions/groups.php b/include/controllers/default/crunchbutton/api/permissions/groups.php new file mode 100644 index 000000000..8c36889a2 --- /dev/null +++ b/include/controllers/default/crunchbutton/api/permissions/groups.php @@ -0,0 +1,27 @@ +permission()->check(['global','permissions-all', 'permission-groups'])) { + return ; + } + switch ( $this->method() ) { + case 'post': + $id_group = c::getPagePiece( 3 ); + $name = $_REQUEST[ 'name' ]; + if( $id_group ){ + $group = Crunchbutton_Group::o( $id_group ); + } else { + $group = new Crunchbutton_Group(); + } + $name = str_replace( ' ' , '-', $name ); + $group->name = $name; + $group->save(); + echo json_encode( ['success' => $group->id_group ] ); + break; + default: + echo json_encode( [ 'error' => 'invalid object' ] ); + break; + } + } +} \ No newline at end of file diff --git a/include/library/Crunchbutton/Admin.php b/include/library/Crunchbutton/Admin.php index 08e532932..f2926bebe 100644 --- a/include/library/Crunchbutton/Admin.php +++ b/include/library/Crunchbutton/Admin.php @@ -42,7 +42,7 @@ class Crunchbutton_Admin extends Cana_Table { } return $this->_restaurants; } - + public function communities() { if (!isset($this->_communities)) { $communities = []; @@ -130,8 +130,8 @@ class Crunchbutton_Admin extends Cana_Table { $query .= " ORDER BY name DESC"; - $gifts = self::q($query); - return $gifts; + $admins = self::q($query); + return $admins; } public function __construct($id = null) { diff --git a/include/library/Crunchbutton/Group.php b/include/library/Crunchbutton/Group.php index 65b5c4482..f7d227ab1 100644 --- a/include/library/Crunchbutton/Group.php +++ b/include/library/Crunchbutton/Group.php @@ -8,4 +8,33 @@ class Crunchbutton_Group extends Cana_Table { ->idVar('id_group') ->load($id); } + + public static function find($search = []) { + + $query = 'SELECT `group`.* FROM `group` WHERE id_group IS NOT NULL '; + + if ( $search[ 'name' ] ) { + $query .= " AND name LIKE '%{$search[ 'name' ]}%' "; + } + + $query .= " ORDER BY name DESC"; + + $groups = self::q($query); + return $groups; + } + + public function users(){ + if( $this->id_group ){ + return Crunchbutton_Admin_Group::q( "SELECT a.* FROM admin a INNER JOIN admin_group ag ON ag.id_admin = a.id_admin AND ag.id_group = {$this->id_group}" ); + } + return false; + } + + public function usersTotal(){ + if( $this->id_group ){ + return Crunchbutton_Admin_Group::q( "SELECT a.* FROM admin a INNER JOIN admin_group ag ON ag.id_admin = a.id_admin AND ag.id_group = {$this->id_group}" )->count(); + } + return 0; + } + } \ No newline at end of file diff --git a/include/views/default/cockpit/permissions/groups/content.phtml b/include/views/default/cockpit/permissions/groups/content.phtml new file mode 100644 index 000000000..d56f0c536 --- /dev/null +++ b/include/views/default/cockpit/permissions/groups/content.phtml @@ -0,0 +1,25 @@ +groups; +?> +count()) { ?> + No results found + + + + + + + + + + + + + + +
NameNumber of users at this group
name;?> usersTotal();?> + Edit +   + +
+ \ No newline at end of file diff --git a/include/views/default/cockpit/permissions/groups/form.phtml b/include/views/default/cockpit/permissions/groups/form.phtml new file mode 100644 index 000000000..4bd636d89 --- /dev/null +++ b/include/views/default/cockpit/permissions/groups/form.phtml @@ -0,0 +1,122 @@ +title = 'Permissions'; + $this->titleicon = 'lock'; + $this->titleLink = '/permissions/groups'; + + $this->title2 = 'Groups'; + $this->title2icon = 'group'; + + $group = $this->group; + +?> +
+
+
+
+
+ Group +
+
+
    +
  • + Name + + +
    Please don't use spaces use dashes instead!
    +
    +
  • +
  • + +
  • +
+
+
+
+ usersTotal() > 0 ) { ?> +
+
+
+ Users +
+
+
    + users(); + foreach( $users as $user ){ + ?> +
  • + + name; ?> + + + login; ?> + +
  • + +
+
+
+
+ +
+
+ \ No newline at end of file diff --git a/include/views/default/cockpit/permissions/groups/index.phtml b/include/views/default/cockpit/permissions/groups/index.phtml new file mode 100644 index 000000000..86da40c3c --- /dev/null +++ b/include/views/default/cockpit/permissions/groups/index.phtml @@ -0,0 +1,69 @@ +title = 'Permissions'; + $this->titleicon = 'lock'; + $this->titleLink = '/permissions'; + + $this->title2 = 'Groups'; + $this->title2icon = 'group'; + +?> + +
+
+
+
+
+
+
    +
  • + +
  • +
+
+
+ +
+
+
+
+
+
Results
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/include/views/default/cockpit/permissions/users/form.phtml b/include/views/default/cockpit/permissions/users/form.phtml index c70882ed4..797226d8e 100644 --- a/include/views/default/cockpit/permissions/users/form.phtml +++ b/include/views/default/cockpit/permissions/users/form.phtml @@ -1,7 +1,7 @@ title = 'Permissions'; $this->titleicon = 'lock'; - $this->titleLink = '/permissions'; + $this->titleLink = '/permissions/users'; $this->title2 = 'Users'; $this->title2icon = 'user'; diff --git a/include/views/default/cockpit/permissions/users/index.phtml b/include/views/default/cockpit/permissions/users/index.phtml index ab3b1dc20..98c03dc7d 100644 --- a/include/views/default/cockpit/permissions/users/index.phtml +++ b/include/views/default/cockpit/permissions/users/index.phtml @@ -58,7 +58,7 @@ $(document).on('click', '.admin-user-remove', function() { var button = $( this ); - if( confirm( 'Confirm? This action will not remove the user!' ) ){ + if( confirm( 'Confirm? This action will remove the user!' ) ){ var id_admin = button.attr( 'data-id' ); App.permissions.admin.remove( id_admin ); } diff --git a/www/assets/js/admin.js b/www/assets/js/admin.js index 4e050795b..936b7b57c 100644 --- a/www/assets/js/admin.js +++ b/www/assets/js/admin.js @@ -1025,7 +1025,7 @@ App.credits = { var url = App.service + 'credit/new'; $.ajax({ - type: "POST", + type: 'POST', dataType: 'json', data: data, url: url, @@ -1563,7 +1563,7 @@ App.giftcards = { var data = { 'value' : value,'id_restaurant' : id_restaurant, 'phones' : phones, 'paid_by' : paid_by, 'id_restaurant_paid_by' : id_restaurant_paid_by, 'note' : note, 'created_by' : created_by, 'track' : track, 'notify_phone' : notify_phone, 'name' : name, 'how_delivery' : how_delivery, 'contact' : contact }; var url = App.service + 'giftcard/bunchsms'; $.ajax({ - type: "POST", + type: 'POST', dataType: 'json', data: data, url: url, @@ -1652,7 +1652,7 @@ App.giftcards = { var data = { 'value' : value,'id_restaurant' : id_restaurant, 'emails' : emails, 'subject':subject, 'content': content, 'paid_by' : paid_by, 'id_restaurant_paid_by' : id_restaurant_paid_by, 'note' : note, 'created_by' : created_by, 'track' : track, 'notify_phone' : notify_phone, 'name' : name, 'how_delivery' : how_delivery, 'contact' : contact }; var url = App.service + 'giftcard/bunchemail'; $.ajax({ - type: "POST", + type: 'POST', dataType: 'json', data: data, url: url, @@ -1676,7 +1676,7 @@ App.giftcards = { var data = { 'id_promo' : id_promo }; var url = App.service + 'giftcard/sms'; $.ajax({ - type: "POST", + type: 'POST', dataType: 'json', data: data, url: url, @@ -1700,7 +1700,7 @@ App.giftcards = { var data = { 'id_promo' : id_promo }; var url = App.service + 'giftcard/email'; $.ajax({ - type: "POST", + type: 'POST', dataType: 'json', data: data, url: url, @@ -1730,7 +1730,7 @@ App.giftcards = { var data = { 'id_promo' : id_promo, 'id_user' : id_user }; var url = App.service + 'giftcard/relateuser'; $.ajax({ - type: "POST", + type: 'POST', dataType: 'json', data: data, url: url, @@ -1799,7 +1799,7 @@ App.giftcardsGroup = { remove: function( id_promo_group ){ $.ajax({ url: '/giftcards/groups/remove', - type: "POST", + type: 'POST', data: { 'id_promo_group': id_promo_group } , complete: function() { App.giftcardsGroup.load(); @@ -1810,6 +1810,7 @@ App.giftcardsGroup = { App.permissions = {}; + App.permissions.admin = { params: function() { return { @@ -1831,7 +1832,7 @@ App.permissions.admin = { remove: function( id_admin ){ $.ajax({ url: '/permissions/users/remove', - type: "POST", + type: 'POST', data: { 'id_admin': id_admin } , complete: function() { App.permissions.admin.load(); @@ -1840,3 +1841,32 @@ App.permissions.admin = { }, } +App.permissions.group = { + params: function() { + return { + name: $('input[name="name"]').val() + }; + }, + load: function() { + $('.permissions-loader').show(); + $('.permissions-content').html(''); + $.ajax({ + url: '/permissions/groups/content', + data: App.permissions.group.params(), + complete: function(content) { + $('.permissions-content').html(content.responseText); + $('.permissions-loader').hide(); + } + }); + }, + remove: function( id_group ){ + $.ajax({ + url: '/permissions/groups/remove', + type: 'POST', + data: { 'id_group': id_group } , + complete: function() { + App.permissions.group.load(); + } + }); + }, +}