From 16c562ba1c3bed5db27d81848cf0851d570b188d Mon Sep 17 00:00:00 2001 From: Chad Little Date: Sun, 31 Mar 2013 12:28:50 -0700 Subject: [PATCH] Actions for Workboards. Summary: Adds an action panel on the left side of the workboard. Test Plan: Tested Fluid and mobile layouts Reviewers: epriestley, btrahan Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D5496 --- src/__celerity_resource_map__.php | 46 ++++++++++++++- src/__phutil_library_map__.php | 2 + .../examples/PhabricatorWorkboardExample.php | 53 ++++++++++++++++-- .../layout/PhabricatorWorkboardActionView.php | 35 ++++++++++++ src/view/layout/PhabricatorWorkboardView.php | 37 +++++++++++- .../css/layout/phabricator-workboard-view.css | 41 ++++++++++++++ .../css/layout/phabricator-workpanel-view.css | 1 + webroot/rsrc/image/people/harding.png | Bin 0 -> 3793 bytes webroot/rsrc/image/people/jefferson.png | Bin 0 -> 6048 bytes webroot/rsrc/image/people/lincoln.png | Bin 0 -> 5330 bytes webroot/rsrc/image/people/mckinley.png | Bin 0 -> 5549 bytes webroot/rsrc/image/people/taft.png | Bin 0 -> 3993 bytes webroot/rsrc/image/people/washington.png | Bin 0 -> 6028 bytes 13 files changed, 206 insertions(+), 9 deletions(-) create mode 100644 src/view/layout/PhabricatorWorkboardActionView.php create mode 100644 webroot/rsrc/image/people/harding.png create mode 100644 webroot/rsrc/image/people/jefferson.png create mode 100644 webroot/rsrc/image/people/lincoln.png create mode 100644 webroot/rsrc/image/people/mckinley.png create mode 100644 webroot/rsrc/image/people/taft.png create mode 100644 webroot/rsrc/image/people/washington.png diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index 429b9c9d29..db77801893 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -448,6 +448,48 @@ celerity_register_resource_map(array( 'disk' => '/rsrc/image/menu_texture.png', 'type' => 'png', ), + '/rsrc/image/people/harding.png' => + array( + 'hash' => '818b035ace2c480aa8df7b7f11cef58b', + 'uri' => '/res/818b035a/rsrc/image/people/harding.png', + 'disk' => '/rsrc/image/people/harding.png', + 'type' => 'png', + ), + '/rsrc/image/people/jefferson.png' => + array( + 'hash' => '55fe807ff02f9320e595fb59442e2038', + 'uri' => '/res/55fe807f/rsrc/image/people/jefferson.png', + 'disk' => '/rsrc/image/people/jefferson.png', + 'type' => 'png', + ), + '/rsrc/image/people/lincoln.png' => + array( + 'hash' => '2363337947ab52fd5fda79e4a004e930', + 'uri' => '/res/23633379/rsrc/image/people/lincoln.png', + 'disk' => '/rsrc/image/people/lincoln.png', + 'type' => 'png', + ), + '/rsrc/image/people/mckinley.png' => + array( + 'hash' => '0b7b05dd47c49a0874670e5e8200bba8', + 'uri' => '/res/0b7b05dd/rsrc/image/people/mckinley.png', + 'disk' => '/rsrc/image/people/mckinley.png', + 'type' => 'png', + ), + '/rsrc/image/people/taft.png' => + array( + 'hash' => 'f3e47d45b59b0b009fd536dabae9a151', + 'uri' => '/res/f3e47d45/rsrc/image/people/taft.png', + 'disk' => '/rsrc/image/people/taft.png', + 'type' => 'png', + ), + '/rsrc/image/people/washington.png' => + array( + 'hash' => '01412761cab769f7993d69eba986d949', + 'uri' => '/res/01412761/rsrc/image/people/washington.png', + 'disk' => '/rsrc/image/people/washington.png', + 'type' => 'png', + ), '/rsrc/image/phrequent_active.png' => array( 'hash' => '716cddc08630eaa33934b2008723cac0', @@ -3401,7 +3443,7 @@ celerity_register_resource_map(array( ), 'phabricator-workboard-view-css' => array( - 'uri' => '/res/98971c26/rsrc/css/layout/phabricator-workboard-view.css', + 'uri' => '/res/b70667c6/rsrc/css/layout/phabricator-workboard-view.css', 'type' => 'css', 'requires' => array( @@ -3410,7 +3452,7 @@ celerity_register_resource_map(array( ), 'phabricator-workpanel-view-css' => array( - 'uri' => '/res/db76713b/rsrc/css/layout/phabricator-workpanel-view.css', + 'uri' => '/res/d2eea288/rsrc/css/layout/phabricator-workpanel-view.css', 'type' => 'css', 'requires' => array( diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 0fc947b7e5..5ed1d203e8 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1435,6 +1435,7 @@ phutil_register_library_map(array( 'PhabricatorUserStatusInvalidEpochException' => 'applications/people/exception/PhabricatorUserStatusInvalidEpochException.php', 'PhabricatorUserStatusOverlapException' => 'applications/people/exception/PhabricatorUserStatusOverlapException.php', 'PhabricatorUserTestCase' => 'applications/people/storage/__tests__/PhabricatorUserTestCase.php', + 'PhabricatorWorkboardActionView' => 'view/layout/PhabricatorWorkboardActionView.php', 'PhabricatorWorkboardExample' => 'applications/uiexample/examples/PhabricatorWorkboardExample.php', 'PhabricatorWorkboardView' => 'view/layout/PhabricatorWorkboardView.php', 'PhabricatorWorker' => 'infrastructure/daemon/workers/PhabricatorWorker.php', @@ -3084,6 +3085,7 @@ phutil_register_library_map(array( 'PhabricatorUserStatusInvalidEpochException' => 'Exception', 'PhabricatorUserStatusOverlapException' => 'Exception', 'PhabricatorUserTestCase' => 'PhabricatorTestCase', + 'PhabricatorWorkboardActionView' => 'AphrontView', 'PhabricatorWorkboardExample' => 'PhabricatorUIExample', 'PhabricatorWorkboardView' => 'AphrontView', 'PhabricatorWorkerActiveTask' => 'PhabricatorWorkerTask', diff --git a/src/applications/uiexample/examples/PhabricatorWorkboardExample.php b/src/applications/uiexample/examples/PhabricatorWorkboardExample.php index 4232816936..f978081226 100644 --- a/src/applications/uiexample/examples/PhabricatorWorkboardExample.php +++ b/src/applications/uiexample/examples/PhabricatorWorkboardExample.php @@ -99,7 +99,7 @@ final class PhabricatorWorkboardExample extends PhabricatorUIExample { ->setHeader(pht('Playing Card')) ->setBarColor('orange')); - $panel = id(new PhabricatorWorkpanelView) + $panel = id(new PhabricatorWorkpanelView()) ->setCards($list) ->setHeader('Business Stuff') ->setFooterAction( @@ -108,21 +108,21 @@ final class PhabricatorWorkboardExample extends PhabricatorUIExample { ->setIcon('new') ->setHref('/maniphest/task/create/')); - $panel2 = id(new PhabricatorWorkpanelView) + $panel2 = id(new PhabricatorWorkpanelView()) ->setCards($list2) ->setHeader('Under Duress'); - $panel3 = id(new PhabricatorWorkpanelView) + $panel3 = id(new PhabricatorWorkpanelView()) ->setCards($list3) ->setHeader('Spicy Thai Chicken'); - $board = id(new PhabricatorWorkboardView) + $board = id(new PhabricatorWorkboardView()) ->addPanel($panel) ->addPanel($panel2) ->addPanel($panel2) ->addPanel($panel3); - $board2 = id(new PhabricatorWorkboardView) + $board2 = id(new PhabricatorWorkboardView()) ->setFlexLayout(true) ->addPanel($panel) ->addPanel($panel2) @@ -131,12 +131,44 @@ final class PhabricatorWorkboardExample extends PhabricatorUIExample { ->addPanel($panel2) ->addPanel($panel3); + $action = new PhabricatorWorkboardActionView(); + $action->setHref('/maniphest/task/create'); + $action->setImage('/rsrc/image/actions/edit.png'); + + $person1 = new PhabricatorWorkboardActionView(); + $person1->setHref('http://en.wikipedia.org/wiki/George_Washington'); + $person1->setImage( + celerity_get_resource_uri('/rsrc/image/people/washington.png')); + + $person2 = new PhabricatorWorkboardActionView(); + $person2->setHref('http://en.wikipedia.org/wiki/Warren_G._Harding'); + $person2->setImage( + celerity_get_resource_uri('/rsrc/image/people/harding.png')); + + $person3 = new PhabricatorWorkboardActionView(); + $person3->setHref('http://en.wikipedia.org/wiki/William_Howard_Taft'); + $person3->setImage( + celerity_get_resource_uri('/rsrc/image/people/taft.png')); + + $board3 = id(new PhabricatorWorkboardView()) + ->setFlexLayout(true) + ->addPanel($panel) + ->addPanel($panel) + ->addPanel($panel2) + ->addPanel($panel3) + ->addAction($action) + ->addAction($person1) + ->addAction($person2) + ->addAction($person3); + $head1 = id(new PhabricatorHeaderView()) ->setHeader(pht('Fixed Panel')); $head2 = id(new PhabricatorHeaderView()) ->setHeader(pht('Fluid Panel')); + $head3 = id(new PhabricatorHeaderView()) + ->setHeader(pht('Action Panel')); $wrap1 = phutil_tag( 'div', @@ -152,6 +184,13 @@ final class PhabricatorWorkboardExample extends PhabricatorUIExample { ), $board2); + $wrap3 = phutil_tag( + 'div', + array( + 'class' => 'ml' + ), + $board3); + return phutil_tag( 'div', array(), @@ -159,7 +198,9 @@ final class PhabricatorWorkboardExample extends PhabricatorUIExample { $head1, $wrap1, $head2, - $wrap2 + $wrap2, + $head3, + $wrap3 )); } } diff --git a/src/view/layout/PhabricatorWorkboardActionView.php b/src/view/layout/PhabricatorWorkboardActionView.php new file mode 100644 index 0000000000..c35e4d7c56 --- /dev/null +++ b/src/view/layout/PhabricatorWorkboardActionView.php @@ -0,0 +1,35 @@ +href = $href; + return $this; + } + + public function setWorkflow($workflow) { + $this->workflow = $workflow; + return $this; + } + + public function setImage($image) { + $this->image = $image; + } + + public function render() { + + return phutil_tag( + 'a', + array( + 'href' => $this->href, + 'class' => 'phabricator-workboard-action-item-link', + 'sigil' => $this->workflow ? 'workflow' : null, + 'style' => 'background-image: url('.$this->image.');' + ), + ''); + } +} diff --git a/src/view/layout/PhabricatorWorkboardView.php b/src/view/layout/PhabricatorWorkboardView.php index 806233372a..b395bdba3e 100644 --- a/src/view/layout/PhabricatorWorkboardView.php +++ b/src/view/layout/PhabricatorWorkboardView.php @@ -4,6 +4,7 @@ final class PhabricatorWorkboardView extends AphrontView { private $panels = array(); private $flexLayout = false; + private $actions = array(); public function addPanel(PhabricatorWorkpanelView $panel) { $this->panels[] = $panel; @@ -15,6 +16,11 @@ final class PhabricatorWorkboardView extends AphrontView { return $this; } + public function addAction(PhabricatorWorkboardActionView $action) { + $this->actions[] = $action; + return $this; + } + public function render() { require_celerity_resource('phabricator-workboard-view-css'); @@ -25,6 +31,25 @@ final class PhabricatorWorkboardView extends AphrontView { throw new Exception("No more than 6 panels per workboard."); } + $action_list = null; + if (!empty($this->actions)) { + $items = array(); + foreach ($this->actions as $action) { + $items[] = phutil_tag( + 'li', + array( + 'class' => 'phabricator-workboard-action-item' + ), + $action); + } + $action_list = phutil_tag( + 'ul', + array( + 'class' => 'phabricator-workboard-action-list' + ), + $items); + } + $classes[] = 'workboard-'.count($this->panels).'-up'; $view = phutil_tag( @@ -44,11 +69,21 @@ final class PhabricatorWorkboardView extends AphrontView { $classes[] = 'phabricator-workboard-fixed'; } - return phutil_tag( + $board = phutil_tag( 'div', array( 'class' => implode(' ', $classes) ), $view); + + return phutil_tag( + 'div', + array( + 'class' => 'phabricator-workboard-view' + ), + array( + $action_list, + $board + )); } } diff --git a/webroot/rsrc/css/layout/phabricator-workboard-view.css b/webroot/rsrc/css/layout/phabricator-workboard-view.css index c5cd08ad19..244062bfd0 100644 --- a/webroot/rsrc/css/layout/phabricator-workboard-view.css +++ b/webroot/rsrc/css/layout/phabricator-workboard-view.css @@ -2,14 +2,29 @@ * @provides phabricator-workboard-view-css */ +.phabricator-workboard-view { + width: 100%; +} + .phabricator-workboard-view-outer { padding: 8px; + min-height: 120px; overflow-x: scroll; border-radius: 5px; background: rgba(150,150,150,.1); box-shadow: inset 0 0 5px rgba(0,0,0,.5); } +.phabricator-workboard-action-list { + width: 60px; + float: left; + min-height: 60px; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + margin-top: 40px; + background: rgba(150,150,150,.2); +} + .device-phone .phabricator-workboard-view-outer { background: none; box-shadow: none; @@ -18,6 +33,25 @@ width: 100%; } +.device-phone .phabricator-workboard-action-list { + width: 100%; + float: none; + display: block; + border-radius: 3px; + margin: 0 0 5px; + overflow: hidden; +} + +.device-phone .phabricator-workboard-action-list li { + display: inline; + float: left; + margin: 0px; +} + +.device-phone .phabricator-workboard-action-item-link { + margin-right: 0; +} + /* math here is based on panel width and margins */ .phabricator-workboard-fixed .phabricator-workboard-view-inner.workboard-1-up { @@ -52,3 +86,10 @@ .device-phone .phabricator-workboard-fixed .phabricator-workboard-view-inner { width: 100%; } + +.phabricator-workboard-action-item-link { + display: block; + width: 50px; + height: 50px; + margin: 5px 4px 5px 5px; +} diff --git a/webroot/rsrc/css/layout/phabricator-workpanel-view.css b/webroot/rsrc/css/layout/phabricator-workpanel-view.css index 3d2fd785fd..c5a65de653 100644 --- a/webroot/rsrc/css/layout/phabricator-workpanel-view.css +++ b/webroot/rsrc/css/layout/phabricator-workpanel-view.css @@ -70,6 +70,7 @@ .device-desktop .phabricator-workpanel-view .phabricator-workpanel-footer-action:hover { background-color: rgba(100,100,100,.1); + border-radius: 3px; } .phabricator-workpanel-view .phabricator-menu-item-icon { diff --git a/webroot/rsrc/image/people/harding.png b/webroot/rsrc/image/people/harding.png new file mode 100644 index 0000000000000000000000000000000000000000..0941b34cf127ce54f25f9a0b21953e96c3e0eba6 GIT binary patch literal 3793 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 literal 0 HcmV?d00001 diff --git a/webroot/rsrc/image/people/jefferson.png b/webroot/rsrc/image/people/jefferson.png new file mode 100644 index 0000000000000000000000000000000000000000..d86c8044888e7e5b6022a87796e9fc5f90130a5d GIT binary patch literal 6048 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 Xo1ikYkBOmw{+X*NXv){hz6|{@Ktnng literal 0 HcmV?d00001 diff --git a/webroot/rsrc/image/people/lincoln.png b/webroot/rsrc/image/people/lincoln.png new file mode 100644 index 0000000000000000000000000000000000000000..55a168199b247d6791e81ae210f58efc729b9ba9 GIT binary patch literal 5330 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 literal 0 HcmV?d00001 diff --git a/webroot/rsrc/image/people/mckinley.png b/webroot/rsrc/image/people/mckinley.png new file mode 100644 index 0000000000000000000000000000000000000000..637f09951694ce314eaa7a8697d41e5203137fec GIT binary patch literal 5549 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%0AoFl(1 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 A-2eap literal 0 HcmV?d00001