]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/HTML/Link.php
- Arregle una interpolacion de variables.
[mecon/meconlib.git] / lib / MECON / HTML / Link.php
index 31e22bd9a538870d85c54e28a92a437e1c61962a..d0131311b261c0422ec34d5fb960c81a5af2bced 100644 (file)
@@ -24,9 +24,8 @@ Autor:  @@author <@@email>
 $Id$
 -----------------------------------------------------------------------------*/
 
 $Id$
 -----------------------------------------------------------------------------*/
 
+require_once 'HTML/Common.php';
 
 
-
-// +X2C Class 892 :MECON_HTML_Link
 /**
  * HTML Link representation.
 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.
 /**
  * HTML Link representation.
 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.
@@ -62,6 +61,7 @@ class MECON_HTML_Link extends HTML_Common {
     {
         return $this->_getVars;
     }
     {
         return $this->_getVars;
     }
+
     /**
      * Sets GetVars.
      *
     /**
      * Sets GetVars.
      *
@@ -75,9 +75,6 @@ class MECON_HTML_Link extends HTML_Common {
         $this->_getVars = $getVars;
     }
 
         $this->_getVars = $getVars;
     }
 
-    // ~X2C
-
-    // +X2C Operation 178
     /**
      * Constructor.
      *
     /**
      * Constructor.
      *
@@ -89,10 +86,13 @@ class MECON_HTML_Link extends HTML_Common {
      * @return void
      * @access public
      */
      * @return void
      * @access public
      */
-    function MECON_HTML_Link($href = '', $contents = '', $getVars = array(), $attrs = array()) // ~X2C
+    function MECON_HTML_Link($href = '', $contents = '', $getVars = array(), $attrs = array())
     {
         if (is_array($attrs)) {
             $attrs['href'] = $href;
     {
         if (is_array($attrs)) {
             $attrs['href'] = $href;
+            if (!isset($attrs['class'])){
+                $attrs['class'] = 'mecon_html_link';
+            }
         } else {
             $attrs .= " href=$href";
         }
         } else {
             $attrs .= " href=$href";
         }
@@ -100,53 +100,38 @@ class MECON_HTML_Link extends HTML_Common {
         $this->_getVars = $getVars;
         $this->addContents($contents);
     }
         $this->_getVars = $getVars;
         $this->addContents($contents);
     }
-    // -X2C
 
 
-    // +X2C Operation 179
     /**
      * Converts to HTML output.
      *
      * @return string
      * @access public
      */
     /**
      * Converts to HTML output.
      *
      * @return string
      * @access public
      */
-    function toHtml() // ~X2C
+    function toHtml()
     {
         $attrs = '';
         foreach ($this->getAttributes() as $key => $val) {
             if ($key == 'href') {
     {
         $attrs = '';
         foreach ($this->getAttributes() as $key => $val) {
             if ($key == 'href') {
-                $vars = array();
-                foreach ($this->_getVars as $var => $v) {
-                    if (is_object($v) and method_exists($v, 'tostring')) {
-                        $v = $v->tostring();
-                    } elseif (is_object($v) or is_array($v)) {
-                        $v = serialize($v);
-                    }
-                    $vars[] = urlencode($var) . '=' . urlencode($v);
-                }
-                if ($vars) {
-                    $val = '?' . join('&', $vars);
-                }
+                $val = $this->getURI();
+            } else {
+                $val = htmlentities($val);
             }
             }
-            $attrs .= ' ' . $key . '="' . htmlentities($val) . '"';
+            $attrs .= ' ' . $key . '="' . $val . '"';
         }
         }
-        return "<A$attrs>" . $this->getContents() . '</A>';
+        return "<a$attrs>" . $this->getContents() . '</a>';
     }
     }
-    // -X2C
 
 
-    // +X2C Operation 180
     /**
      * Gets hypertext reference.
      *
      * @return string
      * @access public
      */
     /**
      * Gets hypertext reference.
      *
      * @return string
      * @access public
      */
-    function getHref() // ~X2C
+    function getHref()
     {
         return $this->getAttribute('href');
     }
     {
         return $this->getAttribute('href');
     }
-    // -X2C
 
 
-    // +X2C Operation 181
     /**
      * Sets hypertext reference.
      *
     /**
      * Sets hypertext reference.
      *
@@ -155,33 +140,25 @@ class MECON_HTML_Link extends HTML_Common {
      * @return void
      * @access public
      */
      * @return void
      * @access public
      */
-    function setHref($href) // ~X2C
+    function setHref($href)
     {
         $this->updateAttributes(array('href' => $href));
     }
     {
         $this->updateAttributes(array('href' => $href));
     }
-    // -X2C
 
 
-    // +X2C Operation 182
     /**
      * Set a GET variable.
      *
      * @param  string $key Key for the GET variable.
     /**
      * Set a GET variable.
      *
      * @param  string $key Key for the GET variable.
-     * @param  mixed &$value Value for the variable.
+     * @param  mixed $value Value for the variable.
      *
      * @return void
      * @access public
      */
      *
      * @return void
      * @access public
      */
-    function setGetVar($key, &$value) // ~X2C
+    function setGetVar($key, $value)
     {
     {
-        if (is_object($value)) {
-            $this->attrs[$key] =& $value;
-        } else {
-            $this->attrs[$key] = $value;
-        }
+        $this->_getVars[$key] = $value;
     }
     }
-    // -X2C
 
 
-    // +X2C Operation 183
     /**
      * Updates GET variables.
      *
     /**
      * Updates GET variables.
      *
@@ -191,13 +168,11 @@ If they doesn't exists, they are added, if they exists, they are updated.
      * @return void
      * @access public
      */
      * @return void
      * @access public
      */
-    function updateGetVars($vars) // ~X2C
+    function updateGetVars($vars)
     {
         $this->_getVars += $vars;
     }
     {
         $this->_getVars += $vars;
     }
-    // -X2C
 
 
-    // +X2C Operation 184
     /**
      * Unsets (removes) GET variables. This method supports variable arguments.
      *
     /**
      * Unsets (removes) GET variables. This method supports variable arguments.
      *
@@ -206,40 +181,38 @@ If they doesn't exists, they are added, if they exists, they are updated.
      * @return void
      * @access public
      */
      * @return void
      * @access public
      */
-    function unsetGetVars($key) // ~X2C
+    function unsetGetVars($key)
     {
         $keys = func_get_args();
         foreach ($keys as $key) {
             unset($this->_getVars[$key]);
         }
     }
     {
         $keys = func_get_args();
         foreach ($keys as $key) {
             unset($this->_getVars[$key]);
         }
     }
-    // -X2C
 
 
-    // +X2C Operation 185
     /**
      * Adds contents to the link.
      *
      * @param  mixed &$contents Contents to add. Can be an object with a toHtml() method.
     /**
      * Adds contents to the link.
      *
      * @param  mixed &$contents Contents to add. Can be an object with a toHtml() method.
+     * @param  bool  $front     Tells where to put the new content.
      *
      * @return void
      * @access public
      */
      *
      * @return void
      * @access public
      */
-    function addContents(&$contents) // ~X2C
+    function addContents($contents, $front = false)
     {
     {
-        if (is_object($contents)) {
-            $this->_contents[] =& $contents;
-        } else {
+        if ($front) {
+            array_unshift($this->_contents, $contents);
+        }
+        else {
             $this->_contents[] = $contents;
         }
     }
             $this->_contents[] = $contents;
         }
     }
-    // -X2C
 
 
-    // +X2C Operation 186
     /**
      * @return string
      * @access public
      */
     /**
      * @return string
      * @access public
      */
-    function getContents() // ~X2C
+    function getContents()
     {
         $html = '';
         foreach ($this->_contents as $c) {
     {
         $html = '';
         foreach ($this->_contents as $c) {
@@ -251,20 +224,65 @@ If they doesn't exists, they are added, if they exists, they are updated.
         }
         return $html;
     }
         }
         return $html;
     }
-    // -X2C
 
 
-    // +X2C Operation 187
     /**
      * @param  mixed $contents New link contents.
      *
      * @return void
      * @access public
      */
     /**
      * @param  mixed $contents New link contents.
      *
      * @return void
      * @access public
      */
-    function setContents($contents) // ~X2C
+    function setContents($contents)
+    {
+        $this->_contents = array($contents);
+    }
+
+    /**
+     * @param  mixed $contents New link contents.
+     *
+     * @return void
+     * @access public
+     */
+    function getCSS()
+    {
+        return '/MECON/css/html/link';
+    }
+
+    /**
+     * Gets the query string generated with the GET vars.
+     * 
+     * @return GET query string.
+     */
+    function getQueryString()
+    {
+        $vars = array();
+        foreach ($this->_getVars as $var => $v) {
+            if (is_object($v) and method_exists($v, 'tostring')) {
+                $v = $v->tostring();
+            } elseif (is_object($v)) {
+                $v = serialize($v);
+            }
+            if (is_array($v)) {
+                foreach ($v as $i) {
+                    $vars[] = urlencode($var) . '[]=' . urlencode($i);
+                }
+            } else {
+                $vars[] = urlencode($var) . '=' . urlencode($v);
+            }
+        }
+        return join('&', $vars);
+    }
+
+    /**
+     * Gets the URI (base page with the query string).
+     * 
+     * @return URI string.
+     */
+    function getURI()
     {
     {
-        $this->_contents = $contents;
+        $query = $this->getQueryString();
+        return $this->getAttribute('href') . ($query ? "?$query" : '');
     }
     }
-    // -X2C
 
 
-} // -X2C Class :MECON_HTML_Link
+}
+
 ?>
\ No newline at end of file
 ?>
\ No newline at end of file