]> git.openstreetmap.org Git - osqa.git/blob - forum/skins/default/media/js/osqa.user.js
Closing OSQA 35. Give admins and moderators an easy way to award karma points.
[osqa.git] / forum / skins / default / media / js / osqa.user.js
1
2 function show_dialog (html, extra_class, pos, dim, yes, no_text) {
3     $dialog = $('<div class="dialog ' + extra_class + '" style="width: 1px; height: 1px;">'
4              + '<div class="dialog-content">' + html + '</div><div class="dialog-buttons">'
5             + '<button class="dialog-no">' + no_text + '</button>'
6             + '<button class="dialog-yes">' + yes.text + '</button>'
7             + '</div></div>');
8
9     $('body').append($dialog);
10
11     $dialog.css({
12         top: pos.y,
13         left: pos.x
14     });
15
16     $dialog.animate({
17         top: "-=" + (dim.h / 2),
18         left: "-=" + (dim.w / 2),
19         width: dim.w,
20         height: dim.h
21     }, 200, function() {
22         $dialog.find('.dialog-no').click(function() {
23             $dialog.fadeOut('fast');
24         });
25         $dialog.find('.dialog-yes').click(function() {
26             yes.callback($dialog);
27         });
28     });
29
30 }
31
32
33 $().ready(function() {
34     var $dropdown = $('#user-menu-dropdown');
35
36     $('#user-menu').click(function(){
37         $('.dialog').fadeOut('fast');
38         $dropdown.slideToggle('fast');        
39     });
40
41     $('.confirm').each(function() {
42         var $link = $(this);
43
44         $link.click(function(e) {
45             $dropdown.slideUp('fast');
46             var html = messages.confirm;
47
48             show_dialog(html, 'confirm', {x: e.pageX, y: e.pageY}, {w: 200, h: 100}, {
49                 text: messages.yes,
50                 callback: function() {
51                     window.location = $link.attr('href');
52                 }
53             }, messages.no);
54
55             return false;
56         });
57     });
58
59     $('#award-rep-points').click(function(e) {
60         $dropdown.slideUp('fast');
61
62         var html = '<table><tr><th>' + messages.points + '</th><td><input type="text" id="points-to-award" value="1" /></td></tr>'
63                 + '<tr><th>' + messages.message + '</th><td><textarea id="award-message"></textarea></td></tr></table>';
64
65         show_dialog(html, 'award-rep-points', {x: e.pageX, y: e.pageY}, {w: 300, h: 125}, {
66             text: messages.award,
67             callback: function($dialog) {
68                 var $points_input = $('#points-to-award');
69                 var _points = parseInt($points_input.val());
70
71                 if(!isNaN(_points)) {
72                     $dialog.fadeOut('fast');
73                     var _message = $('#award-message').val();
74                     $.post($('#award-rep-points').attr('href'), {points: _points, message: _message}, function(data) {
75                         if (data.success) {
76                             $('#user-reputation').css('background', 'yellow');
77                             $('#user-reputation').html(data.reputation);
78
79                             $('#user-reputation').animate({ backgroundColor: "transparent" }, 1000);
80                             
81                         }
82                     }, 'json')
83                 }
84             }
85         }, messages.cancel);
86
87
88         return false;
89     });
90 });