/**
* We're going to edit a directory
*
* @route pages/{string}/edit
* @param string $cabin
*/
public function editPage(string $cabin = '')
{
$page = [];
$path = $this->determinePath($cabin);
if (!\is1DArray($_GET)) {
\Airship\redirect($this->airship_cabin_prefix . '/pages/' . \trim($cabin, '/'));
}
$cabins = $this->getCabinNamespaces();
if (!\in_array($cabin, $cabins)) {
\Airship\redirect($this->airship_cabin_prefix);
}
$this->setTemplateExtraData($cabin);
if (!$this->can('update')) {
\Airship\redirect($this->airship_cabin_prefix);
}
try {
$page = $this->pg->getPageInfo($cabin, $path, (string) ($_GET['page'] ?? ''));
} catch (CustomPageNotFoundException $ex) {
\Airship\redirect($this->airship_cabin_prefix . '/pages/' . \trim($cabin, '/'));
}
$latest = $this->pg->getLatestDraft($page['pageid']);
$post = $this->post(new EditPageFilter());
if (!empty($post)) {
$this->processEditPage((int) $page['pageid'], $post, $cabin, $path);
}
$this->lens('pages/page_edit', ['cabins' => $cabins, 'pageinfo' => $page, 'latest' => $latest, 'dir' => $path, 'cabin' => $cabin, 'pathinfo' => \Airship\chunk($path)]);
}