IdenitySelector.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. MWF.xApplication.Execution = MWF.xApplication.Execution || {};
  2. MWF.xDesktop.requireApp("Template", "Explorer", null, false);
  3. MWF.xDesktop.requireApp("Template", "MPopupForm", null, false);
  4. MWF.xDesktop.requireApp("Template", "MForm", null, false);
  5. MWF.require("MWF.xDesktop.UserData", null, false);
  6. MWF.xApplication.Execution.IdenitySelector = new Class({
  7. Extends: MPopupForm,
  8. Implements: [Options, Events],
  9. options: {
  10. "style": "default",
  11. "width": "500",
  12. "height": "300",
  13. "hasTop": true,
  14. "hasIcon": false,
  15. "hasBottom": true,
  16. "title": "",
  17. "draggable": false,
  18. "closeAction": false,
  19. "closeText" : "",
  20. "needLogout" : false,
  21. "isNew": true
  22. },
  23. initialize: function (app, actions, identities, css, options) {
  24. this.setOptions(options);
  25. this.app = app;
  26. this.actions = this.app.restActions;
  27. this.css = css;
  28. this.options.title = this.app.lp.idenitySelectTitle;
  29. this.identities = identities;
  30. this.actions = actions;
  31. this.loadCss();
  32. },
  33. load: function () {
  34. this.create();
  35. },
  36. loadCss: function () {
  37. this.cssPath = "/x_component_Execution/$Main/" + this.options.style + "/css.wcss";
  38. this._loadCss();
  39. },
  40. createTopNode: function () {
  41. if (!this.formTopNode) {
  42. this.formTopNode = new Element("div.formTopNode", {
  43. "styles": this.css.formTopNode
  44. }).inject(this.formNode);
  45. this.formTopIconNode = new Element("div", {
  46. "styles": this.css.formTopIconNode
  47. }).inject(this.formTopNode);
  48. this.formTopTextNode = new Element("div", {
  49. "styles": this.css.formTopTextNode,
  50. "text": this.options.title
  51. }).inject(this.formTopNode);
  52. if (this.options.closeAction) {
  53. this.formTopCloseActionNode = new Element("div", {"styles": this.css.formTopCloseActionNode}).inject(this.formTopNode);
  54. this.formTopCloseActionNode.addEvent("click", function () {
  55. this.close();
  56. }.bind(this));
  57. }
  58. this.formTopContentNode = new Element("div", {
  59. "styles": this.css.formTopContentNode
  60. }).inject(this.formTopNode);
  61. this._createTopContent();
  62. }
  63. },
  64. _createTableContent: function () {
  65. var table = new Element("table",{"width":"100%",border:"0",cellpadding:"5",cellspacing:"0"}).inject(this.formTableArea);
  66. var tr = new Element("tr").inject(table);
  67. var td = new Element("td",{valign:"middle"}).inject(tr);
  68. this.identities.each(function(id,i){
  69. var name = id.name||id.leaderIdentity.split("@")[0];
  70. var unit = id.unitName || id["leaderUnitName"].split("@")[0];
  71. var node = new Element("div", {"styles": this.css["identitySelNode"], "text":name+"("+unit+")"}).inject(td);
  72. //var node = new Element("div", {"styles": this.css.identitySelNode, "text":id.split("@")[0]}).inject(td);
  73. node.set("identity",i);
  74. node.store("id",id);
  75. node.store("distinguishedName",id.distinguishedName||id.leaderIdentity);
  76. node.addEvents({
  77. "mouseover": function(ev){
  78. if ( this.selectedNode != ev.target ) ev.target.setStyles(this.css["identitySelNode_over"]);
  79. }.bind(this),
  80. "mouseout": function(ev){
  81. if ( this.selectedNode != ev.target ) ev.target.setStyles(this.css["identitySelNode_out"]);
  82. }.bind(this),
  83. "click": function(ev){
  84. this.selected( ev.target );
  85. }.bind(this),
  86. "dblclick": function(ev){
  87. this.selectedNode = ev.target;
  88. this.ok();
  89. }.bind(this)
  90. });
  91. }.bind(this))
  92. },
  93. selected: function( node ){
  94. if( this.selectedNode )this.selectedNode.setStyles( this.css["identitySelNode"]);
  95. this.selectedNode = node;
  96. node.setStyles(this.css["identitySelNode_selected"])
  97. },
  98. _createBottomContent: function () {
  99. this.cancelActionNode = new Element("div.formCancelActionNode", {
  100. "styles": this.css["formCancelActionNode"],
  101. "text": this.options.closeText
  102. }).inject(this.formBottomNode);
  103. this.cancelActionNode.addEvent("click", function (e) {
  104. this.cancel(e);
  105. }.bind(this));
  106. this.okActionNode = new Element("div.formOkActionNode", {
  107. "styles": this.css["formOkActionNode"],
  108. "text": this.app.lp.comfirm
  109. }).inject(this.formBottomNode);
  110. this.okActionNode.addEvent("click", function (e) {
  111. this.ok(e);
  112. }.bind(this));
  113. },
  114. cancel: function(){
  115. //this.app.close();
  116. this.fireEvent("postSelectorClose");
  117. },
  118. ok: function () {
  119. if( !this.selectedNode ){
  120. this.app.notice(this.app.lp.idenitySelecNotice,"error");
  121. }else{
  122. var loginData = {};
  123. loginData.loginIdentity = this.selectedNode.retrieve("distinguishedName");
  124. if( this.options.needLogout ){
  125. this.actions.logout( {},function(json){
  126. if(json.type && json.type =="success"){
  127. this.actions.login( loginData,function(js){
  128. MWF.UD.putData("okr_identity_login",{identity:loginData.loginIdentity});
  129. if(js.data && js.data.okrManager){ this.app.okrManager = js.data.okrManager}
  130. this.fireEvent("postSelectorOk", loginData.loginIdentity );
  131. this.close();
  132. }.bind(this), function(xhr,text,error){
  133. }.bind(this), false);
  134. }
  135. }.bind(this), null, false);
  136. }else{
  137. this.actions.login( loginData,function(json){
  138. MWF.UD.putData("okr_identity_login",{identity:loginData.loginIdentity});
  139. if(json.data && json.data.okrManager){ this.app.okrManager = json.data.okrManager}
  140. this.fireEvent("postSelectorOk", loginData.loginIdentity );
  141. this.close();
  142. }.bind(this), null, false);
  143. }
  144. }
  145. }
  146. });