X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fresources%2Fstatic%2Fjavascript%2Fsone.js;h=5232431c62d25971eae0015675eb6111f72fb432;hb=85a04ddab652b72780027aed2bc356f5f27b240d;hp=f167d69fd0cabc67c89c9baca5e706dd5f032bc8;hpb=cd13fe03bf2905915b3043af19480594c88e3f16;p=Sone.git diff --git a/src/main/resources/static/javascript/sone.js b/src/main/resources/static/javascript/sone.js index f167d69..5232431 100644 --- a/src/main/resources/static/javascript/sone.js +++ b/src/main/resources/static/javascript/sone.js @@ -33,7 +33,7 @@ function registerInputTextareaSwap(inputElement, defaultText, inputFieldName, op inputField.val(defaultText); } }).hide().data("inputField", $(this)).val($(this).val()); - $(this).after(textarea); + $(this).data("textarea", textarea).after(textarea); (function(inputField, textarea) { inputField.focus(function() { $(this).hide().attr("disabled", "disabled"); @@ -66,11 +66,11 @@ function registerInputTextareaSwap(inputElement, defaultText, inputFieldName, op * @param element * The element to add a “comment” link to */ -function addCommentLink(postId, element, insertAfterThisElement) { +function addCommentLink(postId, author, element, insertAfterThisElement) { if (($(element).find(".show-reply-form").length > 0) || (getPostElement(element).find(".create-reply").length == 0)) { return; } - commentElement = (function(postId) { + commentElement = (function(postId, author) { separator = $(" · ").addClass("separator"); var commentElement = $("
Comment
").addClass("show-reply-form").click(function() { replyElement = $("#sone .post#" + postId + " .create-reply"); @@ -85,10 +85,11 @@ function addCommentLink(postId, element, insertAfterThisElement) { replyElement.removeClass("light"); }); })(replyElement); - replyElement.find("input.reply-input").focus(); + textArea = replyElement.find("input.reply-input").focus().data("textarea"); + textArea.val(textArea.val() + "@sone://" + author + " "); }); return commentElement; - })(postId); + })(postId, author); $(insertAfterThisElement).after(commentElement.clone(true)); $(insertAfterThisElement).after(separator); } @@ -218,7 +219,8 @@ function enhanceDeletePostButton(button, postId, text) { if (data.success) { $("#sone .post#" + postId).slideUp(); } else if (data.error == "invalid-post-id") { - alert("Invalid post ID given!"); + /* pretend the post is already gone. */ + getPost(postId).slideUp(); } else if (data.error == "auth-required") { alert("You need to be logged in."); } else if (data.error == "not-authorized") { @@ -249,7 +251,8 @@ function enhanceDeleteReplyButton(button, replyId, text) { if (data.success) { $("#sone .reply#" + replyId).slideUp(); } else if (data.error == "invalid-reply-id") { - alert("Invalid reply ID given!"); + /* pretend the reply is already gone. */ + getReply(replyId).slideUp(); } else if (data.error == "auth-required") { alert("You need to be logged in."); } else if (data.error == "not-authorized") { @@ -413,6 +416,17 @@ function getNotificationId(notificationElement) { return $(notificationElement).attr("id"); } +/** + * Returns the time the notification was last updated. + * + * @param notificationElement + * The notification element + * @returns The last update time of the notification + */ +function getNotificationLastUpdatedTime(notificationElement) { + return $(notificationElement).attr("lastUpdatedTime"); +} + function likePost(postId) { $.getJSON("like.ajax", { "type": "post", "post" : postId, "formPassword": getFormPassword() }, function(data, textStatus) { if ((data == null) || !data.success) { @@ -664,7 +678,7 @@ function ajaxifySone(soneElement) { /* mark Sone as known when clicking it. */ $(soneElement).click(function() { - markSoneAsKnown(soneElement); + markSoneAsKnown(this); }); } @@ -755,7 +769,7 @@ function ajaxifyPost(postElement) { }); /* add “comment” link. */ - addCommentLink(getPostId(postElement), postElement, $(postElement).find(".post-status-line .time")); + addCommentLink(getPostId(postElement), getPostAuthor(postElement), postElement, $(postElement).find(".post-status-line .time")); /* process all replies. */ replyIds = []; @@ -815,7 +829,7 @@ function ajaxifyReply(replyElement) { }); }); })(replyElement); - addCommentLink(getPostId(replyElement), replyElement, $(replyElement).find(".reply-status-line .time")); + addCommentLink(getPostId(replyElement), getReplyAuthor(replyElement), replyElement, $(replyElement).find(".reply-status-line .time")); /* convert “show source” link into javascript function. */ $(replyElement).find(".show-reply-source").each(function() { @@ -999,6 +1013,10 @@ function getStatus() { } $(this).slideUp("normal", function() { $(this).remove(); + /* remove activity when no notifications are visible. */ + if ($("#sone #notification-area .notification").length == 0) { + resetActivity(); + } }); } }); @@ -1329,9 +1347,6 @@ function updatePostTimes(postIds) { * The tooltip to show */ function updateReplyTime(replyId, timeText, refreshTime, tooltip) { - if (!getReply(replyId).is(":visible")) { - return; - } getReply(replyId).find(".reply-status-line > .time").html(timeText).attr("title", tooltip); (function(replyId, refreshTime) { setTimeout(function() { @@ -1361,6 +1376,7 @@ function resetActivity() { if (title.indexOf('(') == 0) { setTitle(title.substr(title.indexOf(' ') + 1)); } + iconBlinking = false; } function setActivity() { @@ -1399,7 +1415,7 @@ var iconBlinking = false; * showing the activity state, it is returned to normal. */ function toggleIcon() { - if (focus) { + if (focus || !iconBlinking) { if (iconActive) { changeIcon("images/icon.png"); iconActive = false;