X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fresources%2Fstatic%2Fjavascript%2Fsone.js;h=d58f17f6c700b1d2bed3cf597aa6695117ec5960;hb=547961e6345f8f6792b8ec9a95120a10c606be0b;hp=67231968c57c66926011febca67b4f23c74d7fe8;hpb=68970fb016d46173a4e502ecac3cf693c495fa28;p=Sone.git diff --git a/src/main/resources/static/javascript/sone.js b/src/main/resources/static/javascript/sone.js index 6723196..d58f17f 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") { @@ -664,7 +667,7 @@ function ajaxifySone(soneElement) { /* mark Sone as known when clicking it. */ $(soneElement).click(function() { - markSoneAsKnown(soneElement); + markSoneAsKnown(this); }); } @@ -755,7 +758,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 +818,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() { @@ -981,8 +984,28 @@ function getStatus() { } }); if (!foundNotification) { + if (notificationId == "new-sone-notification") { + $(".sone-id", this).each(function(index, element) { + soneId = $(this).text(); + markSoneAsKnown(getSone(soneId), true); + }); + } else if (notificationId == "new-post-notification") { + $(".post-id", this).each(function(index, element) { + postId = $(this).text(); + markPostAsKnown(getPost(postId), true); + }); + } else if (notificationId == "new-replies-notification") { + $(".reply-id", this).each(function(index, element) { + replyId = $(this).text(); + markReplyAsKnown(getReply(replyId), true); + }); + } $(this).slideUp("normal", function() { $(this).remove(); + /* remove activity when no notifications are visible. */ + if ($("#sone #notification-area .notification").length == 0) { + resetActivity(); + } }); } }); @@ -996,6 +1019,9 @@ function getStatus() { notification.find(".short-text").toggleClass("hidden", opened); notification.find(".text").toggleClass("hidden", !opened); } + checkForRemovedSones(oldNotification, notification); + checkForRemovedPosts(oldNotification, notification); + checkForRemovedReplies(oldNotification, notification); oldNotification.replaceWith(notification.show()); } else { $("#sone #notification-area").append(notification); @@ -1310,9 +1336,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() { @@ -1342,6 +1365,7 @@ function resetActivity() { if (title.indexOf('(') == 0) { setTitle(title.substr(title.indexOf(' ') + 1)); } + iconBlinking = false; } function setActivity() { @@ -1380,7 +1404,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; @@ -1539,9 +1563,6 @@ $(document).ready(function() { sender = $(this).find(":input[name=sender]").val(); text = $(this).find(":input[name=text]:enabled").val(); $.getJSON("createPost.ajax", { "formPassword": getFormPassword(), "sender": sender, "text": text }, function(data, textStatus) { - if ((data != null) && data.success) { - loadNewPost(data.postId, data.sone, data.recipient); - } button.removeAttr("disabled"); }); $(this).find(":input[name=sender]").val(getCurrentSoneId()); @@ -1570,11 +1591,7 @@ $(document).ready(function() { $("#sone #post-message").submit(function() { sender = $(this).find(":input[name=sender]").val(); text = $(this).find(":input[name=text]:enabled").val(); - $.getJSON("createPost.ajax", { "formPassword": getFormPassword(), "recipient": getShownSoneId(), "sender": sender, "text": text }, function(data, textStatus) { - if ((data != null) && data.success) { - loadNewPost(data.postId, getCurrentSoneId()); - } - }); + $.getJSON("createPost.ajax", { "formPassword": getFormPassword(), "recipient": getShownSoneId(), "sender": sender, "text": text }); $(this).find(":input[name=sender]").val(getCurrentSoneId()); $(this).find(":input[name=text]:enabled").val("").blur(); $(this).find(".sender").hide();