]> git.llucax.com Git - mecon/meconlib.git/commitdiff
Se agrega nueva clase para hacer iconos comunes con link.
authorLeandro Lucarella <llucax@gmail.com>
Tue, 16 Mar 2004 20:13:23 +0000 (20:13 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Tue, 16 Mar 2004 20:13:23 +0000 (20:13 +0000)
lib/MECON/HTML/Icon.php [new file with mode: 0644]

diff --git a/lib/MECON/HTML/Icon.php b/lib/MECON/HTML/Icon.php
new file mode 100644 (file)
index 0000000..471e48d
--- /dev/null
@@ -0,0 +1,157 @@
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    meconlib
+-------------------------------------------------------------------------------
+This file is part of meconlib.
+
+meconlib is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+meconlib is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado:  mar mar 16 15:55:32 ART 2004
+Author:  Leandro Lucarella <llucar@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$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