sync
[Pman.Admin] / old / Pman.Tab.AdminPermManager.bjs
1 {
2  "name" : "Pman.Tab.AdminPermManager",
3  "parent" : "Pman.Tab.Admin",
4  "title" : "Pman.Tab.AdminPermManager",
5  "path" : "/home/alan/gitlive/Pman.Admin/old/Pman.Tab.AdminPermManager.bjs",
6  "permname" : "Core.Groups",
7  "modOrder" : "700",
8  "strings" : {
9   "a37ede293936e29279ed543129451ec3" : "Groups",
10   "ec211f7c20af43e742bf2570c3cb84f9" : "Add",
11   "7dce122004969d56ae2e0245cb754d35" : "Edit",
12   "911051bc8a5abedcc127334f0f70b78a" : "Permission Manager",
13   "4d1c8263ba1036754f8db14a98f9f006" : "Reload",
14   "f2a6c498fb90ee345d997f888fce3b18" : "Delete",
15   "49ee3087348e8d44e1feda1917443987" : "Name",
16   "aba9f7d7443652e858969bfc280690b1" : "Manage Groups"
17  },
18  "items" : [
19   {
20    "background" : true,
21    "region" : "center",
22    "title" : "Permission Manager",
23    "xtype" : "NestedLayoutPanel",
24    "$ xns" : "Roo",
25    "items" : [
26     {
27      "xtype" : "BorderLayout",
28      "$ xns" : "Roo",
29      "* prop" : "layout",
30      "items" : [
31       {
32        "xtype" : "LayoutRegion",
33        "tabPosition" : "top",
34        "$ xns" : "Roo",
35        "* prop" : "center"
36       },
37       {
38        "xtype" : "LayoutRegion",
39        "width" : 200,
40        "$ xns" : "Roo",
41        "* prop" : "west"
42       },
43       {
44        "listeners" : {
45         "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.ds.load({});\n    }\n}"
46        },
47        "background" : true,
48        "region" : "west",
49        "fitToframe" : true,
50        "title" : "Groups",
51        "xtype" : "GridPanel",
52        "fitContainer" : true,
53        "$ xns" : "Roo",
54        "tableName" : "Groups",
55        "items" : [
56         {
57          "listeners" : {
58           "|rowdblclick" : "function (_self, rowIndex, e)\n{\n    if (!_this.dialog) return;\n    var s = this.getDataSource().getAt(rowIndex);\n    if (s.data.id < 1 ) {\n        return;\n    }\n    _this.dialog.show( s.data, function() {\n        _this.ds.load({});\n    }); \n}\n",
59           "|render" : "function() \n{\n    _this.grid = this; \n    _this.dialog = Pman.Dialog.Groups;\n    if (_this.panel.active) {\n        _this.grid.ds.load({});\n    }\n}"
60          },
61          "autoExpandColumn" : "name",
62          "enableDrop" : true,
63          "xtype" : "Grid",
64          "ddGroup" : "groupDD",
65          "loadMask" : true,
66          "$ xns" : "Roo.grid",
67          "* prop" : "grid",
68          "items" : [
69           {
70            "listeners" : {
71             "beforeload" : "function (_self, o)\n{\n    o.params = o.params || {};\n    o.params.type =0;\n    \n}",
72             "load" : "function (_self, records, options)\n{\n    var sm = _this.grid.getSelectionModel();\n    if (!sm.getSelections().length) {\n        sm.selectFirstRow();\n    }\n    // should refresh righthand side grid..\n     //   Pman.Tab.AdminContacts.grid.footer.onClick('first');\n}"
73            },
74            "xtype" : "Store",
75            "remoteSort" : true,
76            "$ sortInfo" : "{ field : 'name', direction: 'ASC' }",
77            "$ xns" : "Roo.data",
78            "* prop" : "dataSource",
79            "items" : [
80             {
81              "$ url" : "baseURL + '/Roo/core_group.php'",
82              "method" : "GET",
83              "xtype" : "HttpProxy",
84              "$ xns" : "Roo.data",
85              "* prop" : "proxy"
86             },
87             {
88              "id" : "id",
89              "root" : "data",
90              "xtype" : "JsonReader",
91              "$ xns" : "Roo.data",
92              "$ fields" : "[\n    {\n        'name': 'id',\n        'type': 'int'\n    },\n    {\n        'name': 'name',\n        'type': 'string'\n    },\n    {\n        'name': 'type',\n        'type': 'int'\n    },\n    {\n        'name': 'leader',\n        'type': 'int'\n    },\n    {\n        'name': 'leader_id',\n        'type': 'int'\n    },\n    {\n        'name': 'leader_office_id',\n        'type': 'int'\n    },\n    {\n        'name': 'leader_name',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_phone',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_fax',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_email',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_company_id',\n        'type': 'int'\n    },\n    {\n        'name': 'leader_role',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_active',\n        'type': 'int'\n    },\n    {\n        'name': 'leader_remarks',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_passwd',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_owner_id',\n        'type': 'int'\n    },\n    {\n        'name': 'leader_lang',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_no_reset_sent',\n        'type': 'int'\n    },\n    {\n        'name': 'leader_action_type',\n        'type': 'string'\n    },\n    {\n        'name': 'leader_project_id',\n        'type': 'int'\n    }\n]",
93              "* prop" : "reader",
94              "totalProperty" : "total"
95             }
96            ]
97           },
98           {
99            "xtype" : "Toolbar",
100            "$ xns" : "Roo",
101            "* prop" : "toolbar",
102            "items" : [
103             {
104              "text" : "Manage Groups",
105              "xtype" : "Button",
106              "$ xns" : "Roo.Toolbar",
107              "items" : [
108               {
109                "xtype" : "Menu",
110                "$ xns" : "Roo.menu",
111                "* prop" : "menu",
112                "items" : [
113                 {
114                  "listeners" : {
115                   "|click" : "function()\n{\n    if (!_this.dialog) return;\n    _this.dialog.show( { id : 0,  type: 0 } , function() {\n         _this.grid.ds.load({});\n   }); \n}\n"
116                  },
117                  "text" : "Add",
118                  "xtype" : "Item",
119                  "cls" : "x-btn-text-icon",
120                  "$ icon" : "Roo.rootURL + 'images/default/dd/drop-add.gif'",
121                  "$ xns" : "Roo.menu"
122                 },
123                 {
124                  "listeners" : {
125                   "|click" : "function()\n{\n    var s = _this.grid.getSelectionModel().getSelections();\n    if (!s.length || (s.length > 1))  {\n        Roo.MessageBox.alert(\"Error\", s.length ? \"Select only one Row\" : \"Select a Row\");\n        return;\n    }\n    if (s[0].data.id < 1 ) {\n        return;\n    }\n    if (!_this.dialog) return;\n    _this.dialog.show(s[0].data, function() {\n         _this.grid.ds.load({});\n    }); \n    \n}\n"
126                  },
127                  "text" : "Edit",
128                  "xtype" : "Item",
129                  "cls" : "x-btn-text-icon",
130                  "$ icon" : "Roo.rootURL + 'images/default/tree/leaf.gif'",
131                  "$ xns" : "Roo.menu"
132                 },
133                 {
134                  "listeners" : {
135                   "|click" : "function()\n{\n     Pman.genericDelete(_this, 'core_group');\n}\n        "
136                  },
137                  "text" : "Delete",
138                  "xtype" : "Item",
139                  "cls" : "x-btn-text-icon",
140                  "$ icon" : "rootURL + '/Pman/templates/images/trash.gif'",
141                  "$ xns" : "Roo.menu"
142                 },
143                 {
144                  "xtype" : "Separator",
145                  "$ xns" : "Roo.menu"
146                 },
147                 {
148                  "listeners" : {
149                   "click" : "function (_self, e)\n{\n  _this.grid.ds.load({});\n}"
150                  },
151                  "text" : "Reload",
152                  "xtype" : "Item",
153                  "$ xns" : "Roo.menu"
154                 }
155                ]
156               }
157              ]
158             }
159            ]
160           },
161           {
162            "xtype" : "ColumnModel",
163            "header" : "Name",
164            "width" : 200,
165            "$ renderer" : "function(v,x,r) { \n    if (r.data.id == -1) {\n        return '<b>' + \"Not in a Group\" + '</b>';\n    }\n    if ((r.data.id == 0) && (_this.type == 0)) {\n        return '<b>' + \"All Staff (Default Permissions)\" + '</b>';\n    }\n    if ((r.data.id == 0) && (_this.type == 2)) {\n        return '<b>' + \"Everybody\" + '</b>';\n    }\n    if (r.data.id == 0) {\n        return '<b>' + \"All Staff\" + '</b>';\n    }\n    if (v == 'Administrators') {\n        return '<b>' + \"Adminstrators\" + '</b>';\n    }\n    if (r.data.leader) {\n        return v + ' (' + r.data.leader_name + ')';\n    }\n    \n    return v;\n}",
166            "$ xns" : "Roo.grid",
167            "* prop" : "colModel[]",
168            "dataIndex" : "name"
169           },
170           {
171            "listeners" : {
172             "afterselectionchange" : "function (_self)\n{\n    Pman.Tab.AdminPermMembers.grid.footer.onClick('first');\n}"
173            },
174            "xtype" : "RowSelectionModel",
175            "singleSelect" : true,
176            "$ xns" : "Roo.grid",
177            "* prop" : "sm"
178           },
179           {
180            "listeners" : {
181             "over" : "function (source, e, data)\n{\n     Roo.log(\"dragover\");\n     \n    //Roo.log(e);\n    var t = Roo.lib.Event.getTarget(e); \n       //  Roo.log(t);\n    var ri = _this.grid.view.findRowIndex(t);\n      //            Roo.log(ri);\n    \n    var rid  = false;\n    if (ri !== false) {\n        rid = _this.grid.getDataSource().getAt(ri).data;\n    }\n    \n    var s = _this.grid.getSelectionModel().getSelections();\n    \n    var isFromGroup = s.length ? s[0].data.id > 0 : false;\n    \n    var isToGroup = rid && rid.id > 0;\n    \n//    Roo.log(\"isToGroup:\"  + isToGroup + \", isFromGroup\" + isFromGroup);\n     \n    if (isFromGroup && isToGroup) {\n        this.valid = false;\n//        Roo.log('not valid');\n        return;\n    }\n    if (!isFromGroup && !isToGroup) {\n        this.valid = false;\n//        Roo.log('not valid');\n        return  \n    }\n    if (isFromGroup && !isToGroup) {\n        this.valid = 'ok-sub'; \n        return;\n    } \n    //if (!isFromGroup && isToGroup) {\n    this.valid = 'ok-add';\n//    Roo.log('add'); \n    //}\n}",
182             "drop" : "function (source, e, data)\n{\n      Roo.log(\"DROP\");\n    var t = Roo.lib.Event.getTarget(e); \n    var ri = _this.grid.view.findRowIndex(t);\n    var rid  = false;\n    if (ri !== false) {\n        rid = _this.grid.getDataSource().getAt(ri).data;\n    }\n    var s = _this.grid.getSelectionModel().getSelections();\n      \n    //console.log(data);\n    var isFromGroup = s.length ? s[0].data.id > 0 : false;\n\n    var isToGroup = rid && rid.id > 0;\n    this.success = false;\n    if (isFromGroup && isToGroup) {\n        return;\n    }\n    if (!isFromGroup && !isToGroup) {\n        return;\n    }\n    var action = 'add';\n    if (isFromGroup && !isToGroup) {\n        action = 'sub';\n        //return 'x-dd-drop-ok-sub'; \n    }\n    // build a list of selections.\n    var sels = [];\n    for (var i=0; i < data.selections.length; i++) {\n        sels.push(data.selections[i].data.id);\n    }\n\n    Pman.request({\n        url: baseURL + '/Core/GroupMembers.php',\n        params: {\n            action : action,\n            group_id: action =='add' ? rid.id : s[0].data.id,\n            type: _this.type,\n            user_ids : sels.join(',')\n            \n        },  \n        method: 'POST',  \n        success : function(data) {\n            //refreshPager();\n            // \n            // do we need to do anything??\n            if (isFromGroup) {\n                Pman.Tab.AdminPermMembers.grid.footer.onClick('refresh');\n            }\n        }, \n        \n        failure: function() {\n            //Ext.get(document.body).unmask();\n            //if (cb) {\n            //    cb.call(false);\n            //}\n             \n        }\n    });\n\n    this.success = true;\n\n    //if (!isFromGroup && isToGroup) {\n        //return 'x-dd-drop-ok-add'; \n    return;\n    //}\n}"
183            },
184            "xtype" : "DropTarget",
185            "ddGroup" : "groupDD",
186            "$ xns" : "Roo.dd",
187            "* prop" : "dropTarget"
188           }
189          ]
190         }
191        ]
192       }
193      ]
194     }
195    ]
196   }
197  ]
198 }