Map JS renamed because of latest changes.
authorMario Ferraro <fadinlight@gmail.com>
Thu, 17 Sep 2009 17:31:40 +0200
changeset 2939 415a7c2866fd
parent 2938 062d5ddb15b7
child 2940 ef809d10aaf1
Map JS renamed because of latest changes.
app/soc/content/js/map-090825.js
app/soc/content/js/map-090917.js
app/soc/templates/soc/organization/home.html
app/soc/templates/soc/role/edit.html
--- a/app/soc/content/js/map-090825.js	Thu Sep 17 17:25:41 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,347 +0,0 @@
-(function () {
-  var role_profile_gmap = window.role_profile_gmap = function () {
-  };
-
-  // Create global variables
-  var map;
-  var marker;
-  var geocoder;
-
-  // The following strings can be customized to reflect ids in the page.
-  // You can also add or remove fields used for GMap Geocoding in 
-  // the JSON address object
-
-  var current_lat = 0;
-  var current_lng = 0;
-
-  // Two different levels for zoom: Starting one and an inner that 
-  // is used when showing the map if lat and lon page fields are set
-  var world_zoom = 0;
-  var country_zoom = 4;
-  var state_zoom = 6;
-  var city_zoom = 10;
-  var address_zoom = 13;
-
-  // Do not add a starting # as this JQuery selector seems 
-  // incompatible with GMap API
-  var map_div = "role_profile_map";
-
-  var field_lat = "#id_latitude";
-  var field_lng = "#id_longitude";
-  // Need to save old values to avoid unwanted updating 
-  // of lat and lot if marker dragged and blur another time an address field
-  var address = {
-    street: {
-      id: "#id_res_street",
-      old_value: ""
-    },
-    city: {
-      id: "#id_res_city",
-      old_value: ""
-    },
-    state: {
-      id: "#id_res_state",
-      old_value: ""
-    },
-    country: {
-      id: "#id_res_country",
-      old_value: ""
-    },
-    postalcode: {
-      id: "#id_res_postalcode",
-      old_value: ""
-    }
-  };
-
-  // Save current address fields in the JSON Object
-  function saveOldAddress() {
-    jQuery.each(address, function (level, level_details) {
-      level_details.old_value = jQuery(level_details.id).val();
-    });
-  }
-
-  // Return true if the user has edited address fields
-  function isNewAddress() {
-    var is_new = false;
-    jQuery.each(address, function (level, level_details) {
-      if (jQuery(level_details.id).val() !== level_details.old_value) {
-        is_new = true;
-        return false;
-      }
-    });
-    return is_new;
-  }
-
-  // Write saved lat and lng values to page fields
-  function setLatLngFields() {
-    jQuery(field_lat).val(current_lat);
-    jQuery(field_lng).val(current_lng);
-  }
-
-  // Read lat and lng fields and store them
-  function readLatLngFields() {
-    current_lat = jQuery(field_lat).val();
-    current_lng = jQuery(field_lng).val();
-  }
-
-  // This function reads address fields, merge them and uses
-  // GMap API geocoding to find the first hit
-  // Using geocoding
-  // http://code.google.com/intl/it-IT/apis/maps/documentation/
-  // services.html#Geocoding
-  function calculateAddress() {
-    // If the user has really edited address fields...
-    if (isNewAddress()) {
-      // Merge address fields
-      var address_string = "";
-      jQuery.each(address, function (level, level_details) {
-        address_string += jQuery(level_details.id).val() + ",";
-      });
-
-      // Ask GMap API for geocoding
-      geocoder.getLatLng(
-        address_string,
-        function (point) {
-          // If a point is found
-          if (point) {
-            // Save the current address in the JSON object
-            saveOldAddress();
-            // Set the new zoom, map center and marker coords
-            var zoom_set = world_zoom;
-            if (jQuery(address.street.id).val() !== "") {
-              zoom_set = address_zoom;
-            }
-            else if (jQuery(address.city.id).val() !== "") {
-              zoom_set = city_zoom;
-            }
-            else if (jQuery(address.state.id).val() !== "") {
-              zoom_set = state_zoom;
-            }
-            else if (jQuery(address.country.id).val() !== "") {
-              zoom_set = country_zoom;
-            }
-            map.setCenter(point, zoom_set);
-            marker.setPoint(point);
-            map.clearOverlays();
-            map.addOverlay(marker);
-            // Save point coords in local variables and then update 
-            // the page lat/lng fields
-            current_lat = point.lat();
-            current_lng = point.lng();
-            setLatLngFields();
-          }
-        }
-      );
-    }
-  }
-
-  // Public function to load the map
-  role_profile_gmap.map_load = function () {
-    // All can happen only if there is gmap compatible browser.
-    // TODO: Fallback in case the browser is not compatible
-    if (window.GBrowserIsCompatible()) {
-      // Save the address fields. This is useful if the page is being edited
-      // to not update blindly the lat/lng fields with GMap geocoding if
-      // blurring an address field
-      saveOldAddress();
-      var starting_point;
-      var zoom_selected = world_zoom;
-      var show_marker = true;
-
-      // Create the map and add small controls
-      map = new window.GMap2(document.getElementById(map_div));
-      map.addControl(new window.GSmallMapControl());
-      map.addControl(new window.GMapTypeControl());
-
-      // Instantiate a global geocoder for future use
-      geocoder = new window.GClientGeocoder();
-
-      // If lat and lng fields are not void (the page is being edited) then
-      // update the starting coords, modify the zoom level and tells following
-      // code to show the marker
-      if (jQuery(field_lat).val() !== "" && jQuery(field_lng).val() !== "") {
-        readLatLngFields();
-        zoom_selected = address_zoom;
-        show_marker = true;
-      }
-
-      // Set map center, marker coords and show it if this is an editing
-      starting_point = new window.GLatLng(current_lat, current_lng);
-      map.setCenter(starting_point, zoom_selected);
-      marker = new window.GMarker(starting_point, {draggable: true});
-      if (show_marker) {
-        map.addOverlay(marker);
-      }
-
-      // Adds a new event listener to geocode the address when an address 
-      // field is blurred
-      jQuery.each(address, function (level, level_details) {
-        jQuery(level_details.id).blur(calculateAddress);
-      });
-
-      // Adds a new event listener: if the marker has been dragged around...
-      window.GEvent.addListener(marker, "dragend", function () {
-        // Update internal variables with current marker coords...
-        current_lat = marker.getPoint().lat();
-        current_lng = marker.getPoint().lng();
-        // ...and set page fields accordingly
-        setLatLngFields();
-      });
-    }
-  };
-}());
-
-(function () {
-  var org_home_gmap = window.org_home_gmap = function () {
-  };
-  // Global variables
-  var map;
-
-  // HTML div tag where map needs to be inserted
-  var map_div = "org_home_map";
-
-  // Setup required icons
-  var base_icon = new window.GIcon();
-  base_icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
-  base_icon.iconSize = new window.GSize(20, 34);
-  base_icon.shadowSize = new window.GSize(37, 34);
-  base_icon.iconAnchor = new window.GPoint(9, 34);
-  base_icon.infoWindowAnchor = new window.GPoint(9, 2);
-  base_icon.infoShadowAnchor = new window.GPoint(18, 25);
-  var student_icon = new window.GIcon(base_icon);
-  student_icon.image = "http://www.google.com/mapfiles/marker.png";
-  var mentor_icon = new window.GIcon(base_icon);
-  mentor_icon.image = "/soc/content/images/mentor-marker.png";
-
-  // Map load function
-  org_home_gmap.map_load = function (map_data) {
-
-    if (window.GBrowserIsCompatible()) {
-      // Create the map and add small controls
-      map = new window.GMap2(document.getElementById(map_div));
-      map.addControl(new window.GLargeMapControl());
-      map.addControl(new window.GMapTypeControl());
-
-      // Set map center and initial zoom level
-      map.setCenter(new window.GLatLng(0, 0), 1);
-
-      var mentors = {};
-      var students = {};
-      var projects = {};
-      var polylines = [];
-
-      jQuery.each(map_data.people, function (key, person) {
-        if (person.type === "student") {
-          students[key] = {
-            "name": person.name,
-            "lat": person.lat,
-            "lon": person.lon,
-            "projects": person.projects
-          };
-        }
-        if (person.type === "mentor") {
-          mentors[key] = {
-            "name": person.name,
-            "lat": person.lat,
-            "lon": person.lon,
-            "projects": person.projects
-          };
-        }
-      });
-
-      // Iterate over projects to draw polylines
-      jQuery.each(map_data.projects, function (key, project) {
-        var current_student = students[project.student_key];
-        var current_mentor = mentors[project.mentor_key];
-        if (current_student !== undefined && 
-            current_mentor !== undefined &&
-            current_student.lat !== null &&
-            current_student.lon !== null &&
-            current_mentor.lat !== null &&
-            current_mentor.lon !== null) {
-              /*jslint white: false */
-              polylines.push([
-                [current_student.lat, current_student.lon],
-                [current_mentor.lat, current_mentor.lon]
-              ]);
-              /*jslint white: true */
-        }
-      });
-
-      // Iterate over students
-      jQuery.each(students, function (key, person) {
-        var html = "";
-        var marker = null;
-
-        if (person.lat !== null && person.lon !== null) {
-          var point = new window.GLatLng(person.lat, person.lon);
-
-          marker = new window.GMarker(point, student_icon);
-          html = [
-            "<strong>", person.name, "</strong><br />",
-            "<span style='font-style:italic;'>Student</span><br />",
-            "<div style='height:100px;width:300px;",
-            "overflow:auto;font-size:70%'>"
-          ].join("");
-          // iterate through projects
-          jQuery.each(person.projects, function () {
-            var current_project = map_data.projects[this];
-            html += [
-              "<a href='", current_project.redirect, "'>",
-              current_project.title, "</a><br />",
-              "Mentor: ", current_project.mentor_name, "<br />"
-            ].join("");
-          });
-          html += "</div>";
-          window.GEvent.addListener(marker, "click", function () {
-            marker.openInfoWindowHtml(html);
-          });
-
-          map.addOverlay(marker);
-        }
-      });
-
-      // Iterate over mentors
-      jQuery.each(mentors, function (key, person) {
-        var html = "";
-        var marker = null;
-
-        if (person.lat !== null && person.lon !== null) {
-          var point = new window.GLatLng(person.lat, person.lon);
-
-          marker = new window.GMarker(point, mentor_icon);
-          html = [
-            "<strong>", person.name, "</strong><br />",
-            "<span style='font-style:italic;'>Mentor</span><br />",
-            "<div style='height:100px;width:300px;",
-            "overflow:auto;font-size:70%'>"
-          ].join("");
-          // iterate through projects
-          jQuery.each(person.projects, function () {
-            var current_project = map_data.projects[this];
-            html += [
-              "<a href='", current_project.redirect, "'>",
-              current_project.title, "</a><br />",
-              "Student: ", current_project.student_name, "<br />"
-            ].join("");
-          });
-          html += "</div>";
-
-          window.GEvent.addListener(marker, "click", function () {
-            marker.openInfoWindowHtml(html);
-          });
-
-          map.addOverlay(marker);
-        }
-      });
-
-      // Draw all polylines
-      jQuery.each(polylines, function () {
-        var from = new window.GLatLng(this[0][0], this[0][1]);
-        var to = new window.GLatLng(this[1][0], this[1][1]);
-        var polyline = new window.GPolyline([from, to], "#ff0000", 3);
-        map.addOverlay(polyline);
-      });
-    }
-  };
-}());
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/js/map-090917.js	Thu Sep 17 17:31:40 2009 +0200
@@ -0,0 +1,347 @@
+(function () {
+  var role_profile_gmap = window.role_profile_gmap = function () {
+  };
+
+  // Create global variables
+  var map;
+  var marker;
+  var geocoder;
+
+  // The following strings can be customized to reflect ids in the page.
+  // You can also add or remove fields used for GMap Geocoding in 
+  // the JSON address object
+
+  var current_lat = 0;
+  var current_lng = 0;
+
+  // Two different levels for zoom: Starting one and an inner that 
+  // is used when showing the map if lat and lon page fields are set
+  var world_zoom = 0;
+  var country_zoom = 4;
+  var state_zoom = 6;
+  var city_zoom = 10;
+  var address_zoom = 13;
+
+  // Do not add a starting # as this JQuery selector seems 
+  // incompatible with GMap API
+  var map_div = "role_profile_map";
+
+  var field_lat = "#id_latitude";
+  var field_lng = "#id_longitude";
+  // Need to save old values to avoid unwanted updating 
+  // of lat and lot if marker dragged and blur another time an address field
+  var address = {
+    street: {
+      id: "#id_res_street",
+      old_value: ""
+    },
+    city: {
+      id: "#id_res_city",
+      old_value: ""
+    },
+    state: {
+      id: "#id_res_state",
+      old_value: ""
+    },
+    country: {
+      id: "#id_res_country",
+      old_value: ""
+    },
+    postalcode: {
+      id: "#id_res_postalcode",
+      old_value: ""
+    }
+  };
+
+  // Save current address fields in the JSON Object
+  function saveOldAddress() {
+    jQuery.each(address, function (level, level_details) {
+      level_details.old_value = jQuery(level_details.id).val();
+    });
+  }
+
+  // Return true if the user has edited address fields
+  function isNewAddress() {
+    var is_new = false;
+    jQuery.each(address, function (level, level_details) {
+      if (jQuery(level_details.id).val() !== level_details.old_value) {
+        is_new = true;
+        return false;
+      }
+    });
+    return is_new;
+  }
+
+  // Write saved lat and lng values to page fields
+  function setLatLngFields() {
+    jQuery(field_lat).val(current_lat);
+    jQuery(field_lng).val(current_lng);
+  }
+
+  // Read lat and lng fields and store them
+  function readLatLngFields() {
+    current_lat = jQuery(field_lat).val();
+    current_lng = jQuery(field_lng).val();
+  }
+
+  // This function reads address fields, merge them and uses
+  // GMap API geocoding to find the first hit
+  // Using geocoding
+  // http://code.google.com/intl/it-IT/apis/maps/documentation/
+  // services.html#Geocoding
+  function calculateAddress() {
+    // If the user has really edited address fields...
+    if (isNewAddress()) {
+      // Merge address fields
+      var address_string = "";
+      jQuery.each(address, function (level, level_details) {
+        address_string += jQuery(level_details.id).val() + ",";
+      });
+
+      // Ask GMap API for geocoding
+      geocoder.getLatLng(
+        address_string,
+        function (point) {
+          // If a point is found
+          if (point) {
+            // Save the current address in the JSON object
+            saveOldAddress();
+            // Set the new zoom, map center and marker coords
+            var zoom_set = world_zoom;
+            if (jQuery(address.street.id).val() !== "") {
+              zoom_set = address_zoom;
+            }
+            else if (jQuery(address.city.id).val() !== "") {
+              zoom_set = city_zoom;
+            }
+            else if (jQuery(address.state.id).val() !== "") {
+              zoom_set = state_zoom;
+            }
+            else if (jQuery(address.country.id).val() !== "") {
+              zoom_set = country_zoom;
+            }
+            map.setCenter(point, zoom_set);
+            marker.setPoint(point);
+            map.clearOverlays();
+            map.addOverlay(marker);
+            // Save point coords in local variables and then update 
+            // the page lat/lng fields
+            current_lat = point.lat();
+            current_lng = point.lng();
+            setLatLngFields();
+          }
+        }
+      );
+    }
+  }
+
+  // Public function to load the map
+  role_profile_gmap.map_load = function () {
+    // All can happen only if there is gmap compatible browser.
+    // TODO: Fallback in case the browser is not compatible
+    if (window.GBrowserIsCompatible()) {
+      // Save the address fields. This is useful if the page is being edited
+      // to not update blindly the lat/lng fields with GMap geocoding if
+      // blurring an address field
+      saveOldAddress();
+      var starting_point;
+      var zoom_selected = world_zoom;
+      var show_marker = true;
+
+      // Create the map and add small controls
+      map = new window.GMap2(document.getElementById(map_div));
+      map.addControl(new window.GSmallMapControl());
+      map.addControl(new window.GMapTypeControl());
+
+      // Instantiate a global geocoder for future use
+      geocoder = new window.GClientGeocoder();
+
+      // If lat and lng fields are not void (the page is being edited) then
+      // update the starting coords, modify the zoom level and tells following
+      // code to show the marker
+      if (jQuery(field_lat).val() !== "" && jQuery(field_lng).val() !== "") {
+        readLatLngFields();
+        zoom_selected = address_zoom;
+        show_marker = true;
+      }
+
+      // Set map center, marker coords and show it if this is an editing
+      starting_point = new window.GLatLng(current_lat, current_lng);
+      map.setCenter(starting_point, zoom_selected);
+      marker = new window.GMarker(starting_point, {draggable: true});
+      if (show_marker) {
+        map.addOverlay(marker);
+      }
+
+      // Adds a new event listener to geocode the address when an address 
+      // field is blurred
+      jQuery.each(address, function (level, level_details) {
+        jQuery(level_details.id).blur(calculateAddress);
+      });
+
+      // Adds a new event listener: if the marker has been dragged around...
+      window.GEvent.addListener(marker, "dragend", function () {
+        // Update internal variables with current marker coords...
+        current_lat = marker.getPoint().lat();
+        current_lng = marker.getPoint().lng();
+        // ...and set page fields accordingly
+        setLatLngFields();
+      });
+    }
+  };
+}());
+
+(function () {
+  var org_home_gmap = window.org_home_gmap = function () {
+  };
+  // Global variables
+  var map;
+
+  // HTML div tag where map needs to be inserted
+  var map_div = "org_home_map";
+
+  // Setup required icons
+  var base_icon = new window.GIcon();
+  base_icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
+  base_icon.iconSize = new window.GSize(20, 34);
+  base_icon.shadowSize = new window.GSize(37, 34);
+  base_icon.iconAnchor = new window.GPoint(9, 34);
+  base_icon.infoWindowAnchor = new window.GPoint(9, 2);
+  base_icon.infoShadowAnchor = new window.GPoint(18, 25);
+  var student_icon = new window.GIcon(base_icon);
+  student_icon.image = "http://www.google.com/mapfiles/marker.png";
+  var mentor_icon = new window.GIcon(base_icon);
+  mentor_icon.image = "/soc/content/images/mentor-marker.png";
+
+  // Map load function
+  org_home_gmap.map_load = function (map_data) {
+
+    if (window.GBrowserIsCompatible()) {
+      // Create the map and add small controls
+      map = new window.GMap2(document.getElementById(map_div));
+      map.addControl(new window.GLargeMapControl());
+      map.addControl(new window.GMapTypeControl());
+
+      // Set map center and initial zoom level
+      map.setCenter(new window.GLatLng(0, 0), 1);
+
+      var mentors = {};
+      var students = {};
+      var projects = {};
+      var polylines = [];
+
+      jQuery.each(map_data.people, function (key, person) {
+        if (person.type === "student") {
+          students[key] = {
+            "name": person.name,
+            "lat": person.lat,
+            "lon": person.lon,
+            "projects": person.projects
+          };
+        }
+        if (person.type === "mentor") {
+          mentors[key] = {
+            "name": person.name,
+            "lat": person.lat,
+            "lon": person.lon,
+            "projects": person.projects
+          };
+        }
+      });
+
+      // Iterate over projects to draw polylines
+      jQuery.each(map_data.projects, function (key, project) {
+        var current_student = students[project.student_key];
+        var current_mentor = mentors[project.mentor_key];
+        if (current_student !== undefined && 
+            current_mentor !== undefined &&
+            current_student.lat !== null &&
+            current_student.lon !== null &&
+            current_mentor.lat !== null &&
+            current_mentor.lon !== null) {
+              /*jslint white: false */
+              polylines.push([
+                [current_student.lat, current_student.lon],
+                [current_mentor.lat, current_mentor.lon]
+              ]);
+              /*jslint white: true */
+        }
+      });
+
+      // Iterate over students
+      jQuery.each(students, function (key, person) {
+        var html = "";
+        var marker = null;
+
+        if (person.lat !== null && person.lon !== null) {
+          var point = new window.GLatLng(person.lat, person.lon);
+
+          marker = new window.GMarker(point, student_icon);
+          html = [
+            "<strong>", person.name, "</strong><br />",
+            "<span style='font-style:italic;'>Student</span><br />",
+            "<div style='height:100px;width:300px;",
+            "overflow:auto;font-size:70%'>"
+          ].join("");
+          // iterate through projects
+          jQuery.each(person.projects, function () {
+            var current_project = map_data.projects[this];
+            html += [
+              "<a href='", current_project.redirect, "'>",
+              current_project.title, "</a><br />",
+              "Mentor: ", current_project.mentor_name, "<br />"
+            ].join("");
+          });
+          html += "</div>";
+          window.GEvent.addListener(marker, "click", function () {
+            marker.openInfoWindowHtml(html);
+          });
+
+          map.addOverlay(marker);
+        }
+      });
+
+      // Iterate over mentors
+      jQuery.each(mentors, function (key, person) {
+        var html = "";
+        var marker = null;
+
+        if (person.lat !== null && person.lon !== null) {
+          var point = new window.GLatLng(person.lat, person.lon);
+
+          marker = new window.GMarker(point, mentor_icon);
+          html = [
+            "<strong>", person.name, "</strong><br />",
+            "<span style='font-style:italic;'>Mentor</span><br />",
+            "<div style='height:100px;width:300px;",
+            "overflow:auto;font-size:70%'>"
+          ].join("");
+          // iterate through projects
+          jQuery.each(person.projects, function () {
+            var current_project = map_data.projects[this];
+            html += [
+              "<a href='", current_project.redirect, "'>",
+              current_project.title, "</a><br />",
+              "Student: ", current_project.student_name, "<br />"
+            ].join("");
+          });
+          html += "</div>";
+
+          window.GEvent.addListener(marker, "click", function () {
+            marker.openInfoWindowHtml(html);
+          });
+
+          map.addOverlay(marker);
+        }
+      });
+
+      // Draw all polylines
+      jQuery.each(polylines, function () {
+        var from = new window.GLatLng(this[0][0], this[0][1]);
+        var to = new window.GLatLng(this[1][0], this[1][1]);
+        var polyline = new window.GPolyline([from, to], "#ff0000", 3);
+        map.addOverlay(polyline);
+      });
+    }
+  };
+}());
--- a/app/soc/templates/soc/organization/home.html	Thu Sep 17 17:25:41 2009 +0200
+++ b/app/soc/templates/soc/organization/home.html	Thu Sep 17 17:31:40 2009 +0200
@@ -17,7 +17,7 @@
 {{ block.super }}
 {% if gmaps_api_key %}
 	<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key={{ gmaps_api_key }}" type="text/javascript"></script>
-	<script type="text/javascript" src="/soc/content/js/map-090825.js"></script>
+	<script type="text/javascript" src="/soc/content/js/map-090917.js"></script>
 {% endif %}
 {% endblock %}
 
--- a/app/soc/templates/soc/role/edit.html	Thu Sep 17 17:25:41 2009 +0200
+++ b/app/soc/templates/soc/role/edit.html	Thu Sep 17 17:31:40 2009 +0200
@@ -18,7 +18,7 @@
 {{ block.super }}
 {% if gmaps_api_key %}
 	<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key={{ gmaps_api_key }}" type="text/javascript"></script>
-	<script type="text/javascript" src="/soc/content/js/map-090825.js"></script>
+	<script type="text/javascript" src="/soc/content/js/map-090917.js"></script>
 {% endif %}
 {% endblock %}