diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index f3f406e8d5..9f83c2042e 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -130,18 +130,20 @@ celerity_register_resource_map(array( ), 'javelin-behavior-aphront-basic-tokenizer' => array( - 'path' => '/res/12de8502/rsrc/js/application/core/behavior-tokenizer.js', + 'path' => '/res/8317d761/rsrc/js/application/core/behavior-tokenizer.js', 'type' => 'js', 'requires' => array( + 0 => 'javelin-lib-dev', ), ), 'javelin-behavior-differential-populate' => array( - 'path' => '/res/b419291a/rsrc/js/application/differential/behavior-populate.js', + 'path' => '/res/9982573c/rsrc/js/application/differential/behavior-populate.js', 'type' => 'js', 'requires' => array( + 0 => 'javelin-lib-dev', ), ), 'javelin-init-dev' => @@ -186,7 +188,7 @@ celerity_register_resource_map(array( ), 'javelin-typeahead-prod' => array( - 'path' => '/res/871c9b0f/rsrc/js/javelin/typeahead.min.js', + 'path' => '/res/1da2d984/rsrc/js/javelin/typeahead.min.js', 'type' => 'js', 'requires' => array( diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 1d3f88e9d0..f3dc42394c 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -78,6 +78,7 @@ phutil_register_library_map(array( 'DifferentialRevision' => 'applications/differential/storage/revision', 'DifferentialRevisionControlSystem' => 'applications/differential/constants/revisioncontrolsystem', 'DifferentialRevisionEditController' => 'applications/differential/controller/revisionedit', + 'DifferentialRevisionListController' => 'applications/differential/controller/revisionlist', 'DifferentialRevisionStatus' => 'applications/differential/constants/revisionstatus', 'DifferentialUnitStatus' => 'applications/differential/constants/unitstatus', 'Javelin' => 'infratructure/javelin/api', @@ -197,6 +198,7 @@ phutil_register_library_map(array( 'DifferentialHunk' => 'DifferentialDAO', 'DifferentialRevision' => 'DifferentialDAO', 'DifferentialRevisionEditController' => 'DifferentialController', + 'DifferentialRevisionListController' => 'DifferentialController', 'PhabricatorConduitAPIController' => 'PhabricatorConduitController', 'PhabricatorConduitConnectionLog' => 'PhabricatorConduitDAO', 'PhabricatorConduitConsoleController' => 'PhabricatorConduitController', diff --git a/src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php b/src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php index bab44a6b2e..900a8b320c 100644 --- a/src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php +++ b/src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php @@ -77,6 +77,7 @@ class AphrontDefaultApplicationConfiguration '/api/(?[^/]+)$' => 'PhabricatorConduitAPIController', '/differential/' => array( + '$' => 'DifferentialRevisionListController', 'diff/(?\d+)/$' => 'DifferentialDiffViewController', 'changeset/(?\d+)/$' => 'DifferentialChangesetViewController', 'revision/edit/(?:(?\d+)/)?$' diff --git a/src/applications/differential/controller/base/DifferentialController.php b/src/applications/differential/controller/base/DifferentialController.php index f896b73487..2db79be80f 100644 --- a/src/applications/differential/controller/base/DifferentialController.php +++ b/src/applications/differential/controller/base/DifferentialController.php @@ -19,6 +19,9 @@ abstract class DifferentialController extends PhabricatorController { public function buildStandardPageResponse($view, array $data) { + + require_celerity_resource('differential-core-view-css'); + $page = new PhabricatorStandardPageView(); $page->setApplicationName('Differential'); diff --git a/src/applications/differential/controller/base/__init__.php b/src/applications/differential/controller/base/__init__.php index e554a20267..e2a4f7a73b 100644 --- a/src/applications/differential/controller/base/__init__.php +++ b/src/applications/differential/controller/base/__init__.php @@ -8,6 +8,7 @@ phutil_require_module('phabricator', 'aphront/response/webpage'); phutil_require_module('phabricator', 'applications/base/controller/base'); +phutil_require_module('phabricator', 'infratructure/celerity/api'); phutil_require_module('phabricator', 'view/page/standard'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/differential/controller/changesetview/DifferentialChangesetViewController.php b/src/applications/differential/controller/changesetview/DifferentialChangesetViewController.php index b9155610bf..1afedc16cb 100644 --- a/src/applications/differential/controller/changesetview/DifferentialChangesetViewController.php +++ b/src/applications/differential/controller/changesetview/DifferentialChangesetViewController.php @@ -47,13 +47,10 @@ class DifferentialChangesetViewController extends DifferentialController { $detail->setChangeset($changeset); $detail->appendChild($output); - // TODO: This is a bit of a hacky mess. $output = - '
'. - '
'. - '
'. - $detail->render(). - '
'. + '
'. + '
'. + $detail->render(). '
'. '
'; diff --git a/src/applications/differential/controller/diffview/DifferentialDiffViewController.php b/src/applications/differential/controller/diffview/DifferentialDiffViewController.php index 58fefe64a9..67829ec10b 100644 --- a/src/applications/differential/controller/diffview/DifferentialDiffViewController.php +++ b/src/applications/differential/controller/diffview/DifferentialDiffViewController.php @@ -30,6 +30,33 @@ class DifferentialDiffViewController extends DifferentialController { return new Aphront404Response(); } + $action_panel = new AphrontPanelView(); + $action_panel->setHeader('Preview Diff'); + $action_panel->setWidth(AphrontPanelView::WIDTH_WIDE); + $action_panel->appendChild( + '

Review the diff for correctness. '. + 'When you are satisfied, either create a new revision '. + 'or update an existing revision.'); + + $action_form = new AphrontFormView(); + $action_form + ->setAction('/differential/revision/edit/') + ->appendChild( + id(new AphrontFormSelectControl()) + ->setLabel('Attach To') + ->setName('revisionID') + ->setValue('') + ->setOptions(array( + '' => "Create a new Revision...", + ))) + ->appendChild( + id(new AphrontFormSubmitControl()) + ->setValue('Continue')); + + $action_panel->appendChild($action_form); + + + $changesets = $diff->loadChangesets(); $changesets = msort($changesets, 'getSortKey'); @@ -40,10 +67,15 @@ class DifferentialDiffViewController extends DifferentialController { ->setChangesets($changesets); return $this->buildStandardPageResponse( - array( - $table_of_contents, - $details, - ), + '

'. + implode( + "\n", + array( + $action_panel->render(), + $table_of_contents->render(), + $details->render(), + )). + '
', array( 'title' => 'Diff View', )); diff --git a/src/applications/differential/controller/diffview/__init__.php b/src/applications/differential/controller/diffview/__init__.php index 7303dd9ed7..efcd27da68 100644 --- a/src/applications/differential/controller/diffview/__init__.php +++ b/src/applications/differential/controller/diffview/__init__.php @@ -11,6 +11,9 @@ phutil_require_module('phabricator', 'applications/differential/controller/base' phutil_require_module('phabricator', 'applications/differential/storage/diff'); phutil_require_module('phabricator', 'applications/differential/view/changesetlistview'); phutil_require_module('phabricator', 'applications/differential/view/difftableofcontents'); +phutil_require_module('phabricator', 'view/form/base'); +phutil_require_module('phabricator', 'view/form/control/submit'); +phutil_require_module('phabricator', 'view/layout/panel'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/differential/controller/revisionlist/DifferentialRevisionListController.php b/src/applications/differential/controller/revisionlist/DifferentialRevisionListController.php new file mode 100644 index 0000000000..2a1bb6c89d --- /dev/null +++ b/src/applications/differential/controller/revisionlist/DifferentialRevisionListController.php @@ -0,0 +1,40 @@ +addNavItem( + phutil_render_tag( + 'a', + array( + 'href' => '/differential/', + ), + 'Active Revisions')); + + + return $this->buildStandardPageResponse( + $side_nav, + array( + 'title' => 'Differential Home', + )); + } + +} diff --git a/src/applications/differential/controller/revisionlist/__init__.php b/src/applications/differential/controller/revisionlist/__init__.php new file mode 100644 index 0000000000..e77e5b621b --- /dev/null +++ b/src/applications/differential/controller/revisionlist/__init__.php @@ -0,0 +1,15 @@ +'. - ''. + ''. ''.$meta.''. ''; } diff --git a/webroot/rsrc/css/aphront/form-view.css b/webroot/rsrc/css/aphront/form-view.css index 9a60901a46..03edd372da 100644 --- a/webroot/rsrc/css/aphront/form-view.css +++ b/webroot/rsrc/css/aphront/form-view.css @@ -38,6 +38,7 @@ width: 100%; } + .aphront-form-input textarea { height: 12em; } @@ -49,9 +50,14 @@ .aphront-form-control-submit button, .aphront-form-control-submit a.button { float: right; - margin: 1em 0 0em 2%; + margin: 0.5em 0 0em 2%; } +.aphront-form-control-select .aphront-form-input { + padding-top: 2px; +} + + .aphront-form-view .aphront-form-caption { font-size: 11px; color: #444444; diff --git a/webroot/rsrc/css/aphront/panel-view.css b/webroot/rsrc/css/aphront/panel-view.css index 6b816b4f7c..1acd2f7560 100644 --- a/webroot/rsrc/css/aphront/panel-view.css +++ b/webroot/rsrc/css/aphront/panel-view.css @@ -21,6 +21,11 @@ float: right; } +.aphront-panel-view p.aphront-panel-instructions { + margin: .5em 2em .75em; + font-size: 13px; +} + .aphront-panel-width-form { width: 720px; margin-right: auto; diff --git a/webroot/rsrc/css/application/differential/changeset-view.css b/webroot/rsrc/css/application/differential/changeset-view.css index a3d0eb14d0..3ad2468c3f 100644 --- a/webroot/rsrc/css/application/differential/changeset-view.css +++ b/webroot/rsrc/css/application/differential/changeset-view.css @@ -108,3 +108,14 @@ padding: 1em; margin: 0 0 6px 0; } + +.differential-changeset h1 { + font-size: 14px; + font-weight: bold; + padding: 2px 0 8px; +} + +.differential-changeset { + margin: 0.5em 0; + padding: 10px 0px 20px; +} diff --git a/webroot/rsrc/js/application/core/behavior-tokenizer.js b/webroot/rsrc/js/application/core/behavior-tokenizer.js index 78fd251977..825d44ed9c 100644 --- a/webroot/rsrc/js/application/core/behavior-tokenizer.js +++ b/webroot/rsrc/js/application/core/behavior-tokenizer.js @@ -1,5 +1,6 @@ /** * @provides javelin-behavior-aphront-basic-tokenizer + * @requires javelin-lib-dev */ JX.behavior('aphront-basic-tokenizer', function(config) { diff --git a/webroot/rsrc/js/application/differential/behavior-populate.js b/webroot/rsrc/js/application/differential/behavior-populate.js index 14be5b2f8d..4c39fd17ae 100644 --- a/webroot/rsrc/js/application/differential/behavior-populate.js +++ b/webroot/rsrc/js/application/differential/behavior-populate.js @@ -1,5 +1,6 @@ /** * @provides javelin-behavior-differential-populate + * @requires javelin-lib-dev */ JX.behavior('differential-populate', function(config) {