Main.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. MWF.xApplication.cms = MWF.xApplication.cms || {};
  2. MWF.CMSE = MWF.xApplication.cms.Module = MWF.xApplication.cms.Module ||{};
  3. MWF.require("MWF.widget.Identity", null,false);
  4. MWF.xDesktop.requireApp("cms.Module", "Actions.RestActions", null, false);
  5. MWF.xApplication.cms.Module.options = {
  6. multitask: false,
  7. executable: true
  8. }
  9. MWF.xApplication.cms.Module.Main = new Class({
  10. Extends: MWF.xApplication.Common.Main,
  11. Implements: [Options, Events],
  12. options: {
  13. "style": "default",
  14. "name": "cms.Module",
  15. "icon": "icon.png",
  16. "width": "1200",
  17. "height": "700",
  18. "isResize": false,
  19. "isMax": true,
  20. "isCategory" : false,
  21. "searchKey" : "",
  22. "title": MWF.xApplication.cms.Module.LP.title
  23. },
  24. onQueryLoad: function(){
  25. this.lp = MWF.xApplication.cms.Module.LP;
  26. },
  27. loadApplication: function(callback){
  28. this.controllers = [];
  29. this.isAdmin = false;
  30. this.restActions = new MWF.xApplication.cms.Module.Actions.RestActions();
  31. this.createNode();
  32. this.loadApplicationContent();
  33. },
  34. createNode: function(){
  35. this.content.setStyle("overflow", "hidden");
  36. this.node = new Element("div", {
  37. "styles": this.css.node
  38. }).inject(this.content);
  39. },
  40. loadApplicationContent: function(){
  41. if( this.options.columnData ){
  42. this.setTitle(this.options.columnData.appName);
  43. this.loadController(function(){
  44. this.loadTitle();
  45. this.loadMenu();
  46. }.bind(this))
  47. }else if( this.status && this.status.columnId ){
  48. this.loadColumnData( this.status.columnId, function(){
  49. this.loadController(function(){
  50. this.loadTitle();
  51. this.loadMenu();
  52. }.bind(this))
  53. }.bind(this))
  54. }
  55. },
  56. loadColumnData : function(columnId, callback){
  57. this.restActions.getColumn( {"id":columnId }, function( json ){
  58. this.options.columnData = json.data;
  59. this.setTitle(this.options.columnData.appName);
  60. if(callback)callback()
  61. }.bind(this))
  62. },
  63. loadController: function(callback){
  64. this.restActions.listColumnController(this.options.columnData.id, function( json ){
  65. json.data = json.data || [];
  66. json.data.each(function(item){
  67. this.controllers.push(item.adminUid)
  68. }.bind(this))
  69. this.isAdmin = MWF.AC.isAdministrator() || this.controllers.contains(layout.desktop.session.user.name);
  70. if(callback)callback(json);
  71. }.bind(this));
  72. },
  73. loadTitle : function(){
  74. this.loadTitleBar();
  75. this.loadCreateDocumentActionNode();
  76. this.loadTitleIconNode();
  77. this.loadTitleTextNode();
  78. this.loadRefreshNode();
  79. this.loadSearchNode();
  80. },
  81. loadTitleBar: function(){
  82. this.titleBar = new Element("div", {
  83. "styles": this.css.titleBar
  84. }).inject(this.node);
  85. },
  86. loadCreateDocumentActionNode: function() {
  87. this.createDocumentAction = new Element("div", {
  88. "styles": this.css.createDocumentAction
  89. }).inject(this.titleBar);
  90. this.createDocumentAction.addEvents({
  91. "click": function(e){
  92. if( this.creater ){
  93. this.creater.load();
  94. }else{
  95. MWF.xDesktop.requireApp("cms.Index", "Creater", function(){
  96. this.creater = new MWF.xApplication.cms.Index.Creater(this,this.options.columnData,this.view );
  97. this.creater.load();
  98. }.bind(this));
  99. }
  100. }.bind(this)
  101. });
  102. },
  103. loadTitleIconNode : function(){
  104. this.defaultColumnIcon = "/x_component_cms_Index/$Main/"+this.options.style+"/icon/column.png";
  105. var iconAreaNode = this.iconAreaNode = new Element("div",{
  106. "styles" : this.css.titleIconAreaNode
  107. }).inject(this.titleBar);
  108. var iconNode = this.iconNode = new Element("img",{
  109. "styles" : this.css.titleIconNode
  110. }).inject(iconAreaNode);
  111. if (this.options.columnData.appIcon){
  112. this.iconNode.set("src", "data:image/png;base64,"+this.options.columnData.appIcon+"");
  113. }else{
  114. this.iconNode.set("src", this.defaultColumnIcon)
  115. }
  116. iconNode.makeLnk({
  117. "par": this._getLnkPar()
  118. });
  119. },
  120. _getLnkPar: function(){
  121. var lnkIcon = this.defaultColumnIcon;
  122. if (this.options.columnData.appIcon) lnkIcon = "data:image/png;base64,"+this.options.columnData.appIcon;
  123. var appId = "cms.Module"+this.options.columnData.id;
  124. return {
  125. "icon": lnkIcon,
  126. "title": this.options.columnData.appName,
  127. "par": "cms.Module#{\"columnId\": \""+this.options.columnData.id+"\", \"appId\": \""+appId+"\"}"
  128. };
  129. },
  130. loadTitleTextNode: function(){
  131. this.titleTextNode = new Element("div", {
  132. "styles": this.css.titleTextNode,
  133. "text": this.options.columnData.appName
  134. }).inject(this.titleBar);
  135. },
  136. loadSearchNode: function(){
  137. this.searchBarAreaNode = new Element("div", {
  138. "styles": this.css.searchBarAreaNode
  139. }).inject(this.titleBar);
  140. this.searchBarNode = new Element("div", {
  141. "styles": this.css.searchBarNode
  142. }).inject(this.searchBarAreaNode);
  143. this.searchBarActionNode = new Element("div", {
  144. "styles": this.css.searchBarActionNode
  145. }).inject(this.searchBarNode);
  146. this.searchBarResetActionNode = new Element("div", {
  147. "styles": this.css.searchBarResetActionNode
  148. }).inject(this.searchBarNode);
  149. this.searchBarResetActionNode.setStyle("display","none");
  150. this.searchBarInputBoxNode = new Element("div", {
  151. "styles": this.css.searchBarInputBoxNode
  152. }).inject(this.searchBarNode);
  153. this.searchBarInputNode = new Element("input", {
  154. "type": "text",
  155. "value": this.options.searchKey!="" ? this.options.searchKey : this.lp.searchKey,
  156. "styles": this.css.searchBarInputNode
  157. }).inject(this.searchBarInputBoxNode);
  158. var _self = this;
  159. this.searchBarActionNode.addEvent("click", function(){
  160. this.search();
  161. }.bind(this));
  162. this.searchBarResetActionNode.addEvent("click", function(){
  163. this.reset();
  164. }.bind(this));
  165. this.searchBarInputNode.addEvents({
  166. "focus": function(){
  167. if (this.value==_self.lp.searchKey) this.set("value", "");
  168. },
  169. "blur": function(){if (!this.value) this.set("value", _self.lp.searchKey);},
  170. "keydown": function(e){
  171. if (e.code==13){
  172. this.search();
  173. e.preventDefault();
  174. }
  175. }.bind(this),
  176. "selectstart": function(e){
  177. e.preventDefault();
  178. }
  179. });
  180. },
  181. loadRefreshNode : function(){
  182. this.refreshAreaNode = new Element("div", {
  183. "styles": this.css.refreshAreaNode
  184. }).inject(this.titleBar);
  185. this.refreshActionNode = new Element("div", {
  186. "styles": this.css.refreshActionNode,
  187. "title" : this.lp.refresh
  188. }).inject(this.refreshAreaNode);
  189. this.refreshActionNode.addEvent("click", function(){
  190. this.reloadView();
  191. }.bind(this));
  192. },
  193. loadMenu: function(callback){
  194. this.naviContainerNode = new Element("div.naviContainerNode", {
  195. "styles": this.css.naviContainerNode
  196. }).inject(this.node);
  197. this.naviNode = new Element("div.naviNode", {
  198. "styles": this.css.naviNode
  199. }).inject(this.naviContainerNode);
  200. //this.setScrollBar(this.naviNode,{"where": "before"});
  201. MWF.require("MWF.widget.ScrollBar", function(){
  202. new MWF.widget.ScrollBar(this.naviContainerNode, {
  203. "style":"xApp_ProcessManager_StartMenu", "distance": 100, "friction": 4, "axis": {"x": false, "y": true}
  204. });
  205. }.bind(this));
  206. this.addEvent("resize", function(){this.setNaviSize();}.bind(this));
  207. //MWF.require("MWF.widget.ScrollBar", function(){
  208. // new MWF.widget.ScrollBar(this.menuNode, {
  209. // "style":"xApp_CMSModule_StartMenu", "distance": 100, "friction": 4, "axis": {"x": false, "y": true}
  210. // });
  211. //}.bind(this));
  212. if( this.status && this.status.categoryId ){
  213. this._loadMenu( this.status );
  214. }else if( this.options.categoryId && this.options.categoryId != "" ){
  215. if( this.options.viewId && this.options.viewId!="" ){
  216. this._loadMenu( { "categoryId" :this.options.categoryId , "viewId" : this.options.viewId } )
  217. }else{
  218. this.getCategoryDefaultView(this.options.categoryId , function(viewId){
  219. if( viewId ){
  220. this._loadMenu( { "categoryId" :this.options.categoryId , "viewId" : viewId, "isCategory" : this.options.isCategory } );
  221. }else{
  222. this._loadMenu( { "categoryId" :this.options.categoryId , "isCategory" : this.options.isCategory, "naviIndex" : (this.options.naviIndex || 0) } );
  223. }
  224. }.bind(this))
  225. }
  226. }else{
  227. this._loadMenu( { "categoryId" :"all" } )
  228. }
  229. },
  230. reloadView : function(){
  231. this.reset();
  232. },
  233. _loadMenu : function( options ){
  234. this.navi = new MWF.xApplication.cms.Module.Navi(this, this.naviNode, this.options.columnData, options );
  235. this.setNaviSize();
  236. },
  237. clearContent: function(){
  238. //debugger;
  239. if (this.moduleContent){
  240. if (this.view) delete this.view;
  241. this.moduleContent.destroy();
  242. this.moduleContent = null;
  243. }
  244. },
  245. openView : function(el, categoryData, viewData, searchKey, navi){
  246. if( (!searchKey || searchKey !="") && this.options.searchKey != "" ){
  247. searchKey = this.options.searchKey;
  248. //if(el)el.setStyles( this.css.viewNaviNode );
  249. //this.currentViewNaviNode = el;
  250. //if(navi)navi.currentViewNaviNode = null;
  251. this.options.searchKey = "";
  252. }
  253. MWF.xDesktop.requireApp("cms.Module", "ViewExplorer", function(){
  254. this.clearContent();
  255. this.moduleContent = new Element("div", {
  256. "styles": this.css.rightContentNode
  257. }).inject(this.node);
  258. if (!this.restActions) this.restActions = new MWF.xApplication.cms.Module.Actions.RestActions();
  259. this.view = new MWF.xApplication.cms.Module.ViewExplorer(
  260. this.moduleContent,
  261. this.restActions,
  262. this.options.columnData,
  263. categoryData,
  264. viewData,
  265. {"isAdmin": this.isAdmin, "searchKey" : searchKey }
  266. );
  267. this.view.app = this;
  268. this.view.load();
  269. if( !searchKey || searchKey=="" ){
  270. this.searchBarResetActionNode.setStyle("display","none");
  271. this.searchBarActionNode.setStyle("display","block");
  272. this.searchBarInputNode.set("value",this.lp.searchKey);
  273. }
  274. }.bind(this));
  275. },
  276. getCategoryDefaultView : function(categoryId, callback){
  277. MWF.UD.getDataJson("cms_defaultView_" + categoryId, function( data ){
  278. if(callback)callback( data ? data.id : null );
  279. }.bind(this))
  280. },
  281. setCategoryDefaultView : function(categoryId, viewId){
  282. MWF.UD.putData("cms_defaultView_" + categoryId , { "id":viewId }, function(){
  283. this.app.notice(this.app.lp.setDefaultSuccess, "success");
  284. }.bind(this))
  285. },
  286. search : function( key ){
  287. if(!key)key = this.searchBarInputNode.get("value");
  288. if(key==this.lp.searchKey)key="";
  289. if( key!="" ){
  290. this.searchBarResetActionNode.setStyle("display","block");
  291. this.searchBarActionNode.setStyle("display","none");
  292. }
  293. if(this.navi.currentViewNaviNode){
  294. //this.navi.currentViewNaviNode.setStyles( this.css.viewNaviNode );
  295. //this.currentViewNaviNode = this.navi.currentViewNaviNode
  296. var viewNaviNode = this.navi.currentViewNaviNode;
  297. //this.navi.currentViewNaviNode = null;
  298. var viewData = viewNaviNode.retrieve("viewData");
  299. var categoryId = viewNaviNode.retrieve("categoryId");
  300. if( viewData.content && typeof(viewData.content)=="string"){
  301. viewData.content = JSON.parse(viewData.content);
  302. }
  303. this.openView( viewNaviNode, this.navi.categorys[categoryId].data, viewData , key);
  304. }
  305. },
  306. reset : function(){
  307. this.searchBarInputNode.set("value",this.lp.searchKey);
  308. this.searchBarResetActionNode.setStyle("display","none");
  309. this.searchBarActionNode.setStyle("display","block");
  310. if(this.navi.currentViewNaviNode){
  311. var viewNaviNode = this.navi.currentViewNaviNode;
  312. }else{
  313. var viewNaviNode = this.navi.categorys.all.views.default.node;
  314. }
  315. this.navi.setCurrentViewNode( viewNaviNode );
  316. this.currentViewNaviNode = null;
  317. //var viewData = viewNaviNode.retrieve("viewData");
  318. //var categoryId = viewNaviNode.retrieve("categoryId");
  319. //if( viewData.content && typeof(viewData.content)=="string"){
  320. // viewData.content = JSON.parse(viewData.content);
  321. //}
  322. //this.openView( viewNaviNode, this.navi.categorys[categoryId].data, viewData )
  323. },
  324. recordStatus: function(){
  325. var viewNaviNode = this.navi.currentViewNaviNode;
  326. if( viewNaviNode ){
  327. var viewData = viewNaviNode.retrieve("viewData");
  328. var categoryId = viewNaviNode.retrieve("categoryId");
  329. var isCategory = viewNaviNode.retrieve("isCategory");
  330. if (categoryId){
  331. return {
  332. "columnId" : this.options.columnData.id,
  333. "categoryId" :categoryId,
  334. "isCategory" : isCategory,
  335. "viewId" : viewData.id ? viewData.id : "default"
  336. };
  337. }else{
  338. return { "columnId" : this.options.columnData.id }
  339. }
  340. }else{
  341. return { "columnId" : this.options.columnData.id }
  342. }
  343. },
  344. setNaviSize: function(){
  345. var titlebarSize = this.titleBar ? this.titleBar.getSize() : {"x":0,"y":0};
  346. var nodeSize = this.node.getSize();
  347. var pt = this.naviContainerNode.getStyle("padding-top").toFloat();
  348. var pb = this.naviContainerNode.getStyle("padding-bottom").toFloat();
  349. var height = nodeSize.y-pt-pb-titlebarSize.y;
  350. this.naviContainerNode.setStyle("height", ""+height+"px");
  351. }
  352. });
  353. MWF.xApplication.cms.Module.Navi = new Class({
  354. Implements: [Options, Events],
  355. options : {
  356. "categoryId" :"" ,
  357. "viewId" : "",
  358. "isCategory" : false,
  359. "navi" : -1,
  360. },
  361. initialize: function(app, node, columnData, options){
  362. this.setOptions(options);
  363. this.app = app;
  364. this.node = $(node);
  365. this.columnData = columnData;
  366. this.categorys = {};
  367. this.load();
  368. },
  369. load: function(){
  370. var self = this;
  371. this.loadAllDocNaviNode();
  372. new Element("div",{
  373. "styles" : this.app.css.viewNaviBottom
  374. }).inject(this.node);
  375. this.app.restActions.listCategory( this.columnData.id, function( json ){
  376. json.data.each(function(categroyData){
  377. var categoryNaviNode = new Element("div.categoryNaviNode", {
  378. "styles": this.app.css.categoryNaviNode,
  379. "text": categroyData.name
  380. }).inject(this.node);
  381. this.categorys[categroyData.id] = {};
  382. this.categorys[categroyData.id].data = categroyData;
  383. this.categorys[categroyData.id].node = categoryNaviNode;
  384. this.categorys[categroyData.id].views = {};
  385. categoryNaviNode.store( "categoryId" , categroyData.id );
  386. categoryNaviNode.store( "isCategory" , true );
  387. categoryNaviNode.addEvents({
  388. "mouseover": function(){ if (self.currentViewNaviNode!=this)this.setStyles(self.app.css.categoryNaviNode_over) },
  389. "mouseout": function(){ if (self.currentViewNaviNode!=this)this.setStyles( self.app.css.categoryNaviNode ) },
  390. click : function(){self.setCurrentViewNode(this);}
  391. });
  392. if( !categroyData.defaultViewName || categroyData.defaultViewName == "default" || categroyData.defaultViewName == ""){
  393. categoryNaviNode.store( "viewData" , {"isDefault":true} );
  394. if( this.options.categoryId == categroyData.id && this.options.isCategory ){
  395. this.setCurrentViewNode( categoryNaviNode );
  396. }
  397. }else{
  398. this.app.restActions.getView( categroyData.defaultViewName, function(json){
  399. categoryNaviNode.store( "viewData" , json.data );
  400. if( this.options.categoryId == categroyData.id && this.options.isCategory ){
  401. this.setCurrentViewNode( categoryNaviNode );
  402. }
  403. }.bind(this));
  404. }
  405. var viewNaviListNode = new Element("div.viewNaviListNode",{
  406. "styles" : this.app.css.viewNaviListNode
  407. }).inject(this.node);
  408. //this.app.restActions.listCategoryViewByCatagory( categroyData.id, function (data) {
  409. // var index = 0
  410. // for(var i=0;i<data.data.length;i++){
  411. // if(data.data[i].viewId == "default" ){
  412. // this.createViewNaviNode(viewNaviListNode, {"isDefault":true}, categroyData.id, index++ );
  413. // break;
  414. // }
  415. // }
  416. // this.app.restActions.listViewByCategory( categroyData.id, function (d) {
  417. // d.data.each(function(viewData ){
  418. // this.createViewNaviNode(viewNaviListNode, viewData, categroyData.id, index++ );
  419. // }.bind(this));
  420. // new Element("div", {
  421. // "styles": this.app.css.viewNaviSepartorNode
  422. // }).inject(viewNaviListNode);
  423. // }.bind(this));
  424. //}.bind(this))
  425. var index = 0;
  426. this.app.restActions.listViewByCategory( categroyData.id, function (d) {
  427. //this.createViewNaviNode(viewNaviListNode, {"isDefault":true}, categroyData.id, index++ );
  428. //this.createViewNaviNode(viewNaviListNode, {"isDefault":true}, categroyData.id, index++ );
  429. //this.createViewNaviNode(viewNaviListNode, {"isDefault":true}, categroyData.id, index++ );
  430. d.data.each(function(viewData ){
  431. this.createViewNaviNode(viewNaviListNode, viewData, categroyData.id, index++ );
  432. }.bind(this));
  433. new Element("div", {
  434. "styles": this.app.css.viewNaviSepartorNode
  435. }).inject(viewNaviListNode);
  436. }.bind(this));
  437. }.bind(this))
  438. this.fireEvent("postLoad");
  439. }.bind(this),function(){
  440. this.fireEvent("postLoad");
  441. }.bind(this), true)
  442. },
  443. loadAllDocNaviNode : function(){
  444. var _self = this;
  445. this.categorys.all = {}
  446. this.categorys.all.data = {"isAll":true}
  447. this.categorys.all.views = {};
  448. var viewNaviListNode = this.viewNaviListNode_all = new Element("div.viewNaviListNode_all",{
  449. "styles" : this.app.css.viewNaviListNode_all
  450. }).inject(this.node);
  451. var viewNaviNode = this.viewNaviNode_all = new Element("div.viewNaviNode_all", {
  452. "styles": this.app.css.viewNaviNode_all,
  453. "text" : this.app.lp.allDocument //+ this.columnData.appName
  454. }).inject(viewNaviListNode);
  455. var viewData = {
  456. "isDefault" : true,
  457. "isAll" : true
  458. }
  459. viewNaviNode.store("isAll",true);
  460. viewNaviNode.store("viewData",viewData);
  461. viewNaviNode.store("categoryId","all");
  462. var view = this.categorys.all.views.default = {};
  463. view.data = viewData;
  464. view.node = viewNaviNode;
  465. viewNaviNode.addEvents({
  466. "mouseover": function(){ if (_self.currentViewNaviNode!=this)this.setStyles(_self.app.css.viewNaviNode_all_over) },
  467. "mouseout": function(){ if (_self.currentViewNaviNode!=this)this.setStyles( _self.app.css.viewNaviNode_all ) },
  468. "click": function (el) {
  469. _self.setCurrentViewNode(this);
  470. }
  471. })
  472. new Element("div", {
  473. "styles": this.app.css.viewNaviSepartorNode
  474. }).inject(viewNaviListNode);
  475. if( this.options.categoryId == "all" ){
  476. this.setCurrentViewNode(viewNaviNode)
  477. }
  478. },
  479. createViewNaviNode : function(viewNaviListNode, viewData, categoryId,index){
  480. var _self = this;
  481. var viewNaviNode = new Element("div.viewNaviNode", {
  482. "styles": this.app.css.viewNaviNode,
  483. "text" : viewData.isDefault ? this.app.lp.defaultView : viewData.name
  484. }).inject(viewNaviListNode);
  485. viewNaviNode.store("viewData",viewData);
  486. viewNaviNode.store("categoryId",categoryId);
  487. var key = viewData.isDefault ? "default" : viewData.id;
  488. var view = this.categorys[categoryId].views[ key ] = {};
  489. view.data = viewData;
  490. view.node = viewNaviNode;
  491. viewNaviNode.addEvents({
  492. "mouseover": function(){ if (_self.currentViewNaviNode!=this)this.setStyles(_self.app.css.viewNaviNode_over) },
  493. "mouseout": function(){ if (_self.currentViewNaviNode!=this)this.setStyles( _self.app.css.viewNaviNode ) },
  494. "click": function (el) {
  495. _self.setCurrentViewNode(this);
  496. }
  497. })
  498. if( this.options.categoryId == categoryId && !this.options.isCategory ){
  499. if( this.options.viewId == "default" && viewData.isDefault ){
  500. this.setCurrentViewNode(viewNaviNode);
  501. }else if( this.options.viewId == viewData.id ){
  502. this.setCurrentViewNode(viewNaviNode);
  503. }else if( this.options.naviIndex == index ){
  504. this.setCurrentViewNode(viewNaviNode);
  505. }
  506. }
  507. },
  508. setCurrentViewNode : function( viewNaviNode ){
  509. if(this.currentViewNaviNode){
  510. if( this.currentViewNaviNode.retrieve("isAll") ){
  511. this.currentViewNaviNode.setStyles( this.app.css.viewNaviNode_all );
  512. }else if( this.currentViewNaviNode.retrieve("isCategory") ){
  513. this.currentViewNaviNode.setStyles( this.app.css.categoryNaviNode );
  514. }else{
  515. this.currentViewNaviNode.setStyles( this.app.css.viewNaviNode );
  516. }
  517. }
  518. if( viewNaviNode.retrieve("isAll") ){
  519. viewNaviNode.setStyles( this.app.css.viewNaviNode_all_selected );
  520. }else if( viewNaviNode.retrieve("isCategory") ){
  521. viewNaviNode.setStyles( this.app.css.categoryNaviNode_selected );
  522. }else{
  523. viewNaviNode.setStyles( this.app.css.viewNaviNode_selected );
  524. }
  525. this.currentViewNaviNode = viewNaviNode;
  526. var viewData = viewNaviNode.retrieve("viewData");
  527. var categoryId = viewNaviNode.retrieve("categoryId");
  528. if( viewData.content && typeof(viewData.content)=="string"){
  529. viewData.content = JSON.parse(viewData.content);
  530. }
  531. this.app.openView( viewNaviNode, this.categorys[categoryId].data, viewData, "", this );
  532. }
  533. })