Add very basic conflict detection to Phriction
Summary: Ref T4768. This is extremely basic, but will stop conflicts from going silently unnoticed.
Test Plan: {F156219}
Reviewers: btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T4768
Differential Revision: https://secure.phabricator.com/D9167
This commit is contained in:
@@ -93,6 +93,36 @@ final class PhrictionEditController
|
|||||||
$errors = array();
|
$errors = array();
|
||||||
|
|
||||||
if ($request->isFormPost()) {
|
if ($request->isFormPost()) {
|
||||||
|
|
||||||
|
$overwrite = $request->getBool('overwrite');
|
||||||
|
if (!$overwrite) {
|
||||||
|
$edit_version = $request->getStr('contentVersion');
|
||||||
|
$current_version = $content->getVersion();
|
||||||
|
if ($edit_version != $current_version) {
|
||||||
|
$dialog = $this->newDialog()
|
||||||
|
->setTitle(pht('Edit Conflict!'))
|
||||||
|
->appendParagraph(
|
||||||
|
pht(
|
||||||
|
'Another user made changes to this document after you began '.
|
||||||
|
'editing it. Do you want to overwrite their changes?'))
|
||||||
|
->appendParagraph(
|
||||||
|
pht(
|
||||||
|
'If you choose to overwrite their changes, you should review '.
|
||||||
|
'the document edit history to see what you overwrote, and '.
|
||||||
|
'then make another edit to merge the changes if necessary.'))
|
||||||
|
->addSubmitButton(pht('Overwrite Changes'))
|
||||||
|
->addCancelButton($request->getRequestURI());
|
||||||
|
|
||||||
|
$dialog->addHiddenInput('overwrite', 'true');
|
||||||
|
foreach ($request->getPassthroughRequestData() as $key => $value) {
|
||||||
|
$dialog->addHiddenInput($key, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $dialog;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$title = $request->getStr('title');
|
$title = $request->getStr('title');
|
||||||
$notes = $request->getStr('description');
|
$notes = $request->getStr('description');
|
||||||
|
|
||||||
@@ -192,6 +222,7 @@ final class PhrictionEditController
|
|||||||
->setAction($request->getRequestURI()->getPath())
|
->setAction($request->getRequestURI()->getPath())
|
||||||
->addHiddenInput('slug', $document->getSlug())
|
->addHiddenInput('slug', $document->getSlug())
|
||||||
->addHiddenInput('nodraft', $request->getBool('nodraft'))
|
->addHiddenInput('nodraft', $request->getBool('nodraft'))
|
||||||
|
->addHiddenInput('contentVersion', $content->getVersion())
|
||||||
->appendChild(
|
->appendChild(
|
||||||
id(new AphrontFormTextControl())
|
id(new AphrontFormTextControl())
|
||||||
->setLabel(pht('Title'))
|
->setLabel(pht('Title'))
|
||||||
|
|||||||
Reference in New Issue
Block a user