preparation release
This commit is contained in:
commit
f5e3a62ee8
196 changed files with 64314 additions and 0 deletions
194
HTML/Template/Flexy/Factory.php
Normal file
194
HTML/Template/Flexy/Factory.php
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4: */
|
||||
// +----------------------------------------------------------------------+
|
||||
// | PHP Version 4 |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Copyright (c) 1997-2002 The PHP Group |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | This source file is subject to version 2.02 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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Authors: nobody <nobody@localhost> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Factory.php,v 1.9 2005/05/14 03:06:00 alan_k Exp $
|
||||
//
|
||||
// Factory tools for managing groups of HTML_Elements
|
||||
//
|
||||
|
||||
require_once 'HTML/Template/Flexy/Element.php';
|
||||
|
||||
class HTML_Template_Flexy_Factory {
|
||||
|
||||
|
||||
/**
|
||||
* fromArray - builds a set of elements from a key=>value array (eg. DO->toArray())
|
||||
* the second parameter is an optional HTML_Element array to merge it into.
|
||||
*
|
||||
*
|
||||
* @param array key(tag name) => value
|
||||
* @param optional array key(tag name) => HTML_Element
|
||||
*
|
||||
* @return array Array of HTML_Elements
|
||||
* @access public
|
||||
*/
|
||||
|
||||
function fromArray($ar,$ret=array())
|
||||
{
|
||||
|
||||
foreach($ar as $k=>$v) {
|
||||
if (is_array($v)) {
|
||||
$ret = HTML_Template_Flexy_Factory::fromArrayPrefixed($k,$v,$ret);
|
||||
}
|
||||
|
||||
|
||||
if (!isset($ret[$k])) {
|
||||
$ret[$k] = new HTML_Template_Flexy_Element();
|
||||
}
|
||||
$ret[$k]->setValue($v);
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* fromArrayPrefixed - takes a multi dimensional array, and builds the 'xxx[sss][xx]' => value
|
||||
*
|
||||
* @param array key(tag name) => value
|
||||
* @param array key(tag name) => value
|
||||
* @param optional array key(tag name) => HTML_Element
|
||||
*
|
||||
* @return array Array of HTML_Elements
|
||||
* @access public
|
||||
*/
|
||||
|
||||
function fromArrayPrefixed($prefix, $ar,$ret=array())
|
||||
{
|
||||
|
||||
foreach($ar as $k=>$v) {
|
||||
if (is_array($v)) {
|
||||
$ret = HTML_Template_Flexy_Factory::fromArrayPrefixed($prefix.'['.$k.']',$v,$ret);
|
||||
if (!isset($ret[$prefix.'['.$k.'][]'])) {
|
||||
$ret[$prefix.'['.$k.'][]'] = new HTML_Template_Flexy_Element();
|
||||
}
|
||||
$ret[$prefix.'['.$k.'][]']->setValue($v);
|
||||
}
|
||||
|
||||
if (!isset($ret[$prefix.'['.$k.']'])) {
|
||||
$ret[$prefix.'['.$k.']'] = new HTML_Template_Flexy_Element();
|
||||
}
|
||||
$ret[$prefix.'['.$k.']']->setValue($v);
|
||||
|
||||
|
||||
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* setErrors - sets the suffix of an element to a value..
|
||||
*
|
||||
* HTML_Element_Factory::setErrors($elements,array('name','not long enough'));
|
||||
*
|
||||
* @depreciated - this is really outside the scope of Factory - it should be
|
||||
* seperated into a rendering toolkit of some kind.
|
||||
|
||||
* @param array of HTML_Element's
|
||||
* @param array key(tag name) => error
|
||||
* @param string sprintf error format..
|
||||
*
|
||||
* @return array Array of HTML_Elements
|
||||
* @access public
|
||||
*/
|
||||
|
||||
function &setErrors(&$ret,$set,$format='<span class="error">%s</span>')
|
||||
{
|
||||
if (empty($ret) || !is_array($ret)) {
|
||||
$ret = array();
|
||||
}
|
||||
// check what you send this.. !!!
|
||||
if (!is_array($set)) {
|
||||
return HTML_Template_Flexy::raiseError(
|
||||
'invalid arguments "$set" (should be an array) sent to HTML_Template_Flexy_Factory::setErrors',
|
||||
0, HTML_TEMPLATE_FLEXY_ERROR_DIE);
|
||||
}
|
||||
foreach($set as $k=>$v) {
|
||||
if (!$v) {
|
||||
continue;
|
||||
}
|
||||
if (!isset($ret[$k])) {
|
||||
$ret[$k] = new HTML_Template_Flexy_Element;
|
||||
}
|
||||
$ret[$k]->suffix .= sprintf($format,$v);
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* setRequired - sets the prefix of an element to a value..
|
||||
*
|
||||
* HTML_Element_Factory::setRequired($elements,array('name',true));
|
||||
*
|
||||
* @depreciated - this is really outside the scope of Factory - it should be
|
||||
* seperated into a rendering toolkit
|
||||
*
|
||||
* @param array of HTML_Element's
|
||||
* @param array key(tag name) => error
|
||||
* @param string sprintf error format..
|
||||
*
|
||||
*
|
||||
* @return array Array of HTML_Elements
|
||||
* @access public
|
||||
*/
|
||||
|
||||
function &setRequired(&$ret,$set,$format='<span class="required">*</span>')
|
||||
{
|
||||
|
||||
|
||||
if (empty($ret) || !is_array($ret)) {
|
||||
$ret = array();
|
||||
}
|
||||
foreach($set as $k=>$v) {
|
||||
if (!$v) {
|
||||
continue;
|
||||
}
|
||||
if (!isset($ret[$k])) {
|
||||
$ret[$k] = new HTML_Template_Flexy_Element();
|
||||
}
|
||||
$ret[$k]->prefix .= sprintf($format,$v);
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* freeze - freeze's an element. - just copies the value to the override.
|
||||
* this probably needs more thought.. - it would probably need to merge
|
||||
* the full tag info with types, to be usefull..
|
||||
*
|
||||
* $ar = HTML_Element_Factory::freeze($ar);
|
||||
*
|
||||
* @depreciated - this is really outside the scope of Factory - it should be
|
||||
* seperated into a rendering toolkit
|
||||
*
|
||||
*
|
||||
* @param array (return by referencekey(tag name) => HTML_Element
|
||||
*
|
||||
* @return array Array of HTML_Elements
|
||||
* @access public
|
||||
*/
|
||||
function freeze(&$array) {
|
||||
|
||||
foreach($array as $k=>$v) {
|
||||
$array[$k]->override = $array[$k]->value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue