Get translations of delete button texts only once.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 12 Nov 2010 10:29:22 +0000 (11:29 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 12 Nov 2010 10:29:22 +0000 (11:29 +0100)
src/main/resources/static/javascript/sone.js
src/main/resources/templates/include/head.html

index 05ab5a0..7b971bb 100644 (file)
@@ -171,36 +171,34 @@ function watchSone(soneId) {
  *
  * @param buttonId
  *            The selector of the button
- * @param translationKey
- *            The translation key of the text to show on the button
+ * @param text
+ *            The text to show on the button
  * @param deleteCallback
  *            The callback that actually deletes something
  */
-function enhanceDeleteButton(buttonId, translationKey, deleteCallback) {
+function enhanceDeleteButton(buttonId, text, deleteCallback) {
        button = $(buttonId);
        (function(button) {
-               getTranslation(translationKey, function(translation) {
-                       newButton = $("<button></button>").addClass("confirm").hide().text(translation).click(function() {
-                               $(this).fadeOut("slow");
-                               deleteCallback();
-                               return false;
-                       }).insertAfter(button);
-                       (function(button, newButton) {
-                               button.click(function() {
-                                       button.fadeOut("slow", function() {
-                                               newButton.fadeIn("slow");
-                                               $(document).one("click", function() {
-                                                       if (this != newButton.get(0)) {
-                                                               newButton.fadeOut(function() {
-                                                                       button.fadeIn();
-                                                               });
-                                                       }
-                                               });
+               newButton = $("<button></button>").addClass("confirm").hide().text(text).click(function() {
+                       $(this).fadeOut("slow");
+                       deleteCallback();
+                       return false;
+               }).insertAfter(button);
+               (function(button, newButton) {
+                       button.click(function() {
+                               button.fadeOut("slow", function() {
+                                       newButton.fadeIn("slow");
+                                       $(document).one("click", function() {
+                                               if (this != newButton.get(0)) {
+                                                       newButton.fadeOut(function() {
+                                                               button.fadeIn();
+                                                       });
+                                               }
                                        });
-                                       return false;
                                });
-                       })(button, newButton);
-               });
+                               return false;
+                       });
+               })(button, newButton);
        })(button);
 }
 
@@ -211,9 +209,11 @@ function enhanceDeleteButton(buttonId, translationKey, deleteCallback) {
  *            The selector of the button
  * @param postId
  *            The ID of the post to delete
+ * @param text
+ *            The text to replace the button with
  */
-function enhanceDeletePostButton(buttonId, postId) {
-       enhanceDeleteButton(buttonId, "WebInterface.Confirmation.DeletePostButton", function() {
+function enhanceDeletePostButton(buttonId, postId, text) {
+       enhanceDeleteButton(buttonId, text, function() {
                $.getJSON("ajax/deletePost.ajax", { "post": postId, "formPassword": $("#sone #formPassword").text() }, function(data, textStatus) {
                        if (data.success) {
                                $("#sone .post#" + postId).slideUp();
@@ -235,9 +235,11 @@ function enhanceDeletePostButton(buttonId, postId) {
  *            The selector of the button
  * @param replyId
  *            The ID of the reply to delete
+ * @param text
+ *            The text to replace the button with
  */
-function enhanceDeleteReplyButton(buttonId, replyId) {
-       enhanceDeleteButton(buttonId, "WebInterface.Confirmation.DeleteReplyButton", function() {
+function enhanceDeleteReplyButton(buttonId, replyId, text) {
+       enhanceDeleteButton(buttonId, text, function() {
                $.getJSON("ajax/deleteReply.ajax", { "reply": replyId, "formPassword": $("#sone #formPassword").text() }, function(data, textStatus) {
                        if (data.success) {
                                $("#sone .reply#" + replyId).slideUp();
index 6319e66..9330e14 100644 (file)
        <script language="javascript">
                /* replace all “delete” buttons with javascript. */
                $(document).ready(function() {
-                       $("#sone .post").each(function() {
-                               postId = $(this).attr("id");
-                               enhanceDeletePostButton("#sone .post#" + postId + " > .inner-part > .status-line .delete button", postId);
-                               (function(postId) {
-                                       $("#sone .post#" + postId + " .reply").each(function() {
-                                               replyId = $(this).attr("id");
-                                               (function(postId, reply, replyId) {
-                                                       reply.find(".delete button").each(function() {
-                                                               enhanceDeleteReplyButton("#sone .post#" + postId + " .reply#" + replyId + " .delete button", replyId);
-                                                       })
-                                               })(postId, $(this), replyId);
+                       getTranslation("WebInterface.Confirmation.DeletePostButton", function(text) {
+                               deletePostText = text;
+                               getTranslation("WebInterface.Confirmation.DeleteReplyButton", function(text) {
+                                       deleteReplyText = text;
+                                       $("#sone .post").each(function() {
+                                               postId = $(this).attr("id");
+                                               enhanceDeletePostButton("#sone .post#" + postId + " > .inner-part > .status-line .delete button", postId, deletePostText);
+                                               (function(postId) {
+                                                       $("#sone .post#" + postId + " .reply").each(function() {
+                                                               replyId = $(this).attr("id");
+                                                               (function(postId, reply, replyId) {
+                                                                       reply.find(".delete button").each(function() {
+                                                                               enhanceDeleteReplyButton("#sone .post#" + postId + " .reply#" + replyId + " .delete button", replyId, deleteReplyText);
+                                                                       })
+                                                               })(postId, $(this), replyId);
+                                                       });
+                                               })(postId);
                                        });
-                               })(postId);
+                               });
                        });
                });
        </script>