MWF.xApplication.Profile.options.multitask = false;
MWF.xApplication.Profile.Main = new Class({
Extends: MWF.xApplication.Common.Main,
Implements: [Options, Events],
options: {
"style": "default",
"name": "Profile",
"icon": "icon.png",
"width": "800",
"height": "600",
"isResize": false,
"isMax": false,
"title": MWF.xApplication.Profile.LP.title
},
onQueryLoad: function(){
this.lp = MWF.xApplication.Profile.LP;
},
loadApplication: function(callback){
this.loadTitle();
this.loadContent();
},
loadTitle: function(){
this.loadTitleBar();
this.loadTitleUserNode();
this.loadTitleTextNode();
},
loadTitleBar: function(){
this.titleBar = new Element("div", {
"styles": this.css.titleBar
}).inject(this.content);
},
loadTitleUserNode: function(){
this.titleUserNode = new Element("div", {
"styles": this.css.titleUserNode
}).inject(this.titleBar);
this.titleUserIconNode = new Element("div", {
"styles": this.css.titleUserIconNode
}).inject(this.titleUserNode);
this.titleUserTextNode = new Element("div", {
"styles": this.css.titleUserTextNode,
"text": this.desktop.session.user.name
}).inject(this.titleUserNode);
},
loadTitleTextNode: function(){
this.taskTitleTextNode = new Element("div", {
"styles": this.css.titleTextNode,
"text": this.lp.title
}).inject(this.titleBar);
},
loadContent: function(){
this.contentNode = new Element("div", {"styles": this.css.contentNode}).inject(this.content);
MWF.require("MWF.widget.Tab", function(){
this.tab = new MWF.widget.Tab(this.contentNode, {"style": "profile"});
this.tab.load();
this.loadInforConfigNode();
this.loadLayoutConfigNode();
this.loadIdeaConfigNode();
this.loadPasswordConfigNode();
this.inforConfigPage = this.tab.addTab(this.inforConfigNode, this.lp.inforConfig);
this.layoutConfigPage = this.tab.addTab(this.layoutConfigNode, this.lp.layoutConfig);
this.ideaConfigPage = this.tab.addTab(this.ideaConfigNode, this.lp.ideaConfig);
this.passwordConfigPage = this.tab.addTab(this.passwordConfigNode, this.lp.passwordConfig);
if (this.options.tab){
this[this.options.tab].showIm();
}else{
this.inforConfigPage.showIm();
}
}.bind(this));
},
loadInforConfigNode: function(){
this.inforConfigNode = new Element("div", {"styles": this.css.configNode}).inject(this.content);
this.inforConfigAreaNode = new Element("div", {"styles": this.css.inforConfigAreaNode}).inject(this.inforConfigNode);
this.getAction(function(){
this.action.getPerson(function(json){
this.personData = json.data;
var icon = json.data.icon;
if (!icon){
if (json.data.genderType=="f"){
icon = "/x_component_Profile/$Main/"+this.options.style+"/female.png";
}else{
icon = "/x_component_Profile/$Main/"+this.options.style+"/man.png";
}
}else{
icon = "data:image/png;base64,"+icon;
}
//var html = "
" +
// "| 头像: | " +
// "更换头像 |
" +
// "| 姓名: | "+json.data.name+" |
" +
// "| 工号: | "+json.data.employee+" |
" +
// "| 邮件: | |
" +
// "| 微信: | "+json.data.employee+" |
" +
// "| 手机: | "+json.data.employee+" |
" +
// "| QQ: | "+json.data.employee+" |
" +
// "
"
//this.inforConfigAreaNode.set("html", html);
var _self = this;
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforIconTitleNode, "text": this.lp.icon}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforIconContentNode}).inject(lineNode);
this.contentImgNode = new Element("img", {"styles": this.css.inforIconContentImgNode, "src": icon}).inject(contentNode);
var actionNode = new Element("div", {"styles": this.css.inforChangeIconNode, "text": this.lp.changeIcon, "events": {
"click": function(){this.changeIcon();}.bind(this)
}}).inject(lineNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.name}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode, "text": json.data.name}).inject(lineNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.display}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode, "text": json.data.employee}).inject(lineNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.display}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.displayInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.display, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.mail}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.mailInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.mail, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.mobile}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.mobileInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.mobile, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.weixin}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.weixinInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.weixin, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.QQ}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.qqInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.qq, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.signature}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.signatureInputNode = new Element("input", {"styles": this.css.inforContentInputNode, "value": json.data.signature, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.inforConfigAreaNode);
this.saveAction = new Element("div", {"styles": this.css.saveAction, "text": this.lp.saveInfor}).inject(lineNode);
this.saveAction.addEvent("click", function(){
this.savePersonInfor();
}.bind(this));
}.bind(this), null, this.desktop.session.user.name)
}.bind(this));
},
changeIcon: function(){
if (!this.uploadFileAreaNode){
this.uploadFileAreaNode = new Element("div");
var html = "";
this.uploadFileAreaNode.set("html", html);
this.fileUploadNode = this.uploadFileAreaNode.getFirst();
this.fileUploadNode.addEvent("change", function(){
var files = fileNode.files;
if (files.length){
for (var i = 0; i < files.length; i++) {
var file = files.item(i);
var formData = new FormData();
formData.append('file', file);
//formData.append('name', file.name);
//formData.append('folder', folderId);
this.action.changeIcon(function(){
this.action.getPerson(function(json){
if (json.data){
this.personData = json.data;
if (this.personData.icon){
this.contentImgNode.set("src", "data:image/png;base64,"+this.personData.icon);
}
}
}.bind(this))
}.bind(this), null, formData, file);
}
}
}.bind(this));
}
var fileNode = this.uploadFileAreaNode.getFirst();
fileNode.click();
},
savePersonInfor: function(){
this.personData.display = this.displayInputNode.get("value");
this.personData.mail = this.mailInputNode.get("value");
this.personData.mobile = this.mobileInputNode.get("value");
this.personData.weixin = this.weixinInputNode.get("value");
this.personData.qq = this.qqInputNode.get("value");
this.personData.signature = this.signatureInputNode.get("value");
this.action.updatePerson(this.personData, function(){
this.notice(this.lp.saveInforOk, "success");
}.bind(this));
},
loadLayoutConfigNode: function(){
this.layoutConfigNode = new Element("div", {"styles": this.css.configNode}).inject(this.content);
this.clearDataAction = new Element("div", {"styles": this.css.clearDataAction, "text": this.lp.clear}).inject(this.layoutConfigNode);
this.clearDataAction.addEvent("click", function(){
MWF.require("MWF.widget.UUID", function(){
MWF.UD.putData("layout", {}, function(){
this.notice(this.lp.clearok, "success");
this.desktop.notRecordStatus = true;
}.bind(this));
}.bind(this));
}.bind(this));
if (MWF.AC.isAdministrator()){
this.defaultDataAction = new Element("div", {"styles": this.css.setDefaultDataAction, "text": this.lp.setDefault}).inject(this.layoutConfigNode);
this.defaultDataAction.addEvent("click", function(){
MWF.require("MWF.widget.UUID", function(){
var text = this.lp.setDefaultOk;
this.close();
var status = layout.desktop.getLayoutStatusData();
MWF.UD.putPublicData("defaultLayout", status, function(){
MWF.xDesktop.notice("success", {"x": "right", "y": "top"}, text, layout.desktop.desktopNode);
}.bind(this));
}.bind(this));
}.bind(this));
}
},
loadIdeaConfigNode: function(){
this.ideaConfigNode = new Element("div", {"styles": this.css.configNode}).inject(this.content);;
this.ideasArea = new Element("textarea", {"styles": this.css.ideasArea}).inject(this.ideaConfigNode);
this.ideasSaveAction = new Element("div", {"styles": this.css.ideasSaveAction, "text": this.lp.saveIdea}).inject(this.ideaConfigNode);
if (MWF.AC.isAdministrator()){
this.ideasSaveDefaultAction = new Element("div", {"styles": this.css.ideasSaveAction, "text": this.lp.saveIdeaDefault}).inject(this.ideaConfigNode);
this.ideasSaveDefaultAction.addEvent("click", function(){
MWF.require("MWF.widget.UUID", function(){
var data = {};
data.ideas = this.ideasArea.get("value").split("\n");
MWF.UD.putPublicData("idea", data, function(){
this.notice(this.lp.ideaSaveOk, "success");
}.bind(this));
}.bind(this));
}.bind(this))
}
MWF.require("MWF.widget.UUID", function(){
MWF.UD.getDataJson("idea", function(json){
if (json){
if (json.ideas) this.ideasArea.set("value", json.ideas.join("\n"));
}
}.bind(this));
}.bind(this));
this.ideasSaveAction.addEvent("click", function(){
MWF.require("MWF.widget.UUID", function(){
var data = {};
data.ideas = this.ideasArea.get("value").split("\n");
MWF.UD.putData("idea", data, function(){
this.notice(this.lp.ideaSaveOk, "success");
}.bind(this));
}.bind(this));
}.bind(this))
},
loadPasswordConfigNode: function(){
this.passwordConfigNode = new Element("div", {"styles": this.css.configNode});
this.passwordConfigAreaNode = new Element("div", {"styles": this.css.inforConfigAreaNode}).inject(this.passwordConfigNode);
var _self = this;
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.oldPassword}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.oldPasswordInputNode = new Element("input", {"type": "password", "styles": this.css.inforContentInputNode, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.password}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.passwordInputNode = new Element("input", {"type": "password", "styles": this.css.inforContentInputNode, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
var titleNode = new Element("div", {"styles": this.css.inforTitleNode, "text": this.lp.morePassword}).inject(lineNode);
var contentNode = new Element("div", {"styles": this.css.inforContentNode}).inject(lineNode);
this.morePasswordInputNode = new Element("input", {"type": "password", "styles": this.css.inforContentInputNode, "events": {
"blur": function(){this.setStyles(_self.css.inforContentInputNode);},
"focus": function(){this.setStyles(_self.css.inforContentInputNode_focus);}
}}).inject(contentNode);
var lineNode = new Element("div", {"styles": this.css.inforLineNode}).inject(this.passwordConfigAreaNode);
this.saveAction = new Element("div", {"styles": this.css.saveAction, "text": this.lp.passwordConfig}).inject(lineNode);
this.saveAction.addEvent("click", function(){
this.changePassword();
}.bind(this));
},
changePassword: function(){
var oldPassword = this.oldPasswordInputNode.get("value");
var password = this.passwordInputNode.get("value");
var morePassword = this.morePasswordInputNode.get("value");
if (password!=morePassword){
this.notice(this.lp.passwordNotMatch, "error");
this.passwordInputNode.setStyles(this.css.inforContentInputNode_error);
this.morePasswordInputNode.setStyles(this.css.inforContentInputNode_error);
}else{
this.action.changePassword(oldPassword, password, morePassword, function(){
this.oldPasswordInputNode.set("value", "");
this.passwordInputNode.set("value", "");
this.morePasswordInputNode.set("value", "");
this.notice(this.lp.changePasswordOk, "success");
}.bind(this));
if (layout.config.mail){
var url = "http://"+layout.config.mail+"//names.nsf?changepassword&password="+encodeURIComponent(oldPassword)+"&passwordnew="+encodeURIComponent(password)+"&passwordconfirm="+encodeURIComponent(password);
var iframe = new Element("iframe", {"styles": {"display": "none"}}).inject(this.desktop.desktopNode);
iframe.set("src", url);
window.setTimeout(function(){
iframe.destroy();
}.bind(this), 2000);
}
}
},
getAction: function(callback){
if (!this.acrion){
MWF.xDesktop.requireApp("Profile", "Actions.RestActions", function(){
this.action = new MWF.xApplication.Profile.Actions.RestActions();
if (callback) callback();
}.bind(this));
}else{
if (callback) callback();
}
}
});