/** * @param block_BlockContext $context * @param block_BlockRequest $request * @return String the view name */ public function execute($context, $request) { if (!$request->hasNonEmptyParameter('id')) { return block_BlockView::NONE; } $id = $request->getParameter('id'); $form = DocumentHelper::getDocumentInstance($id); $user = $context->getGlobalContext()->getUser(); $attr = 'form_success_parameters_' . $form->getId(); $parameters = $user->getAttribute($attr); if ($parameters === null) { return block_BlockView::NONE; } $user->removeAttribute($attr); $message = $form->getConfirmMessage(); foreach ($parameters as $k => $v) { $message = str_replace('{' . $k . '}', htmlspecialchars($v), $message); } $this->setParameter('message', $message); if ($form->getUseBackLink()) { $this->setParameter('back', array('url' => $parameters[form_FormConstants::BACK_URL_PARAMETER], 'label' => f_Locale::translate('&modules.form.frontoffice.Back;'))); } else { $this->setParameter('back', false); } $this->setParameter('form', $form); return block_BlockView::SUCCESS; }
/** * @param form_persistentdocument_field $field * @param block_BlockRequest $request * @param validation_Errors $errors * @return void */ public function validate($field, $request, &$errors) { $value = $request->getParameter($field->getFieldName()); if (is_array($value)) { $isEmpty = f_util_ArrayUtils::isEmpty($value); } else { $isEmpty = f_util_StringUtils::isEmpty($value); } $data = $request->getParameters(); if ($field->getRequired() && $isEmpty) { if ($this->isConditionValid($field, $data)) { $errors->append(f_Locale::translate("&framework.validation.validator.Blank.message;", array('field' => $field->getLabel()))); } } else { if ($field->getRequired() || !$isEmpty) { validation_ValidatorHelper::validate(new validation_Property($field->getLabel(), f_util_Convert::fixDataType($value)), $field->getValidators(), $errors); } } }
/** * @param form_persistentdocument_file $field * @param block_BlockRequest $request * @param validation_Errors $errors * @return void */ public function validate($field, $request, &$errors) { $fileInfo = $request->getUploadedFileInformation($field->getFieldName()); $errCount = $errors->count(); if ($field->getRequired() || !empty($fileInfo['name'])) { if ($field->getRequired()) { validation_ValidatorHelper::validate(new validation_Property($field->getLabel(), $fileInfo['name']), 'blank:false', $errors); } if ($errors->count() == $errCount) { $ext = strtolower(f_util_FileUtils::getFileExtension($fileInfo['name'])); if ($field->getAllowedExtensions()) { $allowedExt = explode(",", $field->getAllowedExtensions()); if (!empty($allowedExt) && !in_array($ext, $allowedExt)) { $errors->append(f_Locale::translate('&modules.form.frontoffice.File-must-have-one-of-these-extensions;', array('file' => $field->getLabel(), 'extensions' => join(", ", $allowedExt)))); } } } } }
/** * @param form_persistentdocument_baseform $form * @param block_BlockRequest $formRequest * @param validation_Errors $errors * @param array<String> $scriptArray * @return String * @deprecated */ public function renderForm($form, $formRequest, $errors, &$scriptArray) { $scriptArray[] = 'modules.form.lib.js.date-picker.date'; $scriptArray[] = 'modules.form.lib.js.date-picker.date_' . RequestContext::getInstance()->getLang(); $scriptArray[] = 'modules.form.lib.js.date-picker.jquery-bgiframe'; $scriptArray[] = 'modules.form.lib.js.date-picker.jquery-dimensions'; $scriptArray[] = 'modules.form.lib.js.date-picker.jquery-datePicker'; $scriptArray[] = 'modules.form.lib.js.form'; $markup = $form->getMarkup(); if (!$markup) { $markup = 'default'; } try { $template = TemplateLoader::getInstance()->setMimeContentType(K::HTML)->setPackageName('modules_form')->setDirectory('templates/markup/' . $markup)->load('Form'); $template->setAttribute('form', $form); $template->setAttribute('selfUrl', $_SERVER['REQUEST_URI']); if ($formRequest->hasParameter(form_FormConstants::BACK_URL_PARAMETER)) { $template->setAttribute('backUrl', $formRequest->getParameter(form_FormConstants::BACK_URL_PARAMETER)); } else { $template->setAttribute('backUrl', $_SERVER['HTTP_REFERER']); } if (!is_null($errors)) { $template->setAttribute('errors', $errors); } $fieldContents = array(); $this->buildContentsFromRequest($form->getDocumentNode()->getChildren(), $fieldContents, $formRequest, $form); $template->setAttribute('requestParameters', $formRequest->getParameters()); $template->setAttribute('elements', $fieldContents); return $template->execute(true); } catch (Exception $e) { Framework::exception($e); } return null; }
/** * @param block_BlockContext $context * @param block_BlockRequest $request * @return String the view name */ public function execute($context, $request) { $id = $this->getFormId(); if (empty($id)) { return block_BlockView::NONE; } $form = DocumentHelper::getDocumentInstance($id); if (!$form->isPublished()) { return block_BlockView::NONE; } $form->getDocumentNode()->getDescendents(); $this->setParameter('form', $form); if ($context->inBackofficeMode()) { return block_BlockView::DUMMY; } if ($request->hasParameter("receiverIds")) { $receiverIds = explode(",", $request->getParameter("receiverIds")); $receiverLabels = array(); foreach ($receiverIds as $receiverId) { if (is_numeric($receiverId)) { try { $receiver = DocumentHelper::getDocumentInstance($receiverId); $receiverLabels[] = $receiver->getLabel(); } catch (Exception $e) { Framework::exception($e); $receiverLabels[] = $receiverId; } } elseif (f_util_StringUtils::isNotEmpty($receiverId)) { $receiverLabels[] = $receiverId; } } $this->setParameter("receiverLabels", $receiverLabels); } if ($this->isSuccess($context, $request)) { $view = block_BlockView::SUCCESS; } else { if ($this->isFormPosted($request)) { $fs = form_FormService::getInstance(); try { $fs->saveFormData($form, $request); $user = $context->getGlobalContext()->getUser(); $user->setAttribute('form_success_parameters_' . $form->getId(), $request->getParameters()); $view = block_BlockView::SUCCESS; } catch (form_FormValidationException $e) { $this->setParameter('errors', $e->getErrorCollection()); $view = block_BlockView::INPUT; } } else { $view = block_BlockView::INPUT; } } // Calls the BlockFormDecorator if present. $formId = $form->getFormid(); $matches = null; if (preg_match('#^modules_([a-z]+)/([a-z]+)$#', $formId, $matches)) { $extendClassName = $matches[1] . '_BlockForm' . ucfirst($matches[2]) . 'Decorator'; if (f_util_ClassUtils::classExists($extendClassName)) { $instance = new $extendClassName($this); if ($instance instanceof form_BlockFormDecorator) { $instance->execute($context, $request); } else { Framework::warn("\"{$extendClassName}\" is not an instance of \"block_BlockDecorator\": form \"{$formId}\" won't be decorated."); } } } return $view; }