mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-25 16:22:43 +01:00
Support (basic) commenting on Phriction documents
Summary: Depends on D19659. Fixes T1894. Ref T13077. See PHI840. - Add an EditEngine, although it currently supports no fields. - Add (basic, top-level-only) commenting (we already had the table in the database). This will probably create some issues. I'm most concerned about documents accumulating a ton of old, irrelevant comments over time which are hard to keep track of and no longer relevant. But I think this is probably a step forward in almost all cases, and a good thing on the balance. This also moves us incrementally toward putting all editing on top of EditEngine. Test Plan: {F5877347} Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13077, T1894 Differential Revision: https://secure.phabricator.com/D19660
This commit is contained in:
parent
f5e90a363e
commit
e19c555913
9 changed files with 130 additions and 4 deletions
|
@ -146,7 +146,7 @@ return array(
|
||||||
'rsrc/css/phui/phui-comment-panel.css' => 'f50152ad',
|
'rsrc/css/phui/phui-comment-panel.css' => 'f50152ad',
|
||||||
'rsrc/css/phui/phui-crumbs-view.css' => '10728aaa',
|
'rsrc/css/phui/phui-crumbs-view.css' => '10728aaa',
|
||||||
'rsrc/css/phui/phui-curtain-view.css' => '2bdaf026',
|
'rsrc/css/phui/phui-curtain-view.css' => '2bdaf026',
|
||||||
'rsrc/css/phui/phui-document-pro.css' => '1a08ef4b',
|
'rsrc/css/phui/phui-document-pro.css' => 'd033e8d5',
|
||||||
'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf',
|
'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf',
|
||||||
'rsrc/css/phui/phui-document.css' => 'c4ac41f9',
|
'rsrc/css/phui/phui-document.css' => 'c4ac41f9',
|
||||||
'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9',
|
'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9',
|
||||||
|
@ -814,7 +814,7 @@ return array(
|
||||||
'phui-curtain-view-css' => '2bdaf026',
|
'phui-curtain-view-css' => '2bdaf026',
|
||||||
'phui-document-summary-view-css' => '9ca48bdf',
|
'phui-document-summary-view-css' => '9ca48bdf',
|
||||||
'phui-document-view-css' => 'c4ac41f9',
|
'phui-document-view-css' => 'c4ac41f9',
|
||||||
'phui-document-view-pro-css' => '1a08ef4b',
|
'phui-document-view-pro-css' => 'd033e8d5',
|
||||||
'phui-feed-story-css' => '44a9c8e9',
|
'phui-feed-story-css' => '44a9c8e9',
|
||||||
'phui-font-icon-base-css' => '870a7360',
|
'phui-font-icon-base-css' => '870a7360',
|
||||||
'phui-fontkit-css' => '1320ed01',
|
'phui-fontkit-css' => '1320ed01',
|
||||||
|
|
|
@ -5021,6 +5021,7 @@ phutil_register_library_map(array(
|
||||||
'PhrictionDocumentController' => 'applications/phriction/controller/PhrictionDocumentController.php',
|
'PhrictionDocumentController' => 'applications/phriction/controller/PhrictionDocumentController.php',
|
||||||
'PhrictionDocumentDatasource' => 'applications/phriction/typeahead/PhrictionDocumentDatasource.php',
|
'PhrictionDocumentDatasource' => 'applications/phriction/typeahead/PhrictionDocumentDatasource.php',
|
||||||
'PhrictionDocumentDeleteTransaction' => 'applications/phriction/xaction/PhrictionDocumentDeleteTransaction.php',
|
'PhrictionDocumentDeleteTransaction' => 'applications/phriction/xaction/PhrictionDocumentDeleteTransaction.php',
|
||||||
|
'PhrictionDocumentEditEngine' => 'applications/phriction/editor/PhrictionDocumentEditEngine.php',
|
||||||
'PhrictionDocumentFerretEngine' => 'applications/phriction/search/PhrictionDocumentFerretEngine.php',
|
'PhrictionDocumentFerretEngine' => 'applications/phriction/search/PhrictionDocumentFerretEngine.php',
|
||||||
'PhrictionDocumentFulltextEngine' => 'applications/phriction/search/PhrictionDocumentFulltextEngine.php',
|
'PhrictionDocumentFulltextEngine' => 'applications/phriction/search/PhrictionDocumentFulltextEngine.php',
|
||||||
'PhrictionDocumentHeraldAdapter' => 'applications/phriction/herald/PhrictionDocumentHeraldAdapter.php',
|
'PhrictionDocumentHeraldAdapter' => 'applications/phriction/herald/PhrictionDocumentHeraldAdapter.php',
|
||||||
|
@ -5042,6 +5043,7 @@ phutil_register_library_map(array(
|
||||||
'PhrictionDocumentVersionTransaction' => 'applications/phriction/xaction/PhrictionDocumentVersionTransaction.php',
|
'PhrictionDocumentVersionTransaction' => 'applications/phriction/xaction/PhrictionDocumentVersionTransaction.php',
|
||||||
'PhrictionEditConduitAPIMethod' => 'applications/phriction/conduit/PhrictionEditConduitAPIMethod.php',
|
'PhrictionEditConduitAPIMethod' => 'applications/phriction/conduit/PhrictionEditConduitAPIMethod.php',
|
||||||
'PhrictionEditController' => 'applications/phriction/controller/PhrictionEditController.php',
|
'PhrictionEditController' => 'applications/phriction/controller/PhrictionEditController.php',
|
||||||
|
'PhrictionEditEngineController' => 'applications/phriction/controller/PhrictionEditEngineController.php',
|
||||||
'PhrictionHistoryConduitAPIMethod' => 'applications/phriction/conduit/PhrictionHistoryConduitAPIMethod.php',
|
'PhrictionHistoryConduitAPIMethod' => 'applications/phriction/conduit/PhrictionHistoryConduitAPIMethod.php',
|
||||||
'PhrictionHistoryController' => 'applications/phriction/controller/PhrictionHistoryController.php',
|
'PhrictionHistoryController' => 'applications/phriction/controller/PhrictionHistoryController.php',
|
||||||
'PhrictionInfoConduitAPIMethod' => 'applications/phriction/conduit/PhrictionInfoConduitAPIMethod.php',
|
'PhrictionInfoConduitAPIMethod' => 'applications/phriction/conduit/PhrictionInfoConduitAPIMethod.php',
|
||||||
|
@ -11140,6 +11142,7 @@ phutil_register_library_map(array(
|
||||||
'PhrictionDocumentController' => 'PhrictionController',
|
'PhrictionDocumentController' => 'PhrictionController',
|
||||||
'PhrictionDocumentDatasource' => 'PhabricatorTypeaheadDatasource',
|
'PhrictionDocumentDatasource' => 'PhabricatorTypeaheadDatasource',
|
||||||
'PhrictionDocumentDeleteTransaction' => 'PhrictionDocumentVersionTransaction',
|
'PhrictionDocumentDeleteTransaction' => 'PhrictionDocumentVersionTransaction',
|
||||||
|
'PhrictionDocumentEditEngine' => 'PhabricatorEditEngine',
|
||||||
'PhrictionDocumentFerretEngine' => 'PhabricatorFerretEngine',
|
'PhrictionDocumentFerretEngine' => 'PhabricatorFerretEngine',
|
||||||
'PhrictionDocumentFulltextEngine' => 'PhabricatorFulltextEngine',
|
'PhrictionDocumentFulltextEngine' => 'PhabricatorFulltextEngine',
|
||||||
'PhrictionDocumentHeraldAdapter' => 'HeraldAdapter',
|
'PhrictionDocumentHeraldAdapter' => 'HeraldAdapter',
|
||||||
|
@ -11161,6 +11164,7 @@ phutil_register_library_map(array(
|
||||||
'PhrictionDocumentVersionTransaction' => 'PhrictionDocumentTransactionType',
|
'PhrictionDocumentVersionTransaction' => 'PhrictionDocumentTransactionType',
|
||||||
'PhrictionEditConduitAPIMethod' => 'PhrictionConduitAPIMethod',
|
'PhrictionEditConduitAPIMethod' => 'PhrictionConduitAPIMethod',
|
||||||
'PhrictionEditController' => 'PhrictionController',
|
'PhrictionEditController' => 'PhrictionController',
|
||||||
|
'PhrictionEditEngineController' => 'PhrictionController',
|
||||||
'PhrictionHistoryConduitAPIMethod' => 'PhrictionConduitAPIMethod',
|
'PhrictionHistoryConduitAPIMethod' => 'PhrictionConduitAPIMethod',
|
||||||
'PhrictionHistoryController' => 'PhrictionController',
|
'PhrictionHistoryController' => 'PhrictionController',
|
||||||
'PhrictionInfoConduitAPIMethod' => 'PhrictionConduitAPIMethod',
|
'PhrictionInfoConduitAPIMethod' => 'PhrictionConduitAPIMethod',
|
||||||
|
|
|
@ -63,6 +63,9 @@ final class PhabricatorPhrictionApplication extends PhabricatorApplication {
|
||||||
|
|
||||||
'preview/(?P<slug>.*/)' => 'PhrictionMarkupPreviewController',
|
'preview/(?P<slug>.*/)' => 'PhrictionMarkupPreviewController',
|
||||||
'diff/(?P<id>[1-9]\d*)/' => 'PhrictionDiffController',
|
'diff/(?P<id>[1-9]\d*)/' => 'PhrictionDiffController',
|
||||||
|
|
||||||
|
$this->getEditRoutePattern('document/edit/')
|
||||||
|
=> 'PhrictionEditEngineController',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -352,6 +352,13 @@ final class PhrictionDocumentController
|
||||||
$document,
|
$document,
|
||||||
new PhrictionTransactionQuery());
|
new PhrictionTransactionQuery());
|
||||||
|
|
||||||
|
$edit_engine = id(new PhrictionDocumentEditEngine())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->setTargetObject($document);
|
||||||
|
|
||||||
|
$comment_view = $edit_engine
|
||||||
|
->buildEditEngineCommentView($document);
|
||||||
|
|
||||||
return $this->newPage()
|
return $this->newPage()
|
||||||
->setTitle($page_title)
|
->setTitle($page_title)
|
||||||
->setCrumbs($crumbs)
|
->setCrumbs($crumbs)
|
||||||
|
@ -368,6 +375,7 @@ final class PhrictionDocumentController
|
||||||
array(
|
array(
|
||||||
$children,
|
$children,
|
||||||
$timeline,
|
$timeline,
|
||||||
|
$comment_view,
|
||||||
)),
|
)),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhrictionEditEngineController
|
||||||
|
extends PhrictionController {
|
||||||
|
|
||||||
|
public function handleRequest(AphrontRequest $request) {
|
||||||
|
// NOTE: For now, this controller is only used to handle comments.
|
||||||
|
|
||||||
|
return id(new PhrictionDocumentEditEngine())
|
||||||
|
->setController($this)
|
||||||
|
->buildResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhrictionDocumentEditEngine
|
||||||
|
extends PhabricatorEditEngine {
|
||||||
|
|
||||||
|
const ENGINECONST = 'phriction.document';
|
||||||
|
|
||||||
|
public function isEngineConfigurable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEngineName() {
|
||||||
|
return pht('Phriction Document');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryHeader() {
|
||||||
|
return pht('Edit Phriction Document Configurations');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryText() {
|
||||||
|
return pht('This engine is used to edit Phriction documents.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEngineApplicationClass() {
|
||||||
|
return 'PhabricatorPhrictionApplication';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function newEditableObject() {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
return PhrictionDocument::initializeNewDocument(
|
||||||
|
$viewer,
|
||||||
|
'/');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function newObjectQuery() {
|
||||||
|
return id(new PhrictionDocumentQuery())
|
||||||
|
->needContent(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getObjectCreateTitleText($object) {
|
||||||
|
return pht('Create Document');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getObjectCreateButtonText($object) {
|
||||||
|
return pht('Create Document');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getObjectEditTitleText($object) {
|
||||||
|
return pht('Edit Document: %s', $object->getContent()->getTitle());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getObjectEditShortText($object) {
|
||||||
|
return pht('Edit Document');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getObjectCreateShortText() {
|
||||||
|
return pht('Create Document');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getObjectName() {
|
||||||
|
return pht('Document');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getEditorURI() {
|
||||||
|
return '/phriction/document/edit/';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getObjectCreateCancelURI($object) {
|
||||||
|
return '/phriction/document/';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getObjectViewURI($object) {
|
||||||
|
return $object->getURI();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getCreateNewObjectPolicy() {
|
||||||
|
// NOTE: For now, this engine is only to support commenting.
|
||||||
|
return PhabricatorPolicies::POLICY_NOONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function buildCustomEditFields($object) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -243,6 +243,7 @@ class PhabricatorApplicationTransactionCommentView extends AphrontView {
|
||||||
|
|
||||||
$comment_box = id(new PHUIObjectBoxView())
|
$comment_box = id(new PHUIObjectBoxView())
|
||||||
->setFlush(true)
|
->setFlush(true)
|
||||||
|
->setNoBorder(true)
|
||||||
->addClass('phui-comment-form-view')
|
->addClass('phui-comment-form-view')
|
||||||
->addSigil('phui-comment-form')
|
->addSigil('phui-comment-form')
|
||||||
->appendChild(
|
->appendChild(
|
||||||
|
|
|
@ -25,6 +25,7 @@ final class PHUIObjectBoxView extends AphrontTagView {
|
||||||
private $showHideHref;
|
private $showHideHref;
|
||||||
private $showHideContent;
|
private $showHideContent;
|
||||||
private $showHideOpen;
|
private $showHideOpen;
|
||||||
|
private $noBorder;
|
||||||
|
|
||||||
private $propertyLists = array();
|
private $propertyLists = array();
|
||||||
|
|
||||||
|
@ -147,6 +148,11 @@ final class PHUIObjectBoxView extends AphrontTagView {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setNoBorder($no_border) {
|
||||||
|
$this->noBorder = $no_border;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function setValidationException(
|
public function setValidationException(
|
||||||
PhabricatorApplicationTransactionValidationException $ex = null) {
|
PhabricatorApplicationTransactionValidationException $ex = null) {
|
||||||
$this->validationException = $ex;
|
$this->validationException = $ex;
|
||||||
|
@ -156,7 +162,9 @@ final class PHUIObjectBoxView extends AphrontTagView {
|
||||||
protected function getTagAttributes() {
|
protected function getTagAttributes() {
|
||||||
$classes = array();
|
$classes = array();
|
||||||
$classes[] = 'phui-box';
|
$classes[] = 'phui-box';
|
||||||
$classes[] = 'phui-box-border';
|
if (!$this->noBorder) {
|
||||||
|
$classes[] = 'phui-box-border';
|
||||||
|
}
|
||||||
$classes[] = 'phui-object-box';
|
$classes[] = 'phui-object-box';
|
||||||
$classes[] = 'mlt mll mlr';
|
$classes[] = 'mlt mll mlr';
|
||||||
|
|
||||||
|
|
|
@ -241,10 +241,13 @@ body.printable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.phui-document-view-pro-box {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
.phui-document-view-pro-box .phui-timeline-view {
|
.phui-document-view-pro-box .phui-timeline-view {
|
||||||
padding: 16px 0 0 0;
|
padding: 16px 0 0 0;
|
||||||
background: none;
|
background: none;
|
||||||
border-top: 1px solid rgba({$alphablue}, 0.20);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.phui-document-view-pro-box .phui-timeline-wedge {
|
.phui-document-view-pro-box .phui-timeline-wedge {
|
||||||
|
|
Loading…
Reference in a new issue