[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_4_5RC1-19005-gdd81bf8

Madhura Jayaratne madhuracj at users.sourceforge.net
Wed Sep 14 06:55:21 CEST 2011


The branch, master has been updated
       via  dd81bf847ae2d055aabdd24ca379575297eeae41 (commit)
       via  9d83d2fc35482424125b065cfac09e7ce04ebb09 (commit)
       via  29a8f3f32c50d359496f56da458b68d721ddb6ab (commit)
       via  c1c81ed80aff6a870aea4fa84e05de79fb2c5836 (commit)
       via  1f6bd00b15ef9806820822316765b450f1e885b3 (commit)
       via  e3bcd9f7cff628841ee158ffeb01b6df9990c900 (commit)
       via  c3bb40cbce8a3e055fdd0ec98f9468f5d859ee00 (commit)
      from  110c1e4a59f1e45f3a4586ed970fc73d9fd8ff0e (commit)


- Log -----------------------------------------------------------------
commit dd81bf847ae2d055aabdd24ca379575297eeae41
Merge: 9d83d2f 110c1e4
Author: Madhura Jayaratne <madhura.cj at gmail.com>
Date:   Wed Sep 14 10:22:02 2011 +0530

    Merge branch 'master' of ssh://phpmyadmin.git.sourceforge.net/gitroot/phpmyadmin/phpmyadmin

commit 9d83d2fc35482424125b065cfac09e7ce04ebb09
Author: Madhura Jayaratne <madhura.cj at gmail.com>
Date:   Wed Sep 14 10:06:54 2011 +0530

    Load jquery.sprintf.js on demand

commit 29a8f3f32c50d359496f56da458b68d721ddb6ab
Author: Madhura Jayaratne <madhura.cj at gmail.com>
Date:   Wed Sep 14 07:56:50 2011 +0530

    Load scripts from cache when they are available

commit c1c81ed80aff6a870aea4fa84e05de79fb2c5836
Author: Madhura Jayaratne <madhura.cj at gmail.com>
Date:   Tue Sep 13 21:52:52 2011 +0530

    Load OpenLayers.js in a synchronous manner.

commit 1f6bd00b15ef9806820822316765b450f1e885b3
Author: Madhura Jayaratne <madhura.cj at gmail.com>
Date:   Tue Sep 13 19:03:43 2011 +0530

    Revert changes to loadJavascript() method

commit e3bcd9f7cff628841ee158ffeb01b6df9990c900
Author: Madhura Jayaratne <madhura.cj at gmail.com>
Date:   Tue Sep 13 08:31:10 2011 +0530

    JS files for gis_data_editor loaded dynamically

commit c3bb40cbce8a3e055fdd0ec98f9468f5d859ee00
Author: Madhura Jayaratne <madhura.cj at gmail.com>
Date:   Tue Sep 13 08:28:16 2011 +0530

    OpenStreetMaps.js merged into OpenLayers.js

-----------------------------------------------------------------------

Summary of changes:
 js/functions.js             |    2 +-
 js/gis_data_editor.js       |   92 ++++++++++++++++++++++++++-----
 js/openlayers/OpenLayers.js |  130 ++++++++++++++++++++++++++++++++++++++++++-
 js/tbl_change.js            |    7 ++-
 sql.php                     |    9 ---
 tbl_change.php              |    9 ---
 tbl_select.php              |    9 ---
 7 files changed, 214 insertions(+), 44 deletions(-)

diff --git a/js/functions.js b/js/functions.js
index b27dcc4..b0fc717 100644
--- a/js/functions.js
+++ b/js/functions.js
@@ -3325,7 +3325,7 @@ loadJavascript=function(file) {
     } else {
         $('head').append('<script type="text/javascript" src="'+file+'"></script>');
     }
-}
+};
 
 $(document).ready(function() {
     /**
diff --git a/js/gis_data_editor.js b/js/gis_data_editor.js
index 6fb3d7b..f77e286 100644
--- a/js/gis_data_editor.js
+++ b/js/gis_data_editor.js
@@ -5,6 +5,8 @@
  *
  */
 
+var gisEditorLoaded = false;
+
 /**
  * Closes the GIS data editor and perform necessary clean up work.
  */
@@ -78,7 +80,7 @@ function initGISEditorVisualization() {
 }
 
 /**
- * Opens up the GIS data editor.
+ * Loads JavaScript files and the GIS editor.
  *
  * @param value      current value of the geometry field
  * @param field      field name
@@ -86,17 +88,56 @@ function initGISEditorVisualization() {
  * @param input_name name of the input field
  * @param token      token
  */
-function openGISEditor(value, field, type, input_name, token) {
-    // Center the popup
-    var windowWidth = document.documentElement.clientWidth;
-    var windowHeight = document.documentElement.clientHeight;
-    var popupWidth = windowWidth * 0.9;
-    var popupHeight = windowHeight * 0.9;
-    var popupOffsetTop = windowHeight / 2 - popupHeight / 2;
-    var popupOffsetLeft = windowWidth / 2 - popupWidth / 2;
-    var $gis_editor = $("#gis_editor");
-    $gis_editor.css({"top": popupOffsetTop, "left": popupOffsetLeft, "width": popupWidth, "height": popupHeight});
+function loadJSAndGISEditor(value, field, type, input_name, token) {
+    var head = document.getElementsByTagName('head')[0];
+    var script;
+
+    // Loads a set of small JS file needed for the GIS editor
+    var smallScripts = [ 'js/jquery/jquery.svg.js',
+                     'js/jquery/jquery.sprintf.js',
+                     'js/jquery/jquery.mousewheel.js',
+                     'js/jquery/jquery.event.drag-2.0.min.js',
+                     'js/tbl_gis_visualization.js' ];
+
+    for (i = 0; i < smallScripts.length; i++) {
+        script = document.createElement('script');
+        script.type = 'text/javascript';
+        script.src = smallScripts[i];
+        head.appendChild(script);
+    }
+
+    // OpenLayers.js is BIG and takes time. So asynchronous loading would not work.
+    // Load the JS and do a callback to load the content for the GIS Editor.
+    script = document.createElement('script');
+    script.type = 'text/javascript';
+
+    script.onreadystatechange = function() {
+        if (this.readyState == 'complete') {
+            loadGISEditor(value, field, type, input_name, token);
+        }
+    };
+    script.onload = function() {
+        loadGISEditor(value, field, type, input_name, token);
+    };
+
+    script.src = 'js/openlayers/OpenLayers.js';
+    head.appendChild(script);
+
+    gisEditorLoaded = true;
+}
+
+/**
+ * Loads the GIS editor via AJAX
+ *
+ * @param value      current value of the geometry field
+ * @param field      field name
+ * @param type       geometry type
+ * @param input_name name of the input field
+ * @param token      token
+ */
+function loadGISEditor(value, field, type, input_name, token) {
 
+    var $gis_editor = $("#gis_editor");
     $.post('gis_data_editor.php', {
         'field' : field,
         'value' : value,
@@ -105,7 +146,7 @@ function openGISEditor(value, field, type, input_name, token) {
         'get_gis_editor' : true,
         'token' : token
     }, function(data) {
-        if(data.success == true) {
+        if (data.success == true) {
             $gis_editor.html(data.gis_editor);
             initGISEditorVisualization();
             prepareJSVersion();
@@ -113,10 +154,33 @@ function openGISEditor(value, field, type, input_name, token) {
             PMA_ajaxShowMessage(data.error);
         }
     }, 'json');
+}
+
+/**
+ * Opens up the dialog for the GIS data editor.
+ */
+function openGISEditor() {
+
+    // Center the popup
+    var windowWidth = document.documentElement.clientWidth;
+    var windowHeight = document.documentElement.clientHeight;
+    var popupWidth = windowWidth * 0.9;
+    var popupHeight = windowHeight * 0.9;
+    var popupOffsetTop = windowHeight / 2 - popupHeight / 2;
+    var popupOffsetLeft = windowWidth / 2 - popupWidth / 2;
+
+    var $gis_editor = $("#gis_editor");
+    var $backgrouond = $("#popup_background");
+
+    $gis_editor.css({"top": popupOffsetTop, "left": popupOffsetLeft, "width": popupWidth, "height": popupHeight});
+    $backgrouond.css({"opacity":"0.7"});
+
+    $gis_editor.append('<div id="gis_data_editor"><img class="ajaxIcon" id="loadingMonitorIcon" src="' 
+            + pmaThemeImage + 'ajax_clock_small.gif" alt=""></div>'
+    );
 
     // Make it appear
-    $("#popup_background").css({"opacity":"0.7"});
-    $("#popup_background").fadeIn("fast");
+    $backgrouond.fadeIn("fast");
     $gis_editor.fadeIn("fast");
 }
 
diff --git a/js/openlayers/OpenLayers.js b/js/openlayers/OpenLayers.js
index 43e67e8..66b6188 100644
--- a/js/openlayers/OpenLayers.js
+++ b/js/openlayers/OpenLayers.js
@@ -2550,4 +2550,132 @@ return node;},"_Layer":function(options){var layer,subPaths,node,title;layer=opt
 options.subPaths.shift();this.writeNode("_Layer",options,node);return node;}else{if(layer instanceof OpenLayers.Layer.WMS){node=this.writeNode("_WMS",layer);}else if(layer instanceof OpenLayers.Layer.Vector){if(layer.protocol instanceof OpenLayers.Protocol.WFS.v1){node=this.writeNode("_WFS",layer);}else if(layer.protocol instanceof OpenLayers.Protocol.HTTP){if(layer.protocol.format instanceof OpenLayers.Format.GML){layer.protocol.format.version="2.1.2";node=this.writeNode("_GML",layer);}else if(layer.protocol.format instanceof OpenLayers.Format.KML){layer.protocol.format.version="2.2";node=this.writeNode("_KML",layer);}}else{this.setNamespace("feature",this.featureNS);node=this.writeNode("_InlineGeometry",layer);}}
 if(layer.options.maxScale){this.writeNode("sld:MinScaleDenominator",layer.options.maxScale,node);}
 if(layer.options.minScale){this.writeNode("sld:MaxScaleDenominator",layer.options.minScale,node);}
-this.nestingLayerLookup[layer.name]=node;return node;}},"_WFS":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:layer.protocol.featurePrefix+":"+layer.protocol.featureType,hidden:layer.visibility?"0":"1"}});this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:layer.protocol.version,url:layer.protocol.url},node);return node;},"_InlineGeometry":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:layer.visibility?"0":"1"}});this.writeNode("ows:Title",layer.name,node);this.writeNode("InlineGeometry",layer,node);return node;},"_GML":function(layer){var node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:layer.protocol.url,version:layer.protocol.format.version},node);return node;},"_KML":function(layer){var node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:layer.protocol.format.version,url:layer.protocol.url},node);return node;}},"gml":OpenLayers.Util.applyDefaults({"boundedBy":function(bounds){var node=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",bounds,node);return node;}},OpenLayers.Format.GML.v2.prototype.writers.gml),"ows":OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,"sld":OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,"feature":OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});
\ No newline at end of file
+this.nestingLayerLookup[layer.name]=node;return node;}},"_WFS":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:layer.protocol.featurePrefix+":"+layer.protocol.featureType,hidden:layer.visibility?"0":"1"}});this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:layer.protocol.version,url:layer.protocol.url},node);return node;},"_InlineGeometry":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:layer.visibility?"0":"1"}});this.writeNode("ows:Title",layer.name,node);this.writeNode("InlineGeometry",layer,node);return node;},"_GML":function(layer){var node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:layer.protocol.url,version:layer.protocol.format.version},node);return node;},"_KML":function(layer){var node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:layer.protocol.format.version,url:layer.protocol.url},node);return node;}},"gml":OpenLayers.Util.applyDefaults({"boundedBy":function(bounds){var node=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",bounds,node);return node;}},OpenLayers.Format.GML.v2.prototype.writers.gml),"ows":OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,"sld":OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,"feature":OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});
+
+// OpenStreetMaps.js merged
+
+/**
+ * Namespace: Util.OSM
+ */
+OpenLayers.Util.OSM = {};
+
+/**
+ * Constant: MISSING_TILE_URL
+ * {String} URL of image to display for missing tiles
+ */
+OpenLayers.Util.OSM.MISSING_TILE_URL = "http://www.openstreetmap.org/openlayers/img/404.png";
+
+/**
+ * Property: originalOnImageLoadError
+ * {Function} Original onImageLoadError function.
+ */
+OpenLayers.Util.OSM.originalOnImageLoadError = OpenLayers.Util.onImageLoadError;
+
+/**
+ * Function: onImageLoadError
+ */
+OpenLayers.Util.onImageLoadError = function() {
+    if (this.src.match(/^http:\/\/[abc]\.[a-z]+\.openstreetmap\.org\//)) {
+        this.src = OpenLayers.Util.OSM.MISSING_TILE_URL;
+    } else if (this.src.match(/^http:\/\/[def]\.tah\.openstreetmap\.org\//)) {
+        // do nothing - this layer is transparent
+    } else {
+        OpenLayers.Util.OSM.originalOnImageLoadError;
+    }
+};
+
+/**
+ * Class: OpenLayers.Layer.OSM.Mapnik
+ *
+ * Inherits from:
+ *  - <OpenLayers.Layer.OSM>
+ */
+OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
+    /**
+     * Constructor: OpenLayers.Layer.OSM.Mapnik
+     *
+     * Parameters:
+     * name - {String}
+     * options - {Object} Hashtable of extra options to tag onto the layer
+     */
+    initialize: function(name, options) {
+        var url = [
+            "http://a.tile.openstreetmap.org/${z}/${x}/${y}.png",
+            "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png",
+            "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"
+        ];
+        options = OpenLayers.Util.extend({
+            numZoomLevels: 19,
+            buffer: 0,
+            transitionEffect: "resize"
+        }, options);
+        var newArguments = [name, url, options];
+        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
+    },
+
+    CLASS_NAME: "OpenLayers.Layer.OSM.Mapnik"
+});
+
+/**
+ * Class: OpenLayers.Layer.OSM.Osmarender
+ *
+ * Inherits from:
+ *  - <OpenLayers.Layer.OSM>
+ */
+OpenLayers.Layer.OSM.Osmarender = OpenLayers.Class(OpenLayers.Layer.OSM, {
+    /**
+     * Constructor: OpenLayers.Layer.OSM.Osmarender
+     *
+     * Parameters:
+     * name - {String}
+     * options - {Object} Hashtable of extra options to tag onto the layer
+     */
+    initialize: function(name, options) {
+        var url = [
+            "http://a.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
+            "http://b.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
+            "http://c.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png"
+        ];
+        options = OpenLayers.Util.extend({
+            numZoomLevels: 18,
+            buffer: 0,
+            transitionEffect: "resize"
+        }, options);
+        var newArguments = [name, url, options];
+        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
+    },
+
+    CLASS_NAME: "OpenLayers.Layer.OSM.Osmarender"
+});
+
+/**
+ * Class: OpenLayers.Layer.OSM.CycleMap
+ *
+ * Inherits from:
+ *  - <OpenLayers.Layer.OSM>
+ */
+OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
+    /**
+     * Constructor: OpenLayers.Layer.OSM.CycleMap
+     *
+     * Parameters:
+     * name - {String}
+     * options - {Object} Hashtable of extra options to tag onto the layer
+     */
+    initialize: function(name, options) {
+        var url = [
+            "http://a.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
+            "http://b.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
+            "http://c.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png"
+        ];
+        options = OpenLayers.Util.extend({
+            numZoomLevels: 19,
+            buffer: 0,
+            transitionEffect: "resize"
+        }, options);
+        var newArguments = [name, url, options];
+        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
+    },
+
+    CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap"
+});
\ No newline at end of file
diff --git a/js/tbl_change.js b/js/tbl_change.js
index 25bc120..099dab9 100644
--- a/js/tbl_change.js
+++ b/js/tbl_change.js
@@ -238,7 +238,12 @@ $(document).ready(function() {
         //Token
         var token = $("input[name='token']").val();
 
-        openGISEditor(value, field, type, input_name, token);
+        openGISEditor();
+        if (!gisEditorLoaded) {
+            loadJSAndGISEditor(value, field, type, input_name, token);
+        } else {
+            loadGISEditor(value, field, type, input_name, token);
+        }
     });
 
     /**
diff --git a/sql.php b/sql.php
index 8b8cf12..9695d12 100644
--- a/sql.php
+++ b/sql.php
@@ -17,16 +17,7 @@ require_once './libraries/bookmark.lib.php';
 $GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js';
 $GLOBALS['js_include'][] = 'jquery/timepicker.js';
 $GLOBALS['js_include'][] = 'tbl_change.js';
-
-// required for GIS editor loaded via AJAX
 $GLOBALS['js_include'][] = 'gis_data_editor.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.sprintf.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.svg.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.mousewheel.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.event.drag-2.0.min.js';
-$GLOBALS['js_include'][] = 'tbl_gis_visualization.js';
-$GLOBALS['js_include'][] = 'openlayers/OpenLayers.js';
-$GLOBALS['js_include'][] = 'OpenStreetMap.js';
 
 if (isset($_SESSION['profiling'])) {
     $GLOBALS['js_include'][] = 'highcharts/highcharts.js';
diff --git a/tbl_change.php b/tbl_change.php
index 5395dda..2fd9394 100644
--- a/tbl_change.php
+++ b/tbl_change.php
@@ -122,16 +122,7 @@ $GLOBALS['js_include'][] = 'functions.js';
 $GLOBALS['js_include'][] = 'tbl_change.js';
 $GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js';
 $GLOBALS['js_include'][] = 'jquery/timepicker.js';
-
-// required for GIS editor
 $GLOBALS['js_include'][] = 'gis_data_editor.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.sprintf.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.svg.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.mousewheel.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.event.drag-2.0.min.js';
-$GLOBALS['js_include'][] = 'tbl_gis_visualization.js';
-$GLOBALS['js_include'][] = 'openlayers/OpenLayers.js';
-$GLOBALS['js_include'][] = 'OpenStreetMap.js';
 
 /**
  * HTTP and HTML headers
diff --git a/tbl_select.php b/tbl_select.php
index 00cecfe..0ad5d25 100644
--- a/tbl_select.php
+++ b/tbl_select.php
@@ -23,16 +23,7 @@ $GLOBALS['js_include'][] = 'tbl_select.js';
 $GLOBALS['js_include'][] = 'tbl_change.js';
 $GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js';
 $GLOBALS['js_include'][] = 'jquery/timepicker.js';
-
-// required for GIS editor loaded via AJAX
 $GLOBALS['js_include'][] = 'gis_data_editor.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.sprintf.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.svg.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.mousewheel.js';
-$GLOBALS['js_include'][] = 'jquery/jquery.event.drag-2.0.min.js';
-$GLOBALS['js_include'][] = 'tbl_gis_visualization.js';
-$GLOBALS['js_include'][] = 'openlayers/OpenLayers.js';
-$GLOBALS['js_include'][] = 'OpenStreetMap.js';
 
 $titles['Browse'] = PMA_tbl_setTitle($GLOBALS['cfg']['PropertiesIconic'], $pmaThemeImage);
 


hooks/post-receive
-- 
phpMyAdmin




More information about the Git mailing list