cmsDocMobile.js 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535
  1. layout = window.layout || {};
  2. var locate = window.location;
  3. layout.protocol = locate.protocol;
  4. layout.mobile = true;
  5. layout.desktop = layout;
  6. layout.session = layout.session || {};
  7. var href = locate.href;
  8. if (href.indexOf("debugger") != -1) layout.debugger = true;
  9. o2.addReady(function () {
  10. o2.load(["../o2_lib/mootools/plugin/mBox.Notice.js", "../o2_lib/mootools/plugin/mBox.Tooltip.js"], { "sequence": true }, function () {
  11. //MWF.defaultPath = "../x_desktop"+MWF.defaultPath;
  12. MWF.loadLP("zh-cn");
  13. MWF.require("MWF.xDesktop.Common", null, false);
  14. MWF.require("MWF.widget.Mask", null, false);
  15. //修改支持x-token
  16. var uri = new URI(window.location.href);
  17. var options = uri.get("data");
  18. if (options["x-token"]) {
  19. Cookie.write("x-token", options["x-token"]);
  20. }
  21. layout.mask = new MWF.widget.Mask({ "style": "desktop" });
  22. layout.mask.load();
  23. MWF.require("MWF.xDesktop.Layout", function () {
  24. MWF.require("MWF.xDesktop.Authentication", null, false);
  25. MWF.require("MWF.xAction.RestActions", null, false);
  26. (function () {
  27. layout.load = function () {
  28. if (this.isAuthentication()) {
  29. //var preview = window.frameElement.retrieve("preview");
  30. //layout.desktop = window.frameElement.ownerDocument.window.layout.desktop;
  31. //
  32. this.node = $("appContent")||$("layout");
  33. this.content = $(document.body);
  34. this.path = "../x_component_cms_Document/$Main/";
  35. this.cssPath = "../x_component_cms_Document/$Main/default/css.wcss";
  36. this._loadCss();
  37. // MWF.require("MWF.xDesktop.MessageMobile", function(){
  38. // layout.message = new MWF.xDesktop.MessageMobile();
  39. // layout.message.load();
  40. // }.bind(this));
  41. //MWF.xDesktop.requireApp("cms.Document", "Actions.RestActions", null, false);
  42. //this.action = new MWF.xApplication.cms.Document.Actions.RestActions();
  43. this.action = MWF.Actions.get("x_cms_assemble_control");
  44. MWF.xDesktop.requireApp("cms.Document", "lp." + MWF.language, null, false);
  45. //MWF.xDesktop.requireApp("cms.Document", "lp."+MWF.language, {
  46. // "onRequestFailure": function(){
  47. // MWF.xDesktop.requireApp("cms.Document", "lp.zh-cn", null, false);
  48. // }.bind(this),
  49. // "onSuccess": function(){}.bind(this)
  50. //}, false);
  51. this.lp = MWF.xApplication.cms.Document.LP;
  52. this.options = this.getIds();
  53. this.options.name = "cms.Document";
  54. this.loadDocument(this.options);
  55. //MWF.require("MWF.xApplication.process.Xform.Form", function(){
  56. // layout.appForm = new MWF.APPForm($("layout"), preview.data);
  57. // layout.appForm.load();
  58. //});
  59. }
  60. };
  61. layout.addEvent = function () { };
  62. layout.close = function () {
  63. if (window.o2android && window.o2android.closeDocumentWindow) {
  64. window.o2android.closeDocumentWindow('close');
  65. }
  66. if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.closeDocumentWindow) {
  67. window.webkit.messageHandlers.closeDocumentWindow.postMessage('close');
  68. }
  69. };
  70. layout._loadCss = function () {
  71. var key = encodeURIComponent(this.cssPath);
  72. if (MWF.widget.css[key]) {
  73. this.css = MWF.widget.css[key];
  74. } else {
  75. var r = new Request.JSON({
  76. url: this.cssPath,
  77. secure: false,
  78. async: false,
  79. method: "get",
  80. noCache: false,
  81. onSuccess: function (responseJSON, responseText) {
  82. this.css = responseJSON;
  83. MWF.widget.css[key] = responseJSON;
  84. }.bind(this),
  85. onError: function (text, error) {
  86. alert(error + text);
  87. }
  88. });
  89. r.send();
  90. }
  91. };
  92. layout.getIds = function () {
  93. var href = window.location.href;
  94. var qStr = href.substr(href.indexOf("?") + 1, href.length);
  95. var qDatas = qStr.split("&");
  96. var obj = {};
  97. qDatas.each(function (d) {
  98. var q = d.split("=");
  99. obj[q[0].toLowerCase()] = q[1];
  100. });
  101. return obj;
  102. };
  103. layout.loadDocument = function (options) {
  104. // this.action.viewDocument( options.id, function(document){
  105. o2.Actions.invokeAsync([
  106. { "action": this.action, "name": "getDocument" },
  107. { "action": this.action, "name": "listAttachment" }
  108. ], {
  109. "success": function (json_document, json_att) {
  110. if (this.mask) this.mask.hide();
  111. if (json_document) {
  112. if (json_att && typeOf(json_att.data) === "array") {
  113. json_document.data.attachmentList = json_att.data;
  114. } else {
  115. json_document.data.attachmentList = [];
  116. }
  117. this.parseData(json_document.data);
  118. if (!this.formId || this.formId === "") {
  119. this.notice(this.document.categoryName + this.lp.formNotSetted, "error");
  120. } else {
  121. this.loadForm(this.formId);
  122. }
  123. } else {
  124. this.notice(this.lp.documentGettedError + ":" + error.responseText, "error");
  125. this.close();
  126. }
  127. }.bind(this), "failure": function () {
  128. this.notice(this.lp.documentGettedError + ":" + error.responseText, "error");
  129. this.close();
  130. }.bind(this)
  131. }, options.id);
  132. //this.action.getDocument( options.id, function(document){
  133. // if (this.mask) this.mask.hide();
  134. // this.parseData(document.data);
  135. // if( !this.formId || this.formId==="" ){
  136. // this.notice( this.document.categoryName + this.lp.formNotSetted , "error");
  137. // }else{
  138. // this.loadForm( this.formId );
  139. // }
  140. //}.bind(this), null);
  141. };
  142. //layout.loadDocument = function(options){
  143. // this.action.getDocument( options.id, function(document){
  144. // if (this.mask) this.mask.hide();
  145. // this.parseData(document.data);
  146. // this.action.getCategory( this.document.categoryId, function( js ){
  147. // this.categoryData = js.data;
  148. // var formId = this.categoryData.formId || this.categoryData.readFormId;
  149. // if( this.readonly == true && this.categoryData.readFormId && this.categoryData.readFormId != "" ){
  150. // formId = this.categoryData.readFormId;
  151. // }
  152. // if( !formId || formId=="" ){
  153. // this.notice( this.document.categoryName + this.lp.formNotSetted , "error");
  154. // }else{
  155. // this.loadForm( formId );
  156. // }
  157. // }.bind(this))
  158. // }.bind(this), null);
  159. //};
  160. layout.loadForm = function (formId) {
  161. this.action.getForm(formId, function (json) {
  162. //if (this.mask) this.mask.hide();
  163. this.form = (json.data.mobileData) ? JSON.decode(MWF.decodeJsonString(json.data.mobileData)) : null;
  164. if (!this.form) {
  165. this.form = (json.data.data) ? JSON.decode(MWF.decodeJsonString(json.data.data)) : null;
  166. }
  167. //this.listAttachment();
  168. if (this.mask) this.mask.hide();
  169. // this.attachmentList = [];
  170. this.openDocument();
  171. }.bind(this), function (error) {
  172. if (this.mask) this.mask.hide();
  173. this.notice(this.lp.formGettedError + ":" + error.responseText, "error");
  174. //this.close();
  175. }.bind(this));
  176. };
  177. //layout.listAttachment = function(){
  178. // if( this.document.attachmentList && this.document.attachmentList.length > 0 ){
  179. // this.action.listAttachment(this.document.id, function( json ){
  180. // if (this.mask) this.mask.hide();
  181. // this.attachmentList = json.data;
  182. // this.attachmentList.each(function(att){
  183. // att.lastUpdateTime = att.updateTime;
  184. // att.person = att.creatorUid;
  185. // })
  186. // this.openDocument();
  187. // }.bind(this), function(error){
  188. // this.notice( this.lp.attachmentGettedError + ":" + error.responseText, "error");
  189. // this.close();
  190. // }.bind(this));
  191. // }else{
  192. // if (this.mask) this.mask.hide();
  193. // this.attachmentList = [];
  194. // this.openDocument();
  195. // }
  196. //},
  197. layout.errorDocument = function () {
  198. if (this.mask) this.mask.hide();
  199. this.node.set("text", "openError");
  200. };
  201. layout.parseData = function (data) {
  202. window.document.title = data.document.title;
  203. data.document.subject = data.document.title;
  204. this.data = data.data;
  205. this.document = data.document;
  206. this.attachmentList = data.attachmentList || [];
  207. this.attachmentList.each(function (att) {
  208. att.lastUpdateTime = att.updateTime;
  209. att.person = att.creatorUid;
  210. });
  211. //控制权限
  212. var isControl = false;
  213. if (data.isAppAdmin) {//应用管理员
  214. isControl = true;
  215. }
  216. if (data.isCategoryAdmin) {//分类管理员
  217. isControl = true;
  218. }
  219. if (data.isManager) {//管理员
  220. isControl = true;
  221. }
  222. if (data.isCreator) {//创建者
  223. isControl = true;
  224. }
  225. if (data.isEditor) { //编辑权限
  226. isControl = true;
  227. }
  228. if (this.options.readonly === false) {
  229. this.readonly = false;
  230. } else {
  231. this.readonly = true;
  232. if (this.document.docStatus === "draft") {
  233. this.readonly = false
  234. }
  235. }
  236. this.formId = this.document.form || this.document.readFormId;
  237. //当前模式 阅读还是编辑 移动端上使用
  238. var currentMode = "read";
  239. if (this.readonly === true && this.document.readFormId && this.document.readFormId !== "") {
  240. this.formId = this.document.readFormId; //阅读表单
  241. currentMode = "read";
  242. } else {
  243. this.formId = this.document.form;//编辑表单
  244. currentMode = "edit";
  245. }
  246. this.control = data.control || {
  247. "allowRead": true,
  248. "allowPublishDocument": isControl && this.document.docStatus === "draft",
  249. "allowSave": isControl && this.document.docStatus === "published",
  250. "allowPopularDocument": false,
  251. "allowEditDocument": isControl,
  252. "allowDeleteDocument": isControl,
  253. "allowArchiveDocument": false,
  254. "allowRedraftDocument": false,
  255. "currentMode": currentMode
  256. };
  257. };
  258. layout.openDocument = function () {
  259. if (this.form) {
  260. MWF.xDesktop.requireApp("cms.Xform", "Form", function () {
  261. this.appForm = new MWF.CMSForm(this.node, this.form, {
  262. "readonly": this.readonly,
  263. "autoSave": !this.readonly,
  264. "saveOnClose": false,
  265. "showAttachment": true,
  266. "onPostPublish": null
  267. });
  268. this.appForm.businessData = {
  269. "data": this.data,
  270. "document": this.document,
  271. "control": this.control,
  272. "attachmentList": this.attachmentList,
  273. "status": {
  274. //"readonly": (this.options.readonly) ? true : false
  275. "readonly": this.readonly
  276. },
  277. //work.job 图片编辑器控件 使用上传图片到云盘的关联id
  278. "work": {
  279. "referencetype": "cmsDocument",
  280. "job": this.document.id
  281. }
  282. };
  283. this.appForm.documentAction = this.action;
  284. this.appForm.app = this;
  285. this.appForm.load(function () {
  286. console.log('加载表单完成。。。。。。。。。。。。。');
  287. //告诉移动端表单加载完成
  288. if (window.o2android && window.o2android.cmsFormLoaded) {
  289. layout.appForm = this.appForm;
  290. window.o2android.cmsFormLoaded(JSON.stringify(this.control));
  291. }
  292. if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.cmsFormLoaded) {
  293. layout.appForm = this.appForm;
  294. window.webkit.messageHandlers.cmsFormLoaded.postMessage(JSON.stringify(this.control));
  295. }
  296. }.bind(this));
  297. }.bind(this));
  298. }
  299. };
  300. layout.isAuthentication = function () {
  301. layout.authentication = new MWF.xDesktop.Authentication({
  302. "onLogin": layout.load.bind(layout)
  303. });
  304. var returnValue = true;
  305. this.authentication.isAuthenticated(function (json) {
  306. this.user = json.data;
  307. layout.session.user = json.data;
  308. }.bind(this), function () {
  309. // if (layout.config.loginPage && layout.config.loginPage.enable && layout.config.loginPage.portal){
  310. // MWF.xDesktop.loadPortal(layout.config.loginPage.portal);
  311. // }else{
  312. // this.authentication.loadLogin(document.body);
  313. // }
  314. this.authentication.loadLogin(this.node);
  315. returnValue = false;
  316. }.bind(this));
  317. return returnValue;
  318. };
  319. //layout.getServiceAddress = function(callback){
  320. // var host = layout.config.center.host || window.location.hostname;
  321. // var port = layout.config.center.port;
  322. // var uri = "";
  323. // if (!port || port=="80"){
  324. // uri = "http://"+host+"/x_program_center/jaxrs/distribute/assemble/source/{source}";
  325. // }else{
  326. // uri = "http://"+host+":"+port+"/x_program_center/jaxrs/distribute/assemble/source/{source}";
  327. // }
  328. // var currenthost = window.location.hostname;
  329. // uri = uri.replace(/{source}/g, currenthost);
  330. // //var uri = "http://"+layout.config.center+"/x_program_center/jaxrs/distribute/assemble";
  331. // MWF.restful("get", uri, null, function(json){
  332. // this.serviceAddressList = json.data;
  333. // if (callback) callback();
  334. // }.bind(this));
  335. //};
  336. //layout.getServiceAddress = function(callback){
  337. // if (typeOf(layout.config.center)=="object"){
  338. // this.getServiceAddressConfigObject(callback);
  339. // }else if (typeOf(layout.config.center)=="array"){
  340. // this.getServiceAddressConfigArray(callback);
  341. // }
  342. //
  343. //};
  344. //layout.getServiceAddressConfigArray = function(callback) {
  345. // var requests = [];
  346. // layout.config.center.each(function(center){
  347. // requests.push(
  348. // this.getServiceAddressConfigObject(function(){
  349. // requests.each(function(res){
  350. // if (res.isRunning()){res.cancel();}
  351. // });
  352. // if (callback) callback();
  353. // }.bind(this), center)
  354. // );
  355. // }.bind(this));
  356. //};
  357. //layout.getServiceAddressConfigObject = function(callback, center){
  358. // var centerConfig = center;
  359. // if (!centerConfig) centerConfig = layout.config.center;
  360. // var host = centerConfig.host || window.location.hostname;
  361. // var port = centerConfig.port;
  362. // var uri = "";
  363. // if (!port || port=="80"){
  364. // uri = "http://"+host+"/x_program_center/jaxrs/distribute/assemble/source/{source}";
  365. // }else{
  366. // uri = "http://"+host+":"+port+"/x_program_center/jaxrs/distribute/assemble/source/{source}";
  367. // }
  368. // var currenthost = window.location.hostname;
  369. // uri = uri.replace(/{source}/g, currenthost);
  370. // //var uri = "http://"+layout.config.center+"/x_program_center/jaxrs/distribute/assemble";
  371. // return MWF.restful("get", uri, null, function(json){
  372. // this.serviceAddressList = json.data;
  373. // this.centerServer = center;
  374. // if (callback) callback();
  375. // }.bind(this));
  376. //};
  377. layout.confirm = function (type, e, title, text, width, height, ok, cancel, callback, mask, style) {
  378. MWF.require("MWF.xDesktop.Dialog", function () {
  379. var size = this.content.getSize();
  380. var x = 0;
  381. var y = 0;
  382. if (typeOf(e) == "element") {
  383. var position = e.getPosition(this.content);
  384. x = position.x;
  385. y = position.y;
  386. } else {
  387. if (Browser.name == "firefox") {
  388. x = parseFloat(e.event.clientX);
  389. y = parseFloat(e.event.clientY);
  390. } else {
  391. x = parseFloat(e.event.x);
  392. y = parseFloat(e.event.y);
  393. }
  394. // if (!x || !y){
  395. if (e.target) {
  396. var position = e.target.getPosition(this.content);
  397. x = position.x;
  398. y = position.y;
  399. }
  400. // }
  401. }
  402. if (x + parseFloat(width) > size.x) {
  403. x = x - parseFloat(width);
  404. }
  405. if (x < 0) x = 0;
  406. if (y + parseFloat(height) > size.y) {
  407. y = y - parseFloat(height);
  408. }
  409. if (y < 0) y = 0;
  410. var ctext = "";
  411. var chtml = "";
  412. if (typeOf(text).toLowerCase() == "object") {
  413. ctext = text.text;
  414. chtml = text.html;
  415. } else {
  416. ctext = text;
  417. }
  418. var dlg = new MWF.xDesktop.Dialog({
  419. "title": title,
  420. "style": style || "flat",
  421. "top": y,
  422. "left": x - 20,
  423. "fromTop": y,
  424. "fromLeft": x - 20,
  425. "width": width,
  426. "height": height,
  427. "text": ctext,
  428. "html": chtml,
  429. "container": this.content,
  430. "maskNode": mask,
  431. "buttonList": [
  432. {
  433. "text": MWF.LP.process.button.ok,
  434. "action": ok
  435. },
  436. {
  437. "text": MWF.LP.process.button.cancel,
  438. "action": cancel
  439. }
  440. ]
  441. });
  442. switch (type.toLowerCase()) {
  443. case "success":
  444. dlg.content.setStyle("background-image", "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB1hJREFUeNqsWGtsVEUUPnMf+y6rLcW2tDxUKARaikqgiWh8BlH8IwYkaozhh4nhB1FMTKkxQtQYQzRGE2JEfMRHYhQSVChgFYIGqLSUtoKUQmlp2b53u233de94zuzcZbfdbhdwkpPZmbl3zjffnHPuOcue/WgxZNnc3OT3cQ4rGIMlwNg8BjATGEwDDgHOeZdpQis3eKMR5Sd62kaO/PHp5QDub2ba9OtNTYnf2lQIcOO5igpr8eeT3kL9XneuCi6vAvYcFWxOBqrO6BlvZIx7w8PGwlG/uWZkwADNzo4//e7CfQMdYz/88t6F8/i+icB4Jl0sEzPIxEbsXiwotVd6C3TwTFezZRGCfQb4r0bhSnPo78io8dWP1ed24nRkPFNTMoMnnYNsbGYK2zR/pYsRGxJc1mDcuQqKHbwF2t3/Hh29a+3bC8oHOkM7UPk5UpGOpQQzFsINHyxahDaxdeYix/r8223AFLjpxpGL3rYIXDw5um+gc+ydwx9fqsPpKC0lP6eWr54hfjT+2gPP7Fg0R1HgreIyx/rpc2zxjfjNCzXXrSo4PMr8sWFecEuRo6mjMdBPdpQMJuWa6GoKF9jX55bo13UlE5jg8szobshyotG+RtT1OJrBAA43o/hRYhOYKVuVvxFtZPusCie7GUbQvcnmIBbh4noEoqR15zQV/N1GeXFZzvD5Y4P1ydclwJD7om1sn3uPs0S3x1++ESHlJgJB74FiXgkD4XZQLGr4NQtBh2DDvWa+3aOd7D4b7CGDFjcjr2dt3mxbpQNjB53sRsTA7YiN0IgBRWYlrJz2suhpTPO0bj1LegpKHWWFpZ6nUL0ngYOAUkBz34JAYjytEO1GJN5Pth4LmRAajkGxuQJWFb0CLpdL9DSmeVpPfp/0uXP1B2+b5y5A/cJbVLSVh9252uu5M/WM1BMYSLKBdFczS6mEx0peBbfbDU6nE1RVhdnOZdDj78AruyyvLP6+ZmMQDQMCYc3tp/xnKSAq9K2xuxmYBp8oeIJY2ITwSAxm8uWip7E43bj1ErYCHpsVB0KsOBwO0dOY5mdrlXhdSe+ikN6cPNtSeTsqgV2iOxRchFRBh4uGOSpCY8QTP5C/SfQ0pnkjmrq+es6WBBBN0wQrNpsNvF4vFBYWwgvL3ofFeY/EmZQ6SK/do5YiECeFGYW+vprGUu0AaY/iHYeDceqfmLtFKKGexjRP15K8ngxEUa6FbfpNwH5qfQua+w8lGCUhvbpDLZE2g8xgGkAhP4WRCJ3YhFk6KrozrignJ0f0NKb50LCRsp4OCJNu/X3LG3Cm92Dcm5LYJ71oO9MtMJrIRyguGzwRPelu5zoqYc28a4rodLqui2eexPk9/3DRTwXku6ZqaOo7KOw2bdqgMLf8EigaJUaxCHgT+yCY8hmPwrrFb4oNLbEUkGITj7iuoloozwTk28ZqONMzOZA4U3w07mLANMrQ0CO85GpWO+M7iKsMNlRsk2zxxP2TYo/HIwBZ43RAvmmohkZfzaRAqIlgGDH7rEChUaqIXrFQUVPfauiqEcifvWubUJAMiLwkLeUSyNenEMjVzECokTdGQman/FiaGuWs6DlrdNvENxs6DwCuw3PLtqcAygTkq5Nb4XT31EAEGIragVgrBTz6PmmUPBNdppH+hfrOGhEbnl8+OSALyJfHtwpGswFiXdNgV6jFAqPm3+7yOb36A5pdKaY906UF3f4LcNXfDhUlDyUUjwey+6+qOPAs0w8KH0NXI00nvu/aFQoaPnxtWKFyAhHui4Yw/0B20goyU3+5BnYfq0oASPYymqd1em7SPcYJ6fP7wn8OdYcp0RoRzFBiHPCFexRdqdR0VsRkzjpBiKGhC+BDhpbOfijBzOdHq+BU+4H4ic3sJIYRPtAbbWk+1Pv54JXQRdxmiExI+CTVNVROjI2YPGPeggrrLh2AXUeqBCvU09jk15f7kJ6+S6P7244PUT0VkDYTz/QoGf+ntr9h/srcIs2mLFVY5oyua7AVfIF2qGvbn5rFZSHESn9HaG/Nhxc/wxmylUErDxbMyBomQnVNcDC2Lyq9a1LB051o3T/hWzOV0L6D3eHalsN936K+PgkkYiWkyVWR+dsnl85RXRP0R3+OxbioEP4vof2GfOHac0f6v7h4cqhZghlNLldS6iZCiA/6qK7RnapLtSvlwCm43ES1QFdjco6s722q6d2NFcFp1NMjbSWWsdbGypIshj7POatfu+MlT55tnd2lljHOso1l18yIYYIeNFrIWGt3tv8o2SAZJu8h80iutRPMWE0aNFEXobqGygk0ar+iM5eqswIrqE0w3ASAeD8WjDX1d4ztIfet3+v7XRprL/0nQIxYtba8kan/hUDUikx8PJTFl96fdx/lrJQqUoZGiRHlI5QG0NeXPnr0raEQf7a2r04GtICU4FT/QmTDPJOGTqAcMnl2yrFNJkZWMIhJ7yAZk5E1JMfm+EI/naLraQRKlQBUKUoSGFNWh4YEZowv7jO1/wQYAIxJoZGb/Cz/AAAAAElFTkSuQmCC)");
  445. break;
  446. case "error":
  447. dlg.content.setStyle("background-image", "url(data:image/png;base64,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)");
  448. break;
  449. case "info":
  450. dlg.content.setStyle("background-image", "url(data:image/png;base64,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)");
  451. break;
  452. case "warn":
  453. dlg.content.setStyle("background-image", "url(data:image/png;base64,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)");
  454. break;
  455. default:
  456. //dlg.content.setStyle("background-image", "");
  457. }
  458. dlg.show();
  459. if (callback) callback(dlg);
  460. }.bind(this));
  461. };
  462. layout.notice = function (content, type, target, where, offset) {
  463. if (!where) where = { "x": "right", "y": "top" };
  464. if (!target) target = this.content;
  465. if (!type) type = "ok";
  466. var noticeTarget = target || $(document.body);
  467. var off = offset;
  468. if (!off) {
  469. off = {
  470. x: 10,
  471. y: where.y.toString().toLowerCase() == "bottom" ? 10 : 10
  472. };
  473. }
  474. new mBox.Notice({
  475. type: type,
  476. position: where,
  477. move: false,
  478. target: noticeTarget,
  479. delayClose: (type == "error") ? 10000 : 5000,
  480. offset: off,
  481. content: content
  482. });
  483. };
  484. layout.reload = function () {
  485. window.location.reload();
  486. };
  487. MWF.getJSON("res/config/config.json", function (config) {
  488. layout.config = config;
  489. MWF.xDesktop.getServiceAddress(layout.config, function (service, center) {
  490. layout.serviceAddressList = service;
  491. layout.centerServer = center;
  492. layout.load();
  493. }.bind(this));
  494. //layout.getServiceAddress(function(){
  495. // layout.load();
  496. //});
  497. });
  498. })();
  499. });
  500. });
  501. });