widget.php
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 431 行
PHP
431 行
<?php//// +---------------------------------------------------------------------------+// | PEAR :: XML :: Transformer :: Widget Namespace Handler |// +---------------------------------------------------------------------------+// | Copyright (c) 2002-2004 Sebastian Bergmann <sb@sebastian-bergmann.de> and |// | Kristian K鰄ntopp <kris@koehntopp.de>. |// +---------------------------------------------------------------------------+// | This source file is subject to version 3.00 of the PHP License, |// | that is available at 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 world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +---------------------------------------------------------------------------+//// $Id: Widget.php,v 1.11 2004/11/19 07:18:57 sebastian Exp $//require_once 'XML/Transformer/Namespace.php';/** * Handler for the Widget Namespace. * * Implements <widget:obox /> similar to http://docs.roxen.com/roxen/2.2/creator/text/obox.tag. * Implements <widget:oboxtitle> as counterpart to <obox><title>..</title></obox> in Roxen. * * @author Sebastian Bergmann <sb@sebastian-bergmann.de> * @author Kristian K鰄ntopp <kris@koehntopp.de> * @copyright Copyright © 2002-2004 Sebastian Bergmann <sb@sebastian-bergmann.de> and Kristian K鰄ntopp <kris@koehntopp.de> * @license http://www.php.net/license/3_0.txt The PHP License, Version 3.0 * @category XML * @package XML_Transformer */class XML_Transformer_Namespace_Widget extends XML_Transformer_Namespace { // {{{ Members /** * @var boolean * @access public */ var $defaultNamespacePrefix = 'widget'; /** * @var array * @access private */ var $_oboxAttributes = array(); /** * @var string * @access private */ var $_oboxUnitPngPath = ""; /** * @var string * @access private */ var $_oboxUnitPngURL = "/cache/unit.png"; // }}} // {{{ function _makeUnitPngPath() /** * Create the filesystem pathname for the unitPng * * @return void * @access private */ function _makeUnitPngPath() { $this->_oboxUnitPngPath = $_SERVER['DOCUMENT_ROOT'] . "/" . $this->_oboxUnitPngURL; return; } // }}} // {{{ function _unitPng() /** * Create the transparent unitPng and return its URL * * @return string * @access private */ function _unitpng() { if (file_exists($this->_oboxUnitPngPath)) { return $this->_oboxUnitPngURL; } $im = ImageCreate(1, 1); $trans = ImageColorAllocate($im, 128, 128, 128); ImageColorTransparent($im, $trans); ImageFilledRectangle($im, 0,0,1,1,$trans); $this->_makeUnitPngPath(); ImagePNG($im, $this->_oboxUnitPngPath); ImageDestroy($im); return $this->_oboxUnitURL; } // }}} // {{{ function _imagePlaceholder($h = FALSE, $w = FALSE) /** * Create a placeholder image of $h pixel height and $w pixel width * * @param integer * @param integer * @return string * @access private */ function _imagePlaceholder($h = FALSE, $w = FALSE) { if ($h === FALSE) { $h = isset($this->_oboxAttributes['outlinewidth']) ? $this->_oboxAttributes['outlinewidth'] : 1; } if ($w === FALSE) { $w = $h; } return sprintf( '<img src="%s" alt="" width="%s" height="%s" />', $this->_unitpng(), $w, $h ); } // }}} // {{{ function _oboxGetAttr($name) /** * Return value of $name suitable for attribute printing (name='value') * or an empty string ('') * * @param string * @return string * @access private */ function _oboxGetAttr($name) { if (isset($this->_oboxAttributes[$name])) { return sprintf( " %s='%s'", $name, $this->_oboxAttributes[$name] ); } else { return ''; } } // }}} // {{{ function _oboxGetAttrAs($name, $attributes) /** * Return value of $name suitable as printable attr $attr (attr='valueofname') * or an empty string ('') * * @param string * @param string * @return string * @access private */ function _oboxGetAttrAs($name, $attributes) { if (isset($this->_oboxAttributes[$name])) { return sprintf( " %s='%s'", $attributes, $this->_oboxAttributes[$name] ); } else { return ''; } } // }}} // {{{ function _oboxGetValueWithDefault($name, $def) /** * Return value of $name as value or $def, if empty. * * @param string * @param string * @return string * @access private */ function _oboxGetValueWithDefault($name, $def) { if (isset($this->_oboxAttributes[$name])) { return $this->_oboxAttributes[$name]; } else { return $def; } } // }}} // {{{ function _titlebox() /** * Create the obox titlebox. Ugly. * * @return string * @access private */ function _titlebox() { if (!isset($this->_oboxAttributes['title'])) { return sprintf( " <tr>\n <td colspan='5'%s>%s</td>\n </tr>\n", $this->_oboxGetAttrAs("outlinecolor", "bgcolor"), $this->_imagePlaceholder() ); } $left = $this->_oboxGetValueWithDefault('left', 20); $right = $this->_oboxGetValueWithDefault('right', 20); $leftskip = $this->_oboxGetValueWithDefault('leftskip', 10); $rightskip = $this->_oboxGetValueWithDefault('rightskip', 10); if (!isset($this->_oboxAttributes['titlecolor']) && isset($this->_oboxAttributes['bgcolor'])) { $this->_oboxAttributes['titlecolor'] = $this->_oboxAttributes['bgcolor']; } $r .= sprintf( " <tr>\n <td>%s</td>\n <td>%s</td>\n <td nowrap='nowrap' rowspan='3'%s%s%s>%s%s%s</td>\n <td>%s</td>\n <td>%s</td>\n </tr>\n", $this->_imagePlaceholder(1,1), $this->_imagePlaceholder(1, $left), $this->_oboxGetAttrAs('titlealign', 'align'), $this->_oboxGetAttrAs('titlevalign', 'valign'), $this->_oboxGetAttrAs('titlecolor', 'bgcolor'), $this->_imagePlaceholder(1, $leftskip), $this->_oboxAttributes['title'], $this->_imagePlaceholder(1, $rightskip), $this->_imagePlaceholder(1, $right), $this->_imagePlaceholder(1,1) ); $r .= sprintf( " <tr%s>\n <td colspan='2' height='1'%s>%s</td>\n <td colspan='2' height='1'%s>%s</td>\n </tr>\n", $this->_oboxGetAttrAs("bgcolor", "bgcolor"), $this->_oboxGetAttrAs("outlinecolor", "bgcolor"), $this->_imagePlaceholder($this->_oboxGetValueWithDefault("outlinewidth", 1), 1), $this->_oboxGetAttrAs("outlinecolor", "bgcolor"), $this->_imagePlaceholder($this->_oboxGetValueWithDefault("outlinewidth", 1), 1) ); $r .= sprintf( " <tr%s>\n <td%s>%s</td>\n <td>%s</td>\n <td>%s</td>\n <td%s>%s</td>\n </tr>\n", $this->_oboxGetAttrAs("bgcolor", "bgcolor"), $this->_oboxGetAttrAs('outlinecolor', 'bgcolor'), $this->_imagePlaceholder(1, $this->_oboxGetValueWithDefault("outlinewidth", 1)), $this->_imagePlaceholder(1, 1), $this->_imagePlaceholder(1, 1), $this->_oboxGetAttrAs('outlinecolor', 'bgcolor'), $this->_imagePlaceholder(1, $this->_oboxGetValueWithDefault("outlinewidth", 1)) ); return $r; } // }}} // {{{ function _box($cdata) /** * Create the actual obox. * * @param string * @return string * @access private */ function _box($cdata) { /* Outer container */ $r = sprintf( "<table border='0' cellpadding='0' cellspacing='0'%s%s>\n", $this->_oboxGetAttr("align"), $this->_oboxGetAttr("width") ); /* Title */ $r .= $this->_titlebox(); /* Content container */ $r .= sprintf( " <tr%s>\n", $this->_oboxGetAttr("bgcolor") ); $r .= sprintf( " <td%s%s>%s</td>\n <td colspan='3'>\n", $this->_oboxGetAttrAs("outlinewidth", "width"), $this->_oboxGetAttrAs("outlinecolor", "bgcolor"), $this->_imagePlaceholder(1, $this->_oboxGetValueWithDefault("outlinewidth", 1)) ); $r .= sprintf( "<table %s%s border='0' cellspacing='0' cellpadding='%s'><tr><td%s%s>%s</td></tr></table>\n </td>\n", $this->_oboxGetAttrAs("contentwidth", "width"), $this->_oboxGetAttrAs("contentheight", "height"), $this->_oboxGetValueWithDefault("contentpadding", 0), $this->_oboxGetAttrAs("contentalign", "align"), $this->_oboxGetAttrAs("contentvalign", "valign"), $cdata ); $r .= sprintf( " <td%s%s>%s</td>\n </tr>\n", $this->_oboxGetAttrAs("outlinewidth", "width"), $this->_oboxGetAttrAs("outlinecolor", "bgcolor"), $this->_imagePlaceholder(1, $this->_oboxGetValueWithDefault("outlinewidth", 1)) ); /* Footer line */ $r .= sprintf( " <tr>\n <td colspan='5'%s>%s</td>\n </tr>\n</table>\n", $this->_oboxGetAttrAs("outlinecolor", "bgcolor"), $this->_imagePlaceholder() ); return $r; } // }}} // {{{ function start_obox($attributes) /** * <obox /> -- This container creates an outlined box. * * The outer Table is controlled by * align=... * width=... * * The title is controlled by * title=... * titlealign=... * titlevalign=... * titlecolor=... * * The outline is controlled by * outlinecolor=... * outlinewidth=... * left=... * leftskip=... * right=... * rightskip=... * * The inner table cell is controlled by * contentalign=... * contentvalign=... * contentpadding=... * contentwidth=... * contentheight=... * bgcolor=... * * @param string * @return string * @access public */ function start_obox($attributes) { $this->_oboxAttributes = $attributes; return ''; } // }}} // {{{ function end_obox($cdata) /** * @param string * @return string * @access public */ function end_obox($cdata) { return $this->_box($cdata); } // }}} // {{{ function start_oboxtitle($attributes) /** * <oboxtitle /> -- Alternate method to set the obox title * * align=... * valign=... * * @param string * @return string * @access public */ function start_oboxtitle($attributes) { if (isset($attributes['align'])) { $this->_oboxAttributes['titlealign'] = $attributes['align']; } if (isset($attributes['valign'])) { $this->_oboxAttributes['titlevalign'] = $attributes['valign']; } if (isset($attributes['bgcolor'])) { $this->_oboxAttributes['titlecolor'] = $attributes['bgcolor']; } return ''; } // }}} // {{{ function end_oboxtitle($cdata) /** * @param string * @return string * @access public */ function end_oboxtitle($cdata) { $this->_oboxAttributes['title'] = $cdata; return ''; } // }}}}/* * vim600: et sw=2 ts=2 fdm=marker * vim<600: et sw=2 ts=2 */?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?