Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15292717
D15463.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
44 KB
Referenced Files
None
Subscribers
None
D15463.diff
View Options
diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -7,10 +7,10 @@
*/
return array(
'names' => array(
- 'core.pkg.css' => '9c8e888d',
+ 'core.pkg.css' => 'c6ad5231',
'core.pkg.js' => '7d8faf57',
'darkconsole.pkg.js' => 'e7393ebb',
- 'differential.pkg.css' => '7d0a63a7',
+ 'differential.pkg.css' => '7ba78475',
'differential.pkg.js' => 'd0cd0df6',
'diffusion.pkg.css' => 'f45955ed',
'diffusion.pkg.js' => '3a9a8bfa',
@@ -57,8 +57,8 @@
'rsrc/css/application/dashboard/dashboard.css' => 'eb458607',
'rsrc/css/application/diff/inline-comment-summary.css' => '51efda3a',
'rsrc/css/application/differential/add-comment.css' => 'c47f8c40',
- 'rsrc/css/application/differential/changeset-view.css' => 'b6b0d1bb',
- 'rsrc/css/application/differential/core.css' => '7ac3cabc',
+ 'rsrc/css/application/differential/changeset-view.css' => '3e3b0b76',
+ 'rsrc/css/application/differential/core.css' => '5b7b8ff4',
'rsrc/css/application/differential/phui-inline-comment.css' => '5953c28e',
'rsrc/css/application/differential/revision-comment.css' => '14b8565a',
'rsrc/css/application/differential/revision-history.css' => '0e8eb855',
@@ -123,7 +123,7 @@
'rsrc/css/phui/phui-action-panel.css' => '91c7b835',
'rsrc/css/phui/phui-badge.css' => 'f25c3476',
'rsrc/css/phui/phui-big-info-view.css' => 'bd903741',
- 'rsrc/css/phui/phui-box.css' => '3830ab21',
+ 'rsrc/css/phui/phui-box.css' => '06153ae3',
'rsrc/css/phui/phui-button.css' => 'a64a8de6',
'rsrc/css/phui/phui-chart.css' => '6bf6f78e',
'rsrc/css/phui/phui-crumbs-view.css' => '79d536e5',
@@ -144,7 +144,7 @@
'rsrc/css/phui/phui-info-panel.css' => '27ea50a1',
'rsrc/css/phui/phui-info-view.css' => '6d7c3509',
'rsrc/css/phui/phui-list.css' => '9da2aa00',
- 'rsrc/css/phui/phui-object-box.css' => '91628842',
+ 'rsrc/css/phui/phui-object-box.css' => '6b487c57',
'rsrc/css/phui/phui-object-item-list-view.css' => '18b2ce8e',
'rsrc/css/phui/phui-pager.css' => 'bea33d23',
'rsrc/css/phui/phui-pinboard-view.css' => '2495140e',
@@ -156,7 +156,7 @@
'rsrc/css/phui/phui-status.css' => '37309046',
'rsrc/css/phui/phui-tag-view.css' => '6bbd83e2',
'rsrc/css/phui/phui-timeline-view.css' => 'a0173eba',
- 'rsrc/css/phui/phui-two-column-view.css' => 'e6bf86b6',
+ 'rsrc/css/phui/phui-two-column-view.css' => '61dd6d38',
'rsrc/css/phui/workboards/phui-workboard-color.css' => 'ac6fe6a7',
'rsrc/css/phui/workboards/phui-workboard.css' => 'e6d89647',
'rsrc/css/phui/workboards/phui-workcard.css' => '3646fb96',
@@ -545,8 +545,8 @@
'conpherence-update-css' => 'faf6be09',
'conpherence-widget-pane-css' => '775eaaba',
'd3' => 'a11a5ff2',
- 'differential-changeset-view-css' => 'b6b0d1bb',
- 'differential-core-view-css' => '7ac3cabc',
+ 'differential-changeset-view-css' => '3e3b0b76',
+ 'differential-core-view-css' => '5b7b8ff4',
'differential-inline-comment-editor' => '64a5550f',
'differential-revision-add-comment-css' => 'c47f8c40',
'differential-revision-comment-css' => '14b8565a',
@@ -805,7 +805,7 @@
'phui-action-panel-css' => '91c7b835',
'phui-badge-view-css' => 'f25c3476',
'phui-big-info-view-css' => 'bd903741',
- 'phui-box-css' => '3830ab21',
+ 'phui-box-css' => '06153ae3',
'phui-button-css' => 'a64a8de6',
'phui-calendar-css' => 'ccabe893',
'phui-calendar-day-css' => 'd1cf6f93',
@@ -833,7 +833,7 @@
'phui-info-view-css' => '6d7c3509',
'phui-inline-comment-view-css' => '5953c28e',
'phui-list-view-css' => '9da2aa00',
- 'phui-object-box-css' => '91628842',
+ 'phui-object-box-css' => '6b487c57',
'phui-object-item-list-view-css' => '18b2ce8e',
'phui-pager-css' => 'bea33d23',
'phui-pinboard-view-css' => '2495140e',
@@ -846,7 +846,7 @@
'phui-tag-view-css' => '6bbd83e2',
'phui-theme-css' => '027ba77e',
'phui-timeline-view-css' => 'a0173eba',
- 'phui-two-column-view-css' => 'e6bf86b6',
+ 'phui-two-column-view-css' => '61dd6d38',
'phui-workboard-color-css' => 'ac6fe6a7',
'phui-workboard-view-css' => 'e6d89647',
'phui-workcard-view-css' => '3646fb96',
@@ -1124,6 +1124,9 @@
'javelin-util',
'javelin-uri',
),
+ '3e3b0b76' => array(
+ 'phui-inline-comment-view-css',
+ ),
'3f5d6dbf' => array(
'javelin-behavior',
'javelin-dom',
@@ -1791,9 +1794,6 @@
'javelin-json',
'phabricator-draggable-list',
),
- 'b6b0d1bb' => array(
- 'phui-inline-comment-view-css',
- ),
'bae58312' => array(
'javelin-install',
'javelin-workboard-card',
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -473,7 +473,6 @@
'DifferentialParseCommitMessageConduitAPIMethod' => 'applications/differential/conduit/DifferentialParseCommitMessageConduitAPIMethod.php',
'DifferentialParseRenderTestCase' => 'applications/differential/__tests__/DifferentialParseRenderTestCase.php',
'DifferentialPathField' => 'applications/differential/customfield/DifferentialPathField.php',
- 'DifferentialPrimaryPaneView' => 'applications/differential/view/DifferentialPrimaryPaneView.php',
'DifferentialProjectReviewersField' => 'applications/differential/customfield/DifferentialProjectReviewersField.php',
'DifferentialProjectsField' => 'applications/differential/customfield/DifferentialProjectsField.php',
'DifferentialQueryConduitAPIMethod' => 'applications/differential/conduit/DifferentialQueryConduitAPIMethod.php',
@@ -508,7 +507,6 @@
'DifferentialRevisionControlSystem' => 'applications/differential/constants/DifferentialRevisionControlSystem.php',
'DifferentialRevisionDependedOnByRevisionEdgeType' => 'applications/differential/edge/DifferentialRevisionDependedOnByRevisionEdgeType.php',
'DifferentialRevisionDependsOnRevisionEdgeType' => 'applications/differential/edge/DifferentialRevisionDependsOnRevisionEdgeType.php',
- 'DifferentialRevisionDetailView' => 'applications/differential/view/DifferentialRevisionDetailView.php',
'DifferentialRevisionEditController' => 'applications/differential/controller/DifferentialRevisionEditController.php',
'DifferentialRevisionFulltextEngine' => 'applications/differential/search/DifferentialRevisionFulltextEngine.php',
'DifferentialRevisionHasCommitEdgeType' => 'applications/differential/edge/DifferentialRevisionHasCommitEdgeType.php',
@@ -4580,7 +4578,6 @@
'DifferentialParseCommitMessageConduitAPIMethod' => 'DifferentialConduitAPIMethod',
'DifferentialParseRenderTestCase' => 'PhabricatorTestCase',
'DifferentialPathField' => 'DifferentialCustomField',
- 'DifferentialPrimaryPaneView' => 'AphrontView',
'DifferentialProjectReviewersField' => 'DifferentialCustomField',
'DifferentialProjectsField' => 'DifferentialCoreCustomField',
'DifferentialQueryConduitAPIMethod' => 'DifferentialConduitAPIMethod',
@@ -4630,7 +4627,6 @@
'DifferentialRevisionControlSystem' => 'Phobject',
'DifferentialRevisionDependedOnByRevisionEdgeType' => 'PhabricatorEdgeType',
'DifferentialRevisionDependsOnRevisionEdgeType' => 'PhabricatorEdgeType',
- 'DifferentialRevisionDetailView' => 'AphrontView',
'DifferentialRevisionEditController' => 'DifferentialController',
'DifferentialRevisionFulltextEngine' => 'PhabricatorFulltextEngine',
'DifferentialRevisionHasCommitEdgeType' => 'PhabricatorEdgeType',
diff --git a/src/applications/differential/controller/DifferentialController.php b/src/applications/differential/controller/DifferentialController.php
--- a/src/applications/differential/controller/DifferentialController.php
+++ b/src/applications/differential/controller/DifferentialController.php
@@ -28,7 +28,8 @@
$viewer = $this->getViewer();
$toc_view = id(new PHUIDiffTableOfContentsListView())
- ->setUser($viewer);
+ ->setUser($viewer)
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY);
$have_owners = PhabricatorApplication::isClassInstalledForViewer(
'PhabricatorOwnersApplication',
diff --git a/src/applications/differential/controller/DifferentialRevisionViewController.php b/src/applications/differential/controller/DifferentialRevisionViewController.php
--- a/src/applications/differential/controller/DifferentialRevisionViewController.php
+++ b/src/applications/differential/controller/DifferentialRevisionViewController.php
@@ -40,7 +40,6 @@
$revision->attachActiveDiff(last($diffs));
$diff_vs = $request->getInt('vs');
-
$target_id = $request->getInt('id');
$target = idx($diffs, $target_id, end($diffs));
@@ -210,14 +209,10 @@
$commits_for_links = array();
}
- $revision_detail = id(new DifferentialRevisionDetailView())
- ->setUser($viewer)
- ->setRevision($revision)
- ->setDiff(end($diffs))
- ->setCustomFields($field_list)
- ->setURI($request->getRequestURI());
-
- $actions = $this->getRevisionActions($revision);
+ $header = $this->buildHeader($revision);
+ $subheader = $this->buildSubheaderView($revision);
+ $details = $this->buildDetails($revision, $field_list);
+ $curtain = $this->buildCurtain($revision);
$whitespace = $request->getStr(
'whitespace',
@@ -232,21 +227,16 @@
$symbol_indexes = array();
}
- $revision_detail->setActions($actions);
- $revision_detail->setUser($viewer);
-
- $revision_detail_box = $revision_detail->render();
-
$revision_warnings = $this->buildRevisionWarnings(
$revision,
$field_list,
$warning_handle_map,
$handles);
+ $info_view = null;
if ($revision_warnings) {
- $revision_warnings = id(new PHUIInfoView())
+ $info_view = id(new PHUIInfoView())
->setSeverity(PHUIInfoView::SEVERITY_WARNING)
->setErrors($revision_warnings);
- $revision_detail_box->setInfoView($revision_warnings);
}
$detail_diffs = array_select_keys(
@@ -277,39 +267,31 @@
$comment_view->setQuoteTargetID('comment-content');
}
- $wrap_id = celerity_generate_unique_node_id();
- $comment_view = phutil_tag(
- 'div',
- array(
- 'id' => $wrap_id,
- ),
- $comment_view);
+ $changeset_view = id(new DifferentialChangesetListView())
+ ->setChangesets($changesets)
+ ->setVisibleChangesets($visible_changesets)
+ ->setStandaloneURI('/differential/changeset/')
+ ->setRawFileURIs(
+ '/differential/changeset/?view=old',
+ '/differential/changeset/?view=new')
+ ->setUser($viewer)
+ ->setDiff($target)
+ ->setRenderingReferences($rendering_references)
+ ->setVsMap($vs_map)
+ ->setWhitespace($whitespace)
+ ->setSymbolIndexes($symbol_indexes)
+ ->setTitle(pht('Diff %s', $target->getID()))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY);
- $changeset_view = new DifferentialChangesetListView();
- $changeset_view->setChangesets($changesets);
- $changeset_view->setVisibleChangesets($visible_changesets);
+ if ($repository) {
+ $changeset_view->setRepository($repository);
+ }
if (!$viewer_is_anonymous) {
$changeset_view->setInlineCommentControllerURI(
'/differential/comment/inline/edit/'.$revision->getID().'/');
}
- $changeset_view->setStandaloneURI('/differential/changeset/');
- $changeset_view->setRawFileURIs(
- '/differential/changeset/?view=old',
- '/differential/changeset/?view=new');
-
- $changeset_view->setUser($viewer);
- $changeset_view->setDiff($target);
- $changeset_view->setRenderingReferences($rendering_references);
- $changeset_view->setVsMap($vs_map);
- $changeset_view->setWhitespace($whitespace);
- if ($repository) {
- $changeset_view->setRepository($repository);
- }
- $changeset_view->setSymbolIndexes($symbol_indexes);
- $changeset_view->setTitle(pht('Diff %s', $target->getID()));
-
$diff_history = id(new DifferentialRevisionUpdateHistoryView())
->setUser($viewer)
->setDiffs($diffs)
@@ -344,71 +326,9 @@
$comment_form = null;
if (!$viewer_is_anonymous) {
- $draft = id(new PhabricatorDraft())->loadOneWhere(
- 'authorPHID = %s AND draftKey = %s',
- $viewer->getPHID(),
- 'differential-comment-'.$revision->getID());
-
- $reviewers = array();
- $ccs = array();
- if ($draft) {
- $reviewers = idx($draft->getMetadata(), 'reviewers', array());
- $ccs = idx($draft->getMetadata(), 'ccs', array());
- if ($reviewers || $ccs) {
- $handles = $this->loadViewerHandles(array_merge($reviewers, $ccs));
- $reviewers = array_select_keys($handles, $reviewers);
- $ccs = array_select_keys($handles, $ccs);
- }
- }
-
- $comment_form = new DifferentialAddCommentView();
- $comment_form->setRevision($revision);
-
- $review_warnings = array();
- foreach ($field_list->getFields() as $field) {
- $review_warnings[] = $field->getWarningsForDetailView();
- }
- $review_warnings = array_mergev($review_warnings);
-
- if ($review_warnings) {
- $review_warnings_panel = id(new PHUIInfoView())
- ->setSeverity(PHUIInfoView::SEVERITY_WARNING)
- ->setErrors($review_warnings);
- $comment_form->setInfoView($review_warnings_panel);
- }
-
- $comment_form->setActions($this->getRevisionCommentActions($revision));
- $action_uri = $this->getApplicationURI(
- 'comment/save/'.$revision->getID().'/');
-
- $comment_form->setActionURI($action_uri);
- $comment_form->setUser($viewer);
- $comment_form->setDraft($draft);
- $comment_form->setReviewers(mpull($reviewers, 'getFullName', 'getPHID'));
- $comment_form->setCCs(mpull($ccs, 'getFullName', 'getPHID'));
-
- // TODO: This just makes the "Z" key work. Generalize this and remove
- // it at some point.
- $comment_form = phutil_tag(
- 'div',
- array(
- 'class' => 'differential-add-comment-panel',
- ),
- $comment_form);
+ $comment_form = $this->buildCommentForm($revision, $field_list);
}
- $pane_id = celerity_generate_unique_node_id();
- Javelin::initBehavior(
- 'differential-keyboard-navigation',
- array(
- 'haunt' => $pane_id,
- ));
- Javelin::initBehavior('differential-user-select');
-
- $page_pane = id(new DifferentialPrimaryPaneView())
- ->setID($pane_id)
- ->appendChild($comment_view);
-
$signatures = DifferentialRequiredSignaturesField::loadForRevision(
$revision);
$missing_signatures = false;
@@ -418,21 +338,17 @@
}
}
+ $footer = array();
+ $signature_message = null;
if ($missing_signatures) {
$signature_message = id(new PHUIInfoView())
- ->setErrors(
- array(
- array(
- phutil_tag('strong', array(), pht('Content Hidden:')),
- ' ',
- pht(
- 'The content of this revision is hidden until the author has '.
- 'signed all of the required legal agreements.'),
- ),
- ));
- $page_pane->appendChild($signature_message);
+ ->setTitle(pht('Content Hidden'))
+ ->appendChild(
+ pht(
+ 'The content of this revision is hidden until the author has '.
+ 'signed all of the required legal agreements.'));
} else {
- $page_pane->appendChild(
+ $footer[] =
array(
$diff_history,
$warning,
@@ -440,37 +356,28 @@
$toc_view,
$other_view,
$changeset_view,
- ));
+ );
}
if ($comment_form) {
- $page_pane->appendChild($comment_form);
+ $footer[] = $comment_form;
} else {
// TODO: For now, just use this to get "Login to Comment".
- $page_pane->appendChild(
- id(new PhabricatorApplicationTransactionCommentView())
- ->setUser($viewer)
- ->setRequestURI($request->getRequestURI()));
+ $footer[] = id(new PhabricatorApplicationTransactionCommentView())
+ ->setUser($viewer)
+ ->setRequestURI($request->getRequestURI());
}
$object_id = 'D'.$revision->getID();
-
$operations_box = $this->buildOperationsBox($revision);
- $content = array(
- $operations_box,
- $revision_detail_box,
- $diff_detail_box,
- $unit_box,
- $page_pane,
- );
-
$crumbs = $this->buildApplicationCrumbs();
$crumbs->addTextCrumb($object_id, '/'.$object_id);
+ $crumbs->setBorder(true);
$prefs = $viewer->loadPreferences();
-
$pref_filetree = PhabricatorUserPreferences::PREFERENCE_DIFF_FILETREE;
+ $nav = null;
if ($prefs->getPreference($pref_filetree)) {
$collapsed = $prefs->getPreference(
PhabricatorUserPreferences::PREFERENCE_NAV_COLLAPSED,
@@ -481,15 +388,38 @@
->setBaseURI(new PhutilURI('/D'.$revision->getID()))
->setCollapsed((bool)$collapsed)
->build($changesets);
- } else {
- $nav = null;
}
- $page = $this->newPage()
+ // Haunt Mode
+ $pane_id = celerity_generate_unique_node_id();
+ Javelin::initBehavior(
+ 'differential-keyboard-navigation',
+ array(
+ 'haunt' => $pane_id,
+ ));
+ Javelin::initBehavior('differential-user-select');
+
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setSubheader($subheader)
+ ->setCurtain($curtain)
+ ->setID($pane_id)
+ ->setMainColumn(array(
+ $operations_box,
+ $info_view,
+ $details,
+ $diff_detail_box,
+ $unit_box,
+ $comment_view,
+ $signature_message,
+ ))
+ ->setFooter($footer);
+
+ $page = $this->newPage()
->setTitle($object_id.' '.$revision->getTitle())
->setCrumbs($crumbs)
->setPageObjectPHIDs(array($revision->getPHID()))
- ->appendChild($content);
+ ->appendChild($view);
if ($nav) {
$page->setNavigation($nav);
@@ -498,59 +428,183 @@
return $page;
}
- private function getRevisionActions(DifferentialRevision $revision) {
- $viewer = $this->getRequest()->getUser();
+ private function buildHeader(DifferentialRevision $revision) {
+ $view = id(new PHUIHeaderView())
+ ->setHeader($revision->getTitle($revision))
+ ->setUser($this->getViewer())
+ ->setPolicyObject($revision)
+ ->setHeaderIcon('fa-cog');
+
+ $status = $revision->getStatus();
+ $status_name =
+ DifferentialRevisionStatus::renderFullDescription($status);
+
+ $view->addProperty(PHUIHeaderView::PROPERTY_STATUS, $status_name);
+
+ return $view;
+ }
+
+ private function buildSubheaderView(DifferentialRevision $revision) {
+ $viewer = $this->getViewer();
+
+ $author_phid = $revision->getAuthorPHID();
+
+ $author = $viewer->renderHandle($author_phid)->render();
+ $date = phabricator_datetime($revision->getDateCreated(), $viewer);
+ $author = phutil_tag('strong', array(), $author);
+
+ $handles = $viewer->loadHandles(array($author_phid));
+ $image_uri = $handles[$author_phid]->getImageURI();
+ $image_href = $handles[$author_phid]->getURI();
+
+ $content = pht('Authored by %s on %s.', $author, $date);
+
+ return id(new PHUIHeadThingView())
+ ->setImage($image_uri)
+ ->setImageHref($image_href)
+ ->setContent($content);
+ }
+
+ private function buildDetails(
+ DifferentialRevision $revision,
+ $custom_fields) {
+ $viewer = $this->getViewer();
+ $properties = id(new PHUIPropertyListView())
+ ->setUser($viewer);
+
+ if ($custom_fields) {
+ $custom_fields->appendFieldsToPropertyList(
+ $revision,
+ $viewer,
+ $properties);
+ }
+
+ $header = id(new PHUIHeaderView())
+ ->setHeader(pht('DETAILS'));
+
+ return id(new PHUIObjectBoxView())
+ ->setHeader($header)
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
+ ->appendChild($properties);
+ }
+
+ private function buildCurtain(DifferentialRevision $revision) {
+ $viewer = $this->getViewer();
$revision_id = $revision->getID();
$revision_phid = $revision->getPHID();
+ $curtain = $this->newCurtainView($revision);
$can_edit = PhabricatorPolicyFilter::hasCapability(
$viewer,
$revision,
PhabricatorPolicyCapability::CAN_EDIT);
- $actions = array();
-
- $actions[] = id(new PhabricatorActionView())
- ->setIcon('fa-pencil')
- ->setHref("/differential/revision/edit/{$revision_id}/")
- ->setName(pht('Edit Revision'))
- ->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit);
-
- $actions[] = id(new PhabricatorActionView())
- ->setIcon('fa-upload')
- ->setHref("/differential/revision/update/{$revision_id}/")
- ->setName(pht('Update Diff'))
- ->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit);
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-pencil')
+ ->setHref("/differential/revision/edit/{$revision_id}/")
+ ->setName(pht('Edit Revision'))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
+
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-upload')
+ ->setHref("/differential/revision/update/{$revision_id}/")
+ ->setName(pht('Update Diff'))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
$this->requireResource('phabricator-object-selector-css');
$this->requireResource('javelin-behavior-phabricator-object-selector');
- $actions[] = id(new PhabricatorActionView())
- ->setIcon('fa-link')
- ->setName(pht('Edit Dependencies'))
- ->setHref("/search/attach/{$revision_phid}/DREV/dependencies/")
- ->setWorkflow(true)
- ->setDisabled(!$can_edit);
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-link')
+ ->setName(pht('Edit Dependencies'))
+ ->setHref("/search/attach/{$revision_phid}/DREV/dependencies/")
+ ->setWorkflow(true)
+ ->setDisabled(!$can_edit));
$maniphest = 'PhabricatorManiphestApplication';
if (PhabricatorApplication::isClassInstalled($maniphest)) {
- $actions[] = id(new PhabricatorActionView())
- ->setIcon('fa-anchor')
- ->setName(pht('Edit Maniphest Tasks'))
- ->setHref("/search/attach/{$revision_phid}/TASK/")
- ->setWorkflow(true)
- ->setDisabled(!$can_edit);
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-anchor')
+ ->setName(pht('Edit Maniphest Tasks'))
+ ->setHref("/search/attach/{$revision_phid}/TASK/")
+ ->setWorkflow(true)
+ ->setDisabled(!$can_edit));
}
$request_uri = $this->getRequest()->getRequestURI();
- $actions[] = id(new PhabricatorActionView())
- ->setIcon('fa-download')
- ->setName(pht('Download Raw Diff'))
- ->setHref($request_uri->alter('download', 'true'));
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-download')
+ ->setName(pht('Download Raw Diff'))
+ ->setHref($request_uri->alter('download', 'true')));
+
+ return $curtain;
+ }
+
+ private function buildCommentForm(
+ DifferentialRevision $revision,
+ $field_list) {
+
+ $viewer = $this->getViewer();
+
+ $draft = id(new PhabricatorDraft())->loadOneWhere(
+ 'authorPHID = %s AND draftKey = %s',
+ $viewer->getPHID(),
+ 'differential-comment-'.$revision->getID());
+
+ $reviewers = array();
+ $ccs = array();
+ if ($draft) {
+ $reviewers = idx($draft->getMetadata(), 'reviewers', array());
+ $ccs = idx($draft->getMetadata(), 'ccs', array());
+ if ($reviewers || $ccs) {
+ $handles = $this->loadViewerHandles(array_merge($reviewers, $ccs));
+ $reviewers = array_select_keys($handles, $reviewers);
+ $ccs = array_select_keys($handles, $ccs);
+ }
+ }
+
+ $comment_form = id(new DifferentialAddCommentView())
+ ->setRevision($revision);
+
+ $review_warnings = array();
+ foreach ($field_list->getFields() as $field) {
+ $review_warnings[] = $field->getWarningsForDetailView();
+ }
+ $review_warnings = array_mergev($review_warnings);
- return $actions;
+ if ($review_warnings) {
+ $review_warnings_panel = id(new PHUIInfoView())
+ ->setSeverity(PHUIInfoView::SEVERITY_WARNING)
+ ->setErrors($review_warnings);
+ $comment_form->setInfoView($review_warnings_panel);
+ }
+
+ $action_uri = $this->getApplicationURI(
+ 'comment/save/'.$revision->getID().'/');
+
+ $comment_form->setActions($this->getRevisionCommentActions($revision))
+ ->setActionURI($action_uri)
+ ->setUser($viewer)
+ ->setDraft($draft)
+ ->setReviewers(mpull($reviewers, 'getFullName', 'getPHID'))
+ ->setCCs(mpull($ccs, 'getFullName', 'getPHID'));
+
+ // TODO: This just makes the "Z" key work. Generalize this and remove
+ // it at some point.
+ $comment_form = phutil_tag(
+ 'div',
+ array(
+ 'class' => 'differential-add-comment-panel',
+ ),
+ $comment_form);
+ return $comment_form;
}
private function getRevisionCommentActions(DifferentialRevision $revision) {
@@ -558,7 +612,7 @@
DifferentialAction::ACTION_COMMENT => true,
);
- $viewer = $this->getRequest()->getUser();
+ $viewer = $this->getViewer();
$viewer_phid = $viewer->getPHID();
$viewer_is_owner = ($viewer_phid == $revision->getAuthorPHID());
$viewer_is_reviewer = in_array($viewer_phid, $revision->getReviewers());
@@ -814,11 +868,12 @@
$viewer = $this->getViewer();
$header = id(new PHUIHeaderView())
- ->setHeader(pht('Recent Similar Open Revisions'));
+ ->setHeader(pht('Recent Similar Revisions'));
$view = id(new DifferentialRevisionListView())
->setHeader($header)
->setRevisions($revisions)
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setUser($viewer);
$phids = $view->getRequiredHandlePHIDs();
@@ -845,7 +900,7 @@
assert_instances_of($changesets, 'DifferentialChangeset');
assert_instances_of($vs_changesets, 'DifferentialChangeset');
- $viewer = $this->getRequest()->getUser();
+ $viewer = $this->getViewer();
id(new DifferentialHunkQuery())
->setViewer($viewer)
@@ -978,7 +1033,8 @@
}
$box = id(new PHUIObjectBoxView())
- ->setHeaderText(pht('Diff Detail'))
+ ->setHeaderText(pht('DIFF DETAIL'))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setUser($viewer);
$last_tab = null;
@@ -1061,7 +1117,8 @@
}
$box_view = id(new PHUIObjectBoxView())
- ->setHeaderText(pht('Active Operations'));
+ ->setHeaderText(pht('ACTIVE OPERATIONS'))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY);
return id(new DrydockRepositoryOperationStatusView())
->setUser($viewer)
@@ -1078,10 +1135,6 @@
return null;
}
- if (!$diff->getBuildable()) {
- return null;
- }
-
$interesting_messages = array();
foreach ($diff->getUnitMessages() as $message) {
switch ($message->getResult()) {
@@ -1109,6 +1162,7 @@
->setBuildable($diff->getBuildable())
->setUnitMessages($diff->getUnitMessages())
->setLimit(5)
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setShowViewAll(true);
}
diff --git a/src/applications/differential/customfield/DifferentialAuthorField.php b/src/applications/differential/customfield/DifferentialAuthorField.php
--- a/src/applications/differential/customfield/DifferentialAuthorField.php
+++ b/src/applications/differential/customfield/DifferentialAuthorField.php
@@ -20,7 +20,7 @@
}
public function shouldAppearInPropertyView() {
- return true;
+ return false;
}
public function renderPropertyViewLabel() {
diff --git a/src/applications/differential/engineextension/DifferentialHovercardEngineExtension.php b/src/applications/differential/engineextension/DifferentialHovercardEngineExtension.php
--- a/src/applications/differential/engineextension/DifferentialHovercardEngineExtension.php
+++ b/src/applications/differential/engineextension/DifferentialHovercardEngineExtension.php
@@ -70,8 +70,6 @@
$hovercard->addField(pht('Summary'), $summary);
}
- $tag = DifferentialRevisionDetailView::renderTagForRevision($revision);
- $hovercard->addTag($tag);
}
}
diff --git a/src/applications/differential/view/DifferentialAddCommentView.php b/src/applications/differential/view/DifferentialAddCommentView.php
--- a/src/applications/differential/view/DifferentialAddCommentView.php
+++ b/src/applications/differential/view/DifferentialAddCommentView.php
@@ -163,7 +163,7 @@
$is_serious = PhabricatorEnv::getEnvConfig('phabricator.serious-business');
$header_text = $is_serious
? pht('Add Comment')
- : pht('Leap Into Action');
+ : pht('Leap Into Action!');
$header = id(new PHUIHeaderView())
->setHeader($header_text);
diff --git a/src/applications/differential/view/DifferentialChangesetListView.php b/src/applications/differential/view/DifferentialChangesetListView.php
--- a/src/applications/differential/view/DifferentialChangesetListView.php
+++ b/src/applications/differential/view/DifferentialChangesetListView.php
@@ -8,6 +8,7 @@
private $inlineURI;
private $renderURI = '/differential/changeset/';
private $whitespace;
+ private $background;
private $standaloneURI;
private $leftRawFileURI;
@@ -112,6 +113,11 @@
return $this;
}
+ public function setBackground($background) {
+ $this->background = $background;
+ return $this;
+ }
+
public function render() {
$viewer = $this->getViewer();
@@ -254,6 +260,7 @@
$object_box = id(new PHUIObjectBoxView())
->setHeader($header)
->setCollapsed(true)
+ ->setBackground($this->background)
->appendChild($content);
return $object_box;
diff --git a/src/applications/differential/view/DifferentialLocalCommitsView.php b/src/applications/differential/view/DifferentialLocalCommitsView.php
--- a/src/applications/differential/view/DifferentialLocalCommitsView.php
+++ b/src/applications/differential/view/DifferentialLocalCommitsView.php
@@ -127,6 +127,7 @@
return id(new PHUIObjectBoxView())
->setHeaderText(pht('Local Commits'))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setTable($table);
}
diff --git a/src/applications/differential/view/DifferentialPrimaryPaneView.php b/src/applications/differential/view/DifferentialPrimaryPaneView.php
deleted file mode 100644
--- a/src/applications/differential/view/DifferentialPrimaryPaneView.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-final class DifferentialPrimaryPaneView extends AphrontView {
-
- private $id;
-
- public function setID($id) {
- $this->id = $id;
- return $this;
- }
-
- public function render() {
-
- return phutil_tag(
- 'div',
- array(
- 'class' => 'differential-primary-pane',
- 'id' => $this->id,
- ),
- $this->renderChildren());
- }
-
-}
diff --git a/src/applications/differential/view/DifferentialRevisionDetailView.php b/src/applications/differential/view/DifferentialRevisionDetailView.php
deleted file mode 100644
--- a/src/applications/differential/view/DifferentialRevisionDetailView.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-
-final class DifferentialRevisionDetailView extends AphrontView {
-
- private $revision;
- private $actions;
- private $customFields;
- private $diff;
- private $uri;
- private $actionList;
-
- public function setURI($uri) {
- $this->uri = $uri;
- return $this;
- }
- public function getURI() {
- return $this->uri;
- }
-
- public function setDiff(DifferentialDiff $diff) {
- $this->diff = $diff;
- return $this;
- }
- private function getDiff() {
- return $this->diff;
- }
-
- public function setRevision(DifferentialRevision $revision) {
- $this->revision = $revision;
- return $this;
- }
-
- public function setActions(array $actions) {
- $this->actions = $actions;
- return $this;
- }
- private function getActions() {
- return $this->actions;
- }
-
- public function setActionList(PhabricatorActionListView $list) {
- $this->actionList = $list;
- return $this;
- }
-
- public function getActionList() {
- return $this->actionList;
- }
-
- public function setCustomFields(PhabricatorCustomFieldList $list) {
- $this->customFields = $list;
- return $this;
- }
-
- public function render() {
-
- $this->requireResource('differential-core-view-css');
-
- $revision = $this->revision;
- $user = $this->getUser();
-
- $header = $this->renderHeader($revision);
-
- $actions = id(new PhabricatorActionListView())
- ->setUser($user)
- ->setObject($revision);
- foreach ($this->getActions() as $action) {
- $actions->addAction($action);
- }
-
- $properties = id(new PHUIPropertyListView())
- ->setUser($user)
- ->setObject($revision);
-
- $properties->setHasKeyboardShortcuts(true);
- $properties->setActionList($actions);
- $this->setActionList($actions);
-
- $field_list = $this->customFields;
- if ($field_list) {
- $field_list->appendFieldsToPropertyList(
- $revision,
- $user,
- $properties);
- }
-
- $object_box = id(new PHUIObjectBoxView())
- ->setHeader($header)
- ->addPropertyList($properties);
-
- return $object_box;
- }
-
- private function renderHeader(DifferentialRevision $revision) {
- $view = id(new PHUIHeaderView())
- ->setHeader($revision->getTitle($revision))
- ->setUser($this->getUser())
- ->setPolicyObject($revision);
-
- $status = $revision->getStatus();
- $status_name =
- DifferentialRevisionStatus::renderFullDescription($status);
-
- $view->addProperty(PHUIHeaderView::PROPERTY_STATUS, $status_name);
-
- return $view;
- }
-
- public static function renderTagForRevision(
- DifferentialRevision $revision) {
-
- $status = $revision->getStatus();
- $status_name =
- ArcanistDifferentialRevisionStatus::getNameForRevisionStatus($status);
-
- return id(new PHUITagView())
- ->setType(PHUITagView::TYPE_STATE)
- ->setName($status_name);
- }
-
-}
diff --git a/src/applications/differential/view/DifferentialRevisionListView.php b/src/applications/differential/view/DifferentialRevisionListView.php
--- a/src/applications/differential/view/DifferentialRevisionListView.php
+++ b/src/applications/differential/view/DifferentialRevisionListView.php
@@ -11,6 +11,7 @@
private $header;
private $noDataString;
private $noBox;
+ private $background = null;
public function setNoDataString($no_data_string) {
$this->noDataString = $no_data_string;
@@ -38,6 +39,11 @@
return $this;
}
+ public function setBackground($background) {
+ $this->background = $background;
+ return $this;
+ }
+
public function getRequiredHandlePHIDs() {
$phids = array();
foreach ($this->revisions as $revision) {
@@ -192,6 +198,7 @@
if ($this->header && !$this->noBox) {
$list->setFlush(true);
$list = id(new PHUIObjectBoxView())
+ ->setBackground($this->background)
->setObjectList($list);
if ($this->header instanceof PHUIHeaderView) {
diff --git a/src/applications/differential/view/DifferentialRevisionUpdateHistoryView.php b/src/applications/differential/view/DifferentialRevisionUpdateHistoryView.php
--- a/src/applications/differential/view/DifferentialRevisionUpdateHistoryView.php
+++ b/src/applications/differential/view/DifferentialRevisionUpdateHistoryView.php
@@ -305,7 +305,7 @@
return id(new PHUIObjectBoxView())
->setHeaderText(pht('Revision Update History'))
- ->setFlush(true)
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setTable($content);
}
diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php
--- a/src/applications/diffusion/controller/DiffusionCommitController.php
+++ b/src/applications/diffusion/controller/DiffusionCommitController.php
@@ -214,13 +214,11 @@
// changes inline even if there are more than the soft limit.
$show_all_details = $request->getBool('show_all');
- $change_panel = new PHUIObjectBoxView();
- $header = new PHUIHeaderView();
- $header->setHeader(pht('Changes (%s)', new PhutilNumber($count)));
- $change_panel->setID('toc');
+ $header = id(new PHUIHeaderView())
+ ->setHeader(pht('Changes (%s)', new PhutilNumber($count)));
+ $warning_view = null;
if ($count > self::CHANGES_LIMIT && !$show_all_details) {
-
$button = id(new PHUIButtonView())
->setText(pht('Show All Changes'))
->setHref('?show_all=true')
@@ -230,11 +228,9 @@
$warning_view = id(new PHUIInfoView())
->setSeverity(PHUIInfoView::SEVERITY_WARNING)
->setTitle(pht('Very Large Commit'))
+ ->addButton($button)
->appendChild(
pht('This commit is very large. Load each file individually.'));
-
- $change_panel->setInfoView($warning_view);
- $header->addActionLink($button);
}
$changesets = DiffusionPathChange::convertToDifferentialChangesets(
@@ -244,12 +240,11 @@
// TODO: This table and panel shouldn't really be separate, but we need
// to clean up the "Load All Files" interaction first.
$change_table = $this->buildTableOfContents(
- $changesets);
+ $changesets,
+ $header,
+ $warning_view);
- $change_panel->setTable($change_table);
- $change_panel->setHeader($header);
-
- $content[] = $change_panel;
+ $content[] = $change_table;
$vcs = $repository->getVersionControlSystem();
switch ($vcs) {
@@ -1017,12 +1012,21 @@
return $parser->processCorpus($corpus);
}
- private function buildTableOfContents(array $changesets) {
+ private function buildTableOfContents(
+ array $changesets,
+ $header,
+ $info_view) {
+
$drequest = $this->getDiffusionRequest();
$viewer = $this->getViewer();
$toc_view = id(new PHUIDiffTableOfContentsListView())
- ->setUser($viewer);
+ ->setUser($viewer)
+ ->setHeader($header);
+
+ if ($info_view) {
+ $toc_view->setInfoView($info_view);
+ }
// TODO: This is hacky, we just want access to the linkX() methods on
// DiffusionView.
diff --git a/src/applications/harbormaster/view/HarbormasterUnitSummaryView.php b/src/applications/harbormaster/view/HarbormasterUnitSummaryView.php
--- a/src/applications/harbormaster/view/HarbormasterUnitSummaryView.php
+++ b/src/applications/harbormaster/view/HarbormasterUnitSummaryView.php
@@ -7,6 +7,7 @@
private $limit;
private $excuse;
private $showViewAll;
+ private $background;
public function setBuildable(HarbormasterBuildable $buildable) {
$this->buildable = $buildable;
@@ -33,6 +34,11 @@
return $this;
}
+ public function setBackground($background) {
+ $this->background = $background;
+ return $this;
+ }
+
public function render() {
$messages = $this->messages;
$buildable = $this->buildable;
@@ -54,9 +60,14 @@
$tag_icon = 'fa-ban';
}
+ $tag = id(new PHUITagView())
+ ->setType(PHUITagView::TYPE_SHADE)
+ ->setShade($tag_color)
+ ->setIcon($tag_icon)
+ ->setName($tag_text);
+
$header = id(new PHUIHeaderView())
- ->setHeader(pht('Unit Tests'))
- ->setStatus($tag_icon, $tag_color, $tag_text);
+ ->setHeader(array(pht('Unit Tests'), $tag));
if ($this->showViewAll) {
$view_all = id(new PHUIButtonView())
@@ -98,6 +109,10 @@
$box->setTable($table);
+ if ($this->background) {
+ $box->setBackground($this->background);
+ }
+
return $box;
}
diff --git a/src/infrastructure/diff/view/PHUIDiffTableOfContentsListView.php b/src/infrastructure/diff/view/PHUIDiffTableOfContentsListView.php
--- a/src/infrastructure/diff/view/PHUIDiffTableOfContentsListView.php
+++ b/src/infrastructure/diff/view/PHUIDiffTableOfContentsListView.php
@@ -4,6 +4,9 @@
private $items = array();
private $authorityPackages;
+ private $header;
+ private $infoView;
+ private $background;
public function addItem(PHUIDiffTableOfContentsItemView $item) {
$this->items[] = $item;
@@ -20,6 +23,21 @@
return $this->authorityPackages;
}
+ public function setBackground($background) {
+ $this->background = $background;
+ return $this;
+ }
+
+ public function setHeader(PHUIHeaderView $header) {
+ $this->header = $header;
+ return $this;
+ }
+
+ public function setInfoView(PHUIInfoView $infoview) {
+ $this->infoView = $infoview;
+ return $this;
+ }
+
public function render() {
$this->requireResource('differential-core-view-css');
$this->requireResource('differential-table-of-contents-css');
@@ -142,11 +160,24 @@
->setAnchorName('toc')
->setNavigationMarker(true);
- return id(new PHUIObjectBoxView())
- ->setHeaderText(pht('Table of Contents'))
+ $header = id(new PHUIHeaderView())
+ ->setHeader(pht('Table of Contents'));
+
+ if ($this->header) {
+ $header = $this->header;
+ }
+
+ $box = id(new PHUIObjectBoxView())
+ ->setHeader($header)
+ ->setBackground($this->background)
->setTable($table)
->appendChild($anchor)
->appendChild($buttons);
+
+ if ($this->infoView) {
+ $box->setInfoView($this->infoView);
+ }
+ return $box;
}
}
diff --git a/webroot/rsrc/css/application/differential/changeset-view.css b/webroot/rsrc/css/application/differential/changeset-view.css
--- a/webroot/rsrc/css/application/differential/changeset-view.css
+++ b/webroot/rsrc/css/application/differential/changeset-view.css
@@ -6,7 +6,7 @@
.differential-changeset {
position: relative;
margin: 0;
- padding-top: 32px;
+ padding-top: 16px;
overflow-x: auto;
/* Fixes what seems to be a layout bug in Firefox which causes scrollbars,
@@ -265,7 +265,7 @@
.differential-changeset h1 {
font-size: {$biggestfontsize};
- padding: 2px 0 12px 12px;
+ padding: 2px 0 20px 12px;
line-height: 20px;
color: #000;
}
@@ -322,7 +322,7 @@
.differential-changeset-buttons {
float: right;
- margin-right: 8px;
+ margin-right: 12px;
}
.device-phone .differential-changeset-buttons {
@@ -362,3 +362,7 @@
tr.differential-inline-loading {
opacity: 0.5;
}
+
+.differential-review-stage {
+ position: relative;
+}
diff --git a/webroot/rsrc/css/application/differential/core.css b/webroot/rsrc/css/application/differential/core.css
--- a/webroot/rsrc/css/application/differential/core.css
+++ b/webroot/rsrc/css/application/differential/core.css
@@ -3,7 +3,7 @@
*/
.differential-primary-pane {
- margin-bottom: 32px;
+ margin-top: -20px;
}
.differential-panel {
@@ -23,3 +23,7 @@
-ms-user-select: none;
user-select: none;
}
+
+.differential-content-hidden {
+ margin: 0 0 24px 0;
+}
diff --git a/webroot/rsrc/css/phui/phui-box.css b/webroot/rsrc/css/phui/phui-box.css
--- a/webroot/rsrc/css/phui/phui-box.css
+++ b/webroot/rsrc/css/phui/phui-box.css
@@ -66,10 +66,6 @@
padding: 0;
}
-.phui-box.phui-box-blue-property .phui-header-header {
- text-transform: uppercase;
-}
-
.phui-box.phui-box-blue-property .phui-header-header .phui-header-icon {
margin-right: 6px;
}
diff --git a/webroot/rsrc/css/phui/phui-object-box.css b/webroot/rsrc/css/phui/phui-object-box.css
--- a/webroot/rsrc/css/phui/phui-object-box.css
+++ b/webroot/rsrc/css/phui/phui-object-box.css
@@ -52,6 +52,16 @@
margin: 8px 8px 0 8px;
}
+.phui-object-box .phui-header-header .phui-tag-view {
+ margin-left: 8px;
+}
+
+.phui-object-box .phui-header-header .phui-tag-core {
+ border-color: transparent;
+ padding: 1px 6px;
+ font-size: {$normalfontsize};
+}
+
/* - Object Box Colors ------------------------------------------------------ */
.phui-box-border.phui-object-box-green {
diff --git a/webroot/rsrc/css/phui/phui-two-column-view.css b/webroot/rsrc/css/phui/phui-two-column-view.css
--- a/webroot/rsrc/css/phui/phui-two-column-view.css
+++ b/webroot/rsrc/css/phui/phui-two-column-view.css
@@ -182,12 +182,12 @@
/* Info View */
-.phui-two-column-view .phui-two-column-content .phui-info-view {
+.phui-two-column-view .phui-two-column-row .phui-info-view {
margin: 0 0 20px 0;
padding: 16px;
}
-.phui-two-column-view .phui-two-column-content .phui-object-box
+.phui-two-column-view .phui-two-column-row .phui-object-box
.phui-info-view {
margin: 0;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 6, 2:51 AM (6 d, 9 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7228558
Default Alt Text
D15463.diff (44 KB)
Attached To
Mode
D15463: Convert Differential to new layout
Attached
Detach File
Event Timeline
Log In to Comment