Fixed failing test
[phpmyadmin.git] / setup / scripts.js
blobc7e2fd172521f57d209c31e4d766d1a0e5e146b1
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
2 /**
3  * Functions used in Setup configuration forms
4  */
6 // show this window in top frame
7 if (top != self) {
8     window.top.location.href = location;
11 // ------------------------------------------------------------------
12 // Messages
15 // stores hidden message ids
16 var hiddenMessages = [];
18 $(function () {
19     var hidden = hiddenMessages.length;
20     for (var i = 0; i < hidden; i++) {
21         $('#' + hiddenMessages[i]).css('display', 'none');
22     }
23     if (hidden > 0) {
24         var link = $('#show_hidden_messages');
25         link.click(function (e) {
26             e.preventDefault();
27             for (var i = 0; i < hidden; i++) {
28                 $('#' + hiddenMessages[i]).show(500);
29             }
30             $(this).remove();
31         });
32         link.html(link.html().replace('#MSG_COUNT', hidden));
33         link.css('display', '');
34     }
35 });
38 // END: Messages
39 // ------------------------------------------------------------------
41 // ------------------------------------------------------------------
42 // Form validation and field operations
45 /**
46  * Calls server-side validation procedures
47  *
48  * @param {Element} parent  input field in <fieldset> or <fieldset>
49  * @param {String}  id      validator id
50  * @param {Object}  values  values hash {element1_id: value, ...}
51  */
52 function ajaxValidate(parent, id, values)
54     parent = $(parent);
55     // ensure that parent is a fieldset
56     if (parent.attr('tagName') != 'FIELDSET') {
57         parent = parent.closest('fieldset');
58         if (parent.length === 0) {
59             return false;
60         }
61     }
63     if (parent.data('ajax') !== null) {
64         parent.data('ajax').abort();
65     }
67     parent.data('ajax', $.ajax({
68         url: 'validate.php',
69         cache: false,
70         type: 'POST',
71         data: {
72             token: parent.closest('form').find('input[name=token]').val(),
73             id: id,
74             values: $.toJSON(values)
75         },
76         success: function (response) {
77             if (response === null) {
78                 return;
79             }
81             var error = {};
82             if (typeof response != 'object') {
83                 error[parent.id] = [response];
84             } else if (typeof response.error != 'undefined') {
85                 error[parent.id] = [response.error];
86             } else {
87                 for (var key in response) {
88                     var value = response[key];
89                     error[key] = jQuery.isArray(value) ? value : [value];
90                 }
91             }
92             displayErrors(error);
93         },
94         complete: function () {
95             parent.removeData('ajax');
96         }
97     }));
99     return true;
103  * Automatic form submission on change.
104  */
105 $('.autosubmit').live('change', function (e) {
106     e.target.form.submit();
109 $.extend(true, validators, {
110     // field validators
111     _field: {
112         /**
113          * hide_db field
114          *
115          * @param {boolean} isKeyUp
116          */
117         hide_db: function (isKeyUp) {
118             if (!isKeyUp && this.value !== '') {
119                 var data = {};
120                 data[this.id] = this.value;
121                 ajaxValidate(this, 'Servers/1/hide_db', data);
122             }
123             return true;
124         },
125         /**
126          * TrustedProxies field
127          *
128          * @param {boolean} isKeyUp
129          */
130         TrustedProxies: function (isKeyUp) {
131             if (!isKeyUp && this.value !== '') {
132                 var data = {};
133                 data[this.id] = this.value;
134                 ajaxValidate(this, 'TrustedProxies', data);
135             }
136             return true;
137         }
138     },
139     // fieldset validators
140     _fieldset: {
141         /**
142          * Validates Server fieldset
143          *
144          * @param {boolean} isKeyUp
145          */
146         Server: function (isKeyUp) {
147             if (!isKeyUp) {
148                 ajaxValidate(this, 'Server', getAllValues());
149             }
150             return true;
151         },
152         /**
153          * Validates Server_login_options fieldset
154          *
155          * @param {boolean} isKeyUp
156          */
157         Server_login_options: function (isKeyUp) {
158             return validators._fieldset.Server.apply(this, [isKeyUp]);
159         },
160         /**
161          * Validates Server_pmadb fieldset
162          *
163          * @param {boolean} isKeyUp
164          */
165         Server_pmadb: function (isKeyUp) {
166             if (isKeyUp) {
167                 return true;
168             }
170             var prefix = getIdPrefix($(this).find('input'));
171             if ($('#' + prefix + 'pmadb').val() !== '') {
172                 ajaxValidate(this, 'Server_pmadb', getAllValues());
173             }
175             return true;
176         }
177     }
181 // END: Form validation and field operations
182 // ------------------------------------------------------------------
184 // ------------------------------------------------------------------
185 // User preferences allow/disallow UI
188 $(function () {
189     $('.userprefs-allow').click(function (e) {
190         if (this != e.target) {
191             return;
192         }
193         var el = $(this).find('input');
194         if (el.prop('disabled')) {
195             return;
196         }
197         el.prop('checked', !el.prop('checked'));
198     });
202 // END: User preferences allow/disallow UI
203 // ------------------------------------------------------------------