1 WCF
.Comment
={};WCF
.Comment
.Handler
=Class
.extend({_commentAdd
:null,_commentButtonList
:{},_comments
:{},_container
:null,_containerID
:"",_displayedComments
:0,_loadNextComments
:null,_loadNextResponses
:{},_proxy
:null,_responses
:{},_userAvatar
:"",init:function(a
,b
){this._commentAdd
=null;this._commentButtonList
={};this._comments
={};this._containerID
=a
;this._displayedComments
=0;this._loadNextComments
=null;this._loadNextResponses
={};this._responses
={};this._userAvatar
=b
;this._container
=$("#"+$.wcfEscapeID(this._containerID
));if(!this._container
.length
){console
.debug("[WCF.Comment.Handler] Unable to find container identified by '"+this._containerID
+"'")}this._proxy
=new WCF
.Action
.Proxy({success
:$.proxy(this._success
,this)});this._initComments();this._initResponses();if(this._container
.data("canAdd")){this._initAddComment()}WCF
.DOMNodeInsertedHandler
.execute();WCF
.DOMNodeInsertedHandler
.addCallback("WCF.Comment.Handler",$.proxy(this._domNodeInserted
,this))},_handleLoadNextComments:function(){if(this._displayedComments
<this._container
.data("comments")){if(this._loadNextComments
===null){this._loadNextComments
=$('<li class="commentLoadNext"><button class="small">'+WCF
.Language
.get("wcf.comment.more")+"</button></li>").appendTo(this._container
);this._loadNextComments
.children("button").click($.proxy(this._loadComments
,this))}this._loadNextComments
.children("button").enable()}else{if(this._loadNextComments
!==null){this._loadNextComments
.hide()}}},_handleLoadNextResponses:function(a
){var b
=this._comments
[a
];b
.data("displayedResponses",b
.find("ul.commentResponseList > li").length
);if(b
.data("displayedResponses")<b
.data("responses")){if(this._loadNextResponses
[a
]===undefined){var d
=b
.data("responses")-b
.data("displayedResponses");this._loadNextResponses
[a
]=$('<li class="jsCommentLoadNextResponses"><a>'+WCF
.Language
.get("wcf.comment.response.more",{count
:d
})+"</a></li>").appendTo(this._commentButtonList
[a
]);this._loadNextResponses
[a
].children("a").data("commentID",a
).click($.proxy(this._loadResponses
,this));this._commentButtonList
[a
].parent().show()}}else{if(this._loadNextResponses
[a
]!==undefined){var c
=this._loadNextResponses
[a
].next();this._loadNextResponses
[a
].remove();if(c
.length
){c
.trigger("click")}}}},_loadComments:function(){this._loadNextComments
.children("button").disable();this._proxy
.setOption("data",{actionName
:"loadComments",className
:"wcf\\data\\comment\\CommentAction",parameters
:{data
:{objectID
:this._container
.data("objectID"),objectTypeID
:this._container
.data("objectTypeID"),lastCommentTime
:this._container
.data("lastCommentTime")}}});this._proxy
.sendRequest()},_loadResponses:function(a
){this._loadResponsesExecute($(a
.currentTarget
).disable().data("commentID"),false)},_loadResponsesExecute:function(a
,b
){this._proxy
.setOption("data",{actionName
:"loadResponses",className
:"wcf\\data\\comment\\response\\CommentResponseAction",parameters
:{data
:{commentID
:a
,lastResponseTime
:this._comments
[a
].data("lastResponseTime"),loadAllResponses
:(b
?1:0)}}});this._proxy
.sendRequest()},_domNodeInserted:function(){this._initComments();this._initResponses()},_initComments:function(){var a
=this;var b
=false;this._container
.find(".jsComment").each(function(e
,g
){var f
=$(g
).removeClass("jsComment");var c
=f
.data("commentID");a
._comments
[c
]=f
;var d
=f
.find("ul.commentResponseList");if(!d
.length
){d
=f
.find(".commentContent")}$container
=$('<div class="commentOptionContainer" />').hide().insertAfter(d
);a
._commentButtonList
[c
]=$("<ul />").appendTo($container
);a
._handleLoadNextResponses(c
);a
._initComment(c
,f
);a
._displayedComments
++;b
=true});if(b
){this._handleLoadNextComments()}},_initComment:function(a
,d
){if(this._container
.data("canAdd")){this._initAddResponse(a
,d
)}if(d
.data("canEdit")){var b
=$('<li><a class="jsTooltip" title="'+WCF
.Language
.get("wcf.global.button.edit")+'"><span class="icon icon16 icon-pencil" /> <span class="invisible">'+WCF
.Language
.get("wcf.global.button.edit")+"</span></a></li>");b
.data("commentID",a
).appendTo(d
.find("ul.commentOptions:eq(0)")).click($.proxy(this._prepareEdit
,this))}if(d
.data("canDelete")){var c
=$('<li><a class="jsTooltip" title="'+WCF
.Language
.get("wcf.global.button.delete")+'"><span class="icon icon16 icon-remove" /> <span class="invisible">'+WCF
.Language
.get("wcf.global.button.delete")+"</span></a></li>");c
.data("commentID",a
).appendTo(d
.find("ul.commentOptions:eq(0)")).click($.proxy(this._delete
,this))}},_initResponses:function(){var a
=this;this._container
.find(".jsCommentResponse").each(function(d
,c
){var b
=$(c
).removeClass("jsCommentResponse");var e
=b
.data("responseID");a
._responses
[e
]=b
;a
._initResponse(e
,b
)})},_initResponse:function(a
,c
){if(c
.data("canEdit")){var d
=$('<li><a class="jsTooltip" title="'+WCF
.Language
.get("wcf.global.button.edit")+'"><span class="icon icon16 icon-pencil" /> <span class="invisible">'+WCF
.Language
.get("wcf.global.button.edit")+"</span></a></li>");var b
=this;d
.data("responseID",a
).appendTo(c
.find("ul.commentOptions:eq(0)")).click(function(f
){b
._prepareEdit(f
,true)})}if(c
.data("canDelete")){var e
=$('<li><a class="jsTooltip" title="'+WCF
.Language
.get("wcf.global.button.delete")+'"><span class="icon icon16 icon-remove" /> <span class="invisible">'+WCF
.Language
.get("wcf.global.button.delete")+"</span></a></li>");var b
=this;e
.data("responseID",a
).appendTo(c
.find("ul.commentOptions:eq(0)")).click(function(f
){b
._delete(f
,true)})}},_initAddComment:function(){this._commentAdd
=$('<li class="box32 jsCommentAdd"><span class="framed">'+this._userAvatar
+"</span><div /></li>").prependTo(this._container
);var a
=this._commentAdd
.children("div");var b
=$('<input type="text" placeholder="'+WCF
.Language
.get("wcf.comment.add")+'" maxlength="65535" class="long" />').appendTo(a
);$("<small>"+WCF
.Language
.get("wcf.comment.description")+"</small>").appendTo(a
);b
.keyup($.proxy(this._keyUp
,this))},_initAddResponse:function(d
,g
){var c
=null;if(!g
.data("responses")||this._loadNextResponses
[d
]){c
=$('<li class="jsCommentShowAddResponse"><a>'+WCF
.Language
.get("wcf.comment.button.response.add")+"</a></li>").data("commentID",d
).click($.proxy(this._showAddResponse
,this)).appendTo(this._commentButtonList
[d
])}var e
=$('<div class="box32 commentResponseAdd jsCommentResponseAdd"><span class="framed">'+this._userAvatar
+"</span><div /></div>");if(c
!==null){e
.hide()}else{this._commentButtonList
[d
].parent().addClass("jsAddResponseActive")}e
.appendTo(this._commentButtonList
[d
].parent().show());var a
=e
.children("div");var f
=$('<input type="text" placeholder="'+WCF
.Language
.get("wcf.comment.response.add")+'" maxlength="65535" class="long" />').data("commentID",d
).appendTo(a
);$("<small>"+WCF
.Language
.get("wcf.comment.description")+"</small>").appendTo(a
);var b
=this;f
.keyup(function(h
){b
._keyUp(h
,true)});g
.data("responsePlaceholder",c
).data("responseInput",e
)},_prepareEdit:function(c
,a
){var d
=$(c
.currentTarget
);var b
={objectID
:this._container
.data("objectID"),objectTypeID
:this._container
.data("objectTypeID")};if(a
===true){b
.responseID
=d
.data("responseID")}else{b
.commentID
=d
.data("commentID")}this._proxy
.setOption("data",{actionName
:"prepareEdit",className
:"wcf\\data\\comment\\CommentAction",parameters
:{data
:b
}});this._proxy
.sendRequest()},_showAddResponse:function(c
){var b
=$(c
.currentTarget
);var a
=b
.data("commentID");if(b
.prev().hasClass("jsCommentLoadNextResponses")){this._loadResponsesExecute(a
,true);b
.parent().children(".button").disable()}b
.remove();var d
=this._comments
[a
].data("responseInput").show();d
.find("input").focus();d
.parents(".commentOptionContainer").addClass("jsAddResponseActive")},_keyUp:function(e
,b
){if(e
.which
!==13&&e
.which
!==27){return}var f
=$(e
.currentTarget
);if(e
.which
===27){f
.val("").trigger("blur",e
);return}var d
=$.trim(f
.val());if(d
==""){return}var a
="addComment";var c
={message
:d
,objectID
:this._container
.data("objectID"),objectTypeID
:this._container
.data("objectTypeID")};if(b
===true){a
="addResponse";c
.commentID
=f
.data("commentID")}this._proxy
.setOption("data",{actionName
:a
,className
:"wcf\\data\\comment\\CommentAction",parameters
:{data
:c
}});this._proxy
.sendRequest()},_delete:function(b
,a
){WCF
.System
.Confirmation
.show(WCF
.Language
.get("wcf.comment.delete.confirmMessage"),$.proxy(function(d
){if(d
==="confirm"){var c
={objectID
:this._container
.data("objectID"),objectTypeID
:this._container
.data("objectTypeID")};if(a
!==true){c
.commentID
=$(b
.currentTarget
).data("commentID")}else{c
.responseID
=$(b
.currentTarget
).data("responseID")}this._proxy
.setOption("data",{actionName
:"remove",className
:"wcf\\data\\comment\\CommentAction",parameters
:{data
:c
}});this._proxy
.sendRequest()}},this))},_success:function(d
,e
,b
){switch(d
.actionName
){case"addComment":this._commentAdd
.find("input").val("").blur();$(d
.returnValues
.template
).insertAfter(this._commentAdd
).wcfFadeIn();break;case"addResponse":var c
=this._comments
[d
.returnValues
.commentID
];c
.find(".jsCommentResponseAdd input").val("").blur();var a
=c
.find("ul.commentResponseList");if(!a
.length
){a
=$('<ul class="commentResponseList" />').insertBefore(c
.find(".commentOptionContainer"))}$(d
.returnValues
.template
).appendTo(a
).wcfFadeIn();break;case"edit":this._update(d
);break;case"loadComments":this._insertComments(d
);break;case"loadResponses":this._insertResponses(d
);break;case"prepareEdit":this._edit(d
);break;case"remove":this._remove(d
);break}WCF
.DOMNodeInsertedHandler
.execute()},_insertComments:function(a
){$(a
.returnValues
.template
).insertBefore(this._loadNextComments
);this._container
.data("lastCommentTime",a
.returnValues
.lastCommentTime
)},_insertResponses:function(b
){var a
=this._comments
[b
.returnValues
.commentID
];$(b
.returnValues
.template
).appendTo(a
.find("ul.commentResponseList"));a
.data("lastResponseTime",b
.returnValues
.lastResponseTime
);this._handleLoadNextResponses(b
.returnValues
.commentID
)},_remove:function(a
){if(a
.returnValues
.commentID
){this._comments
[a
.returnValues
.commentID
].remove();delete this._comments
[a
.returnValues
.commentID
]}else{this._responses
[a
.returnValues
.responseID
].remove();delete this._responses
[a
.returnValues
.responseID
]}},_edit:function(b
){if(b
.returnValues
.commentID
){var a
=this._comments
[b
.returnValues
.commentID
].find(".commentContent:eq(0) .userMessage:eq(0)")}else{var a
=this._responses
[b
.returnValues
.responseID
].find(".commentContent:eq(0) .userMessage:eq(0)")}a
.html($.proxy(function(d
,c
){var e
=$('<input type="text" class="long" maxlength="65535" /><small>'+WCF
.Language
.get("wcf.comment.description")+"</small>").val(b
.returnValues
.message
);e
.data("__html",c
).keyup($.proxy(this._saveEdit
,this));if(b
.returnValues
.commentID
){e
.data("commentID",b
.returnValues
.commentID
)}else{e
.data("responseID",b
.returnValues
.responseID
)}return e
},this));a
.children("input").focus();a
.parent().find(".containerHeadline:eq(0)").hide();a
.parent().find(".buttonGroupNavigation:eq(0)").hide()},_update:function(a
){if(a
.returnValues
.commentID
){var b
=this._comments
[a
.returnValues
.commentID
].find(".commentContent:eq(0) .userMessage:eq(0) > input")}else{var b
=this._responses
[a
.returnValues
.responseID
].find(".commentContent:eq(0) .userMessage:eq(0) > input")}b
.data("__html",a
.returnValues
.message
);this._cancelEdit(b
)},_saveEdit:function(c
){var d
=$(c
.currentTarget
);if(c
.which
===27){this._cancelEdit(d
);return}else{if(c
.which
!==13){return}}var b
=$.trim(d
.val());if(b
===""){return}var a
={message
:b
,objectID
:this._container
.data("objectID"),objectTypeID
:this._container
.data("objectTypeID")};if(d
.data("commentID")){a
.commentID
=d
.data("commentID")}else{a
.responseID
=d
.data("responseID")}this._proxy
.setOption("data",{actionName
:"edit",className
:"wcf\\data\\comment\\CommentAction",parameters
:{data
:a
}});this._proxy
.sendRequest()},_cancelEdit:function(a
){a
.parent().prev(".containerHeadline:eq(0)").show();a
.parent().next(".buttonGroupNavigation:eq(0)").show();a
.parent().html(a
.data("__html"))}});WCF
.Comment
.Like
=WCF
.Like
.extend({_getContainers:function(){return $(".commentList > li.comment")},_getObjectID:function(a
){return this._containers
[a
].data("commentID")},_buildWidget:function(b
,a
,d
,c
,e
){this._containers
[b
].find(".containerHeadline:eq(0) > h3").append(c
);if(this._canLike
){a
.appendTo(this._containers
[b
].find(".commentOptions:eq(0)"));d
.appendTo(this._containers
[b
].find(".commentOptions:eq(0)"))}},_getWidgetContainer:function(a
){},_addWidget:function(a
,b
){}});WCF
.Comment
.Response
={};WCF
.Comment
.Response
.Like
=WCF
.Like
.extend({_addWidget:function(a
,b
){},_buildWidget:function(b
,a
,d
,c
,e
){this._containers
[b
].find(".containerHeadline:eq(0) > h3").append(c
);if(this._canLike
){a
.appendTo(this._containers
[b
].find(".commentOptions:eq(0)"));d
.appendTo(this._containers
[b
].find(".commentOptions:eq(0)"))}},_getContainers:function(){return $(".commentResponseList > li.commentResponse")},_getObjectID:function(a
){return this._containers
[a
].data("responseID")},_getWidgetContainer:function(a
){}});