X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fresources%2Fstatic%2Fjavascript%2Fsone.js;h=bfb925b794ec662bc667170622aef71ae7c4d869;hb=deb360123df2d04b5745b9bd1d91d5452fe1f745;hp=943895b90fa650dbca222c8105c667126f9a8797;hpb=67e70ae26d1b8dc644013cddb85e90c7944bafe0;p=Sone.git diff --git a/src/main/resources/static/javascript/sone.js b/src/main/resources/static/javascript/sone.js index 943895b..bfb925b 100644 --- a/src/main/resources/static/javascript/sone.js +++ b/src/main/resources/static/javascript/sone.js @@ -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,23 @@ function ajaxifyPost(postElement) { /* show Sone menu when hovering over the avatar. */ $(postElement).find(".post-avatar").mouseover(function() { - $(".sone-post-menu", postElement).mouseleave(function() { - $(this).fadeOut(); - }).fadeIn(); - return false; + if (typeof currentSoneMenuTimeoutHandler != undefined) { + clearTimeout(currentSoneMenuTimeoutHandler); + } + currentSoneMenuId = getPostId(this); + currentSoneMenuTimeoutHandler = setTimeout(function() { + $(".sone-menu:visible").fadeOut(); + $(".sone-post-menu", postElement).mouseleave(function() { + $(this).fadeOut(); + }).fadeIn(); + }, 1000); + }).mouseleave(function() { + if (currentSoneMenuId = getPostId(this)) { + clearTimeout(currentSoneMenuTimeoutHandler); + } }); (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 +928,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 +997,23 @@ function ajaxifyReply(replyElement) { /* show Sone menu when hovering over the avatar. */ $(replyElement).find(".reply-avatar").mouseover(function() { - $(".sone-reply-menu", replyElement).mouseleave(function() { - $(this).fadeOut(); - }).fadeIn(); - return false; + if (typeof currentSoneMenuTimeoutHandler != undefined) { + clearTimeout(currentSoneMenuTimeoutHandler); + } + currentSoneMenuId = getPostId(this) + "-" + getReplyId(this); + currentSoneMenuTimeoutHandler = setTimeout(function() { + $(".sone-menu:visible").fadeOut(); + $(".sone-reply-menu", replyElement).mouseleave(function() { + $(this).fadeOut(); + }).fadeIn(); + }, 1000); + }).mouseleave(function() { + if (currentSoneMenuId = getPostId(this) + "-" + getReplyId(this)) { + clearTimeout(currentSoneMenuTimeoutHandler); + } }); (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 +1159,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 +1203,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); @@ -1807,6 +1846,12 @@ var online = true; var initiallyLoggedIn = $("#sone #loggedIn").text() == "true"; var notLoggedIn = !initiallyLoggedIn; +/** ID of the next-to-show Sone context menu. */ +var currentSoneMenuId; + +/** Timeout handler for the next-to-show Sone context menu. */ +var currentSoneMenuTimeoutHandler; + $(document).ready(function() { /* this initializes the status update input field. */ @@ -1921,11 +1966,6 @@ $(document).ready(function() { ajaxifyNotification($(this)); }); - /* disable all permalinks. */ - $(".permalink").click(function() { - return false; - }); - /* activate status polling. */ setTimeout(getStatus, 5000);