]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MLIB/HTML/Icon.php
Se agrega a la clase MLIB_PDF_Tabla la posibilidad de agregar estilos nuevos para
[mecon/meconlib.git] / lib / MLIB / HTML / Icon.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                                     mlib
4 -------------------------------------------------------------------------------
5 This file is part of mlib.
6
7 mlib is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2 of the License, or (at your option)
10 any later version.
11
12 mlib is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15  
16 You should have received a copy of the GNU General Public License; if not,
17 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 Boston, MA  02111-1307  USA
19 -------------------------------------------------------------------------------
20 Creado:  mar mar 16 15:55:32 ART 2004
21 Author:  Leandro Lucarella <llucar@mecon.gov.ar>
22 -------------------------------------------------------------------------------
23 $Id$
24 -----------------------------------------------------------------------------*/
25
26 require_once 'MLIB/HTML/Link.php';
27 require_once 'MLIB/HTML/Image.php';
28
29 /**
30  * Ícono.
31  *
32  * Básicamente es una imágen con un link.
33  * Ejemplo:
34  * @code
35  * require_once 'MLIB/HTML/Icon.php';
36  * require_once 'MLIB/HTML/Link.php';
37  * // Crea un ícono de IR sin link.
38  * $icono1 = new MLIB_HTML_Icon('ir');
39  * // Crea un ícono de ELIMINAR que apunta a 'algun/lugar'.
40  * $icono2 = new MLIB_HTML_Icon('eliminar', 'algun/lugar');
41  * // Crea un ícono de NUEVO que apunta a 'algun/lugar?id=3&cant=10', tiene el
42  * // texto alternativo '>>' y 1 píxel de borde.
43  * $icono3 = new MLIB_HTML_Icon('nuevo',
44  *     new MLIB_HTML_Link('algun/lugar', '', array('id' => 3, $cant => 10)),
45  *     '>>', array('border' => 1));
46  * // Muestra todos los íconos.
47  * $icon1->display();
48  * echo $icon2->toHtml();
49  * $icon3->display();
50  * @endcode
51  *
52  * @access public
53  */
54 class MLIB_HTML_Icon extends MLIB_HTML_Image {
55
56     /**
57      * Link a donde apunta la imagen.
58      * @private
59      */
60     var $_link;
61
62     /**
63      * Alineacion de la imagen con respecto al texto.
64      * @private
65      */
66     var $_align;
67
68     /**
69      * Constructor.
70      *
71      * @param $nombre Nombre de la imágen.
72      * @param $link   Link a donde apunta. Si es null, no tiene un link.
73                       Puede ser un link o un MLIB_HTML_Link.
74      * @param $alt    Texto alternativo para la imagen.
75      * @param $attrs  Atributos de la imágen.
76      * @param $align  Alineación de la imagen con respecto al texto.
77      */
78     function MLIB_HTML_Icon($nombre, $link = null, $alt = null, $attrs =
79             array(), $align = 'right')
80     {
81         if (is_readable($nombre))
82         {
83             $src = $nombre; 
84         }
85         else             
86         {
87             $src = "/MLIB/images/general_$nombre";
88         }
89         if (is_null($alt)) {
90             $alt = '(' . strtoupper($nombre{0}) . ')';
91         }
92         parent::MLIB_HTML_Image($src, $alt, $attrs);
93         $this->setLink($link);
94         $this->_align = $align;
95     }
96
97     /**
98      * Converts to HTML output.
99      *
100      * @return string
101      */
102     function toHtml()
103     {
104         if (is_null($this->_link)) {
105             return parent::toHtml();
106         } else {
107             $link = $this->getLink();
108             return $link->toHtml();
109         }
110     }
111
112     /**
113      * Gets image location.
114      */
115     function getSrc()
116     {
117         return $this->getAttribute('src');
118     }
119
120     /**
121      * Sets image location.
122      *
123      * @param  string $src Image location.
124      */
125     function setSrc($src)
126     {
127         $this->updateAttributes(array('src' => $src));
128     }
129
130     /**
131      * Gets image alternate text.
132      */
133     function getAlt()
134     {
135         return $this->getAttribute('alt');
136     }
137
138     /**
139      * Establece el link a donde apunta el ícono.
140      *
141      * @param $link Nuevo link.
142      */
143     function setLink($link)
144     {
145         if (!is_a($link, 'MLIB_html_link') and !is_null($link)) {
146             $this->_link = new MLIB_HTML_Link($link);
147         } else {
148             $this->_link = $link;
149         }
150     }
151
152     /**
153      * Obtiene el link a donde apunta el ícono.
154      * @param $full Si es true, devuelve el link con la imagen incluida, si
155      *              es false devuelve solo el link.
156      */
157     function getLink($full = true)
158     {
159         $link = $this->_link;
160         if (!$full or is_null($link)) {
161             return $link;
162         }
163
164         if ($this->_align == 'left') {
165             $link->addContents(new MLIB_HTML_Image($this->getSrc(),
166                         $this->getAlt(), $this->getAttributes()), true);
167         }
168         elseif ($this->_align == 'right') {
169             $link->addContents(new MLIB_HTML_Image($this->getSrc(),
170                         $this->getAlt(), $this->getAttributes()));
171         }
172         return $link;
173     }
174
175 }
176
177 ?>