Example #1
0
 /**
  * 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);
 }