From e1cdd85819a4eb52092710abd9e488975e0c4d2d Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Thu, 15 Jun 2017 18:44:51 +0200 Subject: [PATCH] LSattr_html :: postaladdress : improve it and add default configuration value --- .../LSattr_html_postaladdress.docbook | 33 ++++++++++++++++-- .../class.LSformElement_postaladdress.php | 34 ++++++++++++++----- 2 files changed, 57 insertions(+), 10 deletions(-) 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_format Ce &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}).") +);