1 /* vim: set expandtab sw=4 ts=4 sts=4: */
4 * Unbind all event handlers before tearing down a page
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();
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()
23 /* Launches the variable editor */
24 $(document).on('click', 'a.editLink', function (event) {
25 event.preventDefault();
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');
35 filterVariables(textFilter);
38 /* Trigger filtering of the list based on incoming variable name */
39 if ($filterField.val()) {
40 $filterField.trigger('keyup').select();
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 () {
48 if (mark_next || textFilter === null ||
49 textFilter.exec($row.find('.var-name').text())
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;
56 $row.css('display', '');
58 $row.addClass('odd').removeClass('even');
60 $row.addClass('even').removeClass('odd');
63 $row.css('display', 'none');
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'), {
87 varValue: $valueCell.find('input').val()
92 .data('content', data.variable);
93 PMA_ajaxRemoveMessage($msgbox);
95 PMA_ajaxShowMessage(data.error, false);
96 $valueCell.html($valueCell.data('content'));
98 $cell.removeClass('edit').html($myEditLink);
103 $myCancelLink.click(function () {
104 $valueCell.html($valueCell.data('content'));
105 $cell.removeClass('edit').html($myEditLink);
109 $.get($mySaveLink.attr('href'), {
114 if (typeof data !== 'undefined' && data.success === true) {
115 var $links = $('<div />')
116 .append($myCancelLink)
117 .append(' ')
118 .append($mySaveLink);
119 var $editor = $('<div />', {'class': 'serverVariableEditor'})
122 $('<input />', {type: 'text'}).val(data.message)
125 // Save and replace content
129 .data('content', $valueCell.html())
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');
140 PMA_ajaxRemoveMessage($msgbox);
142 $cell.removeClass('edit').html($myEditLink);
143 PMA_ajaxShowMessage(data.error);