Translated using Weblate (Bulgarian)
[phpmyadmin.git] / js / server_variables.js
blobb0f9eb532b494cb60cd534fe7ad6956dcf707bff
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4  * Unbind all event handlers before tearing down a page
5  */
6 AJAX.registerTeardown('server_variables.js', function () {
7     $('#serverVariables .var-row').unbind('hover');
8     $('#filterText').unbind('keyup');
9     $('a.editLink').die('click');
10     $('#serverVariables').find('.var-name').find('a img').remove();
11 });
13 AJAX.registerOnload('server_variables.js', function () {
14     var $editLink = $('a.editLink');
15     var $saveLink = $('a.saveLink');
16     var $cancelLink = $('a.cancelLink');
17     var $filterField = $('#filterText');
19     /* Show edit link on hover */
20     $('#serverVariables').delegate('.var-row', 'hover', function (event) {
21         if (event.type === 'mouseenter') {
22             var $elm = $(this).find('.var-value');
23             // Only add edit element if the element is not being edited
24             if ($elm.hasClass('editable') && ! $elm.hasClass('edit')) {
25                 $elm.prepend($editLink.clone().show());
26             }
27         } else {
28             $(this).find('a.editLink').remove();
29         }
30     }).find('.var-name').find('a').append(
31         $('#docImage').clone().show()
32     );
34     /* Launches the variable editor */
35     $editLink.live('click', function (event) {
36         event.preventDefault();
37         editVariable(this);
38     });
40     /* Event handler for variables filter */
41     $filterField.keyup(function () {
42         var textFilter = null, val = $(this).val();
43         if (val.length !== 0) {
44             textFilter = new RegExp("(^| )" + val.replace(/_/g, ' '), 'i');
45         }
46         filterVariables(textFilter);
47     });
49     /* Trigger filtering of the list based on incoming variable name */
50     if ($filterField.val()) {
51         $filterField.trigger('keyup').select();
52     }
54     /* Filters the rows by the user given regexp */
55     function filterVariables(textFilter) {
56         var mark_next = false, $row, odd_row = false;
57         $('#serverVariables .var-row').not('.var-header').each(function () {
58             $row = $(this);
59             if (mark_next || textFilter === null ||
60                 textFilter.exec($row.find('.var-name').text())
61             ) {
62                 // If current global value is different from session value
63                 // (has class diffSession), then display that one too
64                 mark_next = $row.hasClass('diffSession') && ! mark_next;
66                 odd_row = ! odd_row;
67                 $row.css('display', '');
68                 if (odd_row) {
69                     $row.addClass('odd').removeClass('even');
70                 } else {
71                     $row.addClass('even').removeClass('odd');
72                 }
73             } else {
74                 $row.css('display', 'none');
75             }
76         });
77     }
79     /* Allows the user to edit a server variable */
80     function editVariable(link) {
81         var $cell = $(link).parent();
82         var varName = $cell.parent().find('.var-name').text().replace(/ /g, '_');
83         var $mySaveLink = $saveLink.clone().show();
84         var $myCancelLink = $cancelLink.clone().show();
85         var $msgbox = PMA_ajaxShowMessage();
87         $cell
88             .addClass('edit') // variable is being edited
89             .find('a.editLink')
90             .remove(); // remove edit link
92         $mySaveLink.click(function () {
93             var $msgbox = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
94             $.get($(this).attr('href'), {
95                     ajax_request: true,
96                     type: 'setval',
97                     varName: varName,
98                     varValue: $cell.find('input').val()
99                 }, function (data) {
100                     if (data.success) {
101                         $cell
102                             .html(data.variable)
103                             .data('content', data.variable);
104                         PMA_ajaxRemoveMessage($msgbox);
105                     } else {
106                         PMA_ajaxShowMessage(data.error, false);
107                         $cell.html($cell.data('content'));
108                     }
109                     $cell.removeClass('edit');
110                 });
111             return false;
112         });
114         $myCancelLink.click(function () {
115             $cell
116                 .html($cell.data('content'))
117                 .removeClass('edit');
118             return false;
119         });
121         $.get($mySaveLink.attr('href'), {
122                 ajax_request: true,
123                 type: 'getval',
124                 varName: varName
125             }, function (data) {
126                 if (typeof data !== 'undefined' && data.success === true) {
127                     var $editor = $('<div />', {'class': 'serverVariableEditor'})
128                         .append($myCancelLink)
129                         .append(' ')
130                         .append($mySaveLink)
131                         .append(' ')
132                         .append(
133                             $('<div/>').append(
134                                 $('<input />', {type: 'text'}).val(data.message)
135                             )
136                         );
137                     // Save and replace content
138                     $cell
139                     .data('content', $cell.html())
140                     .html($editor)
141                     .find('input')
142                     .focus()
143                     .keydown(function (event) { // Keyboard shortcuts
144                         if (event.keyCode === 13) { // Enter key
145                             $mySaveLink.trigger('click');
146                         } else if (event.keyCode === 27) { // Escape key
147                             $myCancelLink.trigger('click');
148                         }
149                     });
150                     PMA_ajaxRemoveMessage($msgbox);
151                 } else {
152                     $cell.removeClass('edit');
153                     PMA_ajaxShowMessage(data.error);
154                 }
155             });
156     }