diff --git a/js/makegrid.js b/js/makegrid.js
index aedaae3131..8d00f8b17d 100644
--- a/js/makegrid.js
+++ b/js/makegrid.js
@@ -430,25 +430,24 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi
if ($(t).find('th.marker').length > 0) {
g.showMarkHint = true;
}
-
- if (g.showReorderHint && g.reorderHint) {
- text += g.reorderHint;
- }
if (g.showSortHint && g.sortHint) {
text += text.length > 0 ? '
' : '';
- text += g.sortHint;
+ text += '- ' + g.sortHint;
}
- if (g.showRemColHint && g.strRemColHint) {
+ if (g.showMultiSortHint && g.strMultiSortHint) {
text += text.length > 0 ? '
' : '';
- text += g.strRemColHint;
+ text += '- ' + g.strMultiSortHint;
}
- if (g.showMarkHint && g.markHint &&
- !g.showSortHint // we do not show mark hint, when sort hint is shown
+ if (g.showMarkHint && g.markHint
+ && !g.showSortHint // we do not show mark hint, when sort hint is shown
+ && g.showReorderHint && g.reorderHint
) {
text += text.length > 0 ? '
' : '';
- text += g.markHint;
+ text += '- ' + g.reorderHint;
text += text.length > 0 ? '
' : '';
- text += g.copyHint;
+ text += '- ' + g.markHint;
+ text += text.length > 0 ? '
' : '';
+ text += '- ' + g.copyHint;
}
}
return text;
@@ -1852,7 +1851,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi
// assign the hints
g.sortHint = PMA_messages.strSortHint;
- g.strRemColHint = PMA_messages.strRemColHint;
+ g.strMultiSortHint = PMA_messages.strMultiSortHint;
g.markHint = PMA_messages.strColMarkHint;
g.copyHint = PMA_messages.strColNameCopyHint;
@@ -1906,14 +1905,14 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi
$(t).find('th.draggable a')
.mouseenter(function (e) {
g.showSortHint = true;
- g.showRemColHint = true;
+ g.showMultiSortHint = true;
$(t).find("th.draggable").tooltip("option", {
content: g.updateHint()
});
})
.mouseleave(function (e) {
g.showSortHint = false;
- g.showRemColHint = false;
+ g.showMultiSortHint = false;
$(t).find("th.draggable").tooltip("option", {
content: g.updateHint()
});
diff --git a/js/messages.php b/js/messages.php
index a4d09e3112..3e933545e0 100644
--- a/js/messages.php
+++ b/js/messages.php
@@ -389,8 +389,8 @@ $js_messages['strObjectsCreated'] = __('%d object(s) created.');
$js_messages['strCellEditHint'] = __('Press escape to cancel editing.');
$js_messages['strSaveCellWarning'] = __('You have edited some data and they have not been saved. Are you sure you want to leave this page before saving the data?');
$js_messages['strColOrderHint'] = __('Drag to reorder.');
-$js_messages['strSortHint'] = __('Click to sort.');
-$js_messages['strRemColHint'] = __('Hold shift and click to remove column from ORDER BY clause.');
+$js_messages['strSortHint'] = __('Click to sort results by this column.');
+$js_messages['strMultiSortHint'] = __('Shift+Click to add this column to ORDER BY clause or to toggle ASC/DESC.
- Control+CLick to remove column from ORDER BY clause');
$js_messages['strColMarkHint'] = __('Click to mark/unmark.');
$js_messages['strColNameCopyHint'] = __('Double-click to copy column name.');
$js_messages['strColVisibHint'] = __(
diff --git a/js/columndelete.js b/js/multi_column_sort.js
similarity index 53%
rename from js/columndelete.js
rename to js/multi_column_sort.js
index c2571661b5..51ea76b34e 100644
--- a/js/columndelete.js
+++ b/js/multi_column_sort.js
@@ -1,12 +1,12 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
- * @fileoverview Implements the shiftkey + click remove column
+ * @fileoverview Implements the shiftkey + click remove column
* from order by clause funcationality
* @name columndelete
*
* @requires jQuery
*/
-
+
function captureURL(url)
{
var URL = {};
@@ -14,56 +14,62 @@ function captureURL(url)
// Exclude the url part till HTTP
url = url.substr(url.search("sql.php"), url.length);
// The url part between ORDER BY and &session_max_rows needs to be replaced.
- URL.head = url.substr(0, url.indexOf('ORDER+BY') + 9);
- URL.tail = url.substr(url.indexOf("&session_max_rows"), url.length);
- return URL;
+ URL['head'] = url.substr(0, url.indexOf('ORDER+BY') + 9);
+ URL['tail'] = url.substr(url.indexOf("&session_max_rows"), url.length);
+ return URL;
}
/**
* This function is for navigating to the generated URL
*
- * @param object target HTMLAnchor element
+ * @param object target HTMLAnchor element
* @param object parent HTMLDom Object
*/
-function redirect(target, parent)
+function removeColumnFromMultiSort(target, parent)
{
var URL = captureURL(target);
var begin = target.indexOf('ORDER+BY') + 8;
var end = target.indexOf('&session_max_rows');
// get the names of the columns involved
var between_part = target.substr(begin, end-begin);
- var columns = between_part.split('%2C+');
+ var columns = between_part.split('%2C+');
// If the given column is not part of the order clause exit from this function
- var index = parent.find('small').length ? parent.find('small').text() : '';
- if (index === "") {
+ var index = parent.find('small').length ? parent.find('small').text() : '';
+ if (index == ''){
return;
}
// Remove the current clicked column
- columns.splice(index-1, 1);
+ columns.splice(index-1, 1);
// If all the columns have been removed dont submit a query with nothing
// After order by clause.
- if (columns.length === 0) {
- var head = URL.head;
- head = head.slice(0,head.indexOf('ORDER+BY'));
- URL.head = head;
- // removing the last sort order should have priority over what
+ if (columns.length == 0){
+ var head = URL['head'];
+ head = head.slice(0,head.indexOf('ORDER+BY'));
+ URL['head'] = head;
+ // removing the last sort order should have priority over what
// is remembered via the RememberSorting directive
- URL.tail += '&discard_remembered_sort=1';
+ URL['tail'] += '&discard_remembered_sort=1';
}
- var middle_part = columns.join('%2C+');
- url = URL.head + middle_part + URL.tail;
- window.location.replace(url);
+ var middle_part = columns.join('%2C+');
+ url = URL['head'] + middle_part + URL['tail'];
+ return url;
}
-
AJAX.registerOnload('keyhandler.js', function () {
- $("th.draggable.column_heading.pointer.marker a").live('click', function (event) {
- if (event.shiftKey) {
+ $("th.draggable.column_heading.pointer.marker a").on('click', function (event) {
+ var url = $(this).parent().find('input').val();
+ if (event.ctrlKey) {
event.preventDefault();
- redirect($(this).attr("href"), $(this).parent());
+ url = removeColumnFromMultiSort(url, $(this).parent());
+ AJAX.source = $(this);
+ $.get(url, {'ajax_request' : true, 'ajax_page_request' : true}, AJAX.responseHandler);
+ } else if (event.shiftKey) {
+ event.preventDefault();
+ AJAX.source = $(this);
+ $.get(url, {'ajax_request' : true, 'ajax_page_request' : true}, AJAX.responseHandler);
}
- });
+ });
});
AJAX.registerTeardown('keyhandler.js', function () {
diff --git a/sql.php b/sql.php
index 7c67629d25..eebe9552a6 100644
--- a/sql.php
+++ b/sql.php
@@ -27,7 +27,7 @@ $scripts->addFile('jquery/jquery.uitablefilter.js');
$scripts->addFile('tbl_change.js');
$scripts->addFile('indexes.js');
$scripts->addFile('gis_data_editor.js');
-$scripts->addFile('columndelete.js');
+$scripts->addFile('multi_column_sort.js');
/**
* Set ajax_reload in the response if it was already set