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
+
+
+
+ | Name |
+ Number 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 @@
+
+ $this->title = 'Permissions';
+ $this->titleicon = 'lock';
+ $this->titleLink = '/permissions/groups';
+
+ $this->title2 = 'Groups';
+ $this->title2icon = 'group';
+
+ $group = $this->group;
+
+?>
+
+
+
+ usersTotal() > 0 ) { ?>
+
+
+
+
+
+ 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 @@
+
+ $this->title = 'Permissions';
+ $this->titleicon = 'lock';
+ $this->titleLink = '/permissions';
+
+ $this->title2 = 'Groups';
+ $this->title2icon = 'group';
+
+?>
+
+
+
\ 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 @@
$this->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();
+ }
+ });
+ },
+}