Implement own minimalistic var_export and drop the one from PEAR.
[phpmyadmin/last10db.git] / js / querywindow.js
blob3d090b6253a7b397513fa0b4fd6f253d0072e8e4
1 /**
2  * holds the browser query window
3  */
4 var querywindow = '';
6 /**
7  * holds the query to be load from a new query window
8  */
9 var query_to_load = '';
11 /**
12  * sets current selected db
13  *
14  * @param    string    db name
15  */
16 function setDb(new_db) {
17     //alert('setDb(' + new_db + ')');
18     if (new_db != db) {
19         // db has changed
20         //alert( new_db + '(' + new_db.length + ') : ' + db );
22         var old_db = db;
23         db = new_db;
25         if (window.frame_navigation.document.getElementById(db) == null) {
26             // db is unknown, reload complete left frame
27             refreshNavigation();
28         } else {
29             unmarkDbTable(old_db);
30             markDbTable(db);
31         }
33         // TODO: add code to expand db in lightview mode
35         // refresh querywindow
36         refreshQuerywindow();
37     }
40 /**
41  * sets current selected table (called from left.php)
42  *
43  * @param    string    table name
44  */
45 function setTable(new_table) {
46     //alert('setTable(' + new_table + ')');
47     if (new_table != table) {
48         // table has changed
49         //alert( new_table + '(' + new_table.length + ') : ' + table );
51         table = new_table;
53         if (window.frame_navigation.document.getElementById(db + '.' + table) == null
54          && table != '') {
55             // table is unknown, reload complete left frame
56             refreshNavigation();
58         }
59         // TODO: add code to expand table in lightview mode
61         // refresh querywindow
62         refreshQuerywindow();
63     }
66 function refreshMain(url) {
67     if (! url) {
68         if (db) {
69             url = opendb_url;
70         } else {
71             url = 'main.php';
72         }
73     }
74     goTo( url + '?server=' + server +
75         '&db=' + db +
76         '&table=' + table +
77         '&lang=' + lang +
78         '&collation_connection=' + collation_connection,
79         'main' );
82 function refreshNavigation() {
83     goTo('left.php?server=' + server +
84         '&db=' + db +
85         '&table=' + table +
86         '&lang=' + lang +
87         '&collation_connection=' + collation_connection
88         );
91 /**
92  * adds class to element
93  */
94 function addClass(element, classname)
96     if (element != null) {
97         element.className += ' ' + classname;
98         //alert('set class: ' + classname + ', now: ' + element.className);
99     }
103  * removes class from element
104  */
105 function removeClass(element, classname)
107     if (element != null) {
108         element.className = element.className.replace(' ' + classname, '');
109         // if there is no other class anem there is no leading space
110         element.className = element.className.replace(classname, '');
111         //alert('removed class: ' + classname + ', now: ' + element.className);
112     }
115 function unmarkDbTable(db, table)
117     var element_reference = window.frame_navigation.document.getElementById(db);
118     if (element_reference != null) {
119         //alert('remove from: ' + db);
120         removeClass(element_reference.parentNode, 'marked');
121     }
123     element_reference = window.frame_navigation.document.getElementById(db + '.' + table);
124     if (element_reference != null) {
125         //alert('remove from: ' + db + '.' + table);
126         removeClass(element_reference.parentNode, 'marked');
127     }
130 function markDbTable(db, table)
132     var element_reference = window.frame_navigation.document.getElementById(db);
133     if (element_reference != null) {
134         addClass(element_reference.parentNode, 'marked');
135         // scrolldown
136         element_reference.focus();
137         // opera marks the text, we dont want this ...
138         element_reference.blur();
139     }
141     element_reference = window.frame_navigation.document.getElementById(db + '.' + table);
142     if (element_reference != null) {
143         addClass(element_reference.parentNode, 'marked');
144         // scrolldown
145         element_reference.focus();
146         // opera marks the text, we dont want this ...
147         element_reference.blur();
148     }
150     // return to main frame ...
151     window.frame_content.focus();
155  * sets current selected server, table and db (called from libraries/footer.inc.php)
156  */
157 function setAll( new_lang, new_collation_connection, new_server, new_db, new_table ) {
158     //alert('setAll( ' + new_lang + ', ' + new_collation_connection + ', ' + new_server + ', ' + new_db + ', ' + new_table + ' )');
159     if (new_server != server || new_lang != lang
160       || new_collation_connection != collation_connection) {
161         // something important has changed
162         server = new_server;
163         db     = new_db;
164         table  = new_table;
165         collation_connection  = new_collation_connection;
166         lang  = new_lang;
167         refreshNavigation();
168     } else if (new_db != db || new_table != table) {
169         // save new db and table
170         var old_db    = db;
171         var old_table = table;
172         db        = new_db;
173         table     = new_table;
175         if (window.frame_navigation.document.getElementById(db) == null
176           && window.frame_navigation.document.getElementById(db + '.' + table) == null ) {
177             // table or db is unknown, reload complete left frame
178             refreshNavigation();
179         } else {
180             unmarkDbTable(old_db, old_table);
181             markDbTable(db, table);
182         }
184         // TODO: add code to expand db in lightview mode
186         // refresh querywindow
187         refreshQuerywindow();
188     }
191 function reload_querywindow( db, table, sql_query ) {
192     if ( ! querywindow.closed && querywindow.location ) {
193         if ( ! querywindow.document.sqlform.LockFromUpdate
194           || ! querywindow.document.sqlform.LockFromUpdate.checked ) {
195             querywindow.document.querywindow.db.value = db;
196             querywindow.document.querywindow.query_history_latest_db.value = db;
197             querywindow.document.querywindow.table.value = table;
198             querywindow.document.querywindow.query_history_latest_table.value = table;
200             if ( sql_query ) {
201                 querywindow.document.querywindow.query_history_latest.value = sql_query;
202             }
204             querywindow.document.querywindow.submit();
205         }
206     }
210  * brings query window to front and inserts query to be edited
211  */
212 function focus_querywindow( sql_query ) {
213     /* if ( querywindow && !querywindow.closed && querywindow.location) { */
214     if ( !querywindow || querywindow.closed || !querywindow.location) {
215         // we need first to open the window and cannot pass the query with it
216         // as we dont know if the query exceeds max url length
217         /* url = 'querywindow.php?' + common_query + '&db=' + db + '&table=' + table + '&sql_query=SELECT * FROM'; */
218         query_to_load = sql_query;
219         open_querywindow();
220         insertQuery(0);
221     } else {
222         //var querywindow = querywindow;
223         if ( querywindow.document.querywindow.querydisplay_tab != 'sql' ) {
224             querywindow.document.querywindow.querydisplay_tab.value = "sql";
225             querywindow.document.querywindow.query_history_latest.value = sql_query;
226             querywindow.document.querywindow.submit();
227             querywindow.focus();
228         } else {
229             querywindow.focus();
230         }
231     }
232     return true;
236  * inserts query string into query window textarea
237  * called from script tag in querywindow
238  */
239 function insertQuery() {
240     if (query_to_load != '' && querywindow.document && querywindow.document.getElementById && querywindow.document.getElementById('sqlquery')) {
241         querywindow.document.getElementById('sqlquery').value = query_to_load;
242         query_to_load = '';
243         return true;
244     }
245     return false;
248 function open_querywindow( url ) {
249     if ( ! url ) {
250         url = 'querywindow.php?' + common_query + '&db=' + db + '&table=' + table;
251     }
253     if (!querywindow.closed && querywindow.location) {
254         goTo( url, 'query' );
255         querywindow.focus();
256     } else {
257         querywindow=window.open( url, '',
258             'toolbar=0,location=0,directories=0,status=1,menubar=0,' +
259             'scrollbars=yes,resizable=yes,' +
260             'width=' + querywindow_width + ',' +
261             'height=' + querywindow_height );
262     }
264     if ( ! querywindow.opener ) {
265        querywindow.opener = window.window;
266     }
268     if ( window.focus ) {
269         querywindow.focus();
270     }
272     return true;
275 function refreshQuerywindow( url ) {
277     if ( ! querywindow.closed && querywindow.location ) {
278         if ( ! querywindow.document.sqlform.LockFromUpdate
279           || ! querywindow.document.sqlform.LockFromUpdate.checked ) {
280             open_querywindow( url )
281         }
282     }
286  * opens new url in target frame, with default beeing left frame
287  * valid is 'main' and 'querywindow' all others leads to 'left'
289  * @param    string    targeturl    new url to load
290  * @param    string    target       frame where to load the new url
291  */
292 function goTo(targeturl, target) {
293     //alert('goto');
294     if ( target == 'main' ) {
295         target = window.frame_content;
296     } else if ( target == 'query' ) {
297         target = querywindow;
298         //return open_querywindow( targeturl );
299     } else if ( ! target ) {
300         target = window.frame_navigation;
301     }
303     if ( target ) {
304         if ( target.location.href == targeturl ) {
305             return true;
306         } else if ( target.location.href == pma_absolute_uri + targeturl ) {
307             return true;
308         }
310         if ( safari_browser ) {
311             target.location.href = targeturl;
312         } else {
313             target.location.replace(targeturl);
314         }
315     }
317     return true;
320 // opens selected db in main frame
321 function openDb(new_db) {
322     //alert('opendb(' +  new_db + ')');
323     setDb(new_db);
324     setTable('');
325     refreshMain(opendb_url);
326     return true;
329 function updateTableTitle( table_link_id, new_title ) {
330     //alert('updateTableTitle');
331     if ( window.parent.frame_navigation.document.getElementById(table_link_id) ) {
332         var left = window.parent.frame_navigation.document;
333         left.getElementById(table_link_id).title = new_title;
334         new_title = left.getElementById('icon_' + table_link_id).alt + ': ' + new_title;
335         left.getElementById('browse_' + table_link_id).title = new_title;
336         return true;
337     }
339     return false;