summaryrefslogtreecommitdiff
path: root/resources/views
diff options
context:
space:
mode:
Diffstat (limited to 'resources/views')
-rw-r--r--resources/views/admin/changes-log.phtml68
-rw-r--r--resources/views/admin/control-panel.phtml3
-rw-r--r--resources/views/admin/trees.phtml3
-rw-r--r--resources/views/emails/pending-changes-html.phtml9
-rw-r--r--resources/views/emails/pending-changes-text.phtml9
-rw-r--r--resources/views/family-page.phtml6
-rw-r--r--resources/views/gedcom-record-page.phtml8
-rw-r--r--resources/views/individual-page.phtml6
-rw-r--r--resources/views/media-page.phtml5
-rw-r--r--resources/views/note-page.phtml8
-rw-r--r--resources/views/pending-changes-page.phtml52
-rw-r--r--resources/views/repository-page.phtml6
-rw-r--r--resources/views/source-page.phtml8
13 files changed, 108 insertions, 83 deletions
diff --git a/resources/views/admin/changes-log.phtml b/resources/views/admin/changes-log.phtml
index 28e23ef0f7..7c8108d4a2 100644
--- a/resources/views/admin/changes-log.phtml
+++ b/resources/views/admin/changes-log.phtml
@@ -1,18 +1,19 @@
<?php
use Fisharebest\Webtrees\Http\RequestHandlers\ControlPanel;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesLogData;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesLogDelete;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesLogDownload;
use Fisharebest\Webtrees\I18N;
?>
-<?= view('components/breadcrumbs', ['links' => [route(ControlPanel::class) => I18N::translate('Control panel'), route('manage-trees') => I18N::translate('Manage family trees'), $title]]) ?>
+<?= view('components/breadcrumbs', ['links' => [route(ControlPanel::class) => I18N::translate('Control panel'), route('manage-trees', ['tree' => $tree->name()]) => I18N::translate('Manage family trees'), $title]]) ?>
<h1><?= $title ?></h1>
-<form method="get" action="<?= e(route('admin-changes-log')) ?>" class="form" name="logs">
- <input type="hidden" name="action" value="show">
- <input type="hidden" name="route" value="admin-changes-log">
- <input type="hidden" name="tree" value="<?= e($ged) ?>">
+<form method="post" class="form" name="logs">
+ <?= csrf_field() ?>
<div class="row">
<div class="form-group col-xs-6 col-md-3">
@@ -63,14 +64,14 @@ use Fisharebest\Webtrees\I18N;
<label for="username">
<?= I18N::translate('User') ?>
</label>
- <?= view('components/select', ['name' => 'username', 'selected' => $username, 'options' => $user_list]) ?>
+ <?= view('components/select', ['name' => 'username', 'selected' => $username, 'options' => $users]) ?>
</div>
<div class="form-group col-xs-6 col-md-3">
<label for="tree">
<?= I18N::translate('Family tree') ?>
</label>
- <?= view('components/select', ['name' => 'ged', 'selected' => $ged, 'options' => $tree_list]) ?>
+ <?= view('components/select', ['name' => 'tree', 'selected' => $tree->name(), 'options' => $trees]) ?>
</div>
</div>
@@ -80,38 +81,37 @@ use Fisharebest\Webtrees\I18N;
<?= I18N::translate('search') ?>
</button>
- <button type="submit" class="btn btn-secondary" onclick="document.logs.action.value='export';return true;" <?= $action === 'show' ? '' : 'disabled' ?>>
+ <a class="btn btn-secondary" href="<?= (route(PendingChangesLogDownload::class, ['from' => $from, 'to' => $to, 'type' => $type, 'xref' => $xref, 'oldged' => $oldged, 'newged' => $newged, 'tree' => $tree->name(), 'username' => $username])) ?>">
<?= view('icons/download') ?>
<?= /* I18N: A button label. */ I18N::translate('download') ?>
- </button>
+ </a>
- <button type="submit" class="btn btn-danger" data-confirm="<?= I18N::translate('Permanently delete these records?') ?>" onclick="if (confirm(this.dataset.confirm)) {document.logs.action.value='delete'; return true;} else {return false;}" <?= $action === 'show' ? '' : 'disabled' ?>>
+ <a href="#" class="btn btn-danger" data-confirm="<?= I18N::translate('Permanently delete these records?') ?>" data-post-url="<?= (route(PendingChangesLogDelete::class, ['from' => $from, 'to' => $to, 'type' => $type, 'xref' => $xref, 'oldged' => $oldged, 'newged' => $newged, 'tree' => $tree->name(), 'username' => $username])) ?>">
<?= view('icons/delete') ?>
<?= I18N::translate('delete') ?>
- </button>
+ </a>
</div>
</form>
-<?php if ($action === 'show') : ?>
- <table
- class="table table-bordered table-sm table-hover table-site-changes datatables"
- data-ajax="<?= route('admin-changes-log-data', ['from' => $from, 'to' => $to, 'type' => $type, 'xref' => $xref, 'oldged' => $oldged, 'newged' => $newged, 'ged' => $ged, 'username' => $username]) ?>"
- data-server-side="true"
- data-sorting="<?= e('[[ 0, "desc" ]]') ?>"
- >
- <caption class="sr-only">
- <?= $title ?>
- </caption>
- <thead>
- <tr>
- <th data-visible="false"></th>
- <th><?= I18N::translate('Timestamp') ?></th>
- <th><?= I18N::translate('Status') ?></th>
- <th><?= I18N::translate('Record') ?></th>
- <th data-sortable="false"><?= I18N::translate('Data') ?></th>
- <th><?= I18N::translate('User') ?></th>
- <th><?= I18N::translate('Family tree') ?></th>
- </tr>
- </thead>
- </table>
-<?php endif ?>
+<table
+ class="table table-bordered table-sm table-hover table-site-changes datatables"
+ data-ajax="<?= route(PendingChangesLogData::class, ['from' => $from, 'to' => $to, 'type' => $type, 'xref' => $xref, 'oldged' => $oldged, 'newged' => $newged, 'tree' => $tree->name(), 'username' => $username]) ?>"
+ data-server-side="true"
+ data-sorting="<?= e('[[ 0, "desc" ]]') ?>"
+>
+ <caption class="sr-only">
+ <?= $title ?>
+ </caption>
+
+ <thead>
+ <tr>
+ <th data-visible="false"></th>
+ <th><?= I18N::translate('Timestamp') ?></th>
+ <th><?= I18N::translate('Status') ?></th>
+ <th><?= I18N::translate('Record') ?></th>
+ <th data-sortable="false"><?= I18N::translate('Data') ?></th>
+ <th><?= I18N::translate('User') ?></th>
+ <th><?= I18N::translate('Family tree') ?></th>
+ </tr>
+ </thead>
+</table>
diff --git a/resources/views/admin/control-panel.phtml b/resources/views/admin/control-panel.phtml
index df9a916818..575242479a 100644
--- a/resources/views/admin/control-panel.phtml
+++ b/resources/views/admin/control-panel.phtml
@@ -3,6 +3,7 @@
use Fisharebest\Webtrees\Http\RequestHandlers\CleanDataFolder;
use Fisharebest\Webtrees\Http\RequestHandlers\ControlPanel;
use Fisharebest\Webtrees\Http\RequestHandlers\CreateTreePage;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChanges;
use Fisharebest\Webtrees\Http\RequestHandlers\PhpInformation;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\FamilyListModule;
@@ -182,7 +183,7 @@ use Illuminate\Support\Collection;
</th>
<td style="text-align: right;">
<?php if ($changes[$tree->id()]) : ?>
- <a href="<?= e(route('show-pending', ['tree' => $tree->name(), 'url' => route(ControlPanel::class)])) ?>">
+ <a href="<?= e(route(PendingChanges::class, ['tree' => $tree->name(), 'url' => route(ControlPanel::class)])) ?>">
<?= I18N::number($changes[$tree->id()]) ?>
<span class="sr-only"><?= I18N::translate('Pending changes') ?> <?= e($tree->title()) ?></span>
</a>
diff --git a/resources/views/admin/trees.phtml b/resources/views/admin/trees.phtml
index 20ee632470..1ec9170616 100644
--- a/resources/views/admin/trees.phtml
+++ b/resources/views/admin/trees.phtml
@@ -3,6 +3,7 @@
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\RequestHandlers\ControlPanel;
use Fisharebest\Webtrees\Http\RequestHandlers\DeleteTreeAction;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesLogPage;
use Fisharebest\Webtrees\Http\RequestHandlers\SelectDefaultTree;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Site;
@@ -186,7 +187,7 @@ use Illuminate\Database\Capsule\Manager as DB;
<!-- CHANGES -->
<li>
<span class="fa-li"><?= view('icons/edit') ?></span>
- <a href="<?= route('admin-changes-log', ['tree' => $managed_tree->name()]) ?>">
+ <a href="<?= route(PendingChangesLogPage::class, ['tree' => $managed_tree->name()]) ?>">
<?= I18N::translate('Changes log') ?>
<span class="sr-only">
<?= e($managed_tree->title()) ?>
diff --git a/resources/views/emails/pending-changes-html.phtml b/resources/views/emails/pending-changes-html.phtml
index 9e3647dde7..5662c0d5e4 100644
--- a/resources/views/emails/pending-changes-html.phtml
+++ b/resources/views/emails/pending-changes-html.phtml
@@ -1,4 +1,9 @@
-<?php use Fisharebest\Webtrees\I18N; ?>
+<?php
+
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChanges;
+use Fisharebest\Webtrees\I18N;
+
+?>
<div <?= I18N::htmlAttributes() ?>>
<p>
<?= I18N::translate('Hello %s…', '<span dir="auto">' . e($user->realName()) . '</span>') ?>
@@ -10,7 +15,7 @@
<ul>
<li>
- <a href="<?= e(route('show-pending', ['tree' => $tree->name()])) ?>">
+ <a href="<?= e(route(PendingChanges::class, ['tree' => $tree->name()])) ?>">
<?= e($tree->title()) ?>
</a>
</li>
diff --git a/resources/views/emails/pending-changes-text.phtml b/resources/views/emails/pending-changes-text.phtml
index 31f17ca8d3..239a891254 100644
--- a/resources/views/emails/pending-changes-text.phtml
+++ b/resources/views/emails/pending-changes-text.phtml
@@ -1,7 +1,12 @@
-<?php use Fisharebest\Webtrees\I18N; ?>
+<?php
+
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChanges;
+use Fisharebest\Webtrees\I18N;
+
+?>
<?= I18N::translate('Hello %s…', $user->realName()) ?>
<?= I18N::translate('There are pending changes for you to moderate.') ?>
-<?= $tree->title() ?> - <?= route('show-pending', ['tree' => $tree->name()]) ?>
+<?= $tree->title() ?> - <?= route(PendingChanges::class, ['tree' => $tree->name()]) ?>
diff --git a/resources/views/family-page.phtml b/resources/views/family-page.phtml
index 49f3fb4660..572c36d5c3 100644
--- a/resources/views/family-page.phtml
+++ b/resources/views/family-page.phtml
@@ -3,6 +3,8 @@
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Functions\FunctionsPrint;
use Fisharebest\Webtrees\Functions\FunctionsPrintFacts;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\View;
@@ -10,13 +12,13 @@ use Fisharebest\Webtrees\View;
<?php if ($record->isPendingDeletion()) : ?>
<?php if (Auth::isModerator($record->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This family has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This family has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($record->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This family has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
<?php elseif ($record->isPendingAddition()) : ?>
<?php if (Auth::isModerator($record->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This family has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This family has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($record->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This family has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
diff --git a/resources/views/gedcom-record-page.phtml b/resources/views/gedcom-record-page.phtml
index e35540308e..84c237f678 100644
--- a/resources/views/gedcom-record-page.phtml
+++ b/resources/views/gedcom-record-page.phtml
@@ -1,17 +1,19 @@
<?php use Fisharebest\Webtrees\Auth; ?>
<?php use Fisharebest\Webtrees\Functions\FunctionsPrint; ?>
<?php use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; ?>
-<?php use Fisharebest\Webtrees\I18N; ?>
+<?php use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord;
+use Fisharebest\Webtrees\I18N; ?>
<?php if ($record->isPendingDeletion()) : ?>
<?php if (Auth::isModerator($record->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This record has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This record has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($record->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This record has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
<?php elseif ($record->isPendingAddition()) : ?>
<?php if (Auth::isModerator($record->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This record has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This record has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($record->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This record has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
diff --git a/resources/views/individual-page.phtml b/resources/views/individual-page.phtml
index f6f92fbe2b..ea6260d51e 100644
--- a/resources/views/individual-page.phtml
+++ b/resources/views/individual-page.phtml
@@ -1,6 +1,8 @@
<?php
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Functions\FunctionsPrint;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\View;
@@ -22,7 +24,7 @@ use Illuminate\Support\Collection;
<?php if (Auth::isModerator($individual->tree())) : ?>
<?= view('components/alert-warning-dismissible', [
'alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */
- I18N::translate('This individual has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes'),
+ I18N::translate('This individual has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes'),
]) ?>
<?php elseif (Auth::isEditor($individual->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This individual has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
@@ -31,7 +33,7 @@ use Illuminate\Support\Collection;
<?php if (Auth::isModerator($individual->tree())) : ?>
<?= view('components/alert-warning-dismissible', [
'alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */
- I18N::translate('This individual has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes'),
+ I18N::translate('This individual has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes'),
]) ?>
<?php elseif (Auth::isEditor($individual->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This individual has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
diff --git a/resources/views/media-page.phtml b/resources/views/media-page.phtml
index 9b162a6ecf..26ccbe410b 100644
--- a/resources/views/media-page.phtml
+++ b/resources/views/media-page.phtml
@@ -4,6 +4,7 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Functions\FunctionsPrint;
use Fisharebest\Webtrees\Functions\FunctionsPrintFacts;
use Fisharebest\Webtrees\GedcomTag;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Media;
use Illuminate\Support\Collection;
@@ -21,13 +22,13 @@ use Illuminate\Support\Collection;
<?php if ($media->isPendingDeletion()) : ?>
<?php if (Auth::isModerator($media->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This media object has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $media->tree()->name(), 'xref' => $media->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $media->tree()->name(), 'xref' => $media->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This media object has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $media->tree()->name(), 'xref' => $media->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $media->tree()->name(), 'xref' => $media->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($media->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This media object has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
<?php elseif ($media->isPendingAddition()) : ?>
<?php if (Auth::isModerator($media->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This media object has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $media->tree()->name(), 'xref' => $media->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $media->tree()->name(), 'xref' => $media->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This media object has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $media->tree()->name(), 'xref' => $media->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $media->tree()->name(), 'xref' => $media->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($media->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This media object has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
diff --git a/resources/views/note-page.phtml b/resources/views/note-page.phtml
index fc15cbe1a6..17b496f40c 100644
--- a/resources/views/note-page.phtml
+++ b/resources/views/note-page.phtml
@@ -1,17 +1,19 @@
<?php use Fisharebest\Webtrees\Auth; ?>
<?php use Fisharebest\Webtrees\Functions\FunctionsPrint; ?>
<?php use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; ?>
-<?php use Fisharebest\Webtrees\I18N; ?>
+<?php use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord;
+use Fisharebest\Webtrees\I18N; ?>
<?php if ($note->isPendingDeletion()) : ?>
<?php if (Auth::isModerator($note->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This note has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $note->tree()->name(), 'xref' => $note->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $note->tree()->name(), 'xref' => $note->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This note has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $note->tree()->name(), 'xref' => $note->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $note->tree()->name(), 'xref' => $note->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($note->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This note has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
<?php elseif ($note->isPendingAddition()) : ?>
<?php if (Auth::isModerator($note->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This note has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $note->tree()->name(), 'xref' => $note->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $note->tree()->name(), 'xref' => $note->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This note has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $note->tree()->name(), 'xref' => $note->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $note->tree()->name(), 'xref' => $note->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($note->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This note has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
diff --git a/resources/views/pending-changes-page.phtml b/resources/views/pending-changes-page.phtml
index 8af92e03df..dddf6ff315 100644
--- a/resources/views/pending-changes-page.phtml
+++ b/resources/views/pending-changes-page.phtml
@@ -1,5 +1,13 @@
-<?php use Fisharebest\Webtrees\I18N; ?>
-<?php use Fisharebest\Webtrees\Tree; ?>
+<?php
+
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptChange;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptTree;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectChange;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectTree;
+use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Tree;
+
+?>
<h2 class="wt-page-title">
<?= $title ?>
@@ -51,13 +59,11 @@
<?php foreach ($record_changes as $record_change) : ?>
<tr>
<td>
- <form method="post" action="<?= e(route('accept-pending', ['change_id' => $record_change->change_id, 'xref' => $record_change->xref, 'tree' => $record_change->gedcom_name, 'url' => $url])) ?>">
- <?= csrf_field() ?>
- <button class="btn btn-primary" type="submit">
- <?= I18N::translate('Accept') ?>
- </button>
- </form>
+ <a class="btn btn-primary" href="#" data-post-url="<?= e(route(PendingChangesAcceptChange::class, ['tree' => $record_change->gedcom_name, 'xref' => $record_change->xref, 'change' => $record_change->change_id])) ?>">
+ <?= I18N::translate('Accept') ?>
+ </a>
</td>
+
<td>
<?php foreach ($record_change->record->facts() as $fact) : ?>
<?php if ($fact->getTag() !== 'CHAN' && $fact->isPendingAddition()) : ?>
@@ -71,21 +77,21 @@
<?php endif ?>
<?php endforeach ?>
</td>
+
<td>
<a href="<?= e(route('message', ['to' => $record_change->user_name, 'subject' => I18N::translate('Pending changes') . ' - ' . strip_tags($record_change->record->fullName()), 'body' => $record_change->record->url(), 'tree' => $record_change->gedcom_name])) ?>" title="<?= I18N::translate('Send a message') ?>">
<?= e($record_change->real_name) ?> - <?= e($record_change->user_name) ?>
</a>
</td>
+
<td>
<?= view('components/datetime', ['timestamp' => $record_change->change_time]) ?>
</td>
+
<td>
- <form method="post" action="<?= e(route('reject-pending', ['change_id' => $record_change->change_id, 'xref' => $record_change->xref, 'tree' => $record_change->gedcom_name, 'url' => $url])) ?>">
- <?= csrf_field() ?>
- <button class="btn btn-secondary" type="submit">
- <?= I18N::translate('Reject') ?>
- </button>
- </form>
+ <a class="btn btn-secondary" href="#" data-post-url="<?= e(route(PendingChangesRejectChange::class, ['tree' => $record_change->gedcom_name, 'xref' => $record_change->xref, 'change' => $record_change->change_id])) ?>">
+ <?= I18N::translate('Reject') ?>
+ </a>
</td>
</tr>
<?php endforeach ?>
@@ -94,19 +100,13 @@
<?php endforeach ?>
<div class="d-flex justify-content-between">
- <form method="post" action="<?= e(route('accept-all-changes', ['tree' => $tree->name(), 'url' => $url])) ?>">
- <?= csrf_field() ?>
- <button class="btn btn-primary" type="submit">
- <?= I18N::translate('Accept all changes') ?>
- </button>
- </form>
+ <a class="btn btn-primary" href="#" data-post-url="<?= e(route(PendingChangesAcceptTree::class, ['tree' => $tree->name()])) ?>">
+ <?= I18N::translate('Accept all changes') ?>
+ </a>
- <form method="post" action="<?= e(route('reject-all-changes', ['tree' => $tree->name(), 'url' => $url])) ?>">
- <?= csrf_field() ?>
- <button class="btn btn-secondary" type="submit" data-confirm="<?= I18N::translate('Are you sure you want to reject all the changes to this family tree?') ?>" onclick="return confirm(this.dataset.confirm);">
- <?= I18N::translate('Reject all changes') ?>
- </button>
- </form>
+ <a class="btn btn-secondary" href="#" data-post-url="<?= e(route(PendingChangesRejectTree::class, ['tree' => $tree->name()])) ?>" data-confirm="<?= I18N::translate('Are you sure you want to reject all the changes to this family tree?') ?>">
+ <?= I18N::translate('Reject all changes') ?>
+ </a>
</div>
</div>
<?php endforeach ?>
diff --git a/resources/views/repository-page.phtml b/resources/views/repository-page.phtml
index 7fac1eccdb..9e169db337 100644
--- a/resources/views/repository-page.phtml
+++ b/resources/views/repository-page.phtml
@@ -3,19 +3,21 @@
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Functions\FunctionsPrint;
use Fisharebest\Webtrees\Functions\FunctionsPrintFacts;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord;
use Fisharebest\Webtrees\I18N;
?>
<?php if ($repository->isPendingDeletion()) : ?>
<?php if (Auth::isModerator($repository->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This repository has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $repository->tree()->name(), 'xref' => $repository->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $repository->tree()->name(), 'xref' => $repository->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This repository has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $repository->tree()->name(), 'xref' => $repository->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $repository->tree()->name(), 'xref' => $repository->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($repository->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This repository has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
<?php elseif ($repository->isPendingAddition()) : ?>
<?php if (Auth::isModerator($repository->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This repository has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $repository->tree()->name(), 'xref' => $repository->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $repository->tree()->name(), 'xref' => $repository->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This repository has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $repository->tree()->name(), 'xref' => $repository->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $repository->tree()->name(), 'xref' => $repository->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($repository->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This repository has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
diff --git a/resources/views/source-page.phtml b/resources/views/source-page.phtml
index 405c6d160b..aef4c5114c 100644
--- a/resources/views/source-page.phtml
+++ b/resources/views/source-page.phtml
@@ -1,17 +1,19 @@
<?php use Fisharebest\Webtrees\Auth; ?>
<?php use Fisharebest\Webtrees\Functions\FunctionsPrint; ?>
<?php use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; ?>
-<?php use Fisharebest\Webtrees\I18N; ?>
+<?php use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
+use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord;
+use Fisharebest\Webtrees\I18N; ?>
<?php if ($source->isPendingDeletion()) : ?>
<?php if (Auth::isModerator($source->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This source has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $source->tree()->name(), 'xref' => $source->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $source->tree()->name(), 'xref' => $source->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This source has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $source->tree()->name(), 'xref' => $source->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $source->tree()->name(), 'xref' => $source->xref()])) . '">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($source->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This source has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>
<?php elseif ($source->isPendingAddition()) : ?>
<?php if (Auth::isModerator($source->tree())) : ?>
- <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This source has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route('accept-changes', ['tree' => $source->tree()->name(), 'xref' => $source->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route('reject-changes', ['tree' => $source->tree()->name(), 'xref' => $source->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
+ <?= view('components/alert-warning-dismissible', ['alert' => /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate('This source has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesAcceptRecord::class, ['tree' => $source->tree()->name(), 'xref' => $source->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" class="alert-link" data-post-url="' . e(route(PendingChangesRejectRecord::class, ['tree' => $source->tree()->name(), 'xref' => $source->xref()])) . '">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php elseif (Auth::isEditor($source->tree())) : ?>
<?= view('components/alert-warning-dismissible', ['alert' => I18N::translate('This source has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes')]) ?>
<?php endif ?>