MWF.xApplication.Forum = MWF.xApplication.Forum || {};
MWF.xApplication.ForumDocument = MWF.xApplication.ForumDocument || {};
MWF.require("MWF.widget.Identity", null,false);
MWF.xDesktop.requireApp("Forum", "Actions.RestActions", null, false);
MWF.xDesktop.requireApp("Forum", "Attachment", null, false);
MWF.xDesktop.requireApp("Forum", "lp."+MWF.language, null, false);
MWF.xDesktop.requireApp("Forum", "Access", null, false);
MWF.xDesktop.requireApp("Template", "Explorer", null, false);
MWF.require("MWF.widget.ImageClipper", null, false);
MWF.xApplication.ForumDocument.options = {
multitask: true,
executable: true
};
MWF.xApplication.ForumDocument.Main = new Class({
Extends: MWF.xApplication.Common.Main,
Implements: [Options, Events],
options: {
"style": "default",
"name": "ForumDocument",
"icon": "icon.png",
"width": "1210",
"height": "700",
"isResize": false,
"isMax": true,
"isNew" : true,
"isEdited" : true,
"index" : 1,
"replyIndex" : null,
"viewPageNum" : 1,
"title": MWF.xApplication.ForumDocument.LP.title
},
onQueryLoad: function(){
this.lp = MWF.xApplication.Forum.LP;
},
onQueryClose: function(){
if( this.clipper ){
this.clipper.close();
}
},
loadApplication: function(callback){
this.userData = layout.desktop.session.user;
this.userName = this.userData.name;
this.restActions = this.actions = new MWF.xApplication.Forum.Actions.RestActions();
this.path = "/x_component_ForumDocument/$Main/"+this.options.style+"/";
this.createNode();
this.loadApplicationContent();
},
loadController: function(callback){
this.access = new MWF.xApplication.Forum.Access( this.restActions, this.lp );
if(callback)callback();
},
createNode: function(){
this.content.setStyle("overflow", "hidden");
this.node = new Element("div", {
"styles": this.css.node
}).inject(this.content);
},
loadApplicationContent: function(){
if( this.status ){
this.setOptions( this.status )
}
this.loadController(function(){
this.access.login( function(){
this.loadApplicationLayout();
}.bind(this) )
}.bind(this))
},
reload : function(oldid, appid){
this.node.empty();
this.pagingBarTop = null;
this.pagingContainerTop = null;
delete this.pagingBarTop;
delete this.pagingContainerTop;
this.loadApplicationLayout();
//if( this.appCurrentList.indexOf( this > 0 ){
// this.appCurrentList.erase(this);
// this.appCurrentList.push(this)
//}
if( oldid && appid && (oldid != appid) ){
delete this.desktop.apps[oldid];
this.appId = appid;
this.desktop.apps[appid] = this;
}
},
loadApplicationLayout : function(){
this.contentContainerNode = new Element("div.contentContainerNode", {
"styles": this.css.contentContainerNode
}).inject(this.node);
if( this.options.id ){
this.restActions.listSubjectPermission( this.options.id, function( permission ){
this.permission = permission.data;
if( this.options.isEdited ){
this.restActions.getSubject( this.options.id , function( data ){
this.data = data.data;
this._loadApplicationLayout( this.data.sectionId , this.data.title );
}.bind(this))
}else{
this.restActions.getSubjectView( this.options.id , function( data ){
this.data = data.data.currentSubject;
this.nextSubject = data.data.nextSubject;
this.lastSubject = data.data.lastSubject;
this._loadApplicationLayout( this.data.sectionId , this.data.title );
}.bind(this))
}
}.bind(this) )
}else{
this._loadApplicationLayout( this.options.sectionId, this.lp.createSubject );
}
},
_loadApplicationLayout : function( sectionId, title ){
this.options.sectionId = sectionId;
this.restActions.listSectionPermission( sectionId, function( permission ){
this.sectionPermission = permission.data;
this.restActions.getSection( sectionId, function( json ) {
this.sectionData = json.data;
//this.access.hasSectionAdminAuthority( this.sectionData , function( flag ){
// this.isAdmin = flag;
this.restActions.getCategory(this.sectionData.forumId, function (formData) {
this.formData = formData.data;
this.setTitle( title );
this.createTopNode();
this.createMiddleNode();
}.bind(this))
//}.bind(this) );
}.bind(this))
}.bind(this) )
},
createTopNode: function(){
var forumColor = MWF.xApplication.Forum.ForumSetting[this.sectionData.forumId].forumColor;
var topNode = this.topNode = new Element("div.topNode", {
"styles": this.css.topNode
}).inject(this.contentContainerNode);
topNode.setStyle("border-bottom","1px solid "+forumColor);
var topTitleLeftNode = new Element("div.topTitleLeftNode", {
"styles": this.css.topTitleLeftNode
}).inject(topNode);
topTitleLeftNode.setStyle( "background-color" , forumColor )
var topTitleMiddleNode = new Element("div.topTitleMiddleNode", {
"styles": this.css.topTitleMiddleNode
}).inject(topNode);
topTitleMiddleNode.setStyle( "background-color" , forumColor )
var topTitleRightNode = new Element("div.topTitleRightNode", {
"styles": this.css.topTitleRightNode
}).inject(topNode);
topTitleRightNode.setStyle( "background-color" , forumColor )
var topItemTitleNode = new Element("div.topItemTitleNode", {
"styles": this.css.topItemTitleNode,
"text": this.lp.title
}).inject(topTitleMiddleNode);
topItemTitleNode.addEvent("click", function(){
var appId = "Forum";
if (this.desktop.apps[appId]){
this.desktop.apps[appId].setCurrent();
}else {
this.desktop.openApplication(null, "Forum", { "appId": appId });
}
if( !this.inBrowser ){
this.close();
}
}.bind(this))
var topItemSepNode = new Element("div.topItemSepNode", {
"styles": this.css.topItemSepNode
}).inject(topTitleMiddleNode);
var topItemTitleNode = new Element("div.topItemTitleNode", {
"styles": this.css.topItemTitleNode,
"text": this.sectionData.forumName
}).inject(topTitleMiddleNode);
topItemTitleNode.addEvent("click", function(){
var appId = "ForumCategory"+this.forumId;
if (this.obj.desktop.apps[appId]){
this.obj.desktop.apps[appId].setCurrent();
}else {
this.obj.desktop.openApplication(null, "ForumCategory", { "categoryId" : this.forumId ,"appId": appId });
}
if( !this.obj.inBrowser ){
this.obj.close();
}
//this.obj.close();
}.bind({ obj: this, forumId : this.sectionData.forumId }))
var topItemSepNode = new Element("div.topItemSepNode", {
"styles": this.css.topItemSepNode
}).inject(topTitleMiddleNode);
var topItemTitleNode = new Element("div.topItemTitleNode", {
"styles": this.css.topItemTitleNode,
"text": this.sectionData.sectionName
}).inject(topTitleMiddleNode);
topItemTitleNode.addEvent("click", function(){
var appId = "ForumSection"+this.sectionData.id;
if (this.desktop.apps[appId]){
this.desktop.apps[appId].setCurrent();
}else {
this.desktop.openApplication(null, "ForumSection", {
"sectionId" : this.sectionData.id,
"appId": appId
});
}
if( !this.inBrowser ){
this.close();
}
//this.close();
}.bind(this))
var topItemSepNode = new Element("div.topItemSepNode", {
"styles": this.css.topItemSepNode
}).inject(topTitleMiddleNode);
var topItemTitleNode = new Element("div.topItemTitleNode", {
"styles": this.css.topItemTitleNode,
"text": this.options.isNew ? (this.lp.createSubject) : ("["+ this.data.type +"]" + this.data.title )
}).inject(topTitleMiddleNode);
//this.topRightTextNode = new Element("div", {
// "styles": this.css.topRightTextNode,
// "text": this.lp.setting
//}).inject(this.topRightTextNode)
},
createMiddleNode: function(){
this.middleNode = new Element("div.middleNode", {
"styles": this.css.middleNode
}).inject(this.contentContainerNode);
this.addEvent("resize", function () {
this.setContentSize();
}.bind(this));
this.setContentSize();
this.middleNode.addEvent("selectstart", function(e){
e.stopPropagation();
});
//MWF.require("MWF.widget.ScrollBar", function () {
// this.scrollBar = new MWF.widget.ScrollBar(this.contentContainerNode, {
// "indent": false,
// "style": "xApp_TaskList",
// "where": "before",
// "distance": 30,
// "friction": 4,
// "axis": {"x": false, "y": true},
// "onScroll": function (y) {
// }
// });
//}.bind(this));
if( this.options.isNew || this.options.isEdited ){
this._createMiddleNode_eidt();
}else{
this._createMiddleNode_read();
}
},
_createMiddleNode_eidt : function(){
this.data = this.data || {}
var _self = this;
this.contentDiv = new Element("div.contentDiv",{"styles":this.css.contentDiv}).inject(this.middleNode);
var html = "
" +
"" +
" | " +
" | " +
" | " +
"
" +
" | " +
" | " +
"
" +
" | " +
" | " +
"
" +
" | " +
" | " +
"
" +
" | "+ this.lp.attachment +" | " +
" | " +
"
" +
" | " +
" | " +
"
"
"
"
this.contentDiv.set("html", html);
if( this.formData.indexListStyle == this.lp.indexListStyleImage ){
this.contentDiv.getElements("[item='portalImageTr']")[0].setStyle("display","");
}
var subjectTypeSelectValue;
if( this.sectionData.subjectType ){
subjectTypeSelectValue = this.sectionData.subjectType.split("|");
}else if( this.formData.subjectType ){
subjectTypeSelectValue = this.formData.subjectType.split("|");
}else{
subjectTypeSelectValue = this.lp.subjectTypeDefaultValue.split("|");
}
MWF.xDesktop.requireApp("Template", "MForm", function () {
this.form = new MForm(this.contentDiv, this.data , {
style: "forum",
isEdited: true || this.isEdited || this.isNew,
itemTemplate: {
title: {text: this.lp.subject, notEmpty : true },
type: {text: this.lp.type, type : "select", selectValue : subjectTypeSelectValue , notEmpty : true },
summary: {text: this.lp.summary, type : "text", event : { "keyup" : function( item, ev){
if( item.getValue().length > 70 ){
item.setValue( item.getValue().substr( 0, 70 ) );
}
} } },
portalImage: {text: this.lp.portalImage },
content: {text: this.lp.content, type : "rtf", notEmpty : true, RTFConfig : {
isSetImageMaxWidth : true,
skin : "bootstrapck" //,
//filebrowserCurrentDocumentImage: function (e, callback) {
// _self.selectDocImage( callback );
//}
}}
}
}, this, this.css);
this.form.load();
}.bind(this), true);
this.createIconNode();
var actionTd = this.contentDiv.getElements("[item='action']")[0];
this.saveAction = new Element("div",{
styles : this.css.actionNode,
text: this.lp.saveSubject
}).inject(actionTd);
this.saveAction.addEvent("click",function(){
this.saveSubject();
}.bind(this))
var attachmentArea = this.contentDiv.getElements("[item='attachment']")[0];
this.loadAttachment(attachmentArea)
},
//selectDocImage : function( callback, width ){
// this.selector_doc = new MWF.xApplication.Forum.Attachment(this.content, this, this.restActions, this.lp, {
// //documentId : this.data ? this.data.id : "",
// isNew : this.options.isNew,
// isEdited : this.options.isEdited,
// "onUpload" : function( attData ){
// this.attachment.attachmentController.addAttachment(attData);
// this.attachment.attachmentController.checkActions();
// }.bind(this)
// })
// this.selector_doc.data = this.attachment.getAttachmentData();
// this.selector_doc.loadAttachmentSelecter({
// "style": "cms",
// "title": "选择本文档图片",
// "listStyle": "preview",
// "toBase64" : true,
// "base64MaxSize" : width || 800,
// "selectType": "images"
// }, function (url, data, base64Code ) {
// if (callback)callback(url, base64Code, data);
// }.bind(this));
//},
selectCloudImage : function( callback, width ){
var _self = this;
MWF.xDesktop.requireApp("File", "FileSelector", function(){
_self.selector_cloud = new MWF.xApplication.File.FileSelector( document.body ,{
"style" : "default",
"title": "选择云文件图片",
"listStyle": "preview",
"toBase64" : true,
"base64Width" : width || 800,
"selectType" : "images",
"onPostSelectAttachment" : function(url, base64Code){
if(callback)callback(url, base64Code);
}
});
_self.selector_cloud.load();
}, true);
},
//insertImage : function( callback ){
// var form = new MWF.xApplication.ForumDocument.ImageLinkForm(this, this.data, {
// onPostOk : function( data ){
// if( callback )callback(data);
// }.bind(this)
// },{
// app : this, lp : this.lp, css : this.css, actions : this.restActions
// })
// form.create()
//},
createIconNode: function(){
var sectionIconArea = this.contentDiv.getElements("[item='portalImageAre']")[0];
var pictureBase64 = (this.data && this.data.pictureBase64) ? this.data.pictureBase64 : null;
this.clipper = new MWF.xApplication.ForumDocument.ImageClipper(sectionIconArea, {
aspectRatio : 1,
editorSize : 300,
previewerSize : 230,
resultMaxSize : 500,
resetEnable : true
}, this, this.data ? this.data.id : "" );
this.clipper.load( pictureBase64 );
//this.iconNode = new Element("img",{
// "styles" : this.css.iconNode
//}).inject(sectionIconArea);
//if ( this.data && this.data.pictureBase64){
// this.iconNode.set("src", this.data.pictureBase64)
//}else{
// this.iconNode.setStyle("display","none");
//}
//var insertUrlNode = new Element("div", {
// "styles": this.css.changeIconActionNode,
// "text": this.lp.insertUrl
//}).inject(sectionIconArea);
//insertUrlNode.addEvent("click", function () {
// this.insertImage( function( data ){
// this.iconNode.setStyle("display","");
// this.iconNode.set( "src", data.imageUrl );
// this.pictureUrl = data.imageUrl;
// this.pictureBase64 = "";
// this.pictureData = null;
// }.bind(this) );
//}.bind(this));
//
//var selectCurrentDocumentFileNode = new Element("div", {
// "styles": this.css.changeIconActionNode,
// "text": this.lp.selectCurrentDocumentFile
//}).inject(sectionIconArea);
//selectCurrentDocumentFileNode.addEvent("click", function () {
// this.selectDocImage( function( url, base64Code, data ){
// this.iconNode.setStyle("display","");
// this.iconNode.set( "src", base64Code || url);
// this.pictureUrl = "";
// this.pictureBase64 = base64Code || url;
// this.pictureData = data;
// }.bind(this), 230 );
//}.bind(this));
//
//var selectCloudFileNode = new Element("div", {
// "styles": this.css.changeIconActionNode,
// "text": this.lp.selectCloudFile
//}).inject(sectionIconArea);
//selectCloudFileNode.addEvent("click", function () {
// this.selectCloudImage( function(url , base64Code){
// this.iconNode.setStyle("display","");
// this.iconNode.set( "src", base64Code || url );
// this.pictureUrl = "";
// this.pictureBase64 = base64Code || url;
// this.pictureData = null;
// }.bind(this), 230);
//}.bind(this));
},
reloadAllParents : function(){
var aid = "Forum";
if (this.desktop.apps[aid]){
this.desktop.apps[aid].reload();
}
aid = "ForumCategory"+this.sectionData.forumId;
if (this.desktop.apps[aid]){
this.desktop.apps[aid].reload();
}
aid = "ForumSection"+this.sectionData.id;
if (this.desktop.apps[aid]){
this.desktop.apps[aid].reload();
}
},
saveSubject : function(){
var data = this.form.getResult(true, ",", true, false, true);
data.attachmentList = this.attachment.getAttachmentIds();
if (data) {
data.sectionId = this.sectionData.id;
data.pictureBase64 = this.clipper.getBase64Image() || "";
this.restActions.saveSubject(data, function (json) {
this.notice(this.options.isNew ? this.lp.createSuccess : this.lp.updateSuccess, "success");
this.fireEvent("postPublish");
this.reloadAllParents();
var oldId = "ForumDocument"+ ( this.options.isNew ? "" : this.data.id );
var appId = "ForumDocument"+json.data.id;
this.setOptions({
"id" : json.data.id,
"appId": appId,
"isEdited" : false,
"isNew" : false //,
//"index" : nextIndex
});
this.reload(oldId , appId );
}.bind(this))
}
},
_createMiddleNode_read: function(){
this.isReplyPublisher = this.permission.replyPublishAble; //this.access.isReplyPublisher( this.sectionData );
this.createPagingBar();
this.createToolbar_read();
this.subjectConainer = new Element("div.subjectConainer",{
"styles" : this.css.subjectConainer
}).inject( this.middleNode );
this.replyViewConainer = new Element("div.replyViewConainer",{
"styles" : this.css.replyViewConainer
}).inject( this.middleNode );
this.createPagingBar();
this.createSubject();
this.createReplyView();
if( !this.data.stopReply && this.isReplyPublisher ){
if( this.access.isAnonymous() ){
this.createReplyEditor_Anonymous()
}else{
this.createReplyEditor();
}
}
this.createTurnSubjectNode();
},
createPagingBar: function(){
var pagingArea = new Element("div",{
styles : this.css.pagingArea
}).inject(this.middleNode)
if( this.pagingBarTop ){
this.pagingBarBottom = pagingArea;
}else{
this.pagingBarTop = pagingArea;
}
//if( this.access.isSubjectPublisher( this.sectionData ) ){
if( this.sectionPermission.subjectPublishAble ){
var createActionNode = new Element("div",{
styles : this.css.pagingActionNode,
text: this.lp.createSubject
}).inject(pagingArea);
createActionNode.addEvents(
{
"mouseover": function () {
this.node.setStyles(this.obj.css.pagingActionNode_over);
}.bind({obj: this, node: createActionNode}),
"mouseout": function () {
this.node.setStyles(this.obj.css.pagingActionNode);
}.bind({obj: this, node: createActionNode}),
"click": function () {
if( this.access.isAnonymousDynamic() ){
this.openLoginForm(
function(){ this.createNewDocument(); }.bind(this)
);
}else{
this.createNewDocument();
}
}.bind(this)
}
)
}
//var fileterNode = new Element("div",{
// styles : this.css.fileterNode
//}).inject(pagingArea);
var pagingContainer = new Element("div").inject(pagingArea);
if( this.pagingContainerTop ){
this.pagingContainerBottom = pagingContainer;
}else{
this.pagingContainerTop = pagingContainer;
}
},
setContentSize: function () {
//var topSize = this.topNode ? this.topNode.getSize() : {"x": 0, "y": 0};
var topSize = {"x": 0, "y": 0};
var nodeSize = this.node.getSize();
var pt = this.contentContainerNode.getStyle("padding-top").toFloat();
var pb = this.contentContainerNode.getStyle("padding-bottom").toFloat();
var height = nodeSize.y - topSize.y - pt - pb;
this.contentContainerNode.setStyle("height", "" + height + "px");
},
recordStatus: function(){
return {
"sectionId" : this.options.sectionId,
"id" : this.data.id,
"appId": this.data.id ? "ForumDocument"+this.data.id : undefined,
"isEdited" : this.options.isEdited,
"isNew" : this.options.isEdited,
"viewPageNum" : this.replyView ? this.replyView.getCurrentPageNum() : 1
};
},
loadAttachment: function( area ){
this.attachment = new MWF.xApplication.Forum.Attachment( area, this, this.restActions, this.lp, {
documentId : this.data ? this.data.id : "",
isNew : this.options.isNew,
isEdited : this.options.isEdited,
"size" : "min",
onQueryUploadAttachment : function(){
this.attachment.isQueryUploadSuccess = true;
}.bind(this),
onDelete : function( data ){
//if( this.pictureData && this.pictureData.id == data.id ){
// this.iconNode.set( "src", "" );
// this.iconNode.setStyle("display","none");
// this.pictureBase64 = "";
// this.pictureData = null;
//}
}.bind(this)
})
this.attachment.load();
},
createToolbar_read : function(){
this.toolBarRead = new Element("div.toolBarRead",{
"styles" : this.css.toolBarRead
}).inject( this.middleNode )
this.toolbarLeft = new Element("div.toolbarLeft",{
"styles" : this.css.toolbarLeft
}).inject( this.toolBarRead )
new Element("div.toolbarLeftItem",{
"styles" : this.css.toolbarLeftItem,
"text" : this.data.viewTotal + this.lp.readed
}).inject( this.toolbarLeft )
this.replyTotal = new Element("div.toolbarLeftItem",{
"styles" : this.css.toolbarLeftItem,
"text" : this.data.replyTotal + this.lp.reply
}).inject( this.toolbarLeft )
this.toolbarRight = new Element("div.toolbarRight",{
"styles" : this.css.toolbarRight
}).inject( this.toolBarRead )
this.createActionBar();
//this.toolbarRightTitle = new Element("div.toolbarRightTitle",{
// "styles" : this.css.toolbarRightTitle,
// "text" : "["+ this.data.type +"]"+this.data.title
//}).inject( this.toolbarRight )
this.toolbarRightTools = new Element("div.toolbarRightTools",{
"styles" : this.css.toolbarRightTools
}).inject( this.toolbarRight )
if( this.nextSubject ){
this.toolbarNext = new Element("div.toolbarNext",{
"styles" : this.css.toolbarNext,
"title" : this.lp.nextSubject + ":" + this.nextSubject.title
}).inject( this.toolbarRightTools )
this.toolbarNext.addEvent("click",function(){
this.gotoDocument( 1 )
}.bind(this))
}
if( this.lastSubject ){
this.toolbarPrev = new Element("div.toolbarRightTools",{
"styles" : this.css.toolbarPrev,
"title" : this.lp.prevSubject + ":" + this.lastSubject.title
}).inject( this.toolbarRightTools )
this.toolbarPrev.addEvent("click",function(){
this.gotoDocument( -1 )
}.bind(this))
}
},
adjustReplyCount: function( count ){
this.data.replyTotal = this.data.replyTotal + count;
this.replyTotal.set("text", this.data.replyTotal + this.lp.reply)
},
createNewDocument: function(){
var _self = this;
var appId = "ForumDocument";
if (_self.desktop.apps[appId]){
_self.desktop.apps[appId].setCurrent();
}else {
this.desktop.openApplication(null, "ForumDocument", {
"sectionId": this.sectionData.id,
"appId": appId,
"onPostPublish" : function(){
//this.view.reload();
}.bind(this)
});
}
},
edit : function(){
var appId = "ForumDocument"+this.data.id;
this.options.isEdited = true;
this.reload(appId , appId );
},
delete : function( ev ){
var _self = this;
this.confirm("warn", ev, this.lp.deleteDocumentTitle, this.lp.deleteDocument, 350, 120, function(){
_self.restActions.deleteSubject( _self.data.id, function(){
_self.notice( _self.lp.deleteDocumentOK, "ok")
_self.reloadAllParents();
_self.close();
}.bind(this) )
this.close();
}, function(){
this.close();
});
},
postCreateReply : function( id ){
this.restActions.getReply( id, function( json ){
var reply = this.replyView._createDocument( json.data );
this.adjustReplyCount( 1 );
var t = reply.node.getTop() //- this.content.getTop();
this.contentContainerNode.scrollTo( 0, t );
}.bind(this))
},
createReply : function(){
var form = new MWF.xApplication.ForumDocument.ReplyForm(this, {}, {
"toMain" : true,
onPostOk : function( id ){
this.postCreateReply( id )
}.bind(this)
},{
app : this, lp : this.lp, css : this.css, actions : this.restActions
})
form.mainData = this.data;
form.create()
},
createActionBar : function(){
this.actionBar = new Element("div", { "styles" : this.css.actionBar, "html" : " "}).inject(this.toolbarRight)
//var action = new Element("div", {
// "styles" : this.css.actionItem,
// "text" : this.lp.createSubject
//}).inject( this.actionBar );
//action.setStyle("background-image" , "url("+this.path+"icon/action_new.png)");
//action.addEvents({
// "mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
// "mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
// "click" : function(){ this.createNewDocument() }.bind(this)
//})
if( this.permission.manageAble || this.data.creatorName == this.userName ){
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.edit
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_edit.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.edit() }.bind(this)
})
}
if( this.permission.manageAble || this.data.creatorName == this.userName ){
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.delete
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_delete.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(ev){ this.delete(ev) }.bind(this)
})
}
if( !this.data.stopReply ){
if( this.isReplyPublisher ){
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.reply
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_quote.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){
if( this.access.isAnonymousDynamic() ){
this.openLoginForm( function(){ this.reload() }.bind(this) );
}else{
this.createReply();
}
}.bind(this)
})
}
}
if( this.permission.manageAble ){
//if( this.data.isTopSubject ){
// action = new Element("div", {
// "styles" : this.css.actionItem,
// "text" : this.lp.cancelTop
// }).inject( this.actionBar );
// action.setStyle("background-image" , "url("+this.path+"icon/action_canceltop.png)");
// action.addEvents({
// "mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
// "mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
// "click" : function(){ this.cancelTop() }.bind(this)
// })
//}else{
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.setTop
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+ ( this.data.isTopSubject ? "icon/action_canceltop.png" : "icon/action_top.png")+ ")");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.setTop() }.bind(this)
})
//}
if( this.data.isCreamSubject ){
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.cancelPrime
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_cancelprime.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.cancelPrime() }.bind(this)
})
}else{
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.setPrime
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_prime.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.setPrime() }.bind(this)
})
}
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.setHot
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+ "icon/action_popular.png" + ")");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.setHotPicture() }.bind(this)
})
if( this.data.stopReply ){
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.unlock
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_unlock.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.unlock() }.bind(this)
})
}else{
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.lock
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_lock.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.lock() }.bind(this)
})
}
}
//if( this.access.isRecommender( this.sectionData )){
if( this.permission.recommendAble ){
if( this.data.recommendToBBSIndex ){
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.cancelRecommend
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_cancelrecommend.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.cancelRecommend() }.bind(this)
})
}else if( this.sectionData.sectionVisiable == this.lp.allPerson && this.sectionData.indexRecommendable == true ){
action = new Element("div", {
"styles" : this.css.actionItem,
"text" : this.lp.setRecommend
}).inject( this.actionBar );
action.setStyle("background-image" , "url("+this.path+"icon/action_recommend.png)");
action.addEvents({
"mouseover" : function(){ this.itemNode.setStyles( this.obj.css.actionItem_over ) }.bind({ obj : this, itemNode : action }),
"mouseout" : function(){ this.itemNode.setStyles( this.obj.css.actionItem ) }.bind({ obj : this, itemNode : action }),
"click" : function(){ this.setRecommend() }.bind(this)
})
}
}
},
lock : function(){
this.restActions.lock( this.data.id, function(){
this.notice( this.lp.lockSuccess )
this.reload();
}.bind(this))
},
unlock : function(){
this.restActions.unlock( this.data.id, function(){
this.notice( this.lp.unlockSuccess )
this.reload();
}.bind(this))
},
setRecommend : function(){
this.restActions.setRecommend( this.data.id, function(){
this.notice( this.lp.setRecommendSuccess )
this.reload();
}.bind(this))
},
cancelRecommend : function(){
this.restActions.cancelRecommend( this.data.id, function(){
this.notice( this.lp.cancelRecommendSuccess )
this.reload();
}.bind(this))
},
setHotPicture : function(){
MWF.xDesktop.requireApp("ForumDocument", "HotLinkForm", null, false);
var form = new MWF.xApplication.ForumDocument.HotLinkForm(this, this.data, {
documentId : this.data.id,
onPostOk : function( id ){
}.bind(this)
},{
app : this, lp : this.lp, css : this.css, actions : this.restActions
})
form.create()
},
setTop : function(){
var form = new MWF.xApplication.ForumDocument.TopSettingForm(this, this.data, {
onPostOk : function( id ){
this.reload();
}.bind(this)
},{
app : this, lp : this.lp, css : this.css, actions : this.restActions
})
form.create()
//this.restActions.topToSection( this.data.id, function(){
// this.notice( this.lp.setTopSuccess )
// this.reload();
//}.bind(this))
},
cancelTop : function(){
this.restActions.cancelTopToSection( this.data.id, function(){
this.notice( this.lp.cancelTopSuccess )
this.reload();
}.bind(this))
},
setPrime : function(){
this.restActions.setCream( this.data.id, function(){
this.notice( this.lp.setPrimeSuccess )
this.reload();
}.bind(this))
},
cancelPrime : function(){
this.restActions.cancelCream( this.data.id, function(){
this.notice( this.lp.cancelPrimeSuccess )
this.reload();
}.bind(this))
},
createSubject : function(){
this.subjectView = new MWF.xApplication.ForumDocument.SubjectView( this.subjectConainer, this, this, {
templateUrl : this.path + "listItemSubject.json",
scrollEnable : false
} )
this.subjectView.data = this.data;
this.subjectView.load();
},
openLoginForm : function( callback ){
//MWF.xDesktop.requireApp("Forum", "Login", null, false);
//var login = new MWF.xApplication.Forum.Login(this, {
// onPostOk : function(){ if(callback)callback() }
//});
//login.openLoginForm();
MWF.require("MWF.xDesktop.Authentication", null, false);
var authentication = new MWF.xDesktop.Authentication({
style : "application",
onPostOk : function(){ if(callback)callback() }
},this);
authentication.openLoginForm();
},
openSignUpForm : function(callback){
//MWF.xDesktop.requireApp("Forum", "Login", null, false);
//var login = new MWF.xApplication.Forum.Login(this, {
// onPostOk : function(){ if(callback)callback() }
//});
//login.openSignUpForm();
MWF.require("MWF.xDesktop.Authentication", null, false);
var authentication = new MWF.xDesktop.Authentication({
style : "application",
onPostOk : function(){ if(callback)callback() }
},this);
authentication.openSignUpForm();
},
gotoReply : function( index ){
this.replyView.paging.gotoItem( index );
},
createReplyView : function(){
this.replyView = new MWF.xApplication.ForumDocument.ReplyView( this.replyViewConainer, this, this, {
templateUrl : this.path + "listItemReply.json",
scrollEnable : false,
pagingEnable : true,
documentKeyWord : "orderNumber",
pagingPar : {
currentPage : this.options.viewPageNum || 1,
currentItem : this.options.replyIndex,
returnText : this.lp.returnToList ,
countPerPage : 10,
onPostLoad : function( pagingBar ){
if(pagingBar.nextPageNode){
pagingBar.nextPageNode.inject( this.pagingBarBottom, "before" );
}
}.bind(this),
onPageReturn : function( pagingBar ){
var appId = "ForumSection"+this.sectionData.id;
if (this.desktop.apps[appId]){
this.desktop.apps[appId].setCurrent();
}else {
this.desktop.openApplication(null, "ForumSection", {
"sectionId" : this.sectionData.id,
"appId": appId
});
}
this.close();
}.bind(this)
},
onGotoItem : function( top ){
var t = top - this.content.getTop();
this.contentContainerNode.scrollTo( 0, t );
}.bind(this)
} )
this.replyView.pagingContainerTop = this.pagingContainerTop;
this.replyView.pagingContainerBottom = this.pagingContainerBottom;
this.replyView.data = this.data;
this.replyView.filterData = { "subjectId" : this.data.id };
this.replyView.load();
},
createReplyEditor_Anonymous: function(){
this.replyArea = new Element("div.replyArea",{
"styles" : this.css.replyArea
}).inject( this.middleNode );
new Element("div.replyLeft",{
"styles" : this.css.replyLeft
}).inject( this.replyArea )
var replyPicture = new Element("div.replyPicture",{
"styles" : this.css.replyPicture
}).inject( this.replyArea )
var needloginNode = new Element("div.replyNeedLogin",{
"styles" : this.css.replyNeedLogin
}).inject(replyPicture)
new Element("div.replyNeedLogin",{
"styles" : this.css.replyNeedLoginText,
"text" : this.lp.replyNeedLoginText
}).inject(needloginNode)
var loginNode = new Element("div.replyLoginAction",{
"styles" : this.css.replyLoginAction,
"text" : this.lp.login
}).inject(needloginNode)
loginNode.addEvent("click" , function(){
this.openLoginForm(
function(){ this.reload() }.bind(this)
)
}.bind(this))
if( this.access.signUpMode != "disable" ){
new Element("div.replyNeedLogin",{
"styles" : this.css.replyNeedLoginText,
"text" : "|"
}).inject(needloginNode)
var signupNode = new Element("div.replyLoginAction",{
"styles" : this.css.replyLoginAction,
"text" : this.lp.signUp
}).inject(needloginNode)
signupNode.addEvent("click" , function(){
this.openSignUpForm()
}.bind(this))
}
},
createReplyEditor : function( ){
this.replyArea = new Element("div.replyArea",{
"styles" : this.css.replyArea
}).inject( this.middleNode );
this.replyEditor = new MWF.xApplication.ForumDocument.ReplyEditor( this.replyArea, this, {
style : this.options.style,
isNew : true,
onPostOk : function( id ){
this.postCreateReply( id )
}.bind(this)
} )
this.replyEditor.mainData = this.data;
this.replyEditor.load();
},
createTurnSubjectNode : function(){
if( !this.lastSubject && !this.nextSubject )return;
var turnSubjectNode = new Element("div.turnSubjectNode", {styles : this.css.turnSubjectNode}).inject( this.middleNode );
if( this.lastSubject ){
var lastSubjectNode = new Element( "div.lastSubjectNode", {
styles : this.css.lastSubjectNode,
text : this.lp.prevSubject + ":" + this.lastSubject.title
}).inject( turnSubjectNode );
lastSubjectNode.addEvents({
"click" : function(){
this.gotoDocument(-1)
}.bind(this),
"mouseover" : function(){ this.node.setStyles( this.obj.css.lastSubjectNode_over ) }.bind({obj :this, node : lastSubjectNode}),
"mouseout" : function(){ this.node.setStyles( this.obj.css.lastSubjectNode ) }.bind({obj :this, node : lastSubjectNode})
})
}else{
var lastSubjectNode = new Element( "div.lastSubjectNode", {
styles : this.css.lastSubjectNoneNode
}).inject( turnSubjectNode );
}
if( this.nextSubject ){
var nextSubjectNode = new Element( "div.nextSubjectNode", {
styles : this.css.nextSubjectNode,
text : this.lp.nextSubject + ":" + this.nextSubject.title
}).inject( turnSubjectNode );
nextSubjectNode.addEvents({
"click" : function(){
this.gotoDocument(1)
}.bind(this),
"mouseover" : function(){ this.node.setStyles( this.obj.css.nextSubjectNode_over ) }.bind({obj :this, node : nextSubjectNode}),
"mouseout" : function(){ this.node.setStyles( this.obj.css.nextSubjectNode ) }.bind({obj :this, node : nextSubjectNode})
})
}else{
var nextSubjectNode = new Element( "div.nextSubjectNode", {
styles : this.css.nextSubjectNoneNode
}).inject( turnSubjectNode );
}
},
gotoDocument : function( count ){
if( count == 1 ){
var documentData = this.nextSubject;
}else{
var documentData = this.lastSubject;
}
var oldId = "ForumDocument"+this.data.id;
var appId = "ForumDocument"+documentData.id;
if (this.desktop.apps[appId]){
this.desktop.apps[appId].setCurrent();
//this.close();
}else {
this.setOptions({
"sectionId" : null, //this.data.sectionId,
"id" : documentData.id,
"appId": appId,
"isEdited" : false,
"isNew" : false
});
this.reload(oldId , appId );
}
//var nextIndex = this.options.index + count;
//if( nextIndex < 0 ){
// this.notice( count == -1 ? this.lp.noPrevSubject : this.lp.noNextSubject );
// return;
//}
//this.restActions.listSubjectFilterPage( nextIndex+1, 1, { sectionId : this.sectionData.id },function (json) {
// if( !json.data || json.data.length == 0 ){
// this.notice( count == -1 ? this.lp.noPrevSubject : this.lp.noNextSubject )
// }else{
// var documentData = json.data[0];
// var oldId = "ForumDocument"+this.data.id;
// var appId = "ForumDocument"+documentData.id;
// if (this.desktop.apps[appId]){
// this.desktop.apps[appId].setCurrent();
// //this.close();
// }else {
// this.setOptions({
// "sectionId" : documentData.sectionId,
// "id" : documentData.id,
// "appId": appId,
// "isEdited" : false,
// "isNew" : false,
// "index" : nextIndex
// });
// this.reload(oldId , appId );
// }
// }
//}.bind(this))
},
getDateDiff: function (publishTime) {
var dateTimeStamp = Date.parse(publishTime.replace(/-/gi, "/"));
var minute = 1000 * 60;
var hour = minute * 60;
var day = hour * 24;
var halfamonth = day * 15;
var month = day * 30;
var year = month * 12;
var now = new Date().getTime();
var diffValue = now - dateTimeStamp;
if (diffValue < 0) {
//若日期不符则弹出窗口告之
//alert("结束日期不能小于开始日期!");
}
var yesterday = new Date().decrement('day', 1);
var beforYesterday = new Date().decrement('day', 2);
var yearC = diffValue / year;
var monthC = diffValue / month;
var weekC = diffValue / (7 * day);
var dayC = diffValue / day;
var hourC = diffValue / hour;
var minC = diffValue / minute;
if (yesterday.getFullYear() == dateTimeStamp.getFullYear() && yesterday.getMonth() == dateTimeStamp.getMonth() && yesterday.getDate() == dateTimeStamp.getDate()) {
result = "昨天 " + dateTimeStamp.getHours() + ":" + dateTimeStamp.getMinutes();
} else if (beforYesterday.getFullYear() == dateTimeStamp.getFullYear() && beforYesterday.getMonth() == dateTimeStamp.getMonth() && beforYesterday.getDate() == dateTimeStamp.getDate()) {
result = "前天 " + dateTimeStamp.getHours() + ":" + dateTimeStamp.getMinutes();
} else if (yearC > 1) {
result = dateTimeStamp.getFullYear() + "年" + (dateTimeStamp.getMonth() + 1) + "月" + dateTimeStamp.getDate() + "日";
} else if (monthC >= 1) {
//result= parseInt(monthC) + "个月前";
// s.getFullYear()+"年";
result = (dateTimeStamp.getMonth() + 1) + "月" + dateTimeStamp.getDate() + "日";
} else if (weekC >= 1) {
result = parseInt(weekC) + "周前";
} else if (dayC >= 1) {
result = parseInt(dayC) + "天前";
} else if (hourC >= 1) {
result = parseInt(hourC) + "小时前";
} else if (minC >= 1) {
result = parseInt(minC) + "分钟前";
} else
result = "刚才";
return result;
},
openPerson : function( userName ){
var appId = "ForumPerson"+userName;
if (this.desktop.apps[userName]){
this.desktop.apps[userName].setCurrent();
}else {
this.desktop.openApplication(null, "ForumPerson", {
"personName" : userName,
"appId": appId
});
}
},
createPersonNode : function( container, personName ){
var persons = personName.split(",");
persons.each( function(userName, i){
var span = new Element("span", {
"text" : userName,
"styles" : this.css.person
}).inject(container);
span.addEvents( {
mouseover : function(){ this.node.setStyles( this.obj.css.person_over )}.bind( {node:span, obj:this} ),
mouseout : function(){ this.node.setStyles( this.obj.css.person )}.bind( {node:span, obj:this} ),
click : function(){ this.obj.openPerson( this.userName ) }.bind( {userName:userName, obj:this} )
})
if( i != persons.length - 1 ){
new Element("span", {
"text" : ",",
}).inject(container);
}
}.bind(this))
}
});
MWF.xApplication.ForumDocument.SubjectView = new Class({
Extends: MWF.xApplication.Template.Explorer.ComplexView,
_createDocument: function(data, index){
data.index = index;
this.getUserData( data.creatorName, function(json ){
data.userIcon = json.data.icon;
data.signature = json.data.signature;
this.actions.getUserInfor( {"userName":data.creatorName}, function( json ){
data.subject = json.data.subjectCount;
data.reply = json.data.replyCount;
data.todaySubject = json.data.subjectCountToday;
data.todayReply = json.data.replyCountToday;
data.prime = json.data.creamCount;
data.accessed = json.data.popularity;
return new MWF.xApplication.ForumDocument.SubjectDocument(this.viewNode, data, this.explorer, this, null, data.index );
}.bind(this))
}.bind(this) )
},
getUserData : function( name, callback ){
if( this.app.access.isAnonymous() ){
this.actions.getPersonIcon(name, function(url){
if( callback )callback( { data : {
icon : url
} } );
}, function(){
if( callback )callback( { data : {
icon : "/x_component_ForumDocument/$Main/"+this.options.style+"/icon/noavatar_big.gif"
} } );
}.bind(this))
}else{
this.actions.getPerson( function( json ){
if( !json.data )json.data = {};
if( json.data.icon ){
json.data.icon = 'data:image/png;base64,'+json.data.icon;
}else{
json.data.icon = "/x_component_ForumDocument/$Main/"+this.options.style+"/icon/noavatar_big.gif"
}
if( callback )callback( json );
}.bind(this), null, name, true )
}
},
_getCurrentPageData: function(callback, count){
var json = {
type: "success",
count : 1,
size : 1,
data : [this.data]
};
if (callback)callback(json)
},
_removeDocument: function(documentData, all){
this.actions.deleteSection(documentData.id, function(json){
this.reload();
this.app.notice(this.app.lp.deleteDocumentOK, "success");
}.bind(this));
},
_create: function(){
},
_queryCreateViewNode: function(){
},
_postCreateViewNode: function( viewNode ){
},
_queryCreateViewHead:function(){
},
_postCreateViewHead: function( headNode ){
}
});
MWF.xApplication.ForumDocument.SubjectDocument = new Class({
Extends: MWF.xApplication.Template.Explorer.ComplexDocument,
mouseoverSubject : function(subjectNode, ev){
//var removeNode = sectionNode.getElements("[styles='sectionRemoveNode']")[0];
//if( removeNode )removeNode.setStyle("opacity",1)
},
mouseoutSubject : function(subjectNode, ev){
//var removeNode = sectionNode.getElements("[styles='sectionRemoveNode']")[0];
//if( removeNode )removeNode.setStyle("opacity",0)
},
_queryCreateDocumentNode:function( itemData ){
},
_postCreateDocumentNode: function( itemNode, itemData ){
if( this.data.attachmentList && this.data.attachmentList.length > 0 ){
var attachmentArea = itemNode.getElements("[item='attachment']")[0];
this.app.loadAttachment(attachmentArea);
}
},
sendMessage : function(itemNode, ev ){
var self = this;
if (layout.desktop.widgets["IMIMWidget"]) {
var IM = layout.desktop.widgets["IMIMWidget"];
IM.getOwner(function(){
this.openChat(ev, {
from : self.data.creatorName
});
}.bind(IM));
}
},
createReply : function(itemNode, ev ){
if( this.app.access.isAnonymousDynamic() ){
this.app.openLoginForm( function(){ this.app.reload() }.bind(this) );
}else{
var form = new MWF.xApplication.ForumDocument.ReplyForm(this, {}, {
"toMain" : true,
onPostOk : function( id ){
this.app.postCreateReply( id );
}.bind(this)
});
form.mainData = this.data;
form.create()
}
}
})
MWF.xApplication.ForumDocument.ReplyEditor = new Class({
Implements: [Options , Events],
options: {
"style": "default",
"isNew" : true
},
initialize: function(node, app, options){
this.setOptions(options);
this.node = node;
this.app = app;
},
load: function(){
var html = ""
this.node.set("html", html);
var actionTd = this.node.getElements("[item='action']")[0];
this.saveReplyAction = new Element("div",{
styles : this.app.css.actionNode,
text: this.app.lp.saveReply
}).inject(actionTd);
this.saveReplyAction.addEvent("click",function(){
this.saveReply();
}.bind(this))
MWF.xDesktop.requireApp("Template", "MForm", function () {
this.form = new MForm(this.node, this.data || {}, {
style: "forum",
isEdited: this.options.isEdited || this.options.isNew,
itemTemplate: {
userIcon: { className : "itemUserIcon2", type : "img", value : function(){
if( this.app.userData.icon ){
return "data:image/png;base64,"+ this.app.userData.icon
}else{
return "/x_component_ForumDocument/$Main/"+this.options.style+"/icon/noavatar_big.gif"
}
}.bind(this)},
creatorName: { type : "innerText", value : this.app.userName },
content: { type : "rtf", RTFConfig : {
skin : "bootstrapck",
"resize_enabled": false,
isSetImageMaxWidth : true,
//uiColor : '#9AB8F3',
//toolbarCanCollapse : true,
toolbar : [
{ name: 'document', items : [ 'Preview' ] },
//{ name: 'clipboard', items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },
{ name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike','-','RemoveFormat' ] },
//{ name: 'paragraph', items : [ 'JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock' ] },
{ name: 'styles', items : [ 'Styles','Format','Font','FontSize' ] },
{ name: 'colors', items : [ 'TextColor','BGColor' ] },
{ name: 'links', items : [ 'Link','Unlink' ] },
{ name: 'insert', items : [ 'Image' ] },
{ name: 'tools', items : [ 'Maximize','-','About' ] }
]
}}
}
}, this, this.app.css);
this.form.load();
}.bind(this), true);
},
saveReply : function(){
var data = this.form.getResult(true, ",", true, false, true);
if (data) {
data.subjectId = this.mainData.id ;
this.app.restActions.saveReply(data, function (json) {
if (json.type == "error") {
this.app.notice(json.message, "error");
} else {
this.app.notice( this.app.lp.saveReplySuccess, "ok" );
this.form.getItem("content").setValue("");
this.fireEvent("postOk", json.data.id);
}
}.bind(this))
}
}
})
MWF.xApplication.ForumDocument.ReplyForm = new Class({
Extends: MWF.xApplication.Template.Explorer.PopupForm,
Implements: [Options, Events],
options: {
"style": "default",
"width": "820",
"height": "470",
"hasTop": true,
"hasIcon": false,
"hasTopIcon" : true,
"hasTopContent" : true,
"hasBottom": true,
"title": MWF.xApplication.Forum.LP.replyFormTitle,
"draggable": true,
"closeAction": true,
"toMain" : true
},
_createTableContent: function () {
var html = "" +
"" +
" | " +
"
" +
" | " +
"
" +
" | " +
"
"
"
"
this.formTableArea.set("html", html);
if( !this.options.toMain && this.parentData ){
var mainContentEl = this.formTableArea.getElements("[item='mainContent']")[0];
var quoteTop = new Element( "div", {styles : this.css.quoteTop} ).inject( mainContentEl );
new Element( "div", {styles : this.css.quoteLeft} ).inject( quoteTop );
new Element( "div", {
styles : this.css.quoteInfor,
text : this.parentData.creatorName + this.lp.publishAt + this.parentData.createTime
}).inject( quoteTop );
var quoteBottom = new Element( "div", {styles : this.css.quoteBottom} ).inject( mainContentEl );
var text = this.parentData.contentText;
new Element( "div", {
styles : this.css.quoteText,
text : text.length > 50 ? (text.substr(0, 50) + "...") : text
}).inject( quoteBottom );
new Element( "div", {styles : this.css.quoteRight} ).inject( quoteBottom );
}
MWF.xDesktop.requireApp("Template", "MForm", function () {
this.form = new MForm(this.formTableArea, this.data, {
style: "forum",
isEdited: this.isEdited || this.isNew,
itemTemplate: {
mainSubject: { type: "innertext", defaultValue : "RE:" + this.mainData.title },
content: { type : "rtf", RTFConfig : {
skin : "bootstrapck",
"resize_enabled": false,
isSetImageMaxWidth : true,
toolbar : [
{ name: 'document', items : [ 'Preview' ] },
//{ name: 'clipboard', items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },
{ name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike','-','RemoveFormat' ] },
//{ name: 'paragraph', items : [ 'JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock' ] },
{ name: 'styles', items : [ 'Styles','Format','Font','FontSize' ] },
{ name: 'colors', items : [ 'TextColor','BGColor' ] },
{ name: 'links', items : [ 'Link','Unlink' ] },
{ name: 'insert', items : [ 'Image' ] },
{ name: 'tools', items : [ 'Maximize','-','About' ] }
]
}}
}
}, this.app, this.css);
this.form.load();
}.bind(this), true);
},
_createBottomContent: function () {
if (this.isNew || this.isEdited) {
this.okActionNode = new Element("div.formOkActionNode", {
"styles": this.css.formOkActionNode,
"text": this.app.lp.saveReply
}).inject(this.formBottomNode);
this.okActionNode.addEvent("click", function (e) {
this.ok(e);
}.bind(this));
}
this.cancelActionNode = new Element("div.formCancelActionNode", {
"styles": this.css.formCancelActionNode,
"text": this.app.lp.close
}).inject(this.formBottomNode);
this.cancelActionNode.addEvent("click", function (e) {
this.cancel(e);
}.bind(this));
},
ok: function (e) {
this.fireEvent("queryOk");
var data = this.form.getResult(true, ",", true, false, true);
if (data) {
this._ok(data, function (json) {
if (json.type == "error") {
this.app.notice(json.message, "error");
} else {
this.formMarkNode.destroy();
this.formAreaNode.destroy();
this.app.notice(this.isNew ? this.app.lp.createSuccess : this.app.lp.updateSuccess, "success");
this.fireEvent("postOk", json.data.id);
}
}.bind(this))
}
},
_ok: function (data, callback) {
data.subjectId = this.mainData.id ;
if( !this.options.toMain ){
data.parentId = this.parentData.id ;
}
this.app.restActions.saveReply( data, function(json){
if( callback )callback(json);
}.bind(this));
}
});
MWF.xApplication.ForumDocument.ReplyView = new Class({
Extends: MWF.xApplication.Template.Explorer.ComplexView,
_createDocument: function(data, index){
data.index = index;
return new MWF.xApplication.ForumDocument.ReplyDocument(this.viewNode, data, this.explorer, this, null, data.index );
},
_getCurrentPageData: function(callback, count, pageNum){
this.clearBody();
if(!count)count=10;
if(!pageNum)pageNum = 1;
if( pageNum == 1 ){
this.app.subjectConainer.setStyle("display","block");
}else{
this.app.subjectConainer.setStyle("display","none");
}
//page, count, filterData, success,failure, async
//if( !this.page ){
// this.page = 1;
//}else{
// this.page ++;
//}
//var id = (this.items.length) ? this.items[this.items.length-1].data.id : "(0)";
var filter = this.filterData || {};
this.actions.listReplyFilterPage( pageNum, count, filter, function(json){
if( !json.data )json.data = [];
if( !json.count )json.count=0;
if( callback )callback(json);
}.bind(this))
},
_removeDocument: function(documentData, all){
this.actions.deleteReply( documentData.id, function(){
this.reload();
this.app.notice( this.lp.deleteReplySuccess, "ok")
}.bind(this) )
},
_create: function(){
},
_queryCreateViewNode: function(){
},
_postCreateViewNode: function( viewNode ){
},
_queryCreateViewHead:function(){
},
_postCreateViewHead: function( headNode ){
}
});
MWF.xApplication.ForumDocument.ReplyDocument = new Class({
Extends: MWF.xApplication.Template.Explorer.ComplexDocument,
mouseoverSubject : function(subjectNode, ev){
//var removeNode = sectionNode.getElements("[styles='sectionRemoveNode']")[0];
//if( removeNode )removeNode.setStyle("opacity",1)
},
mouseoutSubject : function(subjectNode, ev){
//var removeNode = sectionNode.getElements("[styles='sectionRemoveNode']")[0];
//if( removeNode )removeNode.setStyle("opacity",0)
},
getUserData : function( name, callback ){
if( this.app.access.isAnonymous() ){
this.actions.getPersonIcon(name, function(url){
if( callback )callback( { data : {
icon : url
} } );
}, function(){
if( callback )callback( { data : {
icon : "/x_component_ForumDocument/$Main/"+this.view.options.style+"/icon/noavatar_big.gif"
} } );
}.bind(this))
}else{
this.actions.getPerson( function( json ){
if( !json.data )json.data = {};
if( json.data.icon ){
json.data.icon = 'data:image/png;base64,'+json.data.icon;
}else{
json.data.icon = "/x_component_ForumDocument/$Main/"+this.view.options.style+"/icon/noavatar_big.gif"
}
if( callback )callback( json );
}.bind(this), null, name, true )
}
},
_queryCreateDocumentNode:function( itemData ){
},
_postCreateDocumentNode: function( itemNode, itemData ){
var userIcon = itemNode.getElements( "[item='userIcon']" )[0];
var signatureContainer = itemNode.getElements("[item='signatureContainer']")[0];
this.getUserData( itemData.creatorName, function(json ){
userIcon.src = json.data.icon;
if( json.data.signature && json.data.signature!="" ){
var signatureNode = signatureContainer.getElements("[item='signature']")[0];
signatureNode.set("text", json.data.signature )
}else{
signatureContainer.destroy();
}
}.bind(this) );
this.actions.getUserInfor( {"userName":itemData.creatorName}, function( json ){
var d = json.data;
itemNode.getElements( "[item='subject']" )[0].set("text", d.subjectCount);
itemNode.getElements( "[item='reply']" )[0].set("text", d.replyCount);
itemNode.getElements( "[item='prime']" )[0].set("text", d.creamCount);
itemNode.getElements( "[item='todaySubject']" )[0].set("text", d.subjectCountToday);
itemNode.getElements( "[item='todayReply']" )[0].set("text", d.replyCountToday);
}.bind(this))
if( itemData.parentId && itemData.parentId != "" ){
var quoteContainer = itemNode.getElements( "[item='quoteContent']" )[0];
this.actions.getReply( itemData.parentId, function( json ){
var data = this.parentData = json.data;
var quoteContent = new Element("div", { "styles" : this.css.itemQuote }).inject(quoteContainer)
var content = quoteContent.set("html", data.content).get("text");
quoteContent.empty();
data.contentText = content;
new Element( "div", {styles : this.css.quoteLeftBig} ).inject( quoteContent );
var quoteArea = new Element( "div", {styles : this.css.quoteAreaBig } ).inject( quoteContent );
var quoteInfor = new Element( "div", {
styles : this.css.quoteInforBig,
text : data.orderNumber + this.lp.floor + ":" + data.creatorName + this.lp.publishAt + data.createTime
}).inject( quoteArea );
quoteInfor.addEvent("click", function(){
this.obj.app.gotoReply( this.index )
}.bind({obj : this, index : data.orderNumber || (data.index + 2) }))
new Element( "div", {
styles : this.css.quoteTextBig,
text : content.length > 100 ? (content.substr(0, 100) + "...") : content
}).inject( quoteArea );
new Element( "div", {styles : this.css.quoteRightBig} ).inject( quoteContent );
}.bind(this) , function( json ){
new Element( "div" , {
"styles" : this.css.replyBeinngDelete,
"text" : this.lp.quoteReplyBeingDeleted
}).inject(quoteContainer)
}.bind(this)
)
}
},
sendMessage : function(itemNode, ev ){
var self = this;
if (layout.desktop.widgets["IMIMWidget"]) {
var IM = layout.desktop.widgets["IMIMWidget"];
IM.getOwner(function(){
this.openChat(ev, {
from : self.data.creatorName
});
}.bind(IM));
}
},
createReply : function(itemNode, ev ){ // 对回复进行回复
if( this.app.access.isAnonymousDynamic() ){
this.app.openLoginForm( function(){ this.app.reload() }.bind(this) );
}else{
var form = new MWF.xApplication.ForumDocument.ReplyForm(this, {}, {
toMain: false,
onPostOk: function (id) {
this.app.postCreateReply(id)
}.bind(this)
})
this.data.contentText = this.node.getElements("[item='content']")[0].get("text");
form.mainData = this.app.data;
form.parentData = this.data;
form.create()
}
},
editReply : function(itemNode, ev ){ //编辑当前回复
var form = new MWF.xApplication.ForumDocument.ReplyForm(this, this.data, {
toMain : (this.data.parentId && this.data.parentId!="") ? false : true,
onPostOk : function( id ){
this.actions.getReply( id, function( json ){
var content = this.node.getElements("[item='content']")[0];
content.set( "html", json.data.content );
}.bind(this))
}.bind(this)
})
form.mainData = this.app.data;
form.parentData = this.parentData;
form.edit()
},
deleteReply : function( itemNode, ev ){
var _self = this;
this.app.confirm("warn", ev, this.lp.deleteReplyTitle, this.lp.deleteReplyText, 350, 120, function(){
//_self.view._removeDocument(_self.data, false);
_self.actions.deleteReply( _self.data.id, function(){
_self.destroy();
_self.app.adjustReplyCount( -1 );
_self.app.notice( _self.lp.deleteReplySuccess, "ok")
}.bind(this) )
this.close();
}, function(){
this.close();
});
}
});
MWF.xApplication.ForumDocument.TopSettingForm = new Class({
Extends: MWF.xApplication.Template.Explorer.PopupForm,
Implements: [Options, Events],
options: {
"style": "default",
"width": "420",
"height": "250",
"hasTop": true,
"hasIcon": false,
"hasTopIcon" : true,
"hasTopContent" : true,
"hasBottom": true,
"title": MWF.xApplication.Forum.LP.topFormTitle,
"draggable": true,
"closeAction": true
},
createTopNode: function () {
if (!this.formTopNode) {
this.formTopNode = new Element("div.formTopNode", {
"styles": this.css.formTopNode
}).inject(this.formNode);
if(this.options.hasTopIcon){
this.formTopIconNode = new Element("div", {
"styles": this.css.formTopIconNodeDocument
}).inject(this.formTopNode)
}
this.formTopTextNode = new Element("div", {
"styles": this.css.formTopTextNodeTopSetting,
"text": this.options.title
}).inject(this.formTopNode)
if (this.options.closeAction) {
this.formTopCloseActionNode = new Element("div", {"styles": this.css.formTopCloseActionNode}).inject(this.formTopNode);
this.formTopCloseActionNode.addEvent("click", function () {
this.close()
}.bind(this))
}
}
},
_createTableContent: function () {
var html = "" +
"" +
" | " +
//"
" +
//" | " +
"
" +
" | " +
"
" +
" | " +
"
"
"
"
this.formTableArea.set("html", html);
this.topToBBS = this.data.topToBBS;
this.topToForum = this.data.topToForum;
this.topToSection = this.data.topToSection;
MWF.xDesktop.requireApp("Template", "MForm", function () {
this.form = new MForm(this.formTableArea, this.data, {
style: "forum",
isEdited: this.isEdited || this.isNew,
itemTemplate: {
topType : { text : this.lp.topType },
//topToBBS: { type: "checkbox", selectValue : [true], selectText : [this.lp.topToBBS] },
topToForum: { type: "checkbox", selectValue : ["true"], selectText : [this.lp.topToForum]},
topToSection: { type: "checkbox", selectValue : ["true"], selectText : [this.lp.topToSection] }
}
}, this.app, this.css);
this.form.load();
}.bind(this), true);
},
_createBottomContent: function () {
if (this.isNew || this.isEdited) {
this.okActionNode = new Element("div.formOkActionNode", {
"styles": this.css.formOkActionNode,
"text": this.app.lp.ok
}).inject(this.formBottomNode);
this.okActionNode.addEvent("click", function (e) {
this.ok(e);
}.bind(this));
}
this.cancelActionNode = new Element("div.formCancelActionNode", {
"styles": this.css.formCancelActionNode,
"text": this.app.lp.close
}).inject(this.formBottomNode);
this.cancelActionNode.addEvent("click", function (e) {
this.cancel(e);
}.bind(this));
},
ok: function (e) {
this.fireEvent("queryOk");
var data = this.form.getResult(true, ",", true, false, true);
if (data) {
var flag = true;
//if( data.topToBBS === true || data.topToBBS === "true" ){
// this.actions.topToBBS( this.app.data.id , function( json ){
// if (json.type == "error") {
// this.app.notice(json.userMessage, "error");
// flag = false;
// }
// }, function(){
// flag = false;
// }, false )
//}else if( this.topToBBS === true || this.topToBBS === "true" ){
// this.actions.cancelTopToBBS( this.app.data.id , function( json ){
// if (json.type == "error") {
// this.app.notice(json.userMessage, "error");
// flag = false;
// }
// }, function(){
// flag = false;
// }, false )
//}
if( data.topToForum === true || data.topToForum === "true" ){
this.actions.topToForum( this.app.data.id , function( json ){
if (json.type == "error") {
this.app.notice(json.message, "error");
flag = false;
}
}, function(){
flag = false;
}, false )
}else if( this.topToForum === true || this.topToForum === "true" ){
this.actions.cancelTopToForum( this.app.data.id , function( json ){
if (json.type == "error") {
this.app.notice(json.message, "error");
flag = false;
}
}, function(){
flag = false;
}, false )
}
if( data.topToSection === true || data.topToSection === "true" ){
this.actions.topToSection( this.app.data.id , function( json ){
if (json.type == "error") {
this.app.notice(json.message, "error");
flag = false;
}
}, function(){
flag = false;
}, false )
}else if( this.topToSection === true || this.topToSection === "true" ){
this.actions.cancelTopToSection( this.app.data.id , function( json ){
if (json.type == "error") {
this.app.notice(json.message, "error");
flag = false;
}
}, function(){
flag = false;
}, false )
}
if( flag ){
this.formMarkNode.destroy();
this.formAreaNode.destroy();
this.app.notice( this.app.lp.setTopSuccess );
this.fireEvent("postOk");
}else{
this.app.notice( this.app.lp.setToFail , "error");
}
}
}
});
//MWF.xApplication.ForumDocument.ImageLinkForm = new Class({
// Extends: MWF.xApplication.Template.Explorer.PopupForm,
// Implements: [Options, Events],
// options: {
// "style": "default",
// "width": "520",
// "height": "100",
// "hasTop": true,
// "hasIcon": false,
// "hasTopIcon" : true,
// "hasTopContent" : true,
// "hasBottom": true,
// "title": MWF.xApplication.Forum.LP.insertUrl,
// "draggable": true,
// "closeAction": true
// },
// createTopNode: function () {
//
// if (!this.formTopNode) {
// this.formTopNode = new Element("div.formTopNode", {
// "styles": this.css.formTopNode
// }).inject(this.formNode);
//
// if(this.options.hasTopIcon){
// this.formTopIconNode = new Element("div", {
// "styles": this.css.formTopIconNodeDocument
// }).inject(this.formTopNode)
// }
//
// this.formTopTextNode = new Element("div", {
// "styles": this.css.formTopTextNodeImageLink,
// "text": this.options.title
// }).inject(this.formTopNode)
//
// if (this.options.closeAction) {
// this.formTopCloseActionNode = new Element("div", {"styles": this.css.formTopCloseActionNode}).inject(this.formTopNode);
// this.formTopCloseActionNode.addEvent("click", function () {
// this.close()
// }.bind(this))
// }
// }
// },
// _createTableContent: function () {
// var html = "" +
// "" +
// " | " +
// "
"
// "
"
// this.formTableArea.set("html", html);
//
// MWF.xDesktop.requireApp("Template", "MForm", function () {
// this.form = new MForm(this.formTableArea, this.data, {
// style: "forum",
// isEdited: this.isEdited || this.isNew,
// itemTemplate: {
// imageUrl: { }
// }
// }, this.app, this.css);
// this.form.load();
// }.bind(this), true);
// },
// _createBottomContent: function () {
// if (this.isNew || this.isEdited) {
// this.okActionNode = new Element("div.formOkActionNode", {
// "styles": this.css.formOkActionNode,
// "text": this.app.lp.ok
// }).inject(this.formBottomNode);
//
// this.okActionNode.addEvent("click", function (e) {
// this.ok(e);
// }.bind(this));
// }
//
// this.cancelActionNode = new Element("div.formCancelActionNode", {
// "styles": this.css.formCancelActionNode,
// "text": this.app.lp.close
// }).inject(this.formBottomNode);
//
// this.cancelActionNode.addEvent("click", function (e) {
// this.cancel(e);
// }.bind(this));
//
// },
// ok: function (e) {
// this.fireEvent("queryOk");
// var data = this.form.getResult(true, ",", true, false, true);
// if (data) {
// this.formMarkNode.destroy();
// this.formAreaNode.destroy();
// this.fireEvent("postOk", data);
// }
// }
//});
MWF.xApplication.ForumDocument.ImageClipper = new Class({
Extends: MWF.widget.ImageClipper,
initialize: function(node, options, parent, docId){
this.node = node;
this.setOptions(options);
this.parent = parent;
this.docId = docId;
this.path = MWF.defaultPath+"/widget/$ImageClipper/";
this.cssPath = MWF.defaultPath+"/widget/$ImageClipper/"+this.options.style+"/css.wcss";
this._loadCss();
this.fireEvent("init");
}//,
//_createUploadButtom : function(){
// if( !this.docId || this.docId=="" ){ return; };
// this.uploadCurrentFile = new Element("button.uploadActionNode",{
// "styles" : this.css.uploadActionNode,
// "text" : "选择本文档图片"
// }).inject(this.uploadToolbar);
// this.uploadCurrentFile.addEvents({
// "click": function(){ this.selectDocPicture(
// function(url , base64Code){
// this.loadImageAsUrl( url );
// }.bind(this)
// ); }.bind(this)
// });
//},
//selectDocPicture: function( callback ){
// MWF.xDesktop.requireApp("Forum", "Attachment", null, false);
// this.parent.actions.listAttachment( this.docId, function( json ){
// this.selector_doc = new MWF.xApplication.Forum.Attachment(document.body, this.parent, this.parent.actions, this.parent.lp, {
// //documentId : this.data ? this.data.id : "",
// isNew : false,
// isEdited : false,
// "onUpload" : function( attData ){
// this.attachment.attachmentController.addAttachment(attData);
// this.attachment.attachmentController.checkActions();
// }.bind(this)
// })
// this.selector_doc.data = json.data || [];
// this.selector_doc.loadAttachmentSelecter({
// "style": "cms",
// "title": "选择本文档图片",
// "listStyle": "preview",
// "toBase64" : true,
// "selectType": "images"
// }, function (url, data, base64Code) {
// if (callback)callback(url, base64Code);
// //this.iconNode.set("src", base64Code || url);
// //this.hotPicData.pictureBase64 = base64Code || url;
// }.bind(this));
// }.bind(this) )
//}
});