Translated using Weblate (Greek)
[phpmyadmin.git] / js / common.js
blob10e336355f04b23385306e9cb5929cefa28c3b78
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
2 /**
3  * Functionality for communicating with the querywindow
4  */
5 $(function () {
6     /**
7      * Event handler for click on the open query window link
8      * in the top menu of the navigation panel
9      */
10     $('#pma_open_querywindow').click(function (event) {
11         event.preventDefault();
12         PMA_querywindow.focus();
13     });
14 });
16 /**
17  * Holds common parameters such as server, db, table, etc
18  *
19  * The content for this is normally loaded from Header.class.php or
20  * Response.class.php and executed by ajax.js
21  */
22 var PMA_commonParams = (function () {
23     /**
24      * @var hash params An associative array of key value pairs
25      * @access private
26      */
27     var params = {};
28     // The returned object is the public part of the module
29     return {
30         /**
31          * Saves all the key value pair that
32          * are provided in the input array
33          *
34          * @param hash obj The input array
35          *
36          * @return void
37          */
38         setAll: function (obj) {
39             var reload = false;
40             var updateNavigation = false;
41             for (var i in obj) {
42                 if (params[i] !== undefined && params[i] !== obj[i]) {
43                     reload = true;
44                     if (i == 'db' || i == 'table') {
45                         updateNavigation = true;
46                     }
47                 }
48                 params[i] = obj[i];
49             }
50             if (updateNavigation) {
51                 PMA_showCurrentNavigation();
52             }
53             if (reload) {
54                 PMA_querywindow.refresh();
55             }
56         },
57         /**
58          * Retrieves a value given its key
59          * Returns empty string for undefined values
60          *
61          * @param string name The key
62          *
63          * @return string
64          */
65         get: function (name) {
66             return params[name] || '';
67         },
68         /**
69          * Saves a single key value pair
70          *
71          * @param string name  The key
72          * @param string value The value
73          *
74          * @return self For chainability
75          */
76         set: function (name, value) {
77             var updateNavigation = false;
78             if (params[name] !== undefined && params[name] !== value) {
79                 PMA_querywindow.refresh();
80                 if (name == 'db' || name == 'table') {
81                     updateNavigation = true;
82                 }
83             }
84             params[name] = value;
85             if (updateNavigation) {
86                 PMA_showCurrentNavigation();
87             }
88             return this;
89         },
90         /**
91          * Returns the url query string using the saved parameters
92          *
93          * @return string
94          */
95         getUrlQuery: function () {
96             return $.sprintf(
97                 '?%s&server=%s&db=%s&table=%s',
98                 this.get('common_query'),
99                 encodeURIComponent(this.get('server')),
100                 encodeURIComponent(this.get('db')),
101                 encodeURIComponent(this.get('table'))
102             );
103         }
104     };
105 })();
108  * Holds common parameters such as server, db, table, etc
110  * The content for this is normally loaded from Header.class.php or
111  * Response.class.php and executed by ajax.js
112  */
113 var PMA_commonActions = {
114     /**
115      * Saves the database name when it's changed
116      * and reloads the query window, if necessary
117      *
118      * @param string new_db The name of the new database
119      *
120      * @return void
121      */
122     setDb: function (new_db) {
123         if (new_db != PMA_commonParams.get('db')) {
124             PMA_commonParams.setAll({'db': new_db, 'table': ''});
125         }
126     },
127     /**
128      * Opens a database in the main part of the page
129      *
130      * @param string new_db The name of the new database
131      *
132      * @return void
133      */
134     openDb: function (new_db) {
135         PMA_commonParams
136             .set('db', new_db)
137             .set('table', '');
138         PMA_querywindow.refresh();
139         this.refreshMain(
140             PMA_commonParams.get('opendb_url')
141         );
142     },
143     /**
144      * Refreshes the main frame
145      *
146      * @param mixed url Undefined to refresh to the same page
147      *                  String to go to a different page, e.g: 'index.php'
148      *
149      * @return void
150      */
151     refreshMain: function (url, callback) {
152         if (! url) {
153             url = $('#selflink a').attr('href');
154             url = url.substring(0, url.indexOf('?'));
155         }
156         url += PMA_commonParams.getUrlQuery();
157         $('<a />', {href: url})
158             .appendTo('body')
159             .click()
160             .remove();
161         AJAX._callback = callback;
162     }
166  * Common functions used for communicating with the querywindow
167  */
168 var PMA_querywindow = (function ($, window) {
169     /**
170      * @var Object querywindow Reference to the window
171      *                         object of the querywindow
172      * @access private
173      */
174     var querywindow = {};
175     /**
176      * @var string queryToLoad Stores the SQL query that is to be displayed
177      *                         in the querywindow when it is ready
178      * @access private
179      */
180     var queryToLoad = '';
181     // The returned object is the public part of the module
182     return {
183         /**
184          * Opens the query window
185          *
186          * @param mixed url Undefined to open the default page
187          *                  String to go to a different
188          *
189          * @return void
190          */
191         open: function (url, sql_query) {
192             if (! url) {
193                 url = 'querywindow.php' + PMA_commonParams.getUrlQuery();
194             }
195             if (sql_query) {
196                 url += '&sql_query=' + encodeURIComponent(sql_query);
197             }
199             if (! querywindow.closed && querywindow.location) {
200                 var href = querywindow.location.href;
201                 if (href != url
202                     && href != PMA_commonParams.get('pma_absolute_uri') + url
203                 ) {
204                     if (PMA_commonParams.get('safari_browser')) {
205                         querywindow.location.href = targeturl;
206                     } else {
207                         querywindow.location.replace(targeturl);
208                     }
209                     querywindow.focus();
210                 }
211             } else {
212                 querywindow = window.open(
213                     url + '&init=1',
214                     '',
215                     'toolbar=0,location=0,directories=0,status=1,'
216                     + 'menubar=0,scrollbars=yes,resizable=yes,'
217                     + 'width=' + PMA_commonParams.get('querywindow_width') + ','
218                     + 'height=' + PMA_commonParams.get('querywindow_height')
219                 );
220             }
221             if (! querywindow.opener) {
222                querywindow.opener = window.window;
223             }
224             if (window.focus) {
225                 querywindow.focus();
226             }
227         },
228         /**
229          * Opens, if necessary, focuses the query window
230          * and displays an SQL query.
231          *
232          * @param string sql_query The SQL query to display in
233          *                         the query window
234          *
235          * @return void
236          */
237         focus: function (sql_query) {
238             if (! querywindow || querywindow.closed || ! querywindow.location) {
239                 // we need first to open the window and cannot pass the query with it
240                 // as we dont know if the query exceeds max url length
241                 queryToLoad = sql_query;
242                 this.open(false, sql_query);
243             } else {
244                 //var querywindow = querywindow;
245                 var hiddenqueryform = querywindow
246                     .document
247                     .getElementById('hiddenqueryform');
248                 if (hiddenqueryform.querydisplay_tab != 'sql' ) {
249                     hiddenqueryform.querydisplay_tab.value = "sql";
250                     hiddenqueryform.sql_query.value = sql_query;
251                     $(hiddenqueryform).addClass('disableAjax');
252                     hiddenqueryform.submit();
253                     querywindow.focus();
254                 } else {
255                     querywindow.focus();
256                 }
257             }
258         },
259         /**
260          * Refreshes the query window given a url
261          *
262          * @param string url Where to go to
263          *
264          * @return void
265          */
266         refresh: function (url) {
267             if (! querywindow.closed && querywindow.location) {
268                 var $form = $(querywindow.document).find('#sqlqueryform');
269                 if ($form.find('#checkbox_lock:checked').length == 0) {
270                     PMA_querywindow.open(url);
271                 }
272             }
273         },
274         /**
275          * Reloads the query window given the details
276          * of a db, a table and an sql_query
277          *
278          * @param string db        The name of the database
279          * @param string table     The name of the table
280          * @param string sql_query The SQL query to be displayed
281          *
282          * @return void
283          */
284         reload: function (db, table, sql_query) {
285             if (! querywindow.closed && querywindow.location) {
286                 var $form = $(querywindow.document).find('#sqlqueryform');
287                 if ($form.find('#checkbox_lock:checked').length == 0) {
288                     var $hiddenform = $(querywindow.document)
289                         .find('#hiddenqueryform');
290                     $hiddenform.find('input[name=db]').val(db);
291                     $hiddenform.find('input[name=table]').val(table);
292                     if (sql_query) {
293                         $hiddenform.find('input[name=sql_query]').val(sql_query);
294                     }
295                     $hiddenform.addClass('disableAjax').submit();
296                 }
297             }
298         }
299     };
300 })(jQuery, window);