X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/4a71fb9feda4277f1755ed095b3f74d9e5eacb4e..06ddaedaa98e5ad18bd0a24dcf1313d7f4d2465b:/lib/MECON/HTML/Link.php?ds=inline
diff --git a/lib/MECON/HTML/Link.php b/lib/MECON/HTML/Link.php
index 31e22bd..d013131 100644
--- a/lib/MECON/HTML/Link.php
+++ b/lib/MECON/HTML/Link.php
@@ -24,9 +24,8 @@ Autor: @@author <@@email>
$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.
@@ -62,6 +61,7 @@ class MECON_HTML_Link extends HTML_Common {
{
return $this->_getVars;
}
+
/**
* Sets GetVars.
*
@@ -75,9 +75,6 @@ class MECON_HTML_Link extends HTML_Common {
$this->_getVars = $getVars;
}
- // ~X2C
-
- // +X2C Operation 178
/**
* Constructor.
*
@@ -89,10 +86,13 @@ class MECON_HTML_Link extends HTML_Common {
* @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 (!isset($attrs['class'])){
+ $attrs['class'] = 'mecon_html_link';
+ }
} else {
$attrs .= " href=$href";
}
@@ -100,53 +100,38 @@ class MECON_HTML_Link extends HTML_Common {
$this->_getVars = $getVars;
$this->addContents($contents);
}
- // -X2C
- // +X2C Operation 179
/**
* Converts to HTML output.
*
* @return string
* @access public
*/
- function toHtml() // ~X2C
+ function toHtml()
{
$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 "" . $this->getContents() . '';
+ return "" . $this->getContents() . '';
}
- // -X2C
- // +X2C Operation 180
/**
* Gets hypertext reference.
*
* @return string
* @access public
*/
- function getHref() // ~X2C
+ function getHref()
{
return $this->getAttribute('href');
}
- // -X2C
- // +X2C Operation 181
/**
* Sets hypertext reference.
*
@@ -155,33 +140,25 @@ class MECON_HTML_Link extends HTML_Common {
* @return void
* @access public
*/
- function setHref($href) // ~X2C
+ function setHref($href)
{
$this->updateAttributes(array('href' => $href));
}
- // -X2C
- // +X2C Operation 182
/**
* 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
*/
- 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.
*
@@ -191,13 +168,11 @@ If they doesn't exists, they are added, if they exists, they are updated.
* @return void
* @access public
*/
- function updateGetVars($vars) // ~X2C
+ function updateGetVars($vars)
{
$this->_getVars += $vars;
}
- // -X2C
- // +X2C Operation 184
/**
* 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
*/
- function unsetGetVars($key) // ~X2C
+ function unsetGetVars($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.
+ * @param bool $front Tells where to put the new content.
*
* @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;
}
}
- // -X2C
- // +X2C Operation 186
/**
* @return string
* @access public
*/
- function getContents() // ~X2C
+ function getContents()
{
$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;
}
- // -X2C
- // +X2C Operation 187
/**
* @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