]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/skins/default/media/js/osqa.main.js
try to get the position of the event currentTarget if there is no pageX or pageY...
[osqa.git] / forum / skins / default / media / js / osqa.main.js
index 18bd941ab36f9a9a59b5053311487973a11407cd..2cae49e8f7ce9c6cde45960692ba267fd96c2291 100644 (file)
@@ -19,10 +19,12 @@ $('html').ajaxSend(function(event, xhr, settings) {
         }\r
         return cookieValue;\r
     }\r
-    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {\r
-        // Only send the token to relative URLs i.e. locally.\r
-        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));\r
-    }\r
+    try {\r
+        if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {\r
+            // Only send the token to relative URLs i.e. locally.\r
+            xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));\r
+        }\r
+    } catch (e) {}\r
 });\r
 \r
 var response_commands = {\r
@@ -102,7 +104,7 @@ var response_commands = {
         alert('ok');\r
     },\r
 \r
-    insert_comment: function(post_id, comment_id, comment, username, profile_url, delete_url, edit_url, convert_url, can_convert) {\r
+    insert_comment: function(post_id, comment_id, comment, username, profile_url, delete_url, edit_url, convert_url, can_convert, show_latest_comments_first) {\r
         var $container = $('#comments-container-' + post_id);\r
         var skeleton = $('#new-comment-skeleton-' + post_id).html().toString();\r
 \r
@@ -113,8 +115,11 @@ var response_commands = {
                 .replace(new RegExp('%DELETE_URL%', 'g'), delete_url)\r
                 .replace(new RegExp('%EDIT_URL%', 'g'), edit_url)\r
                 .replace(new RegExp('%CONVERT_URL%', 'g'), convert_url);\r
-\r
-        $container.append(skeleton);\r
+        if (show_latest_comments_first) {\r
+            $container.prepend(skeleton);\r
+        } else {\r
+            $container.append(skeleton);\r
+        }\r
 \r
         // Show the convert comment to answer tool only if the current comment can be converted\r
         if (can_convert == true) {\r
@@ -168,7 +173,7 @@ function show_dialog (extern) {
         $diag.fadeOut('fast', function() {\r
             $diag.remove();\r
         });\r
-    }\r
+    };\r
 \r
     var options = {\r
         extra_class: '',\r
@@ -192,11 +197,18 @@ function show_dialog (extern) {
         copy_id = ' id="copy_clip_button"'\r
     }\r
 \r
-    if (options.event != undefined) {\r
+    if (options.event != undefined && options.event.pageX != undefined && options.event.pageY != undefined) {\r
         options.pos = {x: options.event.pageX, y: options.event.pageY};\r
+    } else if (options.event.currentTarget != undefined) {\r
+        var el = jQuery("#" + options.event.currentTarget.id);\r
+        var position = el.offset();\r
+        options.pos = {\r
+            x: position.left,\r
+            y: position.top\r
+        }\r
     }\r
 \r
-    var html = '<div class="dialog ' + options.extra_class + '" style="display: none;">'\r
+    var html = '<div class="dialog ' + options.extra_class + '" style="display: none; z-index: 999;">'\r
              + '<div class="dialog-content">' + options.html + '</div><div class="dialog-buttons">';\r
 \r
     if (options.show_no) {\r
@@ -205,7 +217,8 @@ function show_dialog (extern) {
 \r
     html += '<button class="dialog-yes"' + copy_id + '>' + options.yes_text + '</button>' + '</div></div>';\r
 \r
-    $dialog = $(html);\r
+    var $dialog = $(html);\r
+\r
     $('body').append($dialog);\r
     var message = $('.dialog-content')[0];\r
     message.style.visibility = "hidden";\r
@@ -258,14 +271,20 @@ function show_dialog (extern) {
         message.style.visibility = "visible";\r
     });\r
 \r
-    $dialog.find('.dialog-no').click(function() {\r
-        default_close_function($dialog);\r
-    });\r
-\r
     $dialog.find('.dialog-yes').click(function() {\r
         options.yes_callback($dialog);\r
     });\r
 \r
+    if (options.hasOwnProperty("no_callback")) {\r
+        $dialog.find('.dialog-no:first-child').click(function() {\r
+            options.no_callback($dialog);\r
+        });\r
+    } else {\r
+        $dialog.find('.dialog-no:first-child').click(function() {\r
+            default_close_function($dialog);\r
+        });\r
+    }\r
+\r
     if (options.close_on_clickoutside) {\r
         $dialog.one('clickoutside', function() {\r
             default_close_function($dialog);\r
@@ -329,7 +348,8 @@ function process_ajax_response(data, evt, callback) {
     if (!data.success && data['error_message'] != undefined) {\r
         show_message(evt, data.error_message, function() {if (callback) callback(true);});\r
         end_command(false);\r
-    } else if (typeof data['commands'] != undefined){\r
+    }\r
+    if (typeof data['commands'] != undefined){\r
         for (var command in data.commands) {\r
             response_commands[command].apply(null, data.commands[command])\r
 \r
@@ -607,6 +627,14 @@ $(function() {
                 return false;\r
             });\r
 \r
+            // Submit comment with CTRL + Enter\r
+            $textarea.keydown(function(e) {\r
+                if (e.ctrlKey && e.keyCode == 13 && !$button.attr('disabled')) {\r
+                    // console.log('submit');\r
+                    $(this).parent().find('input.comment-submit').click();\r
+                }\r
+            });\r
+\r
             $cancel.click(function(event) {\r
                 if (confirm("You will lose all of your changes in this comment.  Do you still wish to proceed?")){\r
                     if (comment_in_form) {\r