From 7ab7783ad3c237b0bfc6373bece2d5d6a74ea857 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Mon, 25 Feb 2013 12:48:55 -0800 Subject: [PATCH] Modernize Countdown Summary: Crumbs, phts, and mobile layouts for Countdown. Test Plan: Tested new, edit and delete timer. Verified timer works. Unable to get 'remove chrome' to work, will investigate. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D5101 --- .../base/controller/PhabricatorController.php | 2 + .../PhabricatorApplicationCountdown.php | 2 +- .../PhabricatorCountdownController.php | 33 +++++++++----- .../PhabricatorCountdownDeleteController.php | 11 ++--- .../PhabricatorCountdownEditController.php | 44 +++++++++++-------- .../PhabricatorCountdownListController.php | 32 +++++++++----- .../PhabricatorCountdownViewController.php | 31 +++++++++---- 7 files changed, 103 insertions(+), 52 deletions(-) diff --git a/src/applications/base/controller/PhabricatorController.php b/src/applications/base/controller/PhabricatorController.php index 9dbb9cb765..cc948576ba 100644 --- a/src/applications/base/controller/PhabricatorController.php +++ b/src/applications/base/controller/PhabricatorController.php @@ -170,6 +170,8 @@ abstract class PhabricatorController extends AphrontController { $page->setDeviceReady(true); } + $page->setShowChrome(idx($options, 'chrome', true)); + $application_menu = $this->buildApplicationMenu(); if ($application_menu) { $page->setApplicationMenu($application_menu); diff --git a/src/applications/countdown/application/PhabricatorApplicationCountdown.php b/src/applications/countdown/application/PhabricatorApplicationCountdown.php index fb5392e823..eaee1a8fbb 100644 --- a/src/applications/countdown/application/PhabricatorApplicationCountdown.php +++ b/src/applications/countdown/application/PhabricatorApplicationCountdown.php @@ -11,7 +11,7 @@ final class PhabricatorApplicationCountdown extends PhabricatorApplication { } public function getShortDescription() { - return 'Countdown Timers'; + return pht('Countdown Timers'); } public function getTitleGlyph() { diff --git a/src/applications/countdown/controller/PhabricatorCountdownController.php b/src/applications/countdown/controller/PhabricatorCountdownController.php index 03f8495233..459d601575 100644 --- a/src/applications/countdown/controller/PhabricatorCountdownController.php +++ b/src/applications/countdown/controller/PhabricatorCountdownController.php @@ -2,20 +2,33 @@ abstract class PhabricatorCountdownController extends PhabricatorController { - public function buildStandardPageResponse($view, array $data) { + public function buildSideNavView() { + $user = $this->getRequest()->getUser(); - $page = $this->buildStandardPageView(); + $nav = new AphrontSideNavFilterView(); + $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); - $page->setApplicationName('Countdown'); - $page->setBaseURI('/countdown/'); - $page->setTitle(idx($data, 'title')); - $page->setGlyph("\xE2\x9A\xB2"); - $page->setShowChrome(idx($data, 'chrome', true)); + $nav->addFilter('', pht('All Timers'), + $this->getApplicationURI('')); + $nav->addFilter('', pht('Create Timer'), + $this->getApplicationURI('edit/')); - $page->appendChild($view); + return $nav; + } - $response = new AphrontWebpageResponse(); - return $response->setContent($page->render()); + public function buildApplicationMenu() { + return $this->buildSideNavView()->getMenu(); + } + public function buildApplicationCrumbs() { + $crumbs = parent::buildApplicationCrumbs(); + + $crumbs->addAction( + id(new PhabricatorMenuItemView()) + ->setName(pht('Create Timer')) + ->setHref($this->getApplicationURI('edit/')) + ->setIcon('create')); + + return $crumbs; } } diff --git a/src/applications/countdown/controller/PhabricatorCountdownDeleteController.php b/src/applications/countdown/controller/PhabricatorCountdownDeleteController.php index db1ab235f0..800822dda4 100644 --- a/src/applications/countdown/controller/PhabricatorCountdownDeleteController.php +++ b/src/applications/countdown/controller/PhabricatorCountdownDeleteController.php @@ -30,13 +30,14 @@ final class PhabricatorCountdownDeleteController ->setURI('/countdown/'); } + $inst = pht('Are you sure you want to delete the countdown %s?', + $timer->getTitle()); + $dialog = new AphrontDialogView(); $dialog->setUser($request->getUser()); - $dialog->setTitle('Really delete this countdown?'); - $dialog->appendChild(hsprintf( - '

Are you sure you want to delete the countdown "%s"?

', - $timer->getTitle())); - $dialog->addSubmitButton('Delete'); + $dialog->setTitle(pht('Really delete this countdown?')); + $dialog->appendChild(hsprintf('

%s

', $inst)); + $dialog->addSubmitButton(pht('Delete')); $dialog->addCancelButton('/countdown/'); $dialog->setSubmitURI($request->getPath()); diff --git a/src/applications/countdown/controller/PhabricatorCountdownEditController.php b/src/applications/countdown/controller/PhabricatorCountdownEditController.php index 76b49ab63a..64c4a9bd7e 100644 --- a/src/applications/countdown/controller/PhabricatorCountdownEditController.php +++ b/src/applications/countdown/controller/PhabricatorCountdownEditController.php @@ -12,7 +12,7 @@ final class PhabricatorCountdownEditController $request = $this->getRequest(); $user = $request->getUser(); - $action_label = 'Create Timer'; + $action_label = pht('Create Timer'); if ($this->id) { $timer = id(new PhabricatorTimer())->load($this->id); @@ -26,7 +26,7 @@ final class PhabricatorCountdownEditController return new Aphront403Response(); } - $action_label = 'Update Timer'; + $action_label = pht('Update Timer'); } else { $timer = new PhabricatorTimer(); $timer->setDatePoint(time()); @@ -42,8 +42,8 @@ final class PhabricatorCountdownEditController $e_text = null; if (!strlen($title)) { - $e_text = 'Required'; - $errors[] = 'You must give it a name.'; + $e_text = pht('Required'); + $errors[] = pht('You must give it a name.'); } // If the user types something like "5 PM", convert it to a timestamp @@ -54,9 +54,9 @@ final class PhabricatorCountdownEditController $date = new DateTime($datepoint, $timezone); $timestamp = $date->format('U'); } catch (Exception $e) { - $errors[] = 'You entered an incorrect date. You can enter date like'. - ' \'2011-06-26 13:33:37\' to create an event at'. - ' 13:33:37 on the 26th of June 2011.'; + $errors[] = pht('You entered an incorrect date. You can enter date'. + ' like \'2011-06-26 13:33:37\' to create an event at'. + ' 13:33:37 on the 26th of June 2011.'); $timestamp = null; } @@ -71,8 +71,8 @@ final class PhabricatorCountdownEditController } else { $error_view = id(new AphrontErrorView()) ->setErrors($errors) - ->setTitle('It\'s not The Final Countdown (du nu nuuu nun)' . - ' until you fix these problem'); + ->setTitle(pht('It\'s not The Final Countdown (du nu nuuu nun)' . + ' until you fix these problem')); } } @@ -89,19 +89,17 @@ final class PhabricatorCountdownEditController ->setAction($request->getRequestURI()->getPath()) ->appendChild( id(new AphrontFormTextControl()) - ->setLabel('Title') + ->setLabel(pht('Title')) ->setValue($timer->getTitle()) ->setName('title')) ->appendChild( id(new AphrontFormTextControl()) - ->setLabel('End date') + ->setLabel(pht('End date')) ->setValue($display_datepoint) ->setName('datepoint') - ->setCaption(hsprintf( - 'Examples: '. - '2011-12-25 or '. - '3 hours or '. - 'June 8 2011, 5 PM.'))) + ->setCaption(pht('Examples: '. + '2011-12-25 or 3 hours or '. + 'June 8 2011, 5 PM.'))) ->appendChild( id(new AphrontFormSubmitControl()) ->addCancelButton('/countdown/') @@ -110,15 +108,25 @@ final class PhabricatorCountdownEditController $panel = id(new AphrontPanelView()) ->setWidth(AphrontPanelView::WIDTH_FORM) ->setHeader($action_label) + ->setNoBackground() ->appendChild($form); - return $this->buildStandardPageResponse( + $crumbs = $this + ->buildApplicationCrumbs() + ->addCrumb( + id(new PhabricatorCrumbView()) + ->setName($action_label) + ->setHref($this->getApplicationURI('edit/'))); + + return $this->buildApplicationPage( array( + $crumbs, $error_view, $panel, ), array( - 'title' => 'Edit Countdown', + 'title' => pht('Edit Countdown'), + 'device' => true, )); } } diff --git a/src/applications/countdown/controller/PhabricatorCountdownListController.php b/src/applications/countdown/controller/PhabricatorCountdownListController.php index b503d241d3..4e2f147095 100644 --- a/src/applications/countdown/controller/PhabricatorCountdownListController.php +++ b/src/applications/countdown/controller/PhabricatorCountdownListController.php @@ -34,7 +34,7 @@ final class PhabricatorCountdownListController 'class' => 'small button grey', 'href' => '/countdown/edit/'.$timer->getID().'/' ), - 'Edit'); + pht('Edit')); $delete_button = javelin_tag( 'a', @@ -43,7 +43,7 @@ final class PhabricatorCountdownListController 'href' => '/countdown/delete/'.$timer->getID().'/', 'sigil' => 'workflow' ), - 'Delete'); + pht('Delete')); } $rows[] = array( $timer->getID(), @@ -63,10 +63,10 @@ final class PhabricatorCountdownListController $table = new AphrontTableView($rows); $table->setHeaders( array( - 'ID', - 'Author', - 'Title', - 'End Date', + pht('ID'), + pht('Author'), + pht('Title'), + pht('End Date'), '', '' )); @@ -83,13 +83,25 @@ final class PhabricatorCountdownListController $panel = id(new AphrontPanelView()) ->appendChild($table) - ->setHeader('Timers') - ->setCreateButton('Create Timer', '/countdown/edit/') + ->setHeader(pht('Timers')) + ->setNoBackground() ->appendChild($pager); - return $this->buildStandardPageResponse($panel, + $crumbs = $this + ->buildApplicationCrumbs() + ->addCrumb( + id(new PhabricatorCrumbView()) + ->setName(pht('All Timers')) + ->setHref($this->getApplicationURI())); + + return $this->buildApplicationPage( array( - 'title' => 'Countdown', + $crumbs, + $panel + ), + array( + 'title' => pht('Countdown'), + 'device' => true, )); } } diff --git a/src/applications/countdown/controller/PhabricatorCountdownViewController.php b/src/applications/countdown/controller/PhabricatorCountdownViewController.php index ed27dfdb58..a13c643b44 100644 --- a/src/applications/countdown/controller/PhabricatorCountdownViewController.php +++ b/src/applications/countdown/controller/PhabricatorCountdownViewController.php @@ -38,10 +38,10 @@ final class PhabricatorCountdownViewController
- - - - + + + + %s%s%s%s
DaysHoursMinutesSeconds%s%s%s%s
@@ -51,6 +51,10 @@ final class PhabricatorCountdownViewController $container, $timer->getTitle(), phabricator_datetime($timer->getDatePoint(), $user), + pht('Days'), + pht('Hours'), + pht('Minutes'), + pht('Seconds'), javelin_tag('td', array('sigil' => 'phabricator-timer-days'), ''), javelin_tag('td', array('sigil' => 'phabricator-timer-hours'), ''), javelin_tag('td', array('sigil' => 'phabricator-timer-minutes'), ''), @@ -64,11 +68,22 @@ final class PhabricatorCountdownViewController $panel = $content; - return $this->buildStandardPageResponse( - $panel, + $crumbs = $this + ->buildApplicationCrumbs() + ->addCrumb( + id(new PhabricatorCrumbView()) + ->setName($timer->getTitle()) + ->setHref($this->getApplicationURI($this->id.'/'))); + + return $this->buildApplicationPage( array( - 'title' => 'Countdown: '.$timer->getTitle(), - 'chrome' => $chrome_visible + ($chrome_visible ? $crumbs : ''), + $panel, + ), + array( + 'title' => pht('Countdown: %s', $timer->getTitle()), + 'chrome' => $chrome_visible, + 'device' => true, )); }