Main.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787
  1. MWF.xApplication.cms = MWF.xApplication.cms || {};
  2. MWF.CMSE = MWF.xApplication.cms.Module = MWF.xApplication.cms.Module ||{};
  3. MWF.require("MWF.widget.O2Identity", 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": true,
  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 = MWF.Actions.get("x_cms_assemble_control"); //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. this.naviContainerNode = new Element("div.naviContainerNode", {
  40. "styles": this.css.naviContainerNode
  41. }).inject(this.node);
  42. this.leftTitleNode = new Element("div.leftTitleNode", {
  43. "styles": this.css.leftTitleNode
  44. }).inject(this.naviContainerNode);
  45. this.rightContentNode = new Element("div", {
  46. "styles":this.css.rightContentNode
  47. }).inject(this.node);
  48. this.titleBar = new Element("div", {
  49. "styles": this.css.titleBar
  50. }).inject(this.rightContentNode );
  51. },
  52. loadApplicationContent: function(){
  53. if( this.options.columnData ){
  54. this.setTitle(this.options.columnData.appName);
  55. this.loadController(function(){
  56. this.loadTitle(function(){
  57. this.loadMenu();
  58. }.bind(this));
  59. }.bind(this))
  60. }else if( (this.status && this.status.columnId) || this.options.columnId ){
  61. var columnId = this.options.columnId || this.status.columnId;
  62. this.loadColumnData( columnId, function(){
  63. this.loadController(function(){
  64. this.loadTitle(function(){
  65. this.loadMenu();
  66. }.bind(this));
  67. }.bind(this))
  68. }.bind(this))
  69. }else if( this.options.columnAlias ){
  70. this.restActions.getColumnByAlias( this.options.columnAlias, function( json ){
  71. this.options.columnData = json.data;
  72. this.setTitle(this.options.columnData.appName);
  73. this.loadController(function(){
  74. this.loadTitle(function(){
  75. this.loadMenu();
  76. }.bind(this));
  77. }.bind(this))
  78. }.bind(this))
  79. }
  80. },
  81. loadColumnData : function(columnId, callback){
  82. this.restActions.getColumn( columnId, function( json ){
  83. this.options.columnData = json.data;
  84. this.setTitle(this.options.columnData.appName);
  85. if(callback)callback()
  86. }.bind(this))
  87. },
  88. loadController: function(callback){
  89. //this.restActions.listColumnController(this.options.columnData.id, function( json ){
  90. // json.data = json.data || [];
  91. // json.data.each(function(item){
  92. // this.controllers.push(item.adminUid)
  93. // }.bind(this));
  94. // this.isAdmin = MWF.AC.isCMSManager() || this.controllers.contains(layout.desktop.session.user.distinguishedName);
  95. // if(callback)callback(json);
  96. //}.bind(this));
  97. this.restActions.isAppInfoManager( this.options.columnData.id, function( json ){
  98. this.isAdmin = MWF.AC.isCMSManager() || json.data.value;
  99. if(callback)callback(json);
  100. }.bind(this))
  101. },
  102. loadTitle : function(callback){
  103. if( this.isAdmin ){
  104. this.loadImportActionNode();
  105. this.loadExportActionNode();
  106. }
  107. this.loadCreateDocumentActionNode(
  108. function(){
  109. this.loadTitleIconNode();
  110. this.loadTitleContentNode();
  111. this.loadSearchNode();
  112. if(callback)callback();
  113. }.bind(this)
  114. );
  115. },
  116. loadCreateDocumentActionNode: function( callback ) {
  117. this.restActions.listCategoryByPublisher( this.options.columnData.id, function( json ){
  118. if( json.data && json.data.length ){
  119. this.createDocumentAction = new Element("div", {
  120. "styles": this.css.createDocumentAction,
  121. "text" : this.lp.start
  122. }).inject(this.titleBar);
  123. this.createDocumentAction.addEvents({
  124. "click": function(e){
  125. MWF.xDesktop.requireApp("cms.Index", "Newer", null, false);
  126. this.creater = new MWF.xApplication.cms.Index.Newer( this.options.columnData, null, this, this.view, {
  127. restrictToColumn : true
  128. });
  129. this.creater.load();
  130. }.bind(this),
  131. "mouseover" : function(e){
  132. this.createDocumentAction.setStyles( this.css.createDocumentAction_over )
  133. }.bind(this),
  134. "mouseout" : function(e){
  135. this.createDocumentAction.setStyles( this.css.createDocumentAction )
  136. }.bind(this)
  137. });
  138. }
  139. if(callback)callback();
  140. }.bind(this));
  141. },
  142. loadImportActionNode : function(){
  143. this.importAction = new Element("div", {
  144. "styles": this.css.importAction,
  145. "text" : this.lp.import
  146. }).inject(this.titleBar);
  147. this.importAction.setStyle("display","none");
  148. this.importAction.addEvents({
  149. "click": function(e){
  150. MWF.xDesktop.requireApp("cms.Module", "ExcelForm", null, false);
  151. var categoryData = this.navi.currentObject.isCategory ? this.navi.currentObject.data : this.navi.currentObject.category.data ;
  152. this.import = new MWF.xApplication.cms.Module.ImportForm( { app : this }, categoryData, {} );
  153. this.import.edit();
  154. }.bind(this),
  155. "mouseover" : function(e){
  156. this.importAction.setStyles( this.css.importAction_over )
  157. }.bind(this),
  158. "mouseout" : function(e){
  159. this.importAction.setStyles( this.css.importAction )
  160. }.bind(this)
  161. });
  162. },
  163. loadExportActionNode : function(){
  164. this.exportAction = new Element("div", {
  165. "styles": this.css.exportAction,
  166. "text" : this.lp.export
  167. }).inject(this.titleBar);
  168. this.exportAction.setStyle("display","none");
  169. this.exportAction.addEvents({
  170. "click": function(e){
  171. MWF.xDesktop.requireApp("cms.Module", "ExcelForm", null, false);
  172. var categoryData = this.navi.currentObject.isCategory ? this.navi.currentObject.data : this.navi.currentObject.category.data ;
  173. this.export = new MWF.xApplication.cms.Module.ExportForm ( { app : this }, categoryData, {} );
  174. this.export.edit();
  175. }.bind(this),
  176. "mouseover" : function(e){
  177. this.exportAction.setStyles( this.css.exportAction_over )
  178. }.bind(this),
  179. "mouseout" : function(e){
  180. this.exportAction.setStyles( this.css.exportAction )
  181. }.bind(this)
  182. });
  183. },
  184. loadTitleIconNode : function(){
  185. this.defaultColumnIcon = "/x_component_cms_Index/$Main/"+this.options.style+"/icon/column.png";
  186. var iconAreaNode = this.iconAreaNode = new Element("div",{
  187. "styles" : this.css.titleIconAreaNode
  188. }).inject(this.leftTitleNode);
  189. var iconNode = this.iconNode = new Element("img",{
  190. "styles" : this.css.titleIconNode
  191. }).inject(iconAreaNode);
  192. if (this.options.columnData.appIcon){
  193. this.iconNode.set("src", "data:image/png;base64,"+this.options.columnData.appIcon+"");
  194. }else{
  195. this.iconNode.set("src", this.defaultColumnIcon)
  196. }
  197. iconNode.makeLnk({
  198. "par": this._getLnkPar()
  199. });
  200. },
  201. _getLnkPar: function(){
  202. var lnkIcon = this.defaultColumnIcon;
  203. if (this.options.columnData.appIcon) lnkIcon = "data:image/png;base64,"+this.options.columnData.appIcon;
  204. var appId = "cms.Module"+this.options.columnData.id;
  205. return {
  206. "icon": lnkIcon,
  207. "title": this.options.columnData.appName,
  208. "par": "cms.Module#{\"columnId\": \""+this.options.columnData.id+"\", \"appId\": \""+appId+"\"}"
  209. };
  210. },
  211. loadTitleContentNode: function(){
  212. this.titleContentNode = new Element("div.titleContentNode", {
  213. "styles": this.css.titleContentNode
  214. }).inject(this.leftTitleNode);
  215. this.titleTextNode = new Element("div.titleTextNode", {
  216. "styles": this.css.titleTextNode,
  217. "text": this.options.columnData.appName,
  218. "title": this.options.columnData.appName
  219. }).inject(this.titleContentNode);
  220. this.titleDescriptionNode = new Element("div.titleDescriptionNode", {
  221. "styles": this.css.titleDescriptionNode,
  222. "text": this.options.columnData.description ? this.options.columnData.description : this.lp.noDescription,
  223. "title": this.options.columnData.description ? this.options.columnData.description : this.lp.noDescription
  224. }).inject(this.titleContentNode);
  225. },
  226. loadSearchNode : function(){
  227. this.searchNode = new Element("div").inject( this.titleBar );
  228. },
  229. loadMenu: function(callback){
  230. this.naviNode = new Element("div.naviNode", {
  231. "styles": this.css.naviNode
  232. }).inject(this.naviContainerNode);
  233. //this.setScrollBar(this.naviNode,{"where": "before"});
  234. MWF.require("MWF.widget.ScrollBar", function(){
  235. new MWF.widget.ScrollBar(this.naviContainerNode, {
  236. "style":"xApp_ProcessManager_StartMenu", "distance": 100, "friction": 4, "axis": {"x": false, "y": true}
  237. });
  238. }.bind(this));
  239. this.addEvent("resize", function(){this.setNaviSize();}.bind(this));
  240. //MWF.require("MWF.widget.ScrollBar", function(){
  241. // new MWF.widget.ScrollBar(this.menuNode, {
  242. // "style":"xApp_CMSModule_StartMenu", "distance": 100, "friction": 4, "axis": {"x": false, "y": true}
  243. // });
  244. //}.bind(this));
  245. if( this.options.categoryId == "all" ){
  246. this.options.categoryId = "whole";
  247. }
  248. if( this.status && this.status.categoryId ){
  249. this._loadMenu( this.status );
  250. }else if( this.options.categoryId && this.options.categoryId != "" ){
  251. if( this.options.viewId && this.options.viewId!="" ){
  252. this._loadMenu( { "categoryId" :this.options.categoryId , "viewId" : this.options.viewId } )
  253. }else{
  254. //this.getCategoryDefaultList(this.options.categoryId , function(viewId){
  255. // if( viewId ){
  256. // this._loadMenu( { "categoryId" :this.options.categoryId , "viewId" : viewId, "isCategory" : this.options.isCategory } );
  257. // }else{
  258. // this._loadMenu( { "categoryId" :this.options.categoryId , "isCategory" : this.options.isCategory, "naviIndex" : (this.options.naviIndex || 0) } );
  259. // }
  260. //}.bind(this))
  261. this._loadMenu( { "categoryId" :this.options.categoryId , "isCategory" : this.options.isCategory, "naviIndex" : (this.options.naviIndex || 0) } );
  262. }
  263. }else if( this.options.categoryAlias && this.options.categoryAlias != "" ){
  264. this.restActions.getCategoryByAlias( this.options.categoryAlias, function( json ){
  265. this.options.categoryId = json.data.id;
  266. if( this.options.viewId && this.options.viewId!="" ){
  267. this._loadMenu( { "categoryId" :this.options.categoryId , "viewId" : this.options.viewId } )
  268. }else{
  269. this._loadMenu( { "categoryId" :this.options.categoryId , "isCategory" : this.options.isCategory, "naviIndex" : (this.options.naviIndex || 0) } );
  270. }
  271. }.bind(this))
  272. }else{
  273. this._loadMenu( { "categoryId" :"whole" } )
  274. }
  275. },
  276. _loadMenu : function( options ){
  277. this.navi = new MWF.xApplication.cms.Module.Navi(this, this.naviNode, this.options.columnData, options );
  278. this.setNaviSize();
  279. },
  280. clearContent: function(){
  281. //debugger;
  282. if (this.moduleContent){
  283. if (this.view) delete this.view;
  284. this.moduleContent.destroy();
  285. this.searchNode.empty();
  286. this.moduleContent = null;
  287. }
  288. },
  289. openView : function(el, categoryData, revealData, searchKey, navi){
  290. if( revealData && revealData.type == "queryview" ){
  291. this.loadQueryView(el, categoryData, revealData, searchKey, navi);
  292. }else{
  293. this.loadList(el, categoryData, revealData, searchKey, navi);
  294. }
  295. },
  296. loadQueryView : function(el, categoryData, revealData, searchKey, navi){
  297. MWF.xDesktop.requireApp("cms.Module", "ViewExplorer", function(){
  298. this.clearContent();
  299. this.moduleContent = new Element("div", {
  300. "styles": this.css.moduleContent
  301. }).inject(this.rightContentNode);
  302. this.view = new MWF.xApplication.cms.Module.ViewExplorer(
  303. this.moduleContent,
  304. this,
  305. this.options.columnData,
  306. categoryData,
  307. revealData,
  308. {"isAdmin": this.isAdmin, "searchKey" : searchKey },
  309. this.searchNode
  310. );
  311. this.view.load();
  312. }.bind(this))
  313. },
  314. loadList : function(el, categoryData, revealData, searchKey, navi){
  315. MWF.xDesktop.requireApp("cms.Module", "ListExplorer", function(){
  316. this.clearContent();
  317. this.moduleContent = new Element("div", {
  318. "styles": this.css.moduleContent
  319. }).inject(this.rightContentNode);
  320. if (!this.restActions) this.restActions = MWF.Actions.get("x_cms_assemble_control"); //new MWF.xApplication.cms.Module.Actions.RestActions();
  321. this.view = new MWF.xApplication.cms.Module.ListExplorer(
  322. this.moduleContent,
  323. this.restActions,
  324. this.options.columnData,
  325. categoryData,
  326. revealData,
  327. {"isAdmin": this.isAdmin, "searchKey" : searchKey },
  328. this.searchNode
  329. );
  330. this.view.app = this;
  331. this.view.load();
  332. }.bind(this));
  333. },
  334. recordStatus: function(){
  335. var currentObject = this.navi.currentObject;
  336. if( currentObject ){
  337. var categoryId = currentObject.getCategoryId();
  338. if (categoryId){
  339. return {
  340. "columnId" : this.options.columnData.id,
  341. "categoryId" :categoryId,
  342. "isCategory" : currentObject.isCategory,
  343. "viewId" : currentObject.data.id
  344. };
  345. }else{
  346. return { "columnId" : this.options.columnData.id , "categoryId" : "whole"}
  347. }
  348. }else{
  349. return { "columnId" : this.options.columnData.id , "categoryId" : "whole" }
  350. }
  351. },
  352. setNaviSize: function(){
  353. //var titlebarSize = this.titleBar ? this.titleBar.getSize() : {"x":0,"y":0};
  354. var nodeSize = this.node.getSize();
  355. //var pt = this.naviContainerNode.getStyle("padding-top").toFloat();
  356. //var pb = this.naviContainerNode.getStyle("padding-bottom").toFloat();
  357. //var height = nodeSize.y-pt-pb-titlebarSize.y;
  358. this.naviContainerNode.setStyle("height", ""+nodeSize.y+"px");
  359. }
  360. });
  361. MWF.xApplication.cms.Module.Navi = new Class({
  362. Implements: [Options, Events],
  363. options : {
  364. "categoryId" :"" ,
  365. "viewId" : "",
  366. "isCategory" : false,
  367. "navi" : -1
  368. },
  369. initialize: function(app, node, columnData, options){
  370. this.setOptions(options);
  371. this.app = app;
  372. this.node = $(node);
  373. this.columnData = columnData;
  374. this.categoryList = [];
  375. this.css = this.app.css;
  376. this.load();
  377. },
  378. load: function(){
  379. var self = this;
  380. this.allView = new MWF.xApplication.cms.Module.NaviAllView( this, this.node, {} );
  381. new Element("div",{
  382. "styles" : this.css.viewNaviBottom
  383. }).inject(this.node);
  384. this.app.restActions.listCategory( this.columnData.id, function( json ) {
  385. json.data.each(function (d) {
  386. var isCurrent = false;
  387. var category = new MWF.xApplication.cms.Module.NaviCategory(this, this.node,d, {} );
  388. this.categoryList.push( category );
  389. this.fireEvent("postLoad");
  390. }.bind(this))
  391. }.bind(this))
  392. }
  393. });
  394. MWF.xApplication.cms.Module.NaviCategory = new Class({
  395. Implements: [Options, Events],
  396. options: {
  397. "style": "default"
  398. },
  399. initialize: function ( navi, container, data, options) {
  400. this.setOptions(options);
  401. this.navi = navi;
  402. this.app = navi.app;
  403. this.container = $(container);
  404. this.data = data;
  405. this.css = this.app.css;
  406. this.load();
  407. },
  408. load: function () {
  409. var _self = this;
  410. this.isCategory = true;
  411. this.isCurrent = false;
  412. this.isExpended = false;
  413. this.hasSub = false;
  414. this.naviViewList = [];
  415. if( this.navi.options.categoryId == this.data.id && this.navi.options.isCategory ){
  416. this.isCurrent = true;
  417. }
  418. this.reveal = this.getRevealData();
  419. this.node = new Element("div.categoryNaviNode", {
  420. "styles": this.css.categoryNaviNode
  421. }).inject(this.container);
  422. this.expendNode = new Element("div.expendNode").inject(this.node);
  423. this.setExpendNodeStyle();
  424. if( this.hasSub ){
  425. this.expendNode.addEvent( "click" , function(ev){
  426. this.triggerExpend();
  427. ev.stopPropagation();
  428. }.bind(this));
  429. }
  430. this.textNode = new Element("div.categoryNaviTextNode",{
  431. "styles": this.css.categoryNaviTextNode,
  432. "text": this.data.name //this.defaultRevealData.id == "defaultList" ? this.data.name : this.defaultRevealData.showName
  433. }).inject(this.node);
  434. this.node.addEvents({
  435. "mouseover": function(){ if ( !_self.isCurrent )this.setStyles(_self.app.css.categoryNaviNode_over) },
  436. "mouseout": function(){ if ( !_self.isCurrent )this.setStyles( _self.app.css.categoryNaviNode ) },
  437. click : function(){ _self.setCurrent(this);}
  438. });
  439. this.listNode = new Element("div.viewNaviListNode",{
  440. "styles" : this.css.viewNaviListNode
  441. }).inject(this.container);
  442. this.loadListContent();
  443. if( this.isCurrent ){
  444. this.setCurrent();
  445. }
  446. },
  447. getRevealData: function(){
  448. var j = this.data.extContent;
  449. if( j ){
  450. this.extContent = JSON.parse( j );
  451. }
  452. if( !this.extContent || !this.extContent.reveal || this.extContent.reveal.length == 0 ){ //兼容以前的设置
  453. this.extContent = { reveal : [] };
  454. this.app.restActions.listViewByCategory( this.data.id, function(json){
  455. ( json.data || [] ).each( function(d){
  456. var itemData = {
  457. "type" : "list",
  458. "name" : d.name,
  459. "showName" : d.name,
  460. "id" : d.id,
  461. "alias" : d.alias,
  462. "appId" : d.appId,
  463. "formId" : d.formId,
  464. "formName" : d.formName
  465. };
  466. this.extContent.reveal.push( itemData );
  467. }.bind(this));
  468. }.bind(this), null, false );
  469. }
  470. this.extContent.reveal.each( function( r ){
  471. if(this.data.defaultViewName && r.id == this.data.defaultViewName ){
  472. this.defaultRevealData = r;
  473. }else{
  474. this.isExpended = true;
  475. this.hasSub = true;
  476. }
  477. }.bind(this));
  478. if( !this.extContent || !this.extContent.reveal || this.extContent.reveal.length == 0 ){
  479. this.extContent = { reveal : [{
  480. id : "defaultList",
  481. showName : "系统列表",
  482. name : "系统列表"
  483. }] };
  484. }
  485. this.revealData = this.extContent.reveal;
  486. if( !this.defaultRevealData ){
  487. this.defaultRevealData = {
  488. id : "defaultList",
  489. showName : "系统列表",
  490. name : "系统列表"
  491. }
  492. }
  493. },
  494. setExpendNodeStyle : function(){
  495. var style;
  496. if( this.hasSub ){
  497. if( this.isExpended ){
  498. if( this.isCurrent ){
  499. style = this.css.categoryExpendNode_selected;
  500. }else{
  501. style = this.css.categoryExpendNode;
  502. }
  503. }else{
  504. if( this.isCurrent ){
  505. style = this.css.categoryCollapseNode_selected;
  506. }else{
  507. style = this.css.categoryCollapseNode;
  508. }
  509. }
  510. }else{
  511. style = this.css.emptyExpendNode;
  512. }
  513. this.expendNode.setStyles( style );
  514. },
  515. triggerExpend : function(){
  516. if( this.hasSub ){
  517. if( this.isExpended ){
  518. this.isExpended = false;
  519. this.listNode.setStyle("display","none")
  520. }else{
  521. this.isExpended = true;
  522. this.listNode.setStyle("display","")
  523. }
  524. this.setExpendNodeStyle();
  525. }
  526. },
  527. setCurrent : function(){
  528. if( this.navi.currentObject ){
  529. this.navi.currentObject.cancelCurrent();
  530. }
  531. this.node.setStyles( this.css.categoryNaviNode_selected );
  532. if( this.hasSub ){
  533. if( this.isExpended ){
  534. this.expendNode.setStyles( this.css.categoryExpendNode_selected );
  535. }else{
  536. this.expendNode.setStyles( this.css.categoryCollapseNode_selected );
  537. }
  538. }
  539. this.isCurrent = true;
  540. this.navi.currentObject = this;
  541. var action = this.app.importAction;
  542. if( action ){
  543. action.setStyle("display", (this.data.importViewId && this.app.isAdmin) ? "" : "none");
  544. }
  545. action = this.app.exportAction;
  546. if( action ){
  547. action.setStyle("display", (this.data.importViewId && this.app.isAdmin) ? "" : "none");
  548. }
  549. this.loadView();
  550. },
  551. cancelCurrent : function(){
  552. this.isCurrent = false;
  553. this.node.setStyles( this.css.categoryNaviNode );
  554. if( this.hasSub ){
  555. if( this.isExpended ){
  556. this.expendNode.setStyles( this.css.categoryExpendNode );
  557. }else{
  558. this.expendNode.setStyles( this.css.categoryCollapseNode );
  559. }
  560. }
  561. },
  562. loadView: function( searchkey ){
  563. this.app.openView( this, this.data, this.viewData || this.defaultRevealData, searchkey || "", this );
  564. },
  565. loadListContent : function(){
  566. this.revealData.each( function( d , i){
  567. if( d.id != this.defaultRevealData.id ){
  568. var naviView = new MWF.xApplication.cms.Module.NaviView(this.navi, this, this.listNode, d, {
  569. "style": this.options.style,
  570. "index" : i
  571. });
  572. this.naviViewList.push( naviView );
  573. }
  574. }.bind(this));
  575. new Element("div", {
  576. "styles": this.css.viewNaviSepartorNode
  577. }).inject( this.listNode );
  578. },
  579. getCategoryId : function(){
  580. return this.data.id;
  581. }
  582. });
  583. MWF.xApplication.cms.Module.NaviView = new Class({
  584. Implements: [Options, Events],
  585. options: {
  586. "style": "default",
  587. "index" : 0
  588. },
  589. initialize: function ( navi, category, container, data, options) {
  590. this.setOptions(options);
  591. this.navi = navi;
  592. this.category = category;
  593. this.app = navi.app;
  594. this.data = data;
  595. this.container = $(container);
  596. this.css = this.app.css;
  597. this.load();
  598. },
  599. load: function(){
  600. this.isDefault = this.data.id == "defaultList";
  601. this.isCurrent = false;
  602. this.isCategory = false;
  603. if( this.navi.options.categoryId == this.category.data.id && !this.navi.options.isCategory ){
  604. if( this.navi.options.viewId == "defaultList" && this.isDefault ){
  605. this.isCurrent = true;
  606. }else if( this.navi.options.viewId == this.data.id ){
  607. this.isCurrent = true;
  608. }else if( this.navi.options.naviIndex == this.options.index ){
  609. this.isCurrent = true;
  610. }
  611. }
  612. var _self = this;
  613. this.node = new Element("div.viewNaviNode", {
  614. "styles": this.css.viewNaviNode,
  615. "text" : this.isDefault ? this.app.lp.defaultView : this.data.showName
  616. }).inject(this.container);
  617. this.node.addEvents({
  618. "mouseover": function(){ if (!_self.isCurrent)this.setStyles(_self.css.viewNaviNode_over) },
  619. "mouseout": function(){ if (!_self.isCurrent)this.setStyles( _self.css.viewNaviNode ) },
  620. "click": function (el) {
  621. _self.setCurrent();
  622. }
  623. });
  624. if( this.isCurrent ){
  625. this.setCurrent()
  626. }
  627. },
  628. setCurrent : function(){
  629. if( this.navi.currentObject ){
  630. this.navi.currentObject.cancelCurrent();
  631. }
  632. this.node.setStyles( this.css.viewNaviNode_selected );
  633. this.isCurrent = true;
  634. this.navi.currentObject = this;
  635. var action = this.app.importAction;
  636. if( action ){
  637. action.setStyle("display", (this.category.data.importViewId && this.app.isAdmin) ? "" : "none");
  638. }
  639. action = this.app.exportAction;
  640. if( action ){
  641. action.setStyle("display", (this.category.data.importViewId && this.app.isAdmin) ? "" : "none");
  642. }
  643. this.loadView();
  644. },
  645. cancelCurrent : function(){
  646. this.isCurrent = false;
  647. this.node.setStyles( this.css.viewNaviNode );
  648. },
  649. getCategoryId : function(){
  650. return this.category.data.id;
  651. },
  652. loadView : function( searchKey ){
  653. this.app.openView( this, this.category.data, this.data, searchKey || "", this );
  654. }
  655. });
  656. MWF.xApplication.cms.Module.NaviAllView = new Class({
  657. Implements: [Options, Events],
  658. options: {
  659. "style": "default"
  660. },
  661. initialize: function ( navi, container, options) {
  662. this.setOptions(options);
  663. this.navi = navi;
  664. this.app = navi.app;
  665. this.container = $(container);
  666. this.css = this.app.css;
  667. this.data = {
  668. "isAll" : true,
  669. "id" : "defaultList"
  670. };
  671. this.load();
  672. },
  673. load: function(){
  674. var _self = this;
  675. this.isDefault = true;
  676. this.isAll = true;
  677. this.isCurrent = false;
  678. this.isCategory = false;
  679. if( this.navi.options.categoryId == "whole" ){
  680. this.isCurrent = true;
  681. }
  682. this.listNode = new Element("div.viewNaviListNode_all",{
  683. "styles" : this.css.viewNaviListNode_all
  684. }).inject(this.container);
  685. this.node = new Element("div.viewNaviNode_all", {
  686. "styles": this.css.viewNaviNode_all,
  687. "text" : this.app.lp.allDocument
  688. }).inject(this.listNode);
  689. this.node.addEvents({
  690. "mouseover": function(){ if ( !_self.isCurrent )this.setStyles(_self.css.viewNaviNode_all_over) },
  691. "mouseout": function(){ if ( !_self.isCurrent )this.setStyles( _self.css.viewNaviNode_all ) },
  692. "click": function (el) {
  693. _self.setCurrent();
  694. }
  695. });
  696. new Element("div", {
  697. "styles": this.css.viewNaviSepartorNode
  698. }).inject(this.listNode);
  699. if( this.isCurrent ){
  700. this.setCurrent()
  701. }
  702. },
  703. setCurrent : function(){
  704. if( this.navi.currentObject ){
  705. this.navi.currentObject.cancelCurrent();
  706. }
  707. this.node.setStyles( this.css.viewNaviNode_all_selected );
  708. this.isCurrent = true;
  709. this.navi.currentObject = this;
  710. var action = this.app.importAction;
  711. if( action ){
  712. action.setStyle("display","none");
  713. }
  714. var action = this.app.exportAction;
  715. if( action ){
  716. action.setStyle("display","none");
  717. }
  718. this.loadView();
  719. },
  720. cancelCurrent : function(){
  721. this.isCurrent = false;
  722. this.node.setStyles( this.css.viewNaviNode_all );
  723. },
  724. getCategoryId : function(){
  725. return null;
  726. },
  727. loadView : function( searchKey ){
  728. this.app.openView( this, null, this.data, searchKey || "", this );
  729. }
  730. });