"permname" : "",
"modOrder" : "003",
"strings" : {
+ "cdb6b6bab1fd18b9dbfe3fb84a5d34ae" : "<i class=\"fa fa-search\"></i>",
"ce8ae9da5b7cd6c3df2929543a9af92d" : "Email",
"b15aafc19dc2ba4b788adf77268d8ca4" : "Hide Inactive",
"f29c99f082755399839b64ebaf9f608a" : "List / View",
"a37ede293936e29279ed543129451ec3" : "Groups",
"7dce122004969d56ae2e0245cb754d35" : "Edit",
"05b763f7d24f32575493b3c23f299b0e" : "Add To Group",
- "aba9f7d7443652e858969bfc280690b1" : "Manage Groups ",
+ "9bac86fd9f499d47cea5f2fd70d701c1" : "search for account",
"e0a7cc944485bdedafb92b0cf98632fa" : "Remove From Group",
- "bcc254b55c4a1babdf1dcb82c207506b" : "Phone",
"25f57527ae8a27c94fb5230b5486c743" : "Permission List",
"09f0c5159c5e34504e453eff3fc70324" : "Account Management",
"054176c3a541fb2d4b63e29360c749aa" : "Members List",
"4d3d769b812b6faa6b76e1a8abaece2d" : "Active",
"49ee3087348e8d44e1feda1917443987" : "Name",
"e55f75a29310d7b60f7ac1d390c8ae42" : "Module",
- "ed5dea09095f671b801bee34ea28a319" : "Permission"
+ "b5a7adde1af5c87d7fd797b6245c2a39" : "Description",
+ "aba9f7d7443652e858969bfc280690b1" : "Manage Groups"
},
"named_strings" : {
"activeButton_offtext" : "5bc3fd20294c17c9803942958fd7f26d",
{
"xtype" : "NavGroup",
"$ xns" : "Roo.bootstrap",
+ "String style" : "width: 100%;",
"items" : [
{
"xtype" : "NavItem",
"$ xns" : "Roo.bootstrap",
+ "String style" : "width: 100%;",
"items" : [
{
"xtype" : "Element",
"$ xns" : "Roo.bootstrap",
+ "String style" : "width: 100%;",
"items" : [
{
"String cls" : "roo-toolbar",
"$ xns" : "Roo.bootstrap",
"items" : [
{
- "Number md" : 12,
+ "Number md" : 3,
"xtype" : "Column",
"$ xns" : "Roo.bootstrap",
"items" : [
{
"listeners" : {
- "click" : "function (_self, e)\n{\n Pman.Dialog.BAdminStaff.show({ \n id : 0,\n company_id : Pman.Login.authUser.company_id\n }, function(res) {\n \n if(res.length_oath_key * 1 < 1){\n _this.member_grid.footer.onClick('first');\n return;\n }\n \n Pman.Dialog.BAdminStaffTwoFactorQRCode.show({\n id : res.id\n }, function(res){\n _this.member_grid.footer.onClick('first');\n });\n }); \n\n}"
+ "specialkey" : "function (_self, e)\n{ \n if(e.keyCode == e.ENTER) {\n if (_this.member_grid) {\n _this.member_grid.footer.onClick('first'); \n }\n \n }\n \n}",
+ "render" : "function (_self)\n{\n _this.searchBox = this;\n}"
+ },
+ "xtype" : "Input",
+ "string placeholder" : "search for account",
+ "$ xns" : "Roo.bootstrap",
+ "items" : [
+ {
+ "listeners" : {
+ "click" : "function (_self, e)\n{\n _this.member_grid.footer.onClick('first');\n}"
+ },
+ "xtype" : "Button",
+ "$ xns" : "Roo.bootstrap",
+ "String html" : "<i class=\"fa fa-search\"></i>",
+ "* prop" : "after"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Number md" : 9,
+ "String cls" : "text-right",
+ "xtype" : "Column",
+ "$ xns" : "Roo.bootstrap",
+ "items" : [
+ {
+ "listeners" : {
+ "click" : "function (_self, e)\n{\n Pman.Dialog.BAdminStaff.show({ \n id : 0,\n company_id : Pman.Login.authUser.company_id\n }, function(res) {\n \n if(res.length_oath_key * 1 < 1){\n _this.member_grid.footer.onClick('first');\n return;\n }\n \n Pman.Dialog.BAdminStaffTwoFactorQRCode.show({\n id : res.id,\n allow_close: false,\n allow_cancel : true\n }, function(res){\n _this.member_grid.footer.onClick('first');\n });\n }); \n\n}"
},
"String cls" : "roo-toolbar-button",
"String weight" : "default",
},
{
"listeners" : {
- "rowdblclick" : "function (_self, el, rowIndex, e)\n{\n var s = _this.member_grid.store.getAt(rowIndex);\n \n if(s.data.id * 1 < 1){\n return;\n }\n \n Pman.Dialog.BAdminStaff.show( { id : s.data.id }, function() {\n _this.member_grid.footer.onClick('first');\n });\n}",
+ "celldblclick" : "function (_self, el, rowIndex, columnIndex, e)\n{\n var di = _this.member_grid.colModel.getDataIndex(columnIndex);\n\n if (di == 'active') {\n return;\n }\n var s = _this.member_grid.store.getAt(rowIndex);\n \n if(s.data.id * 1 < 1){\n return;\n }\n \n if (di == 'member_of') {\n Pman.Dialog.BAdminStaffGroups.show( s.data , function() {\n _this.member_grid.footer.onClick('first');\n });\n return;\n }\n // show edit user dialog..\n \n \n \n Pman.Dialog.BAdminStaff.show( s.data , function() {\n _this.member_grid.footer.onClick('first');\n });\n \n}",
"cellclick" : "function (_self, el, rowIndex, columnIndex, e)\n{\n var di = _this.member_grid.colModel.getDataIndex(columnIndex);\n \n if (di != 'active') {\n return;\n }\n \n var rec = _this.member_grid.store.getAt(rowIndex);\n \n rec.set('active', rec.data.active ? 0 : 1);\n rec.commit();\n\n \n // get the row number to make class x-row-0, x-row-1\n \n if(rec.data.active * 1 != 1){\n var el = _this.member_grid.getRowDom(rowIndex);\n \n el.addClass('x-grid-row-fadeout');\n \n el.on('transitionend',function(){\n _this.member_grid.ds.remove(rec);\n el.remove();\n },this,{single:true});\n }\n}",
"render" : "function (_self)\n{\n _this.member_grid = _self;\n \n}"
},
"boolean hover" : true,
"boolean striped" : false,
"xtype" : "Table",
- "boolean responsive" : true,
"Boolean rowSelection" : true,
"$ xns" : "Roo.bootstrap",
"Boolean loadMask" : true,
"* prop" : "grid",
+ "bool auto_hide_footer" : true,
"items" : [
{
"listeners" : {
{
"listeners" : {
"update" : "function (_self, record, operation)\n{\n if (operation != 'commit') {\n return;\n }\n // only used to change active status.\n \n new Pman.Request({\n url : baseURL + '/Roo/core_person',\n method :'POST',\n params : {\n id : record.data.id,\n active: record.data.active\n \n },\n success : function() {\n // do nothing\n \n },\n failure : function() \n {\n /*Roo.bootstrap.MessageBox.alert(\"Error\", \"saving failed\", function() {\n _this.grid.footer.onClick('first');\n });*/\n }\n });\n}",
- "beforeload" : "function (_self, options)\n{\n if (!Pman.buildCompleted) {\n return false;\n }\n options.params = options.params || {};\n \n //options.params['query[type]'] = 0;\n //options.params.active = 1;\n \n if(!_this.group_grid){\n this.removeAll();\n return false;\n }\n \n var group = _this.group_grid.getSelectionModel().getSelected();\n \n if(!group){\n this.removeAll();\n return false;\n }\n \n if(_this.footerActiveBtn && !_this.footerActiveBtn.pressed){\n options.params.active = 1;\n }\n \n options.params['query[in_group]'] = group.data.id;\n \n}",
+ "beforeload" : "function (_self, options)\n{\n if (!Pman.buildCompleted) {\n return false;\n }\n options.params = options.params || {};\n \n //options.params['query[type]'] = 0;\n //options.params.active = 1;\n \n if(!_this.group_grid){\n this.removeAll();\n return false;\n }\n \n var group = _this.group_grid.getSelectionModel().getSelected();\n \n if(!group){\n this.removeAll();\n return false;\n }\n \n if(_this.footerActiveBtn && !_this.footerActiveBtn.pressed){\n options.params.active = 1;\n } \n \n options.params._with_group_membership = 1;\n options.params['query[name_or_email]'] = _this.searchBox.getValue();\n \n options.params['query[in_group]'] = group.data.id;\n \n}",
"load" : "function (_self, records, options)\n{\n _this.edit_btn.el.hide();\n _this.delete_btn.el.hide();\n _this.addToGroupBtn.el.hide();\n _this.removeFromGroupBtn.el.hide();\n _this.switch_btn.el.hide();\n \n options.params.active = 1;\n \n\n \n}"
},
"xtype" : "Store",
"Number xs" : 1,
"String align" : "center",
"$ xns" : "Roo.grid",
- "$ renderer" : "function(v) { \n\n var state = v > 0 ? 'check-' : '';\n var cls = v > 0 ? 'text-primary' : '';\n \n return '<i class=\\\"far fa-'+ state + 'square-o ' + cls + '\\\" aria-hidden=\\\"true\\\"></i>';\n \n }",
+ "$ renderer" : "function(v) { \n\n var state = v > 0 ? 'check-' : '';\n var cls = v > 0 ? 'text-primary' : '';\n \n return '<i class=\\\"far fa-'+ state + 'square-o ' + cls + '\\\" aria-hidden=\\\"true\\\"></i>';\n \n }",
"Boolean sortable" : true,
"* prop" : "cm[]",
"Number sm" : 1
"Number sm" : 2
},
{
- "String header" : "Phone",
+ "String header" : "Groups",
"String cursor" : "pointer",
"Number md" : 2,
- "String dataIndex" : "phone",
+ "String dataIndex" : "member_of",
"xtype" : "ColumnModel",
"Number xs" : 2,
"$ xns" : "Roo.grid",
- "$ renderer" : "function(v) { return String.format('{0}', v); }",
+ "$ renderer" : "function(v) {\n return String.format('{0}', v).split(\"\\n\").join(\"<br/>\"); \n }",
"* prop" : "cm[]",
"Number sm" : 2
},
"* prop" : "cm[]",
"Number sm" : 2
},
- {
- "Object listeners" : "{\n \"click\" : function (e){\n console.log(\"listener fired\");\n }\n}",
- "String header" : "Active",
- "String cursor" : "pointer",
- "Number md" : 1,
- "String dataIndex" : "active",
- "xtype" : "ColumnModel",
- "Number xs" : 1,
- "$ xns" : "Roo.grid",
- "$ renderer" : "function(v) { \n// var state = v> 0 ? '-checked' : '';\n var state = v> 0 ? 'check-' : '';\n \n //return '<img class=\\\"x-grid-check-icon' + state + '\\\" src=\\\"' + Roo.BLANK_IMAGE_URL + '\\\"/>';\n return '<i class=\\\"far fa-'+ state + 'square-o fa-2x\\\" aria-hidden=\\\"true\\\"></i>';\n \n }",
- "Boolean sortable" : true,
- "* prop" : "cm[]",
- "Number sm" : 1
- },
{
"Number pageSize" : 25,
"Boolean displayInfo" : false,
"toggle" : "function (_self, e, pressed)\n{\n this.setText(this.pressed ? this._ontext : this._offtext);\n\n _this.member_grid.footer.onClick('first');\n \n return;\n \n}",
"render" : "function (_self)\n{\n _this.footerActiveBtn = this;\n}"
},
- "String cls" : "btn btn-default",
+ "String cls" : "roo-toolbar-button",
"String _offtext" : "Show Inactive",
+ "String weight" : "default",
+ "bool pressed" : false,
"xtype" : "Button",
"String _ontext" : "Hide Inactive",
"$ xns" : "Roo.bootstrap",
- "Boolean pressed" : false,
- "String style" : "margin-left: 10px;",
"String html" : "Show Inactive",
"* prop" : "buttons[]",
- "name" : "activeButton"
+ "string name" : "activeButton"
}
]
}
"cellclick" : "function (_self, el, rowIndex, columnIndex, e)\n{\n var di = _this.permission_grid.colModel.getDataIndex(columnIndex);\n \n var r = _this.permission_grid.store.getAt(rowIndex);\n \n if(di == 'rightname' || di == 'descript' || r.data.id * 1 < 1) {\n return;\n }\n \n if(di == 'id'){\n \n var accessmask = r.data.accessmask.split('').sort().join('');\n var fullmask = r.data.FullMask.split('').sort().join('');\n \n r.set('accessmask', (accessmask == fullmask) ? '' : r.data.FullMask);\n \n r.commit();\n \n return;\n }\n \n var mapping = {\n 'add' : 'A',\n 'edit' : 'E',\n 'delete' : 'D',\n 'view' : 'S',\n 'print' : 'P'\n };\n \n var target = mapping[di];\n \n if(r.data.FullMask.indexOf(target) === -1){\n return;\n }\n \n var accessmask = r.data.accessmask.split('');\n \n if(accessmask.indexOf(target) !== -1){\n accessmask.splice(accessmask.indexOf(target), 1);\n } else {\n accessmask.push(target);\n }\n \n r.set('accessmask', accessmask.sort().join(''));\n \n r.commit();\n \n}",
"render" : "function (_self)\n{\n _this.permission_grid = this;\n \n if(_this.permission_panel.active) {\n (function(){\n _this.permission_grid.store.load({});\n }).defer(50);\n }\n}"
},
- "Boolean footerShow" : false,
"Boolean cellSelection" : true,
"String cls" : "table-fixed",
+ "Boolean footerShow" : false,
"boolean striped" : true,
"boolean hover" : true,
"xtype" : "Table",
- "boolean responsive" : true,
"Boolean rowSelection" : true,
"$ xns" : "Roo.bootstrap",
"Boolean loadMask" : true,
{
"listeners" : {
"update" : "function (_self, record, operation)\n{\n if (operation != 'commit') {\n return;\n }\n\n var group = _this.group_grid.getSelectionModel().getSelected();\n \n if(!group || group.data.id * 1 < 1){\n return;\n }\n \n var params = {};\n \n params.group_id = group.data.id;\n \n params['dataUpdate[' + record.data.id + ']'] = record.data.accessmask;\n \n new Pman.Request({\n url : baseURL + '/Admin/GroupRights',\n method :'POST',\n params : params,\n success : function() {\n // do nothing\n },\n failure : function() \n {\n Roo.bootstrap.MessageBox.alert(\"Error\", \"saving failed\", function() {\n _this.permission_grid.store.load({});\n });\n }\n });\n \n}",
- "beforeload" : "function (_self, o)\n{\n if (!Pman.buildCompleted) {\n return false;\n }\n var group = _this.group_grid.getSelectionModel().getSelected();\n \n if(!group){\n _this.permission_panel.el.mask('Please select a group');\n this.removeAll();\n return false;\n }\n \n if(group.data.id * 1 < 1){\n _this.permission_panel.el.mask('You can not set permissions for this group');\n this.removeAll();\n return false;\n }\n \n _this.permission_panel.el.unmask();\n \n o.params = o.params || {};\n \n o.params._sort = 1; \n o.params.group_id = group.data.id;\n\n}"
+ "beforeload" : "function (_self, o)\n{\n if (!Pman.buildCompleted) {\n return false;\n }\n var group = _this.group_grid.getSelectionModel().getSelected();\n \n if(!group){\n _this.permission_panel.el.mask('Please select a group');\n this.removeAll();\n return false;\n }\n \n if(group.data.id * 1 < 1){\n _this.permission_panel.el.mask('Please select a group on the left');\n this.removeAll();\n return false;\n }\n \n _this.permission_panel.el.unmask();\n \n o.params = o.params || {};\n \n o.params._sort = 1; \n o.params.group_id = group.data.id;\n\n}"
},
"xtype" : "Store",
"boolean remoteSort" : true,
"String header" : "Module",
"String dataIndex" : "rightname",
"$ Function renderer" : "function (v) {\n return String.format('<span tooltip=\"{1}\">{0}</span>', v.split('.').shift(), v);\n}",
+ "$ Number xs" : "appDisabled.indexOf('Core.SuperAdmin') > 0 ? 0 : 2",
"xtype" : "ColumnModel",
- "Number xs" : 2,
"$ xns" : "Roo.grid",
+ "$ Boolean hidden" : "appDisabled.indexOf('Core.SuperAdmin') > 0 ? 1 : 0",
"* prop" : "cm[]"
},
{
- "String header" : "Permission",
+ "String header" : "Description",
"String dataIndex" : "descript",
"$ Function renderer" : "function (v) {\n return String.format('{0}', v ? v : '');\n}",
+ "$ Number xs" : "appDisabled.indexOf('Core.SuperAdmin') > 0 ? 6 : 4",
"xtype" : "ColumnModel",
- "Number xs" : 4,
"$ xns" : "Roo.grid",
"* prop" : "cm[]"
},
"$ xns" : "Roo.bootstrap",
"items" : [
{
- "Boolean preventDefault" : true,
- "xtype" : "NavSidebarItem",
+ "String cls" : "account-management-group-nav-item",
+ "xtype" : "NavItem",
"$ xns" : "Roo.bootstrap",
- "String html" : "Manage Groups ",
- "String glyphicon" : "menu-hamburger",
"items" : [
{
- "xtype" : "Menu",
+ "xtype" : "Button",
"$ xns" : "Roo.bootstrap",
- "* prop" : "menu",
+ "String html" : "Manage Groups",
"items" : [
{
- "listeners" : {
- "click" : "function (_self, e)\n{\n Pman.Dialog.BAdminGroups.show({ id : 0 }, function(res){\n _this.group_grid.store.load({});\n });\n}"
- },
- "Boolean preventDefault" : true,
- "xtype" : "MenuItem",
- "String fa" : "fa fa-plus",
- "$ xns" : "Roo.bootstrap",
- "Boolean isContainer" : false,
- "String html" : "Add"
- },
- {
- "listeners" : {
- "click" : "function (_self, e)\n{\n var sel = _this.group_grid.getSelectionModel().getSelected();\n \n if(!sel){\n Roo.bootstrap.MessageBox.alert('Error', 'Please select a group');\n return;\n }\n \n if(sel.data.id * 1 < 1){\n Roo.bootstrap.MessageBox.alert('Error', 'The selected group is not editable');\n return;\n }\n \n Pman.Dialog.BAdminGroups.show({ id : sel.data.id }, function(res){\n _this.group_grid.store.load({});\n });\n}"
- },
- "Boolean preventDefault" : true,
- "xtype" : "MenuItem",
- "String fa" : "fa fa-pencil",
- "$ xns" : "Roo.bootstrap",
- "Boolean isContainer" : false,
- "String html" : "Edit"
- },
- {
- "listeners" : {
- "click" : "function (_self, e)\n{\n var sel = _this.group_grid.getSelectionModel().getSelected();\n \n if(!sel){\n Roo.bootstrap.MessageBox.alert('Error', 'Please select a group');\n return;\n }\n \n if(sel.data.id * 1 < 1){\n Roo.bootstrap.MessageBox.alert('Error', 'The selected group is not editable');\n return;\n }\n \n var deleteIt = function()\n {\n new Pman.Request({\n url: baseURL + '/Roo/Core_group',\n method: 'POST',\n params: {\n _delete : sel.data.id\n },\n success: function(res){\n _this.group_grid.store.load({});\n return;\n }\n });\n }\n \n Roo.bootstrap.MessageBox.confirm('Confirm', 'Are you sure to delete the group?',function(ret) {\n \n if(ret == 'no'){\n return;\n }\n \n deleteIt();\n \n }, this);\n \n \n}"
- },
- "Boolean preventDefault" : true,
- "xtype" : "MenuItem",
- "String fa" : "fa fa-trash",
- "$ xns" : "Roo.bootstrap",
- "Boolean isContainer" : false,
- "String html" : "Delete"
- },
- {
- "listeners" : {
- "click" : "function (_self, e)\n{\n _this.group_grid.store.load({});\n}"
- },
- "Boolean preventDefault" : true,
- "xtype" : "MenuItem",
- "String fa" : "fa fa-refresh",
+ "xtype" : "Menu",
"$ xns" : "Roo.bootstrap",
- "Boolean isContainer" : false,
- "String html" : "Reload"
+ "* prop" : "menu",
+ "items" : [
+ {
+ "listeners" : {
+ "click" : "function (_self, e)\n{\n Pman.Dialog.BAdminGroups.show({ id : 0 }, function(res){\n _this.group_grid.store.load({});\n });\n}"
+ },
+ "Boolean preventDefault" : true,
+ "xtype" : "MenuItem",
+ "String fa" : "fa fa-plus",
+ "$ xns" : "Roo.bootstrap",
+ "Boolean isContainer" : false,
+ "String html" : "Add"
+ },
+ {
+ "listeners" : {
+ "click" : "function (_self, e)\n{\n var sel = _this.group_grid.getSelectionModel().getSelected();\n \n if(!sel){\n Roo.bootstrap.MessageBox.alert('Error', 'Please select a group');\n return;\n }\n \n if(sel.data.id * 1 < 1){\n Roo.bootstrap.MessageBox.alert('Error', 'The selected group is not editable');\n return;\n }\n \n Pman.Dialog.BAdminGroups.show({ id : sel.data.id }, function(res){\n _this.group_grid.store.load({});\n });\n}"
+ },
+ "Boolean preventDefault" : true,
+ "xtype" : "MenuItem",
+ "String fa" : "fa fa-pencil",
+ "$ xns" : "Roo.bootstrap",
+ "Boolean isContainer" : false,
+ "String html" : "Edit"
+ },
+ {
+ "listeners" : {
+ "click" : "function (_self, e)\n{\n var sel = _this.group_grid.getSelectionModel().getSelected();\n \n if(!sel){\n Roo.bootstrap.MessageBox.alert('Error', 'Please select a group');\n return;\n }\n \n if(sel.data.id * 1 < 1){\n Roo.bootstrap.MessageBox.alert('Error', 'The selected group is not editable');\n return;\n }\n \n var deleteIt = function()\n {\n new Pman.Request({\n url: baseURL + '/Roo/Core_group',\n method: 'POST',\n params: {\n _delete : sel.data.id\n },\n success: function(res){\n _this.group_grid.store.load({});\n return;\n }\n });\n }\n \n Roo.bootstrap.MessageBox.confirm('Confirm', 'Are you sure to delete the group?',function(ret) {\n \n if(ret == 'no'){\n return;\n }\n \n deleteIt();\n \n }, this);\n \n \n}"
+ },
+ "Boolean preventDefault" : true,
+ "xtype" : "MenuItem",
+ "String fa" : "fa fa-trash",
+ "$ xns" : "Roo.bootstrap",
+ "Boolean isContainer" : false,
+ "String html" : "Delete"
+ },
+ {
+ "listeners" : {
+ "click" : "function (_self, e)\n{\n _this.group_grid.store.load({});\n}"
+ },
+ "Boolean preventDefault" : true,
+ "xtype" : "MenuItem",
+ "String fa" : "fa fa-refresh",
+ "$ xns" : "Roo.bootstrap",
+ "Boolean isContainer" : false,
+ "String html" : "Reload"
+ }
+ ]
}
]
}
"boolean hover" : true,
"boolean striped" : true,
"xtype" : "Table",
- "boolean responsive" : true,
"Boolean rowSelection" : true,
"$ xns" : "Roo.bootstrap",
"Boolean loadMask" : true,
},
{
"listeners" : {
- "beforeload" : "function (_self, options)\n{\n if (!Pman.buildCompleted) {\n return false;\n }\n options.params = options.params || {};\n \n options.params.type = 0;\n \n options.params._add_everyone = 1;\n\n}"
+ "beforeload" : "function (_self, options)\n{\n if (!Pman.buildCompleted) {\n return false;\n }\n options.params = options.params || {};\n \n options.params.type = 0;\n \n options.params._add_everyone = 1;\noptions.params.limit = 999;\n}"
},
"xtype" : "Store",
"boolean remoteSort" : true,