1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-09-20 01:08:50 +02:00

Revision comment drafts.

This commit is contained in:
epriestley 2011-02-05 16:57:21 -08:00
parent 50bfcd0a30
commit 1c586db9be
13 changed files with 120 additions and 6 deletions

View file

@ -27,7 +27,7 @@ celerity_register_resource_map(array(
), ),
'aphront-error-view-css' => 'aphront-error-view-css' =>
array( array(
'uri' => '/res/43b5ae86/rsrc/css/aphront/error-view.css', 'uri' => '/res/5ea93eb4/rsrc/css/aphront/error-view.css',
'type' => 'css', 'type' => 'css',
'requires' => 'requires' =>
array( array(

View file

@ -148,6 +148,8 @@ phutil_register_library_map(array(
'PhabricatorDirectoryItemEditController' => 'applications/directory/controller/itemedit', 'PhabricatorDirectoryItemEditController' => 'applications/directory/controller/itemedit',
'PhabricatorDirectoryItemListController' => 'applications/directory/controller/itemlist', 'PhabricatorDirectoryItemListController' => 'applications/directory/controller/itemlist',
'PhabricatorDirectoryMainController' => 'applications/directory/controller/main', 'PhabricatorDirectoryMainController' => 'applications/directory/controller/main',
'PhabricatorDraft' => 'applications/draft/storage/draft',
'PhabricatorDraftDAO' => 'applications/draft/storage/base',
'PhabricatorEmailLoginController' => 'applications/auth/controller/email', 'PhabricatorEmailLoginController' => 'applications/auth/controller/email',
'PhabricatorEmailTokenController' => 'applications/auth/controller/emailtoken', 'PhabricatorEmailTokenController' => 'applications/auth/controller/emailtoken',
'PhabricatorEnv' => 'infrastructure/env', 'PhabricatorEnv' => 'infrastructure/env',
@ -327,6 +329,8 @@ phutil_register_library_map(array(
'PhabricatorDirectoryItemEditController' => 'PhabricatorDirectoryController', 'PhabricatorDirectoryItemEditController' => 'PhabricatorDirectoryController',
'PhabricatorDirectoryItemListController' => 'PhabricatorDirectoryController', 'PhabricatorDirectoryItemListController' => 'PhabricatorDirectoryController',
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController', 'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
'PhabricatorDraft' => 'PhabricatorDraftDAO',
'PhabricatorDraftDAO' => 'PhabricatorLiskDAO',
'PhabricatorEmailLoginController' => 'PhabricatorAuthController', 'PhabricatorEmailLoginController' => 'PhabricatorAuthController',
'PhabricatorEmailTokenController' => 'PhabricatorAuthController', 'PhabricatorEmailTokenController' => 'PhabricatorAuthController',
'PhabricatorFacebookAuthController' => 'PhabricatorAuthController', 'PhabricatorFacebookAuthController' => 'PhabricatorAuthController',

View file

@ -47,6 +47,13 @@ class DifferentialCommentPreviewController extends DifferentialController {
$view->setMarkupEngine($engine); $view->setMarkupEngine($engine);
$view->setPreview(true); $view->setPreview(true);
$draft = new PhabricatorDraft();
$draft
->setAuthorPHID($author_phid)
->setDraftKey('differential-comment-'.$this->id)
->setDraft($comment->getContent())
->replace();
return id(new AphrontAjaxResponse()) return id(new AphrontAjaxResponse())
->setContent($view->render()); ->setContent($view->render());
} }

View file

@ -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/parser/markup');
phutil_require_module('phabricator', 'applications/differential/storage/comment'); phutil_require_module('phabricator', 'applications/differential/storage/comment');
phutil_require_module('phabricator', 'applications/differential/view/revisioncomment'); 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('phabricator', 'applications/phid/handle/data');
phutil_require_module('phutil', 'utils'); phutil_require_module('phutil', 'utils');

View file

@ -47,7 +47,14 @@ class DifferentialCommentSaveController extends DifferentialController {
->save(); ->save();
// TODO: Diff change detection? // 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()) return id(new AphrontRedirectResponse())
->setURI('/D'.$revision->getID()); ->setURI('/D'.$revision->getID());

View file

@ -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/controller/base');
phutil_require_module('phabricator', 'applications/differential/editor/comment'); phutil_require_module('phabricator', 'applications/differential/editor/comment');
phutil_require_module('phabricator', 'applications/differential/storage/revision'); phutil_require_module('phabricator', 'applications/differential/storage/revision');
phutil_require_module('phabricator', 'applications/draft/storage/draft');
phutil_require_module('phutil', 'utils'); phutil_require_module('phutil', 'utils');

View file

@ -27,6 +27,7 @@ class DifferentialRevisionViewController extends DifferentialController {
public function processRequest() { public function processRequest() {
$request = $this->getRequest(); $request = $this->getRequest();
$user = $request->getUser();
$revision = id(new DifferentialRevision())->load($this->revisionID); $revision = id(new DifferentialRevision())->load($this->revisionID);
if (!$revision) { if (!$revision) {
@ -60,7 +61,7 @@ class DifferentialRevisionViewController extends DifferentialController {
$revision->getCCPHIDs(), $revision->getCCPHIDs(),
array( array(
$revision->getAuthorPHID(), $revision->getAuthorPHID(),
$request->getUser()->getPHID(), $user->getPHID(),
), ),
mpull($comments, 'getAuthorPHID')); mpull($comments, 'getAuthorPHID'));
$object_phids = array_unique($object_phids); $object_phids = array_unique($object_phids);
@ -111,7 +112,7 @@ class DifferentialRevisionViewController extends DifferentialController {
$comment_view->setHandles($handles); $comment_view->setHandles($handles);
$comment_view->setInlineComments($inlines); $comment_view->setInlineComments($inlines);
$comment_view->setChangesets($changesets); $comment_view->setChangesets($changesets);
$comment_view->setUser($request->getUser()); $comment_view->setUser($user);
$diff_history = new DifferentialRevisionUpdateHistoryView(); $diff_history = new DifferentialRevisionUpdateHistoryView();
$diff_history->setDiffs($diffs); $diff_history->setDiffs($diffs);
@ -127,11 +128,22 @@ class DifferentialRevisionViewController extends DifferentialController {
$changeset_view->setRevision($revision); $changeset_view->setRevision($revision);
$changeset_view->setVsMap($vs_map); $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 = new DifferentialAddCommentView();
$comment_form->setRevision($revision); $comment_form->setRevision($revision);
$comment_form->setActions($this->getRevisionCommentActions($revision)); $comment_form->setActions($this->getRevisionCommentActions($revision));
$comment_form->setActionURI('/differential/comment/save/'); $comment_form->setActionURI('/differential/comment/save/');
$comment_form->setUser($request->getUser()); $comment_form->setUser($user);
$comment_form->setDraft($draft);
return $this->buildStandardPageResponse( return $this->buildStandardPageResponse(
'<div class="differential-primary-pane">'. '<div class="differential-primary-pane">'.

View file

@ -20,6 +20,7 @@ phutil_require_module('phabricator', 'applications/differential/view/difftableof
phutil_require_module('phabricator', 'applications/differential/view/revisioncommentlist'); phutil_require_module('phabricator', 'applications/differential/view/revisioncommentlist');
phutil_require_module('phabricator', 'applications/differential/view/revisiondetail'); phutil_require_module('phabricator', 'applications/differential/view/revisiondetail');
phutil_require_module('phabricator', 'applications/differential/view/revisionupdatehistory'); phutil_require_module('phabricator', 'applications/differential/view/revisionupdatehistory');
phutil_require_module('phabricator', 'applications/draft/storage/draft');
phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'applications/phid/handle/data');
phutil_require_module('phabricator', 'view/form/error'); phutil_require_module('phabricator', 'view/form/error');

View file

@ -22,6 +22,7 @@ final class DifferentialAddCommentView extends AphrontView {
private $actions; private $actions;
private $actionURI; private $actionURI;
private $user; private $user;
private $draft;
public function setRevision($revision) { public function setRevision($revision) {
$this->revision = $revision; $this->revision = $revision;
@ -41,6 +42,11 @@ final class DifferentialAddCommentView extends AphrontView {
$this->user = $user; $this->user = $user;
} }
public function setDraft($draft) {
$this->draft = $draft;
return $this;
}
public function render() { public function render() {
require_celerity_resource('differential-revision-add-comment-css'); require_celerity_resource('differential-revision-add-comment-css');
@ -75,7 +81,8 @@ final class DifferentialAddCommentView extends AphrontView {
id(new AphrontFormTextAreaControl()) id(new AphrontFormTextAreaControl())
->setName('comment') ->setName('comment')
->setID('comment-content') ->setID('comment-content')
->setLabel('Comment')) ->setLabel('Comment')
->setValue($this->draft))
->appendChild( ->appendChild(
id(new AphrontFormSubmitControl()) id(new AphrontFormSubmitControl())
->setValue('Comment')); ->setValue('Comment'));

View file

@ -0,0 +1,25 @@
<?php
/*
* Copyright 2011 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class PhabricatorDraftDAO extends PhabricatorLiskDAO {
public function getApplicationName() {
return 'draft';
}
}

View file

@ -0,0 +1,12 @@
<?php
/**
* This file is automatically generated. Lint this module to rebuild it.
* @generated
*/
phutil_require_module('phabricator', 'applications/base/storage/lisk');
phutil_require_source('PhabricatorDraftDAO.php');

View file

@ -0,0 +1,25 @@
<?php
/*
* Copyright 2011 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class PhabricatorDraft extends PhabricatorDraftDAO {
protected $authorPHID;
protected $draftKey;
protected $draft;
}

View file

@ -0,0 +1,12 @@
<?php
/**
* This file is automatically generated. Lint this module to rebuild it.
* @generated
*/
phutil_require_module('phabricator', 'applications/draft/storage/base');
phutil_require_source('PhabricatorDraft.php');