----- Original Message -----
From: Marc Delisle marc@infomarc.info
Aris Feryanto a écrit :
----- Original Message -----
From: Marc Delisle marc@infomarc.info
Marc Delisle a écrit :
Aris Feryanto a écrit :
Hi,
Just realized my previous email seem not delivered
successfully to
phpMyAdmin-devel list. I've previously sent an email
telling that I
will work on merging the tooltip as suggested by Rouslan.
I'm still
working and testing on this and will add the 'Click to
mark'.
I am also fixing the previous code, as it hasn't checked
whether we
are under Browse tab, before calling the column-order
remembering
function.
I wonder if there is any existing exact way to check if we
are under
Browse tab? Current code do the checking using requested url
pattern
and analyzed SQL query (you may see function PMA_isBrowsing
in file
libraries/display_tbl.lib.php in my git repo). But, this is
not
enough for handling load from AJAX request under other tabs
(e.g.
AJAX request to sql.php caused by pagination of results under
SQL
tab)
Yes, this is difficult to solve with current code; maybe it's
time for
a
new tbl_browse.php that could set some constant, then require
sql.php.
Further down the code, either the constant is checked directly or
is
used to generate a hidden span with some id that can be checked
at the
js level.
By the way, I'm not sure why you strictly want to do some
verifications
while under the Browse tab. Some actions, for example Search, will generate results in which in a user might want to reorder the columns.
Hi Marc,
You are right. User may want to reorder columns in Search tab.
I found a way to make PMA_isBrowsing() better, IMO. I add some rule so that
it will return true on any SQL expression in the form of "SELECT * FROM <a table> WHERE ...". Not depending on whether we are under "Browse" tab anymore. I've updated this in my git. The complete function:
=========================== function PMA_isBrowsing() { // global variables set from sql.php global $is_count, $is_export, $is_func, $is_analyse; global $analyzed_sql;
return ! ($is_count || $is_export || $is_func || $is_analyse) && count($analyzed_sql[0]['select_expr']) == 0 &&
isset($analyzed_sql[0]['queryflags']['select_from'])
&& count($analyzed_sql[0]['table_ref']) == 1; } ===========================
I've do some test and it is working good so far. Please kindly check
this and let me know what do you think about this.
Aris, Looks fine but I suggest naming this PMA_isSelect() and changing the function's comment.
Hi Marc,
I've changed the function name and comments.
Two other things.
- I get a notice when browsing sakila.actor. I'm not sure when this
notice started to show but here it is:
Notice in ./libraries/display_tbl.lib.php#492 Undefined index: 14b4d4f7c160f209e980cfb221bb3117
Backtrace
./libraries/display_tbl.lib.php#2255: PMA_displayTableHeaders( array, array, integer 4, array, string `actor`.`first_name` DESC, string `actor`.`first_name`, string DESC, ) ./sql.php#925: PMA_displayTable( object, string urdr111111, array, )
The first issue above also fixed. It was caused by "Remember sorting" feature. Previously, I changed the $sql_query directly to get the ORDER BY syntax printed. I've changed the code to follow same logic as appending LIMIT to fix this issue. Changes can be found under "tablesort" branch in my git.
- "Restore column order" is not persistent. After restoring and
clicking anything (next, end, Browse), the modified column order comes back.
Odd, the restore column order always work for me. Could you give details of the scenario? Maybe it caused by some delay in the connection, so the AJAX request to restore the column order has not sent successfully before you clicked next, end, or Browse.
-- Aris Feryanto