/** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function getIndex() { $this->authorize('module_forms_manage_forms'); view()->share(['forms' => Form::with('fields')->where('site_id', $this->site->id)->get(), 'pages' => Page::where(['site_id' => $this->site->id])->get(), 'users' => User::all()]); $tabs = ['active' => 'forms', 'content' => view('moduleforms::backend.forms')]; $data['content'] = view('moduleforms::backend.index', $tabs); return view($this->layout, $data); }
/** * Procesa el envio de formularios desde el sitio publico * @param Request $request * @return \Illuminate\Http\RedirectResponse */ public function postProcessForm(Request $request) { $success_message = []; $language = Language::find($request->input('language_id', null)); if (!$language) { $language = $this->site->getDefaultLanguage(); } App::setLocale($language->code); setlocale(LC_ALL, $this->language->locale_code); /** @var Form $form */ $form = Form::find($request->input('form_id')); $form_results = new FormResult(); $form_results->form_id = $form->id; $form_results->assigned_user_id = $form->user->id; $results = $validations = $niceNames = []; foreach ($form->fields as $field) { if ($field->type == 'file') { $results[$field->alias] = $request->input('hidden-field-' . $field->alias, ''); } elseif ($field->type == 'hidden' && object_get($field->config, 'dataType') == 'json') { $jsonValue = $request->input('field-' . $field->alias, ''); if (gettype($jsonValue) == 'string') { $jsonValue = json_decode($jsonValue) ?: $jsonValue; } $results[$field->alias] = $jsonValue; } else { $results[$field->alias] = $request->input('field-' . $field->alias, ''); $validations[$field->alias] = $field->getValidations(); } } $validator = Validator::make($results, $validations); foreach ($validator->errors()->toArray() as $fieldName => $error) { $niceNames[$fieldName] = lang('module_forms.' . $fieldName, $this->getDefaultFieldName($form->fields, $fieldName)); } $validator->setAttributeNames($niceNames); if ($validator->fails()) { if ($request->ajax()) { return response()->json(['success' => false, 'message' => 'Ha ocurrido un error al procesar los datos.', 'errors' => $validator->errors()]); } else { return redirect($request->header('referer'))->withErrors($validator->errors())->withInput(); } } $form_results->results = $results; $form_results->save(); Event::fire('moduleforms.pre-send', ['form_results' => $form_results]); if (App::bound('moduleforms:pre-send:messages')) { $customMessage = App::make('moduleforms:pre-send:messages'); } //Se recargan los resultados en caso de que fueran modificados por algun evento $form_results = FormResult::find($form_results->id); if ($form->user) { $form_results->assign($form->user); } if (isset($form->config->assignmentRules)) { $form_results->notifyUsers($form->config->assignmentRules); } if (object_get($form, 'config.client_email_field', null)) { $form_results->notifyClient($form->config->client_email_field); } //Se actualizan los resultados con la información de los usuarios $form_results->save(); $success_message[] = isset($form->config->success_message) ? $form->config->success_message : 'Success'; if ($request->session()->has('moduleforms.post-save')) { $success_message[] = $request->session()->get('moduleforms.post-save'); } if (isset($customMessage)) { $success_message[] = $customMessage; } if (count($success_message) == 0) { $success_message = $success_message[0]; } if ($request->ajax()) { return response()->json(['success' => true, 'message' => $success_message, 'errors' => []]); } else { if ($redirectPageId = object_get($form->config, 'success_redirect', null)) { $page = Page::find($redirectPageId); $redirectTo = $page->getUrl(); } else { $redirectTo = $request->header('referer'); } return response()->redirectTo($redirectTo)->with('success', $success_message); } }