mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 08:52:39 +01:00
Revision comment drafts.
This commit is contained in:
parent
50bfcd0a30
commit
1c586db9be
13 changed files with 120 additions and 6 deletions
|
@ -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(
|
||||||
|
|
|
@ -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',
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
|
@ -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');
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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');
|
||||||
|
|
||||||
|
|
|
@ -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">'.
|
||||||
|
|
|
@ -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');
|
||||||
|
|
||||||
|
|
|
@ -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'));
|
||||||
|
|
25
src/applications/draft/storage/base/PhabricatorDraftDAO.php
Normal file
25
src/applications/draft/storage/base/PhabricatorDraftDAO.php
Normal 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';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
12
src/applications/draft/storage/base/__init__.php
Normal file
12
src/applications/draft/storage/base/__init__.php
Normal 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');
|
25
src/applications/draft/storage/draft/PhabricatorDraft.php
Normal file
25
src/applications/draft/storage/draft/PhabricatorDraft.php
Normal 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;
|
||||||
|
|
||||||
|
}
|
12
src/applications/draft/storage/draft/__init__.php
Normal file
12
src/applications/draft/storage/draft/__init__.php
Normal 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');
|
Loading…
Reference in a new issue