Use correct post element.
[Sone.git] / src / main / resources / static / javascript / sone.js
index 133e1d4..8a40131 100644 (file)
@@ -299,7 +299,7 @@ function getPostId(element) {
 }
 
 function getPostTime(element) {
-       return getPostElement(element).find(".storage-time").text();
+       return getPostElement(element).find(".post-time").text();
 }
 
 function getReplyElement(element) {
@@ -311,7 +311,7 @@ function getReplyId(element) {
 }
 
 function getReplyTime(element) {
-       return getReplyElement(element).find(".storage-time").text();
+       return getReplyElement(element).find(".reply-time").text();
 }
 
 function likePost(postId) {
@@ -453,11 +453,9 @@ function ajaxifyPost(postElement) {
                $(inputField).val("");
                postReply(postId, text, function(success, error, replyId) {
                        if (success) {
-                               getReply(replyId, function(soneId, soneName, replyTime, replyDisplayTime, text, html) {
-                                       newReply = $(html).insertBefore("#sone .post#" + postId + " .create-reply");
-                                       $("#sone .post#" + postId + " .create-reply").addClass("hidden");
-                                       ajaxifyReply(newReply);
-                               });
+                               loadNewReply(replyId);
+                               markPostAsKnown(getPostElement(inputField));
+                               $("#sone .post#" + postId + " .create-reply").addClass("hidden");
                        } else {
                                alert(error);
                        }
@@ -601,7 +599,7 @@ function loadNewPost(postId) {
        $.getJSON("ajax/getPost.ajax", { "post" : postId }, function(data, textStatus) {
                if ((data != null) && data.success) {
                        var firstOlderPost = null;
-                       $("#sone #posts .post").each(function() {
+                       $("#sone .post").each(function() {
                                if (getPostTime(this) < data.post.time) {
                                        firstOlderPost = $(this);
                                        return false;
@@ -611,7 +609,7 @@ function loadNewPost(postId) {
                        if (firstOlderPost != null) {
                                newPost.insertBefore(firstOlderPost);
                        } else {
-                               $("#sone #posts .post:last").after(newPost);
+                               $("#sone #posts").append(newPost);
                        }
                        ajaxifyPost(newPost);
                        newPost.slideDown();
@@ -626,22 +624,52 @@ function loadNewReply(replyId) {
        loadedReplies[replyId] = true;
        $.getJSON("ajax/getReply.ajax", { "reply": replyId }, function(data, textStatus) {
                /* find post. */
-               $("#sone #posts .post#" + data.reply.postId).each(function() {
-                       var firstNewerReply = null;
-                       $(this).find(".replies .reply").each(function() {
-                               if (getReplyTime(this) > data.reply.time) {
-                                       firstNewerReply = $(this);
-                                       return false;
+               if ((data != null) && data.success) {
+                       $("#sone .post#" + data.reply.postId).each(function() {
+                               var firstNewerReply = null;
+                               $(this).find(".replies .reply").each(function() {
+                                       if (getReplyTime(this) > data.reply.time) {
+                                               firstNewerReply = $(this);
+                                               return false;
+                                       }
+                               });
+                               newReply = $(data.reply.html).addClass("hidden");
+                               if (firstNewerReply != null) {
+                                       newReply.insertBefore(firstNewerReply);
+                               } else {
+                                       if ($(this).find(".replies .create-reply")) {
+                                               $(this).find(".replies .create-reply").before(newReply);
+                                       } else {
+                                               $(this).find(".replies").append(newReply);
+                                       }
                                }
+                               ajaxifyReply(newReply);
+                               newReply.slideDown();
                        });
-                       newReply = $(data.reply.html);
-                       if (firstNewerReply != null) {
-                               newReply.insertAfter(firstNewerReply);
-                       } else {
-                               $(this).find(".replies .reply:last").after(newReply);
-                       }
-                       ajaxifyReply(newReply);
-               });
+               }
+       });
+}
+
+function markPostAsKnown(postElements) {
+       $(postElements).each(function() {
+               postElement = this;
+               if ($(postElement).hasClass("new")) {
+                       $.getJSON("ajax/markPostAsKnown.ajax", {"formPassword": getFormPassword(), "post": getPostId(postElement)}, function(data, textStatus) {
+                               $(postElement).removeClass("new");
+                       });
+               }
+       });
+       markReplyAsKnown($(postElements).find(".reply"));
+}
+
+function markReplyAsKnown(replyElements) {
+       $(replyElements).each(function() {
+               replyElement = this;
+               if ($(replyElement).hasClass("new")) {
+                       $.getJSON("ajax/markReplyAsKnown.ajax", {"formPassword": getFormPassword(), "reply": getReplyId(replyElement)}, function(data, textStatus) {
+                               $(replyElement).removeClass("new");
+                       });
+               }
        });
 }