MWF.xDesktop.requireApp("Attendance", "Explorer", null, false); MWF.xDesktop.requireApp("Template", "MDomItem", null, false); MWF.xDesktop.requireApp("Organization", "Selector.package", null, false); MWF.xApplication.Attendance.PermissionExplorer = new Class({ Extends: MWF.xApplication.Attendance.Explorer, Implements: [Options, Events], initialize: function(node, app, actions, options){ this.setOptions(options); this.app = app; this.path = "/x_component_Attendance/$PermissionExplorer/"; this.cssPath = "/x_component_Attendance/$PermissionExplorer/"+this.options.style+"/css.wcss"; this._loadCss(); this.actions = actions; this.node = $(node); this.initData(); if (!this.personActions) this.personActions = new MWF.xAction.org.express.RestActions(); }, loadView : function(){ this.view = new MWF.xApplication.Attendance.PermissionExplorer.View(this.elementContentNode, this.app,this, this.viewData, this.options.searchKey ); this.view.load(); this.setContentSize(); }, createDocument: function(){ if(this.view)this.view._createDocument(); } }); MWF.xApplication.Attendance.PermissionExplorer.View = new Class({ Extends: MWF.xApplication.Attendance.Explorer.View, _createItem: function(data){ return new MWF.xApplication.Attendance.PermissionExplorer.Document(this.table, data, this.explorer, this); }, _getCurrentPageData: function(callback, count){ this.actions.listPermission(function(json){ if (callback) callback(json); }); }, _removeDocument: function(document, all){ this.actions.deletePermission(document.id, function(json){ this.explorer.view.reload(); this.app.notice(this.app.lp.deleteDocumentOK, "success"); }.bind(this)); }, _createDocument: function(){ var permission = new MWF.xApplication.Attendance.PermissionExplorer.Permission(this.explorer); permission.create(); }, _openDocument: function( documentData ){ var permission = new MWF.xApplication.Attendance.PermissionExplorer.Permission(this.explorer, documentData ); permission.edit(); } }) MWF.xApplication.Attendance.PermissionExplorer.Document = new Class({ Extends: MWF.xApplication.Attendance.Explorer.Document }) MWF.xApplication.Attendance.PermissionExplorer.Permission = new Class({ Extends: MWF.widget.Common, options: { "width": "500", "height": "400" }, initialize: function( explorer, data ){ this.explorer = explorer; this.app = explorer.app; this.data = data || {}; this.css = this.explorer.css; this.load(); }, load: function(){ if( this.data.organizationName )this.data.department = this.data.organizationName; if( this.data.adminName )this.data.personName = this.data.adminName; if( this.data.adminLevel )this.data.role = this.data.adminLevel; }, open: function(e){ this.isNew = false; this.isEdited = false; }, create: function(){ this.isNew = true; this._open(); }, edit: function(){ this.isEdited = true; this._open(); }, _open : function(){ this.createMarkNode = new Element("div", { "styles": this.css.createMarkNode, "events": { "mouseover": function(e){e.stopPropagation();}, "mouseout": function(e){e.stopPropagation();} } }).inject(this.app.content, "after"); this.createAreaNode = new Element("div", { "styles": this.css.createAreaNode }); this.createNode(); this.createAreaNode.inject(this.createMarkNode, "after"); this.createAreaNode.fade("in"); this.personName.focus(); this.setCreateNodeSize(); this.setCreateNodeSizeFun = this.setCreateNodeSize.bind(this); this.addEvent("resize", this.setCreateNodeSizeFun); }, createNode: function(){ var _self = this; this.createNode = new Element("div", { "styles": this.css.createNode }).inject(this.createAreaNode); this.createIconNode = new Element("div", { "styles": this.isNew ? this.css.createNewNode : this.css.createIconNode }).inject(this.createNode); this.createFormNode = new Element("div", { "styles": this.css.createFormNode }).inject(this.createNode); var lp = this.app.lp.permission; var inputStyle = "width: 99%; border:1px solid #999; background-color:#FFF; border-radius: 3px; box-shadow: 0px 0px 6px #CCC;height: 26px;"; var inputPersonStyle = "width: 99%; border:1px solid #999; background-color:#FFF; border-radius: 3px; box-shadow: 0px 0px 6px #CCC;height: 26px;"+ "background : url(/x_component_Attendance/$PermissionExplorer/default/icon/selectperson.png) 98% center no-repeat"; //+(!this.isNew && !this.isEdited ? "" : // ("")) + var html = "" + ""+ "" + "" + ""+ "" + ""+ "" + "" + "" + "" + "" + ""+ "" + "" + "" + "
" + lp.setAttendancer + "
" + lp.role + ":
"+lp.department+":" + (!this.isNew && !this.isEdited ? "" : ("")) + "
"+lp.personName+":"+ (!this.isNew && !this.isEdited ? "" : ("")) + "
"; this.createFormNode.set("html", html); this.personName = this.createFormNode.getElement("#personName"); this.department = this.createFormNode.getElement("#department"); this.roleArea = this.createFormNode.getElement("#roleArea"); this.role = new MDomItem( this.roleArea, { "name" : "role", "type" : "select", "value" : this.data.role || "DEPT", "selectText" : ["公司管理员","部门管理员"], "selectValue" : ["COMPANY","DEPT"], "style" : {"text-align":"left"} }, true, this.app ); this.role.load(); this.personName.addEvent("click",function(){ this.selecePerson() }.bind(this)) this.department.addEvent("click",function(){ this.selectDepartment( this.role.get("value") ) }.bind(this)) this.cancelActionNode = new Element("div", { "styles": this.css.createCancelActionNode, "text": this.app.lp.cancel }).inject(this.createFormNode); this.createOkActionNode = new Element("div", { "styles": this.css.createOkActionNode, "text": this.app.lp.ok }).inject(this.createFormNode); this.cancelActionNode.addEvent("click", function(e){ this.cancelCreate(e); }.bind(this)); this.createOkActionNode.addEvent("click", function(e){ this.okCreate(e); }.bind(this)); }, setCreateNodeSize: function (width, height, top, left) { if (!width)width = this.options && this.options.width ? this.options.width : "50%" if (!height)height = this.options && this.options.height ? this.options.height : "50%" if (!top) top = this.options && this.options.top ? this.options.top : 0; if (!left) left = this.options && this.options.left ? this.options.left : 0; var allSize = this.app.content.getSize(); var limitWidth = allSize.x; //window.screen.width var limitHeight = allSize.y; //window.screen.height "string" == typeof width && (1 < width.length && "%" == width.substr(width.length - 1, 1)) && (width = parseInt(limitWidth * parseInt(width, 10) / 100, 10)); "string" == typeof height && (1 < height.length && "%" == height.substr(height.length - 1, 1)) && (height = parseInt(limitHeight * parseInt(height, 10) / 100, 10)); 300 > width && (width = 300); 220 > height && (height = 220); top = top || parseInt((limitHeight - height) / 2, 10); left = left || parseInt((limitWidth - width) / 2, 10); this.createAreaNode.setStyles({ "width": "" + width + "px", "height": "" + height + "px", "top": "" + top + "px", "left": "" + left + "px" }); this.createNode.setStyles({ "width": "" + width + "px", "height": "" + height + "px" }); var iconSize = this.createIconNode ? this.createIconNode.getSize() : {x: 0, y: 0}; var topSize = this.formTopNode ? this.formTopNode.getSize() : {x: 0, y: 0}; var bottomSize = this.formBottomNode ? this.formBottomNode.getSize() : {x: 0, y: 0}; var contentHeight = height - iconSize.y - topSize.y - bottomSize.y; //var formMargin = formHeight -iconSize.y; this.createFormNode.setStyles({ "height": "" + contentHeight + "px" }); }, //setCreateNodeSize: function(){ // var size = this.app.node.getSize(); // var allSize = this.app.content.getSize(); // // this.createAreaNode.setStyles({ // "width": ""+size.x+"px", // "height": ""+size.y+"px" // }); // var hY = size.y*0.6; // var mY = size.y*0.2/2; // this.createNode.setStyles({ // "height": ""+hY+"px", // "margin-top": ""+mY+"px" // }); // // var iconSize = this.createIconNode.getSize(); // var formHeight = hY*0.7; // if (formHeight>250) formHeight = 250; // var formMargin = hY*0.3/2-iconSize.y; // this.createFormNode.setStyles({ // "height": ""+formHeight+"px", // "margin-top": ""+formMargin+"px" // }); //}, cancelCreate: function(e){ var _self = this; if ( this.isNew && this.personName.get("value") ){ this.app.confirm("warn", e, this.app.lp.create_cancel_title, this.app.lp.create_cancel, "320px", "100px", function(){ _self.createMarkNode.destroy(); _self.createAreaNode.destroy(); this.close(); },function(){ this.close(); } ); }else{ this.createMarkNode.destroy(); this.createAreaNode.destroy(); delete _self; } }, okCreate: function(e){ var data = { "id" : this.data.id || null, "organizationName": this.department.get("value"), //"organizationOu" : this.department.get("value")=="" ? "" : this.data.organizationOu, "adminName": this.personName.get("value"), "adminLevel": this.role.getValue() }; if (data.adminName ){ this.app.restActions.savePermission(data, function(json){ if( json.type == "ERROR" ){ this.app.notice( json.message , "error"); }else{ this.createMarkNode.destroy(); this.createAreaNode.destroy(); if(this.explorer.view)this.explorer.view.reload(); this.app.notice( this.isNew ? this.app.lp.createSuccess : this.app.lp.updateSuccess , "success"); } // this.app.processConfig(); }.bind(this)); }else{ this.adminName.setStyle("border-color", "red"); this.adminName.focus(); this.app.notice( this.app.lp.inputName, "error"); } }, selecePerson: function(){ var options = { "type": "person", "title": "设置管理员", "count" : "1", "names": [this.data.personName] || [], "onComplete": function(items){ this.data.personName = []; items.each(function(item){ this.data.personName.push(item.data.name); }.bind(this)); this.personName.set("value",this.data.personName); }.bind(this) }; var selector = new MWF.OrgSelector(this.app.content, options); }, selectDepartment: function( u ){ var options = { "type": u=="COMPANY" ? "company" : "department", "title": u=="COMPANY" ? "选择公司":"选择部门", "count" : "1", "names": [this.data.department] || [], "onComplete": function(items){ this.data.department = []; items.each(function(item){ this.data.department.push(item.data.name); }.bind(this)); this.department.set("value",this.data.department); }.bind(this) }; var selector = new MWF.OrgSelector(this.app.content, options); } });