Translated using Weblate (Turkish)
[phpmyadmin.git] / js / server_variables.js
blobe90b68028f97620cdf2115bfa7f74bfaf2040551
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     $('#filterText').unbind('keyup');
8     $(document).off('click', 'a.editLink');
9     $('#serverVariables').find('.var-name').find('a img').remove();
10 });
12 AJAX.registerOnload('server_variables.js', function () {
13     var $editLink = $('a.editLink');
14     var $saveLink = $('a.saveLink');
15     var $cancelLink = $('a.cancelLink');
16     var $filterField = $('#filterText');
19     $('#serverVariables').find('.var-name').find('a').append(
20         $('#docImage').clone().show()
21     );
23     /* Launches the variable editor */
24     $(document).on('click', 'a.editLink', function (event) {
25         event.preventDefault();
26         editVariable(this);
27     });
29     /* Event handler for variables filter */
30     $filterField.keyup(function () {
31         var textFilter = null, val = $(this).val();
32         if (val.length !== 0) {
33             textFilter = new RegExp("(^| )" + val.replace(/_/g, ' '), 'i');
34         }
35         filterVariables(textFilter);
36     });
38     /* Trigger filtering of the list based on incoming variable name */
39     if ($filterField.val()) {
40         $filterField.trigger('keyup').select();
41     }
43     /* Filters the rows by the user given regexp */
44     function filterVariables(textFilter) {
45         var mark_next = false, $row, odd_row = false;
46         $('#serverVariables').find('.var-row').not('.var-header').each(function () {
47             $row = $(this);
48             if (mark_next || textFilter === null ||
49                 textFilter.exec($row.find('.var-name').text())
50             ) {
51                 // If current global value is different from session value
52                 // (has class diffSession), then display that one too
53                 mark_next = $row.hasClass('diffSession') && ! mark_next;
55                 odd_row = ! odd_row;
56                 $row.css('display', '');
57                 if (odd_row) {
58                     $row.addClass('odd').removeClass('even');
59                 } else {
60                     $row.addClass('even').removeClass('odd');
61                 }
62             } else {
63                 $row.css('display', 'none');
64             }
65         });
66     }
68     /* Allows the user to edit a server variable */
69     function editVariable(link) {
70         var $cell = $(link).parent();
71         var $valueCell = $(link).parents('.var-row').find('.var-value');
72         var varName = $cell.parent().find('.var-name').text().replace(/ /g, '_');
73         var $mySaveLink = $saveLink.clone().show();
74         var $myCancelLink = $cancelLink.clone().show();
75         var $msgbox = PMA_ajaxShowMessage();
76         var $myEditLink = $cell.find('a.editLink');
78         $cell.addClass('edit'); // variable is being edited
79         $myEditLink.remove(); // remove edit link
81         $mySaveLink.click(function () {
82             var $msgbox = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
83             $.post($(this).attr('href'), {
84                     ajax_request: true,
85                     type: 'setval',
86                     varName: varName,
87                     varValue: $valueCell.find('input').val()
88                 }, function (data) {
89                     if (data.success) {
90                         $valueCell
91                             .html(data.variable)
92                             .data('content', data.variable);
93                         PMA_ajaxRemoveMessage($msgbox);
94                     } else {
95                         PMA_ajaxShowMessage(data.error, false);
96                         $valueCell.html($valueCell.data('content'));
97                     }
98                     $cell.removeClass('edit').html($myEditLink);
99                 });
100             return false;
101         });
103         $myCancelLink.click(function () {
104             $valueCell.html($valueCell.data('content'));
105             $cell.removeClass('edit').html($myEditLink);
106             return false;
107         });
109         $.get($mySaveLink.attr('href'), {
110                 ajax_request: true,
111                 type: 'getval',
112                 varName: varName
113             }, function (data) {
114                 if (typeof data !== 'undefined' && data.success === true) {
115                     var $links = $('<div />')
116                         .append($myCancelLink)
117                         .append('&nbsp;&nbsp;&nbsp;')
118                         .append($mySaveLink);
119                     var $editor = $('<div />', {'class': 'serverVariableEditor'})
120                         .append(
121                             $('<div/>').append(
122                                 $('<input />', {type: 'text'}).val(data.message)
123                             )
124                         );
125                     // Save and replace content
126                     $cell
127                     .html($links);
128                     $valueCell
129                     .data('content', $valueCell.html())
130                     .html($editor)
131                     .find('input')
132                     .focus()
133                     .keydown(function (event) { // Keyboard shortcuts
134                         if (event.keyCode === 13) { // Enter key
135                             $mySaveLink.trigger('click');
136                         } else if (event.keyCode === 27) { // Escape key
137                             $myCancelLink.trigger('click');
138                         }
139                     });
140                     PMA_ajaxRemoveMessage($msgbox);
141                 } else {
142                     $cell.removeClass('edit').html($myEditLink);
143                     PMA_ajaxShowMessage(data.error);
144                 }
145             });
146     }