mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-02 10:51:01 +01:00
prevents users from deleting already deleted/moved phriction documents
Summary: Deps D5198 since it uses a constant from D5198 accidentalbigdiff I sure doubled the size of this file ^^ Could be that I added unserious business. Test Plan: Created a page. Had it open in two browser windows. Deleted in one. This is the second attempt: {F34458} Reviewers: epriestley, btrahan Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D5202
This commit is contained in:
parent
0a2a5c7175
commit
6b0138c1ae
1 changed files with 42 additions and 9 deletions
|
@ -21,15 +21,47 @@ final class PhrictionDeleteController extends PhrictionController {
|
|||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
$error_view = null;
|
||||
$disallowed_states = array(
|
||||
PhrictionDocumentStatus::STATUS_DELETED, // Stupid
|
||||
PhrictionDocumentStatus::STATUS_MOVED, // Makes no sense
|
||||
);
|
||||
if (in_array($document->getStatus(), $disallowed_states)) {
|
||||
$is_serious =
|
||||
PhabricatorEnv::getEnvConfig('phabricator.serious-business');
|
||||
|
||||
if ($is_serious) {
|
||||
$e_text = pht('An already moved or deleted document can not be '.
|
||||
'deleted');
|
||||
} else {
|
||||
$e_text = pht('I\'m not sure if you got the notice, but you can\'t '.
|
||||
'delete an already deleted or moved document.');
|
||||
}
|
||||
|
||||
$error_view = new AphrontErrorView();
|
||||
$error_view->setSeverity(AphrontErrorView::SEVERITY_ERROR);
|
||||
$error_view->setTitle(pht('Can not delete page'));
|
||||
$error_view->appendChild($e_text);
|
||||
|
||||
$error_view = $error_view->render();
|
||||
}
|
||||
|
||||
$document_uri = PhrictionDocument::getSlugURI($document->getSlug());
|
||||
|
||||
if ($request->isFormPost()) {
|
||||
if (!$error_view && $request->isFormPost()) {
|
||||
$editor = id(PhrictionDocumentEditor::newForSlug($document->getSlug()))
|
||||
->setActor($user)
|
||||
->delete();
|
||||
return id(new AphrontRedirectResponse())->setURI($document_uri);
|
||||
}
|
||||
|
||||
if ($error_view) {
|
||||
$dialog = id(new AphrontDialogView())
|
||||
->setUser($user)
|
||||
->setTitle(pht('Error!'))
|
||||
->appendChild($error_view)
|
||||
->addCancelButton($document_uri);
|
||||
} else {
|
||||
$dialog = id(new AphrontDialogView())
|
||||
->setUser($user)
|
||||
->setTitle(pht('Delete document?'))
|
||||
|
@ -38,6 +70,7 @@ final class PhrictionDeleteController extends PhrictionController {
|
|||
'reverting to a previous version.'))
|
||||
->addSubmitButton(pht('Delete'))
|
||||
->addCancelButton($document_uri);
|
||||
}
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue