diff --git a/scripts/celerity/generate_sprites.php b/scripts/celerity/generate_sprites.php index fc9021dff4..724c41a370 100755 --- a/scripts/celerity/generate_sprites.php +++ b/scripts/celerity/generate_sprites.php @@ -149,6 +149,7 @@ $app_map = array( 'diviner' => array(1, 35), 'repositories' => array(8, 13), 'phame' => array(8, 4), + 'macro' => array(0, 31), ); $xadj = -1; diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index 34d186af33..0788817589 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -51,8 +51,8 @@ celerity_register_resource_map(array( ), '/rsrc/image/autosprite.png' => array( - 'hash' => '72184117972407fe930910bee886fd21', - 'uri' => '/res/72184117/rsrc/image/autosprite.png', + 'hash' => '10b50d4636be52a6f36fb28b3a05f90e', + 'uri' => '/res/10b50d46/rsrc/image/autosprite.png', 'disk' => '/rsrc/image/autosprite.png', 'type' => 'png', ), @@ -657,7 +657,7 @@ celerity_register_resource_map(array( ), 'autosprite-css' => array( - 'uri' => '/res/17eb3f9b/rsrc/css/autosprite.css', + 'uri' => '/res/5de6fe77/rsrc/css/autosprite.css', 'type' => 'css', 'requires' => array( diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index d6ce216cc2..fa9061bf3c 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -565,6 +565,7 @@ phutil_register_library_map(array( 'PhabricatorApplicationFlags' => 'applications/flag/application/PhabricatorApplicationFlags.php', 'PhabricatorApplicationHerald' => 'applications/herald/application/PhabricatorApplicationHerald.php', 'PhabricatorApplicationLaunchView' => 'applications/meta/view/PhabricatorApplicationLaunchView.php', + 'PhabricatorApplicationMacro' => 'applications/macro/application/PhabricatorApplicationMacro.php', 'PhabricatorApplicationMailingLists' => 'applications/mailinglists/application/PhabricatorApplicationMailingLists.php', 'PhabricatorApplicationManiphest' => 'applications/maniphest/application/PhabricatorApplicationManiphest.php', 'PhabricatorApplicationMetaMTA' => 'applications/metamta/application/PhabricatorApplicationMetaMTA.php', @@ -728,12 +729,9 @@ phutil_register_library_map(array( 'PhabricatorFileDataController' => 'applications/files/controller/PhabricatorFileDataController.php', 'PhabricatorFileDeleteController' => 'applications/files/controller/PhabricatorFileDeleteController.php', 'PhabricatorFileDropUploadController' => 'applications/files/controller/PhabricatorFileDropUploadController.php', - 'PhabricatorFileImageMacro' => 'applications/files/storage/PhabricatorFileImageMacro.php', + 'PhabricatorFileImageMacro' => 'applications/macro/storage/PhabricatorFileImageMacro.php', 'PhabricatorFileInfoController' => 'applications/files/controller/PhabricatorFileInfoController.php', 'PhabricatorFileListController' => 'applications/files/controller/PhabricatorFileListController.php', - 'PhabricatorFileMacroDeleteController' => 'applications/files/controller/PhabricatorFileMacroDeleteController.php', - 'PhabricatorFileMacroEditController' => 'applications/files/controller/PhabricatorFileMacroEditController.php', - 'PhabricatorFileMacroListController' => 'applications/files/controller/PhabricatorFileMacroListController.php', 'PhabricatorFileProxyController' => 'applications/files/controller/PhabricatorFileProxyController.php', 'PhabricatorFileProxyImage' => 'applications/files/storage/PhabricatorFileProxyImage.php', 'PhabricatorFileShortcutController' => 'applications/files/controller/PhabricatorFileShortcutController.php', @@ -796,6 +794,10 @@ phutil_register_library_map(array( 'PhabricatorLoginController' => 'applications/auth/controller/PhabricatorLoginController.php', 'PhabricatorLoginValidateController' => 'applications/auth/controller/PhabricatorLoginValidateController.php', 'PhabricatorLogoutController' => 'applications/auth/controller/PhabricatorLogoutController.php', + 'PhabricatorMacroController' => 'applications/macro/controller/PhabricatorMacroController.php', + 'PhabricatorMacroDeleteController' => 'applications/macro/controller/PhabricatorMacroDeleteController.php', + 'PhabricatorMacroEditController' => 'applications/macro/controller/PhabricatorMacroEditController.php', + 'PhabricatorMacroListController' => 'applications/macro/controller/PhabricatorMacroListController.php', 'PhabricatorMailImplementationAdapter' => 'applications/metamta/adapter/PhabricatorMailImplementationAdapter.php', 'PhabricatorMailImplementationAmazonSESAdapter' => 'applications/metamta/adapter/PhabricatorMailImplementationAmazonSESAdapter.php', 'PhabricatorMailImplementationPHPMailerLiteAdapter' => 'applications/metamta/adapter/PhabricatorMailImplementationPHPMailerLiteAdapter.php', @@ -1727,6 +1729,7 @@ phutil_register_library_map(array( 'PhabricatorApplicationFlags' => 'PhabricatorApplication', 'PhabricatorApplicationHerald' => 'PhabricatorApplication', 'PhabricatorApplicationLaunchView' => 'AphrontView', + 'PhabricatorApplicationMacro' => 'PhabricatorApplication', 'PhabricatorApplicationMailingLists' => 'PhabricatorApplication', 'PhabricatorApplicationManiphest' => 'PhabricatorApplication', 'PhabricatorApplicationMetaMTA' => 'PhabricatorApplication', @@ -1881,9 +1884,6 @@ phutil_register_library_map(array( 'PhabricatorFileImageMacro' => 'PhabricatorFileDAO', 'PhabricatorFileInfoController' => 'PhabricatorFileController', 'PhabricatorFileListController' => 'PhabricatorFileController', - 'PhabricatorFileMacroDeleteController' => 'PhabricatorFileController', - 'PhabricatorFileMacroEditController' => 'PhabricatorFileController', - 'PhabricatorFileMacroListController' => 'PhabricatorFileController', 'PhabricatorFileProxyController' => 'PhabricatorFileController', 'PhabricatorFileProxyImage' => 'PhabricatorFileDAO', 'PhabricatorFileShortcutController' => 'PhabricatorFileController', @@ -1933,6 +1933,10 @@ phutil_register_library_map(array( 'PhabricatorLoginController' => 'PhabricatorAuthController', 'PhabricatorLoginValidateController' => 'PhabricatorAuthController', 'PhabricatorLogoutController' => 'PhabricatorAuthController', + 'PhabricatorMacroController' => 'PhabricatorController', + 'PhabricatorMacroDeleteController' => 'PhabricatorMacroController', + 'PhabricatorMacroEditController' => 'PhabricatorMacroController', + 'PhabricatorMacroListController' => 'PhabricatorMacroController', 'PhabricatorMailImplementationAmazonSESAdapter' => 'PhabricatorMailImplementationPHPMailerLiteAdapter', 'PhabricatorMailImplementationPHPMailerLiteAdapter' => 'PhabricatorMailImplementationAdapter', 'PhabricatorMailImplementationSendGridAdapter' => 'PhabricatorMailImplementationAdapter', diff --git a/src/aphront/configuration/AphrontDefaultApplicationConfiguration.php b/src/aphront/configuration/AphrontDefaultApplicationConfiguration.php index 55625dca27..fa528116fa 100644 --- a/src/aphront/configuration/AphrontDefaultApplicationConfiguration.php +++ b/src/aphront/configuration/AphrontDefaultApplicationConfiguration.php @@ -55,11 +55,6 @@ class AphrontDefaultApplicationConfiguration 'alt/(?P[^/]+)/(?P[^/]+)/' => 'PhabricatorFileDataController', - 'macro/' => array( - '' => 'PhabricatorFileMacroListController', - 'edit/(?:(?P\d+)/)?' => 'PhabricatorFileMacroEditController', - 'delete/(?P\d+)/' => 'PhabricatorFileMacroDeleteController', - ), 'proxy/' => 'PhabricatorFileProxyController', 'xform/(?P[^/]+)/(?P[^/]+)/' => 'PhabricatorFileTransformController', diff --git a/src/applications/files/view/PhabricatorFileSideNavView.php b/src/applications/files/view/PhabricatorFileSideNavView.php index aa31f22b44..bf8971e8a9 100644 --- a/src/applications/files/view/PhabricatorFileSideNavView.php +++ b/src/applications/files/view/PhabricatorFileSideNavView.php @@ -1,7 +1,7 @@ 'All Files', 'href' => '/file/filter/all/' ), - '
' => array(), - 'Image Macros' => array(), - 'create_macro' => array( - 'name' => 'Create Image Macro', - 'href' => '/file/macro/edit/' - ), - 'all_macros' => array( - 'name' => 'All Image Macros', - 'href' => '/file/macro/' - ), + // TODO: Remove this fairly soon. + '
' => null, + '
NOTE: Macros have moved to a separate '. + 'application. Use the "Search" field to jump to it or choose '. + 'More Stuff » Macros from the home page.' => null, ); $side_nav = new AphrontSideNavView(); diff --git a/src/applications/macro/application/PhabricatorApplicationMacro.php b/src/applications/macro/application/PhabricatorApplicationMacro.php new file mode 100644 index 0000000000..74f7506a34 --- /dev/null +++ b/src/applications/macro/application/PhabricatorApplicationMacro.php @@ -0,0 +1,47 @@ + array( + '' => 'PhabricatorMacroListController', + 'edit/(?:(?P\d+)/)?' => 'PhabricatorMacroEditController', + 'delete/(?P\d+)/' => 'PhabricatorMacroDeleteController', + ), + ); + } + +} diff --git a/src/applications/macro/controller/PhabricatorMacroController.php b/src/applications/macro/controller/PhabricatorMacroController.php new file mode 100644 index 0000000000..b334c39d4f --- /dev/null +++ b/src/applications/macro/controller/PhabricatorMacroController.php @@ -0,0 +1,37 @@ +setBaseURI(new PhutilURI($this->getApplicationURI())); + + $nav->addLabel('Create'); + $nav->addFilter('edit', 'Create Macro'); + + $nav->addSpacer(); + + $nav->addLabel('Macros'); + $nav->addFilter('', 'All Macros'); + + return $nav; + } + +} diff --git a/src/applications/files/controller/PhabricatorFileMacroDeleteController.php b/src/applications/macro/controller/PhabricatorMacroDeleteController.php similarity index 82% rename from src/applications/files/controller/PhabricatorFileMacroDeleteController.php rename to src/applications/macro/controller/PhabricatorMacroDeleteController.php index b5f8c2e819..f1115da7ba 100644 --- a/src/applications/files/controller/PhabricatorFileMacroDeleteController.php +++ b/src/applications/macro/controller/PhabricatorMacroDeleteController.php @@ -16,8 +16,8 @@ * limitations under the License. */ -final class PhabricatorFileMacroDeleteController - extends PhabricatorFileController { +final class PhabricatorMacroDeleteController + extends PhabricatorMacroController { private $id; @@ -36,7 +36,8 @@ final class PhabricatorFileMacroDeleteController if ($request->isDialogFormPost()) { $macro->delete(); - return id(new AphrontRedirectResponse())->setURI('/file/macro/'); + return id(new AphrontRedirectResponse())->setURI( + $this->getApplicationURI()); } $dialog = new AphrontDialogView(); @@ -47,9 +48,9 @@ final class PhabricatorFileMacroDeleteController '

Really delete the much-beloved image macro "'. phutil_escape_html($macro->getName()).'"? It will be sorely missed.'. '

') - ->setSubmitURI('/file/macro/delete/'.$this->id.'/') + ->setSubmitURI($this->getApplicationURI('/delete/'.$this->id.'/')) ->addSubmitButton('Delete') - ->addCancelButton('/file/macro/'); + ->addCancelButton($this->getApplicationURI()); return id(new AphrontDialogResponse())->setDialog($dialog); diff --git a/src/applications/files/controller/PhabricatorFileMacroEditController.php b/src/applications/macro/controller/PhabricatorMacroEditController.php similarity index 86% rename from src/applications/files/controller/PhabricatorFileMacroEditController.php rename to src/applications/macro/controller/PhabricatorMacroEditController.php index 4c01321905..da574536e3 100644 --- a/src/applications/files/controller/PhabricatorFileMacroEditController.php +++ b/src/applications/macro/controller/PhabricatorMacroEditController.php @@ -16,8 +16,8 @@ * limitations under the License. */ -final class PhabricatorFileMacroEditController - extends PhabricatorFileController { +final class PhabricatorMacroEditController + extends PhabricatorMacroController { private $id; @@ -68,7 +68,8 @@ final class PhabricatorFileMacroEditController try { $macro->save(); - return id(new AphrontRedirectResponse())->setURI('/file/macro/'); + return id(new AphrontRedirectResponse())->setURI( + $this->getApplicationURI()); } catch (AphrontQueryDuplicateKeyException $ex) { $errors[] = 'Macro name is not unique!'; $e_name = 'Duplicate'; @@ -85,7 +86,7 @@ final class PhabricatorFileMacroEditController } $form = new AphrontFormView(); - $form->setAction('/file/macro/edit/'); + $form->setAction($this->getApplicationURI('/edit/')); $form->setUser($request->getUser()); $form @@ -105,7 +106,7 @@ final class PhabricatorFileMacroEditController ->appendChild( id(new AphrontFormSubmitControl()) ->setValue('Save Image Macro') - ->addCancelButton('/file/macro/')); + ->addCancelButton($this->getApplicationURI())); $panel = new AphrontPanelView(); if ($macro->getID()) { @@ -117,13 +118,13 @@ final class PhabricatorFileMacroEditController $panel->appendChild($form); $panel->setWidth(AphrontPanelView::WIDTH_FULL); - $side_nav = new PhabricatorFileSideNavView(); - $side_nav->setSelectedFilter('create_macro'); - $side_nav->appendChild($error_view); - $side_nav->appendChild($panel); + $nav = $this->buildSideNavView($macro); + $nav->selectFilter('#', 'edit'); + $nav->appendChild($error_view); + $nav->appendChild($panel); - return $this->buildStandardPageResponse( - $side_nav, + return $this->buildApplicationPage( + $nav, array( 'title' => $title, )); diff --git a/src/applications/files/controller/PhabricatorFileMacroListController.php b/src/applications/macro/controller/PhabricatorMacroListController.php similarity index 84% rename from src/applications/files/controller/PhabricatorFileMacroListController.php rename to src/applications/macro/controller/PhabricatorMacroListController.php index f88ddab444..c516a3dd09 100644 --- a/src/applications/files/controller/PhabricatorFileMacroListController.php +++ b/src/applications/macro/controller/PhabricatorMacroListController.php @@ -16,8 +16,8 @@ * limitations under the License. */ -final class PhabricatorFileMacroListController - extends PhabricatorFileController { +final class PhabricatorMacroListController + extends PhabricatorMacroController { public function processRequest() { @@ -74,7 +74,7 @@ final class PhabricatorFileMacroListController phutil_render_tag( 'a', array( - 'href' => '/file/macro/edit/'.$macro->getID().'/', + 'href' => $this->getApplicationURI('/edit/'.$macro->getID().'/'), ), phutil_escape_html($macro->getName())), @@ -93,7 +93,7 @@ final class PhabricatorFileMacroListController javelin_render_tag( 'a', array( - 'href' => '/file/macro/delete/'.$macro->getID().'/', + 'href' => $this->getApplicationURI('/delete/'.$macro->getID().'/'), 'sigil' => 'workflow', 'class' => 'grey small button', ), @@ -119,7 +119,6 @@ final class PhabricatorFileMacroListController $filter_form = id(new AphrontFormView()) ->setMethod('GET') - ->setAction('/file/macro/') ->setUser($request->getUser()) ->appendChild( id(new AphrontFormTextControl()) @@ -132,14 +131,6 @@ final class PhabricatorFileMacroListController $filter_view = new AphrontListFilterView(); $filter_view->appendChild($filter_form); - $filter_view->addButton( - phutil_render_tag( - 'a', - array( - 'href' => '/file/macro/edit/', - 'class' => 'green button', - ), - 'New Image Macro')); $panel = new AphrontPanelView(); $panel->appendChild($table); @@ -148,13 +139,14 @@ final class PhabricatorFileMacroListController $panel->appendChild($pager); } - $side_nav = new PhabricatorFileSideNavView(); - $side_nav->setSelectedFilter('all_macros'); - $side_nav->appendChild($filter_view); - $side_nav->appendChild($panel); + $nav = $this->buildSideNavView(); + $nav->selectFilter('/'); - return $this->buildStandardPageResponse( - $side_nav, + $nav->appendChild($filter_view); + $nav->appendChild($panel); + + return $this->buildApplicationPage( + $nav, array( 'title' => 'Image Macros', )); diff --git a/src/applications/files/storage/PhabricatorFileImageMacro.php b/src/applications/macro/storage/PhabricatorFileImageMacro.php similarity index 100% rename from src/applications/files/storage/PhabricatorFileImageMacro.php rename to src/applications/macro/storage/PhabricatorFileImageMacro.php diff --git a/webroot/rsrc/css/autosprite.css b/webroot/rsrc/css/autosprite.css index 0878416287..a640820ee1 100644 --- a/webroot/rsrc/css/autosprite.css +++ b/webroot/rsrc/css/autosprite.css @@ -308,50 +308,58 @@ background-position: 0px -3134px; } -.action-file { +.app-macro-full { background-position: 0px -3165px; } +.app-macro { + background-position: 0px -3226px; +} + +.action-file { + background-position: 0px -3257px; +} + .action-fork { - background-position: 0px -3182px; + background-position: 0px -3274px; } .action-edit { - background-position: 0px -3199px; + background-position: 0px -3291px; } .action-flag-0 { - background-position: 0px -3216px; + background-position: 0px -3308px; } .action-flag-1 { - background-position: 0px -3233px; + background-position: 0px -3325px; } .action-flag-2 { - background-position: 0px -3250px; + background-position: 0px -3342px; } .action-flag-3 { - background-position: 0px -3267px; + background-position: 0px -3359px; } .action-flag-4 { - background-position: 0px -3284px; + background-position: 0px -3376px; } .action-flag-5 { - background-position: 0px -3301px; + background-position: 0px -3393px; } .action-flag-6 { - background-position: 0px -3318px; + background-position: 0px -3410px; } .action-flag-7 { - background-position: 0px -3335px; + background-position: 0px -3427px; } .action-flag-ghost { - background-position: 0px -3352px; + background-position: 0px -3444px; } diff --git a/webroot/rsrc/image/autosprite.png b/webroot/rsrc/image/autosprite.png index 89f5d84fe2..81042a8a9b 100644 Binary files a/webroot/rsrc/image/autosprite.png and b/webroot/rsrc/image/autosprite.png differ