diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index f0a9b8b445..baf00f5c55 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -27,7 +27,7 @@ celerity_register_resource_map(array( ), 'aphront-error-view-css' => array( - 'uri' => '/res/43b5ae86/rsrc/css/aphront/error-view.css', + 'uri' => '/res/5ea93eb4/rsrc/css/aphront/error-view.css', 'type' => 'css', 'requires' => array( diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 4179c68c21..f26745631e 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -148,6 +148,8 @@ phutil_register_library_map(array( 'PhabricatorDirectoryItemEditController' => 'applications/directory/controller/itemedit', 'PhabricatorDirectoryItemListController' => 'applications/directory/controller/itemlist', 'PhabricatorDirectoryMainController' => 'applications/directory/controller/main', + 'PhabricatorDraft' => 'applications/draft/storage/draft', + 'PhabricatorDraftDAO' => 'applications/draft/storage/base', 'PhabricatorEmailLoginController' => 'applications/auth/controller/email', 'PhabricatorEmailTokenController' => 'applications/auth/controller/emailtoken', 'PhabricatorEnv' => 'infrastructure/env', @@ -327,6 +329,8 @@ phutil_register_library_map(array( 'PhabricatorDirectoryItemEditController' => 'PhabricatorDirectoryController', 'PhabricatorDirectoryItemListController' => 'PhabricatorDirectoryController', 'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController', + 'PhabricatorDraft' => 'PhabricatorDraftDAO', + 'PhabricatorDraftDAO' => 'PhabricatorLiskDAO', 'PhabricatorEmailLoginController' => 'PhabricatorAuthController', 'PhabricatorEmailTokenController' => 'PhabricatorAuthController', 'PhabricatorFacebookAuthController' => 'PhabricatorAuthController', diff --git a/src/applications/differential/controller/commentpreview/DifferentialCommentPreviewController.php b/src/applications/differential/controller/commentpreview/DifferentialCommentPreviewController.php index 96ef550e44..138e45af1e 100644 --- a/src/applications/differential/controller/commentpreview/DifferentialCommentPreviewController.php +++ b/src/applications/differential/controller/commentpreview/DifferentialCommentPreviewController.php @@ -47,6 +47,13 @@ class DifferentialCommentPreviewController extends DifferentialController { $view->setMarkupEngine($engine); $view->setPreview(true); + $draft = new PhabricatorDraft(); + $draft + ->setAuthorPHID($author_phid) + ->setDraftKey('differential-comment-'.$this->id) + ->setDraft($comment->getContent()) + ->replace(); + return id(new AphrontAjaxResponse()) ->setContent($view->render()); } diff --git a/src/applications/differential/controller/commentpreview/__init__.php b/src/applications/differential/controller/commentpreview/__init__.php index 0d1ba25e1e..344ca478f3 100644 --- a/src/applications/differential/controller/commentpreview/__init__.php +++ b/src/applications/differential/controller/commentpreview/__init__.php @@ -11,6 +11,7 @@ phutil_require_module('phabricator', 'applications/differential/controller/base' phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/storage/comment'); phutil_require_module('phabricator', 'applications/differential/view/revisioncomment'); +phutil_require_module('phabricator', 'applications/draft/storage/draft'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/differential/controller/commentsave/DifferentialCommentSaveController.php b/src/applications/differential/controller/commentsave/DifferentialCommentSaveController.php index 4494669420..70fcd2d9f2 100644 --- a/src/applications/differential/controller/commentsave/DifferentialCommentSaveController.php +++ b/src/applications/differential/controller/commentsave/DifferentialCommentSaveController.php @@ -47,7 +47,14 @@ class DifferentialCommentSaveController extends DifferentialController { ->save(); // TODO: Diff change detection? - // TODO: Clear draft + + $draft = id(new PhabricatorDraft())->loadOneWhere( + 'authorPHID = %s AND draftKey = %s', + $request->getUser()->getPHID(), + 'differential-comment-'.$revision->getID()); + if ($draft) { + $draft->delete(); + } return id(new AphrontRedirectResponse()) ->setURI('/D'.$revision->getID()); diff --git a/src/applications/differential/controller/commentsave/__init__.php b/src/applications/differential/controller/commentsave/__init__.php index d7c03ad621..4b7533387d 100644 --- a/src/applications/differential/controller/commentsave/__init__.php +++ b/src/applications/differential/controller/commentsave/__init__.php @@ -11,6 +11,7 @@ phutil_require_module('phabricator', 'aphront/response/redirect'); phutil_require_module('phabricator', 'applications/differential/controller/base'); phutil_require_module('phabricator', 'applications/differential/editor/comment'); phutil_require_module('phabricator', 'applications/differential/storage/revision'); +phutil_require_module('phabricator', 'applications/draft/storage/draft'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/differential/controller/revisionview/DifferentialRevisionViewController.php b/src/applications/differential/controller/revisionview/DifferentialRevisionViewController.php index 867c5092e0..cd72c45f71 100644 --- a/src/applications/differential/controller/revisionview/DifferentialRevisionViewController.php +++ b/src/applications/differential/controller/revisionview/DifferentialRevisionViewController.php @@ -27,6 +27,7 @@ class DifferentialRevisionViewController extends DifferentialController { public function processRequest() { $request = $this->getRequest(); + $user = $request->getUser(); $revision = id(new DifferentialRevision())->load($this->revisionID); if (!$revision) { @@ -60,7 +61,7 @@ class DifferentialRevisionViewController extends DifferentialController { $revision->getCCPHIDs(), array( $revision->getAuthorPHID(), - $request->getUser()->getPHID(), + $user->getPHID(), ), mpull($comments, 'getAuthorPHID')); $object_phids = array_unique($object_phids); @@ -111,7 +112,7 @@ class DifferentialRevisionViewController extends DifferentialController { $comment_view->setHandles($handles); $comment_view->setInlineComments($inlines); $comment_view->setChangesets($changesets); - $comment_view->setUser($request->getUser()); + $comment_view->setUser($user); $diff_history = new DifferentialRevisionUpdateHistoryView(); $diff_history->setDiffs($diffs); @@ -127,11 +128,22 @@ class DifferentialRevisionViewController extends DifferentialController { $changeset_view->setRevision($revision); $changeset_view->setVsMap($vs_map); + $draft = id(new PhabricatorDraft())->loadOneWhere( + 'authorPHID = %s AND draftKey = %s', + $user->getPHID(), + 'differential-comment-'.$revision->getID()); + if ($draft) { + $draft = $draft->getDraft(); + } else { + $draft = null; + } + $comment_form = new DifferentialAddCommentView(); $comment_form->setRevision($revision); $comment_form->setActions($this->getRevisionCommentActions($revision)); $comment_form->setActionURI('/differential/comment/save/'); - $comment_form->setUser($request->getUser()); + $comment_form->setUser($user); + $comment_form->setDraft($draft); return $this->buildStandardPageResponse( '