mirror of
https://github.com/cytopia/devilbox.git
synced 2024-12-27 00:11:04 +00:00
218 lines
3.7 KiB
PHP
218 lines
3.7 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* XHtmlSimpleElement
|
||
|
*
|
||
|
* Used to generate Xhtml-Code for simple xhtml elements
|
||
|
* (i.e. elements, that can't contain child elements)
|
||
|
*
|
||
|
*
|
||
|
* @author Felix Meinhold
|
||
|
*
|
||
|
*/
|
||
|
class XHtmlSimpleElement {
|
||
|
var $_element;
|
||
|
var $_siblings = array();
|
||
|
var $_htmlcode;
|
||
|
var $_attributes = array();
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Constructor
|
||
|
*
|
||
|
* @param string The element's name. Defaults to name of the
|
||
|
* derived class
|
||
|
*
|
||
|
*/
|
||
|
function __construct($element = null) {
|
||
|
|
||
|
$this->_element = $this->is_element();
|
||
|
|
||
|
}
|
||
|
|
||
|
function set_style($style) {
|
||
|
$this->set_attribute('style', $style);
|
||
|
}
|
||
|
|
||
|
function set_class($class) {
|
||
|
$this->set_attribute('class', $class);
|
||
|
}
|
||
|
|
||
|
|
||
|
function is_element() {
|
||
|
return
|
||
|
str_replace('xhtml_', '', strtolower(get_class($this)));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Private function generates xhtml
|
||
|
* @access private
|
||
|
*/
|
||
|
function _html() {
|
||
|
$this->_htmlcode = "<";
|
||
|
foreach ($this->_attributeCollection as $attribute => $value) {
|
||
|
if (!empty($value)) $this->_htmlcode .= " {$attribute}=\"{$value}\"";
|
||
|
}
|
||
|
$this->_htmlcode .= "/>";
|
||
|
|
||
|
return $this->_htmlcode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns xhtml code
|
||
|
*
|
||
|
*/
|
||
|
function fetch() {
|
||
|
return $this->_html();
|
||
|
}
|
||
|
/**
|
||
|
* Echoes xhtml
|
||
|
*
|
||
|
*/
|
||
|
function show() {
|
||
|
echo $this->fetch();
|
||
|
}
|
||
|
|
||
|
function set_attribute($attr, $value) {
|
||
|
$this->_attributes[$attr] = $value;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* XHtmlElement
|
||
|
*
|
||
|
* Used to generate Xhtml-Code for xhtml elements
|
||
|
* that can contain child elements
|
||
|
*
|
||
|
*
|
||
|
*/
|
||
|
class XHtmlElement extends XHtmlSimpleElement {
|
||
|
var $_text = null;
|
||
|
var $_htmlcode = "";
|
||
|
var $_siblings = array();
|
||
|
|
||
|
function __construct($text = null) {
|
||
|
parent::__construct();
|
||
|
|
||
|
if ($text) $this->set_text($text);
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Adds an xhtml child to element
|
||
|
*
|
||
|
* @param XHtmlElement The element to become a child of element
|
||
|
*/
|
||
|
function add(&$object) {
|
||
|
array_push($this->_siblings, $object);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
* The CDATA section of Element
|
||
|
*
|
||
|
* @param string Text
|
||
|
*/
|
||
|
function set_text($text) {
|
||
|
if ($text) $this->_text = htmlspecialchars($text);
|
||
|
}
|
||
|
|
||
|
function fetch() {
|
||
|
return $this->_html();
|
||
|
}
|
||
|
|
||
|
|
||
|
function _html() {
|
||
|
|
||
|
$this->_htmlcode = "<{$this->_element}";
|
||
|
foreach ($this->_attributes as $attribute =>$value) {
|
||
|
if (!empty($value)) $this->_htmlcode .= " {$attribute} =\"{$value}\"";
|
||
|
}
|
||
|
$this->_htmlcode .= ">";
|
||
|
|
||
|
|
||
|
if ($this->_text) {
|
||
|
$this->_htmlcode .= $this->_text;
|
||
|
}
|
||
|
|
||
|
foreach ($this->_siblings as $obj) {
|
||
|
$this->_htmlcode .= $obj->fetch();
|
||
|
}
|
||
|
|
||
|
$this->_htmlcode .= "</{$this->_element}>";
|
||
|
|
||
|
return $this->_htmlcode;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Returns siblings of Element
|
||
|
*
|
||
|
*/
|
||
|
function get_siblings() {
|
||
|
return $this->_siblings;
|
||
|
}
|
||
|
|
||
|
function has_siblings() {
|
||
|
return (count($this->_siblings) != 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class XHTML_Button extends XHtmlElement {
|
||
|
function __construct($name, $text = null) {
|
||
|
parent::__construct();
|
||
|
|
||
|
$this->set_attribute("name", $name);
|
||
|
|
||
|
if ($text) $this->set_text($text);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
class XHTML_Option extends XHtmlElement {
|
||
|
function __construct($text, $value = null) {
|
||
|
parent::__construct(null);
|
||
|
$this->set_text($text);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
class XHTML_Select extends XHTMLElement {
|
||
|
var $_data;
|
||
|
|
||
|
function __construct($name, $multiple = false, $size = null) {
|
||
|
parent::__construct();
|
||
|
|
||
|
$this->set_attribute("name", $name);
|
||
|
if ($multiple) $this->set_attribute("multiple","multiple");
|
||
|
if ($size) $this->set_attribute("size",$size);
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
function set_data(&$data, $delim = ",") {
|
||
|
switch (gettype($data)) {
|
||
|
case "string":
|
||
|
$this->_data = explode($delim, $data);
|
||
|
break;
|
||
|
case "array":
|
||
|
$this->_data = $data;
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function fetch() {
|
||
|
if (isset($this->_data) && $this->_data) {
|
||
|
foreach ($this->_data as $value) { $this->add(new XHTML_Option($value)); }
|
||
|
}
|
||
|
return parent::fetch();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
?>
|