diff options
author | Piyush Vijay <piyushvijay.1997@gmail.com> | 2018-05-03 22:50:38 +0300 |
---|---|---|
committer | MaurĂcio Meneghini Fauth <mauriciofauth@gmail.com> | 2018-05-03 22:50:38 +0300 |
commit | 9c7c5ca951be1e75b6c773520fd366f8478d02b3 (patch) | |
tree | 3141800a70d362ccead401957bf8adf98b501804 | |
parent | 3bf396ce54b2ea6424ddfdc23c1738e1970b0ca1 (diff) |
Changes to make Get auto saved query and show this query here again button functional (#14166)
* Handling of autosaved query and making get auto-saved query button functional
Signed-off-by: Piyush Vijay <piyushvijay.1997@gmail.com>
* Basic functionality of show this query here again added
Signed-off-by: Piyush Vijay <piyushvijay.1997@gmail.com>
* Show this query here again checkbox working properly
Signed-off-by: Piyush Vijay <piyushvijay.1997@gmail.com>
* deleting auto_saved_sql on clicking submit query button
Signed-off-by: Piyush Vijay <piyushvijay.1997@gmail.com>
* javascript error handled
Signed-off-by: Piyush Vijay <piyushvijay.1997@gmail.com>
* javascript error of JSON undefined removed
Signed-off-by: Piyush Vijay <piyushvijay.1997@gmail.com>
Signed-off-by: MaurĂcio Meneghini Fauth <mauriciofauth@gmail.com>
-rw-r--r-- | js/ajax.js | 13 | ||||
-rw-r--r-- | js/messages.php | 3 | ||||
-rw-r--r-- | js/sql.js | 89 | ||||
-rw-r--r-- | libraries/classes/SqlQueryForm.php | 2 |
4 files changed, 98 insertions, 9 deletions
diff --git a/js/ajax.js b/js/ajax.js index 81976128cc..f484d522a7 100644 --- a/js/ajax.js +++ b/js/ajax.js @@ -245,10 +245,17 @@ var AJAX = { // the click event is not triggered by script if (typeof event !== 'undefined' && event.type === 'click' && event.isTrigger !== true && - !jQuery.isEmptyObject(AJAX.lockedTargets) && - confirm(PMA_messages.strConfirmNavigation) === false + !jQuery.isEmptyObject(AJAX.lockedTargets) ) { - return false; + if (confirm(PMA_messages.strConfirmNavigation) === false) { + return false; + } else { + if (isStorageSupported('localStorage')) { + window.localStorage.removeItem('auto_saved_sql'); + } else { + Cookies.set('auto_saved_sql', ''); + } + } } AJAX.resetLock(); var isLink = !! href || false; diff --git a/js/messages.php b/js/messages.php index 257bc788db..933c924e5c 100644 --- a/js/messages.php +++ b/js/messages.php @@ -421,7 +421,8 @@ $js_messages['strEdit'] = __('Edit'); $js_messages['strDelete'] = __('Delete'); $js_messages['strNotValidRowNumber'] = __('%d is not valid row number.'); $js_messages['strBrowseForeignValues'] = __('Browse foreign values'); -$js_messages['strNoAutoSavedQuery'] = __('No auto-saved query'); +$js_messages['strNoAutoSavedQuery'] = __('No previously auto-saved query. Loading default query.'); +$js_messages['strPreviousSaveQuery'] = __('You have previously saved query. Click Get auto-saved query to get query.'); $js_messages['strBookmarkVariable'] = __('Variable %d:'); /* For Central list of columns */ @@ -49,6 +49,58 @@ function PMA_autosaveSQL (query) { } /** + * Saves SQL query in local storage or cookie + * + * @param string database name + * @param string table name + * @param string SQL query + * @return void + */ +function PMA_showThisQuery (db, table, query) { + var show_this_query_object = { + 'db': db, + 'table': table, + 'query': query + }; + if (isStorageSupported('localStorage')) { + window.localStorage.show_this_query = 1; + window.localStorage.show_this_query_object = JSON.stringify(show_this_query_object); + } else { + Cookies.set('show_this_quey', 1); + Cookies.set('show_this_query_object', JSON.stringify(show_this_query_object)); + } +} + +/** + * Set query to codemirror if show this query is + * checked and query for the db and table pair exists + */ +function setShowThisQuery () { + var db = $('input[name="db"]').val(); + var table = $('input[name="table"]').val(); + if (isStorageSupported('localStorage')) { + if (window.localStorage.show_this_query_object !== undefined) { + var stored_db = JSON.parse(window.localStorage.show_this_query_object).db; + var stored_table = JSON.parse(window.localStorage.show_this_query_object).table; + var stored_query = JSON.parse(window.localStorage.show_this_query_object).query; + } + if (window.localStorage.show_this_query !== undefined + && window.localStorage.show_this_query === '1') { + $('input[name="show_query"]').prop('checked', true); + if (db === stored_db && table === stored_table) { + if (codemirror_editor) { + codemirror_editor.setValue(stored_query); + } else if (document.sqlform) { + document.sqlform.sql_query.value = stored_query; + } + } + } else { + $('input[name="show_query"]').prop('checked', false); + } + } +} + +/** * Saves SQL query with sort in local storage or cookie * * @param string SQL query @@ -157,6 +209,9 @@ AJAX.registerTeardown('sql.js', function () { * @memberOf jQuery */ AJAX.registerOnload('sql.js', function () { + if (codemirror_editor || document.sqlform) { + setShowThisQuery(); + } $(function () { if (codemirror_editor) { codemirror_editor.on('change', function () { @@ -283,8 +338,8 @@ AJAX.registerOnload('sql.js', function () { }); $('.table_results .column_heading a').each(function () { - //Don't copy ordering number text within <small> tag - textArea.value += $(this).clone().find('small').remove().end().text() + '\t'; + // Don't copy ordering number text within <small> tag + textArea.value += $(this).clone().find('small').remove().end().text() + '\t'; }); textArea.value += '\n'; @@ -397,6 +452,26 @@ AJAX.registerOnload('sql.js', function () { // import.php about what needs to be done $form.find('select[name=id_bookmark]').val(''); // let normal event propagation happen + if (isStorageSupported('localStorage')) { + window.localStorage.removeItem('auto_saved_sql'); + } else { + Cookies.set('auto_saved_sql', ''); + } + var isShowQuery = $('input[name="show_query"').is(':checked'); + if (isShowQuery) { + window.localStorage.show_this_query = '1'; + var db = $('input[name="db"]').val(); + var table = $('input[name="table"]').val(); + var query; + if (codemirror_editor) { + query = codemirror_editor.getValue(); + } else { + query = $('#sqlquery').val(); + } + PMA_showThisQuery(db, table, query); + } else { + window.localStorage.show_this_query = '0'; + } }); /** @@ -842,6 +917,12 @@ function browseForeignDialog ($this_a) { }); } +function checkSavedQuery () { + if (isStorageSupported('localStorage') && window.localStorage.auto_saved_sql !== undefined) { + PMA_ajaxShowMessage(PMA_messages.strPreviousSaveQuery); + } +} + AJAX.registerOnload('sql.js', function () { $('body').on('click', 'a.browse_foreign', function (e) { e.preventDefault(); @@ -871,10 +952,10 @@ AJAX.registerOnload('sql.js', function () { $('.sqlqueryresults').trigger('makegrid').trigger('stickycolumns'); /** - * Restores SQL query after timeout login + * Check if there is any saved query */ if (codemirror_editor || document.sqlform) { - insertQuery('saved'); + checkSavedQuery(); } }); diff --git a/libraries/classes/SqlQueryForm.php b/libraries/classes/SqlQueryForm.php index c8c61fa70a..a7a11c3670 100644 --- a/libraries/classes/SqlQueryForm.php +++ b/libraries/classes/SqlQueryForm.php @@ -338,7 +338,7 @@ class SqlQueryForm $html .= '<div class="formelement">'; $html .= '<input type="checkbox" name="show_query" value="1" ' - . 'id="checkbox_show_query" tabindex="132" checked="checked" />' + . 'id="checkbox_show_query" tabindex="132"/>' . '<label for="checkbox_show_query">' . __('Show this query here again') . '</label>'; $html .= '</div>'; |