LSattr_html :: postaladdress : improve it and add default configuration value
[ldapsaisie.git] / public_html / includes / class / class.LSformElement_postaladdress.php
1 <?php
2 /*******************************************************************************
3  * Copyright (C) 2007 Easter-eggs
4  * http://ldapsaisie.labs.libre-entreprise.org
5  *
6  * Author: See AUTHORS file in top-level directory.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License version 2
10  * as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 ******************************************************************************/
22
23 LSsession :: loadLSclass('LSformElement_textarea');
24
25 /**
26  * Element postaladdress d'un formulaire pour LdapSaisie
27  *
28  * @author Benjamin Renard <brenard@easter-eggs.com>
29  */
30
31 class LSformElement_postaladdress extends LSformElement_textarea {
32
33   var $fieldTemplateExtraClass = 'LSformElement_postaladdress';
34
35  /**
36   * Retourne les infos d'affichage de l'élément
37   * 
38   * Cette méthode retourne les informations d'affichage de l'élement
39   *
40   * @retval array
41   */
42   function getDisplay(){
43     $return = parent :: getDisplay();
44     if ($this -> isFreeze()) {
45       if (!empty($this->values)) {
46         $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}');
47         if (isset($this -> params['html_options']['map_url_pattern_generate_function'])) {
48           if (is_callable($this -> params['html_options']['map_url_pattern_generate_function'])) {
49             $this -> attr_html -> attribute -> ldapObject -> registerOtherValue('pattern',call_user_func($this -> params['html_options']['map_url_pattern_generate_function'],$this));
50           }
51           else {
52             LSerror::addErrorCode('LSformElement_postaladdress_01', $this -> params['html_options']['map_url_pattern_generate_function']);
53           }
54         }
55         elseif (isset($this -> params['html_options']['map_url_pattern_format'])) {
56           $pattern=$this -> attr_html -> attribute -> ldapObject -> getFData($this -> params['html_options']['map_url_pattern_format']);
57           $pattern=str_replace("\n"," ",$pattern);
58           $pattern=urlencode($pattern);
59           $this -> attr_html -> attribute -> ldapObject -> registerOtherValue('pattern',$pattern);
60         }
61         else {
62           $this -> attr_html -> attribute -> ldapObject -> registerOtherValue('pattern',LSformElement_postaladdress__generate_pattern($this));
63         }
64         LSsession :: addJSconfigParam('LSformElement_postaladdress_'.$this -> name, array (
65             'map_url' => $this -> attr_html -> attribute -> ldapObject -> getFData($map_url_format)
66           )
67         );
68         LSsession :: addHelpInfos(
69           'LSformElement_postaladdress',
70             array(
71               'viewOnMap' => _('View on map')
72             )
73         );
74         LSsession :: addJSscript('LSformElement_postaladdress.js');
75       }
76     }
77     return $return;
78   }
79 }
80
81 function LSformElement_postaladdress__generate_pattern($LSformElement) {
82   return str_replace("\n"," ",$LSformElement->attr_html->attribute->getDisplayValue());
83 }
84
85 LSerror :: defineError('LSformElement_postaladdress_01',
86 _("LSformElement_postaladdress : Map URL pattern generate function is not callabled (%{function}).")
87 );