sync
[Pman.Admin] / Pman.Tab.AdminContactsGroup.bjs
1 {
2  "name" : "Pman.Tab.AdminContactsGroup",
3  "parent" : "Pman.Tab.AdminContactsManager",
4  "title" : "Pman.Tab.AdminContactsGroup",
5  "path" : "/home/benny/gitlive/web.hhyc_membership_system/Pman.Admin/Pman.Tab.AdminContactsGroup.bjs",
6  "permname" : "",
7  "modOrder" : "001",
8  "strings" : {
9   "ec211f7c20af43e742bf2570c3cb84f9" : "Add",
10   "a37ede293936e29279ed543129451ec3" : "Groups",
11   "7dce122004969d56ae2e0245cb754d35" : "Edit",
12   "4d1c8263ba1036754f8db14a98f9f006" : "Reload",
13   "f2a6c498fb90ee345d997f888fce3b18" : "Delete",
14   "49ee3087348e8d44e1feda1917443987" : "Name",
15   "aba9f7d7443652e858969bfc280690b1" : "Manage Groups"
16  },
17  "items" : [
18   {
19    "listeners" : {
20     "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.ds.load({});\n    }\n}"
21    },
22    "fitToframe" : true,
23    "background" : true,
24    "region" : "west",
25    "title" : "Groups",
26    "xtype" : "GridPanel",
27    "fitContainer" : true,
28    "$ xns" : "Roo",
29    "tableName" : "core_group",
30    "items" : [
31     {
32      "listeners" : {
33       "|rowdblclick" : "function (_self, rowIndex, e)\n{\n    if (!_this.dialog) { \n        return; \n    }\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",
34       "|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}"
35      },
36      "autoExpandColumn" : "name",
37      "enableDrop" : true,
38      "xtype" : "Grid",
39      "ddGroup" : "groupDD",
40      "loadMask" : true,
41      "$ xns" : "Roo.grid",
42      "* prop" : "grid",
43      "items" : [
44       {
45        "listeners" : {
46         "beforeload" : "function (_self, o)\n{\n    o.params = o.params || {};\n    \n    o.params.type =2;\n    \n    o.params._add_everyone = 1;\n}",
47         "load" : "function (_self, records, options)\n{\n    var sm = _this.grid.getSelectionModel();\n        if (!sm.getSelections().length) {\n            sm.selectFirstRow();\n        }\n        Pman.Tab.AdminContacts.grid.footer.onClick('first');\n}"
48        },
49        "xtype" : "Store",
50        "remoteSort" : true,
51        "$ sortInfo" : "{ field : 'name', direction: 'ASC' }",
52        "$ xns" : "Roo.data",
53        "* prop" : "dataSource",
54        "items" : [
55         {
56          "$ url" : "baseURL + '/Roo/core_group'",
57          "method" : "GET",
58          "xtype" : "HttpProxy",
59          "$ xns" : "Roo.data",
60          "* prop" : "proxy"
61         },
62         {
63          "id" : "id",
64          "root" : "data",
65          "xtype" : "JsonReader",
66          "$ xns" : "Roo.data",
67          "$ 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]",
68          "* prop" : "reader",
69          "totalProperty" : "total"
70         }
71        ]
72       },
73       {
74        "xtype" : "Toolbar",
75        "$ xns" : "Roo",
76        "* prop" : "toolbar",
77        "items" : [
78         {
79          "text" : "Manage Groups",
80          "xtype" : "Button",
81          "$ xns" : "Roo.Toolbar",
82          "items" : [
83           {
84            "xtype" : "Menu",
85            "$ xns" : "Roo.menu",
86            "* prop" : "menu",
87            "items" : [
88             {
89              "listeners" : {
90               "|click" : "function()\n{\n    if (!_this.dialog) {\n        return;\n    }\n    _this.dialog.show( { id : 0,  type: 2 } , function() {\n         _this.grid.ds.load({});\n   }); \n}\n"
91              },
92              "text" : "Add",
93              "xtype" : "Item",
94              "cls" : "x-btn-text-icon",
95              "$ icon" : "Roo.rootURL + 'images/default/dd/drop-add.gif'",
96              "$ xns" : "Roo.menu"
97             },
98             {
99              "listeners" : {
100               "|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) {\n        return;\n        }\n    _this.dialog.show(s[0].data, function() {\n         _this.grid.ds.load({});\n    }); \n    \n}\n"
101              },
102              "text" : "Edit",
103              "xtype" : "Item",
104              "cls" : "x-btn-text-icon",
105              "$ icon" : "Roo.rootURL + 'images/default/tree/leaf.gif'",
106              "$ xns" : "Roo.menu"
107             },
108             {
109              "listeners" : {
110               "|click" : "function()\n{\n     Pman.genericDelete(_this, 'core_group'); \n}\n        "
111              },
112              "text" : "Delete",
113              "xtype" : "Item",
114              "cls" : "x-btn-text-icon",
115              "$ icon" : "rootURL + '/Pman/templates/images/trash.gif'",
116              "$ xns" : "Roo.menu"
117             },
118             {
119              "xtype" : "Separator",
120              "$ xns" : "Roo.menu"
121             },
122             {
123              "listeners" : {
124               "click" : "function (_self, e)\n{\n  _this.grid.ds.load({});\n}"
125              },
126              "text" : "Reload",
127              "xtype" : "Item",
128              "$ xns" : "Roo.menu"
129             }
130            ]
131           }
132          ]
133         }
134        ]
135       },
136       {
137        "xtype" : "ColumnModel",
138        "header" : "Name",
139        "width" : 200,
140        "$ 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}",
141        "$ xns" : "Roo.grid",
142        "* prop" : "colModel[]",
143        "dataIndex" : "name"
144       },
145       {
146        "listeners" : {
147         "afterselectionchange" : "function (_self)\n{\n//    Pman.Tab.AdminContacts.grid.footer.onClick('first');\n    var c = Pman.Tab.AdminContactsManager.layout.getRegion('center');\n    c.getActivePanel().grid.footer.onClick('first');\n    \n}"
148        },
149        "xtype" : "RowSelectionModel",
150        "singleSelect" : true,
151        "$ xns" : "Roo.grid",
152        "* prop" : "sm"
153       },
154       {
155        "listeners" : {
156         "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}",
157         "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    new 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(res) {\n            \n            var data = res.data;\n            //refreshPager();\n            // \n            // do we need to do anything??\n            if (isFromGroup) {\n                Pman.Tab.AdminContacts.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}"
158        },
159        "xtype" : "DropTarget",
160        "ddGroup" : "groupDD",
161        "$ xns" : "Roo.dd",
162        "* prop" : "dropTarget"
163       }
164      ]
165     }
166    ]
167   }
168  ]
169 }