summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2018-06-28 15:06:59 +0100
committerGreg Roach <fisharebest@webtrees.net>2018-06-28 15:07:07 +0100
commita4a1033e5201f50cc1c2bd2bd07a3688486873d8 (patch)
tree4469cedc42bc9136fc30347abab88af438abd85a /app
parenta8cd57e1bd9bc297d89d2b7df423a89f32b96a3a (diff)
downloadwebtrees-a4a1033e5201f50cc1c2bd2bd07a3688486873d8.tar.gz
webtrees-a4a1033e5201f50cc1c2bd2bd07a3688486873d8.tar.bz2
webtrees-a4a1033e5201f50cc1c2bd2bd07a3688486873d8.zip
Convert edit note to http/controller
Diffstat (limited to 'app')
-rw-r--r--app/Http/Controllers/EditNoteController.php63
1 files changed, 61 insertions, 2 deletions
diff --git a/app/Http/Controllers/EditNoteController.php b/app/Http/Controllers/EditNoteController.php
index 51115ec21c..2ad7d9fb57 100644
--- a/app/Http/Controllers/EditNoteController.php
+++ b/app/Http/Controllers/EditNoteController.php
@@ -18,8 +18,10 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\Controllers;
use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Note;
use Fisharebest\Webtrees\Tree;
use Symfony\Component\HttpFoundation\JsonResponse;
+use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -39,6 +41,63 @@ class EditNoteController extends AbstractBaseController {
}
/**
+ * Show a form to create a new note object.
+ *
+ * @param Request $request
+ *
+ * @return Response
+ */
+ public function editNoteObject(Request $request): Response {
+ /** @var Tree $tree */
+ $tree = $request->attributes->get('tree');
+
+ $xref = $request->get('xref');
+
+ $note = Note::getInstance($xref, $tree);
+
+ $this->checkNoteAccess($note, true);
+
+ return $this->viewResponse('edit/shared-note', [
+ 'note' => $note,
+ 'title' => I18N::translate('Edit the shared note'),
+ 'tree' => $tree,
+ ]);
+ }
+
+ /**
+ * Show a form to create a new note object.
+ *
+ * @param Request $request
+ *
+ * @return Response
+ */
+ public function updateNoteObject(Request $request): RedirectResponse {
+ /** @var Tree $tree */
+ $tree = $request->attributes->get('tree');
+
+ $xref = $request->get('xref');
+
+ $note = Note::getInstance($xref, $tree);
+
+ $this->checkNoteAccess($note, true);
+
+ $NOTE = $request->get('NOTE');
+
+ // "\" and "$" are signficant in replacement strings, so escape them.
+ $NOTE = str_replace(['\\', '$'], ['\\\\', '\\$'], $NOTE);
+
+ $gedrec = preg_replace(
+ '/^0 @' . $note->getXref() . '@ NOTE.*(\n1 CONT.*)*/',
+ '0 @' . $note->getXref() . '@ NOTE ' . preg_replace("/\r?\n/", "\n1 CONT ", $NOTE),
+ $note->getGedcom()
+ );
+
+ $note->updateRecord($gedrec, true);
+
+ return new RedirectResponse($note->url());
+ }
+
+ /**
* Process a form to create a new note object.
*
* @param Request $request
@@ -68,7 +127,7 @@ class EditNoteController extends AbstractBaseController {
$record = $tree->createRecord($gedcom);
return new JsonResponse([
- 'id' => $record->getXref(),
+ 'id' => $record->getXref(),
'text' => view('selects/note', [
'note' => $record,
]),
@@ -76,7 +135,7 @@ class EditNoteController extends AbstractBaseController {
'title' => I18N::translate('The note has been created'),
'name' => $record->getFullName(),
'url' => $record->url(),
- ])
+ ]),
]);
}
}