From: Marc Delisle <marc(a)infomarc.info>
Aris Feryanto a écrit :
----- Original Message -----
> From: Marc Delisle <marc(a)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.
1. 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.
2. "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