@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Allow Dashboards to set an icon

Summary: Allows users set an icon (for reuse on upcoming home) for their dashboard based on 16 descriminating choices.

Test Plan: Create a new dashboard, set new icon. Edit an existing dashboard, set icon.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Differential Revision: https://secure.phabricator.com/D17042

+108 -1
+5
resources/sql/autopatches/20161212.dashboards.01.icon.sql
··· 1 + ALTER TABLE {$NAMESPACE}_dashboard.dashboard 2 + ADD icon VARCHAR(32) NOT NULL; 3 + 4 + UPDATE {$NAMESPACE}_dashboard.dashboard 5 + SET icon = 'fa-dashboard';
+2
src/__phutil_library_map__.php
··· 2426 2426 'PhabricatorDashboardDashboardHasPanelEdgeType' => 'applications/dashboard/edge/PhabricatorDashboardDashboardHasPanelEdgeType.php', 2427 2427 'PhabricatorDashboardDashboardPHIDType' => 'applications/dashboard/phid/PhabricatorDashboardDashboardPHIDType.php', 2428 2428 'PhabricatorDashboardEditController' => 'applications/dashboard/controller/PhabricatorDashboardEditController.php', 2429 + 'PhabricatorDashboardIconSet' => 'applications/dashboard/icon/PhabricatorDashboardIconSet.php', 2429 2430 'PhabricatorDashboardInstall' => 'applications/dashboard/storage/PhabricatorDashboardInstall.php', 2430 2431 'PhabricatorDashboardInstallController' => 'applications/dashboard/controller/PhabricatorDashboardInstallController.php', 2431 2432 'PhabricatorDashboardLayoutConfig' => 'applications/dashboard/layoutconfig/PhabricatorDashboardLayoutConfig.php', ··· 7364 7365 'PhabricatorDashboardDashboardHasPanelEdgeType' => 'PhabricatorEdgeType', 7365 7366 'PhabricatorDashboardDashboardPHIDType' => 'PhabricatorPHIDType', 7366 7367 'PhabricatorDashboardEditController' => 'PhabricatorDashboardController', 7368 + 'PhabricatorDashboardIconSet' => 'PhabricatorIconSet', 7367 7369 'PhabricatorDashboardInstall' => 'PhabricatorDashboardDAO', 7368 7370 'PhabricatorDashboardInstallController' => 'PhabricatorDashboardController', 7369 7371 'PhabricatorDashboardLayoutConfig' => 'Phobject',
+12
src/applications/dashboard/controller/PhabricatorDashboardEditController.php
··· 67 67 } 68 68 69 69 $v_name = $dashboard->getName(); 70 + $v_icon = $dashboard->getIcon(); 70 71 $v_layout_mode = $dashboard->getLayoutConfigObject()->getLayoutMode(); 71 72 $e_name = true; 72 73 73 74 $validation_exception = null; 74 75 if ($request->isFormPost() && $request->getStr('edit')) { 75 76 $v_name = $request->getStr('name'); 77 + $v_icon = $request->getStr('icon'); 76 78 $v_layout_mode = $request->getStr('layout_mode'); 77 79 $v_view_policy = $request->getStr('viewPolicy'); 78 80 $v_edit_policy = $request->getStr('editPolicy'); ··· 81 83 $xactions = array(); 82 84 83 85 $type_name = PhabricatorDashboardTransaction::TYPE_NAME; 86 + $type_icon = PhabricatorDashboardTransaction::TYPE_ICON; 84 87 $type_layout_mode = PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE; 85 88 $type_view_policy = PhabricatorTransactions::TYPE_VIEW_POLICY; 86 89 $type_edit_policy = PhabricatorTransactions::TYPE_EDIT_POLICY; ··· 91 94 $xactions[] = id(new PhabricatorDashboardTransaction()) 92 95 ->setTransactionType($type_layout_mode) 93 96 ->setNewValue($v_layout_mode); 97 + $xactions[] = id(new PhabricatorDashboardTransaction()) 98 + ->setTransactionType($type_icon) 99 + ->setNewValue($v_icon); 94 100 $xactions[] = id(new PhabricatorDashboardTransaction()) 95 101 ->setTransactionType($type_view_policy) 96 102 ->setNewValue($v_view_policy); ··· 146 152 ->setName('layout_mode') 147 153 ->setValue($v_layout_mode) 148 154 ->setOptions($layout_mode_options)) 155 + ->appendChild( 156 + id(new PHUIFormIconSetControl()) 157 + ->setLabel(pht('Icon')) 158 + ->setName('icon') 159 + ->setIconSet(new PhabricatorDashboardIconSet()) 160 + ->setValue($v_icon)) 149 161 ->appendChild( 150 162 id(new AphrontFormPolicyControl()) 151 163 ->setName('viewPolicy')
+1 -1
src/applications/dashboard/controller/PhabricatorDashboardManageController.php
··· 109 109 ->setHeader($dashboard->getName()) 110 110 ->setPolicyObject($dashboard) 111 111 ->setStatus($status_icon, $status_color, $status_name) 112 - ->setHeaderIcon('fa-dashboard') 112 + ->setHeaderIcon($dashboard->getIcon()) 113 113 ->addActionLink($button); 114 114 } 115 115
+11
src/applications/dashboard/editor/PhabricatorDashboardTransactionEditor.php
··· 51 51 $types[] = PhabricatorTransactions::TYPE_EDGE; 52 52 53 53 $types[] = PhabricatorDashboardTransaction::TYPE_NAME; 54 + $types[] = PhabricatorDashboardTransaction::TYPE_ICON; 54 55 $types[] = PhabricatorDashboardTransaction::TYPE_STATUS; 55 56 $types[] = PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE; 56 57 ··· 66 67 return null; 67 68 } 68 69 return $object->getName(); 70 + case PhabricatorDashboardTransaction::TYPE_ICON: 71 + if ($this->getIsNewObject()) { 72 + return null; 73 + } 74 + return $object->getIcon(); 69 75 case PhabricatorDashboardTransaction::TYPE_STATUS: 70 76 if ($this->getIsNewObject()) { 71 77 return null; ··· 87 93 PhabricatorApplicationTransaction $xaction) { 88 94 switch ($xaction->getTransactionType()) { 89 95 case PhabricatorDashboardTransaction::TYPE_NAME: 96 + case PhabricatorDashboardTransaction::TYPE_ICON: 90 97 case PhabricatorDashboardTransaction::TYPE_STATUS: 91 98 case PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE: 92 99 return $xaction->getNewValue(); ··· 100 107 switch ($xaction->getTransactionType()) { 101 108 case PhabricatorDashboardTransaction::TYPE_NAME: 102 109 $object->setName($xaction->getNewValue()); 110 + return; 111 + case PhabricatorDashboardTransaction::TYPE_ICON: 112 + $object->setIcon($xaction->getNewValue()); 103 113 return; 104 114 case PhabricatorDashboardTransaction::TYPE_STATUS: 105 115 $object->setStatus($xaction->getNewValue()); ··· 130 140 131 141 switch ($xaction->getTransactionType()) { 132 142 case PhabricatorDashboardTransaction::TYPE_NAME: 143 + case PhabricatorDashboardTransaction::TYPE_ICON: 133 144 case PhabricatorDashboardTransaction::TYPE_STATUS: 134 145 case PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE: 135 146 return;
+45
src/applications/dashboard/icon/PhabricatorDashboardIconSet.php
··· 1 + <?php 2 + 3 + final class PhabricatorDashboardIconSet 4 + extends PhabricatorIconSet { 5 + 6 + const ICONSETKEY = 'dashboards'; 7 + 8 + public function getSelectIconTitleText() { 9 + return pht('Choose Dashboard Icon'); 10 + } 11 + 12 + protected function newIcons() { 13 + $map = array( 14 + 'fa-home' => pht('Home'), 15 + 'fa-th-large' => pht('Blocks'), 16 + 'fa-columns' => pht('Columns'), 17 + 'fa-bookmark' => pht('Page Saver'), 18 + 19 + 'fa-book' => pht('Knowledge'), 20 + 'fa-bomb' => pht('Kaboom'), 21 + 'fa-pie-chart' => pht('Apple Blueberry'), 22 + 'fa-bar-chart' => pht('Serious Business'), 23 + 24 + 'fa-bell' => pht('Ding Ding'), 25 + 'fa-credit-card' => pht('Plastic Debt'), 26 + 'fa-code' => pht('PHP is Life'), 27 + 'fa-sticky-note' => pht('To Self'), 28 + 29 + 'fa-newspaper-o' => pht('Stay Woke'), 30 + 'fa-server' => pht('Metallica'), 31 + 'fa-hashtag' => pht('Corned Beef'), 32 + 'fa-group' => pht('Triplets'), 33 + ); 34 + 35 + $icons = array(); 36 + foreach ($map as $key => $label) { 37 + $icons[] = id(new PhabricatorIconSetIcon()) 38 + ->setKey($key) 39 + ->setLabel($label); 40 + } 41 + 42 + return $icons; 43 + } 44 + 45 + }
+3
src/applications/dashboard/storage/PhabricatorDashboard.php
··· 16 16 protected $viewPolicy; 17 17 protected $editPolicy; 18 18 protected $status; 19 + protected $icon; 19 20 protected $layoutConfig = array(); 20 21 21 22 const STATUS_ACTIVE = 'active'; ··· 29 30 public static function initializeNewDashboard(PhabricatorUser $actor) { 30 31 return id(new PhabricatorDashboard()) 31 32 ->setName('') 33 + ->setIcon('fa-dashboard') 32 34 ->setViewPolicy(PhabricatorPolicies::POLICY_USER) 33 35 ->setEditPolicy($actor->getPHID()) 34 36 ->setStatus(self::STATUS_ACTIVE) ··· 63 65 self::CONFIG_COLUMN_SCHEMA => array( 64 66 'name' => 'text255', 65 67 'status' => 'text32', 68 + 'icon' => 'text32', 66 69 'authorPHID' => 'phid', 67 70 ), 68 71 ) + parent::getConfiguration();
+29
src/applications/dashboard/storage/PhabricatorDashboardTransaction.php
··· 4 4 extends PhabricatorApplicationTransaction { 5 5 6 6 const TYPE_NAME = 'dashboard:name'; 7 + const TYPE_ICON = 'dashboard:icon'; 7 8 const TYPE_STATUS = 'dashboard:status'; 8 9 const TYPE_LAYOUT_MODE = 'dashboard:layoutmode'; 9 10 ··· 39 40 $new); 40 41 } 41 42 break; 43 + case self::TYPE_ICON: 44 + if (!strlen($old)) { 45 + return pht( 46 + '%s set the dashboard icon.', 47 + $author_link); 48 + } else { 49 + return pht( 50 + '%s changed this dashboard icon from "%s" to "%s".', 51 + $author_link, 52 + $old, 53 + $new); 54 + } 55 + break; 42 56 case self::TYPE_STATUS: 43 57 if ($new == PhabricatorDashboard::STATUS_ACTIVE) { 44 58 return pht( ··· 76 90 } else { 77 91 return pht( 78 92 '%s renamed dashboard %s from "%s" to "%s".', 93 + $author_link, 94 + $object_link, 95 + $old, 96 + $new); 97 + } 98 + break; 99 + case self::TYPE_ICON: 100 + if (!strlen($old)) { 101 + return pht( 102 + '%s set dashboard icon for %s.', 103 + $author_link, 104 + $object_link); 105 + } else { 106 + return pht( 107 + '%s set the dashboard icon on %s from "%s" to "%s".', 79 108 $author_link, 80 109 $object_link, 81 110 $old,