]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/HTML/Link.php
Se cambian los nombres de HTML_Link y HTML_Image por MECON_HTML_Link y MECON_HTML_Ima...
[mecon/meconlib.git] / lib / MECON / HTML / Link.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: Thu Aug 21 15:09:10 2003
22 Autor:  @@author <@@email>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27
28
29 // +X2C Class 892 :MECON_HTML_Link
30 /**
31  * HTML Link representation.
32 When adding GET variables, if the value is an object, it looks for a toString() method, if it doesn't exists or if is an array, it serializes the object/array to get a string value.
33 This is done in toHtml() method. Object are stored as references.
34  *
35  * @package HTML
36  * @access public
37  */
38 class MECON_HTML_Link extends HTML_Common {
39     /**
40      * Variables to send via GET HTTP method.
41      *
42      * @var    array $getVars
43      * @access protected
44      */
45     var $_getVars = array();
46
47     /**
48      * Link contents.
49      *
50      * @var    array $contents
51      * @access protected
52      */
53     var $_contents = array();
54
55     /**
56      * Gets GetVars.
57      *
58      * @return array
59      * @access public
60      */
61     function getGetVars()
62     {
63         return $this->_getVars;
64     }
65     /**
66      * Sets GetVars.
67      *
68      * @param  array $getVars GetVars.
69      *
70      * @return void
71      * @access public
72      */
73     function setGetVars($getVars)
74     {
75         $this->_getVars = $getVars;
76     }
77
78     // ~X2C
79
80     // +X2C Operation 178
81     /**
82      * Constructor.
83      *
84      * @param  string $href Hypertext reference.
85      * @param  mixed $contents Link contents.
86      * @param  array $getVars Array (as key => value pairs) of GET variables to pass to the link.
87      * @param  array $attrs Other links (A tag) attributes.
88      *
89      * @return void
90      * @access public
91      */
92     function MECON_HTML_Link($href = '', $contents = '', $getVars = array(), $attrs = array()) // ~X2C
93     {
94         if (is_array($attrs)) {
95             $attrs['href'] = $href;
96         } else {
97             $attrs .= " href=$href";
98         }
99         parent::HTML_Common($attrs);
100         $this->_getVars = $getVars;
101         $this->addContents($contents);
102     }
103     // -X2C
104
105     // +X2C Operation 179
106     /**
107      * Converts to HTML output.
108      *
109      * @return string
110      * @access public
111      */
112     function toHtml() // ~X2C
113     {
114         $attrs = '';
115         foreach ($this->getAttributes() as $key => $val) {
116             if ($key == 'href') {
117                 $vars = array();
118                 foreach ($this->_getVars as $var => $v) {
119                     if (is_object($v) and method_exists($v, 'tostring')) {
120                         $v = $v->tostring();
121                     } elseif (is_object($v) or is_array($v)) {
122                         $v = serialize($v);
123                     }
124                     $vars[] = urlencode($var) . '=' . urlencode($v);
125                 }
126                 if ($vars) {
127                     $val = '?' . join('&', $vars);
128                 }
129             }
130             $attrs .= ' ' . $key . '="' . htmlentities($val) . '"';
131         }
132         return "<A$attrs>" . $this->getContents() . '</A>';
133     }
134     // -X2C
135
136     // +X2C Operation 180
137     /**
138      * Gets hypertext reference.
139      *
140      * @return string
141      * @access public
142      */
143     function getHref() // ~X2C
144     {
145         return $this->getAttribute('href');
146     }
147     // -X2C
148
149     // +X2C Operation 181
150     /**
151      * Sets hypertext reference.
152      *
153      * @param  string $href Hypertext reference.
154      *
155      * @return void
156      * @access public
157      */
158     function setHref($href) // ~X2C
159     {
160         $this->updateAttributes(array('href' => $href));
161     }
162     // -X2C
163
164     // +X2C Operation 182
165     /**
166      * Set a GET variable.
167      *
168      * @param  string $key Key for the GET variable.
169      * @param  mixed &$value Value for the variable.
170      *
171      * @return void
172      * @access public
173      */
174     function setGetVar($key, &$value) // ~X2C
175     {
176         if (is_object($value)) {
177             $this->attrs[$key] =& $value;
178         } else {
179             $this->attrs[$key] = $value;
180         }
181     }
182     // -X2C
183
184     // +X2C Operation 183
185     /**
186      * Updates GET variables.
187      *
188      * @param  array $vars Array (as key => value pairs) of GET variables to update.
189 If they doesn't exists, they are added, if they exists, they are updated.
190      *
191      * @return void
192      * @access public
193      */
194     function updateGetVars($vars) // ~X2C
195     {
196         $this->_getVars += $vars;
197     }
198     // -X2C
199
200     // +X2C Operation 184
201     /**
202      * Unsets (removes) GET variables. This method supports variable arguments.
203      *
204      * @param  string $key Key of the GET variable to remove.
205      *
206      * @return void
207      * @access public
208      */
209     function unsetGetVars($key) // ~X2C
210     {
211         $keys = func_get_args();
212         foreach ($keys as $key) {
213             unset($this->_getVars[$key]);
214         }
215     }
216     // -X2C
217
218     // +X2C Operation 185
219     /**
220      * Adds contents to the link.
221      *
222      * @param  mixed &$contents Contents to add. Can be an object with a toHtml() method.
223      *
224      * @return void
225      * @access public
226      */
227     function addContents(&$contents) // ~X2C
228     {
229         if (is_object($contents)) {
230             $this->_contents[] =& $contents;
231         } else {
232             $this->_contents[] = $contents;
233         }
234     }
235     // -X2C
236
237     // +X2C Operation 186
238     /**
239      * @return string
240      * @access public
241      */
242     function getContents() // ~X2C
243     {
244         $html = '';
245         foreach ($this->_contents as $c) {
246             if (is_object($c) and method_exists($c, 'tohtml')) {
247                 $html .= $c->toHtml();
248             } else {
249                 $html .= htmlentities($c);
250             }
251         }
252         return $html;
253     }
254     // -X2C
255
256     // +X2C Operation 187
257     /**
258      * @param  mixed $contents New link contents.
259      *
260      * @return void
261      * @access public
262      */
263     function setContents($contents) // ~X2C
264     {
265         $this->_contents = $contents;
266     }
267     // -X2C
268
269 } // -X2C Class :MECON_HTML_Link
270 ?>