function smarty_function_formField(array $params, Smarty_Internal_Template $template) { /** @var CM_Frontend_Render $render */ $render = $template->smarty->getTemplateVars('render'); $cssClasses = array(); if (isset($params['class'])) { $cssClasses[] = (string) $params['class']; unset($params['class']); } $label = null; if (isset($params['label'])) { $label = (string) $params['label']; } $input = null; $fieldName = null; if (isset($params['prepend'])) { $input .= (string) $params['prepend']; } /** @var CM_Frontend_ViewResponse|null $viewResponse */ $viewResponse = null; if (isset($params['name'])) { $fieldName = (string) $params['name']; $cssClasses[] = $fieldName; /** @var CM_Form_Abstract $form */ $form = $render->getGlobalResponse()->getClosestViewResponse('CM_Form_Abstract')->getView(); if (null === $form) { throw new CM_Exception_Invalid('Cannot find parent `CM_Form_Abstract` view response. Named {formField} can be only rendered within form view.'); } $formField = $form->getField($fieldName); $renderAdapter = new CM_RenderAdapter_FormField($render, $formField); $input .= $renderAdapter->fetch(CM_Params::factory($params, false), $viewResponse); if (null !== $formField->getValue()) { $cssClasses[] = 'prefilled'; } } if (isset($params['append'])) { $input .= (string) $params['append']; } $html = '<div class="formField clearfix ' . join(' ', $cssClasses) . '">'; if ($label) { $html .= '<label'; if ($viewResponse) { $html .= ' for="' . $viewResponse->getAutoIdTagged('input') . '"'; } $html .= '>' . $label . '</label>'; } if ($input) { $html .= '<div class="input">'; $html .= $input; $html .= '</div>'; } $html .= '</div>'; return $html; }
public function testRenderDateTime() { $value = new DateTime('2016-05-31T12:30:00Z+00:00'); $formField = new CM_FormField_Time(); $formField->setValue($value); $environment = new CM_Frontend_Environment(); $environment->setTimeZone(new DateTimeZone('Etc/GMT+2')); $render = new CM_Frontend_Render($environment); $renderAdapter = new CM_RenderAdapter_FormField($render, $formField); $actual = $renderAdapter->fetch(new CM_Params()); $this->assertContains('value="10:30"', $actual); }
function smarty_function_input(array $params, Smarty_Internal_Template $template) { $params = CM_Params::factory($params, false); if (!$params->has('name')) { throw new CM_Exception_Invalid('Param `name` missing'); } /** @var CM_Frontend_Render $render */ $render = $template->smarty->getTemplateVars('render'); /** @var CM_Form_Abstract $form */ $form = $render->getGlobalResponse()->getClosestViewResponse('CM_Form_Abstract')->getView(); if (null === $form) { throw new CM_Exception_Invalid('Cannot find parent `CM_Form_Abstract` view response. {input} can be only rendered within form view.'); } $fieldName = $params->getString('name'); $field = $form->getField($fieldName); $renderAdapter = new CM_RenderAdapter_FormField($render, $field); return $renderAdapter->fetch($params); }
function smarty_block_form($params, $content, Smarty_Internal_Template $template, $open) { /** @var CM_Frontend_Render $render */ $render = $template->smarty->getTemplateVars('render'); $frontend = $render->getGlobalResponse(); if ($open) { $form = CM_Form_Abstract::factory($params['name'], $params); $viewResponse = new CM_Frontend_ViewResponse($form); $form->prepare($render->getEnvironment(), $viewResponse); $frontend->treeExpand($viewResponse); return ''; } else { $viewResponse = $frontend->getClosestViewResponse('CM_Form_Abstract'); if (null === $viewResponse) { throw new CM_Exception_Invalid('Cannot find `CM_Form_Abstract` within frontend tree.'); } /** @var CM_Form_Abstract $form */ $form = $viewResponse->getView(); $cssClasses = $viewResponse->getCssClasses(); $cssClasses[] = $form->getName(); $html = '<form id="' . $viewResponse->getAutoId() . '" class="' . implode(' ', $cssClasses) . '" method="post" action="" onsubmit="return false;" novalidate >'; if ($form->getAvoidPasswordManager()) { $html .= '<input style="display:none" type="text" name="fakeusernameremembered">'; $html .= '<input style="display:none" type="password" name="fakepasswordremembered">'; } $html .= $content; foreach ($form->getFields() as $field) { if ($field instanceof CM_FormField_Hidden) { $renderAdapter = new CM_RenderAdapter_FormField($render, $field); $html .= $renderAdapter->fetch(CM_Params::factory()); } } foreach ($form->getActions() as $actionName => $action) { $viewResponse->getJs()->append("this.registerAction('{$actionName}', {$action->js_presentation()});"); } $html .= '</form>'; $frontend->treeCollapse(); return $html; } }
/** * @param CM_FormField_Abstract $formField * @param array|null $renderParams * @param CM_Frontend_Render|null $render * @return CM_Dom_NodeList */ protected function _renderFormField(CM_FormField_Abstract $formField, array $renderParams = null, CM_Frontend_Render $render = null) { if (null === $render) { $render = new CM_Frontend_Render(); } $renderAdapter = new CM_RenderAdapter_FormField($render, $formField); $html = $renderAdapter->fetch(CM_Params::factory($renderParams, false)); return new CM_Dom_NodeList($html, true); }