generator.php
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 561 行 · 第 1/2 页
PHP
561 行
<?php
/**
* The HTML_Progress_Generator class provides an easy way to
* dynamic build Progress bar, show a preview,
* and save php/css code for a later reuse.
*
* 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_Progress
* @subpackage Progress_UI
* @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: generator.php,v 1.8 2005/07/25 13:06:58 farell Exp $
* @link http://pear.php.net/package/HTML_Progress
*/
require_once 'HTML/QuickForm/Controller.php';
require_once 'HTML/QuickForm/Action/Submit.php';
require_once 'HTML/QuickForm/Action/Jump.php';
require_once 'HTML/QuickForm/Action/Display.php';
require_once 'HTML/QuickForm/Action/Direct.php';
require_once 'HTML/Progress.php';
require_once 'HTML/Progress/generator/pages.php';
/**
* The HTML_Progress_Generator class provides an easy way to
* dynamic build Progress bar, show a preview,
* and save php/css code for a later reuse.
*
* 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_Progress
* @subpackage Progress_UI
* @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: 1.2.2
* @link http://pear.php.net/package/HTML_Progress
*/
class HTML_Progress_Generator extends HTML_QuickForm_Controller
{
/**#@+
* Attributes of wizard form.
*
* @var mixed
* @since 1.1
* @access private
*/
var $_buttonBack = '<< Back';
var $_buttonNext = 'Next >>';
var $_buttonCancel = 'Cancel';
var $_buttonReset = 'Reset';
var $_buttonApply = 'Preview';
var $_buttonSave = 'Save';
var $_buttonAttr = array('style'=>'width:80px;');
/**#@-*/
/**
* Tabs element of wizard form.
*
* @var array
* @since 1.1
* @access private
*/
var $_tabs;
/**
* The progress object renders into this generator.
*
* @var object
* @since 1.2.0
* @access private
*/
var $_progress;
/**
* Constructor Summary
*
* o Creates a standard progress bar generator wizard.
* <code>
* $generator = new HTML_Progress_Generator();
* </code>
*
* o Creates a progress bar generator wizard with
* customized actions: progress bar preview, form rendering, buttons manager
* <code>
* $controllerName = 'myPrivateGenerator';
* $attributes = array(
* 'preview' => name of a HTML_QuickForm_Action instance
* (default 'ActionPreview', see 'HTML/Progress/generator/preview.php')
* 'display' => name of a HTML_QuickForm_Action_Display instance
* (default 'ActionDisplay', see 'HTML/Progress/generator/default.php')
* 'process' => name of a HTML_QuickForm_Action instance
* (default 'ActionProcess', see 'HTML/Progress/generator/process.php')
* );
* $generator = new HTML_Progress_Generator($controllerName, $attributes);
* </code>
*
* @param string $controllerName(optional) Name of generator wizard (QuickForm)
* @param array $attributes (optional) List of renderer options
* @param array $errorPrefs (optional) Hash of params to configure error handler
*
* @since 1.1
* @access public
* @throws HTML_PROGRESS_ERROR_INVALID_INPUT
*/
function HTML_Progress_Generator($controllerName = 'ProgressGenerator', $attributes = array(), $errorPrefs = array())
{
$this->_progress = new HTML_Progress($errorPrefs);
if (!is_string($controllerName)) {
return HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT, 'exception',
array('var' => '$controllerName',
'was' => gettype($controllerName),
'expected' => 'string',
'paramnum' => 1));
} elseif (!is_array($attributes)) {
return HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT, 'exception',
array('var' => '$attributes',
'was' => gettype($attributes),
'expected' => 'array',
'paramnum' => 2));
}
parent::HTML_QuickForm_Controller($controllerName);
// Check if Action(s) are customized
$ActionPreview = isset($attributes['preview'])? $attributes['preview']: 'ActionPreview';
$ActionDisplay = isset($attributes['display'])? $attributes['display']: 'ActionDisplay';
$ActionProcess = isset($attributes['process'])? $attributes['process']: 'ActionProcess';
$this->_tabs = array(
0 => array('page1', 'Property1', 'Progress'),
1 => array('page2', 'Property2', 'Cell'),
2 => array('page3', 'Property3', 'Border'),
3 => array('page4', 'Property4', 'String'),
4 => array('page5', 'Preview', 'Preview'),
5 => array('page6', 'Save', 'Save')
);
foreach ($this->_tabs as $tab) {
list($pageName, $className, $tabName) = $tab;
// Add each tab of the wizard
$this->addPage(new $className($pageName));
// These actions manage going directly to the pages with the same name
$this->addAction($pageName, new HTML_QuickForm_Action_Direct());
}
$preview =& $this->getPage('page5');
// The customized actions
if (!class_exists($ActionPreview)) {
include_once 'HTML/Progress/generator/preview.php';
$ActionPreview = 'ActionPreview';
}
if (!class_exists($ActionDisplay)) {
include_once 'HTML/Progress/generator/default.php';
$ActionDisplay = 'ActionDisplay';
}
if (!class_exists($ActionProcess)) {
include_once 'HTML/Progress/generator/process.php';
$ActionProcess = 'ActionProcess';
}
$preview->addAction('apply', new $ActionPreview());
$this->addAction('display', new $ActionDisplay());
$this->addAction('process', new $ActionProcess());
$this->addAction('cancel', new $ActionProcess());
// set ProgressBar default values on first run
$sess = $this->container();
$defaults = $sess['defaults'];
if (count($sess['defaults']) == 0) {
$this->setDefaults(array(
'progressclass' => 'progressBar',
'shape' => HTML_PROGRESS_BAR_HORIZONTAL,
'way' => 'natural',
'autosize' => true,
'progresssize' => array('bgcolor' => '#FFFFFF'),
'rAnimSpeed' => 100,
'borderpainted' => false,
'borderclass' => 'progressBarBorder',
'borderstyle' => array('style' => 'solid', 'width' => 0, 'color' => '#000000'),
'cellid' => 'progressCell%01s',
'cellclass' => 'cell',
'cellvalue' => array('min' => 0, 'max' => 100, 'inc' => 1),
'cellsize' => array('width' => 15, 'height' => 20, 'spacing' => 2, 'count' => 10),
'cellcolor' => array('active' => '#006600', 'inactive' => '#CCCCCC'),
'cellfont' => array('family' => 'Courier, Verdana', 'size' => 8, 'color' => '#000000'),
'stringpainted' => false,
'stringid' => 'installationProgress',
'stringsize' => array('width' => 50, 'height' => '', 'bgcolor' => '#FFFFFF'),
'stringvalign' => 'right',
'stringalign' => 'right',
'stringfont' => array('family' => 'Verdana, Arial, Helvetica, sans-serif', 'size' => 12, 'color' => '#000000'),
'strings' => implode(";\n", array(
0 => '10,Hello world',
1 => '20,Welcome',
2 => '30,to',
3 => '40,HTML_Progress v1',
4 => '60,by',
5 => '70,Laurent Laville',
6 => '100,Have a nice day !'
)),
'phpcss' => array('P'=>true)
));
}
}
/**
* Adds all necessary tabs to the given page object.
*
* @param object $page Page where to put the button
* @param mixed $attributes (optional) Either a typical HTML attribute string
* or an associative array.
* @return void
* @since 1.1
* @access public
* @throws HTML_PROGRESS_ERROR_INVALID_INPUT
*/
function createTabs(&$page, $attributes = null)
{
if (!is_a($page, 'HTML_QuickForm_Page')) {
return HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT, 'exception',
array('var' => '$page',
'was' => gettype($page),
'expected' => 'HTML_QuickForm_Page object',
'paramnum' => 1));
} elseif (!is_array($attributes) && !is_string($attributes) && !is_null($attributes)) {
return HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT, 'exception',
array('var' => '$attributes',
'was' => gettype($attributes),
'expected' => 'array | string',
'paramnum' => 2));
}
$here = $attributes = HTML_Common::_parseAttributes($attributes);
$here['disabled'] = 'disabled';
$pageName = $page->getAttribute('name');
$jump = array();
foreach ($this->_tabs as $tab) {
list($event, $cls, $label) = $tab;
$attrs = ($pageName == $event) ? $here : $attributes;
$jump[] =& $page->createElement('submit', $page->getButtonName($event), $label, HTML_Common::_getAttrString($attrs));
}
$page->addGroup($jump, 'tabs', '', ' ', false);
}
/**
* Adds all necessary buttons to the given page object.
*
* @param object $page Page where to put the button
* @param array $buttons Key/label of each button/event to handle
* @param mixed $attributes (optional) Either a typical HTML attribute string
* or an associative array.
* @return void
* @since 1.1
* @access public
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?