diff --git a/o2web/source/x_component_Selector/Dictionary.js b/o2web/source/x_component_Selector/Dictionary.js new file mode 100644 index 0000000000000000000000000000000000000000..e27574103916053b458e84f6420df446566cd5d1 --- /dev/null +++ b/o2web/source/x_component_Selector/Dictionary.js @@ -0,0 +1,245 @@ +MWF.xApplication.Selector = MWF.xApplication.Selector || {}; +MWF.xDesktop.requireApp("Selector", "Person", null, false); +MWF.xApplication.Selector.Dictionary = new Class({ + Extends: MWF.xApplication.Selector.Person, + options: { + "style": "default", + "count": 0, + "title": MWF.xApplication.Selector.LP.selectDictionary, + "values": [], + "names": [], + "appType" : ["process","cms"], + "expand": false, + "forceSearchInItem" : true + }, + loadSelectItems: function(addToNext){ + var json = {}; + this.options.appType.each( function (type) { + var container = new Element("div").inject(this.itemAreaNode); + + var action; + if( type === "process" ){ + action = o2.Actions.load("x_processplatform_assemble_designer").ApplicationDictAction.listPaging; + }else if( type === "cms" ){ + + } + + var json = {}; + var array = []; + action(1, 1000, {}, function( dictionaryJson ) { + dictionaryJson.data.each(function (dictionary) { + var appName = dictionary.portalName || dictionary.applicationName; + var appId = dictionary.portal || dictionary.application; + if (!json[appId]) { + json[appId] = { + name: appName, + applicationName: appName, + appName: appName, + application: appId, + appId: appId + }; + json[appId].dictionaryList = []; + } + dictionary.appName = appName; + dictionary.appId = appId; + dictionary.appType = type; + dictionary.type = "dictionary"; + json[appId].dictionaryList.push(dictionary) + }.bind(this)); + for (var application in json) { + if (json[application].dictionaryList && json[application].dictionaryList.length) { + array.push(json[application]); + } + } + + if( this.options.appType.length === 1 ){ + array.each( function (data) { + var category = this._newItemCategory(data, this, container); + }.bind(this)) + }else{ + var category = this._newItemCategory({ + name: MWF.xApplication.Selector.LP.appType[type], + id: type, + applicationList: array + }, this, container); + } + }.bind(this)) + }.bind(this)); + + }, + _scrollEvent: function(y){ + return true; + }, + _getChildrenItemIds: function(data){ + return data.dictionaryList || []; + }, + _newItemCategory: function(data, selector, item, level){ + return new MWF.xApplication.Selector.Dictionary.ItemCategory(data, selector, item, level) + }, + + _listItemByKey: function(callback, failure, key){ + return false; + }, + _getItem: function(callback, failure, id, async){ + this.queryAction.getTable(function(json){ + if (callback) callback.apply(this, [json]); + }.bind(this), failure, ((typeOf(id)==="string") ? id : id.id), async); + }, + _newItemSelected: function(data, selector, item){ + return new MWF.xApplication.Selector.Dictionary.ItemSelected(data, selector, item) + }, + _listItemByPinyin: function(callback, failure, key){ + return false; + }, + _newItem: function(data, selector, container, level){ + return new MWF.xApplication.Selector.Dictionary.Item(data, selector, container, level); + } +}); +MWF.xApplication.Selector.Dictionary.Item = new Class({ + Extends: MWF.xApplication.Selector.Person.Item, + _getShowName: function(){ + return this.data.name; + }, + _setIcon: function(){ + this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/attr.png)"); + }, + loadSubItem: function(){ + return false; + }, + checkSelectedSingle: function(){ + var selectedItem = this.selector.options.values.filter(function(item, index){ + if (typeOf(item)==="object"){ + if( this.data.id && item.id ){ + return this.data.id === item.id; + } + //return (this.data.id === item.id) || (this.data.name === item.name) ; + } + //if (typeOf(item)==="object") return (this.data.id === item.id) || (this.data.name === item.name) ; + if (typeOf(item)==="string") return (this.data.id === item) || (this.data.name === item); + return false; + }.bind(this)); + if (selectedItem.length){ + this.selectedSingle(); + } + }, + checkSelected: function(){ + + var selectedItem = this.selector.selectedItems.filter(function(item, index){ + if( item.data.id && this.data.id){ + return item.data.id === this.data.id; + } + //return (item.data.id === this.data.id) || (item.data.name === this.data.name); + }.bind(this)); + if (selectedItem.length){ + //selectedItem[0].item = this; + selectedItem[0].addItem(this); + this.selectedItem = selectedItem[0]; + this.setSelected(); + } + } +}); + +MWF.xApplication.Selector.Dictionary.ItemSelected = new Class({ + Extends: MWF.xApplication.Selector.Person.ItemSelected, + _getShowName: function(){ + return this.data.name; + }, + _setIcon: function(){ + this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/attr.png)"); + }, + check: function(){ + if (this.selector.items.length){ + var items = this.selector.items.filter(function(item, index){ + //return (item.data.id === this.data.id) || (item.data.name === this.data.name); + if( item.data.id && this.data.id){ + return item.data.id === this.data.id; + } + }.bind(this)); + this.items = items; + if (items.length){ + items.each(function(item){ + item.selectedItem = this; + item.setSelected(); + }.bind(this)); + } + } + } +}); + +MWF.xApplication.Selector.Dictionary.ItemCategory = new Class({ + Extends: MWF.xApplication.Selector.Person.ItemCategory, + clickItem: function (callback) { + if (this._hasChild() ) { + var firstLoaded = !this.loaded; + this.loadSub(function () { + if (firstLoaded && this._hasChild() ) { + if (!this.selector.isFlatCategory) { + this.children.setStyles({"display": "block", "height": "auto"}); + this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand); + this.isExpand = true; + } + // this.checkSelectAll(); + } else { + var display = this.children.getStyle("display"); + if (display === "none") { + // this.selector.fireEvent("expand", [this] ); + this.children.setStyles({"display": "block", "height": "auto"}); + this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand); + this.isExpand = true; + } else { + // this.selector.fireEvent("collapse", [this] ); + this.children.setStyles({"display": "none", "height": "0px"}); + this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_collapse); + this.isExpand = false; + } + } + if (callback) callback(); + }.bind(this)); + } + }, + loadSub: function (callback) { + if (!this.loaded) { + if( this.data.dictionaryList ){ + this.data.dictionaryList.each(function (subItem, index) { + var item = this.selector._newItem(subItem, this.selector, this.children, this.level + 1, this); + this.selector.items.push(item); + if(this.subItems)this.subItems.push( item ); + }.bind(this)); + } + if ( this.data.applicationList ) { + this.data.applicationList.each(function (subCategory, index) { + var category = this.selector._newItemCategory(subCategory, this.selector, this.children, this.level + 1, this); + this.subCategorys.push( category ); + }.bind(this)); + } + this.loaded = true; + if (callback) callback(); + } else { + if (callback) callback(); + } + }, + _getShowName: function(){ + return this.data.name; + }, + _getTtiteText: function () { + return this.data.name; + }, + createNode: function(){ + this.node = new Element("div", { + "styles": this.selector.css.selectorItemCategory_department + }).inject(this.container); + }, + _setIcon: function(){ + this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/applicationicon.png)"); + }, + _hasChild: function(){ + return ( this.data.dictionaryList && this.data.dictionaryList.length ) || + ( this.data.applicationList && this.data.applicationList.length); + }, + afterLoad: function(){ + if ( this._hasChild() ){ + this.clickItem(); + } + }, + check: function(){} +}); diff --git a/o2web/source/x_component_Selector/FormStyle.js b/o2web/source/x_component_Selector/FormStyle.js index 63425a34cc5eb77fedd95c247625a8e83132269f..0dd7c8b67a38d7599b912f254dddb8fa12470906 100644 --- a/o2web/source/x_component_Selector/FormStyle.js +++ b/o2web/source/x_component_Selector/FormStyle.js @@ -34,9 +34,8 @@ MWF.xApplication.Selector.FormStyle = new Class({ }, this, this.itemAreaNode); var json = {}; - var appJs = {}; var array = []; - o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listPaging(1, 500, {}, function( scriptJson ){ + o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listPaging(1, 1000, {}, function( scriptJson ){ scriptJson.data.each(function (script) { if (!json[script.application]) { json[script.application] = { diff --git a/o2web/source/x_component_Selector/Script.js b/o2web/source/x_component_Selector/Script.js index 770abe5a4f40bfb5e4ae01c306aa07c045de10cf..97ba22de69a005096f53291ac970f640950ea18c 100644 --- a/o2web/source/x_component_Selector/Script.js +++ b/o2web/source/x_component_Selector/Script.js @@ -8,52 +8,66 @@ MWF.xApplication.Selector.Script = new Class({ "title": MWF.xApplication.Selector.LP.selectScript, "values": [], "names": [], + "appType" : ["process","portal"], "expand": false, "forceSearchInItem" : true }, loadSelectItems: function(addToNext){ var json = {}; - var appJs = {}; - o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listNext("(0)", 500, function (scriptJson) { - o2.Actions.load("x_processplatform_assemble_designer").ApplicationAction.list(function (appJson) { - appJson.data.each( function (app) { - appJs[ app.id ] = app; - }); - scriptJson.data.each( function (script) { - if( !json[script.application] ){ - json[script.application] = appJs[ script.application ]; - json[script.application].scriptList = []; + this.options.appType.each( function (type) { + var container = new Element("div").inject(this.itemAreaNode); + + var action; + if( type === "process" ){ + action = o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listPaging; + }else if( type === "portal" ){ + action = o2.Actions.load("x_portal_assemble_designer").ScriptAction.listPaging; + }else if( type === "cms" ){ + + } + + var json = {}; + var array = []; + action(1, 1000, {}, function( scriptJson ) { + scriptJson.data.each(function (script) { + var appName = script.portalName || script.applicationName; + var appId = script.portal || script.application; + if (!json[appId]) { + json[appId] = { + name: appName, + applicationName: appName, + appName: appName, + application: appId, + appId: appId + }; + json[appId].scriptList = []; } - script.appName = appJs[ script.application ].name; - script.appId = script.application; - json[script.application].scriptList.push( script ) + script.appName = appName; + script.appId = appId; + script.appType = type; + script.type = "script"; + json[appId].scriptList.push(script) }.bind(this)); - for( var application in json ){ - var category = this._newItemCategory(json[application], this, this.itemAreaNode); - json[application].scriptList.each(function(d){ - var item = this._newItem(d, this, category.children); - this.items.push(item); - }.bind(this)); + for (var application in json) { + if (json[application].scriptList && json[application].scriptList.length) { + array.push(json[application]); + } + } + + if( this.options.appType.length === 1 ){ + array.each( function (data) { + var category = this._newItemCategory(data, this, container); + }.bind(this)) + }else{ + var category = this._newItemCategory({ + name: MWF.xApplication.Selector.LP.appType[type], + id: type, + applicationList: array + }, this, container); } }.bind(this)) }.bind(this)); - // this.processAction.listApplications(function(json){ - // json.data.each(function(data){ - // if (!data.scriptList){ - // this.designerAction.listScript(data.id, function(scriptJson){ - // data.scriptList = scriptJson.data; - // }.bind(this), null, false); - // } - // if (data.scriptList && data.scriptList.length){ - // var category = this._newItemCategory(data, this, this.itemAreaNode); - // data.scriptList.each(function(d){ - // d.applicationName = data.name; - // var item = this._newItem(d, this, category.children); - // this.items.push(item); - // }.bind(this)); - // } - // }.bind(this)); - // }.bind(this)); + }, _scrollEvent: function(y){ return true; @@ -115,8 +129,6 @@ MWF.xApplication.Selector.Script.Item = new Class({ var selectedItem = this.selector.selectedItems.filter(function(item, index){ if( item.data.id && this.data.id){ return item.data.id === this.data.id; - }else{ - return item.data.name === this.data.name; } //return (item.data.id === this.data.id) || (item.data.name === this.data.name); }.bind(this)); @@ -143,8 +155,6 @@ MWF.xApplication.Selector.Script.ItemSelected = new Class({ //return (item.data.id === this.data.id) || (item.data.name === this.data.name); if( item.data.id && this.data.id){ return item.data.id === this.data.id; - }else{ - return item.data.name === this.data.name; } }.bind(this)); this.items = items; @@ -160,9 +170,62 @@ MWF.xApplication.Selector.Script.ItemSelected = new Class({ MWF.xApplication.Selector.Script.ItemCategory = new Class({ Extends: MWF.xApplication.Selector.Person.ItemCategory, + clickItem: function (callback) { + if (this._hasChild() ) { + var firstLoaded = !this.loaded; + this.loadSub(function () { + if (firstLoaded && this._hasChild() ) { + if (!this.selector.isFlatCategory) { + this.children.setStyles({"display": "block", "height": "auto"}); + this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand); + this.isExpand = true; + } + // this.checkSelectAll(); + } else { + var display = this.children.getStyle("display"); + if (display === "none") { + // this.selector.fireEvent("expand", [this] ); + this.children.setStyles({"display": "block", "height": "auto"}); + this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand); + this.isExpand = true; + } else { + // this.selector.fireEvent("collapse", [this] ); + this.children.setStyles({"display": "none", "height": "0px"}); + this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_collapse); + this.isExpand = false; + } + } + if (callback) callback(); + }.bind(this)); + } + }, + loadSub: function (callback) { + if (!this.loaded) { + if( this.data.scriptList ){ + this.data.scriptList.each(function (subItem, index) { + var item = this.selector._newItem(subItem, this.selector, this.children, this.level + 1, this); + this.selector.items.push(item); + if(this.subItems)this.subItems.push( item ); + }.bind(this)); + } + if ( this.data.applicationList ) { + this.data.applicationList.each(function (subCategory, index) { + var category = this.selector._newItemCategory(subCategory, this.selector, this.children, this.level + 1, this); + this.subCategorys.push( category ); + }.bind(this)); + } + this.loaded = true; + if (callback) callback(); + } else { + if (callback) callback(); + } + }, _getShowName: function(){ return this.data.name; }, + _getTtiteText: function () { + return this.data.name; + }, createNode: function(){ this.node = new Element("div", { "styles": this.selector.css.selectorItemCategory_department @@ -172,7 +235,13 @@ MWF.xApplication.Selector.Script.ItemCategory = new Class({ this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/applicationicon.png)"); }, _hasChild: function(){ - return (this.data.scriptList && this.data.scriptList.length); + return ( this.data.scriptList && this.data.scriptList.length ) || + ( this.data.applicationList && this.data.applicationList.length); + }, + afterLoad: function(){ + if ( this._hasChild() ){ + this.clickItem(); + } }, check: function(){} }); diff --git a/o2web/source/x_component_Selector/lp/en.js b/o2web/source/x_component_Selector/lp/en.js index f01f4aa48bd02a08ad50b1bd1eeccc00df9ffc49..2c141815fa39e5a9c35c7443425d54f414cf0285 100644 --- a/o2web/source/x_component_Selector/lp/en.js +++ b/o2web/source/x_component_Selector/lp/en.js @@ -29,6 +29,11 @@ MWF.xApplication.Selector.LP = MWF.SelectorLP = { "role" : "Role", "group" : "Group", "unit" : "Unit", + "appType" : { + "process": "Process", + "cms": "CMS", + "portal": "Portal" + }, "cancel": "Cancel", "back": "Back", diff --git a/o2web/source/x_component_Selector/lp/zh-cn.js b/o2web/source/x_component_Selector/lp/zh-cn.js index 04f0dc99ddd017e84453ad2e341fa140630b5a31..3c5e207c5fc40e0bdb8036978cc0ae5bc680b0a9 100644 --- a/o2web/source/x_component_Selector/lp/zh-cn.js +++ b/o2web/source/x_component_Selector/lp/zh-cn.js @@ -37,6 +37,12 @@ MWF.xApplication.Selector.LP = MWF.SelectorLP = { "group" : "群组", "unit" : "组织", + "appType" : { + "process": "流程管理", + "cms": "内容管理", + "portal": "门户管理" + }, + "cancel": "取消", "back": "返回", "ok": "确定",