From: Leandro Lucarella Date: Tue, 16 Mar 2004 20:13:23 +0000 (+0000) Subject: Se agrega nueva clase para hacer iconos comunes con link. X-Git-Tag: svn_import~90 X-Git-Url: https://git.llucax.com/mecon/meconlib.git/commitdiff_plain/80fb14443bb5fdb9349ff539383d924c1d05c44e?ds=sidebyside Se agrega nueva clase para hacer iconos comunes con link. --- diff --git a/lib/MECON/HTML/Icon.php b/lib/MECON/HTML/Icon.php new file mode 100644 index 0000000..471e48d --- /dev/null +++ b/lib/MECON/HTML/Icon.php @@ -0,0 +1,157 @@ + +------------------------------------------------------------------------------- +$Id$ +-----------------------------------------------------------------------------*/ + +require_once 'MECON/HTML/Link.php'; +require_once 'MECON/HTML/Image.php'; + +/** + * Ícono. + * + * Básicamente es una imágen con un link. + * Ejemplo: + * @code + * require_once 'MECON/HTML/Icon.php'; + * require_once 'MECON/HTML/Link.php'; + * // Crea un ícono de IR sin link. + * $icono1 = new MECON_HTML_Icon('ir'); + * // Crea un ícono de ELIMINAR que apunta a 'algun/lugar'. + * $icono2 = new MECON_HTML_Icon('eliminar', 'algun/lugar'); + * // Crea un ícono de NUEVO que apunta a 'algun/lugar?id=3&cant=10', tiene el + * // texto alternativo '>>' y 1 píxel de borde. + * $icono3 = new MECON_HTML_Icon('nuevo', + * new MECON_HTML_Link('algun/lugar', '', array('id' => 3, $cant => 10)), + * '>>', array('border' => 1)); + * // Muestra todos los íconos. + * $icon1->display(); + * echo $icon2->toHtml(); + * $icon3->display(); + * @endcode + * + * @access public + */ +class MECON_HTML_Icon extends MECON_HTML_Image { + + /** + * Link a donde apunta la imagen. + * @private + */ + var $_link; + + /** + * Constructor. + * + * @param $nombre Nombre de la imágen. + * @param $link Link a donde apunta. Si es null, no tiene un link. + Puede ser un link o un MECON_HTML_Link. + * @param $attrs Atributos de la imágen. + */ + function MECON_HTML_Icon($nombre, $link = null, $alt = null, $attrs = array()) + { + switch ($nombre) { + default: + $src = "/MECON/images/general_$nombre"; + } + if (is_null($alt)) { + $alt = '(' . strtoupper($nombre{0}) . ')'; + } + parent::MECON_HTML_Image($src, $alt, $attrs); + $this->setLink($link); + } + + /** + * Converts to HTML output. + * + * @return string + */ + function toHtml() + { + if (is_null($this->_link)) { + return parent::toHtml(); + } else { + $link = $this->getLink(); + return $link->toHtml(); + } + } + + /** + * Gets image location. + */ + function getSrc() + { + return $this->getAttribute('src'); + } + + /** + * Sets image location. + * + * @param string $src Image location. + */ + function setSrc($src) + { + $this->updateAttributes(array('src' => $src)); + } + + /** + * Gets image alternate text. + */ + function getAlt() + { + return $this->getAttribute('alt'); + } + + /** + * Establece el link a donde apunta el ícono. + * + * @param $link Nuevo link. + */ + function setLink($link) + { + if (!is_a($link, 'mecon_html_link') and !is_null($link)) { + $this->_link = new MECON_HTML_Link($link); + } else { + $this->_link = $link; + } + } + + /** + * Obtiene el link a donde apunta el ícono. + * @param $full Si es true, devuelve el link con la imagen incluida, si + * es false devuelve solo el link. + */ + function getLink($full = true) + { + $link = $this->_link; + if (!$full or is_null($link)) { + return $link; + } + $link->addContents(new MECON_HTML_Image($this->getSrc(), + $this->getAlt(), $this->getAttributes())); + return $link; + } + +} + +?> \ No newline at end of file