preparation release
This commit is contained in:
commit
f5e3a62ee8
196 changed files with 64314 additions and 0 deletions
175
HTML/Template/Flexy/Element/Xul.php
Normal file
175
HTML/Template/Flexy/Element/Xul.php
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4: */
|
||||
// +----------------------------------------------------------------------+
|
||||
// | PHP Version 4 |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | This source file is subject to version 2.0 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at through the world-wide-web at |
|
||||
// | http://www.php.net/license/2_02.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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Author: Alan Knowles <alan@akbkhome.com> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Xul.php,v 1.6 2005/11/09 08:29:13 alan_k Exp $
|
||||
|
||||
/**
|
||||
* Extension HTML Element builder and render to provide features for Xul
|
||||
*
|
||||
* All methods are static, and expect the first argument to be a HTML_Template_Flexy_Element
|
||||
*
|
||||
* @author Alan Knowles <alan@akbkhome.com>
|
||||
*/
|
||||
class HTML_Template_Flexy_Element_Xul {
|
||||
|
||||
|
||||
/**
|
||||
* Utility function to set values for common tag types.
|
||||
* @param HTML_Template_Flexy_Element $element override settings from another element.
|
||||
* @param mixed $value value to use.
|
||||
* @access public
|
||||
*/
|
||||
|
||||
function setValue(&$element,$value) {
|
||||
// store the value in all situations
|
||||
$element->value = $value;
|
||||
$tag = $element->tag;
|
||||
if (strpos($tag,':') !== false) {
|
||||
$bits = explode(':',$tag);
|
||||
$tag = $bits[1];
|
||||
}
|
||||
switch ($tag) {
|
||||
case 'menulist':
|
||||
|
||||
if (!is_array($value)) {
|
||||
$value = array($value);
|
||||
}
|
||||
|
||||
// is the first childa menupopup
|
||||
if (!isset($element->children[0])) {
|
||||
$element->children[0] = HTML_Template_Flexy_Element('menupopup');
|
||||
}
|
||||
if (!is_a($element->children[0],'HTML_Template_Flexy_Element')) {
|
||||
// oh sh*t big problem!
|
||||
return HTML_Template_Flexy::raiseError(
|
||||
__CLASS__ . '::setValue expected a Flexy Element as the child of a menuitem but got something else! '.
|
||||
print_r($element,true),
|
||||
HTML_TEMPLATE_FLEXY_ERROR_SYNTAX,
|
||||
HTML_TEMPLATE_FLEXY_ERROR_DIE);
|
||||
}
|
||||
|
||||
|
||||
// its setting the default value..
|
||||
// if the children havent been built we dont really care?
|
||||
// it will be done at the merge stage anyway..
|
||||
|
||||
foreach(array_keys($element->children[0]->children) as $i) {
|
||||
$child = &$element->children[0]->children[$i];
|
||||
|
||||
if (is_string($child)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// standard option value...
|
||||
//echo "testing {$child->attributes['value']} against ". print_r($value,true)."\n";
|
||||
// does the value exist and match..
|
||||
|
||||
if (isset($child->attributes['value'])
|
||||
&& in_array((string) $child->attributes['value'], $value))
|
||||
{
|
||||
// echo "MATCH!\n";
|
||||
$child->attributes['selected'] = 'true';
|
||||
continue;
|
||||
}
|
||||
|
||||
// otherwise..
|
||||
$child->attributes['selected'] = 'false';
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
case 'textbox':
|
||||
$this->attributes['value'] = $value;
|
||||
return;
|
||||
|
||||
case 'checkbox':
|
||||
if (!isset($this->attributes['value'])) {
|
||||
return; // should be an error condition really...
|
||||
}
|
||||
$this->attributes['checked'] = ($value == $this->attributes['value']) ? 'true' : 'false';
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/**
|
||||
* Utility function equivilant to HTML_Select - loadArray ** For xul:menulist.
|
||||
* but using
|
||||
* key=>value maps
|
||||
* <option value="key">Value</option>
|
||||
* Key=key (eg. both the same) maps to
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param HTML_Element $from override settings from another element.
|
||||
* @param HTML_Element $noValue ignore the key part of the array
|
||||
* @access public
|
||||
*/
|
||||
|
||||
function setOptions(&$element, $array,$noValue=false) {
|
||||
if (!is_array($array)) {
|
||||
$element->children = array();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$tag = '';
|
||||
$namespace = '';
|
||||
if (false !== strpos($element->tag, ':')) {
|
||||
|
||||
$bits = explode(':',$element->tag);
|
||||
$namespace = $bits[0] . ':';
|
||||
$tag = strtolower($bits[1]);
|
||||
|
||||
}
|
||||
if (!isset($element->children[0])) {
|
||||
$element->children[0] = new HTML_Template_Flexy_Element('menupopup');
|
||||
}
|
||||
if (!is_a($element->children[0],'HTML_Template_Flexy_Element')) {
|
||||
// oh sh*t big problem!
|
||||
return HTML_Template_Flexy::raiseError(
|
||||
__CLASS__ . '::setValue expected a menupopup as the child of a menuitem?',
|
||||
HTML_TEMPLATE_FLEXY_ERROR_SYNTAX,
|
||||
HTML_TEMPLATE_FLEXY_ERROR_DIE);
|
||||
}
|
||||
foreach($array as $k=>$v) {
|
||||
|
||||
$atts=array();
|
||||
if (($k !== $v) && !$noValue) {
|
||||
$atts = array('value'=>$k);
|
||||
} else {
|
||||
$atts = array('value'=>$v);
|
||||
}
|
||||
$atts['label'] = htmlspecialchars($v);
|
||||
$atts['/'] = true;
|
||||
$add = new HTML_Template_Flexy_Element($namespace . 'menuitem',$atts);
|
||||
$element->children[0]->children[] = $add;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} // end class HTML_Template_Flexy_Element
|
||||
Loading…
Add table
Add a link
Reference in a new issue