}
$("#sone .post").each(function() {
postId = $(this).attr("id");
- commentElement = (function(postId) {
- var commentElement = $("<div><span>Comment</span></div>").addClass("show-reply-form").click(function() {
- replyElement = $("#sone .post#" + postId + " .create-reply");
- replyElement.removeClass("hidden");
- replyElement.removeClass("light");
- (function(replyElement) {
- replyElement.find("input.reply-input").blur(function() {
- if ($(this).hasClass("default")) {
- replyElement.addClass("light");
- }
- }).focus(function() {
- replyElement.removeClass("light");
- });
- })(replyElement);
- replyElement.find("input.reply-input").focus();
- });
- return commentElement;
- })(postId);
- $(this).find(".create-reply").addClass("hidden");
- $(this).find(".status-line .time").each(function() {
- $(this).after(commentElement.clone(true));
+ addCommentLink(postId, $(this));
+ });
+}
+
+/**
+ * Adds a “comment” link to all status lines contained in the given element.
+ *
+ * @param postId
+ * The ID of the post
+ * @param element
+ * The element to add a “comment” link to
+ */
+function addCommentLink(postId, element) {
+ commentElement = (function(postId) {
+ var commentElement = $("<div><span>Comment</span></div>").addClass("show-reply-form").click(function() {
+ replyElement = $("#sone .post#" + postId + " .create-reply");
+ replyElement.removeClass("hidden");
+ replyElement.removeClass("light");
+ (function(replyElement) {
+ replyElement.find("input.reply-input").blur(function() {
+ if ($(this).hasClass("default")) {
+ replyElement.addClass("light");
+ }
+ }).focus(function() {
+ replyElement.removeClass("light");
+ });
+ })(replyElement);
+ replyElement.find("input.reply-input").focus();
});
+ return commentElement;
+ })(postId);
+ element.find(".create-reply").addClass("hidden");
+ element.find(".status-line .time").each(function() {
+ $(this).after(commentElement.clone(true));
});
}
}
});
}
+
+/**
+ * Posts a reply and calls the given callback when the request finishes.
+ *
+ * @param postId
+ * The ID of the post the reply refers to
+ * @param text
+ * The text to post
+ * @param callbackFunction
+ * The callback function to call when the request finishes (takes 3
+ * parameters: success, error, replyId)
+ */
+function postReply(postId, text, callbackFunction) {
+ $.getJSON("ajax/createReply.ajax", { "formPassword" : getFormPassword(), "post" : postId, "text": text }, function(data, textStatus) {
+ if (data.success) {
+ callbackFunction(true, null, data.reply);
+ } else {
+ callbackFunction(false, data.error);
+ }
+ });
+}
+
+/**
+ * Requests information about the reply with the given ID.
+ *
+ * @param replyId
+ * The ID of the reply
+ * @param callbackFunction
+ * A callback function (parameters soneId, soneName, replyTime,
+ * replyDisplayTime, text, html)
+ */
+function getReply(replyId, callbackFunction) {
+ $.getJSON("ajax/getReply.ajax", { "reply" : replyId }, function(data, textStatus) {
+ if (data.success) {
+ callbackFunction(data.soneId, data.soneName, data.time, data.displayTime, data.text, data.html);
+ }
+ });
+}