Merge pull request #1239 from jloguercio/1.11.x

Added Geolocalization plugin to user_edit.php
remotes/angel/1.11.x
José Loguercio 9 years ago committed by GitHub
commit 9407241c77
  1. 135
      main/admin/user_edit.php
  2. 4
      main/inc/lib/usermanager.lib.php

@ -68,16 +68,16 @@ function confirmation(name) {
} }
</script>'; </script>';
$userGeolocalization = api_get_setting('enable_profile_user_address_geolocalization') == 'true';
$htmlHeadXtra[] = '<link href="'. api_get_path(WEB_PATH) .'web/assets/cropper/dist/cropper.min.css" rel="stylesheet">'; $htmlHeadXtra[] = '<link href="'. api_get_path(WEB_PATH) .'web/assets/cropper/dist/cropper.min.css" rel="stylesheet">';
$htmlHeadXtra[] = '<script src="'. api_get_path(WEB_PATH) .'web/assets/cropper/dist/cropper.min.js"></script>'; $htmlHeadXtra[] = '<script src="'. api_get_path(WEB_PATH) .'web/assets/cropper/dist/cropper.min.js"></script>';
$htmlHeadXtra[] = '<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?sensor=true" ></script>';
$htmlHeadXtra[] = '<script> $htmlHeadXtra[] = '<script>
$(document).ready(function() { $(document).ready(function() {
var $image = $("#previewImage"); var $image = $("#previewImage");
var $input = $("[name=\'cropResult\']"); var $input = $("[name=\'cropResult\']");
var $cropButton = $("#cropButton"); var $cropButton = $("#cropButton");
var canvas = "";
var imageWidth = "";
var imageHeight = "";
$("input:file").change(function() { $("input:file").change(function() {
var oFReader = new FileReader(); var oFReader = new FileReader();
@ -146,6 +146,106 @@ $user_data['old_password'] = $user_data['password'];
$user_data['registration_date'] = api_get_local_time($user_data['registration_date']); $user_data['registration_date'] = api_get_local_time($user_data['registration_date']);
unset($user_data['password']); unset($user_data['password']);
if ($userGeolocalization) {
$htmlHeadXtra[] = '<script>
$(document).ready(function() {
var address = "' . $user_data['address'] . '";
initializeGeo(address, false);
$("#geolocalization").on("click", function() {
var address = $("#address").val();
initializeGeo(address, false);
return false;
});
$("#myLocation").on("click", function() {
myLocation();
return false;
});
$("#address").keypress(function (event) {
if (event.which == 13) {
$("#geolocalization").click();
return false;
}
});
});
function myLocation() {
if (navigator.geolocation) {
var geoPosition = function(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
var latLng = new google.maps.LatLng(lat, lng);
initializeGeo(false, latLng)
};
var geoError = function(error) {
alert("Geocode ' . get_lang('Error') . ': " + error);
};
var geoOptions = {
enableHighAccuracy: true
};
navigator.geolocation.getCurrentPosition(geoPosition, geoError, geoOptions);
}
}
function initializeGeo(address, latLng) {
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 15,
center: latlng,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), myOptions);
var parameter = address ? { "address": address } : latLng ? { "latLng": latLng } : false;
if (geocoder && parameter) {
geocoder.geocode(parameter, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
map.setCenter(results[0].geometry.location);
if (!address) {
$("#address").val(results[0].formatted_address);
}
var infowindow = new google.maps.InfoWindow({
content: "<b>" + $("#address").val() + "</b>",
size: new google.maps.Size(150, 50)
});
var marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
title: $("#address").val()
});
google.maps.event.addListener(marker, "click", function() {
infowindow.open(map, marker);
});
} else {
alert("' . get_lang("NotFound") . '");
}
} else {
alert("Geocode ' . get_lang('Error') . ': " + status);
}
});
}
}
</script>';
}
// Create the form // Create the form
$form = new FormValidator( $form = new FormValidator(
'user_edit', 'user_edit',
@ -205,6 +305,32 @@ if (api_get_setting('openid_authentication') == 'true') {
// Phone // Phone
$form->addElement('text', 'phone', get_lang('PhoneNumber')); $form->addElement('text', 'phone', get_lang('PhoneNumber'));
if ($userGeolocalization) {
// Geolocation
$form->addElement('text', 'address', get_lang('AddressField'), ['id' => 'address']);
$form->addHtml('
<div class="form-group">
<label for="geolocalization" class="col-sm-2 control-label"></label>
<div class="col-sm-8">
<button class="null btn btn-default " id="geolocalization" name="geolocalization" type="submit"><em class="fa fa-map-marker"></em> '.get_lang('Geolocalization').'</button>
<button class="null btn btn-default " id="myLocation" name="myLocation" type="submit"><em class="fa fa-crosshairs"></em> '.get_lang('MyLocation').'</button>
</div>
</div>
');
$form->addHtml('
<div class="form-group">
<label for="map" class="col-sm-2 control-label">
'.get_lang('Map').'
</label>
<div class="col-sm-8">
<div name="map" id="map" style="width:100%; height:300px;">
</div>
</div>
</div>
');
}
// Picture // Picture
$form->addElement('file', 'picture', get_lang('AddPicture'), array('id' => 'picture', 'class' => 'picture-form')); $form->addElement('file', 'picture', get_lang('AddPicture'), array('id' => 'picture', 'class' => 'picture-form'));
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif'); $allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
@ -477,7 +603,8 @@ if ($form->validate()) {
$language, $language,
null, null,
$send_mail, $send_mail,
$reset_password $reset_password,
$user['address']
); );
if (isset($user['student_boss'])) { if (isset($user['student_boss'])) {

@ -859,7 +859,8 @@ class UserManager
$language = 'english', $language = 'english',
$encrypt_method = '', $encrypt_method = '',
$send_email = false, $send_email = false,
$reset_password = 0 $reset_password = 0,
$address
) { ) {
$hook = HookUpdateUser::create(); $hook = HookUpdateUser::create();
if (!empty($hook)) { if (!empty($hook)) {
@ -932,6 +933,7 @@ class UserManager
->setEmail($email) ->setEmail($email)
->setOfficialCode($official_code) ->setOfficialCode($official_code)
->setPhone($phone) ->setPhone($phone)
->setAddress($address)
->setPictureUri($picture_uri) ->setPictureUri($picture_uri)
->setExpirationDate($expiration_date) ->setExpirationDate($expiration_date)
->setActive($active) ->setActive($active)

Loading…
Cancel
Save