@@ 1754-1779 (lines=26) @@ | ||
1751 | * @return HTTPResponse |
|
1752 | * @throws HTTPResponse_Exception |
|
1753 | */ |
|
1754 | public function delete($data, $form) |
|
1755 | { |
|
1756 | $id = $data['ID']; |
|
1757 | $record = SiteTree::get()->byID($id); |
|
1758 | if ($record && !$record->canDelete()) { |
|
1759 | return Security::permissionFailure(); |
|
1760 | } |
|
1761 | if (!$record || !$record->ID) { |
|
1762 | throw new HTTPResponse_Exception("Bad record ID #$id", 404); |
|
1763 | } |
|
1764 | ||
1765 | // Delete record |
|
1766 | $record->delete(); |
|
1767 | ||
1768 | $this->getResponse()->addHeader( |
|
1769 | 'X-Status', |
|
1770 | rawurlencode(_t( |
|
1771 | __CLASS__ . '.REMOVEDPAGEFROMDRAFT', |
|
1772 | "Removed '{title}' from the draft site", |
|
1773 | ['title' => $record->Title] |
|
1774 | )) |
|
1775 | ); |
|
1776 | ||
1777 | // Even if the record has been deleted from stage and live, it can be viewed in "archive mode" |
|
1778 | return $this->getResponseNegotiator()->respond($this->getRequest()); |
|
1779 | } |
|
1780 | ||
1781 | /** |
|
1782 | * Delete this page from both live and stage |
|
@@ 1789-1815 (lines=27) @@ | ||
1786 | * @return HTTPResponse |
|
1787 | * @throws HTTPResponse_Exception |
|
1788 | */ |
|
1789 | public function archive($data, $form) |
|
1790 | { |
|
1791 | $id = $data['ID']; |
|
1792 | /** @var SiteTree $record */ |
|
1793 | $record = SiteTree::get()->byID($id); |
|
1794 | if (!$record || !$record->exists()) { |
|
1795 | throw new HTTPResponse_Exception("Bad record ID #$id", 404); |
|
1796 | } |
|
1797 | if (!$record->canArchive()) { |
|
1798 | return Security::permissionFailure(); |
|
1799 | } |
|
1800 | ||
1801 | // Archive record |
|
1802 | $record->doArchive(); |
|
1803 | ||
1804 | $this->getResponse()->addHeader( |
|
1805 | 'X-Status', |
|
1806 | rawurlencode(_t( |
|
1807 | __CLASS__ . '.ARCHIVEDPAGE', |
|
1808 | "Archived page '{title}'", |
|
1809 | ['title' => $record->Title] |
|
1810 | )) |
|
1811 | ); |
|
1812 | ||
1813 | // Even if the record has been deleted from stage and live, it can be viewed in "archive mode" |
|
1814 | return $this->getResponseNegotiator()->respond($this->getRequest()); |
|
1815 | } |
|
1816 | ||
1817 | public function publish($data, $form) |
|
1818 | { |
|
@@ 1824-1845 (lines=22) @@ | ||
1821 | return $this->save($data, $form); |
|
1822 | } |
|
1823 | ||
1824 | public function unpublish($data, $form) |
|
1825 | { |
|
1826 | $className = $this->config()->get('tree_class'); |
|
1827 | /** @var SiteTree $record */ |
|
1828 | $record = DataObject::get_by_id($className, $data['ID']); |
|
1829 | ||
1830 | if ($record && !$record->canUnpublish()) { |
|
1831 | return Security::permissionFailure($this); |
|
1832 | } |
|
1833 | if (!$record || !$record->ID) { |
|
1834 | throw new HTTPResponse_Exception("Bad record ID #" . (int)$data['ID'], 404); |
|
1835 | } |
|
1836 | ||
1837 | $record->doUnpublish(); |
|
1838 | ||
1839 | $this->getResponse()->addHeader( |
|
1840 | 'X-Status', |
|
1841 | rawurlencode(_t('SilverStripe\\CMS\\Controllers\\CMSMain.REMOVEDPAGE', "Removed '{title}' from the published site", array('title' => $record->Title))) |
|
1842 | ); |
|
1843 | ||
1844 | return $this->getResponseNegotiator()->respond($this->getRequest()); |
|
1845 | } |
|
1846 | ||
1847 | /** |
|
1848 | * @return HTTPResponse |