From a34f946b8ed0bcb23e809ccb319a42097728a8a4 Mon Sep 17 00:00:00 2001 From: epriestley Date: Sun, 30 Jan 2011 13:20:56 -0800 Subject: [PATCH] Remarkup for Differential comments. --- src/__celerity_resource_map__.php | 11 +++- src/__phutil_library_map__.php | 1 + .../DifferentialRevisionEditController.php | 2 +- .../revision/DifferentialRevisionEditor.php | 4 +- .../differential/editor/revision/__init__.php | 1 - .../DifferentialMarkupEngineFactory.php | 49 +++++++++++++++++ .../differential/parser/markup/__init__.php | 22 ++++++++ .../storage/revision/DifferentialRevision.php | 6 ++ .../DifferentialRevisionCommentView.php | 12 +++- .../DifferentialRevisionCommentListView.php | 4 ++ .../view/revisioncommentlist/__init__.php | 1 + .../differential/revision-comment.css | 55 +++++++++++++++++++ webroot/rsrc/css/core/remarkup.css | 30 ++++++++++ 13 files changed, 192 insertions(+), 6 deletions(-) create mode 100644 src/applications/differential/parser/markup/DifferentialMarkupEngineFactory.php create mode 100644 src/applications/differential/parser/markup/__init__.php create mode 100644 webroot/rsrc/css/core/remarkup.css diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index b044341f69..d7e9a5c5fb 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -118,7 +118,7 @@ celerity_register_resource_map(array( ), 'differential-revision-comment-css' => array( - 'uri' => '/res/d9924857/rsrc/css/application/differential/revision-comment.css', + 'uri' => '/res/21572195/rsrc/css/application/differential/revision-comment.css', 'type' => 'css', 'requires' => array( @@ -179,6 +179,15 @@ celerity_register_resource_map(array( ), 'disk' => '/rsrc/css/core/core.css', ), + 'phabricator-remarkup-css' => + array( + 'uri' => '/res/786989c3/rsrc/css/core/remarkup.css', + 'type' => 'css', + 'requires' => + array( + ), + 'disk' => '/rsrc/css/core/remarkup.css', + ), 'syntax-highlighting-css' => array( 'uri' => '/res/fb673ece/rsrc/css/core/syntax.css', diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index d67bb525ce..e8a816c867 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -88,6 +88,7 @@ phutil_register_library_map(array( 'DifferentialHunk' => 'applications/differential/storage/hunk', 'DifferentialLintStatus' => 'applications/differential/constants/lintstatus', 'DifferentialMail' => 'applications/differential/mail/base', + 'DifferentialMarkupEngineFactory' => 'applications/differential/parser/markup', 'DifferentialNewDiffMail' => 'applications/differential/mail/newdiff', 'DifferentialReviewRequestMail' => 'applications/differential/mail/reviewrequest', 'DifferentialRevision' => 'applications/differential/storage/revision', diff --git a/src/applications/differential/controller/revisionedit/DifferentialRevisionEditController.php b/src/applications/differential/controller/revisionedit/DifferentialRevisionEditController.php index 4e38ac654e..f767cba6c4 100644 --- a/src/applications/differential/controller/revisionedit/DifferentialRevisionEditController.php +++ b/src/applications/differential/controller/revisionedit/DifferentialRevisionEditController.php @@ -86,7 +86,7 @@ class DifferentialRevisionEditController extends DifferentialController { $editor->setReviewers($request->getArr('reviewers')); $editor->save(); - $response = id(new AphrontRedirectResponse()) + return id(new AphrontRedirectResponse()) ->setURI('/D'.$revision->getID()); } diff --git a/src/applications/differential/editor/revision/DifferentialRevisionEditor.php b/src/applications/differential/editor/revision/DifferentialRevisionEditor.php index 69c9707cfc..1df5a9cffb 100644 --- a/src/applications/differential/editor/revision/DifferentialRevisionEditor.php +++ b/src/applications/differential/editor/revision/DifferentialRevisionEditor.php @@ -365,9 +365,9 @@ class DifferentialRevisionEditor { } } else { - $diff = $revision->getActiveDiff(); + $diff = $revision->loadActiveDiff(); if ($diff) { - $changesets = id(new DifferentialChangeset())->loadAllWithDiff($diff); + $changesets = $diff->loadChangesets(); } else { $changesets = array(); } diff --git a/src/applications/differential/editor/revision/__init__.php b/src/applications/differential/editor/revision/__init__.php index 6a5577586c..de916456af 100644 --- a/src/applications/differential/editor/revision/__init__.php +++ b/src/applications/differential/editor/revision/__init__.php @@ -9,7 +9,6 @@ phutil_require_module('phabricator', 'applications/differential/constants/revisionstatus'); phutil_require_module('phabricator', 'applications/differential/mail/ccwelcome'); phutil_require_module('phabricator', 'applications/differential/mail/newdiff'); -phutil_require_module('phabricator', 'applications/differential/storage/changeset'); phutil_require_module('phabricator', 'applications/differential/storage/revision'); phutil_require_module('phabricator', 'storage/qsprintf'); phutil_require_module('phabricator', 'storage/queryfx'); diff --git a/src/applications/differential/parser/markup/DifferentialMarkupEngineFactory.php b/src/applications/differential/parser/markup/DifferentialMarkupEngineFactory.php new file mode 100644 index 0000000000..b76043387d --- /dev/null +++ b/src/applications/differential/parser/markup/DifferentialMarkupEngineFactory.php @@ -0,0 +1,49 @@ +setMarkupRules($rules); + } + } + + $engine->setBlockRules($blocks); + + return $engine; + } + +} diff --git a/src/applications/differential/parser/markup/__init__.php b/src/applications/differential/parser/markup/__init__.php new file mode 100644 index 0000000000..bd26fa5ba7 --- /dev/null +++ b/src/applications/differential/parser/markup/__init__.php @@ -0,0 +1,22 @@ +getID()); } + public function loadActiveDiff() { + return id(new DifferentialDiff())->loadOneWhere( + 'revisionID = %d ORDER BY id DESC LIMIT 1', + $this->getID()); + } + public function loadRelationships() { if (!$this->getID()) { $this->relationships = array(); diff --git a/src/applications/differential/view/revisioncomment/DifferentialRevisionCommentView.php b/src/applications/differential/view/revisioncomment/DifferentialRevisionCommentView.php index 50452a88f5..31e07687ff 100644 --- a/src/applications/differential/view/revisioncomment/DifferentialRevisionCommentView.php +++ b/src/applications/differential/view/revisioncomment/DifferentialRevisionCommentView.php @@ -20,6 +20,7 @@ final class DifferentialRevisionCommentView extends AphrontView { private $comment; private $handles; + private $markupEngine; public function setComment($comment) { $this->comment = $comment; @@ -31,8 +32,14 @@ final class DifferentialRevisionCommentView extends AphrontView { return $this; } + public function setMarkupEngine($markup_engine) { + $this->markupEngine = $markup_engine; + return $this; + } + public function render() { + require_celerity_resource('phabricator-remarkup-css'); require_celerity_resource('differential-revision-comment-css'); $comment = $this->comment; @@ -52,7 +59,10 @@ final class DifferentialRevisionCommentView extends AphrontView { $content = $comment->getContent(); if (strlen(rtrim($content))) { $title = "{$author} {$verb} this revision:"; - $content = phutil_escape_html($content); + $content = + '
'. + $this->markupEngine->markupText($content). + '
'; } else { $title = null; $content = diff --git a/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php b/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php index 8105a44ab4..dbcfc50b77 100644 --- a/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php +++ b/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php @@ -35,11 +35,15 @@ final class DifferentialRevisionCommentListView extends AphrontView { require_celerity_resource('differential-revision-comment-list-css'); + $factory = new DifferentialMarkupEngineFactory(); + $engine = $factory->newDifferentialCommentMarkupEngine(); + $comments = array(); foreach ($this->comments as $comment) { $view = new DifferentialRevisionCommentView(); $view->setComment($comment); $view->setHandles($this->handles); + $view->setMarkupEngine($engine); $comments[] = $view->render(); } diff --git a/src/applications/differential/view/revisioncommentlist/__init__.php b/src/applications/differential/view/revisioncommentlist/__init__.php index 26f89871ad..2e8410cce2 100644 --- a/src/applications/differential/view/revisioncommentlist/__init__.php +++ b/src/applications/differential/view/revisioncommentlist/__init__.php @@ -6,6 +6,7 @@ +phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/view/revisioncomment'); phutil_require_module('phabricator', 'infratructure/celerity/api'); phutil_require_module('phabricator', 'view/base'); diff --git a/webroot/rsrc/css/application/differential/revision-comment.css b/webroot/rsrc/css/application/differential/revision-comment.css index 82b068d736..9a3190b425 100644 --- a/webroot/rsrc/css/application/differential/revision-comment.css +++ b/webroot/rsrc/css/application/differential/revision-comment.css @@ -37,3 +37,58 @@ margin: 0em; padding: .3em 5px .4em 1.25em; } + +.differential-comment-content code { + width: 88ex; + width: 81ch; +} + +.differential-comment-nocontent { + font-weight: bold; +} + +.differential-comment-action-testplan .differential-comment-content { + border-color: #660099; + background: #f6f3ff; +} + +.differential-comment-action-abandon .differential-comment-content { + border-color: #222222; + background: #f3f3f3; +} + +.differential-comment-action-accept .differential-comment-content { + border-color: #009966; + background: #f3fff3; +} + +.differential-comment-action-reject .differential-comment-content { + border-color: #aa0000; + background: #fff3f3; +} + +.differential-comment-action-commit .differential-comment-content { + border-color: #006699; + background: #f3f3ff; +} + + +.differential-comment-action-reclaim .differential-comment-content { + border-color: #0099aa; + background: #f3fff9; +} + +.differential-comment-action-update .differential-comment-content { + border-color: #6699cc; + background: #f3f9ff; +} + +.differential-comment-action-add_reviewers .differential-comment-content { + border-color: #aa99cc; + background: #f9f3ff; +} + +.differential-comment-action-request_review .differential-comment-content { + border-color: #cc9966; + background: #fff9f3; +} diff --git a/webroot/rsrc/css/core/remarkup.css b/webroot/rsrc/css/core/remarkup.css new file mode 100644 index 0000000000..f686e6c75f --- /dev/null +++ b/webroot/rsrc/css/core/remarkup.css @@ -0,0 +1,30 @@ +/** + * @provides phabricator-remarkup-css + */ + +.phabricator-remarkup p { + margin: 1em 0; +} + +.phabricator-remarkup code { + background: #fdfae7; + border: 1px solid #f5e178; + display: block; + white-space: pre; + font-family: "Monaco", monospace; + font-size: 10px; + color: #000000; + margin: 1em 2em; + padding: .5em 1.5em; +} + +.phabricator-remarkup code.remarkup-counterexample { + border: 1px solid #aa0000; + background-color: #ffaaaa; +} + +.phabricator-remarkup ul { + list-style: disc; + margin: 1em 0 1em 3em; +} +