$(inputField.get(0).form).submit(function() {
inputField.attr("disabled", "disabled");
if (!optional && (textarea.val() == "")) {
+ inputField.removeAttr("disabled").focus();
return false;
}
});
return getSoneElement(element).find(".id").text();
}
+/**
+ * Returns the element of the post with the given ID.
+ *
+ * @param postId
+ * The ID of the post
+ * @returns The element of the post
+ */
+function getPost(postId) {
+ return $("#sone .post#" + postId);
+}
+
function getPostElement(element) {
return $(element).closest(".post");
}
});
}
+/**
+ * Bookmarks the post with the given ID.
+ *
+ * @param postId
+ * The ID of the post to bookmark
+ */
+function bookmarkPost(postId) {
+ (function(postId) {
+ $.getJSON("bookmark.ajax", {"formPassword": getFormPassword(), "type": "post", "post": postId}, function(data, textStatus) {
+ if ((data != null) && data.success) {
+ getPost(postId).find(".bookmark").toggleClass("hidden", true);
+ getPost(postId).find(".unbookmark").toggleClass("hidden", false);
+ }
+ });
+ })(postId);
+}
+
+/**
+ * Unbookmarks the post with the given ID.
+ *
+ * @param postId
+ * The ID of the post to unbookmark
+ */
+function unbookmarkPost(postId) {
+ $.getJSON("unbookmark.ajax", {"formPassword": getFormPassword(), "type": "post", "post": postId}, function(data, textStatus) {
+ if ((data != null) && data.success) {
+ getPost(postId).find(".bookmark").toggleClass("hidden", false);
+ getPost(postId).find(".unbookmark").toggleClass("hidden", true);
+ }
+ });
+}
+
function updateReplyLikes(replyId) {
$.getJSON("getLikes.ajax", { "type": "reply", "reply": replyId }, function(data, textStatus) {
if ((data != null) && data.success) {
return false;
});
$(postElement).find(".create-reply button:submit").click(function() {
+ button = $(this);
+ button.attr("disabled", "disabled");
sender = $(this.form).find(":input[name=sender]").val();
inputField = $(this.form).find(":input[name=text]:enabled").get(0);
postId = getPostId(this);
} else {
alert(error);
}
+ button.removeAttr("disabled");
});
})(sender, postId, text, inputField);
return false;
return false;
});
+ /* convert bookmark/unbookmark buttons to javascript functions. */
+ $(postElement).find(".bookmark").submit(function() {
+ bookmarkPost(getPostId(this));
+ return false;
+ });
+ $(postElement).find(".unbookmark").submit(function() {
+ unbookmarkPost(getPostId(this));
+ return false;
+ });
+
+ /* convert “show source” link into javascript function. */
+ $(postElement).find(".show-source").each(function() {
+ $("a", this).click(function() {
+ $(".post-text.text", getPostElement(this)).toggleClass("hidden");
+ $(".post-text.raw-text", getPostElement(this)).toggleClass("hidden");
+ return false;
+ });
+ });
+
/* add “comment” link. */
addCommentLink(getPostId(postElement), postElement, $(postElement).find(".post-status-line .time"));
})(replyElement);
addCommentLink(getPostId(replyElement), replyElement, $(replyElement).find(".reply-status-line .time"));
+ /* convert “show source” link into javascript function. */
+ $(replyElement).find(".show-reply-source").each(function() {
+ $("a", this).click(function() {
+ $(".reply-text.text", getReplyElement(this)).toggleClass("hidden");
+ $(".reply-text.raw-text", getReplyElement(this)).toggleClass("hidden");
+ return false;
+ });
+ });
+
/* convert trust control buttons to javascript functions. */
$(replyElement).find(".reply-trust").submit(function() {
trustSone(getReplyAuthor(this));
function resetActivity() {
title = document.title;
if (title.indexOf('(') == 0) {
- document.title = title.substr(title.indexOf(' ') + 1);
+ setTitle(title.substr(title.indexOf(' ') + 1));
}
}
if (!focus) {
title = document.title;
if (title.indexOf('(') != 0) {
- document.title = "(!) " + title;
+ setTitle("(!) " + title);
}
if (!iconBlinking) {
setTimeout(toggleIcon, 1500);
}
}
+/**
+ * Sets the window title after a small delay to prevent race-condition issues.
+ *
+ * @param title
+ * The title to set
+ */
+function setTitle(title) {
+ setTimeout(function() {
+ document.title = title;
+ }, 50);
+}
+
/** Whether the icon is currently showing activity. */
var iconActive = false;
iconBlinking = false;
} else {
iconActive = !iconActive;
- console.log("showing icon: " + iconActive);
changeIcon(iconActive ? "images/icon-activity.png" : "images/icon.png");
setTimeout(toggleIcon, 1500);
}
return false;
});
$("#sone #update-status").submit(function() {
+ button = $("button:submit", this);
+ button.attr("disabled", "disabled");
if ($(this).find(":input.default:enabled").length > 0) {
return false;
}
if ((data != null) && data.success) {
loadNewPost(data.postId, data.sone, data.recipient);
}
+ button.removeAttr("disabled");
});
$(this).find(":input[name=sender]").val(getCurrentSoneId());
$(this).find(":input[name=text]:enabled").val("").blur();
});
});
+ /* ajaxify the search input field. */
+ getTranslation("WebInterface.DefaultText.Search", function(defaultText) {
+ registerInputTextareaSwap("#sone #search input[name=query]", defaultText, "query", false, true);
+ });
+
/* ajaxify input field on “view Sone” page. */
getTranslation("WebInterface.DefaultText.Message", function(defaultText) {
registerInputTextareaSwap("#sone #post-message input[name=text]", defaultText, "text", false, false);
+ $("#sone #post-message .select-sender").css("display", "inline");
+ $("#sone #post-message .sender").hide();
+ $("#sone #post-message .select-sender button").click(function() {
+ $("#sone #post-message .sender").show();
+ $("#sone #post-message .select-sender").hide();
+ return false;
+ });
$("#sone #post-message").submit(function() {
- text = $(this).find(":input:enabled").val();
- $.getJSON("createPost.ajax", { "formPassword": getFormPassword(), "recipient": getShownSoneId(), "text": text }, function(data, textStatus) {
+ sender = $(this).find(":input[name=sender]").val();
+ text = $(this).find(":input[name=text]:enabled").val();
+ $.getJSON("createPost.ajax", { "formPassword": getFormPassword(), "recipient": getShownSoneId(), "sender": sender, "text": text }, function(data, textStatus) {
if ((data != null) && data.success) {
loadNewPost(data.postId, getCurrentSoneId());
}
});
- $(this).find(":input:enabled").val("").blur();
+ $(this).find(":input[name=sender]").val(getCurrentSoneId());
+ $(this).find(":input[name=text]:enabled").val("").blur();
+ $(this).find(".sender").hide();
+ $(this).find(".select-sender").show();
return false;
});
});