diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_postaladdress.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_postaladdress.docbook
index 9e74b8fe..1b41da7d 100644
--- a/doc/conf/LSattribute/LSattr_html/LSattr_html_postaladdress.docbook
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_postaladdress.docbook
@@ -5,10 +5,22 @@
en plus de l'adresse, un lien composé à partir d'informations de l'objet permettant
par exemple d'afficher un lien vers une carte géocalisant l'adresse postale.
+ Par défaut, le lien ajouté sera un lien de recherche de l'adresse postale
+ générée à partir de la valeur de l'attribut (en remplaçant les retours à la ligne
+ (\n) par des espaces) via le service
+ Nominatim d'OpenStreetMap.
+
+
+ Dans le cadre du fonctionnement par défaut et pour maîtriser les
+ valeurs stockées dans l'annuaire, il faut coupler ce type d'attribut HTML avec le
+ type d'attribut LDAP
+ postaladdress
+
Structure...
array(
'map_url_pattern_format' => '[LSformat]',
+ 'map_url_pattern_generate_function' => '[callable]',
'map_url_format' => '[LSformat]',
),]]>
...
@@ -25,12 +37,29 @@
+
+ map_url_pattern_generate_function
+
+ Ce paramètre permet de définir une fonction qui sera utilisée à la place
+ du paramètre map_url_pattern_format pour générer la valeur de
+ l'adresse postale qui sera insérée dans l'URL du lien ajouté dans l'interface.
+ Cette fonction prendra en paramètre l'objet LSformElement
+ courant et devra retourner une chaîne de caractères correspondant à l'adresse
+ postale à insérer dans le lien de l'interface. Par défaut, la fonction
+ LSformElement_postaladdress__generate_pattern est utilisée.
+
+
+
+
map_url_formatCe &LSformat; doit permettre de générer l'URL du lien ajouté dans
- l'interface à partir de la valeur de l'adresse postale générée via le paramètre
- map_url_pattern_format.
+ l'interface. Il sera composé avec les informations de l'objet LDAP, y compris
+ le mot clé %{pattern} correspondant à la valeur de l'adresse
+ postale générée à l'aide des paramètres précédents. Par défaut, la format suivant
+ sera utilisé :
+ http://nominatim.openstreetmap.org/search.php?q=%{pattern}
diff --git a/public_html/includes/class/class.LSformElement_postaladdress.php b/public_html/includes/class/class.LSformElement_postaladdress.php
index 8cfa7000..67f7375d 100644
--- a/public_html/includes/class/class.LSformElement_postaladdress.php
+++ b/public_html/includes/class/class.LSformElement_postaladdress.php
@@ -42,15 +42,27 @@ class LSformElement_postaladdress extends LSformElement_textarea {
function getDisplay(){
$return = parent :: getDisplay();
if ($this -> isFreeze()) {
- if (isset($this -> params['html_options']['map_url_format']) && !empty($this->values)) {
- if (isset($this -> params['html_options']['map_url_pattern_format'])) {
- $pattern=$this -> attr_html -> attribute -> ldapObject -> getFData($this -> params['html_options']['map_url_pattern_format']);
- $pattern=str_replace("\n"," ",$pattern);
- $pattern=urlencode($pattern);
- $this -> attr_html -> attribute -> ldapObject -> registerOtherValue('pattern',$pattern);
+ if (!empty($this->values)) {
+ $map_url_format=(isset($this -> params['html_options']['map_url_format'])?$this -> params['html_options']['map_url_format']:'http://nominatim.openstreetmap.org/search.php?q=%{pattern}');
+ if (isset($this -> params['html_options']['map_url_pattern_generate_function'])) {
+ if (is_callable($this -> params['html_options']['map_url_pattern_generate_function'])) {
+ $this -> attr_html -> attribute -> ldapObject -> registerOtherValue('pattern',call_user_func($this -> params['html_options']['map_url_pattern_generate_function'],$this));
+ }
+ else {
+ LSerror::addErrorCode('LSformElement_postaladdress_01', $this -> params['html_options']['map_url_pattern_generate_function']);
+ }
}
+ elseif (isset($this -> params['html_options']['map_url_pattern_format'])) {
+ $pattern=$this -> attr_html -> attribute -> ldapObject -> getFData($this -> params['html_options']['map_url_pattern_format']);
+ $pattern=str_replace("\n"," ",$pattern);
+ $pattern=urlencode($pattern);
+ $this -> attr_html -> attribute -> ldapObject -> registerOtherValue('pattern',$pattern);
+ }
+ else {
+ $this -> attr_html -> attribute -> ldapObject -> registerOtherValue('pattern',LSformElement_postaladdress__generate_pattern($this));
+ }
LSsession :: addJSconfigParam('LSformElement_postaladdress_'.$this -> name, array (
- 'map_url' => $this -> attr_html -> attribute -> ldapObject -> getFData($this -> params['html_options']['map_url_format'])
+ 'map_url' => $this -> attr_html -> attribute -> ldapObject -> getFData($map_url_format)
)
);
LSsession :: addHelpInfos(
@@ -66,4 +78,10 @@ class LSformElement_postaladdress extends LSformElement_textarea {
}
}
-?>
+function LSformElement_postaladdress__generate_pattern($LSformElement) {
+ return str_replace("\n"," ",$LSformElement->attr_html->attribute->getDisplayValue());
+}
+
+LSerror :: defineError('LSformElement_postaladdress_01',
+_("LSformElement_postaladdress : Map URL pattern generate function is not callabled (%{function}).")
+);