/source/gl/mb/right/right_assign.html

http://prosporous.googlecode.com/ · HTML · 246 lines · 241 code · 5 blank · 0 comment · 0 complexity · c19507751acf5bcab4338ae8a2988f3e MD5 · raw file

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>????</title>
  6. <{$showjs}>
  7. <link rel="stylesheet" type="text/css" href="../css/main.css" />
  8. <style>
  9. .userlist{background-image:url(../img/shield.png)!important;}
  10. .useradd{background-image:url(../img/shield_add.png)!important;}
  11. .userkey{background-image:url(../img/group_key.png)!important;}
  12. .usercfg{background-image:url(../img/group_gear.png)!important;}
  13. .zdpz{background-image:url(../img/list_settings.gif)!important;}
  14. body { background-color: #D1DDEF; }
  15. </style>
  16. <script language="javascript">
  17. var isGroupChange = false,
  18. isComeFromUser = false;
  19. //????
  20. var ds = new Ext.data.Store({
  21. autoLoad:true,
  22. //url:'../right/get_users.php',
  23. proxy:new Ext.data.HttpProxy({
  24. url:'../right/get_users.php'
  25. }),
  26. reader: new Ext.data.JsonReader({
  27. totalProperty: "total",
  28. root:'result'
  29. },[
  30. {name:'id',type:'int'},
  31. {name:'user'}
  32. ]
  33. )
  34. });
  35. var colModel = new Ext.grid.ColumnModel([
  36. {id:'id',header:'UID',dataIndex:'id',sortable:true,width:'15px'},
  37. {header:'???',dataIndex:'user',sortable:true}
  38. ]);
  39. //?????
  40. var ds_group = new Ext.data.Store({
  41. autoLoad:true,
  42. //url:'../right/get_users.php',
  43. proxy:new Ext.data.HttpProxy({
  44. url:'../right/get_users.php?t=group'
  45. }),
  46. reader: new Ext.data.JsonReader({
  47. totalProperty: "total",
  48. root:'result'
  49. },[
  50. {name:'id',type:'int'},
  51. {name:'title'},
  52. {name:'intro'}
  53. ]
  54. ),
  55. listeners:{
  56. load:function(){
  57. Ext.getCmp('all-user-grid').getSelectionModel().selectFirstRow();
  58. }
  59. }
  60. });
  61. var colModel_group = new Ext.grid.ColumnModel([
  62. new Ext.grid.CheckboxSelectionModel({singleSelect:true}),
  63. {id:'id',header:'GID',dataIndex:'id',sortable:true},
  64. {header:'??',dataIndex:'title',sortable:true},
  65. {header:'??',dataIndex:'intro'}
  66. ]);
  67. //???????
  68. var resetGroup = function(){
  69. //?????????
  70. var usm = Ext.getCmp('all-user-grid').getSelectionModel();
  71. var select_total = usm.getCount();
  72. if (select_total<1){
  73. usm.clearSelections();
  74. return;
  75. }
  76. var uid = usm.getSelected().get('id');
  77. Ext.Ajax.request({
  78. url:'../right/get_users.php?t=user',
  79. method:'POST',
  80. success:function(r){
  81. var cfg = r.responseText.split(',');
  82. isComeFromUser = true; //??????
  83. var cfg_range = Ext.getCmp('all-group-grid').getStore().queryBy(function(r){
  84. //?????????
  85. return cfg.indexOf(r.get('id')+'') !== -1;
  86. },this).getRange();
  87. //????????
  88. Ext.getCmp('all-group-grid').getSelectionModel().selectRecords(cfg_range);
  89. isComeFromUser = false; //??????
  90. isGroupChange = false;
  91. },
  92. failure:function(){
  93. Ext.Msg.alert('??','?????????????"??"??');
  94. },
  95. params:{uid:uid}
  96. });
  97. };
  98. //???????
  99. var saveGroup = function(){
  100. var usm = Ext.getCmp('all-user-grid').getSelectionModel();
  101. var gsm = Ext.getCmp('all-group-grid').getSelectionModel();
  102. var uid = usm.getSelected().get('id');
  103. var gid = gsm.getSelections();
  104. var gids = new Array();
  105. Ext.each(gid,function(a){
  106. gids.push(a.get('id'));
  107. });
  108. //???????
  109. var rcft = gids.join(',');
  110. Ext.Ajax.request({
  111. url:'../right/get_users.php?t=save',
  112. method:'POST',
  113. success:function(r){
  114. if(r.responseText == 'ok'){
  115. Ext.Msg.alert('??','?????????');
  116. isGroupChange = false;
  117. }
  118. },
  119. failure:function(){
  120. Ext.Msg.alert('??','??????????"??"??');
  121. },
  122. params:{
  123. uid:uid,
  124. gids:rcft
  125. }
  126. });
  127. };
  128. //??
  129. Ext.onReady(function(){
  130. var bd = Ext.getBody();
  131. var group = new Ext.Panel({
  132. id:'group',
  133. fram:true,
  134. labelAlign:'left',
  135. layout:'column',
  136. autoWidth:true,
  137. height:350,
  138. items:[{
  139. title:'????',
  140. columnWidth:0.20,
  141. layout:'fit',
  142. items:[{
  143. id:'all-user-grid',
  144. xtype:'grid',
  145. autoScroll:true,
  146. //autoHeight:true,
  147. height:340,
  148. ds:ds,
  149. cm:colModel,
  150. sm: new Ext.grid.RowSelectionModel({
  151. singleSelect:true,
  152. listeners:{
  153. rowselect: function(sm, row, rec) {
  154. resetGroup();
  155. },
  156. beforerowselect: function(){
  157. if (isGroupChange){
  158. if(confirm('?????????????????')){
  159. isGroupChange = false;
  160. return true;
  161. }
  162. return false;
  163. }
  164. }
  165. }
  166. })
  167. }]
  168. },{
  169. title:'?????',
  170. columnWidth:0.8,
  171. style:'margin-left:0px',
  172. tools:[{
  173. id:'save',
  174. on:{
  175. click:saveGroup
  176. }
  177. }],
  178. items:[{
  179. id:'all-group-grid',
  180. xtype:'grid',
  181. //autoHeight:true,
  182. autoScroll:true,
  183. height:400,
  184. autoExpandMax :true,
  185. ds:ds_group,
  186. cm:colModel_group,
  187. sm:new Ext.grid.CheckboxSelectionModel({
  188. singleSelect:true,
  189. handleMouseDown: Ext.emptyFn,
  190. listeners:{
  191. selectionchange:function(){
  192. if (!isComeFromUser){
  193. isGroupChange = true;
  194. isComeFromUser = false;
  195. }
  196. },
  197. beforerowselect:function(){
  198. var n = Ext.getCmp('all-user-grid').getSelectionModel().getCount();
  199. if(n<1){
  200. Ext.Msg.alert('??','????????????????!');
  201. return false;
  202. }
  203. }
  204. }
  205. }),
  206. listeners:{
  207. rowdblclick:function(obj,rowIndex){
  208. var csm = obj.getSelectionModel();
  209. csm.selectRow(rowIndex,true);
  210. }
  211. },
  212. tbar:[
  213. //new Ext.Toolbar.TextItem('??????'),
  214. {
  215. pressed:false,
  216. text:'??',
  217. listeners:{
  218. click:function(){
  219. resetGroup();
  220. }
  221. }
  222. },
  223. {
  224. pressed:false,
  225. text:'??',
  226. listeners:{
  227. click:saveGroup
  228. }
  229. }
  230. ]
  231. //sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
  232. }]
  233. }],
  234. renderTo:Ext.getBody()
  235. });
  236. });
  237. </script>
  238. </head>
  239. <body>
  240. </body>
  241. </html>