public function ___getExtraActions(Page $page) { $extras = array(); $noSettings = $page->template->noSettings; $statusEditable = $page->editable('status', false); if ($page->id == 1 || $page->template == 'admin') { return $extras; } if (!$this->superuser && ($noSettings || !$statusEditable)) { return $extras; } $adminUrl = $this->wire('config')->urls->admin . 'page/'; $locked = $page->isLocked(); $trash = $page->isTrash(); $user = $this->wire('user'); if (!$locked && !$trash && !$noSettings && $statusEditable) { if ($page->publishable()) { if ($page->isUnpublished()) { $extras['pub'] = array('cn' => 'Publish', 'name' => $this->actionLabels['pub'], 'url' => "{$adminUrl}?action=pub&id={$page->id}", 'ajax' => true); } else { if (!$page->template->noUnpublish) { $extras['unpub'] = array('cn' => 'Unpublish', 'name' => $this->actionLabels['unpub'], 'url' => "{$adminUrl}?action=unpub&id={$page->id}", 'ajax' => true); } } } if ($user->hasPermission('page-hide', $page)) { if ($page->isHidden()) { $extras['unhide'] = array('cn' => 'Unhide', 'name' => $this->actionLabels['unhide'], 'url' => "{$adminUrl}?action=unhide&id={$page->id}", 'ajax' => true); } else { $extras['hide'] = array('cn' => 'Hide', 'name' => $this->actionLabels['hide'], 'url' => "{$adminUrl}?action=hide&id={$page->id}", 'ajax' => true); } } } if ($this->wire('user')->hasPermission('page-lock', $page) && !$trash && $statusEditable) { if ($locked) { $extras['unlock'] = array('cn' => 'Unlock', 'name' => $this->actionLabels['unlock'], 'url' => "{$adminUrl}?action=unlock&id={$page->id}", 'ajax' => true); } else { $extras['lock'] = array('cn' => 'Lock', 'name' => $this->actionLabels['lock'], 'url' => "{$adminUrl}?action=lock&id={$page->id}", 'ajax' => true); } } if ($this->superuser) { $trashIcon = "<i class='fa fa-trash-o'></i> "; if ($page->trashable()) { $extras['trash'] = array('cn' => 'Trash', 'name' => $trashIcon . $this->actionLabels['trash'], 'url' => "{$adminUrl}?action=trash&id={$page->id}", 'ajax' => true); } else { if ($trash) { if (preg_match('/^(' . $page->id . ')\\.\\d+\\.\\d+_.+$/', $page->name)) { $extras['restore'] = array('cn' => 'Restore', 'name' => $trashIcon . $this->actionLabels['restore'], 'url' => "{$adminUrl}?action=restore&id={$page->id}", 'ajax' => true); } } } } return $extras; }