Merge branch 'next' into dev/image
[Sone.git] / src / main / resources / static / javascript / sone.js
index 943895b..f6327e4 100644 (file)
@@ -291,7 +291,7 @@ function getSoneElement(element) {
  * @return The Sone ID
  */
 function getMenuSone(element) {
-       return $(element).closest(".sone-menu").find(".sone-id").text();
+       return $(element).closest(".sone-menu").find(".sone-menu-id").text();
 }
 
 /**
@@ -809,6 +809,15 @@ function ajaxifyPost(postElement) {
                })
        });
 
+       /* ajaxify author/post links */
+       $(".post-status-line .permalink a", postElement).click(function() {
+               if (!$(".create-reply", postElement).hasClass("hidden")) {
+                       textArea = $("input.reply-input", postElement).focus().data("textarea");
+                       $(textArea).replaceSelection($(this).attr("href"));
+               }
+               return false;
+       });
+
        /* add “comment” link. */
        addCommentLink(getPostId(postElement), getPostAuthor(postElement), postElement, $(postElement).find(".post-status-line .permalink-author"));
 
@@ -849,13 +858,14 @@ function ajaxifyPost(postElement) {
 
        /* show Sone menu when hovering over the avatar. */
        $(postElement).find(".post-avatar").mouseover(function() {
+               $(".sone-menu:visible").fadeOut();
                $(".sone-post-menu", postElement).mouseleave(function() {
                        $(this).fadeOut();
                }).fadeIn();
                return false;
        });
        (function(postElement) {
-               var soneId = $(".sone-id", postElement).text();
+               var soneId = $(".sone-menu-id", postElement).text();
                $(".sone-post-menu .follow", postElement).click(function() {
                        var followElement = this;
                        ajaxGet("followSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
@@ -909,6 +919,16 @@ function ajaxifyReply(replyElement) {
                        });
                });
        })(replyElement);
+
+       /* ajaxify author links */
+       $(".reply-status-line .permalink a", replyElement).click(function() {
+               if (!$(".create-reply", getPostElement(replyElement)).hasClass("hidden")) {
+                       textArea = $("input.reply-input", getPostElement(replyElement)).focus().data("textarea");
+                       $(textArea).replaceSelection($(this).attr("href"));
+               }
+               return false;
+       });
+
        addCommentLink(getPostId(replyElement), getReplyAuthor(replyElement), replyElement, $(replyElement).find(".reply-status-line .permalink-author"));
 
        /* convert “show source” link into javascript function. */
@@ -968,13 +988,14 @@ function ajaxifyReply(replyElement) {
 
        /* show Sone menu when hovering over the avatar. */
        $(replyElement).find(".reply-avatar").mouseover(function() {
+               $(".sone-menu:visible").fadeOut();
                $(".sone-reply-menu", replyElement).mouseleave(function() {
                        $(this).fadeOut();
                }).fadeIn();
                return false;
        });
        (function(replyElement) {
-               var soneId = $(".sone-id", replyElement).text();
+               var soneId = $(".sone-menu-id", replyElement).text();
                $(".sone-menu .follow", replyElement).click(function() {
                        var followElement = this;
                        ajaxGet("followSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
@@ -1120,7 +1141,7 @@ function checkForRemovedPosts(oldNotification, newNotification) {
  *            The new notification element
  */
 function checkForRemovedReplies(oldNotification, newNotification) {
-       if (getNotificationId(oldNotification) != "new-replies-notification") {
+       if (getNotificationId(oldNotification) != "new-reply-notification") {
                return;
        }
        oldIds = getElementIds(oldNotification, ".reply-id");
@@ -1164,7 +1185,7 @@ function getStatus() {
                                                        postId = $(this).text();
                                                        markPostAsKnown(getPost(postId), true);
                                                });
-                                       } else if (notificationId == "new-replies-notification") {
+                                       } else if (notificationId == "new-reply-notification") {
                                                $(".reply-id", this).each(function(index, element) {
                                                        replyId = $(this).text();
                                                        markReplyAsKnown(getReply(replyId), true);
@@ -1921,11 +1942,6 @@ $(document).ready(function() {
                ajaxifyNotification($(this));
        });
 
-       /* disable all permalinks. */
-       $(".permalink").click(function() {
-               return false;
-       });
-
        /* activate status polling. */
        setTimeout(getStatus, 5000);