diff --git a/resources/sprite/gradients/lightblue-header.png b/resources/sprite/gradients/lightblue-header.png index 35006c91a8..b2177d7d7e 100644 Binary files a/resources/sprite/gradients/lightblue-header.png and b/resources/sprite/gradients/lightblue-header.png differ diff --git a/resources/sprite/manifest/gradient.json b/resources/sprite/manifest/gradient.json index 4482167b4e..4e66b3aa3b 100644 --- a/resources/sprite/manifest/gradient.json +++ b/resources/sprite/manifest/gradient.json @@ -34,7 +34,7 @@ "gradient-lightblue-header" : { "name" : "gradient-lightblue-header", "rule" : ".gradient-lightblue-header", - "hash" : "b838d2eb15f9b620e82b4da240bf464a" + "hash" : "e7753a6ce63c6822a559266eef9e255b" }, "gradient-menu-label" : { "name" : "gradient-menu-label", diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index a4228091f0..0934e971bb 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -632,8 +632,8 @@ celerity_register_resource_map(array( ), '/rsrc/image/sprite-gradient.png' => array( - 'hash' => 'c6c42387e625948e683d9d8c62ea1b7f', - 'uri' => '/res/c6c42387/rsrc/image/sprite-gradient.png', + 'hash' => '1f0306b0ca281b1e5b96de0096269f1d', + 'uri' => '/res/1f0306b0/rsrc/image/sprite-gradient.png', 'disk' => '/rsrc/image/sprite-gradient.png', 'type' => 'png', ), @@ -890,7 +890,7 @@ celerity_register_resource_map(array( ), 'aphront-panel-view-css' => array( - 'uri' => '/res/915e0a4b/rsrc/css/aphront/panel-view.css', + 'uri' => '/res/70d7011b/rsrc/css/aphront/panel-view.css', 'type' => 'css', 'requires' => array( @@ -1017,7 +1017,7 @@ celerity_register_resource_map(array( ), 'differential-changeset-view-css' => array( - 'uri' => '/res/b1c98bac/rsrc/css/application/differential/changeset-view.css', + 'uri' => '/res/5fd9d5c0/rsrc/css/application/differential/changeset-view.css', 'type' => 'css', 'requires' => array( @@ -1026,7 +1026,7 @@ celerity_register_resource_map(array( ), 'differential-core-view-css' => array( - 'uri' => '/res/85fe5117/rsrc/css/application/differential/core.css', + 'uri' => '/res/7db1595a/rsrc/css/application/differential/core.css', 'type' => 'css', 'requires' => array( @@ -3018,7 +3018,7 @@ celerity_register_resource_map(array( ), 'phabricator-action-list-view-css' => array( - 'uri' => '/res/c6219563/rsrc/css/layout/phabricator-action-list-view.css', + 'uri' => '/res/ade71822/rsrc/css/layout/phabricator-action-list-view.css', 'type' => 'css', 'requires' => array( @@ -3371,7 +3371,7 @@ celerity_register_resource_map(array( ), 'phabricator-property-list-view-css' => array( - 'uri' => '/res/abc1bb1c/rsrc/css/layout/phabricator-property-list-view.css', + 'uri' => '/res/7835f74e/rsrc/css/layout/phabricator-property-list-view.css', 'type' => 'css', 'requires' => array( @@ -3474,7 +3474,7 @@ celerity_register_resource_map(array( ), 'phabricator-timeline-view-css' => array( - 'uri' => '/res/79b6d385/rsrc/css/layout/phabricator-timeline-view.css', + 'uri' => '/res/09567421/rsrc/css/layout/phabricator-timeline-view.css', 'type' => 'css', 'requires' => array( @@ -3656,7 +3656,7 @@ celerity_register_resource_map(array( ), 'pholio-css' => array( - 'uri' => '/res/cfdf017f/rsrc/css/application/pholio/pholio.css', + 'uri' => '/res/e64264c9/rsrc/css/application/pholio/pholio.css', 'type' => 'css', 'requires' => array( @@ -3742,7 +3742,7 @@ celerity_register_resource_map(array( ), 'phui-document-view-css' => array( - 'uri' => '/res/7928af2d/rsrc/css/phui/phui-document.css', + 'uri' => '/res/40e39942/rsrc/css/phui/phui-document.css', 'type' => 'css', 'requires' => array( @@ -3769,7 +3769,7 @@ celerity_register_resource_map(array( ), 'phui-form-view-css' => array( - 'uri' => '/res/d87bdbeb/rsrc/css/phui/phui-form-view.css', + 'uri' => '/res/157ddd8b/rsrc/css/phui/phui-form-view.css', 'type' => 'css', 'requires' => array( @@ -3778,7 +3778,7 @@ celerity_register_resource_map(array( ), 'phui-header-view-css' => array( - 'uri' => '/res/2a60156a/rsrc/css/phui/phui-header-view.css', + 'uri' => '/res/94208bd6/rsrc/css/phui/phui-header-view.css', 'type' => 'css', 'requires' => array( @@ -3803,6 +3803,15 @@ celerity_register_resource_map(array( ), 'disk' => '/rsrc/css/phui/phui-list.css', ), + 'phui-object-box-css' => + array( + 'uri' => '/res/3c1129d2/rsrc/css/phui/phui-object-box.css', + 'type' => 'css', + 'requires' => + array( + ), + 'disk' => '/rsrc/css/phui/phui-object-box.css', + ), 'phui-object-item-list-view-css' => array( 'uri' => '/res/71f7f081/rsrc/css/phui/phui-object-item-list-view.css', @@ -3877,7 +3886,7 @@ celerity_register_resource_map(array( ), 'ponder-comment-table-css' => array( - 'uri' => '/res/fd114c83/rsrc/css/application/ponder/comments.css', + 'uri' => '/res/4aa4b865/rsrc/css/application/ponder/comments.css', 'type' => 'css', 'requires' => array( @@ -4084,7 +4093,7 @@ celerity_register_resource_map(array( ), 'sprite-gradient-css' => array( - 'uri' => '/res/08c64fb3/rsrc/css/sprite-gradient.css', + 'uri' => '/res/e31d9063/rsrc/css/sprite-gradient.css', 'type' => 'css', 'requires' => array( @@ -4175,7 +4184,7 @@ celerity_register_resource_map(array( ), array( 'packages' => array( - 'd72a9463' => + '9d16ff0b' => array( 'name' => 'core.pkg.css', 'symbols' => @@ -4224,7 +4233,7 @@ celerity_register_resource_map(array( 41 => 'phabricator-tag-view-css', 42 => 'phui-list-view-css', ), - 'uri' => '/res/pkg/d72a9463/core.pkg.css', + 'uri' => '/res/pkg/9d16ff0b/core.pkg.css', 'type' => 'css', ), '64eeda79' => @@ -4286,7 +4295,7 @@ celerity_register_resource_map(array( 'uri' => '/res/pkg/4ccfeb47/darkconsole.pkg.js', 'type' => 'js', ), - '44bfe40c' => + 'b55e602f' => array( 'name' => 'differential.pkg.css', 'symbols' => @@ -4305,7 +4314,7 @@ celerity_register_resource_map(array( 11 => 'differential-local-commits-view-css', 12 => 'inline-comment-summary-css', ), - 'uri' => '/res/pkg/44bfe40c/differential.pkg.css', + 'uri' => '/res/pkg/b55e602f/differential.pkg.css', 'type' => 'css', ), '5e9e5c4e' => @@ -4416,30 +4425,30 @@ celerity_register_resource_map(array( ), 'reverse' => array( - 'aphront-dialog-view-css' => 'd72a9463', - 'aphront-error-view-css' => 'd72a9463', - 'aphront-list-filter-view-css' => 'd72a9463', - 'aphront-pager-view-css' => 'd72a9463', - 'aphront-panel-view-css' => 'd72a9463', - 'aphront-table-view-css' => 'd72a9463', - 'aphront-tokenizer-control-css' => 'd72a9463', - 'aphront-tooltip-css' => 'd72a9463', - 'aphront-typeahead-control-css' => 'd72a9463', - 'differential-changeset-view-css' => '44bfe40c', - 'differential-core-view-css' => '44bfe40c', + 'aphront-dialog-view-css' => '9d16ff0b', + 'aphront-error-view-css' => '9d16ff0b', + 'aphront-list-filter-view-css' => '9d16ff0b', + 'aphront-pager-view-css' => '9d16ff0b', + 'aphront-panel-view-css' => '9d16ff0b', + 'aphront-table-view-css' => '9d16ff0b', + 'aphront-tokenizer-control-css' => '9d16ff0b', + 'aphront-tooltip-css' => '9d16ff0b', + 'aphront-typeahead-control-css' => '9d16ff0b', + 'differential-changeset-view-css' => 'b55e602f', + 'differential-core-view-css' => 'b55e602f', 'differential-inline-comment-editor' => '5e9e5c4e', - 'differential-local-commits-view-css' => '44bfe40c', - 'differential-results-table-css' => '44bfe40c', - 'differential-revision-add-comment-css' => '44bfe40c', - 'differential-revision-comment-css' => '44bfe40c', - 'differential-revision-comment-list-css' => '44bfe40c', - 'differential-revision-history-css' => '44bfe40c', - 'differential-revision-list-css' => '44bfe40c', - 'differential-table-of-contents-css' => '44bfe40c', + 'differential-local-commits-view-css' => 'b55e602f', + 'differential-results-table-css' => 'b55e602f', + 'differential-revision-add-comment-css' => 'b55e602f', + 'differential-revision-comment-css' => 'b55e602f', + 'differential-revision-comment-list-css' => 'b55e602f', + 'differential-revision-history-css' => 'b55e602f', + 'differential-revision-list-css' => 'b55e602f', + 'differential-table-of-contents-css' => 'b55e602f', 'diffusion-commit-view-css' => 'c8ce2d88', 'diffusion-icons-css' => 'c8ce2d88', - 'global-drag-and-drop-css' => 'd72a9463', - 'inline-comment-summary-css' => '44bfe40c', + 'global-drag-and-drop-css' => '9d16ff0b', + 'inline-comment-summary-css' => 'b55e602f', 'javelin-aphlict' => '64eeda79', 'javelin-behavior' => '9564fa17', 'javelin-behavior-aphlict-dropdown' => '64eeda79', @@ -4513,56 +4522,56 @@ celerity_register_resource_map(array( 'javelin-util' => '9564fa17', 'javelin-vector' => '9564fa17', 'javelin-workflow' => '9564fa17', - 'lightbox-attachment-css' => 'd72a9463', + 'lightbox-attachment-css' => '9d16ff0b', 'maniphest-task-summary-css' => '49898640', - 'phabricator-action-list-view-css' => 'd72a9463', - 'phabricator-application-launch-view-css' => 'd72a9463', + 'phabricator-action-list-view-css' => '9d16ff0b', + 'phabricator-application-launch-view-css' => '9d16ff0b', 'phabricator-busy' => '64eeda79', - 'phabricator-content-source-view-css' => '44bfe40c', - 'phabricator-core-css' => 'd72a9463', - 'phabricator-crumbs-view-css' => 'd72a9463', + 'phabricator-content-source-view-css' => 'b55e602f', + 'phabricator-core-css' => '9d16ff0b', + 'phabricator-crumbs-view-css' => '9d16ff0b', 'phabricator-drag-and-drop-file-upload' => '5e9e5c4e', 'phabricator-dropdown-menu' => '64eeda79', 'phabricator-file-upload' => '64eeda79', - 'phabricator-filetree-view-css' => 'd72a9463', - 'phabricator-flag-css' => 'd72a9463', + 'phabricator-filetree-view-css' => '9d16ff0b', + 'phabricator-flag-css' => '9d16ff0b', 'phabricator-hovercard' => '64eeda79', - 'phabricator-jump-nav' => 'd72a9463', + 'phabricator-jump-nav' => '9d16ff0b', 'phabricator-keyboard-shortcut' => '64eeda79', 'phabricator-keyboard-shortcut-manager' => '64eeda79', - 'phabricator-main-menu-view' => 'd72a9463', + 'phabricator-main-menu-view' => '9d16ff0b', 'phabricator-menu-item' => '64eeda79', - 'phabricator-nav-view-css' => 'd72a9463', + 'phabricator-nav-view-css' => '9d16ff0b', 'phabricator-notification' => '64eeda79', - 'phabricator-notification-css' => 'd72a9463', - 'phabricator-notification-menu-css' => 'd72a9463', - 'phabricator-object-selector-css' => '44bfe40c', + 'phabricator-notification-css' => '9d16ff0b', + 'phabricator-notification-menu-css' => '9d16ff0b', + 'phabricator-object-selector-css' => 'b55e602f', 'phabricator-phtize' => '64eeda79', 'phabricator-prefab' => '64eeda79', 'phabricator-project-tag-css' => '49898640', - 'phabricator-property-list-view-css' => 'd72a9463', - 'phabricator-remarkup-css' => 'd72a9463', + 'phabricator-property-list-view-css' => '9d16ff0b', + 'phabricator-remarkup-css' => '9d16ff0b', 'phabricator-shaped-request' => '5e9e5c4e', - 'phabricator-side-menu-view-css' => 'd72a9463', - 'phabricator-standard-page-view' => 'd72a9463', - 'phabricator-tag-view-css' => 'd72a9463', + 'phabricator-side-menu-view-css' => '9d16ff0b', + 'phabricator-standard-page-view' => '9d16ff0b', + 'phabricator-tag-view-css' => '9d16ff0b', 'phabricator-textareautils' => '64eeda79', 'phabricator-tooltip' => '64eeda79', - 'phabricator-transaction-view-css' => 'd72a9463', - 'phabricator-zindex-css' => 'd72a9463', - 'phui-button-css' => 'd72a9463', - 'phui-form-css' => 'd72a9463', - 'phui-form-view-css' => 'd72a9463', - 'phui-header-view-css' => 'd72a9463', - 'phui-icon-view-css' => 'd72a9463', - 'phui-list-view-css' => 'd72a9463', - 'phui-object-item-list-view-css' => 'd72a9463', - 'phui-spacing-css' => 'd72a9463', - 'sprite-apps-large-css' => 'd72a9463', - 'sprite-gradient-css' => 'd72a9463', - 'sprite-icons-css' => 'd72a9463', - 'sprite-menu-css' => 'd72a9463', - 'sprite-status-css' => 'd72a9463', - 'syntax-highlighting-css' => 'd72a9463', + 'phabricator-transaction-view-css' => '9d16ff0b', + 'phabricator-zindex-css' => '9d16ff0b', + 'phui-button-css' => '9d16ff0b', + 'phui-form-css' => '9d16ff0b', + 'phui-form-view-css' => '9d16ff0b', + 'phui-header-view-css' => '9d16ff0b', + 'phui-icon-view-css' => '9d16ff0b', + 'phui-list-view-css' => '9d16ff0b', + 'phui-object-item-list-view-css' => '9d16ff0b', + 'phui-spacing-css' => '9d16ff0b', + 'sprite-apps-large-css' => '9d16ff0b', + 'sprite-gradient-css' => '9d16ff0b', + 'sprite-icons-css' => '9d16ff0b', + 'sprite-menu-css' => '9d16ff0b', + 'sprite-status-css' => '9d16ff0b', + 'syntax-highlighting-css' => '9d16ff0b', ), )); diff --git a/src/applications/config/controller/PhabricatorConfigAllController.php b/src/applications/config/controller/PhabricatorConfigAllController.php index f02d4d751e..3161ee19aa 100644 --- a/src/applications/config/controller/PhabricatorConfigAllController.php +++ b/src/applications/config/controller/PhabricatorConfigAllController.php @@ -72,6 +72,10 @@ final class PhabricatorConfigAllController $version_property_list->addProperty($name, $hash); } + $object_box = id(new PHUIObjectBoxView()) + ->setHeaderText(pht('Current Settings')) + ->addContent($version_property_list); + $phabricator_root = dirname(phutil_get_library_root('phabricator')); $version_path = $phabricator_root.'/conf/local/VERSION'; if (Filesystem::pathExists($version_path)) { @@ -84,7 +88,7 @@ final class PhabricatorConfigAllController $nav = $this->buildSideNavView(); $nav->selectFilter('all/'); $nav->setCrumbs($crumbs); - $nav->appendChild($version_property_list); + $nav->appendChild($object_box); $nav->appendChild($panel); diff --git a/src/applications/countdown/controller/PhabricatorCountdownViewController.php b/src/applications/countdown/controller/PhabricatorCountdownViewController.php index 8efa57a979..a0abfdce5e 100644 --- a/src/applications/countdown/controller/PhabricatorCountdownViewController.php +++ b/src/applications/countdown/controller/PhabricatorCountdownViewController.php @@ -47,11 +47,14 @@ final class PhabricatorCountdownViewController $actions = $this->buildActionListView($countdown); $properties = $this->buildPropertyListView($countdown); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + $content = array( $crumbs, - $header, - $actions, - $properties, + $object_box, $countdown_view, ); diff --git a/src/applications/differential/view/DifferentialAddCommentView.php b/src/applications/differential/view/DifferentialAddCommentView.php index 9fd58d5cd7..6e3bc8f14c 100644 --- a/src/applications/differential/view/DifferentialAddCommentView.php +++ b/src/applications/differential/view/DifferentialAddCommentView.php @@ -71,7 +71,6 @@ final class DifferentialAddCommentView extends AphrontView { $form ->setWorkflow(true) ->setUser($this->user) - ->setShaded(true) ->setAction($this->actionURI) ->addHiddenInput('revision_id', $revision->getID()) ->appendChild( @@ -176,25 +175,30 @@ final class DifferentialAddCommentView extends AphrontView { $header = id(new PHUIHeaderView()) ->setHeader($is_serious ? pht('Add Comment') : pht('Leap Into Action')); - return hsprintf( - '%s'. - '
'. - '%s%s%s'. + $anchor = id(new PhabricatorAnchorView()) + ->setAnchorName('comment') + ->setNavigationMarker(true); + + $warn = phutil_tag('div', array('id' => 'warnings'), $warning_container); + + $preview = hsprintf( '
'. '
'. '%s'. '
'. '
'. '
'. - '
'. - '
', - id(new PhabricatorAnchorView()) - ->setAnchorName('comment') - ->setNavigationMarker(true) - ->render(), - $header->render(), - $form->render(), - phutil_tag('div', array('id' => 'warnings'), $warning_container), + '', pht('Loading comment preview...')); + + + + $comment_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($anchor) + ->addContent($warn) + ->addContent($form); + + return array($comment_box, $preview); } } diff --git a/src/applications/differential/view/DifferentialChangesetListView.php b/src/applications/differential/view/DifferentialChangesetListView.php index 6172c36f13..e64cc31445 100644 --- a/src/applications/differential/view/DifferentialChangesetListView.php +++ b/src/applications/differential/view/DifferentialChangesetListView.php @@ -200,16 +200,19 @@ final class DifferentialChangesetListView extends AphrontView { ->setHeader($this->getTitle()); } - return array( - $header, - phutil_tag( - 'div', - array( - 'class' => 'differential-review-stage', - 'id' => 'differential-review-stage', - ), - $output), - ); + $content = phutil_tag( + 'div', + array( + 'class' => 'differential-review-stage', + 'id' => 'differential-review-stage', + ), + $output); + + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($content); + + return $object_box; } /** diff --git a/src/applications/differential/view/DifferentialDiffTableOfContentsView.php b/src/applications/differential/view/DifferentialDiffTableOfContentsView.php index b95096aa14..e9e1ea21cb 100644 --- a/src/applications/differential/view/DifferentialDiffTableOfContentsView.php +++ b/src/applications/differential/view/DifferentialDiffTableOfContentsView.php @@ -213,8 +213,8 @@ final class DifferentialDiffTableOfContentsView extends AphrontView { $editor_link, $reveal_link); - return hsprintf( - '%s%s'. + $content = hsprintf( + '%s'. '
'. ''. ''. @@ -232,13 +232,14 @@ final class DifferentialDiffTableOfContentsView extends AphrontView { ->setAnchorName('toc') ->setNavigationMarker(true) ->render(), - id(new PHUIHeaderView()) - ->setHeader(pht('Table of Contents')) - ->render(), pht('Coverage (All)'), pht('Coverage (Touched)'), phutil_implode_html("\n", $rows), $buttons); + + return id(new PHUIObjectBoxView()) + ->setHeaderText(pht('Table of Contents')) + ->addContent($content); } private function renderRename($display_file, $other_file, $arrow) { diff --git a/src/applications/differential/view/DifferentialLocalCommitsView.php b/src/applications/differential/view/DifferentialLocalCommitsView.php index f7da850f6e..2c1d8b7f73 100644 --- a/src/applications/differential/view/DifferentialLocalCommitsView.php +++ b/src/applications/differential/view/DifferentialLocalCommitsView.php @@ -128,18 +128,17 @@ final class DifferentialLocalCommitsView extends AphrontView { $headers = phutil_tag('tr', array(), $headers); - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Local Commits')) - ->render(); - - return hsprintf( - '%s'. + $content = hsprintf( '
'. '
%s%s
'. '
', - $header, $headers, phutil_implode_html("\n", $rows)); + + return id(new PHUIObjectBoxView()) + ->setHeaderText(pht('Local Commits')) + ->addContent($content); + } private static function formatCommit($commit) { diff --git a/src/applications/differential/view/DifferentialRevisionDetailView.php b/src/applications/differential/view/DifferentialRevisionDetailView.php index 8fc52c2d80..b13d25ae9b 100644 --- a/src/applications/differential/view/DifferentialRevisionDetailView.php +++ b/src/applications/differential/view/DifferentialRevisionDetailView.php @@ -111,11 +111,12 @@ final class DifferentialRevisionDetailView extends AphrontView { } $properties->setHasKeyboardShortcuts(true); - return hsprintf( - '%s%s%s', - $header->render(), - $actions->render(), - $properties->render()); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + + return $object_box; } private function renderHeader(DifferentialRevision $revision) { diff --git a/src/applications/differential/view/DifferentialRevisionUpdateHistoryView.php b/src/applications/differential/view/DifferentialRevisionUpdateHistoryView.php index 05e6d9f24b..afa52652a2 100644 --- a/src/applications/differential/view/DifferentialRevisionUpdateHistoryView.php +++ b/src/applications/differential/view/DifferentialRevisionUpdateHistoryView.php @@ -200,8 +200,7 @@ final class DifferentialRevisionUpdateHistoryView extends AphrontView { phutil_tag('th', array(), pht('Unit')), ))); - return hsprintf( - '%s'. + $content = hsprintf( '
'. '
'. ''. @@ -215,12 +214,13 @@ final class DifferentialRevisionUpdateHistoryView extends AphrontView { '
'. '
'. '
', - id(new PHUIHeaderView()) - ->setHeader(pht('Revision Update History')) - ->render(), phutil_implode_html("\n", $rows), pht('Whitespace Changes: %s', $select), pht('Show Diff')); + + return id(new PHUIObjectBoxView()) + ->setHeaderText(pht('Revision Update History')) + ->addContent($content); } const STAR_NONE = 'none'; diff --git a/src/applications/diffusion/controller/DiffusionBrowseDirectoryController.php b/src/applications/diffusion/controller/DiffusionBrowseDirectoryController.php index f3c544901b..00302be73c 100644 --- a/src/applications/diffusion/controller/DiffusionBrowseDirectoryController.php +++ b/src/applications/diffusion/controller/DiffusionBrowseDirectoryController.php @@ -22,10 +22,12 @@ final class DiffusionBrowseDirectoryController $content = array(); - $content[] = $this->buildHeaderView($drequest); - $content[] = $this->buildActionView($drequest); - $content[] = $this->buildPropertyView($drequest); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($this->buildHeaderView($drequest)) + ->addContent($this->buildActionView($drequest)) + ->addContent($this->buildPropertyView($drequest)); + $content[] = $object_box; $content[] = $this->renderSearchForm($collapsed = true); if (!$results->isValidResults()) { @@ -70,18 +72,14 @@ final class DiffusionBrowseDirectoryController )); if ($readme) { $box = new PHUIBoxView(); - $box->setShadow(true); $box->appendChild($readme); $box->addPadding(PHUI::PADDING_LARGE); - $box->addMargin(PHUI::MARGIN_LARGE); - $header = id(new PHUIHeaderView()) - ->setHeader(pht('README')); + $object_box = id(new PHUIObjectBoxView()) + ->setHeaderText(pht('README')) + ->addContent($box); - $content[] = array( - $header, - $box, - ); + $content[] = $object_box; } $crumbs = $this->buildCrumbs( diff --git a/src/applications/diffusion/controller/DiffusionBrowseFileController.php b/src/applications/diffusion/controller/DiffusionBrowseFileController.php index 279b107889..06c10b3844 100644 --- a/src/applications/diffusion/controller/DiffusionBrowseFileController.php +++ b/src/applications/diffusion/controller/DiffusionBrowseFileController.php @@ -98,6 +98,11 @@ final class DiffusionBrowseFileController extends DiffusionBrowseController { require_celerity_resource('diffusion-source-css'); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($this->buildHeaderView($drequest)) + ->addContent($this->buildActionView($drequest)) + ->addContent($this->buildPropertyView($drequest)); + // Render the page. $content = array(); diff --git a/src/applications/diffusion/controller/DiffusionBrowseSearchController.php b/src/applications/diffusion/controller/DiffusionBrowseSearchController.php index f5069b65f4..36b9e16d64 100644 --- a/src/applications/diffusion/controller/DiffusionBrowseSearchController.php +++ b/src/applications/diffusion/controller/DiffusionBrowseSearchController.php @@ -5,11 +5,14 @@ final class DiffusionBrowseSearchController extends DiffusionBrowseController { public function processRequest() { $drequest = $this->diffusionRequest; + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($this->buildHeaderView($drequest)) + ->addContent($this->buildActionView($drequest)) + ->addContent($this->buildPropertyView($drequest)); + $content = array(); - $content[] = $this->buildHeaderView($drequest); - $content[] = $this->buildActionView($drequest); - $content[] = $this->buildPropertyView($drequest); + $content[] = $object_box; $content[] = $this->renderSearchForm($collapsed = false); $content[] = $this->renderSearchResults(); diff --git a/src/applications/diffusion/controller/DiffusionChangeController.php b/src/applications/diffusion/controller/DiffusionChangeController.php index 1e8192c35e..4724056362 100644 --- a/src/applications/diffusion/controller/DiffusionChangeController.php +++ b/src/applications/diffusion/controller/DiffusionChangeController.php @@ -82,12 +82,15 @@ final class DiffusionChangeController extends DiffusionController { $actions = $this->buildActionView($drequest); $properties = $this->buildPropertyView($drequest); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $content, ), array( diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php index 99603a59e9..a56b6680c2 100644 --- a/src/applications/diffusion/controller/DiffusionCommitController.php +++ b/src/applications/diffusion/controller/DiffusionCommitController.php @@ -137,9 +137,13 @@ final class DiffusionCommitController extends DiffusionController { ), $message)); $content[] = $top_anchor; - $content[] = $headsup_view; - $content[] = $headsup_actions; - $content[] = $property_list; + + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($headsup_view) + ->addContent($headsup_actions) + ->addContent($property_list); + + $content[] = $object_box; } $content[] = $this->buildComments($commit); @@ -646,7 +650,6 @@ final class DiffusionCommitController extends DiffusionController { $form = id(new AphrontFormView()) ->setUser($user) - ->setShaded(true) ->setAction('/audit/addcomment/') ->addHiddenInput('commit', $commit->getPHID()) ->appendChild( @@ -738,19 +741,22 @@ final class DiffusionCommitController extends DiffusionController { // Differential better. require_celerity_resource('differential-core-view-css'); + $comment_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($form); + return phutil_tag( 'div', array( 'id' => $pane_id, ), hsprintf( - '
%s%s%s%s
', + '
%s%s%s
', id(new PhabricatorAnchorView()) ->setAnchorName('comment') ->setNavigationMarker(true) ->render(), - $header, - $form, + $comment_box, $preview_panel)); } diff --git a/src/applications/diffusion/controller/DiffusionHistoryController.php b/src/applications/diffusion/controller/DiffusionHistoryController.php index e243c48bb0..4200b00694 100644 --- a/src/applications/diffusion/controller/DiffusionHistoryController.php +++ b/src/applications/diffusion/controller/DiffusionHistoryController.php @@ -72,6 +72,11 @@ final class DiffusionHistoryController extends DiffusionController { $actions = $this->buildActionView($drequest); $properties = $this->buildPropertyView($drequest); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + $crumbs = $this->buildCrumbs( array( 'branch' => true, @@ -82,9 +87,7 @@ final class DiffusionHistoryController extends DiffusionController { return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $content, ), array( diff --git a/src/applications/diffusion/controller/DiffusionLintController.php b/src/applications/diffusion/controller/DiffusionLintController.php index 6cd9dc9759..2e6d76d4d7 100644 --- a/src/applications/diffusion/controller/DiffusionLintController.php +++ b/src/applications/diffusion/controller/DiffusionLintController.php @@ -165,19 +165,20 @@ final class DiffusionLintController extends DiffusionController { $drequest, $branch, $total); + + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); } else { - $header = null; - $actions = null; - $properties = null; + $object_box = null; } return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $content, ), array( diff --git a/src/applications/diffusion/controller/DiffusionRepositoryController.php b/src/applications/diffusion/controller/DiffusionRepositoryController.php index bbcd5d38b2..7dcc3ce579 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryController.php @@ -174,7 +174,11 @@ final class DiffusionRepositoryController extends DiffusionController { $view->addTextContent($description); } - return array($header, $actions, $view); + return id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($view); + } private function buildBranchListTable(DiffusionRequest $drequest) { diff --git a/src/applications/drydock/controller/DrydockLeaseViewController.php b/src/applications/drydock/controller/DrydockLeaseViewController.php index 36426e34eb..050cb52d59 100644 --- a/src/applications/drydock/controller/DrydockLeaseViewController.php +++ b/src/applications/drydock/controller/DrydockLeaseViewController.php @@ -45,12 +45,15 @@ final class DrydockLeaseViewController extends DrydockController { ->setName($title) ->setHref($lease_uri)); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $log_table, ), array( diff --git a/src/applications/drydock/controller/DrydockResourceViewController.php b/src/applications/drydock/controller/DrydockResourceViewController.php index 30c06317f5..573c4e8016 100644 --- a/src/applications/drydock/controller/DrydockResourceViewController.php +++ b/src/applications/drydock/controller/DrydockResourceViewController.php @@ -56,12 +56,15 @@ final class DrydockResourceViewController extends DrydockController { id(new PhabricatorCrumbView()) ->setName(pht('Resource %d', $resource->getID()))); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $lease_header, $lease_list, $log_table, diff --git a/src/applications/files/controller/PhabricatorFileInfoController.php b/src/applications/files/controller/PhabricatorFileInfoController.php index 5c213f8250..ddbae7babe 100644 --- a/src/applications/files/controller/PhabricatorFileInfoController.php +++ b/src/applications/files/controller/PhabricatorFileInfoController.php @@ -49,12 +49,15 @@ final class PhabricatorFileInfoController extends PhabricatorFileController { ->setName('F'.$file->getID()) ->setHref($this->getApplicationURI("/info/{$phid}/"))); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $timeline ), array( @@ -107,10 +110,14 @@ final class PhabricatorFileInfoController extends PhabricatorFileController { ->setAction($this->getApplicationURI('/comment/'.$file->getID().'/')) ->setSubmitButtonName($submit_button_name); + $comment_box = id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeader($add_comment_header) + ->addContent($add_comment_form); + return array( $timeline, - $add_comment_header, - $add_comment_form); + $comment_box); } private function buildActionView(PhabricatorFile $file) { diff --git a/src/applications/herald/controller/HeraldRuleViewController.php b/src/applications/herald/controller/HeraldRuleViewController.php index 53ed9ee44c..26a055617c 100644 --- a/src/applications/herald/controller/HeraldRuleViewController.php +++ b/src/applications/herald/controller/HeraldRuleViewController.php @@ -32,12 +32,15 @@ final class HeraldRuleViewController extends HeraldController { id(new PhabricatorCrumbView()) ->setName(pht('Rule %d', $rule->getID()))); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, ), array( 'title' => $rule->getName(), diff --git a/src/applications/legalpad/controller/LegalpadDocumentViewController.php b/src/applications/legalpad/controller/LegalpadDocumentViewController.php index 134d94e0da..2168a4616b 100644 --- a/src/applications/legalpad/controller/LegalpadDocumentViewController.php +++ b/src/applications/legalpad/controller/LegalpadDocumentViewController.php @@ -86,11 +86,14 @@ final class LegalpadDocumentViewController extends LegalpadController { ->setName('L'.$document->getID()) ->setHref($this->getApplicationURI('view/'.$document->getID()))); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + $content = array( $crumbs, - $header, - $actions, - $properties, + $object_box, $this->buildDocument($engine, $document_body), $xaction_view, $add_comment, @@ -210,10 +213,11 @@ final class LegalpadDocumentViewController extends LegalpadController { ->setAction($this->getApplicationURI('/comment/'.$document->getID().'/')) ->setRequestURI($this->getRequest()->getRequestURI()); - return array( - $header, - $form, - ); + return id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeader($header) + ->addContent($form); + } } diff --git a/src/applications/macro/controller/PhabricatorMacroViewController.php b/src/applications/macro/controller/PhabricatorMacroViewController.php index 5f1ca4a21e..11e1b2a32b 100644 --- a/src/applications/macro/controller/PhabricatorMacroViewController.php +++ b/src/applications/macro/controller/PhabricatorMacroViewController.php @@ -91,15 +91,22 @@ final class PhabricatorMacroViewController ->setAction($this->getApplicationURI('/comment/'.$macro->getID().'/')) ->setSubmitButtonName($submit_button_name); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + + $comment_box = id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeader($add_comment_header) + ->addContent($add_comment_form); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $timeline, - $add_comment_header, - $add_comment_form, + $comment_box, ), array( 'title' => $title_short, diff --git a/src/applications/maniphest/controller/ManiphestTaskDetailController.php b/src/applications/maniphest/controller/ManiphestTaskDetailController.php index 67ce31ead8..62e533a098 100644 --- a/src/applications/maniphest/controller/ManiphestTaskDetailController.php +++ b/src/applications/maniphest/controller/ManiphestTaskDetailController.php @@ -209,7 +209,6 @@ final class ManiphestTaskDetailController extends ManiphestController { $comment_form = new AphrontFormView(); $comment_form ->setUser($user) - ->setShaded(true) ->setAction('/maniphest/transaction/save/') ->setEncType('multipart/form-data') ->addHiddenInput('taskID', $task->getID()) @@ -364,16 +363,23 @@ final class ManiphestTaskDetailController extends ManiphestController { $preview_panel = null; } + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + + $comment_box = id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeader($comment_header) + ->addContent($comment_form); + return $this->buildApplicationPage( array( $crumbs, $context_bar, - $header, - $actions, - $properties, + $object_box, $timeline, - $comment_header, - $comment_form, + $comment_box, $preview_panel, ), array( diff --git a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php index 89d7be54d1..e540093d41 100644 --- a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php +++ b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php @@ -54,12 +54,15 @@ final class PhabricatorApplicationDetailViewController $properties = $this->buildPropertyView($selected); $actions = $this->buildActionView($user, $selected); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, ), array( 'title' => $title, diff --git a/src/applications/paste/controller/PhabricatorPasteViewController.php b/src/applications/paste/controller/PhabricatorPasteViewController.php index dab9f113ab..42bd6432b7 100644 --- a/src/applications/paste/controller/PhabricatorPasteViewController.php +++ b/src/applications/paste/controller/PhabricatorPasteViewController.php @@ -68,11 +68,24 @@ final class PhabricatorPasteViewController extends PhabricatorPasteController { $header = $this->buildHeaderView($paste); $actions = $this->buildActionView($user, $paste, $file); $properties = $this->buildPropertyView($paste, $fork_phids); + + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + $source_code = $this->buildSourceCodeView( $paste, null, $this->highlightMap); + $source_code = id(new PHUIBoxView()) + ->appendChild($source_code) + ->setBorder(true) + ->addMargin(PHUI::MARGIN_LARGE_LEFT) + ->addMargin(PHUI::MARGIN_LARGE_RIGHT) + ->addMargin(PHUI::MARGIN_LARGE_TOP); + $crumbs = $this->buildApplicationCrumbs($this->buildSideNavView()) ->setActionList($actions) ->addCrumb( @@ -123,16 +136,18 @@ final class PhabricatorPasteViewController extends PhabricatorPasteController { ->setAction($this->getApplicationURI('/comment/'.$paste->getID().'/')) ->setSubmitButtonName($submit_button_name); + $comment_box = id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeader($add_comment_header) + ->addContent($add_comment_form); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $source_code, $timeline, - $add_comment_header, - $add_comment_form + $comment_box, ), array( 'title' => $paste->getFullName(), diff --git a/src/applications/people/controller/PhabricatorPeopleProfileController.php b/src/applications/people/controller/PhabricatorPeopleProfileController.php index 074343f582..c31e9cc851 100644 --- a/src/applications/people/controller/PhabricatorPeopleProfileController.php +++ b/src/applications/people/controller/PhabricatorPeopleProfileController.php @@ -76,12 +76,15 @@ final class PhabricatorPeopleProfileController ->setName($user->getUsername())); $feed = $this->renderUserFeed($user); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $feed, ), array( diff --git a/src/applications/phame/controller/blog/PhameBlogViewController.php b/src/applications/phame/controller/blog/PhameBlogViewController.php index 4b3caf8896..0782bd4bd2 100644 --- a/src/applications/phame/controller/blog/PhameBlogViewController.php +++ b/src/applications/phame/controller/blog/PhameBlogViewController.php @@ -63,12 +63,15 @@ final class PhameBlogViewController extends PhameController { ->setName($blog->getName()) ->setHref($this->getApplicationURI())); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + $nav->appendChild( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $post_list, )); diff --git a/src/applications/phame/controller/post/PhamePostViewController.php b/src/applications/phame/controller/post/PhamePostViewController.php index 471c596c57..5cf3d73ebf 100644 --- a/src/applications/phame/controller/post/PhamePostViewController.php +++ b/src/applications/phame/controller/post/PhamePostViewController.php @@ -42,14 +42,19 @@ final class PhamePostViewController extends PhameController { ->setHref($this->getApplicationURI('post/view/'.$post->getID().'/'))); $nav->appendChild($crumbs); - $nav->appendChild( - id(new PHUIHeaderView()) + + $header = id(new PHUIHeaderView()) ->setHeader($post->getTitle()) ->setUser($user) - ->setPolicyObject($post)); + ->setPolicyObject($post); + + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); if ($post->isDraft()) { - $nav->appendChild( + $object_box->appendChild( id(new AphrontErrorView()) ->setSeverity(AphrontErrorView::SEVERITY_NOTICE) ->setTitle(pht('Draft Post')) @@ -59,7 +64,7 @@ final class PhamePostViewController extends PhameController { } if (!$post->getBlog()) { - $nav->appendChild( + $object_box->appendChild( id(new AphrontErrorView()) ->setSeverity(AphrontErrorView::SEVERITY_WARNING) ->setTitle(pht('Not On A Blog')) @@ -70,8 +75,7 @@ final class PhamePostViewController extends PhameController { $nav->appendChild( array( - $actions, - $properties, + $object_box, )); return $this->buildApplicationPage( diff --git a/src/applications/phlux/controller/PhluxViewController.php b/src/applications/phlux/controller/PhluxViewController.php index 776df44614..c8a87ca774 100644 --- a/src/applications/phlux/controller/PhluxViewController.php +++ b/src/applications/phlux/controller/PhluxViewController.php @@ -74,12 +74,15 @@ final class PhluxViewController extends PhluxController { ->setTransactions($xactions) ->setMarkupEngine($engine); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $xaction_view, ), array( diff --git a/src/applications/pholio/controller/PholioMockViewController.php b/src/applications/pholio/controller/PholioMockViewController.php index f90a34b7e1..e671495d0e 100644 --- a/src/applications/pholio/controller/PholioMockViewController.php +++ b/src/applications/pholio/controller/PholioMockViewController.php @@ -103,12 +103,15 @@ final class PholioMockViewController extends PholioController { ->setName('M'.$mock->getID()) ->setHref('/M'.$mock->getID())); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + $content = array( $crumbs, $image_status, - $header, - $actions, - $properties, + $object_box, $output->render(), $xaction_view, $add_comment, @@ -251,10 +254,10 @@ final class PholioMockViewController extends PholioController { ->setAction($this->getApplicationURI('/comment/'.$mock->getID().'/')) ->setRequestURI($this->getRequest()->getRequestURI()); - return array( - $header, - $form, - ); + return id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeader($header) + ->addContent($form); } } diff --git a/src/applications/phortune/controller/PhortuneAccountViewController.php b/src/applications/phortune/controller/PhortuneAccountViewController.php index e010a223d5..ee5c9fc706 100644 --- a/src/applications/phortune/controller/PhortuneAccountViewController.php +++ b/src/applications/phortune/controller/PhortuneAccountViewController.php @@ -60,12 +60,15 @@ final class PhortuneAccountViewController extends PhortuneController { $purchase_history = $this->buildPurchaseHistorySection($account); $account_history = $this->buildAccountHistorySection($account); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $payment_methods, $purchase_history, $account_history, diff --git a/src/applications/phortune/controller/PhortuneProductViewController.php b/src/applications/phortune/controller/PhortuneProductViewController.php index ec1b8a859e..ee004bbffc 100644 --- a/src/applications/phortune/controller/PhortuneProductViewController.php +++ b/src/applications/phortune/controller/PhortuneProductViewController.php @@ -81,12 +81,15 @@ final class PhortuneProductViewController extends PhortuneController { ->setTransactions($xactions) ->setMarkupEngine($engine); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $xaction_view, ), array( diff --git a/src/applications/ponder/controller/PonderQuestionViewController.php b/src/applications/ponder/controller/PonderQuestionViewController.php index 69c3f12c05..4e66207c9a 100644 --- a/src/applications/ponder/controller/PonderQuestionViewController.php +++ b/src/applications/ponder/controller/PonderQuestionViewController.php @@ -50,6 +50,11 @@ final class PonderQuestionViewController extends PonderController { $actions = $this->buildActionListView($question); $properties = $this->buildPropertyListView($question); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + $crumbs = $this->buildApplicationCrumbs($this->buildSideNavView()); $crumbs->setActionList($actions); $crumbs->addCrumb( @@ -60,9 +65,7 @@ final class PonderQuestionViewController extends PonderController { return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $question_xactions, $answers, $answer_add_panel @@ -208,11 +211,16 @@ final class PonderQuestionViewController extends PonderController { ->setAction($this->getApplicationURI("/question/comment/{$id}/")) ->setSubmitButtonName(pht('Comment')); + $object_box = id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeaderText(pht('Question Comment')) + ->addContent($add_comment); + return $this->wrapComments( count($xactions), array( $timeline, - $add_comment, + $object_box, )); } @@ -253,13 +261,18 @@ final class PonderQuestionViewController extends PonderController { $out[] = phutil_tag('br'); $out[] = id(new PhabricatorAnchorView()) ->setAnchorName("A$id"); - $out[] = id(new PHUIHeaderView()) - ->setHeader($this->getHandle($author_phid)->getFullName()) - ->setImage($this->getHandle($author_phid)->getImageURI()); + $header = id(new PHUIHeaderView()) + ->setHeader($this->getHandle($author_phid)->getFullName()); - $out[] = $this->buildAnswerActions($answer); - $out[] = $this->buildAnswerProperties($answer); + $actions = $this->buildAnswerActions($answer); + $properties = $this->buildAnswerProperties($answer); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + + $out[] = $object_box; $details = array(); $details[] = id(new PhabricatorApplicationTransactionView()) @@ -268,13 +281,20 @@ final class PonderQuestionViewController extends PonderController { ->setTransactions($xactions) ->setMarkupEngine($engine); - $details[] = id(new PhabricatorApplicationTransactionCommentView()) + $form = id(new PhabricatorApplicationTransactionCommentView()) ->setUser($viewer) ->setObjectPHID($answer->getPHID()) ->setShowPreview(false) ->setAction($this->getApplicationURI("/answer/comment/{$id}/")) ->setSubmitButtonName(pht('Comment')); + $comment_box = id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeaderText(pht('Answer Comment')) + ->addContent($form); + + $details[] = $comment_box; + $out[] = $this->wrapComments( count($xactions), $details); diff --git a/src/applications/ponder/view/PonderAddAnswerView.php b/src/applications/ponder/view/PonderAddAnswerView.php index 454d9ed137..2d1128f39f 100644 --- a/src/applications/ponder/view/PonderAddAnswerView.php +++ b/src/applications/ponder/view/PonderAddAnswerView.php @@ -43,12 +43,8 @@ final class PonderAddAnswerView extends AphrontView { pht('Add Answer') : pht('Bequeath Wisdom'))); - return id(new AphrontNullView()) - ->appendChild( - array( - $header, - $form, - )) - ->render(); + return id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($form); } } diff --git a/src/applications/project/controller/PhabricatorProjectProfileController.php b/src/applications/project/controller/PhabricatorProjectProfileController.php index e8a25d1b49..aa6e60dc9a 100644 --- a/src/applications/project/controller/PhabricatorProjectProfileController.php +++ b/src/applications/project/controller/PhabricatorProjectProfileController.php @@ -72,12 +72,15 @@ final class PhabricatorProjectProfileController id(new PhabricatorCrumbView()) ->setName($project->getName())); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, $content, ), array( @@ -173,15 +176,13 @@ final class PhabricatorProjectProfileController $task_list->setTasks($tasks); $task_list->setHandles($handles); - $content = hsprintf( - '
-

%s

'. - '
'. - '%s'. - '
-
', - pht('Open Tasks'), - $task_list); + $list = id(new PHUIBoxView()) + ->addPadding(PHUI::PADDING_LARGE) + ->appendChild($task_list); + + $content = id(new PHUIObjectBoxView()) + ->setHeaderText(pht('Open Tasks')) + ->addContent($list); return $content; } diff --git a/src/applications/releeph/controller/branch/ReleephBranchViewController.php b/src/applications/releeph/controller/branch/ReleephBranchViewController.php index 6315c090c9..6fd7b55d09 100644 --- a/src/applications/releeph/controller/branch/ReleephBranchViewController.php +++ b/src/applications/releeph/controller/branch/ReleephBranchViewController.php @@ -168,11 +168,11 @@ final class ReleephBranchViewController extends ReleephProjectController pht('Branch'), $branch->getName()); - return array( - $header, - $actions, - $properties, - ); + return id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + } } diff --git a/src/applications/releeph/controller/project/ReleephProjectViewController.php b/src/applications/releeph/controller/project/ReleephProjectViewController.php index 1e96de29d7..c7e5721406 100644 --- a/src/applications/releeph/controller/project/ReleephProjectViewController.php +++ b/src/applications/releeph/controller/project/ReleephProjectViewController.php @@ -236,11 +236,10 @@ final class ReleephProjectViewController extends ReleephProjectController $this->renderHandlesForPHIDs($pushers)); } - return array( - $header, - $actions, - $properties, - ); + return id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); } diff --git a/src/applications/slowvote/controller/PhabricatorSlowvotePollController.php b/src/applications/slowvote/controller/PhabricatorSlowvotePollController.php index 0952085ad7..b4b7be8661 100644 --- a/src/applications/slowvote/controller/PhabricatorSlowvotePollController.php +++ b/src/applications/slowvote/controller/PhabricatorSlowvotePollController.php @@ -46,9 +46,6 @@ final class PhabricatorSlowvotePollController ->setUser($user) ->setPolicyObject($poll); - $xaction_header = id(new PHUIHeaderView()) - ->setHeader(pht('Ongoing Deliberations')); - $actions = $this->buildActionView($poll); $properties = $this->buildPropertyView($poll); @@ -60,19 +57,21 @@ final class PhabricatorSlowvotePollController $xactions = $this->buildTransactions($poll); $add_comment = $this->buildCommentForm($poll); + $object_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addContent($actions) + ->addContent($properties); + return $this->buildApplicationPage( array( $crumbs, - $header, - $actions, - $properties, + $object_box, phutil_tag( 'div', array( - 'class' => 'ml', + 'class' => 'mlt mml mmr', ), $poll_view), - $xaction_header, $xactions, $add_comment, ), @@ -179,11 +178,11 @@ final class PhabricatorSlowvotePollController ->setAction($this->getApplicationURI('/comment/'.$poll->getID().'/')) ->setSubmitButtonName($submit_button_name); - return array( - $add_comment_header, - $add_comment_form, - ); + return id(new PHUIObjectBoxView()) + ->setFlush(true) + ->setHeader($add_comment_header) + ->addContent($add_comment_form); + } - } diff --git a/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php b/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php index dda88cdc3b..8a66f17f95 100644 --- a/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php +++ b/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php @@ -148,7 +148,6 @@ class PhabricatorApplicationTransactionCommentView extends AphrontView { ->setUser($this->getUser()) ->addSigil('transaction-append') ->setWorkflow(true) - ->setShaded(true) ->setMetadata( array( 'objectPHID' => $this->getObjectPHID(), diff --git a/src/infrastructure/celerity/CeleritySpriteGenerator.php b/src/infrastructure/celerity/CeleritySpriteGenerator.php index 72b975d53b..f301e6e618 100644 --- a/src/infrastructure/celerity/CeleritySpriteGenerator.php +++ b/src/infrastructure/celerity/CeleritySpriteGenerator.php @@ -524,7 +524,7 @@ final class CeleritySpriteGenerator { 'yellow-header' => 70, 'grey-header' => 70, 'dark-grey-header' => 70, - 'lightblue-header' => 70, + 'lightblue-header' => 240, ); $extra_css = array( diff --git a/src/view/layout/AphrontSideNavFilterView.php b/src/view/layout/AphrontSideNavFilterView.php index 4e1d09e10a..57ca640602 100644 --- a/src/view/layout/AphrontSideNavFilterView.php +++ b/src/view/layout/AphrontSideNavFilterView.php @@ -288,7 +288,7 @@ final class AphrontSideNavFilterView extends AphrontView { phutil_tag( 'div', array( - 'class' => 'phabricator-nav-content', + 'class' => 'phabricator-nav-content mlb', 'id' => $content_id, ), array( diff --git a/src/view/layout/PhabricatorPropertyListView.php b/src/view/layout/PhabricatorPropertyListView.php index 49ba6c4a8d..230c68b8d3 100644 --- a/src/view/layout/PhabricatorPropertyListView.php +++ b/src/view/layout/PhabricatorPropertyListView.php @@ -180,7 +180,6 @@ final class PhabricatorPropertyListView extends AphrontView { $classes[] = 'phabricator-property-list-text-content'; if ($part['type'] == 'image') { $classes[] = 'phabricator-property-list-image-content'; - $classes[] = 'phabricator-remarkup-dark'; } return phutil_tag( 'div', diff --git a/src/view/phui/PHUIHeaderView.php b/src/view/phui/PHUIHeaderView.php index c86c10476c..97cdce12f0 100644 --- a/src/view/phui/PHUIHeaderView.php +++ b/src/view/phui/PHUIHeaderView.php @@ -195,6 +195,7 @@ final class PHUIHeaderView extends AphrontView { $link = javelin_tag( 'a', array( + 'class' => 'policy-link', 'href' => '/policy/explain/'.$phid.'/'.$view_capability.'/', 'sigil' => 'workflow', ), diff --git a/src/view/phui/PHUIObjectBoxView.php b/src/view/phui/PHUIObjectBoxView.php index 8bcaf12c9e..19d7289046 100644 --- a/src/view/phui/PHUIObjectBoxView.php +++ b/src/view/phui/PHUIObjectBoxView.php @@ -7,6 +7,8 @@ final class PHUIObjectBoxView extends AphrontView { private $form; private $validationException; private $content = array(); + private $header; + private $flush; public function setHeaderText($text) { $this->headerText = $text; @@ -23,11 +25,21 @@ final class PHUIObjectBoxView extends AphrontView { return $this; } + public function setHeader(PHUIHeaderView $header) { + $this->header = $header; + return $this; + } + public function addContent($content) { $this->content[] = $content; return $this; } + public function setFlush($flush) { + $this->flush = $flush; + return $this; + } + public function setValidationException( PhabricatorApplicationTransactionValidationException $ex = null) { $this->validationException = $ex; @@ -36,9 +48,16 @@ final class PHUIObjectBoxView extends AphrontView { public function render() { - $header = id(new PhabricatorActionHeaderView()) - ->setHeaderTitle($this->headerText) - ->setHeaderColor(PhabricatorActionHeaderView::HEADER_LIGHTBLUE); + require_celerity_resource('phui-object-box-css'); + + if ($this->header) { + $header = $this->header; + $header->setGradient(PhabricatorActionHeaderView::HEADER_LIGHTBLUE); + } else { + $header = id(new PHUIHeaderView()) + ->setHeader($this->headerText) + ->setGradient(PhabricatorActionHeaderView::HEADER_LIGHTBLUE); + } $ex = $this->validationException; $exception_errors = null; @@ -68,7 +87,10 @@ final class PHUIObjectBoxView extends AphrontView { ->addMargin(PHUI::MARGIN_LARGE_RIGHT) ->addClass('phui-object-box'); - return $content; + if ($this->flush) { + $content->addClass('phui-object-box-flush'); + } + return $content; } } diff --git a/webroot/rsrc/css/aphront/panel-view.css b/webroot/rsrc/css/aphront/panel-view.css index 133ce89068..10e737645a 100644 --- a/webroot/rsrc/css/aphront/panel-view.css +++ b/webroot/rsrc/css/aphront/panel-view.css @@ -77,9 +77,7 @@ } .aphront-panel-preview { - background: #fbfbfb; - border-bottom: 1px solid {$greyborder}; - padding: 15px 20px; + padding: 16px; } .device-phone .aphront-panel-preview { @@ -124,4 +122,3 @@ font-size: 12px; color: {$greytext}; } - diff --git a/webroot/rsrc/css/application/differential/changeset-view.css b/webroot/rsrc/css/application/differential/changeset-view.css index d6feb69725..68dbe061f1 100644 --- a/webroot/rsrc/css/application/differential/changeset-view.css +++ b/webroot/rsrc/css/application/differential/changeset-view.css @@ -2,21 +2,17 @@ * @provides differential-changeset-view-css */ -.differential-review-stage { - background: #FFFFFF; - padding: 0em 1.25em 0em 0em; -} - .differential-changeset { position: relative; margin: 0; - padding: 10px 0% 20px 2%; + padding: 16px 0; } - .differential-diff { - background: transparent; - width: 100%; + background: transparent; + width: 100%; + border-top: 1px solid #cca; + border-bottom: 1px solid #cca; } .differential-diff td { @@ -45,12 +41,10 @@ min-width: 45px; max-width: 4%; vertical-align: top; - background: #eeeeee; - color: {$lightgreytext}; + background: {$lightbluebackground}; + color: {$bluetext}; cursor: pointer; - border-style: solid; - border-width: 0px 1px; - border-color: #eeeeee #999999 #eeeeee #dddddd; + border-right: 1px solid {$thinblueborder}; font-size: 11px; overflow: hidden; @@ -168,8 +162,9 @@ td.cov-X { .differential-diff td.show-context, .differential-diff td.differential-shield { background: #ffffee; - padding: 1em 0em; - border: 1px solid #ccccaa; + padding: 12px 0; + border-top: 1px solid #ccccaa; + border-bottom: 1px solid #ccccaa; } .differential-diff td.show-more, @@ -218,9 +213,8 @@ td.cov-X { } .differential-changeset h1 { - font-size: 14px; - font-weight: bold; - padding: 2px 0 8px; + font-size: 14px; + padding: 2px 0 12px 12px; } .differential-reticle { @@ -296,6 +290,7 @@ td.cov-X { .differential-changeset-buttons { float: right; + margin-right: 16px; } .differential-changeset-buttons a.button { diff --git a/webroot/rsrc/css/application/differential/core.css b/webroot/rsrc/css/application/differential/core.css index 5de0190c03..c53ec38e3b 100644 --- a/webroot/rsrc/css/application/differential/core.css +++ b/webroot/rsrc/css/application/differential/core.css @@ -9,14 +9,7 @@ } .differential-panel { - margin: -1px 0px 3.6em 0px; - padding: 15px 2%; - font-size: 13px; - background: #F6F6F6; - border-color: #c0c5d1; - border-style: solid; - border-width: 1px 0 1px 0; - box-shadow: 0 0 1px 1px rgba(192, 197, 209, 0.3); + padding: 16px; } .differential-panel h1 { diff --git a/webroot/rsrc/css/application/pholio/pholio.css b/webroot/rsrc/css/application/pholio/pholio.css index a13b0c2ab7..a00c93d012 100644 --- a/webroot/rsrc/css/application/pholio/pholio.css +++ b/webroot/rsrc/css/application/pholio/pholio.css @@ -2,6 +2,7 @@ * @provides pholio-css */ .pholio-mock-image-container { + margin-top: 16px; background-color: #282828; text-align: center; vertical-align: middle; @@ -193,5 +194,5 @@ .pholio-transaction-inline-comment div { display: table-cell; vertical-align: middle; - padding-bottom: 2px; + padding-left: 8px; } diff --git a/webroot/rsrc/css/application/ponder/comments.css b/webroot/rsrc/css/application/ponder/comments.css index ebf25a5cb2..903a8a65d2 100644 --- a/webroot/rsrc/css/application/ponder/comments.css +++ b/webroot/rsrc/css/application/ponder/comments.css @@ -4,11 +4,14 @@ .ponder-show-comments { text-align: center; - padding: 8px 0; + padding: 8px; + margin: 0 16px; + float: right; font-weight: bold; - background: #f9f9f9; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - border-bottom: 1px solid #b7b7b7; + background: #fff; + border-bottom: 1px solid {$blueborder}; + border-left: 1px solid {$lightblueborder}; + border-right: 1px solid {$lightblueborder}; } .ponder-comments { diff --git a/webroot/rsrc/css/layout/phabricator-action-list-view.css b/webroot/rsrc/css/layout/phabricator-action-list-view.css index 349972a6db..56e33c93f1 100644 --- a/webroot/rsrc/css/layout/phabricator-action-list-view.css +++ b/webroot/rsrc/css/layout/phabricator-action-list-view.css @@ -12,7 +12,6 @@ padding: 4px 0; float: right; margin-top: 0px; - margin-right: 1%; width: 20%; font-size: 12px; } diff --git a/webroot/rsrc/css/layout/phabricator-property-list-view.css b/webroot/rsrc/css/layout/phabricator-property-list-view.css index 24eea5625e..5a06ec7fda 100644 --- a/webroot/rsrc/css/layout/phabricator-property-list-view.css +++ b/webroot/rsrc/css/layout/phabricator-property-list-view.css @@ -3,7 +3,7 @@ */ .phabricator-property-list-view { - background-color: {$lightgreybackground}; + background-color: #fff; } .phabricator-property-list-view .keyboard-shortcuts-available { @@ -19,18 +19,19 @@ url('/rsrc/image/icon/fatcow/key_question.png') right center no-repeat; } -.phabricator-property-list-container { +.phabricator-property-list-container + + .phabricator-property-list-section-header { border-color: {$lightgreyborder}; border-style: solid; - border-width: 0 0 1px; + border-width: 1px 0 0; } .device-desktop .phabricator-property-list-container { - padding: 12px 0 4px 0; + padding: 12px 0 12px 0; } .device .phabricator-property-list-container { - padding: 12px 0 0 0; + padding: 12px 0 4px 0; } .phabricator-property-list-key { @@ -76,26 +77,23 @@ } .phabricator-property-list-section-header { - color: #9CA5B5; + color: {$bluetext}; padding: 12px 16px 0px; text-transform: uppercase; font-weight: 700; } +.phabricator-property-list-section-header + .phabricator-property-list-text-content { + border-top: none; +} + .phabricator-property-list-text-content { padding: 12px 16px; - background: {$lightgreybackground}; - border-bottom: 1px solid {$lightgreyborder}; + background: #fff; overflow: hidden; + border-top: 1px solid {$lightblueborder}; } -.phabricator-property-list-image-content { - background: #282828; - border-color: #101010; - color: #fff; -} - - /* In the common case where we immediately follow a header, move back up 30px so we snuggle next to the header. */ .device-desktop .phui-header-view diff --git a/webroot/rsrc/css/layout/phabricator-timeline-view.css b/webroot/rsrc/css/layout/phabricator-timeline-view.css index 8d351b0942..3a2b9e7c3a 100644 --- a/webroot/rsrc/css/layout/phabricator-timeline-view.css +++ b/webroot/rsrc/css/layout/phabricator-timeline-view.css @@ -3,7 +3,7 @@ */ .phabricator-timeline-view { - background: #eeedf0; + padding: 0 16px; } .phabricator-timeline-group { @@ -13,8 +13,7 @@ } .device-desktop .phabricator-timeline-event-view { - margin-left: 80px; - margin-right: 12px; + margin-left: 70px; position: relative; } diff --git a/webroot/rsrc/css/phui/phui-document.css b/webroot/rsrc/css/phui/phui-document.css index 72519cccbc..7cdaa973b9 100644 --- a/webroot/rsrc/css/phui/phui-document.css +++ b/webroot/rsrc/css/phui/phui-document.css @@ -157,3 +157,7 @@ .device-desktop .phui-document-offset { padding-right: 160px; } + +.phui-document-view .phabricator-property-list-view { + border-bottom: 1px solid {$thinblueborder}; +} diff --git a/webroot/rsrc/css/phui/phui-form-view.css b/webroot/rsrc/css/phui/phui-form-view.css index a9af640f6a..c2937d3b60 100644 --- a/webroot/rsrc/css/phui/phui-form-view.css +++ b/webroot/rsrc/css/phui/phui-form-view.css @@ -426,20 +426,6 @@ table.aphront-form-control-checkbox-layout th { display: none; } -.phui-object-box .phabricator-action-header { - padding: 4px 5px 4px 12px; - border-bottom: 1px solid {$lightblueborder}; -} - -.phui-object-box .phabricator-action-header h3 { - color: {$bluetext}; - text-shadow: 0 1px 2px #fff; -} - -.phui-object-box .aphront-error-view { - margin-bottom: 0; -} - .phabricator-standard-custom-field-header { font-size: 16px; color: {$bluetext}; diff --git a/webroot/rsrc/css/phui/phui-header-view.css b/webroot/rsrc/css/phui/phui-header-view.css index efdbf8062d..24acc30507 100644 --- a/webroot/rsrc/css/phui/phui-header-view.css +++ b/webroot/rsrc/css/phui/phui-header-view.css @@ -47,10 +47,6 @@ body.device-phone .phui-header-view { padding: 12px 8px; } -.device-desktop .phui-header-view { - width: 66%; -} - .phui-header-tags { margin-left: 12px; font-size: 13px; @@ -87,7 +83,7 @@ body.device-phone .phui-header-view { } .phui-header-subheader .policy-link { - color: {$darkbluetext}; + color: {$bluetext}; } .phui-header-subheader .phui-header-status-dark { diff --git a/webroot/rsrc/css/phui/phui-object-box.css b/webroot/rsrc/css/phui/phui-object-box.css new file mode 100644 index 0000000000..a699987adb --- /dev/null +++ b/webroot/rsrc/css/phui/phui-object-box.css @@ -0,0 +1,34 @@ +/** + * @provides phui-object-box-css + */ + +.phui-object-box.phui-object-box-flush { + margin-top: 0; +} + +.phui-object-box .phui-header-shell { + padding: 4px 5px 4px 12px; + border-bottom: 1px solid {$lightblueborder}; + border-top: none; +} + +.phui-object-box .phui-header-image { + margin: 5px 12px 5px 0; +} + +.phui-object-box .phui-header-shell h1 { + color: {$bluetext}; + text-shadow: 0 1px #fff; + padding: 8px 0; +} + +.phui-object-box .aphront-error-view { + margin-bottom: 0; +} + +.device-desktop .phui-object-box + .phui-header-shell + .phabricator-action-list-view { + margin-top: 0; + margin-bottom: -12px; + border-width: 0 0 0 1px; +} diff --git a/webroot/rsrc/css/sprite-gradient.css b/webroot/rsrc/css/sprite-gradient.css index 917eee645e..d89ad9a890 100644 --- a/webroot/rsrc/css/sprite-gradient.css +++ b/webroot/rsrc/css/sprite-gradient.css @@ -36,7 +36,7 @@ } .gradient-lightblue-header { - background-position: 0px -367px; + background-position: 0px -509px; } .gradient-menu-label, .phabricator-side-menu .phui-list-item-type-label { @@ -44,9 +44,9 @@ } .gradient-red-header { - background-position: 0px -438px; + background-position: 0px -367px; } .gradient-yellow-header { - background-position: 0px -509px; + background-position: 0px -438px; } diff --git a/webroot/rsrc/image/sprite-gradient.png b/webroot/rsrc/image/sprite-gradient.png index 6ba7473242..a102ae794e 100644 Binary files a/webroot/rsrc/image/sprite-gradient.png and b/webroot/rsrc/image/sprite-gradient.png differ