Le 2011-05-14 23:07, Aris Feryanto a écrit :
Hi Marc,
On 14 Mei 2011, at 18:39, Marc Delisle marc@infomarc.info wrote:
Le 2011-05-13 16:06, Aris Feryanto a écrit :
Hi,
The recently used tables is now using ajax. I've just pushed to my repo, so the demo [0] will be available in an hour later. Comment and suggestion are welcome, mainly regarding the ajax-related code: - ajax request in navigation.js - ajax response in navigation.php - ajax trigger in header.inc.php (the triggering is done by adding <script> tag to call js function in the navigation frame, any better way?)
Hi Aris, How about this?
diff --git a/js/functions.js b/js/functions.js index 572c857..50fd6f8 100644 --- a/js/functions.js +++ b/js/functions.js @@ -2276,5 +2276,9 @@ $(document).ready(function() { } });
$('#update_recent_tables').ready(function() { +
window.parent.frame_navigation.PMA_reloadRecentTable(); + }); + }) // end of $(document).ready()
diff --git a/libraries/header.inc.php b/libraries/header.inc.php index 05d272e..4036f86 100644 --- a/libraries/header.inc.php +++ b/libraries/header.inc.php @@ -21,9 +21,7 @@ require_once './libraries/RecentTable.class.php'; function PMA_addRecentTable($db, $table) { $tmp_result = RecentTable::getInstance()->add($db, $table); if ($tmp_result === true) { - echo '<script type="text/javascript">' . - 'window.parent.frame_navigation.PMA_reloadRecentTable();' . - '</script>'; + echo '<span class="hide" id="update_recent_tables"></span>'; } else { $error = $tmp_result; $error->display();
This works. But, I'm thinking that we should add a function to register javascript for a certain page, shouldn't we? The registered script will be buffered for output, for example, near the bottom of the page. The function will look like this:
PMA_registerScript ( $scriptString );
We want to avoid using inline Javascript if possible because we want to benefit from caching these files at the browser level. Also, we want to use jQuery if possible, instead of pure Javascript.
Since, IMO, the code will be clearer and easier to understand than separated code in both the php and the js.
In this particular case, code has to be both in PHP and Javascript because you want to refresh the drop-down only if $tmp_result is true.