// }}}
+ /**
+ * Convert fload degrees to N/S or E/W Lat/Lon as D, D M, or D M S
+ *
+ * @param int $d The decimal lat lon
+ * @param string $LatLon (Lat or Lon)
+ * @param string $type (D, DM, or DMS)
+ * @param int $precision Decimal Precision
+ *
+ * @return array (text, dir, deg, min, sec)
+ */
+ static public function f2LatLon($d, $LatLon, $type, $precision)
+ {
+ $sign = +1;
+ if ($d < 0) {
+ $sign = -1;
+ }
+
+ switch ($LatLon) {
+ case 'Lat':
+ // Is it N or S?
+ $dir = 'N';
+ if ($d < 0) {
+ $dir = 'S';
+ }
+
+ $deg_size = 2;
+ $dir_opts = array('1' => 'N', '-1' => 'S');
+ break;
+ case 'Lon':
+ // Is it E or W?
+ $dir = 'E';
+ if ($d < 0) {
+ $dir = 'W';
+ }
+
+ $deg_size = 3;
+ $dir_opts = array('1' => 'E', '-1' => 'W');
+ break;
+ }
+ $d = abs($d);
+ $deg = 0;
+ $min = 0;
+ $sec = 0;
+ $format = "%s %0" . $deg_size . "." . $precision . "f°";
+
+ if ($type == 'D') {
+ $deg = $d;
+ } elseif ($type == 'DM' || $type == 'DMS') {
+ $deg = (int) $d;
+ $d = ($d - $deg) * 60;
+ $min = $d;
+ $format = "%s %02d° %02.".$precision."f'";
+ if ($type == 'DMS') {
+ $min = (int) $d;
+ $sec = ($d - $min) * 60;
+ $format = "%s %0".$deg_size."d° %02d' %02.".$precision."f\"";
+ }
+ }
+
+ // Setup possible direction selection
+ $dir_select = array(
+ array(
+ 'value' => 1,
+ 'name' => $dir_opts[1],
+ 'default' => ($sign == 1)
+ ),
+ array(
+ 'value' => - 1,
+ 'name' => $dir_opts[-1],
+ 'default' => ($sign == - 1)
+ )
+ );
+
+ return array(
+ 'text' => $dms = sprintf($format, $dir, $deg, $min, $sec),
+ 'd_only' => ($sign * ($deg + ($min + $sec / 60) / 60)),
+ 'dir' => $sign,
+ 'dir_list' => $dir_select,
+ 'deg' => $deg,
+ 'min' => $min,
+ 'sec' => $sec,
+ );
+ }
+
+ /**
+ * Converts DMS ( Degrees / minutes / seconds )
+ * to decimal format longitude / latitude
+ *
+ * @param type $deg
+ * @param type $min
+ * @param type $sec
+ *
+ * @return array
+ */
+ public static function DMStoDEC($deg, $min, $sec)
+ {
+ return $deg + ((($min * 60) + ($sec)) / 3600);
+ }
+
+ public static function convertLatToDMSString($lat)
+ {
+ $coord = Toolkit_Common::DECtoDMS($lat);
+ if ($coord == 0) {
+ return false;
+ }
+ return sprintf("%d°%d'%d\"%s", $coord[0], $coord[1], $coord[2], $coord[3] ? 'N' : 'S');
+ }
+
+ public static function convertLonToDMSString($lon)
+ {
+ $coord = Toolkit_Common::DECtoDMS($lon);
+ if ($coord == 0) {
+ return false;
+ }
+ return sprintf("%d°%d'%d\"%s", $coord[0], $coord[1], $coord[2], $coord[3] ? 'W' : 'E');
+ }
+
+ /**
+ * Converts decimal longitude / latitude to DMS
+ * (Degrees / minutes / seconds)
+ *
+ * This is the piece of code which may appear to
+ * be inefficient, but to avoid issues with floating
+ * point math we extract the integer part and the float
+ * part by using a string function.
+ *
+ * @param float $coord lat lon to convert
+ *
+ * @return array
+ */
+ public static function DECtoDMS($coord)
+ {
+ if ($coord == 0) {
+ return false;
+ }
+ $isnorth = $coord >= 0;
+ $coord = abs($coord);
+ $deg = floor($coord);
+ $coord = ($coord - $deg) * 60;
+ $min = floor($coord);
+ $sec = floor(($coord-$min) * 60);
+ return array($deg, $min, $sec, $isnorth);
+ }
+
// {{{ arrayFlatten()
/**
geocoder: null,
map: null,
setDefaultLat: function(lat) {
- GLM_GeoMap.defaultLat = lat;
+ GLM_GeoMap.defaultLat = lat;
},
setDefaultLon: function(lon) {
GLM_GeoMap.defaultLon = lon;
},
initialize: function() {
+ console.log('GLM_GeoMap started');
GLM_GeoMap.createMap();
var lat = $("#lat").val();
var lon = $("#lon").val();
+// console.log('Lat: ' + lat);
+// console.log('Lon: ' + lon);
+// console.log('Loc:' + $("#loc").length);
+ var latDeg = $("#latDeg");
+ var lonDeg = $("#lonDeg");
+ var latDir = $("#latDir");
+ var lonDir = $("#lonDir");
+ var latMin = $("#latMin");
+ var lonMin = $("#lonMin");
+ var latSec = $("#latSec");
+ var lonSec = $("#lonSec");
+// console.log('Lat[deg]: ' + latDeg.val());
+// console.log('Lon[deg]: ' + lonDeg.val());
+// console.log('Lat[dir]: ' + latDir.val());
+// console.log('Lon[dir]: ' + lonDir.val());
+// console.log('Lat[min]: ' + latMin.val());
+// console.log('Lon[min]: ' + lonMin.val());
+// console.log('Lat[sec]: ' + latSec.val());
+// console.log('Lon[sec]: ' + lonSec.val());
+ var hemiLat = (latDir.val() == '1')
+ ? LocationFormatter.NORTH
+ : LocationFormatter.SOUTH;
+ console.log(hemiLat);
+ var lat = LocationFormatter.DMSToDecimal(
+ parseInt(latDeg.val()),
+ parseInt(latMin.val()),
+ parseInt(latSec.val()),
+ hemiLat
+ );
+ var hemiLon = (lonDir.val() == '1')
+ ? LocationFormatter.EAST
+ : LocationFormatter.WEST;
+ var lon = LocationFormatter.DMSToDecimal(
+ parseInt(lonDeg.val()),
+ parseInt(lonMin.val()),
+ parseInt(lonSec.val()),
+ hemiLon
+ );
+ console.log('Lat: ' + lat);
+ console.log('Lon: ' + lon);
+
if ($("#loc").length > 0) {
var location = $("#loc").val();
} else {
}
if (lat && lon) {
- GLM_GeoMap.createWithLatLon();
+ GLM_GeoMap.createWithLatLon(lat, lon);
} else if (location) {
+ console.log('Creating with location' + location);
GLM_GeoMap.createWithLocation(location);
} else if (street || city || state || zip) {
+ console.log('Creating with street,city,state,zip');
GLM_GeoMap.createWithAddress(street, city, state, zip);
} else {
+ console.log('Creating with client location');
GLM_GeoMap.createWithClientLocation();
}
},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
GLM_GeoMap.map = new google.maps.Map(
- document.getElementById("map_canvas"),
- myOptions
- );
+ document.getElementById("map_canvas"),
+ myOptions
+ );
},
addMarkerToMap: function(LatLng) {
var marker = new google.maps.Marker({
});
var location = marker.getPosition();
GLM_GeoMap.updateLatLonDiv(location);
- google.maps.event.addListener(marker, 'dragend', function(){
+ google.maps.event.addListener(marker, 'dragend', function() {
var location = marker.getPosition();
GLM_GeoMap.updateLatLonDiv(location);
});
GLM_GeoMap.map.setZoom(15);
},
updateLatLonDiv: function(point) {
- $("#lat").val(point.lat());
- $("#lon").val(point.lng());
+ var latDegrees = point.lat();
+ var latDMS = LocationFormatter.decimalLatToDMS(latDegrees);
+ var lonDegrees = point.lng();
+ var lonDMS = LocationFormatter.decimalLongToDMS(lonDegrees);
+ var latDeg = $("#latDeg");
+ var lonDeg = $("#lonDeg");
+ var latDir = $("#latDir");
+ var lonDir = $("#lonDir");
+ var latMin = $("#latMin");
+ var lonMin = $("#lonMin");
+ var latSec = $("#latSec");
+ var lonSec = $("#lonSec");
+ var hemiLat = (latDMS.hemi == LocationFormatter.NORTH)
+ ? 1
+ : -1;
+ var hemiLon = (lonDMS.hemi == LocationFormatter.EAST)
+ ? 1
+ : -1;
+ // update lat fields
+ latDeg.val(latDMS.deg);
+ latMin.val(latDMS.min);
+ latSec.val(latDMS.sec);
+ latDir.val(hemiLat);
+ // update lon fields
+ lonDeg.val(lonDMS.deg);
+ lonMin.val(lonDMS.min);
+ lonSec.val(lonDMS.sec);
+ lonDir.val(hemiLon);
},
createWithClientLocation: function() {
// Try HTML5 geolocation
if (navigator.geolocation) {
+ console.log('Found location with HTML5');
navigator.geolocation.getCurrentPosition(function(position) {
var pos = new google.maps.LatLng(
- position.coords.latitude,
- position.coords.longitude
- );
+ position.coords.latitude,
+ position.coords.longitude
+ );
GLM_GeoMap.addMarkerToMap(pos);
}, function() {
GLM_GeoMap.handleNoGeolocation(true);
});
+ } else {
+ console.log('Failed finding location with HTML5');
}
},
- createWithLatLon: function() {
+ createWithLatLon: function(lat, lon) {
GLM_GeoMap.addMarkerToMap(new google.maps.LatLng(
- $("#lat").val(),
- $("#lon").val()
+ lat,
+ lon
));
},
createWithDefaultLatLon: function() {
GLM_GeoMap.addMarkerToMap(new google.maps.LatLng(
- GLM_GeoMap.defaultLat,
- GLM_GeoMap.defaultLon
- ));
+ GLM_GeoMap.defaultLat,
+ GLM_GeoMap.defaultLon
+ ));
},
createWithLocation: function(address) {
GLM_GeoMap.geocoder = new google.maps.Geocoder();
GLM_GeoMap.geocoder.geocode(
- {'address': address},
- function(results, status) {
- if (status == google.maps.GeocoderStatus.OK) {
- GLM_GeoMap.map.setCenter(results[0].geometry.location);
- GLM_GeoMap.addMarkerToMap(results[0].geometry.location);
- } else {
- GLM_GeoMap.createWithClientLocation();
- }
+ {'address': address},
+ function(results, status) {
+ if (status == google.maps.GeocoderStatus.OK) {
+ GLM_GeoMap.map.setCenter(results[0].geometry.location);
+ GLM_GeoMap.addMarkerToMap(results[0].geometry.location);
+ } else {
+ GLM_GeoMap.createWithClientLocation();
}
+ }
);
},
createWithAddress: function(street, city, state, zip) {
}
GLM_GeoMap.geocoder = new google.maps.Geocoder();
GLM_GeoMap.geocoder.geocode(
- {'address': location},
- function(results, status) {
- if (status == google.maps.GeocoderStatus.OK) {
- GLM_GeoMap.map.setCenter(results[0].geometry.location);
- GLM_GeoMap.addMarkerToMap(results[0].geometry.location);
- } else {
- GLM_GeoMap.createWithClientLocation();
- }
+ {'address': location},
+ function(results, status) {
+ if (status == google.maps.GeocoderStatus.OK) {
+ GLM_GeoMap.map.setCenter(results[0].geometry.location);
+ GLM_GeoMap.addMarkerToMap(results[0].geometry.location);
+ } else {
+ GLM_GeoMap.createWithClientLocation();
}
+ }
);
},
handleNoGeolocation: function(errorFlag) {
var infowindow = new google.maps.InfoWindow(options);
GLM_GeoMap.map.setCenter(options.position);
}
-}
\ No newline at end of file
+}
+
+function LocationFormatter() {
+}
+;
+
+LocationFormatter.NORTH = 'N';
+LocationFormatter.SOUTH = 'S';
+LocationFormatter.EAST = 'E';
+LocationFormatter.WEST = 'W';
+
+LocationFormatter.roundToDecimal = function(inputNum, numPoints) {
+ var multiplier = Math.pow(10, numPoints);
+ return Math.round(inputNum * multiplier) / multiplier;
+};
+
+LocationFormatter.decimalToDMS = function(location, hemisphere) {
+ if (location < 0) {
+ location *= -1; // strip dash '-'
+ }
+ var degrees = Math.floor(location); // strip decimal remainer for degrees
+ var minutesFromRemainder = (location - degrees) * 60; // multiply the remainer by 60
+ var minutes = Math.floor(minutesFromRemainder); // get minutes from integer
+ var secondsFromRemainder = (minutesFromRemainder - minutes) * 60; // multiply the remainer by 60
+ var seconds = LocationFormatter.roundToDecimal(secondsFromRemainder, 2); // get minutes by rounding to integer
+ DMS = {"deg":degrees,"min":minutes,"sec":seconds,"hemi":hemisphere};
+ return DMS;
+};
+
+LocationFormatter.decimalLatToDMS = function(location) {
+ var hemisphere = (location < 0) ? LocationFormatter.SOUTH : LocationFormatter.NORTH; // south if negative
+ return LocationFormatter.decimalToDMS(location, hemisphere);
+};
+
+LocationFormatter.decimalLongToDMS = function(location) {
+ var hemisphere = (location < 0) ? LocationFormatter.WEST : LocationFormatter.EAST; // west if negative
+ return LocationFormatter.decimalToDMS(location, hemisphere);
+};
+
+LocationFormatter.DMSToDecimal = function(degrees, minutes, seconds, hemisphere) {
+ console.log('DMSToDecimal: '
+ + degrees + ' '
+ + minutes + ' '
+ + seconds + ' '
+ + hemisphere);
+ var ddVal = degrees + minutes / 60 + seconds / 3600;
+ ddVal = (hemisphere == LocationFormatter.SOUTH || hemisphere == LocationFormatter.WEST) ? ddVal * -1 : ddVal;
+ return LocationFormatter.roundToDecimal(ddVal, 5);
+};
\ No newline at end of file
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
foreach ($row as $k => $v) {
- if ($k == 'logo') {
- $defaults['old_logo_rmv'] = $v;
+ switch ($k) {
+ case 'logo':
+ $defaults['old_logo_rmv'] = $v;
$k = 'image_rmv';
$v = '<img src="'.MEMBER_PHOTOS.$v.'"
alt="'.$v.'">';
- }
- $defaults[$k] = $v;
+ break;
+ case 'lat':
+ $latDMS = Toolkit_Common::f2LatLon(
+ $v,
+ 'Lat',
+ 'DMS',
+ 2
+ );
+ $sec = (float)sprintf("%01.2f", $latDMS['sec']);
+ $defaults['lat'] = array(
+ 'dir' => $latDMS['dir'],
+ 'deg' => $latDMS['deg'],
+ 'min' => $latDMS['min'],
+ 'sec' => (float)$sec
+ );
+ break;
+ case 'lon':
+ $latDMS = Toolkit_Common::f2LatLon(
+ $v,
+ 'Lon',
+ 'DMS',
+ 2
+ );
+ $sec = (float)sprintf("%01.2f", $latDMS['sec']);
+ $defaults['lon'] = array(
+ 'dir' => $latDMS['dir'],
+ 'deg' => $latDMS['deg'],
+ 'min' => $latDMS['min'],
+ 'sec' => (float)$sec
+ );
+ break;
+ default:
+ $defaults[$k] = $v;
+ break;
+ }
}
}
'name' => 'description',
'display' => null,
'opts' => array(
- 'id' => 'description',
- 'rows' => 8,
- 'cols' => 43
+ 'id' => 'description',
+ 'rows' => 8,
+ 'cols' => 43
),
'noCharLimit' => true
);
'name' => 'guide',
'display' => null,
'opts' => array(
- 'id' => 'guide',
- 'rows' => 8,
- 'cols' => 43
+ 'id' => 'guide',
+ 'rows' => 8,
+ 'cols' => 43
),
'noCharLimit' => true
);
'name' => 'facilities',
'display' => null,
'opts' => array(
- 'id' => 'facilities',
- 'rows' => 8,
- 'cols' => 43
+ 'id' => 'facilities',
+ 'rows' => 8,
+ 'cols' => 43
),
'noCharLimit' => true
);
'name' => 'hours',
'display' => null,
'opts' => array(
- 'id' => 'hours',
- 'rows' => 8,
- 'cols' => 43
+ 'id' => 'hours',
+ 'rows' => 8,
+ 'cols' => 43
),
'noCharLimit' => true
);
'name' => 'directions',
'display' => null,
'opts' => array(
- 'id' => 'directions',
- 'rows' => 8,
- 'cols' => 43
+ 'id' => 'directions',
+ 'rows' => 8,
+ 'cols' => 43
),
'noCharLimit' => true
);
'name' => 'information',
'display' => null,
'opts' => array(
- 'id' => 'information',
- 'rows' => 8,
- 'cols' => 43
+ 'id' => 'information',
+ 'rows' => 8,
+ 'cols' => 43
),
'noCharLimit' => true
);
</div>
<a id="map-it" href="#">Map It</a>'
);
+ // create groups for Lat and Lon
+ $lat[] = array(
+ 'type' => 'select',
+ 'name' => 'dir',
+ 'req' => false,
+ 'display' => '',
+ 'opts' => array('1' => 'N', '-1' => 'S'),
+ 'att' => array('id' => 'latDir'),
+ 'noCharLimit' => true
+ );
+ $lat[] = array(
+ 'type' => 'text',
+ 'name' => 'deg',
+ 'req' => false,
+ 'display' => 'Deg',
+ 'opts' => array(
+ 'id' => 'latDeg', 'size' => 3, 'maxlength' => 3
+ ),
+ 'noCharLimit' => true
+ );
+ $lat[] = array(
+ 'type' => 'text',
+ 'name' => 'min',
+ 'req' => false,
+ 'display' => 'Min',
+ 'opts' => array(
+ 'id' => 'latMin', 'size' => 2, 'maxlength' => 2
+ ),
+ 'noCharLimit' => true
+ );
+ $lat[] = array(
+ 'type' => 'text',
+ 'name' => 'sec',
+ 'req' => false,
+ 'display' => 'Sec',
+ 'opts' => array(
+ 'id' => 'latSec', 'size' => 2, 'maxlength' => 4
+ ),
+ 'noCharLimit' => true
+ );
$e[] = array(
- 'type' => 'text',
- 'req' => false,
- 'name' => 'lat',
- 'display' => 'Latitude',
- 'opts' => array('id' => 'lat', 'class' => 'text')
+ 'type' => 'group',
+ 'req' => false,
+ 'name' => 'lat',
+ 'group' => $lat,
+ 'label' => 'Latitude',
+ 'seperator' => ' ',
+ 'appendName' => true,
+ 'noCharLimit' => true
+ );
+
+ $lon[] = array(
+ 'type' => 'select',
+ 'name' => 'dir',
+ 'req' => false,
+ 'display' => '',
+ 'opts' => array('1' => 'E', '-1' => 'W'),
+ 'att' => array('id' => 'lonDir'),
+ 'noCharLimit' => true
+ );
+ $lon[] = array(
+ 'type' => 'text',
+ 'name' => 'deg',
+ 'req' => false,
+ 'display' => '',
+ 'opts' => array(
+ 'id' => 'lonDeg', 'size' => 3, 'maxlength' => 3
+ ),
+ 'noCharLimit' => true
+ );
+ $lon[] = array(
+ 'type' => 'text',
+ 'name' => 'min',
+ 'req' => false,
+ 'display' => '',
+ 'opts' => array(
+ 'id' => 'lonMin', 'size' => 2, 'maxlength' => 2
+ ),
+ 'noCharLimit' => true
+ );
+ $lon[] = array(
+ 'type' => 'text',
+ 'name' => 'sec',
+ 'req' => false,
+ 'display' => '',
+ 'opts' => array(
+ 'id' => 'lonSec', 'size' => 2, 'maxlength' => 4
+ ),
+ 'noCharLimit' => true
);
$e[] = array(
- 'type' => 'text',
- 'req' => false,
- 'name' => 'lon',
- 'display' => 'Longitude',
- 'opts' => array('id' => 'lon', 'class' => 'text')
+ 'type' => 'group',
+ 'req' => false,
+ 'name' => 'lon',
+ 'group' => $lon,
+ 'label' => 'Longitude',
+ 'seperator' => ' ',
+ 'appendName' => true,
+ 'noCharLimit' => true
);
// {{{ Main Image
$f = array();
$f[] = array(
'element' => '__ALL__',
- 'filter' => 'trim'
+ 'filter' => 'trim'
);
$f[] = array(
'element' => 'paypal',
- 'filter' => array('Toolkit_Common', 'filterURI')
+ 'filter' => array('Toolkit_Common', 'filterURI')
);
$f[] = array(
'element' => 'url',
- 'filter' => array('Toolkit_Common', 'filterURI')
+ 'filter' => array('Toolkit_Common', 'filterURI')
);
$this->setupFilters($f);
}
'reset' => false,
'force' => false
);
- $r[] = array(
- 'element' => 'lat',
- 'message' => 'ERROR: Must be a numeric!',
- 'type' => 'numeric',
- 'format' => null,
- 'validation' => $this->validationType,
- 'reset' => false,
- 'force' => false
- );
- $r[] = array(
- 'element' => 'lat',
- 'message' => 'ERROR: Latitude out of range!',
- 'type' => 'callback',
- 'format' => array(&$this, 'checkLatitude'),
- 'validation' => $this->validationType,
- 'reset' => false,
- 'force' => false
- );
- $r[] = array(
- 'element' => 'lon',
- 'message' => 'ERROR: Must be a numeric!',
- 'type' => 'numeric',
- 'format' => null,
- 'validation' => $this->validationType,
- 'reset' => false,
- 'force' => false
- );
- $r[] = array(
- 'element' => 'lon',
- 'message' => 'ERROR: Longitude out of range!',
- 'type' => 'callback',
- 'format' => array(&$this, 'checkLongitude'),
- 'validation' => $this->validationType,
- 'reset' => false,
- 'force' => false
- );
+// $r[] = array(
+// 'element' => 'lat',
+// 'message' => 'ERROR: Must be a numeric!',
+// 'type' => 'numeric',
+// 'format' => null,
+// 'validation' => $this->validationType,
+// 'reset' => false,
+// 'force' => false
+// );
+// $r[] = array(
+// 'element' => 'lat',
+// 'message' => 'ERROR: Latitude out of range!',
+// 'type' => 'callback',
+// 'format' => array(&$this, 'checkLatitude'),
+// 'validation' => $this->validationType,
+// 'reset' => false,
+// 'force' => false
+// );
+// $r[] = array(
+// 'element' => 'lon',
+// 'message' => 'ERROR: Must be a numeric!',
+// 'type' => 'numeric',
+// 'format' => null,
+// 'validation' => $this->validationType,
+// 'reset' => false,
+// 'force' => false
+// );
+// $r[] = array(
+// 'element' => 'lon',
+// 'message' => 'ERROR: Longitude out of range!',
+// 'type' => 'callback',
+// 'format' => array(&$this, 'checkLongitude'),
+// 'validation' => $this->validationType,
+// 'reset' => false,
+// 'force' => false
+// );
$allowDuplicateMemberNames
= $this->config
->getItem('section', 'conf')
$this->dbh,
$this->tableName
);
- $values['city_id']
+ $values['city_id']
= ($values['city_id'])
? $values['city_id']
: null;
- $values['state_id']
+ $values['state_id']
= ($values['state_id'])
? $values['state_id']
: null;
-
+ // need to process the lat lon first
+ $latInput = $values['lat'];
+ $values['lat'] = $latInput['dir'] * ($latInput['deg'] + ($latInput['min'] + ($latInput['sec'] / 60)) / 60);
+ $lonInput = $values['lon'];
+ $values['lon'] = $lonInput['dir'] * ($lonInput['deg'] + ($lonInput['min'] + ($lonInput['sec'] / 60)) / 60);
+// var_dump($values);
+// exit;
foreach ($values as $k => $v) {
switch ($k) {
case 'MAX_FILE_SIZE' :
// {{{ setLatLngCoords()
/**
- * Description for setLatLngCoords()
+ * Turning off the lookup of lat lon for this site
*
* @param array &$values Values array
*
*/
protected function setLatLngCoords(&$values)
{
+ return $values;
$geocoder = new GeocodeYahoo();
$sql = "
// before we render the form. That way the
// template knows about any errors on the form.
$this->validated = $this->validate();
+// var_dump($this);
+// exit;
if ($this->validated) {
+// die('here');
$processed = $this->process(array(&$this, 'processData'), $this->mergeFiles);
}
// into the form. these values ar calculated and then inserted into the forms
// element values. So we need to process the data first and then render the form.
$this->setupRenderers();
-
+//
return $this->template->bufferedOutputObject($this->view);
}
array(&$this, 'mapIcon')
));
+ $this->addColumn(new Structures_DataGrid_Column(
+ 'Latitude',
+ 'lat',
+ 'lat',
+ null,
+ null,
+ array(&$this, 'lat')
+ ));
+
+ $this->addColumn(new Structures_DataGrid_Column(
+ 'Longitude',
+ 'lon',
+ 'lon',
+ null,
+ null,
+ array(&$this, 'lon')
+ ));
+
}
// }}}
// }}}
+ public function lat($data)
+ {
+ extract($data['record']);
+ if ($lat) {
+ $latitude = Toolkit_Common::f2LatLon($lat, 'Lat', 'DMS', 2);
+ return $latitude['text'];
+ } else {
+ return '';
+ }
+ }
+
+ public function lon($data)
+ {
+ extract($data['record']);
+ if ($lon) {
+ $longitude = Toolkit_Common::f2LatLon($lon, 'Lat', 'DMS', 2);
+ return $longitude['text'];
+ } else {
+ return '';
+ }
+ }
+
// {{{ phone()
/**
{elem.label:h}
{if:elem.error}</span>{end:}
</td>
- <td class="fieldcell">
+ <td class="fieldcell" nowrap>
<div flexy:if="elem.error" class="req">
{elem.error:h}
</div>
<small>{gitem.label:h}</small><br>
{end:}
{gitem.html:h}
+ {if:gitem.isName(#lat[deg]#)}
+ °
+ {end:}
+ {if:gitem.isName(#lat[min]#)}
+ '
+ {end:}
+ {if:gitem.isName(#lat[sec]#)}
+ "
+ {end:}
+ {if:gitem.isName(#lon[deg]#)}
+ °
+ {end:}
+ {if:gitem.isName(#lon[min]#)}
+ '
+ {end:}
+ {if:gitem.isName(#lon[sec]#)}
+ "
+ {end:}
{if:elem.separator}{elem.separator:h}{end:}
{end:}
</td>
<div flexy:if="row[terrain]">Terrain: {row[terrain]}</div>
<div flexy:if="row[difficulty]">Difficulty: {row[difficulty]}</div>
<div flexy:if="row[dogs]">Dogs Allowed: {row[dogs]}</div>
+ <div flexy:if="row[lat]">Lat: {row[lat]:h}</div>
+ <div flexy:if="row[lon]">Lon: {row[lon]:h}</div>
<!--
<div class="street-address">{row[street]:h}</div>
<span class="locality" flexy:if="city">{row[city]:h},</span>