/** * Handle a file edit POST. * * @param Request $request * @param Form $form * @param File $file * @param string $type * * @return JsonResponse */ private function handleEdit(Request $request, Form $form, File $file, $type) { $form->submit($request->get($form->getName())); if ($form->isValid()) { $data = $form->getData(); $contents = Input::cleanPostedData($data['contents']) . "\n"; $result = ['ok' => true, 'msg' => 'Unhandled state.']; // Before trying to save a yaml file, check if it's valid. if ($type === 'yml') { $yamlparser = new Parser(); try { $yamlparser->parse($contents); } catch (ParseException $e) { $result['ok'] = false; $result['msg'] = Trans::__('page.file-management.message.save-failed-colon', ['%s' => $file->getPath()]) . $e->getMessage(); } } if ($result['ok']) { // Remove ^M (or \r) characters from the file. $contents = str_ireplace("\r", '', $contents); try { $file->update($contents); $result['msg'] = Trans::__('page.file-management.message.save-success', ['%s' => $file->getPath()]); $result['datechanged'] = $file->getCarbon()->toIso8601String(); } catch (ExceptionInterface $e) { $result['msg'] = Trans::__('page.file-management.message.save-failed-unknown', ['%s' => $file->getPath()]); } } } else { $result = ['ok' => false, 'msg' => Trans::__('page.file-management.message.save-failed-invalid-form', ['%s' => $file->getPath()])]; } return $this->json($result); }