提交 ac5e19f7 编写于 作者: NoSubject's avatar NoSubject

Merge branch 'fix/attachment_message' into 'develop'

Merge of fix/attachment_message to develop 增加附件上载进度显示

See merge request o2oa/o2oa!1169
......@@ -499,5 +499,30 @@
"float": "right",
"margin-top": "10px",
"margin-left": "10px"
},
"messageMaskNode": {
"position": "absolute",
"bottom": "0px",
"left": "0px",
"background-color": "#e6f2ff",
"opacity": 1,
"max-height": "4px"
},
"messageNode": {
"position": "absolute",
"bottom": "0px",
"left": "0px",
"background-color": "#a2cbf9",
"opacity": 1,
"max-height": "4px"
},
"messageText": {
"position": "absolute",
"top": "0px",
"left": "0px",
"color": "#ffffff",
"text-align": "center",
"z-index": 100,
"display": "none"
}
}
\ No newline at end of file
}
......@@ -496,5 +496,27 @@
"float": "right",
"margin-top": "10px",
"margin-left": "10px"
},
"messageMaskNode": {
"position": "absolute",
"top": "0px",
"left": "0px",
"background-color": "#666666",
"opacity": 0.6
},
"messageNode": {
"position": "absolute",
"top": "0px",
"left": "0px",
"background-color": "#666666",
"opacity": 0.8
},
"messageText": {
"position": "absolute",
"top": "0px",
"left": "0px",
"color": "#ffffff",
"text-align": "center",
"z-index": 100
}
}
\ No newline at end of file
}
......@@ -488,5 +488,27 @@
"float": "right",
"margin-top": "10px",
"margin-left": "10px"
},
"messageMaskNode": {
"position": "absolute",
"top": "0px",
"left": "0px",
"background-color": "#666666",
"opacity": 0.6
},
"messageNode": {
"position": "absolute",
"top": "0px",
"left": "0px",
"background-color": "#666666",
"opacity": 0.8
},
"messageText": {
"position": "absolute",
"top": "0px",
"left": "0px",
"color": "#ffffff",
"text-align": "center",
"z-index": 100
}
}
\ No newline at end of file
}
......@@ -498,5 +498,29 @@
"float": "right",
"margin-top": "10px",
"margin-left": "10px"
},
"messageMaskNode": {
"position": "absolute",
"top": "0px",
"left": "0px",
"background-color": "#666666",
"opacity": 0.6,
"z-index": 98
},
"messageNode": {
"position": "absolute",
"top": "0px",
"left": "0px",
"background-color": "#666666",
"opacity": 0.8,
"z-index": 99
},
"messageText": {
"position": "absolute",
"top": "0px",
"left": "0px",
"color": "#ffffff",
"text-align": "center",
"z-index": 100
}
}
\ No newline at end of file
}
......@@ -515,5 +515,27 @@
"float": "right",
"margin-top": "10px",
"margin-left": "10px"
},
"messageMaskNode": {
"position": "absolute",
"top": "0px",
"left": "0px",
"background-color": "#e6f2ff",
"opacity": 0.6
},
"messageNode": {
"position": "absolute",
"top": "0px",
"left": "0px",
"background-color": "#a2cbf9",
"opacity": 0.8
},
"messageText": {
"position": "absolute",
"top": "0px",
"left": "0px",
"color": "#ffffff",
"text-align": "center",
"z-index": 100
}
}
\ No newline at end of file
}
......@@ -927,6 +927,7 @@ o2.widget.AttachmentController = o2.widget.ATTER = new Class({
};
if (layout.desktop.message) layout.desktop.message.addTooltip(msg);
if (layout.desktop.message) layout.desktop.message.addMessage(msg);
if (o2 && o2.xDesktop && o2.xDesktop.notice) o2.xDesktop.notice("error", {"x": "right", "y": "top"}, "文件:“"+file.name+"”不符合允许上传类型", this.node);
}else if (size && file.size> size*1024*1024){
var msg = {
"subject": o2.LP.widget.refuseUpload,
......@@ -934,6 +935,7 @@ o2.widget.AttachmentController = o2.widget.ATTER = new Class({
};
if (layout.desktop.message) layout.desktop.message.addTooltip(msg);
if (layout.desktop.message) layout.desktop.message.addMessage(msg);
if (o2 && o2.xDesktop && o2.xDesktop.notice) o2.xDesktop.notice("error", {"x": "right", "y": "top"}, "文件:“"+file.name+"”超出允许的大小,(仅允许上传小于"+size+"M的文件)", this.node);
}else{
var formData = new FormData();
Object.each(obj, function(v, k){
......@@ -1011,6 +1013,7 @@ o2.widget.AttachmentController = o2.widget.ATTER = new Class({
}.bind(this),null,false);
}else{
restActions.targetModule = {"module": this, "file": file};
restActions.invoke({
"name": invokeUrl,
"async": true,
......@@ -1038,6 +1041,21 @@ o2.widget.AttachmentController = o2.widget.ATTER = new Class({
this.fileUploadNode.click();
},
addFormDataMessage: function(file){
return this.addAttachmentMessage(file);
},
addAttachmentMessage: function(file){
var messageItem;
if (this.options.size=="min"){
messageItem = new o2.widget.AttachmentController.AttachmentMessageMin(file, this);
}else{
messageItem = new o2.widget.AttachmentController.AttachmentMessage(file, this);
}
if (!this.messageItemList) this.messageItemList = {};
this.messageItemList[messageItem.data.id] = messageItem;
return messageItem;
},
openInOfficeControl: function(e, node){},
deleteAttachment: function(e, node){
......@@ -1127,11 +1145,11 @@ o2.widget.AttachmentController = o2.widget.ATTER = new Class({
return names;
},
addAttachment: function(data){
addAttachment: function(data, messageId){
if (this.options.size=="min"){
this.attachments.push(new o2.widget.AttachmentController.AttachmentMin(data, this));
this.attachments.push(new o2.widget.AttachmentController.AttachmentMin(data, this, messageId));
}else{
this.attachments.push(new o2.widget.AttachmentController.Attachment(data, this));
this.attachments.push(new o2.widget.AttachmentController.Attachment(data, this, messageId));
}
this.checkActions();
},
......@@ -1164,7 +1182,7 @@ o2.widget.AttachmentController = o2.widget.ATTER = new Class({
o2.widget.AttachmentController.Attachment = new Class({
Implements: [Events],
initialize: function(data, controller){
initialize: function(data, controller, messageId){
this.data = data;
if( !this.data.person && this.data.creatorUid )this.data.person = this.data.creatorUid;
......@@ -1176,6 +1194,11 @@ o2.widget.AttachmentController.Attachment = new Class({
this.isSelected = false;
this.seq = this.controller.attachments.length+1;
this.actions = [];
if (messageId && this.controller.messageItemList) {
this.message = this.controller.messageItemList[messageId];
}
this.load();
},
_getLnkPar: function(url){
......@@ -1186,7 +1209,14 @@ o2.widget.AttachmentController.Attachment = new Class({
};
},
load: function(){
this.node = new Element("div").inject(this.content);
if (this.message){
this.node = new Element("div").inject(this.message.node, "after");
this.message.node.destroy();
delete this.controller.messageItemList[this.message.data.id];
}else{
this.node = new Element("div").inject(this.content);
}
switch (this.controller.options.listStyle){
case "list":
this.loadList();
......@@ -1619,7 +1649,7 @@ o2.widget.AttachmentController.Attachment = new Class({
o2.widget.AttachmentController.AttachmentMin = new Class({
Extends: o2.widget.AttachmentController.Attachment,
initialize: function(data, controller){
initialize: function(data, controller, messageId){
this.data = data;
if( !this.data.person && this.data.creatorUid )this.data.person = this.data.creatorUid;
......@@ -1629,10 +1659,23 @@ o2.widget.AttachmentController.AttachmentMin = new Class({
this.content = this.controller.minContent;
this.isSelected = false;
this.seq = this.controller.attachments.length+1;
if (messageId && this.controller.messageItemList) {
this.message = this.controller.messageItemList[messageId];
}
this.load();
},
load: function(){
this.node = new Element("div").inject(this.content);
if (this.message){
this.node = new Element("div").inject(this.message.node, "after");
this.message.node.destroy();
delete this.controller.messageItemList[this.message.data.id];
}else{
this.node = new Element("div").inject(this.content);
}
//this.node = new Element("div").inject(this.content);
//this.loadList();
switch (this.controller.options.listStyle){
case "list":
......@@ -1854,3 +1897,274 @@ o2.widget.AttachmentController.AttachmentMin = new Class({
}
});
o2.widget.AttachmentController.AttachmentMessage = new Class({
Extends: o2.widget.AttachmentController.Attachment,
Implements: [Events],
initialize: function(file, controller){
var d = (new Date).format("db");
var extension = file.name.substring(file.name.lastIndexOf(".")+1, file.name.length);
this.file = file;
this.data = {
activity: "",
activityName: "",
activityToken: "",
activityType: "manual",
application: "",
completed: false,
control: {allowRead:true, allowEdit:false, allowControl:false},
controllerIdentityList: [],
controllerUnitList: [],
createTime: d,
deepPath: false,
divisionList: [],
editIdentityList: [],
editUnitList: [],
extension: extension,
id: (new o2.widget.UUID()).toString(),
job: "",
lastUpdatePerson: (layout) ? layout.session.user.name : "",
lastUpdateTime: d,
length: file.size,
name: file.name,
person: (layout) ? layout.session.user.name : "",
process: "",
readIdentityList: [],
readUnitList: [],
site: "$doc",
storage: file.size,
type: "",
updateTime: d,
workCreateTime: ""
}
if( !this.data.person && this.data.creatorUid )this.data.person = this.data.creatorUid;
this.controller = controller;
this.css = this.controller.css;
this.listStyle = this.controller.options.listStyle;
this.content = this.controller.content;
this.isSelected = false;
this.seq = this.controller.attachments.length+1;
this.actions = [];
this.load();
},
load: function(){
this.node = new Element("div").inject(this.content);
switch (this.controller.options.listStyle){
case "list":
this.loadList();
break;
case "icon":
this.loadIcon();
break;
case "preview":
this.loadPreview();
break;
case "sequence":
this.loadSequence();
break;
}
this.setEvent();
this.loadMessage();
},
loadMessage: function(){
var size = this.node.getSize();
this.node.setStyle("position", "relative");
this.messageMaskNode = new Element("div", { "styles": this.css.messageMaskNode }).inject(this.node);
this.messageMaskNode.setStyles({
"width": ""+size.x+"px",
"height": ""+size.y+"px"
});
this.messageNode = new Element("div", { "styles": this.css.messageNode }).inject(this.node);
switch (this.controller.options.listStyle){
case "list":
case "sequence":
this.messageNode.setStyles({
"width": "0px",
"height": ""+size.y+"px"
});
break;
case "icon":
case "preview":
this.messageNode.setStyles({
"width": ""+size.x+"px",
"height": ""+size.y+"px"
});
break;
}
this.messageText = new Element("div", {
"styles": this.css.messageText,
"text": "0%"
}).inject(this.node);
this.messageText.setStyles({
"width": ""+size.x+"px",
"height": ""+size.y+"px",
"line-height": ""+size.y+"px"
});
},
updateProgress: function(percent){
var size = this.node.getSize();
switch (this.controller.options.listStyle){
case "list":
case "sequence":
var w = size.x*(percent/100);
this.messageNode.setStyles({
"width":""+w+"px"
});
break;
case "icon":
case "preview":
var h = size.y*(1-percent/100);
this.messageNode.setStyle("height", ""+h+"px");
break;
}
var p = (percent*100).toInt()/100;
this.messageText.set("text", ""+p+"%")
},
transferComplete: function(){
this.messageText.set("text", "loading...")
}
});
o2.widget.AttachmentController.AttachmentMessageMin = new Class({
Extends: o2.widget.AttachmentController.AttachmentMin,
Implements: [Events],
initialize: function(file, controller){
var d = (new Date).format("db");
var extension = file.name.substring(file.name.lastIndexOf(".")+1, file.name.length);
this.file = file;
this.data = {
activity: "",
activityName: "",
activityToken: "",
activityType: "manual",
application: "",
completed: false,
control: {allowRead:true, allowEdit:false, allowControl:false},
controllerIdentityList: [],
controllerUnitList: [],
createTime: d,
deepPath: false,
divisionList: [],
editIdentityList: [],
editUnitList: [],
extension: extension,
id: (new o2.widget.UUID()).toString(),
job: "",
lastUpdatePerson: (layout) ? layout.session.user.name : "",
lastUpdateTime: d,
length: file.size,
name: file.name,
person: (layout) ? layout.session.user.name : "",
process: "",
readIdentityList: [],
readUnitList: [],
site: "$doc",
storage: file.size,
type: "",
updateTime: d,
workCreateTime: ""
}
if( !this.data.person && this.data.creatorUid )this.data.person = this.data.creatorUid;
this.controller = controller;
this.css = this.controller.css;
this.listStyle = this.controller.options.listStyle;
this.content = this.controller.minContent;
this.isSelected = false;
this.seq = this.controller.attachments.length+1;
this.actions = [];
this.load();
},
load: function(){
this.node = new Element("div").inject(this.content);
switch (this.controller.options.listStyle){
case "list":
this.loadList();
break;
case "icon":
this.loadIcon();
break;
case "preview":
this.loadPreview();
break;
case "sequence":
this.loadSequence();
break;
}
this.setEvent();
this.loadMessage();
},
loadMessage: function(){
var size = this.node.getSize();
this.node.setStyle("position", "relative");
this.messageMaskNode = new Element("div", { "styles": this.css.messageMaskNode }).inject(this.node);
this.messageMaskNode.setStyles({
"width": ""+size.x+"px",
"height": ""+size.y+"px"
});
this.messageNode = new Element("div", { "styles": this.css.messageNode }).inject(this.node);
switch (this.controller.options.listStyle){
case "list":
case "sequence":
this.messageNode.setStyles({
"width": "0px",
"height": ""+size.y+"px"
});
break;
case "icon":
case "preview":
this.messageNode.setStyles({
"width": ""+size.x+"px",
"height": ""+size.y+"px"
});
break;
}
this.messageText = new Element("div", {
"styles": this.css.messageText,
"text": "0%"
}).inject(this.node);
this.messageText.setStyles({
"width": ""+size.x+"px",
"height": ""+size.y+"px",
"line-height": ""+size.y+"px"
});
},
updateProgress: function(percent){
var size = this.node.getSize();
switch (this.controller.options.listStyle){
case "list":
case "sequence":
var w = size.x*(percent/100);
this.messageNode.setStyles({
"width":""+w+"px"
});
break;
case "icon":
case "preview":
var h = size.y*(1-percent/100);
this.messageNode.setStyle("height", ""+h+"px");
break;
}
var p = (percent*100).toInt()/100;
this.messageText.set("text", ""+p+"%")
},
transferComplete: function(){
this.messageText.set("text", "loading...")
}
});
......@@ -131,49 +131,72 @@ MWF.xDesktop.Actions.RestActions = new Class({
xhr.send(data);
},
setMessageText: function(messageItem, text){
if (messageItem){
if (messageItem && messageItem.message){
var progressNode = messageItem.contentNode.getFirst("div").getFirst("div");
var progressPercentNode = progressNode.getFirst("div");
var progressInforNode = messageItem.contentNode.getFirst("div").getLast("div");
progressInforNode.set("text", text);
messageItem.dateNode.set("text", (new Date()).format("db"));
}
//@upload message
if (messageItem && messageItem.moduleMessage){
if (messageItem.moduleMessage.setMessageText) messageItem.moduleMessage.setMessageText();
}
},
setMessageTitle: function(messageItem, text){
if (messageItem) messageItem.subjectNode.set("text", text);
if (messageItem && messageItem.message) messageItem.subjectNode.set("text", text);
//@upload message
if (messageItem && messageItem.moduleMessage){
if (messageItem.moduleMessage.setMessageTitle) messageItem.moduleMessage.setMessageTitle();
}
},
clearMessageProgress: function(messageItem){
if (messageItem) {
if (messageItem && messageItem.message) {
var progressNode = messageItem.contentNode.getFirst("div").getFirst("div");
progressNode.destroy();
}
//@upload message
if (messageItem && messageItem.moduleMessage){
if (messageItem.moduleMessage.clearMessageProgress) messageItem.moduleMessage.clearMessageProgress();
}
},
transferStart: function(e, xhr, messageItem){
if (messageItem) {
if (messageItem && messageItem.message) {
this.setMessageText(messageItem, MWF.LP.desktop.action.sendStart);
messageItem.status = "progress";
}
//@upload message
if (messageItem && messageItem.moduleMessage){
if (messageItem.moduleMessage.transferStart) messageItem.moduleMessage.transferStart();
}
this.fireEvent("loadstart");
},
transferFailed: function(e, xhr, messageItem){
if (messageItem) {
if (messageItem && messageItem.message) {
this.setMessageText(messageItem, MWF.LP.desktop.action.sendError);
this.setMessageTitle(messageItem, MWF.LP.desktop.action.sendError);
this.clearMessageProgress(messageItem);
messageItem.status = "failed";
}
//@upload message
if (messageItem && messageItem.moduleMessage){
if (messageItem.moduleMessage.transferFailed) messageItem.moduleMessage.transferFailed();
}
this.fireEvent("error");
},
transferCanceled: function(e, xhr, messageItem){
if (messageItem) {
if (messageItem && messageItem.message) {
this.setMessageText(messageItem, MWF.LP.desktop.action.sendAbort);
this.setMessageTitle(messageItem, MWF.LP.desktop.action.sendAbort);
this.clearMessageProgress(messageItem);
messageItem.status = "cancel";
}
//@upload message
if (messageItem && messageItem.moduleMessage){
if (messageItem.moduleMessage.transferCanceled) messageItem.moduleMessage.transferCanceled();
}
this.fireEvent("abort");
},
transferComplete: function(e, xhr, messageItem, currentDate, file){
......@@ -209,13 +232,18 @@ MWF.xDesktop.Actions.RestActions = new Class({
var s = ms/1000;
timeStr = ""+s.toInt()+MWF.LP.desktop.action.second;
}
if (messageItem) {
if (messageItem && messageItem.message) {
this.setMessageText(messageItem, MWF.LP.desktop.action.uploadComplete + " " + MWF.LP.desktop.action.speed + ": " + speed + u + " " + MWF.LP.desktop.action.time + ": " + timeStr, MWF.LP.desktop.action.uploadComplete);
this.setMessageTitle(messageItem, MWF.LP.desktop.action.uploadComplete);
this.clearMessageProgress(messageItem);
messageItem.status = "completed";
}
//@upload message
debugger;
if (messageItem && messageItem.moduleMessage){
if (messageItem.moduleMessage.transferComplete) messageItem.moduleMessage.transferComplete();
}
//var msg = {
// "subject": MWF.LP.desktop.action.uploadComplete,
// "content": MWF.LP.desktop.action.uploadComplete+" : "+file.name
......@@ -240,7 +268,7 @@ MWF.xDesktop.Actions.RestActions = new Class({
}
speed = speed.round(2);
if (messageItem) {
if (messageItem && messageItem.message) {
if (messageItem.contentNode) {
var progressNode = messageItem.contentNode.getFirst("div").getFirst("div");
var progressPercentNode = progressNode.getFirst("div");
......@@ -249,6 +277,11 @@ MWF.xDesktop.Actions.RestActions = new Class({
progressInforNode.set("text", MWF.LP.desktop.action.sendStart + ": " + speed + u);
}
}
//@upload message
debugger;
if (messageItem && messageItem.moduleMessage){
if (messageItem.moduleMessage.updateProgress) messageItem.moduleMessage.updateProgress(percent);
}
this.fireEvent("progress");
},
xhrStateChange: function(e, xhr, messageItem, callback){
......@@ -274,6 +307,7 @@ MWF.xDesktop.Actions.RestActions = new Class({
MWF.runCallback(callback, "success", [{
"type": "success",
"id": dataId,
"messageId": (messageItem && messageItem.moduleMessage) ? messageItem.moduleMessage.data.id : "",
"data": json.data
}, xhr.responseText]);
break;
......@@ -388,20 +422,21 @@ MWF.xDesktop.Actions.RestActions = new Class({
},
addFormDataMessage: function(file, noProgress, xhr, showMsg){
debugger;
var contentHTML = "";
if (noProgress){
contentHTML = "<div style=\"height: 20px; line-height: 20px\">"+MWF.LP.desktop.action.sendReady+"</div></div>" ;
}else{
contentHTML = "<div style=\"overflow: hidden\"><div style=\"height: 3px; border:1px solid #999; margin: 3px 0px\">" +
"<div style=\"height: 3px; background-color: #acdab9; width: 0px;\"></div></div>" +
"<div style=\"height: 20px; line-height: 20px\">"+MWF.LP.desktop.action.sendReady+"</div></div>" ;
}
var msg = {
"subject": MWF.LP.desktop.action.uploadTitle,
//"content": MWF.LP.desktop.action.uploadTitle+" : "+file.name+"<br/>"+contentHTML
"content": ( file.name ? (file.name+"<br/>") : "" )+contentHTML
};
if (layout.desktop.message){
var contentHTML = "";
if (noProgress){
contentHTML = "<div style=\"height: 20px; line-height: 20px\">"+MWF.LP.desktop.action.sendReady+"</div></div>" ;
}else{
contentHTML = "<div style=\"overflow: hidden\"><div style=\"height: 3px; border:1px solid #999; margin: 3px 0px\">" +
"<div style=\"height: 3px; background-color: #acdab9; width: 0px;\"></div></div>" +
"<div style=\"height: 20px; line-height: 20px\">"+MWF.LP.desktop.action.sendReady+"</div></div>" ;
}
var msg = {
"subject": MWF.LP.desktop.action.uploadTitle,
//"content": MWF.LP.desktop.action.uploadTitle+" : "+file.name+"<br/>"+contentHTML
"content": ( file.name ? (file.name+"<br/>") : "" )+contentHTML
};
var messageItem = layout.desktop.message.addMessage(msg);
//var _self = this;
......@@ -423,6 +458,14 @@ MWF.xDesktop.Actions.RestActions = new Class({
}
};
}
debugger;
//@upload message
if (this.targetModule){
var moduleMessage = this.targetModule.module.addFormDataMessage(this.targetModule.file);
if (!messageItem) messageItem ={};
messageItem.moduleMessage = moduleMessage;
this.targetModule = null;
}
//messageItem.addEvent("close", function(flag, e){
// debugger;
......
......@@ -208,7 +208,7 @@ MWF.xApplication.cms.Xform.Attachment = MWF.CMSAttachment = new Class({
this.form.documentAction.getAttachment(o.id, this.form.businessData.document.id, function (json) {
if (json.data) {
if (!json.data.control) json.data.control = {};
this.attachmentController.addAttachment(json.data);
this.attachmentController.addAttachment(json.data, o.messageId);
this.form.businessData.attachmentList.push(json.data);
}
this.attachmentController.checkActions();
......
......@@ -1165,7 +1165,7 @@ MWF.xApplication.process.Xform.Attachment = MWF.APPAttachment = new Class({
this.form.workAction.getAttachment(o.id, this.form.businessData.work.id, function (json) {
if (json.data) {
if (!json.data.control) json.data.control = {};
this.attachmentController.addAttachment(json.data);
this.attachmentController.addAttachment(json.data, o.messageId);
}
this.attachmentController.checkActions();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册