🔀 Merge branch 'release/v82'
[Sone.git] / src / main / resources / static / javascript / sone.js
index efcf7cc..333d9d1 100644 (file)
@@ -495,74 +495,6 @@ function unlikeReply(replyId) {
 }
 
 /**
- * Trusts the Sone with the given ID.
- *
- * @param soneId
- *            The ID of the Sone to trust
- */
-function trustSone(soneId) {
-       ajaxGet("trustSone.ajax", { "formPassword" : getFormPassword(), "sone" : soneId }, function(data) {
-               if ((data != null) && data.success) {
-                       updateTrustControls(soneId, data.trustValue);
-               }
-       });
-}
-
-/**
- * Distrusts the Sone with the given ID, i.e. assigns a negative trust value.
- *
- * @param soneId
- *            The ID of the Sone to distrust
- */
-function distrustSone(soneId) {
-       ajaxGet("distrustSone.ajax", { "formPassword" : getFormPassword(), "sone" : soneId }, function(data) {
-               if ((data != null) && data.success) {
-                       updateTrustControls(soneId, data.trustValue);
-               }
-       });
-}
-
-/**
- * Untrusts the Sone with the given ID, i.e. removes any trust assignment.
- *
- * @param soneId
- *            The ID of the Sone to untrust
- */
-function untrustSone(soneId) {
-       ajaxGet("untrustSone.ajax", { "formPassword" : getFormPassword(), "sone" : soneId }, function(data) {
-               if ((data != null) && data.success) {
-                       updateTrustControls(soneId, data.trustValue);
-               }
-       });
-}
-
-/**
- * Updates the trust controls for all posts and replies of the given Sone,
- * according to the given trust value.
- *
- * @param soneId
- *            The ID of the Sone to update all trust controls for
- * @param trustValue
- *            The trust value for the Sone
- */
-function updateTrustControls(soneId, trustValue) {
-       sone.find(".post").each(function() {
-               if (getPostAuthor(this) === soneId) {
-                       getPostElement(this).find(".post-trust").toggleClass("hidden", trustValue != null);
-                       getPostElement(this).find(".post-distrust").toggleClass("hidden", trustValue != null);
-                       getPostElement(this).find(".post-untrust").toggleClass("hidden", trustValue == null);
-               }
-       });
-       sone.find(".reply").each(function() {
-               if (getReplyAuthor(this) === soneId) {
-                       getReplyElement(this).find(".reply-trust").toggleClass("hidden", trustValue != null);
-                       getReplyElement(this).find(".reply-distrust").toggleClass("hidden", trustValue != null);
-                       getReplyElement(this).find(".reply-untrust").toggleClass("hidden", trustValue == null);
-               }
-       });
-}
-
-/**
  * Bookmarks the post with the given ID.
  *
  * @param postId
@@ -685,6 +617,40 @@ function ajaxifySone(soneElement) {
        });
 }
 
+function followSone(soneId) {
+       return function() {
+               const followElement = this;
+               ajaxGet("followSone.ajax", {"sone": soneId, "formPassword": getFormPassword()}, function () {
+                       $(followElement).addClass("hidden");
+                       $(followElement).parent().find(".unfollow").removeClass("hidden");
+                       sone.find(".sone-menu").each(function () {
+                               if (getMenuSone(this) === soneId) {
+                                       $(".follow", this).toggleClass("hidden", true);
+                                       $(".unfollow", this).toggleClass("hidden", false);
+                               }
+                       });
+               });
+               return false;
+       }
+}
+
+function unfollowSone(soneId) {
+       return function() {
+               const unfollowElement = this;
+               ajaxGet("unfollowSone.ajax", {"sone": soneId, "formPassword": getFormPassword()}, function () {
+                       $(unfollowElement).addClass("hidden");
+                       $(unfollowElement).parent().find(".follow").removeClass("hidden");
+                       sone.find(".sone-menu").each(function () {
+                               if (getMenuSone(this) === soneId) {
+                                       $(".follow", this).toggleClass("hidden", false);
+                                       $(".unfollow", this).toggleClass("hidden", true);
+                               }
+                       });
+               });
+               return false;
+       }
+};
+
 /**
  * Ajaxifies the given post by enhancing all eligible elements with AJAX.
  *
@@ -739,20 +705,6 @@ function ajaxifyPost(postElement) {
                return false;
        });
 
-       /* convert trust control buttons to javascript functions. */
-       $(postElement).find(".post-trust").submit(function() {
-               trustSone(getPostAuthor(this));
-               return false;
-       });
-       $(postElement).find(".post-distrust").submit(function() {
-               distrustSone(getPostAuthor(this));
-               return false;
-       });
-       $(postElement).find(".post-untrust").submit(function() {
-               untrustSone(getPostAuthor(this));
-               return false;
-       });
-
        /* convert bookmark/unbookmark buttons to javascript functions. */
        $(postElement).find(".bookmark").submit(function() {
                bookmarkPost(getPostId(this));
@@ -785,16 +737,7 @@ function ajaxifyPost(postElement) {
        });
 
        /* convert â€śshow more” link into javascript function. */
-       $(postElement).find(".expand-post-text").each(function() {
-               $(this).click(function() {
-                       $(".post-text.text", getPostElement(this)).toggleClass("hidden");
-                       $(".post-text.short-text", getPostElement(this)).toggleClass("hidden");
-                       $(".expand-post-text", getPostElement(this)).toggleClass("hidden");
-                       $(".shrink-post-text", getPostElement(this)).toggleClass("hidden");
-                       return false;
-               });
-       });
-       $(postElement).find(".shrink-post-text").each(function() {
+       const toggleShowMore = function() {
                $(this).click(function() {
                        $(".post-text.text", getPostElement(this)).toggleClass("hidden");
                        $(".post-text.short-text", getPostElement(this)).toggleClass("hidden");
@@ -802,7 +745,9 @@ function ajaxifyPost(postElement) {
                        $(".shrink-post-text", getPostElement(this)).toggleClass("hidden");
                        return false;
                });
-       });
+       };
+       $(postElement).find(".expand-post-text").each(toggleShowMore);
+       $(postElement).find(".shrink-post-text").each(toggleShowMore);
 
        /* ajaxify author/post links */
        $(".post-status-line .permalink a", postElement).click(function() {
@@ -872,34 +817,8 @@ function ajaxifyPost(postElement) {
        });
        (function(postElement) {
                const soneId = $(".sone-menu-id:first", postElement).text();
-               $(".sone-post-menu .follow", postElement).click(function() {
-                       const followElement = this;
-                       ajaxGet("followSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
-                               $(followElement).addClass("hidden");
-                               $(followElement).parent().find(".unfollow").removeClass("hidden");
-                               sone.find(".sone-menu").each(function() {
-                                       if (getMenuSone(this) === soneId) {
-                                               $(".follow", this).toggleClass("hidden", true);
-                                               $(".unfollow", this).toggleClass("hidden", false);
-                                       }
-                               });
-                       });
-                       return false;
-               });
-               $(".sone-post-menu .unfollow", postElement).click(function() {
-                       const unfollowElement = this;
-                       ajaxGet("unfollowSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
-                               $(unfollowElement).addClass("hidden");
-                               $(unfollowElement).parent().find(".follow").removeClass("hidden");
-                               sone.find(".sone-menu").each(function() {
-                                       if (getMenuSone(this) === soneId) {
-                                               $(".follow", this).toggleClass("hidden", false);
-                                               $(".unfollow", this).toggleClass("hidden", true);
-                                       }
-                               });
-                       });
-                       return false;
-               });
+               $(".sone-post-menu .follow", postElement).click(followSone(soneId));
+               $(".sone-post-menu .unfollow", postElement).click(unfollowSone(soneId));
        })(postElement);
 }
 
@@ -959,16 +878,7 @@ function ajaxifyReply(replyElement) {
        });
 
        /* convert â€śshow more” link into javascript function. */
-       $(replyElement).find(".expand-reply-text").each(function() {
-               $(this).click(function() {
-                       $(".reply-text.text", getReplyElement(this)).toggleClass("hidden");
-                       $(".reply-text.short-text", getReplyElement(this)).toggleClass("hidden");
-                       $(".expand-reply-text", getReplyElement(this)).toggleClass("hidden");
-                       $(".shrink-reply-text", getReplyElement(this)).toggleClass("hidden");
-                       return false;
-               });
-       });
-       $(replyElement).find(".shrink-reply-text").each(function() {
+       const toggleShowMore = function() {
                $(this).click(function() {
                        $(".reply-text.text", getReplyElement(this)).toggleClass("hidden");
                        $(".reply-text.short-text", getReplyElement(this)).toggleClass("hidden");
@@ -976,21 +886,9 @@ function ajaxifyReply(replyElement) {
                        $(".shrink-reply-text", getReplyElement(this)).toggleClass("hidden");
                        return false;
                });
-       });
-
-       /* convert trust control buttons to javascript functions. */
-       $(replyElement).find(".reply-trust").submit(function() {
-               trustSone(getReplyAuthor(this));
-               return false;
-       });
-       $(replyElement).find(".reply-distrust").submit(function() {
-               distrustSone(getReplyAuthor(this));
-               return false;
-       });
-       $(replyElement).find(".reply-untrust").submit(function() {
-               untrustSone(getReplyAuthor(this));
-               return false;
-       });
+       };
+       $(replyElement).find(".expand-reply-text").each(toggleShowMore);
+       $(replyElement).find(".shrink-reply-text").each(toggleShowMore);
 
        /* show Sone menu when hovering over the avatar. */
        $(replyElement).find(".reply-avatar").mouseover(function() {
@@ -1011,34 +909,8 @@ function ajaxifyReply(replyElement) {
        });
        (function(replyElement) {
                const soneId = $(".sone-menu-id", replyElement).text();
-               $(".sone-menu .follow", replyElement).click(function() {
-                       const followElement = this;
-                       ajaxGet("followSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
-                               $(followElement).addClass("hidden");
-                               $(followElement).parent().find(".unfollow").removeClass("hidden");
-                               sone.find(".sone-menu").each(function() {
-                                       if (getMenuSone(this) === soneId) {
-                                               $(".follow", this).toggleClass("hidden", true);
-                                               $(".unfollow", this).toggleClass("hidden", false);
-                                       }
-                               });
-                       });
-                       return false;
-               });
-               $(".sone-menu .unfollow", replyElement).click(function() {
-                       const followElement = this;
-                       ajaxGet("unfollowSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
-                               $(unfollowElement).addClass("hidden");
-                               $(unfollowElement).parent().find(".follow").removeClass("hidden");
-                               sone.find(".sone-menu").each(function() {
-                                       if (getMenuSone(this) === soneId) {
-                                               $(".follow", this).toggleClass("hidden", false);
-                                               $(".unfollow", this).toggleClass("hidden", true);
-                                       }
-                               });
-                       });
-                       return false;
-               });
+               $(".sone-menu .follow", replyElement).click(followSone(soneId));
+               $(".sone-menu .unfollow", replyElement).click(unfollowSone(soneId));
        })(replyElement);
 }
 
@@ -1309,7 +1181,7 @@ function getCurrentSoneId() {
 /**
  * Returns the content of the page-id attribute.
  *
- * @returns The page ID
+ * @returns String The page ID
  */
 function getPageId() {
        return sone.find(".page-id").text();
@@ -1653,7 +1525,7 @@ function updatePostTimes(postIds) {
 /**
  * Updates the time of the reply with the given ID.
  *
- * @param postId
+ * @param replyId
  *            The ID of the reply to update
  * @param timeText
  *            The text of the time to show
@@ -1674,7 +1546,7 @@ function updateReplyTime(replyId, timeText, refreshTime, tooltip) {
 /**
  * Requests new rendered times for the posts with the given IDs.
  *
- * @param postIds
+ * @param replyIds
  *            Comma-separated post IDs
  */
 function updateReplyTimes(replyIds) {