tag.php

来自「一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:」· PHP 代码 · 共 1,418 行 · 第 1/3 页

PHP
1,418
字号
         */        function SimpleRadioButtonTag($attributes) {            $this->SimpleWidget('input', $attributes);            if ($this->getAttribute('value') === false) {                $this->_setAttribute('value', 'on');            }        }                /**         *    Tag contains no content.         *    @return boolean        False.         *    @access public         */        function expectEndTag() {            return false;        }                /**         *    The only allowed value sn the one in the         *    "value" attribute.         *    @param string $value      New value.         *    @return boolean           True if allowed.         *    @access public         */        function setValue($value) {            if ($value === false) {                return parent::setValue($value);            }            if ($value !== $this->getAttribute('value')) {                return false;            }            return parent::setValue($value);        }                /**         *    Accessor for starting value.         *    @return string        Parsed value.         *    @access public         */        function getDefault() {            if ($this->getAttribute('checked') !== false) {                return $this->getAttribute('value');            }            return false;        }    }        /**     *    Checkbox widget.	 *    @package SimpleTest	 *    @subpackage WebTester     */    class SimpleCheckboxTag extends SimpleWidget {                /**         *    Starts with attributes only.         *    @param hash $attributes    Attribute names and         *                               string values.         */        function SimpleCheckboxTag($attributes) {            $this->SimpleWidget('input', $attributes);            if ($this->getAttribute('value') === false) {                $this->_setAttribute('value', 'on');            }        }                /**         *    Tag contains no content.         *    @return boolean        False.         *    @access public         */        function expectEndTag() {            return false;        }                /**         *    The only allowed value in the one in the         *    "value" attribute. The default for this         *    attribute is "on". If this widget is set to         *    true, then the usual value will be taken.         *    @param string $value      New value.         *    @return boolean           True if allowed.         *    @access public         */        function setValue($value) {            if ($value === false) {                return parent::setValue($value);            }            if ($value === true) {                return parent::setValue($this->getAttribute('value'));            }            if ($value != $this->getAttribute('value')) {                return false;            }            return parent::setValue($value);        }                /**         *    Accessor for starting value. The default         *    value is "on".         *    @return string        Parsed value.         *    @access public         */        function getDefault() {            if ($this->getAttribute('checked') !== false) {                return $this->getAttribute('value');            }            return false;        }    }        /**     *    A group of multiple widgets with some shared behaviour.	 *    @package SimpleTest	 *    @subpackage WebTester     */    class SimpleTagGroup {        var $_widgets = array();        /**         *    Adds a tag to the group.         *    @param SimpleWidget $widget         *    @access public         */        function addWidget(&$widget) {            $this->_widgets[] = &$widget;        }                /**         *    Accessor to widget set.         *    @return array        All widgets.         *    @access protected         */        function &_getWidgets() {            return $this->_widgets;        }        /**         *    Accessor for an attribute.         *    @param string $label    Attribute name.         *    @return boolean         Always false.         *    @access public         */        function getAttribute($label) {            return false;        }                /**         *    Fetches the name for the widget from the first         *    member.         *    @return string        Name of widget.         *    @access public         */        function getName() {            if (count($this->_widgets) > 0) {                return $this->_widgets[0]->getName();            }        }                /**         *    Scans the widgets for one with the appropriate         *    ID field.         *    @param string $id        ID value to try.         *    @return boolean          True if matched.         *    @access public         */        function isId($id) {            for ($i = 0, $count = count($this->_widgets); $i < $count; $i++) {                if ($this->_widgets[$i]->isId($id)) {                    return true;                }            }            return false;        }                /**         *    Scans the widgets for one with the appropriate         *    attached label.         *    @param string $label     Attached label to try.         *    @return boolean          True if matched.         *    @access public         */        function isLabel($label) {            for ($i = 0, $count = count($this->_widgets); $i < $count; $i++) {                if ($this->_widgets[$i]->isLabel($label)) {                    return true;                }            }            return false;        }                /**         *    Dispatches the value into the form encoded packet.         *    @param SimpleEncoding $encoding    Form packet.         *    @access public         */        function write(&$encoding) {            $encoding->add($this->getName(), $this->getValue());        }    }    /**     *    A group of tags with the same name within a form.	 *    @package SimpleTest	 *    @subpackage WebTester     */    class SimpleCheckboxGroup extends SimpleTagGroup {                /**         *    Accessor for current selected widget or false         *    if none.         *    @return string/array     Widget values or false if none.         *    @access public         */        function getValue() {            $values = array();            $widgets = &$this->_getWidgets();            for ($i = 0, $count = count($widgets); $i < $count; $i++) {                if ($widgets[$i]->getValue() !== false) {                    $values[] = $widgets[$i]->getValue();                }            }            return $this->_coerceValues($values);        }                /**         *    Accessor for starting value that is active.         *    @return string/array      Widget values or false if none.         *    @access public         */        function getDefault() {            $values = array();            $widgets = &$this->_getWidgets();            for ($i = 0, $count = count($widgets); $i < $count; $i++) {                if ($widgets[$i]->getDefault() !== false) {                    $values[] = $widgets[$i]->getDefault();                }            }            return $this->_coerceValues($values);        }                /**         *    Accessor for current set values.         *    @param string/array/boolean $values   Either a single string, a         *                                          hash or false for nothing set.         *    @return boolean                       True if all values can be set.         *    @access public         */        function setValue($values) {            $values = $this->_makeArray($values);            if (! $this->_valuesArePossible($values)) {                return false;            }            $widgets = &$this->_getWidgets();            for ($i = 0, $count = count($widgets); $i < $count; $i++) {                $possible = $widgets[$i]->getAttribute('value');                if (in_array($widgets[$i]->getAttribute('value'), $values)) {                    $widgets[$i]->setValue($possible);                } else {                    $widgets[$i]->setValue(false);                }            }            return true;        }                /**         *    Tests to see if a possible value set is legal.         *    @param string/array/boolean $values   Either a single string, a         *                                          hash or false for nothing set.         *    @return boolean                       False if trying to set a         *                                          missing value.         *    @access private         */        function _valuesArePossible($values) {            $matches = array();            $widgets = &$this->_getWidgets();            for ($i = 0, $count = count($widgets); $i < $count; $i++) {                $possible = $widgets[$i]->getAttribute('value');                if (in_array($possible, $values)) {                    $matches[] = $possible;                }            }            return ($values == $matches);        }                /**         *    Converts the output to an appropriate format. This means         *    that no values is false, a single value is just that         *    value and only two or more are contained in an array.         *    @param array $values           List of values of widgets.         *    @return string/array/boolean   Expected format for a tag.         *    @access private         */        function _coerceValues($values) {            if (count($values) == 0) {                return false;            } elseif (count($values) == 1) {                return $values[0];            } else {                return $values;            }        }                /**         *    Converts false or string into array. The opposite of         *    the coercian method.         *    @param string/array/boolean $value  A single item is converted         *                                        to a one item list. False         *                                        gives an empty list.         *    @return array                       List of values, possibly empty.         *    @access private         */        function _makeArray($value) {            if ($value === false) {                return array();            }            if (is_string($value)) {                return array($value);            }            return $value;        }    }    /**     *    A group of tags with the same name within a form.     *    Used for radio buttons.	 *    @package SimpleTest	 *    @subpackage WebTester     */    class SimpleRadioGroup extends SimpleTagGroup {                /**         *    Each tag is tried in turn until one is         *    successfully set. The others will be         *    unchecked if successful.         *    @param string $value      New value.         *    @return boolean           True if any allowed.         *    @access public         */        function setValue($value) {            if (! $this->_valueIsPossible($value)) {                return false;            }            $index = false;            $widgets = &$this->_getWidgets();            for ($i = 0, $count = count($widgets); $i < $count; $i++) {                if (! $widgets[$i]->setValue($value)) {                    $widgets[$i]->setValue(false);                }            }            return true;        }                /**         *    Tests to see if a value is allowed.         *    @param string    Attempted value.         *    @return boolean  True if a valid value.         *    @access private         */        function _valueIsPossible($value) {            $widgets = &$this->_getWidgets();            for ($i = 0, $count = count($widgets); $i < $count; $i++) {                if ($widgets[$i]->getAttribute('value') == $value) {                    return true;                }            }            return false;        }                /**         *    Accessor for current selected widget or false         *    if none.         *    @return string/boolean   Value attribute or         *                             content of opton.         *    @access public         */        function getValue() {            $widgets = &$this->_getWidgets();            for ($i = 0, $count = count($widgets); $i < $count; $i++) {                if ($widgets[$i]->getValue() !== false) {                    return $widgets[$i]->getValue();                }            }            return false;        }                /**         *    Accessor for starting value that is active.         *    @return string/boolean      Value of first checked         *                                widget or false if none.         *    @access public         */        function getDefault() {            $widgets = &$this->_getWidgets();            for ($i = 0, $count = count($widgets); $i < $count; $i++) {                if ($widgets[$i]->getDefault() !== false) {                    return $widgets[$i]->getDefault();                }            }            return false;        }    }        /**     *    Tag to keep track of labels.	 *    @package SimpleTest	 *    @subpackage WebTester     */    class SimpleLabelTag extends SimpleTag {                /**         *    Starts with a named tag with attributes only.         *    @param hash $attributes    Attribute names and         *                               string values.         */        function SimpleLabelTag($attributes) {            $this->SimpleTag('label', $attributes);        }                /**         *    Access for the ID to attach the label to.         *    @return string        For attribute.         *    @access public         */        function getFor() {            return $this->getAttribute('for');        }    }        /**     *    Tag to aid parsing the form.	 *    @package SimpleTest	 *    @subpackage WebTester     */    class SimpleFormTag extends SimpleTag {                /**         *    Starts with a named tag with attributes only.         *    @param hash $attributes    Attribute names and         *                               string values.         */        function SimpleFormTag($attributes) {            $this->SimpleTag('form', $attributes);        }    }        /**     *    Tag to aid parsing the frames in a page.	 *    @package SimpleTest	 *    @subpackage WebTester     */    class SimpleFrameTag extends SimpleTag {                /**         *    Starts with a named tag with attributes only.         *    @param hash $attributes    Attribute names and         *                               string values.         */        function SimpleFrameTag($attributes) {            $this->SimpleTag('frame', $attributes);        }                /**         *    Tag contains no content.         *    @return boolean        False.         *    @access public         */        function expectEndTag() {            return false;        }    }?>

⌨️ 快捷键说明

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