/** * 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::__("File '%s' could not be saved:", ['%s' => $file->getPath()]) . $e->getMessage(); } } if ($result['ok']) { // Remove ^M (or \r) characters from the file. $contents = str_ireplace("\r", '', $contents); if ($file->update($contents)) { $result['msg'] = Trans::__("File '%s' has been saved.", ['%s' => $file->getPath()]); $result['datechanged'] = date_format(new \DateTime('@' . $file->getTimestamp()), 'c'); } else { $result['msg'] = Trans::__("File '%s' could not be saved, for some reason.", ['%s' => $file->getPath()]); } } } else { $result = ['ok' => false, 'msg' => Trans::__("File '%s' could not be saved, because the form wasn't valid.", ['%s' => $file->getPath()])]; } return $this->json($result); }