tag.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 1,418 行 · 第 1/3 页

SVN-BASE
1,418
字号
<?php/** *  Base include file for SimpleTest. *  @package    SimpleTest *  @subpackage WebTester *  @version    $Id: tag.php 1723 2008-04-08 00:34:10Z lastcraft $ */    /**#@+ * include SimpleTest files */require_once(dirname(__FILE__) . '/parser.php');require_once(dirname(__FILE__) . '/encoding.php');/**#@-*//** *    HTML or XML tag. *    @package SimpleTest *    @subpackage WebTester */class SimpleTag {    var $_name;    var $_attributes;    var $_content;        /**     *    Starts with a named tag with attributes only.     *    @param string $name        Tag name.     *    @param hash $attributes    Attribute names and     *                               string values. Note that     *                               the keys must have been     *                               converted to lower case.     */    function SimpleTag($name, $attributes) {        $this->_name = strtolower(trim($name));        $this->_attributes = $attributes;        $this->_content = '';    }        /**     *    Check to see if the tag can have both start and     *    end tags with content in between.     *    @return boolean        True if content allowed.     *    @access public     */    function expectEndTag() {        return true;    }        /**     *    The current tag should not swallow all content for     *    itself as it's searchable page content. Private     *    content tags are usually widgets that contain default     *    values.     *    @return boolean        False as content is available     *                           to other tags by default.     *    @access public     */    function isPrivateContent() {        return false;    }    /**     *    Appends string content to the current content.     *    @param string $content        Additional text.     *    @access public     */    function addContent($content) {        $this->_content .= (string)$content;    }        /**     *    Adds an enclosed tag to the content.     *    @param SimpleTag $tag    New tag.     *    @access public     */    function addTag(&$tag) {    }        /**     *    Accessor for tag name.     *    @return string       Name of tag.     *    @access public     */    function getTagName() {        return $this->_name;    }        /**     *    List of legal child elements.     *    @return array        List of element names.     *    @access public     */    function getChildElements() {        return array();    }        /**     *    Accessor for an attribute.     *    @param string $label    Attribute name.     *    @return string          Attribute value.     *    @access public     */    function getAttribute($label) {        $label = strtolower($label);        if (! isset($this->_attributes[$label])) {            return false;        }        return (string)$this->_attributes[$label];    }        /**     *    Sets an attribute.     *    @param string $label    Attribute name.     *    @return string $value   New attribute value.     *    @access protected     */    function _setAttribute($label, $value) {        $this->_attributes[strtolower($label)] = $value;    }        /**     *    Accessor for the whole content so far.     *    @return string       Content as big raw string.     *    @access public     */    function getContent() {        return $this->_content;    }        /**     *    Accessor for content reduced to visible text. Acts     *    like a text mode browser, normalising space and     *    reducing images to their alt text.     *    @return string       Content as plain text.     *    @access public     */    function getText() {        return SimpleHtmlSaxParser::normalise($this->_content);    }        /**     *    Test to see if id attribute matches.     *    @param string $id        ID to test against.     *    @return boolean          True on match.     *    @access public     */    function isId($id) {        return ($this->getAttribute('id') == $id);    }}/** *    Base url. *    @package SimpleTest *    @subpackage WebTester */class SimpleBaseTag extends SimpleTag {        /**     *    Starts with a named tag with attributes only.     *    @param hash $attributes    Attribute names and     *                               string values.     */    function SimpleBaseTag($attributes) {        $this->SimpleTag('base', $attributes);    }    /**     *    Base tag is not a block tag.     *    @return boolean       false     *    @access public     */    function expectEndTag() {        return false;    }}/** *    Page title. *    @package SimpleTest *    @subpackage WebTester */class SimpleTitleTag extends SimpleTag {        /**     *    Starts with a named tag with attributes only.     *    @param hash $attributes    Attribute names and     *                               string values.     */    function SimpleTitleTag($attributes) {        $this->SimpleTag('title', $attributes);    }}/** *    Link. *    @package SimpleTest *    @subpackage WebTester */class SimpleAnchorTag extends SimpleTag {        /**     *    Starts with a named tag with attributes only.     *    @param hash $attributes    Attribute names and     *                               string values.     */    function SimpleAnchorTag($attributes) {        $this->SimpleTag('a', $attributes);    }        /**     *    Accessor for URL as string.     *    @return string    Coerced as string.     *    @access public     */    function getHref() {        $url = $this->getAttribute('href');        if (is_bool($url)) {            $url = '';        }        return $url;    }}/** *    Form element. *    @package SimpleTest *    @subpackage WebTester */class SimpleWidget extends SimpleTag {    var $_value;    var $_label;    var $_is_set;        /**     *    Starts with a named tag with attributes only.     *    @param string $name        Tag name.     *    @param hash $attributes    Attribute names and     *                               string values.     */    function SimpleWidget($name, $attributes) {        $this->SimpleTag($name, $attributes);        $this->_value = false;        $this->_label = false;        $this->_is_set = false;    }        /**     *    Accessor for name submitted as the key in     *    GET/POST variables hash.     *    @return string        Parsed value.     *    @access public     */    function getName() {        return $this->getAttribute('name');    }        /**     *    Accessor for default value parsed with the tag.     *    @return string        Parsed value.     *    @access public     */    function getDefault() {        return $this->getAttribute('value');    }        /**     *    Accessor for currently set value or default if     *    none.     *    @return string      Value set by form or default     *                        if none.     *    @access public     */    function getValue() {        if (! $this->_is_set) {            return $this->getDefault();        }        return $this->_value;    }        /**     *    Sets the current form element value.     *    @param string $value       New value.     *    @return boolean            True if allowed.     *    @access public     */    function setValue($value) {        $this->_value = $value;        $this->_is_set = true;        return true;    }        /**     *    Resets the form element value back to the     *    default.     *    @access public     */    function resetValue() {        $this->_is_set = false;    }        /**     *    Allows setting of a label externally, say by a     *    label tag.     *    @param string $label    Label to attach.     *    @access public     */    function setLabel($label) {        $this->_label = trim($label);    }        /**     *    Reads external or internal label.     *    @param string $label    Label to test.     *    @return boolean         True is match.     *    @access public     */    function isLabel($label) {        return $this->_label == trim($label);    }        /**     *    Dispatches the value into the form encoded packet.     *    @param SimpleEncoding $encoding    Form packet.     *    @access public     */    function write(&$encoding) {        if ($this->getName()) {            $encoding->add($this->getName(), $this->getValue());        }    }}/** *    Text, password and hidden field. *    @package SimpleTest *    @subpackage WebTester */class SimpleTextTag extends SimpleWidget {        /**     *    Starts with a named tag with attributes only.     *    @param hash $attributes    Attribute names and     *                               string values.     */    function SimpleTextTag($attributes) {        $this->SimpleWidget('input', $attributes);        if ($this->getAttribute('value') === false) {            $this->_setAttribute('value', '');        }    }        /**     *    Tag contains no content.     *    @return boolean        False.     *    @access public     */    function expectEndTag() {        return false;    }        /**     *    Sets the current form element value. Cannot     *    change the value of a hidden field.     *    @param string $value       New value.     *    @return boolean            True if allowed.     *    @access public     */    function setValue($value) {        if ($this->getAttribute('type') == 'hidden') {            return false;        }        return parent::setValue($value);    }}/** *    Submit button as input tag. *    @package SimpleTest *    @subpackage WebTester */class SimpleSubmitTag extends SimpleWidget {        /**     *    Starts with a named tag with attributes only.     *    @param hash $attributes    Attribute names and     *                               string values.     */    function SimpleSubmitTag($attributes) {        $this->SimpleWidget('input', $attributes);        if ($this->getAttribute('value') === false) {            $this->_setAttribute('value', 'Submit');        }    }        /**     *    Tag contains no end element.     *    @return boolean        False.     *    @access public     */    function expectEndTag() {        return false;    }        /**     *    Disables the setting of the button value.     *    @param string $value       Ignored.     *    @return boolean            True if allowed.     *    @access public     */    function setValue($value) {        return false;    }        /**     *    Value of browser visible text.     *    @return string        Visible label.     *    @access public     */    function getLabel() {        return $this->getValue();    }        /**     *    Test for a label match when searching.     *    @param string $label     Label to test.     *    @return boolean          True on match.     *    @access public     */    function isLabel($label) {        return trim($label) == trim($this->getLabel());    }}    /** *    Image button as input tag. *    @package SimpleTest *    @subpackage WebTester */class SimpleImageSubmitTag extends SimpleWidget {        /**     *    Starts with a named tag with attributes only.     *    @param hash $attributes    Attribute names and     *                               string values.     */    function SimpleImageSubmitTag($attributes) {        $this->SimpleWidget('input', $attributes);    }        /**     *    Tag contains no end element.     *    @return boolean        False.     *    @access public     */    function expectEndTag() {        return false;    }        /**     *    Disables the setting of the button value.     *    @param string $value       Ignored.     *    @return boolean            True if allowed.     *    @access public     */    function setValue($value) {        return false;    }        /**     *    Value of browser visible text.     *    @return string        Visible label.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?