* @license http://www.contenido.org/license/LIZENZ.txt * @link http://www.4fb.de * @link http://www.contenido.org * @since file available since contenido release <= 4.6 * * * $Id$: */ /** * */ if (!defined('CON_FRAMEWORK')) { die('Illegal call'); } /** * HTML Form element class * * @author Timo A. Hummel */ class cHTMLFormElement extends cHTML { /** * Constructor. This is a generic form element, where * specific elements should be inherited from this class. * * @param $name string Name of the element * @param $id string ID of the element * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ public function __construct($name = "", $id = "", $disabled = "", $tabindex = "", $accesskey = "") { parent::__construct(); $this->updateAttributes(array("name" => $name)); if (is_string($id) && !empty($id)) { $this->updateAttributes(array("id" => $id)); } $this->setClass("text_medium"); // TODO: Remove this... $this->setDisabled($disabled); $this->setTabindex($tabindex); $this->setAccessKey($accesskey); } /** * Sets the "disabled" attribute of an element. User Agents * usually are showing the element as "greyed-out". * * Example: * $obj->setDisabled("disabled"); * $obj->setDisabled(""); * * The first example sets the disabled flag, the second one * removes the disabled flag. * * @param $disabled string Sets the disabled-flag if non-empty * @return none */ function setDisabled($disabled) { if (!empty($disabled)) { $this->updateAttributes(array("disabled" => "disabled")); } else { $this->removeAttribute("disabled"); } } /** * sets the tab index for this element. The tab * index needs to be numeric, bigger than 0 and smaller than 32767. * * @param $tabindex int desired tab index * @return none */ function setTabindex($tabindex) { if (is_numeric($tabindex) && $tabindex >= 0 && $tabindex <= 32767) { $this->updateAttributes(array("tabindex" => $tabindex)); } } /** * sets the access key for this element. * * @param $accesskey string The length of the access key. May be A-Z and 0-9. * @return none */ function setAccessKey($accesskey) { if ((strlen($accesskey) == 1) && is_alphanumeric($accesskey)) { $this->updateAttributes(array("accesskey" => $accesskey)); } else { $this->removeAttribute("accesskey"); } } } /** * HTML Hidden Field * * @author Timo A. Hummel */ class cHTMLHiddenField extends cHTMLFormElement { /** * Constructor. Creates an HTML hidden field. * * @param $name string Name of the element * @param $value string Title of the button * @param $id string ID of the element * * @return none */ function __construct($name, $value = "", $id = "") { parent::__construct($name, $id); $this->setContentlessTag(); $this->updateAttributes(array("type" => "hidden")); $this->_tag = "input"; $this->setValue($value); } /** * Sets the value for the field * * @param $value string Value of the field * @return none */ function setValue($value) { $this->updateAttributes(array("value" => $value)); } /** * Renders the hidden field * * @param none * @return string Rendered HTML */ function toHtml() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes); } } /** * HTML Button class * * @author Timo A. Hummel */ class cHTMLButton extends cHTMLFormElement { /** * Constructor. Creates an HTML button. * * Creates a submit button by default, can be changed * using setMode. * * @param $name string Name of the element * @param $title string Title of the button * @param $id string ID of the element * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ function __construct($name, $title = "", $id = "", $disabled = false, $tabindex = null, $accesskey = "", $mode = "submit") { parent::__construct($name, $id, $disabled, $tabindex, $accesskey); $this->_tag = "input"; $this->setContentlessTag(); $this->setTitle($title); $this->setMode($mode); } /** * Sets the title (caption) for the button * * @param $title string The title to set * @return none */ function setTitle($title) { $this->updateAttributes(array("value" => $title)); } /** * Sets the mode (submit or reset) for the button * * @param $mode string Either "submit", "reset" or "image". * @return boolean Returns false if failed to set the mode */ function setMode($mode) { switch ($mode) { case "submit" : case "reset" : $this->updateAttributes(array("type" => $mode)); break; case "image" : $this->updateAttributes(array("type" => $mode)); break; case "button" : $this->updateAttributes(array("type" => $mode)); break; default : return false; } } /** * Set the image src if mode type is "image" * * @param $mode string image path. * @return void */ function setImageSource($src) { $this->updateAttributes(array("src" => $src)); } /** * Renders the button * * @param none * @return string Rendered HTML */ function toHtml() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes); } } /** * HTML Textbox * * @author Timo A. Hummel */ class cHTMLTextbox extends cHTMLFormElement { /** * Constructor. Creates an HTML text box. * * If no additional parameters are specified, the * default width is 20 units. * * @param $name string Name of the element * @param $initvalue string Initial value of the box * @param $width int width of the text box * @param $maxlength int maximum input length of the box * @param $id string ID of the element * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ public function __construct($name, $initvalue = "", $width = "", $maxlength = "", $id = "", $disabled = false, $tabindex = null, $accesskey = "") { parent::__construct($name, $id, $disabled, $tabindex, $accesskey); $this->_tag = "input"; $this->setContentlessTag(); $this->setValue($initvalue); $this->setWidth($width); $this->setMaxLength($maxlength); $this->updateAttributes(array("type" => "text")); } /** * sets the width of the text box. * * @param $width int width of the text box * * @return none */ function setWidth($width) { $width = intval($width); if ($width <= 0) { $width = 50; } $this->updateAttributes(array("size" => $width)); } /** * sets the maximum input length of the text box. * * @param $maxlen int maximum input length * * @return none */ function setMaxLength($maxlen) { $maxlen = intval($maxlen); if ($maxlen <= 0) { $this->removeAttribute("maxlength"); } else { $this->updateAttributes(array("maxlength" => $maxlen)); } } /** * sets the initial value of the text box. * * @param $value string Initial value * * @return none */ function setValue($value) { $this->updateAttributes(array("value" => $value)); } /** * Renders the textbox * * @param none * @return string Rendered HTML */ function toHtml() { return parent::toHtml(); } } /** * HTML Password Box * * @author Timo A. Hummel */ class cHTMLPasswordbox extends cHTMLFormElement { /** * Constructor. Creates an HTML password box. * * If no additional parameters are specified, the * default width is 20 units. * * @param $name string Name of the element * @param $initvalue string Initial value of the box * @param $width int width of the text box * @param $maxlength int maximum input length of the box * @param $id string ID of the element * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ function __construct($name, $initvalue = "", $width = "", $maxlength = "", $id = "", $disabled = false, $tabindex = null, $accesskey = "") { parent::__construct($name, $id, $disabled, $tabindex, $accesskey); $this->_tag = "input"; $this->setValue($initvalue); $this->setWidth($width); $this->setMaxLength($maxlength); $this->updateAttributes(array("type" => "password")); } /** * sets the width of the text box. * * @param $width int width of the text box * * @return none */ function setWidth($width) { $width = intval($width); if ($width <= 0) { $width = 20; } $this->updateAttributes(array("size" => $width)); } /** * sets the maximum input length of the text box. * * @param $maxlen int maximum input length * * @return none */ function setMaxLength($maxlen) { $maxlen = intval($maxlen); if ($maxlen <= 0) { $this->removeAttribute("maxlength"); } else { $this->updateAttributes(array("maxlength" => $maxlen)); } } /** * sets the initial value of the text box. * * @param $value string Initial value * * @return none */ function setValue($value) { $this->updateAttributes(array("value" => $value)); } /** * Renders the textbox * * @param none * @return string Rendered HTML */ function toHtml() { return parent::toHTML(); } } class cHTMLTextarea extends cHTMLFormElement { var $_value; /** * Constructor. Creates an HTML text area. * * If no additional parameters are specified, the * default width is 60 chars, and the height is 5 chars. * * @param $name string Name of the element * @param $initvalue string Initial value of the textarea * @param $width int width of the textarea * @param $height int height of the textarea * @param $id string ID of the element * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ function __construct($name, $initvalue = "", $width = "", $height = "", $id = "", $disabled = false, $tabindex = null, $accesskey = "") { parent::__construct($name, $id, $disabled, $tabindex, $accesskey); $this->_tag = "textarea"; $this->setValue($initvalue); $this->setContentlessTag(false); $this->setWidth($width); $this->setHeight($height); } /** * sets the width of the text box. * * @param $width int width of the text box * * @return none */ function setWidth($width) { $width = intval($width); if ($width <= 0) { $width = 50; } $this->updateAttributes(array("cols" => $width)); } /** * sets the maximum input length of the text box. * * @param $maxlen int maximum input length * * @return none */ function setHeight($height) { $height = intval($height); if ($height <= 0) { $height = 5; } $this->updateAttributes(array("rows" => $height)); } /** * sets the initial value of the text box. * * @param $value string Initial value * * @return none */ function setValue($value) { $this->_value = $value; } /** * Renders the textbox * * @param none * @return string Rendered HTML */ function toHtml() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_value . $this->fillCloseSkeleton(); } } /** * * @package Contenido cHTML * @subpackage cHTMLElements * @author Timo A. Hummel * @author Ortwin Pinke */ class cHTMLLabel extends cHTML { /** * the text for label * * @var string $_sText */ protected $_sText; /** * Creates an HTML label which can be linked * to any form element (specified by their ID). * * A label can be used to link to elements. This is very useful * since if a user clicks a label, the linked form element receives * the focus (if supported by the user agent). * * @param string $sText Text for the label * @param string $for Id of the form element the label belongs to * * @return void */ public function __construct($sText, $sFor) { parent::__construct(); $this->_tag = "label"; $this->setContentlessTag(false); $this->updateAttributes(array("for" => $sFor)); $this->_sText = $sText; } /** * setter for label text * * @param string $sText */ public function setLabelText($sText) { $this->_sText = $sText; } /** * Renders the label * * @param none * @return string Rendered HTML */ function toHtml() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_sText . $this->fillCloseSkeleton(); } } /** * HTML Select Element * * @author Timo A. Hummel */ class cHTMLSelectElement extends cHTMLFormElement { /** * All cHTMLOptionElements * @var array */ var $_options; /** * Constructor. Creates an HTML select field (aka "DropDown"). * * @param $name string Name of the element * @param $width int width of the select element * @param $id string ID of the element * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ function __construct($name, $width = "", $id = "", $disabled = false, $tabindex = null, $accesskey = "") { parent::__construct($name, $id, $disabled, $tabindex, $accesskey); $this->_tag = "select"; $this->setContentlessTag(false); } /** * Automatically creates and fills cHTMLOptionElements * * Array format: * $stuff = array( * array("value","title"), * array("value","title")); * * or regular key => value arrays. * * @param $stuff array Array with all items * * @return none */ function autoFill($stuff) { if (is_array($stuff)) { foreach ($stuff as $key => $row) { if (is_array($row)) { $option = new cHTMLOptionElement($row[1], $row[0]); $this->addOptionElement($row[0], $option); } else { $option = new cHTMLOptionElement($row, $key); $this->addOptionElement($key, $option); } } } } /** * Adds an cHTMLOptionElement to the number of choices. * * @param $index string Index of the element * @param $element object Filled cHTMLOptionElement to add * * @return none */ function addOptionElement($index, $element) { $this->_options[$index] = $element; } function setMultiselect() { $this->updateAttributes(array("multiple" => "multiple")); } function setSize($size) { $this->updateAttributes(array("size" => $size)); } /** * Sets a specific cHTMLOptionElement to the selected * state. * * @param $lvalue string Specifies the "value" of the cHTMLOptionElement to set * * @return none */ function setDefault($lvalue) { $bSet = false; if (is_array($this->_options)) { foreach ($this->_options as $key => $value) { if (strcmp($value->getAttribute("value"), $lvalue) == 0) { $value->setSelected(true); $this->_options[$key] = $value; $bSet = true; } else { $value->setSelected(false); $this->_options[$key] = $value; } } } if ($bSet == false) { if (is_array($this->_options)) { foreach ($this->_options as $key => $value) { $value->setSelected(true); $this->_options[$key] = $value; return; } } } } /** * Search for the selected elements * * @param none * * @return Selected "lvalue" */ function getDefault() { if (is_array($this->_options)) { foreach ($this->_options as $key => $value) { if ($value->isSelected()) { return $key; } } } return false; } /** * Sets specified elements as selected (and all others as unselected) * * @param array $aElements Array with "values" of the cHTMLOptionElement to set * * @return none */ function setSelected($aElements) { if (is_array($this->_options) && is_array($aElements)) { foreach ($this->_options as $sKey => $oOption) { if (in_array($oOption->getAttribute("value"), $aElements)) { $oOption->setSelected(true); $this->_options[$sKey] = $oOption; } else { $oOption->setSelected(false); $this->_options[$sKey] = $oOption; } } } } /** * Renders the select box * * @param none * @return string Rendered HTML */ function toHtml() { $attributes = $this->getAttributes(true); $options = ""; if (is_array($this->_options)) { foreach ($this->_options as $key => $value) { $options .= $value->toHtml(); } } return ($this->fillSkeleton($attributes) . $options . $this->fillCloseSkeleton()); } } /** * HTML Select Option Element * * @author Timo A. Hummel */ class cHTMLOptionElement extends cHTMLFormElement { /** * Title to display * @var string * @access private */ var $_title; /** * Constructor. Creates an HTML option element. * * @param $title string Displayed title of the element * @param $value string Value of the option * @param $selected boolean If true, element is selected * @param $disabled boolean If true, element is disabled * * @return none */ function __construct($title, $value, $selected = false, $disabled = false) { cHTML::__construct(); $this->_tag = "option"; $this->_title = $title; $this->updateAttributes(array("value" => $value)); $this->setContentlessTag(false); $this->setSelected($selected); $this->setDisabled($disabled); } /** * sets the selected flag * * @param $selected boolean If true, adds the "selected" attribute * * @return none */ function setSelected($selected) { if ($selected == true) { $this->updateAttributes(array("selected" => "selected")); } else { $this->removeAttribute("selected"); } } /** * sets the selected flag * * @param $selected boolean If true, adds the "selected" attribute * * @return none */ function isSelected() { if ($this->getAttribute("selected") == "selected") { return true; } else { return false; } } /** * sets the disabled flag * * @param $disabled boolean If true, adds the "disabled" attribute * * @return none */ function setDisabled($disabled) { if ($disabled == true) { $this->updateAttributes(array("disabled" => "disabled")); } else { $this->removeAttribute("disabled"); } } /** * Renders the option element. Note: * the cHTMLSelectElement renders the options by itself. * * @param none * @return string Rendered HTML */ function toHtml() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_title . $this->fillCloseSkeleton(); } } /** * HTML Radio Button * * @author Timo A. Hummel */ class cHTMLRadiobutton extends cHTMLFormElement { /** * Values for the check box * @var string * @access private */ var $_value; /** * Constructor. Creates an HTML radio button element. * * @param $name string Name of the element * @param $value string Value of the radio button * @param $id string ID of the element * @param $checked boolean Is element checked? * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ function __construct($name, $value, $id = "", $checked = false, $disabled = false, $tabindex = null, $accesskey = "") { parent::__construct($name, $id, $disabled, $tabindex, $accesskey); $this->_tag = "input"; $this->_value = $value; $this->setContentlessTag(); $this->setChecked($checked); $this->updateAttributes(array("type" => "radio")); $this->updateAttributes(array("value" => $value)); } /** * Sets the checked flag. * * @param $checked boolean If true, the "checked" attribute will be assigned. * * @return none */ function setChecked($checked) { if ($checked == true) { $this->updateAttributes(array("checked" => "checked")); } else { $this->removeAttribute("checked"); } } /** * Sets a custom label text * * @param $text string Text to display * * @return none */ function setLabelText($text) { $this->_labelText = $text; } /** * Renders the option element. Note: * * If this element has an ID, the value (which equals the text displayed) * will be rendered as seperate HTML label, if not, it will be displayed * as regular text. Displaying the value can be turned off via the parameter. * * @param $renderlabel boolean If true, renders a label * * @return string Rendered HTML */ function toHtml($renderLabel = true) { $attributes = $this->getAttributes(true); if ($renderLabel == false) { return $this->fillSkeleton($attributes); } $id = $this->getAttribute("id"); $renderedLabel = ""; if ($id != "") { $label = new cHTMLLabel($this->_value, $this->getAttribute("id")); if ($this->_labelText != "") { $label->setLabelText($this->_labelText); } $renderedLabel = $label->toHtml(); } else { $renderedLabel = $this->_value; } return $this->fillSkeleton($attributes) . $renderedLabel; } } /** * HTML Checkbox * * @author Timo A. Hummel */ class cHTMLCheckbox extends cHTMLFormElement { var $_value; /** * Constructor. Creates an HTML checkbox element. * * @param $name string Name of the element * @param $value string Value of the radio button * @param $id string ID of the element * @param $checked boolean Is element checked? * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ function __construct($name, $value, $id = "", $checked = false, $disabled = false, $tabindex = null, $accesskey = "") { parent::__construct($name, $id, $disabled, $tabindex, $accesskey); $this->_tag = "input"; $this->_value = $value; $this->setContentlessTag(); $this->setChecked($checked); $this->updateAttributes(array("type" => "checkbox")); $this->updateAttributes(array("value" => $value)); } /** * Sets the checked flag. * * @param $checked boolean If true, the "checked" attribute will be assigned. * * @return none */ function setChecked($checked) { if ($checked == true) { $this->updateAttributes(array("checked" => "checked")); } else { $this->removeAttribute("checked"); } } /** * Sets a custom label text * * @param $text string Text to display * * @return none */ function setLabelText($text) { $this->_labelText = $text; } /** * Renders the checkbox element. Note: * * If this element has an ID, the value (which equals the text displayed) * will be rendered as seperate HTML label, if not, it will be displayed * as regular text. Displaying the value can be turned off via the parameter. * * @param $renderlabel boolean If true, renders a label * * @return string Rendered HTML */ function toHtml($renderlabel = true) { $id = $this->getAttribute("id"); $renderedLabel = ""; if ($renderlabel == true) { if ($id != "") { $label = new cHTMLLabel($this->_value, $this->getAttribute("id")); $label->setClass($this->getAttribute("class")); if ($this->_labelText != "") { $label->setLabelText($this->_labelText); } $renderedLabel = $label->toHtml(); } else { $renderedLabel = $this->_value; if ($this->_labelText != "") { $label = new cHTMLLabel($this->_value, $this->getAttribute("id")); $label->setLabelText($this->_labelText); $renderedLabel = $label->toHtml(); } } return '
' . parent::toHTML() . '' . $renderedLabel . '
'; } else { return parent::toHTML(); } } } /** * HTML File upload box * * @author Timo A. Hummel */ class cHTMLUpload extends cHTMLFormElement { /** * Constructor. Creates an HTML upload box. * * If no additional parameters are specified, the * default width is 20 units. * * @param $name string Name of the element * @param $initvalue string Initial value of the box * @param $width int width of the text box * @param $maxlength int maximum input length of the box * @param $id string ID of the element * @param $disabled string Item disabled flag (non-empty to set disabled) * @param $tabindex string Tab index for form elements * @param $accesskey string Key to access the field * * @return none */ function __construct($name, $width = "", $maxlength = "", $id = "", $disabled = false, $tabindex = null, $accesskey = "") { parent::__construct($name, $id, $disabled, $tabindex, $accesskey); $this->_tag = "input"; $this->setContentlessTag(); $this->setWidth($width); $this->setMaxLength($maxlength); $this->updateAttributes(array("type" => "file")); } /** * sets the width of the text box. * * @param $width int width of the text box * * @return none */ function setWidth($width) { $width = intval($width); if ($width <= 0) { $width = 20; } $this->updateAttributes(array("size" => $width)); } /** * sets the maximum input length of the text box. * * @param $maxlen int maximum input length * * @return none */ function setMaxLength($maxlen) { $maxlen = intval($maxlen); if ($maxlen <= 0) { $this->removeAttribute("maxlength"); } else { $this->updateAttributes(array("maxlength" => $maxlen)); } } /** * Renders the textbox * * @param none * @return string Rendered HTML */ function toHtml() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes); } } /** * HTML Link * * @author Timo A. Hummel */ class cHTMLLink extends cHTML { /* Stores the link location */ var $_link; /* Stores the content */ var $_content; /* Stores the anchor */ var $_anchor; /* Stores the custom entries */ var $_custom; /** * Constructor. Creates an HTML link. * * @param $href String with the location to link to * */ function __construct($href = "") { global $sess; parent::__construct(); $this->setLink($href); $this->setContentlessTag(false); $this->_tag = "a"; /* Check for backend */ if (is_object($sess)) { if ($sess->classname == "Contenido_Session") { $this->enableAutomaticParameterAppend(); } } } function enableAutomaticParameterAppend() { $this->setEvent("click", 'var doit = true; try { var i = get_registered_parameters() } catch (e) { doit = false; }; if (doit == true) { this.href += i; }'); } function disableAutomaticParameterAppend() { $this->unsetEvent("click"); } /** * setLink: Sets the link to a specific location * * @param $href String with the location to link to * */ function setLink($href) { $this->_link = $href; $this->_type = "link"; if (strpos($href, "javascript:") !== false) { $this->disableAutomaticParameterAppend(); } } /** * setTargetFrame: Sets the target frame * * @param $target string Target frame identifier * */ function setTargetFrame($target) { $this->updateAttributes(array("target" => $target)); } /** * setLink: Sets a Contenido link (area, frame, action) * * @param $targetarea string Target backend area * @param $targetframe string Target frame (1-4) * @param $targetaction string Target action */ function setCLink($targetarea, $targetframe, $targetaction = "") { $this->_targetarea = $targetarea; $this->_targetframe = $targetframe; $this->_targetaction = $targetaction; $this->_type = "clink"; } /** * setMultiLink: Sets a multilink * * @param $righttoparea string Area (right top) * @param $righttopaction string Action (right top) * @param $rightbottomarea string Area (right bottom) * @param $rightbottomaction string Action (right bottom) */ function setMultiLink($righttoparea, $righttopaction, $rightbottomarea, $rightbottomaction) { $this->_targetarea = $righttoparea; $this->_targetframe = 3; $this->_targetaction = $righttopaction; $this->_targetarea2 = $rightbottomarea; $this->_targetframe2 = 4; $this->_targetaction2 = $rightbottomaction; $this->_type = "multilink"; } /** * setCustom: Sets a custom attribute to be appended to the link * * @param $key string Parameter name * @param $value string Parameter value */ function setCustom($key, $value) { $this->_custom[$key] = $value; } function getHref() { global $sess; if (is_array($this->_custom)) { $custom = ""; foreach ($this->_custom as $key => $value) { $custom .= "&$key=$value"; } } if ($this->_anchor) { $anchor = "#" . $this->_anchor; } else { $anchor = ""; } switch ($this->_type) { case "link" : $custom = ""; if (is_array($this->_custom)) { foreach ($this->_custom as $key => $value) { if ($custom == "") { $custom .= "?$key=$value"; } else { $custom .= "&$key=$value"; } } } return $this->_link . $custom . $anchor; break; case "clink" : $this->disableAutomaticParameterAppend(); return 'main.php?area=' . $this->_targetarea . '&frame=' . $this->_targetframe . '&action=' . $this->_targetaction . $custom . "&contenido=" . $sess->id . $anchor; break; case "multilink" : $this->disableAutomaticParameterAppend(); $tmp_mstr = 'javascript:conMultiLink(\'%s\',\'%s\',\'%s\',\'%s\');'; $mstr = sprintf($tmp_mstr, 'right_top', $sess->url("main.php?area=" . $this->_targetarea . "&frame=" . $this->_targetframe . "&action=" . $this->_targetaction . $custom), 'right_bottom', $sess->url("main.php?area=" . $this->_targetarea2 . "&frame=" . $this->_targetframe2 . "&action=" . $this->_targetaction2 . $custom)); return $mstr; break; } } /** * setAnchor: Sets an anchor * * Only works for the link types Link and cLink. * * @param $content string Anchor name * */ function setAnchor($anchor) { $this->_anchor = $anchor; } /** * setContent: Sets the link's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * Renders the link * * @param none * @return string Rendered HTML */ function toHTML() { $this->updateAttributes(array("href" => $this->getHref())); return parent::toHTML(); } } /** * DIV Element * * @author Timo A. Hummel */ class cHTMLDiv extends cHTML { /** * Constructor. Creates an HTML Div element. * * @param $content mixed String or object with the contents */ function __construct($content = "") { parent::__construct(); $this->setContent($content); $this->setContentlessTag(false); $this->_tag = "div"; } /** * setContent: Sets the div's content * * @param $content string/object String with the content or an object to render. */ function setContent($content) { $this->_setContent($content); } /** * Renders the DIV element * * @param none * @return string Rendered HTML */ function toHTML() { return parent::toHTML(); } } /** * SPAN Element * * @author Timo A. Hummel */ class cHTMLSpan extends cHTML { /** * Constructor. Creates an HTML Span element. * * @param $content mixed String or object with the contents */ function __construct($content = "") { parent::__construct(); $this->setContent($content); $this->setContentlessTag(false); $this->_tag = "span"; } /** * setContent: Sets the div's content * * @param $content string/object String with the content or an object to render. */ function setContent($content) { $this->_setContent($content); } /** * Renders the SPAN element * * @param none * @return string Rendered HTML */ function toHTML() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_content . $this->fillCloseSkeleton(); } } /** * Image Element * * @author Timo A. Hummel */ class cHTMLImage extends cHTML { /** * Image source * @var string * @access private */ var $_src; /** * Image width * @var int * @access private */ var $_width; /** * Image height * @var int * @access private */ var $_height; /** * Constructor. Creates an HTML IMG element. * * @param $content mixed String or object with the contents * */ function __construct($src = NULL) { parent::__construct(); $this->_tag = "img"; $this->setContentlessTag(); $this->setBorder(0); $this->setSrc($src); } /** * setSrc: Sets the image's source file * * @param $src string source location * */ function setSrc($src) { if ($src === NULL) { $this->_src = "images/spacer.gif"; } else { $this->_src = $src; } } /** * setWidth: Sets the image's width * * @param $width int Image width * */ function setWidth($width) { $this->_width = $width; } /** * setHeight: Sets the image's height * * @param $height int Image height * */ function setHeight($height) { $this->_height = $height; } /** * setBorder: Sets the border size * * @param $border int Border size * */ function setBorder($border) { $this->_border = $border; } function setAlignment($alignment) { $this->updateAttributes(array("align" => $alignment)); } /** * applyDimensions: Apply dimensions from the source image * * @param none * */ function applyDimensions() { global $cfg; /* Try to open the image */ list ($width, $height) = @ getimagesize($cfg['path']['contenido'] . $this->_src); if (!empty($width) && !empty($height)) { $this->_width = $width; $this->_height = $height; } } /** * Renders the IMG element * * @param none * @return string Rendered HTML */ function toHTML() { $this->updateAttributes(array("src" => $this->_src)); if (!empty($this->_width)) { $this->updateAttributes(array("width" => $this->_width)); } if (!empty($this->_height)) { $this->updateAttributes(array("height" => $this->_height)); } //$this->updateAttributes(array ("border" => $this->_border)); return parent::toHTML(); } } /** * Table Element * * @author Timo A. Hummel */ class cHTMLTable extends cHTML { function __construct() { parent::__construct(); $this->_tag = "table"; $this->setContentlessTag(false); $this->setPadding(0); $this->setSpacing(0); $this->setBorder(0); } /** * setContent: Sets the table's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * setCellSpacing: Sets the spacing between cells * * @param $cellspacing Spacing * */ function setCellSpacing($cellspacing) { $this->updateAttributes(array("cellspacing" => $cellspacing)); } function setPadding($cellpadding) { $this->setCellPadding($cellpadding); } function setSpacing($cellspacing) { $this->setCellSpacing($cellspacing); } /** * setCellPadding: Sets the padding between cells * * @param $cellpadding Padding * */ function setCellPadding($cellpadding) { $this->updateAttributes(array("cellpadding" => $cellpadding)); } /** * setBorder: Sets the table's border * * @param border Border size * */ function setBorder($border) { $this->updateAttributes(array("border" => $border)); } /** * setWidth: Sets the table width * * @param $width Width * */ function setWidth($width) { $this->updateAttributes(array("width" => $width)); } /** * Renders the Table element * * @param none * @return string Rendered HTML */ function toHTML() { return parent::toHTML(); } } /** * Table Body Element * * @author Timo A. Hummel */ class cHTMLTableBody extends cHTML { function __construct() { parent::__construct(); $this->setContentlessTag(false); $this->_tag = "tbody"; } /** * setContent: Sets the table body's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * Renders the table body element * * @param none * @return string Rendered HTML */ function toHTML() { return parent::toHTML(); } } /** * Table Row Element * * @author Timo A. Hummel */ class cHTMLTableRow extends cHTML { function __construct() { parent::__construct(); $this->setContentlessTag(false); $this->_tag = "tr"; } /** * setContent: Sets the table row's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * Renders the table row element * * @param none * @return string Rendered HTML */ function toHTML() { return parent::toHTML(); } } /** * Table Data Element * * @author Timo A. Hummel */ class cHTMLTableData extends cHTML { function __construct() { parent::__construct(); $this->setContentlessTag(false); $this->_tag = "td"; } /** * setWidth: Sets the table width * * @param $width Width * */ function setWidth($width) { $this->updateAttributes(array("width" => $width)); } function setHeight($height) { $this->updateAttributes(array("height" => $height)); } function setAlignment($alignment) { $this->updateAttributes(array("align" => $alignment)); } function setVerticalAlignment($alignment) { $this->updateAttributes(array("valign" => $alignment)); } function setBackgroundColor($color) { $this->updateAttributes(array("bgcolor" => $color)); } function setColspan($colspan) { $this->updateAttributes(array("colspan" => $colspan)); } /** * setContent: Sets the table data's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * Renders the table data element * * @param none * @return string Rendered HTML */ function toHTML() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_content . $this->fillCloseSkeleton(); } } /** * Table Head Element * * @author Timo A. Hummel */ class cHTMLTableHead extends cHTML { function __construct() { parent::__construct(); $this->setContentlessTag(false); $this->_tag = "th"; } /** * setContent: Sets the table head's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * Renders the table head element * * @param none * @return string Rendered HTML */ function toHTML() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_content . $this->fillCloseSkeleton(); } } /** * Table Head Element * * @author Timo A. Hummel */ class cHTMLTableHeader extends cHTML { function __construct() { parent::__construct(); $this->setContentlessTag(false); $this->_tag = "thead"; } /** * setContent: Sets the table head's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * Renders the table head element * * @param none * @return string Rendered HTML */ function toHTML() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_content . $this->fillCloseSkeleton(); } } /** * IFrame element * * @author Timo A. Hummel */ class cHTMLIFrame extends cHTML { function __construct() { parent::__construct(); $this->setContentlessTag(false); $this->_tag = "iframe"; } /** * setSrc: Sets this frame's source * * @param $content string/object String with the content or an object to render. * */ function setSrc($src) { $this->updateAttributes(array("src" => $src)); } /** * setWidth: Sets this frame's width * * @param $width Width of the item * */ function setWidth($width) { $this->updateAttributes(array("width" => $width)); } /** * setHeight: Sets this frame's height * * @param $height Height of the item * */ function setHeight($height) { $this->updateAttributes(array("height" => $height)); } /** * setBorder: Sets wether this iframe should have a border or not * * @param $border If 1 or true, this frame will have a border * */ function setBorder($border) { $this->updateAttributes(array("frameborder" => intval($border))); } /** * Renders the table head element * * @param none * @return string Rendered HTML */ function toHTML() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_content . $this->fillCloseSkeleton(); } } class cHTMLAlignmentTable extends cHTMLTable { function __construct() { parent::__construct(); $this->_data = func_get_args(); $this->setContentlessTag(false); } function render() { $tr = new cHTMLTableRow; $td = new cHTMLTableData; $out = ""; foreach ($this->_data as $data) { $td->setContent($data); $out .= $td->render(); } $tr->setContent($out); $this->setContent($tr); return $this->toHTML(); } } class cHTMLForm extends cHTML { function __construct() { parent::__construct(); $this->setContentlessTag(false); $this->_tag = "form"; } function setVar($var, $value) { $this->_vars[$var] = $value; } /** * setContent: Sets the form's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * Renders the form element * * @param none * @return string Rendered HTML */ function toHTML() { $out = ''; foreach ($this->_vars as $var => $value) { $f = new cHTMLHiddenField($var, $value); $out .= $f->render(); } $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $out . $this->_content . $this->fillCloseSkeleton(); } } /** * Table Head Element * * @author Timo A. Hummel */ class cHTMLScript extends cHTML { function __construct() { parent::__construct(); $this->setContentlessTag(false); $this->_tag = "script"; } /** * setContent: Sets the table head's content * * @param $content string/object String with the content or an object to render. * */ function setContent($content) { $this->_setContent($content); } /** * Renders the table head element * * @param none * @return string Rendered HTML */ function toHTML() { $attributes = $this->getAttributes(true); return $this->fillSkeleton($attributes) . $this->_content . $this->fillCloseSkeleton(); } } ?>