Add form for album creation.
[Sone.git] / src / main / resources / static / javascript / sone.js
index 898c3c0..16eb806 100644 (file)
@@ -672,19 +672,39 @@ function isKnownSonesPage() {
        return getPageId() == "known-sones";
 }
 
-var loadedPosts = {};
-var loadedReplies = {};
+/**
+ * Returns whether a post with the given ID exists on the current page.
+ *
+ * @param postId
+ *            The post ID to check for
+ * @returns {Boolean} <code>true</code> if a post with the given ID already
+ *          exists on the page, <code>false</code> otherwise
+ */
+function hasPost(postId) {
+       return $(".post#" + postId).length > 0;
+}
+
+/**
+ * Returns whether a reply with the given ID exists on the current page.
+ *
+ * @param replyId
+ *            The reply ID to check for
+ * @returns {Boolean} <code>true</code> if a reply with the given ID already
+ *          exists on the page, <code>false</code> otherwise
+ */
+function hasReply(replyId) {
+       return $("#sone .reply#" + replyId).length > 0;
+}
 
 function loadNewPost(postId) {
-       if (postId in loadedPosts) {
+       if (hasPost(postId)) {
                return;
        }
        $.getJSON("getPost.ajax", { "post" : postId }, function(data, textStatus) {
                if ((data != null) && data.success) {
-                       if (data.post.id in loadedPosts) {
+                       if (hasPost(data.post.id)) {
                                return;
                        }
-                       loadedPosts[data.post.id] = true;
                        if (!isIndexPage() && !(isViewSonePage() && ((getShownSoneId() == data.post.sone) || (getShownSoneId() == data.post.recipient)))) {
                                return;
                        }
@@ -709,16 +729,15 @@ function loadNewPost(postId) {
 }
 
 function loadNewReply(replyId) {
-       if (replyId in loadedReplies) {
+       if (hasReply(replyId)) {
                return;
        }
        $.getJSON("getReply.ajax", { "reply": replyId }, function(data, textStatus) {
                /* find post. */
                if ((data != null) && data.success) {
-                       if (data.reply.id in loadedReplies) {
+                       if (hasReply(data.reply.id)) {
                                return;
                        }
-                       loadedReplies[data.reply.id] = true;
                        $("#sone .post#" + data.reply.postId).each(function() {
                                var firstNewerReply = null;
                                $(this).find(".replies .reply").each(function() {
@@ -811,6 +830,17 @@ function createNotification(id, text, dismissable) {
        return notification;
 }
 
+/**
+ * Shows the details of the notification with the given ID.
+ *
+ * @param notificationId
+ *            The ID of the notification
+ */
+function showNotificationDetails(notificationId) {
+       $("#sone .notification#" + notificationId + " .text").show();
+       $("#sone .notification#" + notificationId + " .short-text").hide();
+}
+
 //
 // EVERYTHING BELOW HERE IS EXECUTED AFTER LOADING THE PAGE
 //
@@ -823,7 +853,7 @@ $(document).ready(function() {
        getTranslation("WebInterface.DefaultText.StatusUpdate", function(defaultText) {
                registerInputTextareaSwap("#sone #update-status .status-input", defaultText, "text", false, false);
                $("#sone #update-status").submit(function() {
-                       if ($(this).find(":input").hasClass("default")) {
+                       if ($(this).find(":input.default:enabled").length > 0) {
                                return false;
                        }
                        text = $(this).find(":input:enabled").val();
@@ -852,6 +882,13 @@ $(document).ready(function() {
                });
        });
 
+       /* ajaxify album creation input field. */
+       getTranslation("WebInterface.DefaultText.Reply", function(text) {
+               $("#create-album input[type=text]".each(function() {
+                       registerInputTextareaSwap(this, text, "name", false, true);
+               });
+       });
+
        /* Ajaxifies all posts. */
        /* calling getTranslation here will cache the necessary values. */
        getTranslation("WebInterface.Confirmation.DeletePostButton", function(text) {