⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 advmultiselect.php

📁 完美的在线教育系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/*** Element for HTML_QuickForm that emulate a multi-select.** The HTML_QuickForm_advmultiselect package adds an element to the* HTML_QuickForm package that is two select boxes next to each other* emulating a multi-select.** PHP versions 4 and 5** LICENSE: This source file is subject to version 3.0 of the PHP license* that is available through the world-wide-web at the following URI:* http://www.php.net/license/3_0.txt.  If you did not receive a copy of* the PHP License and are unable to obtain it through the web, please* send a note to license@php.net so we can mail you a copy immediately.** @category   HTML* @package    HTML_QuickForm_advmultiselect* @author     Laurent Laville <pear@laurent-laville.org>* @copyright  1997-2005 The PHP Group* @license    http://www.php.net/license/3_0.txt  PHP License 3.0* @version    CVS: $Id: advmultiselect.php 7739 2006-02-12 17:21:34Z turboke $* @link       http://pear.php.net/package/HTML_QuickForm_advmultiselect*/require_once 'HTML/QuickForm/select.php';/*** Replace PHP_EOL constant**  category    PHP*  package     PHP_Compat* @link        http://php.net/reserved.constants.core* @author      Aidan Lister <aidan@php.net>* @since       PHP 5.0.2*/if (!defined('PHP_EOL')) {    switch (strtoupper(substr(PHP_OS, 0, 3))) {        // Windows        case 'WIN':            define('PHP_EOL', "\r\n");            break;        // Mac        case 'DAR':            define('PHP_EOL', "\r");            break;        // Unix        default:            define('PHP_EOL', "\n");    }}/*** Element for HTML_QuickForm that emulate a multi-select.** The HTML_QuickForm_advmultiselect package adds an element to the* HTML_QuickForm package that is two select boxes next to each other* emulating a multi-select.** PHP versions 4 and 5** LICENSE: This source file is subject to version 3.0 of the PHP license* that is available through the world-wide-web at the following URI:* http://www.php.net/license/3_0.txt.  If you did not receive a copy of* the PHP License and are unable to obtain it through the web, please* send a note to license@php.net so we can mail you a copy immediately.** @category   HTML* @package    HTML_QuickForm_advmultiselect* @author     Laurent Laville <pear@laurent-laville.org>* @copyright  1997-2005 The PHP Group* @license    http://www.php.net/license/3_0.txt  PHP License 3.0* @version    Release: 0.5.1* @link       http://pear.php.net/package/HTML_QuickForm_advmultiselect*/class HTML_QuickForm_advmultiselect extends HTML_QuickForm_select{    /**     * Prefix function name in javascript move selections     *     * @var        string     * @access     private     * @since      0.4.0     */    var $_jsPrefix;    /**     * Postfix function name in javascript move selections     *     * @var        string     * @access     private     * @since      0.4.0     */    var $_jsPostfix;    /**     * Associative array of the multi select container attributes     *     * @var        array     * @access     private     * @since      0.4.0     */    var $_tableAttributes;    /**     * Associative array of the add button attributes     *     * @var        array     * @access     private     * @since      0.4.0     */    var $_addButtonAttributes;    /**     * Associative array of the remove button attributes     *     * @var        array     * @access     private     * @since      0.4.0     */    var $_removeButtonAttributes;    /**     * Associative array of the move up button attributes     *     * @var        array     * @access     private     * @since      0.5.0     */    var $_upButtonAttributes;    /**     * Associative array of the move up button attributes     *     * @var        array     * @access     private     * @since      0.5.0     */    var $_downButtonAttributes;    /**     * Defines if both list (unselected, selected) will have their elements be     * arranged from lowest to highest (or reverse) depending on comparaison function.     *     * SORT_ASC  is used to sort in ascending order     * SORT_DESC is used to sort in descending order     *     * @var        integer     * @access     private     * @since      0.5.0     */    var $_sort;    /**     * Associative array of the unselected item box attributes     *     * @var        array     * @access     private     * @since      0.4.0     */    var $_attributesUnselected;    /**     * Associative array of the selected item box attributes     *     * @var        array     * @access     private     * @since      0.4.0     */    var $_attributesSelected;    /**     * Associative array of the internal hidden box attributes     *     * @var        array     * @access     private     * @since      0.4.0     */    var $_attributesHidden;    /**     * Default Element template string     *     * @var        string     * @access     private     * @since      0.4.0     */    var $_elementTemplate = '{javascript}<table{class}><!-- BEGIN label_2 --><tr><th>{label_2}</th><!-- END label_2 --><!-- BEGIN label_3 --><th>&nbsp;</th><th>{label_3}</th></tr><!-- END label_3 --><tr>  <td valign="top">{unselected}</td>  <td align="center">{add}{remove}</td>  <td valign="top">{selected}</td></tr></table>';    /**     * Default Element stylesheet string     *     * @var        string     * @access     private     * @since      0.4.0     */    var $_elementCSS = '#{id}amsSelected {  font: 13.3px sans-serif;  background-color: #fff;  overflow: auto;  height: 14.3em;  width: 12em;  border-left:   1px solid #404040;  border-top:    1px solid #404040;  border-bottom: 1px solid #d4d0c8;  border-right:  1px solid #d4d0c8;}#{id}amsSelected label {  padding-right: 3px;  display: block;}';    /**     * Class constructor     *     * @param      string    $elementName   Dual Select name attribute     * @param      mixed     $elementLabel  Label(s) for the select boxes     * @param      mixed     $options       Data to be used to populate options     * @param      mixed     $attributes    Either a typical HTML attribute string or an associative array     * @param      integer   $sortOptions   Either SORT_ASC for auto ascending arrange,     *                                             SORT_DESC for auto descending arrange, or     *                                             NULL for no sort (append at end: default)     *     * @access     public     * @return     void     * @since      0.4.0     */    function HTML_QuickForm_advmultiselect($elementName = null, $elementLabel = null,                                           $options = null, $attributes = null,                                           $sortOptions = null)    {        $this->HTML_QuickForm_select($elementName, $elementLabel, $options, $attributes);        // add multiple selection attribute by default if missing        $this->updateAttributes(array('multiple' => 'multiple'));        if (is_null($this->getAttribute('size'))) {            // default size is ten item on each select box (left and right)            $this->updateAttributes(array('size' => 10));        }        if (is_null($this->getAttribute('style'))) {            // default width of each select box            $this->updateAttributes(array('style' => 'width:100px;'));        }        $this->_tableAttributes = $this->getAttribute('class');        if (is_null($this->_tableAttributes)) {            // default table layout            $attr = array('border' => '0', 'cellpadding' => '10', 'cellspacing' => '0');        } else {            $attr = array('class' => $this->_tableAttributes);            $this->_removeAttr('class', $this->_attributes);        }        $this->_tableAttributes = $this->_getAttrString($attr);        // set default add button attributes        $this->setButtonAttributes('add');        // set default remove button attributes        $this->setButtonAttributes('remove');        // set default move up button attributes        $this->setButtonAttributes('moveup');        // set default move up button attributes        $this->setButtonAttributes('movedown');        // defines javascript functions names        $this->setJsElement();        // set select boxes sort order (none by default)        if (isset($sortOptions)) {            $this->_sort = $sortOptions;        } else {            $this->_sort = false;        }    }    /**     * Sets the button attributes     *     * In <b>custom example 1</b>, the <i>add</i> and <i>remove</i> buttons have look set     * by the css class <i>inputCommand</i>. See especially lines 43-48 and 98-103.     *     * In <b>custom example 2</b>, the basic text <i>add</i> and <i>remove</i> buttons     * are now replaced by images. See lines 43-44.     *     * In <b>custom example 5</b>, we have ability to sort the selection list (on right side)     * by :     * <pre>     *  - <b>user-end</b>: with <i>Up</i> and <i>Down</i> buttons     *    (see lines 65,65,76 and 128-130)     *  - <b>programming</b>: with the QF element constructor $sort option     *    (see lines 34,36,38 and 59)     * </pre>     *     * @example    examples/qfams_custom_5.php                                      Custom example 5: source code     * @link       http://www.laurent-laville.org/img/qfams/screenshot/custom5.png  Custom example 5: screenshot     *     * @example    examples/qfams_custom_2.php                                      Custom example 2: source code     * @link       http://www.laurent-laville.org/img/qfams/screenshot/custom2.png  Custom example 2: screenshot     *     * @example    examples/qfams_custom_1.php                                      Custom example 1: source code     * @link       http://www.laurent-laville.org/img/qfams/screenshot/custom1.png  Custom example 1: screenshot     *     * @param      string    $button        Button identifier, either 'add', 'remove', 'moveup' or 'movedown'     * @param      mixed     $attributes    (optional) Either a typical HTML attribute string     *                                      or an associative array     * @access     public     * @since      0.4.0     */    function setButtonAttributes($button, $attributes = null)    {        if (!is_string($button)) {            return PEAR::raiseError('Argument 1 of advmultiselect::setButtonAttributes'                                   .' is not a string');        }        switch ($button) {            case 'add':                if (is_null($attributes)) {                    $this->_addButtonAttributes = array('name'  => 'add',                                                        'value' => ' >> ',                                                        'type'  => 'button'                                                       );                } else {                    $this->_updateAttrArray($this->_addButtonAttributes,                                            $this->_parseAttributes($attributes)                    );                }                break;            case 'remove':                if (is_null($attributes)) {                    $this->_removeButtonAttributes = array('name'  => 'remove',                                                           'value' => ' << ',                                                           'type'  => 'button'                                                          );                } else {                    $this->_updateAttrArray($this->_removeButtonAttributes,                                            $this->_parseAttributes($attributes)                    );                }                break;            case 'moveup':                if (is_null($attributes)) {                    $this->_upButtonAttributes = array('name'  => 'up',                                                       'value' => ' Up ',                                                       'type'  => 'button'                                                      );                } else {                    $this->_updateAttrArray($this->_upButtonAttributes,                                            $this->_parseAttributes($attributes)                    );                }                break;            case 'movedown':                if (is_null($attributes)) {                    $this->_downButtonAttributes = array('name'  => 'down',                                                         'value' => ' Down ',                                                         'type'  => 'button'                                                        );                } else {                    $this->_updateAttrArray($this->_downButtonAttributes,                                            $this->_parseAttributes($attributes)                    );                }                break;            default;                return PEAR::raiseError('Argument 1 of advmultiselect::setButtonAttributes'                                       .' has unexpected value');        }    }    /**     * Sets element template     *     * @param      string    $html          The HTML surrounding select boxes and buttons     *     * @access     public     * @return     void     * @since      0.4.0     */    function setElementTemplate($html)    {        $this->_elementTemplate = $html;    }    /**     * Sets JavaScript function name parts. Maybe usefull to avoid conflict names     *     * In <b>multiple example 1</b>, the javascript function prefix is set to not null     * (see line 60).     *     * @example    examples/qfams_multiple_1.php                                      Multiple example 1: source code     * @link       http://www.laurent-laville.org/img/qfams/screenshot/multiple1.png  Multiple example 1: screenshot     *     * @param      string    $pref          (optional) Prefix name

⌨️ 快捷键说明

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