'two',
4 => 'four',
6 => 'six',
8 => 'eight',
12 => 'twelve',
20 => 'medium',
30 => 'big',
45 => 'huge',
);
/**
* Constructor
*
* @access public
*/ function __construct() {
$template = CRM_Core_Smarty::singleton();
parent::__construct($template);
}
/**
* Static instance provider.
*
* Method providing static instance of as in Singleton pattern.
*/
static function &singleton() {
if (!isset(self::$_singleton)) {
self::$_singleton = new CRM_Core_Form_Renderer();
}
return self::$_singleton;
}
/**
* Creates an array representing an element containing
* the key for storing this. We allow the parent to do most of the
* work, but then we add some CiviCRM specific enhancements to
* make the html compliant with our css etc
*
* @access private
*
* @param object An HTML_QuickForm_element object
* @param bool Whether an element is required
* @param string Error associated with the element
*
* @return array
*/
function _elementToArray(&$element, $required, $error) {
self::updateAttributes($element, $required, $error);
$el = parent::_elementToArray($element, $required, $error);
// add label html
if (!empty($el['label'])) {
$id = $element->getAttribute('id');
if (!empty($id)) {
$el['label'] = '';
}
else {
$el['label'] = "";
}
}
return $el;
}
/**
* Update the attributes of this element and add a few CiviCRM
* based attributes so we can style this form element better
*
* @access private
*
* @param object An HTML_QuickForm_element object
* @param bool Whether an element is required
* @param string Error associated with the element
*
* @return array
* @static
*/
static function updateAttributes(&$element, $required, $error) {
// lets create an id for all input elements, so we can generate nice label tags
// to make it nice and clean, we'll just use the elementName if it is non null
$attributes = array();
if (!$element->getAttribute('id')) {
$name = $element->getAttribute('name');
if ($name) {
$attributes['id'] = str_replace(array(']', '['),
array('', '_'),
$name
);
}
}
$class = $element->getAttribute('class');
$type = $element->getType();
if (empty($class)) {
$class = 'form-' . $type;
if ($type == 'text') {
$size = $element->getAttribute('size');
if (!empty($size)) {
if (array_key_exists($size, self::$_sizeMapper)) {
$class = $class . ' ' . self::$_sizeMapper[$size];
}
}
}
}
if ($required) {
$class .= ' required';
}
if ($error) {
$class .= ' error';
}
$attributes['class'] = $class;
$element->updateAttributes($attributes);
}
}
// end CRM_Core_Form_Renderer