Main_bak.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682
  1. MWF.xApplication.Profile.options.multitask = false;
  2. MWF.xApplication.Profile.Main = new Class({
  3. Extends: MWF.xApplication.Common.Main,
  4. Implements: [Options, Events],
  5. options: {
  6. "style": "default",
  7. "name": "Profile",
  8. "icon": "icon.png",
  9. "width": "800",
  10. "height": "600",
  11. "isResize": false,
  12. "isMax": false,
  13. "mvcStyle": "view.css",
  14. "title": MWF.xApplication.Profile.LP.title
  15. },
  16. onQueryLoad: function(){
  17. this.lp = MWF.xApplication.Profile.LP;
  18. },
  19. loadApplication: function(callback){
  20. this.loadTitle();
  21. this.loadContent();
  22. if (callback) callback();
  23. },
  24. loadTitle: function(){
  25. this.loadTitleBar();
  26. this.loadTitleUserNode();
  27. this.loadTitleTextNode();
  28. },
  29. loadTitleBar: function(){
  30. this.titleBar = new Element("div", {
  31. "styles": this.css.titleBar
  32. }).inject(this.content);
  33. },
  34. loadTitleUserNode: function(){
  35. this.titleUserNode = new Element("div", {
  36. "styles": this.css.titleUserNode
  37. }).inject(this.titleBar);
  38. this.titleUserIconNode = new Element("div", {
  39. "styles": this.css.titleUserIconNode
  40. }).inject(this.titleUserNode);
  41. this.titleUserTextNode = new Element("div", {
  42. "styles": this.css.titleUserTextNode,
  43. "text": this.desktop.session.user.name
  44. }).inject(this.titleUserNode);
  45. },
  46. loadTitleTextNode: function(){
  47. this.taskTitleTextNode = new Element("div", {
  48. "styles": this.css.titleTextNode,
  49. "text": this.lp.title
  50. }).inject(this.titleBar);
  51. },
  52. loadContent: function(){
  53. this.contentNode = new Element("div", {"styles": this.css.contentNode}).inject(this.content);
  54. MWF.require("MWF.widget.Tab", function(){
  55. this.tab = new MWF.widget.Tab(this.contentNode, {"style": "profile"});
  56. this.tab.load();
  57. this.loadInforConfigNode();
  58. this.loadLayoutConfigNode();
  59. this.loadIdeaConfigNode();
  60. this.loadPasswordConfigNode();
  61. this.loadSSOConfigNode();
  62. this.inforConfigPage = this.tab.addTab(this.inforConfigNode, this.lp.inforConfig);
  63. this.layoutConfigPage = this.tab.addTab(this.layoutConfigNode, this.lp.layoutConfig);
  64. this.ideaConfigPage = this.tab.addTab(this.ideaConfigNode, this.lp.ideaConfig);
  65. this.passwordConfigPage = this.tab.addTab(this.passwordConfigNode, this.lp.passwordConfig);
  66. this.ssoConfigPage = this.tab.addTab(this.ssoConfigNode, this.lp.ssoConfig);
  67. if (this.options.tab){
  68. this[this.options.tab].showIm();
  69. }else{
  70. this.inforConfigPage.showIm();
  71. }
  72. }.bind(this));
  73. },
  74. loadInforConfigNode: function(){
  75. this.inforConfigNode = new Element("div", {"styles": this.css.configNode}).inject(this.content);
  76. this.inforConfigAreaNode = new Element("div", {"styles": this.css.inforConfigAreaNode}).inject(this.inforConfigNode);
  77. this.getAction(function(){
  78. this.action.getPerson(function(json){
  79. this.personData = json.data;
  80. var _self = this;
  81. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  82. var titleNode = new Element("div", {"styles": this.css.inforIconTitleNode, "text": this.lp.icon}).inject(lineNode);
  83. var contentNode = new Element("div", {"styles": this.css.inforIconContentNode}).inject(lineNode);
  84. this.contentImgNode = new Element("img", {"styles": this.css.inforIconContentImgNode, "src": this.action.getPersonIcon()}).inject(contentNode);
  85. var actionNode = new Element("div", {"styles": this.css.inforChangeIconNode, "text": this.lp.changeIcon, "events": {
  86. "click": function(){this.changeIcon();}.bind(this)
  87. }}).inject(lineNode);
  88. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  89. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.name}).inject(lineNode);
  90. var contentNode = new Element("div", {"styles": this.css.inforContentNode, "text": json.data.name}).inject(lineNode);
  91. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  92. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.employee}).inject(lineNode);
  93. var contentNode = new Element("div", {"styles": this.css.inforContentNode, "text": json.data.employee}).inject(lineNode);
  94. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  95. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.mail}).inject(lineNode);
  96. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  97. this.mailInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.mail, "events": {
  98. "blur": function(){this.setStyles(_self.css.inforContentInputNode);},
  99. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
  100. }}).inject(contentNode);
  101. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  102. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.mobile}).inject(lineNode);
  103. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  104. this.mobileInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.mobile, "events": {
  105. "blur": function(){this.setStyles(_self.css.inforContentInputNode);},
  106. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
  107. }}).inject(contentNode);
  108. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  109. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.officePhone}).inject(lineNode);
  110. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  111. this.officePhoneInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.officePhone, "events": {
  112. "blur": function(){this.setStyles(_self.css.inforContentInputNode);},
  113. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
  114. }}).inject(contentNode);
  115. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  116. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.weixin}).inject(lineNode);
  117. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  118. this.weixinInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.weixin, "events": {
  119. "blur": function(){this.setStyles(_self.css.inforContentInputNode);},
  120. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
  121. }}).inject(contentNode);
  122. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  123. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.QQ}).inject(lineNode);
  124. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  125. this.qqInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.qq, "events": {
  126. "blur": function(){this.setStyles(_self.css.inforContentInputNode);},
  127. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
  128. }}).inject(contentNode);
  129. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  130. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.signature}).inject(lineNode);
  131. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  132. this.signatureInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.signature, "events": {
  133. "blur": function(){this.setStyles(_self.css.inforContentInputNode);},
  134. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
  135. }}).inject(contentNode);
  136. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
  137. this.saveAction = new Element("div", {"styles": this.css.saveAction, "text": this.lp.saveInfor}).inject(lineNode);
  138. this.saveAction.addEvent("click", function(){
  139. this.savePersonInfor();
  140. }.bind(this));
  141. }.bind(this), null, this.desktop.session.user.name)
  142. }.bind(this));
  143. },
  144. changeIcon: function(){
  145. var options = {};
  146. var width = "668";
  147. var height = "510";
  148. width = width.toInt();
  149. height = height.toInt();
  150. var size = this.content.getSize();
  151. var x = (size.x-width)/2;
  152. var y = (size.y-height)/2;
  153. if (x<0) x = 0;
  154. if (y<0) y = 0;
  155. if (layout.mobile){
  156. x = 20;
  157. y = 0;
  158. }
  159. var _self = this;
  160. MWF.require("MWF.xDesktop.Dialog", function() {
  161. MWF.require("MWF.widget.ImageClipper", function(){
  162. var dlg = new MWF.xDesktop.Dialog({
  163. "title": this.lp.changePersonIcon,
  164. "style": "image",
  165. "top": y,
  166. "left": x - 20,
  167. "fromTop": y,
  168. "fromLeft": x - 20,
  169. "width": width,
  170. "height": height,
  171. "html": "<div></div>",
  172. "maskNode": this.content,
  173. "container": this.content,
  174. "buttonList": [
  175. {
  176. "text": MWF.LP.process.button.ok,
  177. "action": function () {
  178. //_self.uploadPersonIcon();
  179. _self.image.uploadImage( function( json ){
  180. _self.action.getPerson(function(json){
  181. if (json.data){
  182. this.personData = json.data;
  183. _self.contentImgNode.set("src", _self.action.getPersonIcon());
  184. }
  185. this.close();
  186. }.bind(this));
  187. }.bind(this), null );
  188. }
  189. },
  190. {
  191. "text": MWF.LP.process.button.cancel,
  192. "action": function () {
  193. _self.image = null;
  194. this.close();
  195. }
  196. }
  197. ]
  198. });
  199. dlg.show();
  200. this.image = new MWF.widget.ImageClipper(dlg.content.getFirst(), {
  201. "aspectRatio": 1,
  202. "description" : "",
  203. "imageUrl" : this.action.getPersonIcon(),
  204. "resetEnable" : false,
  205. "data": null,
  206. "parameter": null,
  207. "action": this.action.action,
  208. "method": "changeIcon"
  209. });
  210. this.image.load();
  211. }.bind(this));
  212. }.bind(this))
  213. },
  214. uploadPersonIcon: function(){
  215. if (this.image){
  216. if( this.image.getResizedImage() ){
  217. this.action.changeIcon(function(){
  218. this.action.getPerson(function(json){
  219. if (json.data){
  220. this.personData = json.data;
  221. //if (this.personData.icon){
  222. this.contentImgNode.set("src", this.action.getPersonIcon());
  223. //}
  224. }
  225. }.bind(this))
  226. }.bind(this), null, this.image.getFormData(), this.image.resizedImage);
  227. // this.explorer.actions.changePersonIcon(this.data.id ,function(){
  228. // this.iconNode.set("src", "");
  229. // if (this.item.iconNode) this.item.iconNode.getElement("img").set("src", "");
  230. // window.setTimeout(function(){
  231. // this.iconNode.set("src", this._getIcon(true));
  232. // if (this.item.iconNode) this.item.iconNode.getElement("img").set("src", this.item._getIcon(true));
  233. // }.bind(this), 100);
  234. // }.bind(this), null, this.image.getFormData(), this.image.resizedImage);
  235. }
  236. }
  237. },
  238. // changeIcon: function(){
  239. // if (!this.uploadFileAreaNode){
  240. // this.uploadFileAreaNode = new Element("div");
  241. // var html = "<input name=\"file\" type=\"file\"/>";
  242. // this.uploadFileAreaNode.set("html", html);
  243. //
  244. // this.fileUploadNode = this.uploadFileAreaNode.getFirst();
  245. // this.fileUploadNode.addEvent("change", function(){
  246. //
  247. // var files = fileNode.files;
  248. // if (files.length){
  249. // for (var i = 0; i < files.length; i++) {
  250. // var file = files.item(i);
  251. //
  252. // var formData = new FormData();
  253. // formData.append('file', file);
  254. // //formData.append('name', file.name);
  255. // //formData.append('folder', folderId);
  256. // this.action.changeIcon(function(){
  257. // this.action.getPerson(function(json){
  258. // if (json.data){
  259. // this.personData = json.data;
  260. // //if (this.personData.icon){
  261. // this.contentImgNode.set("src", this.action.getPersonIcon());
  262. // //}
  263. // }
  264. // }.bind(this))
  265. // }.bind(this), null, formData, file);
  266. // }
  267. // }
  268. //
  269. // }.bind(this));
  270. // }
  271. // var fileNode = this.uploadFileAreaNode.getFirst();
  272. // fileNode.click();
  273. // },
  274. savePersonInfor: function(){
  275. this.personData.officePhone = this.officePhoneInputNode.get("value");
  276. this.personData.mail = this.mailInputNode.get("value");
  277. this.personData.mobile = this.mobileInputNode.get("value");
  278. this.personData.weixin = this.weixinInputNode.get("value");
  279. this.personData.qq = this.qqInputNode.get("value");
  280. this.personData.signature = this.signatureInputNode.get("value");
  281. this.action.updatePerson(this.personData, function(){
  282. this.notice(this.lp.saveInforOk, "success");
  283. }.bind(this));
  284. },
  285. loadLayoutConfigNode: function(){
  286. this.layoutConfigNode = new Element("div", {"styles": this.css.configNode}).inject(this.content);
  287. new Element("div", {"styles": this.css.layoutTitleNode, "text": this.lp.layoutAction}).inject(this.layoutConfigNode);
  288. var buttonNode = new Element("div", {"styles": this.css.buttonNodeArea}).inject(this.layoutConfigNode);
  289. this.clearDataAction = new Element("div", {"styles": this.css.clearDataAction, "text": this.lp.clear}).inject(buttonNode);
  290. this.clearDataAction.addEvent("click", function(){
  291. MWF.require("MWF.widget.UUID", function(){
  292. //MWF.UD.putData("layout", {}, function(){
  293. // this.notice(this.lp.clearok, "success");
  294. // this.desktop.notRecordStatus = true;
  295. //}.bind(this));
  296. MWF.UD.deleteData("layout", function(){
  297. this.notice(this.lp.clearok, "success");
  298. this.desktop.notRecordStatus = true;
  299. }.bind(this));
  300. }.bind(this));
  301. }.bind(this));
  302. if (MWF.AC.isAdministrator()){
  303. var defaultNode = new Element("div", {"styles": {"overflow":"hidden", "clear": "left"}}).inject(buttonNode);
  304. this.defaultDataAction = new Element("div", {"styles": this.css.setDefaultDataAction, "text": this.lp.setDefault}).inject(defaultNode);
  305. this.defaultDataAction.addEvent("click", function(){
  306. MWF.require("MWF.widget.UUID", function(){
  307. var text = this.lp.setDefaultOk;
  308. this.close();
  309. var status = layout.desktop.getLayoutStatusData();
  310. MWF.UD.putPublicData("defaultLayout", status, function(){
  311. MWF.xDesktop.notice("success", {"x": "right", "y": "top"}, text, layout.desktop.desktopNode);
  312. }.bind(this));
  313. }.bind(this));
  314. }.bind(this));
  315. this.clearDefaultDataAction = new Element("div", {"styles": this.css.setDefaultDataAction, "text": this.lp.clearDefault}).inject(defaultNode);
  316. this.clearDefaultDataAction.addEvent("click", function(){
  317. MWF.require("MWF.widget.UUID", function(){
  318. MWF.UD.deletePublicData("defaultLayout", function(){
  319. this.notice(this.lp.clearok, "success");
  320. this.desktop.notRecordStatus = true;
  321. }.bind(this));
  322. //
  323. // var text = this.lp.setDefaultOk;
  324. // this.close();
  325. // var status = layout.desktop.getLayoutStatusData();
  326. // MWF.UD.putPublicData("defaultLayout", status, function(){
  327. // MWF.xDesktop.notice("success", {"x": "right", "y": "top"}, text, layout.desktop.desktopNode);
  328. // }.bind(this));
  329. }.bind(this));
  330. }.bind(this));
  331. //var tmpNode = new Element("div", {"styles": {
  332. // "width": "300px",
  333. // "margin": "-20px auto"
  334. //}}).inject(this.layoutConfigNode);
  335. this.forceDataAction = new Element("div", {"styles": this.css.setDefaultDataAction, "text": this.lp.setForce}).inject(buttonNode);
  336. this.forceDataAction.setStyle("float", "left");
  337. this.forceDataAction.addEvent("click", function(){
  338. MWF.require("MWF.widget.UUID", function(){
  339. var text = this.lp.setForceOk;
  340. this.close();
  341. var status = layout.desktop.getLayoutStatusData();
  342. MWF.UD.putPublicData("forceLayout", status, function(){
  343. MWF.xDesktop.notice("success", {"x": "right", "y": "top"}, text, layout.desktop.desktopNode);
  344. }.bind(this));
  345. }.bind(this));
  346. }.bind(this));
  347. this.deleteForceDataAction = new Element("div", {"styles": this.css.setDefaultDataAction, "text": this.lp.clearForce}).inject(buttonNode);
  348. this.deleteForceDataAction.addEvent("click", function(){
  349. MWF.require("MWF.widget.UUID", function(){
  350. MWF.UD.deletePublicData("forceLayout", function(){
  351. this.notice(this.lp.clearok, "success");
  352. this.desktop.notRecordStatus = true;
  353. }.bind(this));
  354. }.bind(this));
  355. }.bind(this));
  356. }
  357. new Element("div", {"styles": this.css.layoutTitleNode, "text": this.lp.desktopBackground}).inject(this.layoutConfigNode);
  358. var UINode = new Element("div", {"styles": this.css.buttonNodeArea}).inject(this.layoutConfigNode);
  359. this.loadDesktopBackground(UINode);
  360. },
  361. loadDesktopBackground: function(UINode){
  362. var currentSrc = layout.desktop.options.style;
  363. MWF.UD.getDataJson("layoutDesktop", function(json){
  364. if (json) currentSrc = json.src;
  365. }.bind(this), false);
  366. MWF.getJSON(layout.desktop.path+"styles.json", function(json){
  367. json.each(function(style){
  368. var img = MWF.defaultPath+"/xDesktop/$Layout/"+style.style+"/preview.jpg";
  369. //var dskImg = MWF.defaultPath+"/xDesktop/$Layout/"+style.style+"/desktop.jpg";
  370. var imgArea = new Element("div", {"styles": this.css.previewBackground}).inject(UINode);
  371. if (currentSrc==style.style){
  372. imgArea.setStyles({"border": "4px solid #ffea00"});
  373. }
  374. new Element("img", {"src": img}).inject(imgArea);
  375. imgArea.store("dskimg", style.style);
  376. var _self = this;
  377. imgArea.addEvent("click", function(){ _self.selectDesktopImg(this, UINode); });
  378. }.bind(this));
  379. }.bind(this));
  380. //MWF.UD.getPublicData("layoutDesktopImgs", function(json){
  381. // if (json) currentSrc = json.src;
  382. //}.bind(this), false);
  383. //
  384. if (MWF.AC.isAdministrator()){
  385. }
  386. },
  387. selectDesktopImg: function(item, UINode){
  388. var desktopImg = item.retrieve("dskimg");
  389. MWF.UD.putData("layoutDesktop", {"src": desktopImg}, function(){
  390. UINode.getChildren().each(function(node){
  391. node.setStyles({"border": "4px solid #eeeeee"});
  392. }.bind(this));
  393. item.setStyles({"border": "4px solid #ffea00"});
  394. var dskImg = MWF.defaultPath+"/xDesktop/$Layout/"+desktopImg+"/desktop.jpg";
  395. layout.desktop.node.setStyle("background-image", "url("+dskImg+")");
  396. }.bind(this));
  397. },
  398. loadIdeaConfigNode: function(){
  399. this.ideaConfigNode = new Element("div", {"styles": this.css.configNode}).inject(this.content);
  400. this.ideasArea = new Element("textarea", {"styles": this.css.ideasArea}).inject(this.ideaConfigNode);
  401. this.ideasSaveAction = new Element("div", {"styles": this.css.ideasSaveAction, "text": this.lp.saveIdea}).inject(this.ideaConfigNode);
  402. if (MWF.AC.isAdministrator()){
  403. this.ideasSaveDefaultAction = new Element("div", {"styles": this.css.ideasSaveAction, "text": this.lp.saveIdeaDefault}).inject(this.ideaConfigNode);
  404. this.ideasSaveDefaultAction.addEvent("click", function(){
  405. MWF.require("MWF.widget.UUID", function(){
  406. var data = {};
  407. data.ideas = this.ideasArea.get("value").split("\n");
  408. MWF.UD.putPublicData("idea", data, function(){
  409. this.notice(this.lp.ideaSaveOk, "success");
  410. }.bind(this));
  411. }.bind(this));
  412. }.bind(this))
  413. }
  414. MWF.require("MWF.widget.UUID", function(){
  415. MWF.UD.getDataJson("idea", function(json){
  416. if (json){
  417. if (json.ideas) this.ideasArea.set("value", json.ideas.join("\n"));
  418. }
  419. }.bind(this));
  420. }.bind(this));
  421. this.ideasSaveAction.addEvent("click", function(){
  422. MWF.require("MWF.widget.UUID", function(){
  423. var data = {};
  424. data.ideas = this.ideasArea.get("value").split("\n");
  425. MWF.UD.putData("idea", data, function(){
  426. this.notice(this.lp.ideaSaveOk, "success");
  427. }.bind(this));
  428. }.bind(this));
  429. }.bind(this))
  430. },
  431. loadPasswordConfigNode: function(){
  432. this.passwordConfigNode = new Element("div", {"styles": this.css.configNode});
  433. this.passwordConfigAreaNode = new Element("div", {"styles": this.css.inforConfigAreaNode}).inject(this.passwordConfigNode);
  434. var _self = this;
  435. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
  436. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.oldPassword}).inject(lineNode);
  437. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  438. this.oldPasswordInputNode = new Element("input", {"type": "password", "styles": this.css.inforContentInputNode, "events": {
  439. "blur": function(){this.setStyles(_self.css.inforContentInputNode);},
  440. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
  441. }}).inject(contentNode);
  442. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
  443. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.password}).inject(lineNode);
  444. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  445. this.passwordInputNode = new Element("input", {"type": "password", "styles": this.css.inforContentInputNode, "events": {
  446. "blur": function(){
  447. this.setStyles(_self.css.inforContentInputNode);
  448. },
  449. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);},
  450. "keyup" : function(){ this.checkPassowrdStrength( this.passwordInputNode.get("value") ) }.bind(this)
  451. }}).inject(contentNode);
  452. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
  453. var titleNode = new Element("div", {"styles": this.css.inforTitleNode}).inject(lineNode);
  454. this.passwordRemindContainer = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  455. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
  456. var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.morePassword}).inject(lineNode);
  457. var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
  458. this.morePasswordInputNode = new Element("input", {"type": "password", "styles": this.css.inforContentInputNode, "events": {
  459. "blur": function(){this.setStyles(_self.css.inforContentInputNode);},
  460. "focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
  461. }}).inject(contentNode);
  462. var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
  463. this.saveAction = new Element("div", {"styles": this.css.saveAction, "text": this.lp.passwordConfig}).inject(lineNode);
  464. this.saveAction.addEvent("click", function(){
  465. this.changePassword();
  466. }.bind(this));
  467. this.createPasswordStrengthNode();
  468. this.passworRemindNode = new Element("div",{"styles": this.css.passwordRemindNode, "text": this.lp.paswordRule }).inject( this.passwordRemindContainer );
  469. },
  470. changePassword: function(){
  471. var oldPassword = this.oldPasswordInputNode.get("value");
  472. var password = this.passwordInputNode.get("value");
  473. var morePassword = this.morePasswordInputNode.get("value");
  474. if (password!=morePassword){
  475. this.notice(this.lp.passwordNotMatch, "error");
  476. this.passwordInputNode.setStyles(this.css.inforContentInputNode_error);
  477. this.morePasswordInputNode.setStyles(this.css.inforContentInputNode_error);
  478. }else{
  479. this.action.changePassword(oldPassword, password, morePassword, function(){
  480. this.oldPasswordInputNode.set("value", "");
  481. this.passwordInputNode.set("value", "");
  482. this.morePasswordInputNode.set("value", "");
  483. this.notice(this.lp.changePasswordOk, "success");
  484. }.bind(this));
  485. if (layout.config.mail){
  486. var url = "http://"+layout.config.mail+"//names.nsf?changepassword&password="+encodeURIComponent(oldPassword)+"&passwordnew="+encodeURIComponent(password)+"&passwordconfirm="+encodeURIComponent(password);
  487. var iframe = new Element("iframe", {"styles": {"display": "none"}}).inject(this.desktop.desktopNode);
  488. iframe.set("src", url);
  489. window.setTimeout(function(){
  490. iframe.destroy();
  491. }.bind(this), 2000);
  492. }
  493. }
  494. },
  495. getAction: function(callback){
  496. if (!this.acrion){
  497. this.action = MWF.Actions.get("x_organization_assemble_personal");
  498. if (callback) callback();
  499. // MWF.xDesktop.requireApp("Profile", "Actions.RestActions", function(){
  500. // this.action = new MWF.xApplication.Profile.Actions.RestActions();
  501. // if (callback) callback();
  502. // }.bind(this));
  503. }else{
  504. if (callback) callback();
  505. }
  506. },
  507. createPasswordStrengthNode : function(){
  508. var passwordStrengthArea = this.passwordRemindContainer;
  509. var lowNode = new Element( "div", {styles : this.css.passwordStrengthNode }).inject( passwordStrengthArea );
  510. this.lowColorNode = new Element( "div", {styles : this.css.passwordStrengthColor }).inject( lowNode );
  511. this.lowTextNode = new Element( "div", {styles : this.css.passwordStrengthText, text : this.lp.weak }).inject( lowNode );
  512. var middleNode = new Element( "div" , {styles : this.css.passwordStrengthNode }).inject( passwordStrengthArea );
  513. this.middleColorNode = new Element( "div", {styles : this.css.passwordStrengthColor }).inject( middleNode );
  514. this.middleTextNode = new Element( "div", {styles : this.css.passwordStrengthText, text : this.lp.middle }).inject( middleNode );
  515. var highNode = new Element("div", {styles : this.css.passwordStrengthNode }).inject( passwordStrengthArea );
  516. this.highColorNode = new Element( "div", {styles : this.css.passwordStrengthColor }).inject( highNode );
  517. this.highTextNode = new Element( "div", {styles : this.css.passwordStrengthText, text : this.lp.high }).inject( highNode );
  518. },
  519. getPasswordLevel: function( password, callback ){
  520. /*Level(级别)
  521. •0-3 : [easy]
  522. •4-6 : [midium]
  523. •7-9 : [strong]
  524. •10-12 : [very strong]
  525. •>12 : [extremely strong]
  526. */
  527. this.getAction( function( ){
  528. this.action.checkPassword( password, function( json ){
  529. if(callback)callback( json.data.value );
  530. }.bind(this), null, false );
  531. }.bind(this) );
  532. },
  533. checkPassowrdStrength: function(pwd){
  534. this.lowColorNode.setStyles( this.css.passwordStrengthColor );
  535. this.lowTextNode.setStyles( this.css.passwordStrengthText );
  536. this.middleColorNode.setStyles( this.css.passwordStrengthColor );
  537. this.middleTextNode.setStyles( this.css.passwordStrengthText );
  538. this.highColorNode.setStyles( this.css.passwordStrengthColor );
  539. this.highTextNode.setStyles( this.css.passwordStrengthText );
  540. if (pwd==null||pwd==''){
  541. }else{
  542. this.getPasswordLevel( pwd, function( level ){
  543. switch(level) {
  544. case 0:
  545. case 1:
  546. case 2:
  547. case 3:
  548. this.lowColorNode.setStyles( this.css.passwordStrengthColor_low );
  549. this.lowTextNode.setStyles( this.css.passwordStrengthText_current );
  550. break;
  551. case 4:
  552. case 5:
  553. case 6:
  554. this.middleColorNode.setStyles( this.css.passwordStrengthColor_middle );
  555. this.middleTextNode.setStyles( this.css.passwordStrengthText_current );
  556. break;
  557. default:
  558. this.highColorNode.setStyles( this.css.passwordStrengthColor_high );
  559. this.highTextNode.setStyles( this.css.passwordStrengthText_current );
  560. }
  561. }.bind(this) )
  562. }
  563. },
  564. loadSSOConfigNode: function(){
  565. this.ssoConfigNode = new Element("div", {"styles": this.css.configNode}).inject(this.content);
  566. this.ssoConfigTitleNode = new Element("div", {"styles": this.css.ssoConfigTitleNode, "text": this.lp.bindOauth}).inject(this.ssoConfigNode);
  567. this.ssoConfigAreaNode = new Element("div", {"styles": {"padding": "10px 40px"}}).inject(this.ssoConfigNode);
  568. MWF.Actions.get("x_organization_assemble_authentication").listOauthServer(function(json){
  569. json.data.each(function(d){
  570. var node = new Element("a", {
  571. "styles": {"font-size": "14px", "display": "block", "margin-bottom": "10px"},
  572. "text": d.displayName,
  573. "target": "_blank",
  574. "href": "/x_desktop/oauth.html?oauth="+encodeURIComponent(d.name)+"&redirect="+"&method=oauthBind"
  575. }).inject(this.ssoConfigAreaNode)
  576. }.bind(this));
  577. }.bind(this));
  578. // this.ideasArea = new Element("textarea", {"styles": this.css.ideasArea}).inject(this.ideaConfigNode);
  579. // this.ideasSaveAction = new Element("div", {"styles": this.css.ideasSaveAction, "text": this.lp.saveIdea}).inject(this.ideaConfigNode);
  580. //
  581. // if (MWF.AC.isAdministrator()){
  582. // this.ideasSaveDefaultAction = new Element("div", {"styles": this.css.ideasSaveAction, "text": this.lp.saveIdeaDefault}).inject(this.ideaConfigNode);
  583. // this.ideasSaveDefaultAction.addEvent("click", function(){
  584. // MWF.require("MWF.widget.UUID", function(){
  585. // var data = {};
  586. // data.ideas = this.ideasArea.get("value").split("\n");
  587. // MWF.UD.putPublicData("idea", data, function(){
  588. // this.notice(this.lp.ideaSaveOk, "success");
  589. // }.bind(this));
  590. // }.bind(this));
  591. // }.bind(this))
  592. // }
  593. //
  594. // MWF.require("MWF.widget.UUID", function(){
  595. // MWF.UD.getDataJson("idea", function(json){
  596. // if (json){
  597. // if (json.ideas) this.ideasArea.set("value", json.ideas.join("\n"));
  598. // }
  599. // }.bind(this));
  600. // }.bind(this));
  601. //
  602. // this.ideasSaveAction.addEvent("click", function(){
  603. // MWF.require("MWF.widget.UUID", function(){
  604. // var data = {};
  605. // data.ideas = this.ideasArea.get("value").split("\n");
  606. // MWF.UD.putData("idea", data, function(){
  607. // this.notice(this.lp.ideaSaveOk, "success");
  608. // }.bind(this));
  609. // }.bind(this));
  610. // }.bind(this))
  611. }
  612. });