Author: Guido Vega 2007-09-18 20:58:35 Committer: Guido Vega 2007-09-18 20:58:35 Parent: b67c682aaf893b42a59bbefa6f1603776ec0cfda (a simple commit) Branch: formslib Follows: MOODLE_181 Precedes: MDL-11318 Allow delevelopers to customise form element's template and include extra function for simple element manipulation ------------------------------- lib/formslib.php ------------------------------- index a9a91d1..514dd6e 100644 @@ -1393,6 +1393,21 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ */ var $_showAdvanced; + /** + * A wrapper template for elemets + * @var string + * @access private + */ + var $_elementTemplateWrap; + + /** + * Array containing the templates wraps for elements + * @var array + * @access private + */ + var $_templateWraps = array(); + + function MoodleQuickForm_Renderer(){ // switch next two lines for ol li containers for form items. // $this->_elementTemplates=array('default'=>"\n\t\t".'
  • {error}
    {element}
  • '); @@ -1403,6 +1418,8 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ 'static'=>"\n\t\t".'
    {label}{req}{advancedimg} {help}
    {error}
    {element}
    '); + // Clear the _elementTemplate as we never use it (we use _elementTemplates[default]) + $this->_elementTemplate = null; parent::HTML_QuickForm_Renderer_Tableless(); } @@ -1477,7 +1494,13 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ } //adding stuff to place holders in template - if (method_exists($element, 'getElementTemplateType')){ + if (isset($this->_templates[$element->getName()])) { + $html = $this->_templates[$element->getName()]; + } + else if (isset($this->_elementTemplate)) { + $html = $this->_elementTemplate; + } + else if (method_exists($element, 'getElementTemplateType')){ $html = $this->_elementTemplates[$element->getElementTemplateType()]; }else{ $html = $this->_elementTemplates['default']; @@ -1506,6 +1529,14 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ } + // Add the element wrappers + if (isset($this->_templateWraps[$element->getName()])) { + $html = str_replace('{content}', $html, $this->_templateWraps[$element->getName()]); + } + else if (isset($this->_elementTemplateWrap)) { + $html = str_replace('{content}', $html, $this->_elementTemplateWrap); + } + $this->_templates[$element->getName()] = $html; parent::renderElement($element, $required, $error); @@ -1584,6 +1615,24 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ function getStopFieldsetElements(){ return $this->_stopFieldsetElements; } + + + /** + * Sets element template wrap + * + * @param string The HTML surrounding an element + * @param string (optional) Name of the element to apply template wrap for + * @access public + * @return void + */ + function setElementTemplateWrap($html, $element = null) + { + if (is_null($element)) { + $this->_elementTemplateWrap = $html; + } else { + $this->_templateWraps[$element] = $html; + } + } }