/** * Helper method for renderElement * * @param HTML_QuickForm_element $element * @param bool Whether an element is required * @param string $required Error message associated with the element * @param string $error Label for ID * @access private * @see renderElement() * @return string Html for element */ private function _prepareTemplate(HTML_QuickForm_element $element, $required, $error) { $name = $element->getName(); $label = $element->getLabel(); $labelForId = $element->getAttribute('id'); $icon = $element->getIconToHtml(); if (is_array($label)) { $nameLabel = array_shift($label); } else { $nameLabel = $label; } $labelFor = !empty($labelForId) ? 'for="' . $labelForId . '"' : 'for="' . $element->getName() . '"'; if (isset($this->_templates[$name])) { // Custom template $html = str_replace('{label}', $nameLabel, $this->_templates[$name]); } else { $customElementTemplate = $this->getCustomElementTemplate(); if (empty($customElementTemplate)) { if (method_exists($element, 'getTemplate')) { $template = $element->getTemplate($this->getForm()->getLayout()); } else { $template = $this->getForm()->getDefaultElementTemplate(); } } else { $template = $customElementTemplate; } $html = str_replace('{label}', $nameLabel, $template); } $html = str_replace('{label-for}', $labelFor, $html); $html = str_replace('{icon}', $icon, $html); if ($required) { $html = str_replace('<!-- BEGIN required -->', '', $html); $html = str_replace('<!-- END required -->', '', $html); } else { $html = preg_replace("/([ \t\n\r]*)?<!-- BEGIN required -->.*<!-- END required -->([ \t\n\r]*)?/isU", '', $html); } if (isset($error)) { $html = str_replace('{error}', $error, $html); $html = str_replace('{error_class}', 'error has-error', $html); $html = str_replace('<!-- BEGIN error -->', '', $html); $html = str_replace('<!-- END error -->', '', $html); } else { $html = str_replace('{error_class}', '', $html); $html = preg_replace("/([ \t\n\r]*)?<!-- BEGIN error -->.*<!-- END error -->([ \t\n\r]*)?/isU", '', $html); } if (is_array($label)) { foreach ($label as $key => $text) { $key = is_int($key) ? $key + 2 : $key; $html = str_replace("{label_{$key}}", $text, $html); $html = str_replace("<!-- BEGIN label_{$key} -->", '', $html); $html = str_replace("<!-- END label_{$key} -->", '', $html); } } if (strpos($html, '{label_')) { $html = preg_replace('/\\s*<!-- BEGIN label_(\\S+) -->.*<!-- END label_\\1 -->\\s*/is', '', $html); } return $html; }
/** * Adds a dependency description to the question name * @param stdClass $item * @param HTML_QuickForm_element $element */ protected function add_item_dependencies($item, $element) { $allitems = $this->structure->get_items(); if ($item->dependitem && ($this->mode == self::MODE_EDIT || $this->mode == self::MODE_VIEW_TEMPLATE)) { if (isset($allitems[$item->dependitem])) { $dependitem = $allitems[$item->dependitem]; $name = $element->getLabel(); $name .= html_writer::span(' (' . format_string($dependitem->label) . '->' . $item->dependvalue . ')', 'feedback_depend'); $element->setLabel($name); } } }