]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/skins/default/media/js/osqa.user.js
Some general UI enhancements.
[osqa.git] / forum / skins / default / media / js / osqa.user.js
index 4a168a2bf63ca4a0b1bdf31f1084f55747a0baba..6450c3c50fb3712db1463f64c807468b13345934 100644 (file)
@@ -1,41 +1,17 @@
-
-function show_dialog (html, extra_class, pos, dim, yes, no_text) {
-    $dialog = $('<div class="dialog ' + extra_class + '" style="width: 1px; height: 1px;">'
-             + '<div class="dialog-content">' + html + '</div><div class="dialog-buttons">'
-            + '<button class="dialog-no">' + no_text + '</button>'
-            + '<button class="dialog-yes">' + yes.text + '</button>'
-            + '</div></div>');
-
-    $('body').append($dialog);
-
-    $dialog.css({
-        top: pos.y,
-        left: pos.x
-    });
-
-    $dialog.animate({
-        top: "-=" + (dim.h / 2),
-        left: "-=" + (dim.w / 2),
-        width: dim.w,
-        height: dim.h
-    }, 200, function() {
-        $dialog.find('.dialog-no').click(function() {
-            $dialog.fadeOut('fast');
-        });
-        $dialog.find('.dialog-yes').click(function() {
-            yes.callback($dialog);
-        });
-    });
-
-}
-
-
 $().ready(function() {
     var $dropdown = $('#user-menu-dropdown');
 
     $('#user-menu').click(function(){
-        $('.dialog').fadeOut('fast');
-        $dropdown.slideToggle('fast');        
+        $('.dialog').fadeOut('fast', function() {
+            $dialog.remove();
+        });
+        $dropdown.slideToggle('fast', function() {
+            if ($dropdown.is(':visible')) {
+               $dropdown.one('clickoutside', function() {
+                    $dropdown.slideUp('fast')
+                });
+            }
+        });
     });
 
     $('.confirm').each(function() {
@@ -43,14 +19,18 @@ $().ready(function() {
 
         $link.click(function(e) {
             $dropdown.slideUp('fast');
-            var html = messages.confirm;
 
-            show_dialog(html, 'confirm', {x: e.pageX, y: e.pageY}, {w: 200, h: 100}, {
-                text: messages.yes,
-                callback: function() {
+            show_dialog({
+                html: messages.confirm,
+                extra_class: 'confirm',
+                event: e,
+                yes_callback: function() {
                     window.location = $link.attr('href');
-                }
-            }, messages.no);
+                },
+                yes_text: messages.yes,
+                show_no: true,
+                no_text: messages.no
+            });
 
             return false;
         });
@@ -59,31 +39,33 @@ $().ready(function() {
     $('#award-rep-points').click(function(e) {
         $dropdown.slideUp('fast');
 
-        var html = '<table><tr><th>' + messages.points + '</th><td><input type="text" id="points-to-award" value="1" /></td></tr>'
+        var table = '<table><tr><th>' + messages.points + '</th><td><input type="text" id="points-to-award" value="1" /></td></tr>'
                 + '<tr><th>' + messages.message + '</th><td><textarea id="award-message"></textarea></td></tr></table>';
 
-        show_dialog(html, 'award-rep-points', {x: e.pageX, y: e.pageY}, {w: 300, h: 125}, {
-            text: messages.award,
-            callback: function($dialog) {
-                var $points_input = $('#points-to-award');
-                var _points = parseInt($points_input.val());
-
-                if(!isNaN(_points)) {
-                    $dialog.fadeOut('fast');
-                    var _message = $('#award-message').val();
-                    $.post($('#award-rep-points').attr('href'), {points: _points, message: _message}, function(data) {
-                        if (data.success) {
-                            $('#user-reputation').css('background', 'yellow');
-                            $('#user-reputation').html(data.reputation);
-
-                            $('#user-reputation').animate({ backgroundColor: "transparent" }, 1000);
-                            
-                        }
-                    }, 'json')
-                }
-            }
-        }, messages.cancel);
-
+        show_dialog({
+                html: table,
+                extra_class: 'award-rep-points',
+                event: e,
+                yes_callback: function($dialog) {
+                    var $points_input = $('#points-to-award');
+                    var _points = parseInt($points_input.val());
+
+                    if(!isNaN(_points)) {
+                        $dialog.fadeOut('fast');
+                        var _message = $('#award-message').val();
+                        $.post($('#award-rep-points').attr('href'), {points: _points, message: _message}, function(data) {
+                            if (data.success) {
+                                $('#user-reputation').css('background', 'yellow');
+                                $('#user-reputation').html(data.reputation);
+
+                                $('#user-reputation').animate({ backgroundColor: "transparent" }, 1000);
+
+                            }
+                        }, 'json')
+                    }
+                },
+                show_no: true
+            });
 
         return false;
     });