Main.js 20 KB

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