Fix saving schema to cookie in Opera and Firefox 4

This commit is contained in:
Jakub Vrana 2011-02-08 20:58:31 +01:00
parent 806264851e
commit 3eba7310da
4 changed files with 11 additions and 6 deletions

View file

@ -4,7 +4,8 @@ page_header(lang('Database schema'), "", array(), DB);
$table_pos = array();
$table_pos_js = array();
// saved in one cookie because there is a limit of 20 cookies per domain
preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', ($_GET["schema"] ? $_GET["schema"] : $_COOKIE["adminer_schema"]), $matches, PREG_SET_ORDER); //! ':' in table name
$name = "adminer_schema";
preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', ($_GET["schema"] ? $_GET["schema"] : $_COOKIE[($_COOKIE["$name-" . DB] ? "$name-" . DB : $name)]), $matches, PREG_SET_ORDER); // $_COOKIE["adminer_schema"] was used before 3.2.0 //! ':' in table name
foreach ($matches as $i => $match) {
$table_pos[$match[1]] = array($match[2], $match[3]);
$table_pos_js[] = "\n\t'" . js_escape($match[1]) . "': [ $match[2], $match[3] ]";
@ -53,7 +54,9 @@ foreach (table_status() as $row) {
tablePos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>};
em = document.getElementById('schema').offsetHeight / <?php echo $top; ?>;
document.onmousemove = schemaMousemove;
document.onmouseup = schemaMouseup;
document.onmouseup = function (ev) {
schemaMouseup(ev, '<?php echo js_escape(DB); ?>');
};
</script>
<?php
foreach ($schema as $name => $table) {

View file

@ -397,8 +397,9 @@ function schemaMousemove(ev) {
/** Finish move
* @param MouseEvent
* @param string
*/
function schemaMouseup(ev) {
function schemaMouseup(ev, db) {
if (that !== undefined) {
ev = ev || event;
tablePos[that.firstChild.firstChild.firstChild.data] = [ (ev.clientY - y) / em, (ev.clientX - x) / em ];
@ -410,6 +411,6 @@ function schemaMouseup(ev) {
s = encodeURIComponent(s.substr(1));
var link = document.getElementById('schema-link');
link.href = link.href.replace(/[^=]+$/, '') + s;
cookie('adminer_schema=' + s, 30, '; path="' + location.pathname + location.search + '"');
cookie('adminer_schema-' + db + '=' + s, 30); //! special chars in db
}
}

View file

@ -16,10 +16,10 @@ function toggle(id) {
* @param number
* @param string optional
*/
function cookie(assign, days, params) {
function cookie(assign, days) {
var date = new Date();
date.setDate(date.getDate() + days);
document.cookie = assign + '; expires=' + date + (params || '');
document.cookie = assign + '; expires=' + date;
}
/** Verify current Adminer version

View file

@ -18,6 +18,7 @@ Homepage customization
Use IN for search in numeric fields (Editor)
Use password input for _md5 and _sha1 fields (Editor)
Work without session.use_cookies (bug #3138640)
Fix saving schema to cookie in Opera
Portuguese, Slovenian and Turkish translation
Adminer 3.1.0 (released 2010-11-16):