------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'MLIB/HTML/Link.php'; require_once 'MLIB/HTML/Image.php'; /** * Ícono. * * Básicamente es una imágen con un link. * Ejemplo: * @code * require_once 'MLIB/HTML/Icon.php'; * require_once 'MLIB/HTML/Link.php'; * // Crea un ícono de IR sin link. * $icono1 = new MLIB_HTML_Icon('ir'); * // Crea un ícono de ELIMINAR que apunta a 'algun/lugar'. * $icono2 = new MLIB_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 MLIB_HTML_Icon('nuevo', * new MLIB_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 MLIB_HTML_Icon extends MLIB_HTML_Image { /** * Link a donde apunta la imagen. * @private */ var $_link; /** * Alineacion de la imagen con respecto al texto. * @private */ var $_align; /** * 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 MLIB_HTML_Link. * @param $alt Texto alternativo para la imagen. * @param $attrs Atributos de la imágen. * @param $align Alineación de la imagen con respecto al texto. */ function MLIB_HTML_Icon($nombre, $link = null, $alt = null, $attrs = array(), $align = 'right') { if (is_readable($nombre)) { $src = $nombre; } else { $src = "/MLIB/images/general_$nombre"; } if (is_null($alt)) { $alt = '(' . strtoupper($nombre{0}) . ')'; } parent::MLIB_HTML_Image($src, $alt, $attrs); $this->setLink($link); $this->_align = $align; } /** * 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, 'MLIB_html_link') and !is_null($link)) { $this->_link = new MLIB_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; } if ($this->_align == 'left') { $link->addContents(new MLIB_HTML_Image($this->getSrc(), $this->getAlt(), $this->getAttributes()), true); } elseif ($this->_align == 'right') { $link->addContents(new MLIB_HTML_Image($this->getSrc(), $this->getAlt(), $this->getAttributes())); } return $link; } } ?>