@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.

Use sprites for (nearly) all application icons

Summary: Sprites for everyone.

Test Plan: Loaded `/applications/`.

Reviewers: btrahan, chad, vrana

Reviewed By: vrana

CC: aran

Maniphest Tasks: T1569

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

+252 -248
+5 -4
scripts/celerity/generate_sprites.php
··· 55 55 } 56 56 57 57 $sheet = new PhutilSpriteSheet(); 58 - $sheet->addCSSHeader(<<<EOCSS 58 + $sheet->setCSSHeader(<<<EOCSS 59 59 /** 60 60 * @provides autosprite-css 61 61 */ 62 62 63 63 .autosprite { 64 - background-image: url(/rsrc/images/autosprite.png); 64 + background-image: url(/rsrc/image/autosprite.png); 65 65 background-repeat: no-repeat; 66 66 } 67 67 EOCSS ··· 109 109 110 110 $app_template_mini = id(new PhutilSprite()) 111 111 ->setSourceFile($srcroot.'/application_normal_1x.png') 112 - ->setSourceSize(26, 26); 112 + ->setSourceSize(30, 30); 113 113 114 114 $app_source_map = array( 115 115 '-full' => array($app_template_full, 2), ··· 140 140 'feed' => array(3, 11), 141 141 ); 142 142 143 + $xadj = -1; 143 144 foreach ($app_map as $icon => $coords) { 144 145 list($x, $y) = $coords; 145 146 foreach ($app_source_map as $suffix => $spec) { 146 147 list($template, $scale) = $spec; 147 148 $sheet->addSprite( 148 149 id(clone $template) 149 - ->setSourcePosition(glx($x) * $scale, gly($y) * $scale) 150 + ->setSourcePosition(($xadj + glx($x)) * $scale, gly($y) * $scale) 150 151 ->setTargetCSS('.app-'.$icon.$suffix)); 151 152 } 152 153 }
+27 -104
src/__celerity_resource_map__.php
··· 7 7 */ 8 8 9 9 celerity_register_resource_map(array( 10 - '/rsrc/image/app/app_applications.png' => 11 - array( 12 - 'hash' => 'ce191dc12ab1fc0e9c0881df5e8d4535', 13 - 'uri' => '/res/ce191dc1/rsrc/image/app/app_applications.png', 14 - 'disk' => '/rsrc/image/app/app_applications.png', 15 - 'type' => 'png', 16 - ), 17 10 '/rsrc/image/app/app_audit.png' => 18 11 array( 19 12 'hash' => '53340003d1daf306b64ed5ebb08bc204', ··· 21 14 'disk' => '/rsrc/image/app/app_audit.png', 22 15 'type' => 'png', 23 16 ), 24 - '/rsrc/image/app/app_differential.png' => 25 - array( 26 - 'hash' => 'ac7f3cd87dde332b283ff83c3c7198a8', 27 - 'uri' => '/res/ac7f3cd8/rsrc/image/app/app_differential.png', 28 - 'disk' => '/rsrc/image/app/app_differential.png', 29 - 'type' => 'png', 30 - ), 31 - '/rsrc/image/app/app_diffusion.png' => 32 - array( 33 - 'hash' => 'd06f3b996adfe38f233851125471f43f', 34 - 'uri' => '/res/d06f3b99/rsrc/image/app/app_diffusion.png', 35 - 'disk' => '/rsrc/image/app/app_diffusion.png', 36 - 'type' => 'png', 37 - ), 38 - '/rsrc/image/app/app_fact.png' => 39 - array( 40 - 'hash' => 'c0bd5443c552e8d76c2adf05986c9ef6', 41 - 'uri' => '/res/c0bd5443/rsrc/image/app/app_fact.png', 42 - 'disk' => '/rsrc/image/app/app_fact.png', 43 - 'type' => 'png', 44 - ), 45 - '/rsrc/image/app/app_flags.png' => 46 - array( 47 - 'hash' => '574ea87812d3ebd15252889d74f39dd0', 48 - 'uri' => '/res/574ea878/rsrc/image/app/app_flags.png', 49 - 'disk' => '/rsrc/image/app/app_flags.png', 50 - 'type' => 'png', 51 - ), 52 - '/rsrc/image/app/app_maniphest.png' => 53 - array( 54 - 'hash' => '6f62e17097399a687892dc2e3f9abeb9', 55 - 'uri' => '/res/6f62e170/rsrc/image/app/app_maniphest.png', 56 - 'disk' => '/rsrc/image/app/app_maniphest.png', 57 - 'type' => 'png', 58 - ), 59 - '/rsrc/image/app/app_people.png' => 60 - array( 61 - 'hash' => 'b6c6fd4bc8b831dfd0e680f303f20d5f', 62 - 'uri' => '/res/b6c6fd4b/rsrc/image/app/app_people.png', 63 - 'disk' => '/rsrc/image/app/app_people.png', 64 - 'type' => 'png', 65 - ), 66 - '/rsrc/image/app/app_phriction.png' => 67 - array( 68 - 'hash' => 'f8c16c533b38b081486be48c4f1cf5bd', 69 - 'uri' => '/res/f8c16c53/rsrc/image/app/app_phriction.png', 70 - 'disk' => '/rsrc/image/app/app_phriction.png', 71 - 'type' => 'png', 72 - ), 73 - '/rsrc/image/app/app_ponder.png' => 74 - array( 75 - 'hash' => '9893ca3674af96884d3564ecbe101280', 76 - 'uri' => '/res/9893ca36/rsrc/image/app/app_ponder.png', 77 - 'disk' => '/rsrc/image/app/app_ponder.png', 78 - 'type' => 'png', 79 - ), 80 - '/rsrc/image/app/app_settings.png' => 81 - array( 82 - 'hash' => '095fa0e61ec11d3f7e543ba48f5a5adb', 83 - 'uri' => '/res/095fa0e6/rsrc/image/app/app_settings.png', 84 - 'disk' => '/rsrc/image/app/app_settings.png', 85 - 'type' => 'png', 86 - ), 87 17 '/rsrc/image/application/ponder/downvote.png' => 88 18 array( 89 19 'hash' => '46c5644a0fccb9e237a3363e07f50487', ··· 135 65 ), 136 66 '/rsrc/image/autosprite.png' => 137 67 array( 138 - 'hash' => 'd02cc399dc950cd70006ef2374a6da4a', 139 - 'uri' => '/res/d02cc399/rsrc/image/autosprite.png', 68 + 'hash' => 'e3a103473dad6161a7be5369c2e21276', 69 + 'uri' => '/res/e3a10347/rsrc/image/autosprite.png', 140 70 'disk' => '/rsrc/image/autosprite.png', 141 71 'type' => 'png', 142 72 ), ··· 145 75 'hash' => '1c5f255071537f05406adee86717ff27', 146 76 'uri' => '/res/1c5f2550/rsrc/image/avatar.png', 147 77 'disk' => '/rsrc/image/avatar.png', 148 - 'type' => 'png', 149 - ), 150 - '/rsrc/image/bolt.png' => 151 - array( 152 - 'hash' => 'f8c30376f30cf5a8675a5e683400684a', 153 - 'uri' => '/res/f8c30376/rsrc/image/bolt.png', 154 - 'disk' => '/rsrc/image/bolt.png', 155 78 'type' => 'png', 156 79 ), 157 80 '/rsrc/image/button_apps.png' => ··· 720 643 ), 721 644 'autosprite-css' => 722 645 array( 723 - 'uri' => '/res/ef26301d/rsrc/css/autosprite.css', 646 + 'uri' => '/res/e09ec93c/rsrc/css/autosprite.css', 724 647 'type' => 'css', 725 648 'requires' => 726 649 array( ··· 1729 1652 ), 1730 1653 'javelin-behavior-repository-crossreference' => 1731 1654 array( 1732 - 'uri' => '/res/d3ff7611/rsrc/js/application/repository/repository-crossreference.js', 1655 + 'uri' => '/res/6a59668a/rsrc/js/application/repository/repository-crossreference.js', 1733 1656 'type' => 'js', 1734 1657 'requires' => 1735 1658 array( ··· 2303 2226 ), 2304 2227 'phabricator-application-launch-view-css' => 2305 2228 array( 2306 - 'uri' => '/res/e157830a/rsrc/css/application/base/phabricator-application-launch-view.css', 2229 + 'uri' => '/res/effb87ee/rsrc/css/application/base/phabricator-application-launch-view.css', 2307 2230 'type' => 'css', 2308 2231 'requires' => 2309 2232 array( ··· 2448 2371 ), 2449 2372 'phabricator-main-menu-view' => 2450 2373 array( 2451 - 'uri' => '/res/a51c5f64/rsrc/css/application/base/main-menu-view.css', 2374 + 'uri' => '/res/cb2796ae/rsrc/css/application/base/main-menu-view.css', 2452 2375 'type' => 'css', 2453 2376 'requires' => 2454 2377 array( ··· 2468 2391 ), 2469 2392 'phabricator-nav-view-css' => 2470 2393 array( 2471 - 'uri' => '/res/051b6ab6/rsrc/css/aphront/phabricator-nav-view.css', 2394 + 'uri' => '/res/ca2744bd/rsrc/css/aphront/phabricator-nav-view.css', 2472 2395 'type' => 'css', 2473 2396 'requires' => 2474 2397 array( ··· 2988 2911 'uri' => '/res/pkg/19ebcc79/differential.pkg.css', 2989 2912 'type' => 'css', 2990 2913 ), 2991 - '5b33c790' => 2914 + '26972e06' => 2992 2915 array( 2993 2916 'name' => 'differential.pkg.js', 2994 2917 'symbols' => ··· 3012 2935 16 => 'javelin-behavior-differential-dropdown-menus', 3013 2936 17 => 'javelin-behavior-buoyant', 3014 2937 ), 3015 - 'uri' => '/res/pkg/5b33c790/differential.pkg.js', 2938 + 'uri' => '/res/pkg/26972e06/differential.pkg.js', 3016 2939 'type' => 'js', 3017 2940 ), 3018 2941 'c8ce2d88' => ··· 3120 3043 'aphront-typeahead-control-css' => 'edf6b149', 3121 3044 'differential-changeset-view-css' => '19ebcc79', 3122 3045 'differential-core-view-css' => '19ebcc79', 3123 - 'differential-inline-comment-editor' => '5b33c790', 3046 + 'differential-inline-comment-editor' => '26972e06', 3124 3047 'differential-local-commits-view-css' => '19ebcc79', 3125 3048 'differential-results-table-css' => '19ebcc79', 3126 3049 'differential-revision-add-comment-css' => '19ebcc79', ··· 3133 3056 'inline-comment-summary-css' => '19ebcc79', 3134 3057 'javelin-behavior' => '6fb20113', 3135 3058 'javelin-behavior-aphront-basic-tokenizer' => '97f65640', 3136 - 'javelin-behavior-aphront-drag-and-drop' => '5b33c790', 3137 - 'javelin-behavior-aphront-drag-and-drop-textarea' => '5b33c790', 3059 + 'javelin-behavior-aphront-drag-and-drop' => '26972e06', 3060 + 'javelin-behavior-aphront-drag-and-drop-textarea' => '26972e06', 3138 3061 'javelin-behavior-aphront-form-disable-on-submit' => '971b021e', 3139 3062 'javelin-behavior-audit-preview' => '5e68be89', 3140 - 'javelin-behavior-buoyant' => '5b33c790', 3141 - 'javelin-behavior-differential-accept-with-errors' => '5b33c790', 3142 - 'javelin-behavior-differential-add-reviewers-and-ccs' => '5b33c790', 3143 - 'javelin-behavior-differential-comment-jump' => '5b33c790', 3144 - 'javelin-behavior-differential-diff-radios' => '5b33c790', 3145 - 'javelin-behavior-differential-dropdown-menus' => '5b33c790', 3146 - 'javelin-behavior-differential-edit-inline-comments' => '5b33c790', 3147 - 'javelin-behavior-differential-feedback-preview' => '5b33c790', 3148 - 'javelin-behavior-differential-keyboard-navigation' => '5b33c790', 3149 - 'javelin-behavior-differential-populate' => '5b33c790', 3150 - 'javelin-behavior-differential-show-more' => '5b33c790', 3063 + 'javelin-behavior-buoyant' => '26972e06', 3064 + 'javelin-behavior-differential-accept-with-errors' => '26972e06', 3065 + 'javelin-behavior-differential-add-reviewers-and-ccs' => '26972e06', 3066 + 'javelin-behavior-differential-comment-jump' => '26972e06', 3067 + 'javelin-behavior-differential-diff-radios' => '26972e06', 3068 + 'javelin-behavior-differential-dropdown-menus' => '26972e06', 3069 + 'javelin-behavior-differential-edit-inline-comments' => '26972e06', 3070 + 'javelin-behavior-differential-feedback-preview' => '26972e06', 3071 + 'javelin-behavior-differential-keyboard-navigation' => '26972e06', 3072 + 'javelin-behavior-differential-populate' => '26972e06', 3073 + 'javelin-behavior-differential-show-more' => '26972e06', 3151 3074 'javelin-behavior-diffusion-commit-graph' => '5e68be89', 3152 3075 'javelin-behavior-diffusion-pull-lastmodified' => '5e68be89', 3153 3076 'javelin-behavior-maniphest-batch-selector' => '7707de41', ··· 3157 3080 'javelin-behavior-maniphest-transaction-preview' => '7707de41', 3158 3081 'javelin-behavior-phabricator-autofocus' => '971b021e', 3159 3082 'javelin-behavior-phabricator-keyboard-shortcuts' => '971b021e', 3160 - 'javelin-behavior-phabricator-object-selector' => '5b33c790', 3083 + 'javelin-behavior-phabricator-object-selector' => '26972e06', 3161 3084 'javelin-behavior-phabricator-oncopy' => '971b021e', 3162 3085 'javelin-behavior-phabricator-tooltips' => '971b021e', 3163 3086 'javelin-behavior-phabricator-watch-anchor' => '971b021e', 3164 3087 'javelin-behavior-refresh-csrf' => '971b021e', 3165 - 'javelin-behavior-repository-crossreference' => '5b33c790', 3088 + 'javelin-behavior-repository-crossreference' => '26972e06', 3166 3089 'javelin-behavior-workflow' => '971b021e', 3167 3090 'javelin-dom' => '6fb20113', 3168 3091 'javelin-event' => '6fb20113', ··· 3188 3111 'phabricator-core-buttons-css' => 'edf6b149', 3189 3112 'phabricator-core-css' => 'edf6b149', 3190 3113 'phabricator-directory-css' => 'edf6b149', 3191 - 'phabricator-drag-and-drop-file-upload' => '5b33c790', 3114 + 'phabricator-drag-and-drop-file-upload' => '26972e06', 3192 3115 'phabricator-dropdown-menu' => '971b021e', 3193 3116 'phabricator-flag-css' => 'edf6b149', 3194 3117 'phabricator-jump-nav' => 'edf6b149', ··· 3200 3123 'phabricator-prefab' => '971b021e', 3201 3124 'phabricator-project-tag-css' => '7839ae2d', 3202 3125 'phabricator-remarkup-css' => 'edf6b149', 3203 - 'phabricator-shaped-request' => '5b33c790', 3126 + 'phabricator-shaped-request' => '26972e06', 3204 3127 'phabricator-standard-page-view' => 'edf6b149', 3205 3128 'phabricator-tooltip' => '971b021e', 3206 3129 'phabricator-transaction-view-css' => 'edf6b149',
+5 -1
src/applications/base/PhabricatorApplication.php
··· 55 55 } 56 56 57 57 public function getIconURI() { 58 - return PhabricatorUser::getDefaultProfileImageURI(); 58 + return null; 59 + } 60 + 61 + public function getAutospriteName() { 62 + return 'default'; 59 63 } 60 64 61 65 public function shouldAppearInLaunchView() {
+4
src/applications/daemon/application/PhabricatorApplicationDaemons.php
··· 34 34 return "\xE2\x98\xAF"; 35 35 } 36 36 37 + public function getAutospriteName() { 38 + return 'daemons'; 39 + } 40 + 37 41 public function getRoutes() { 38 42 return array( 39 43 '/daemon/' => array(
+2 -2
src/applications/differential/application/PhabricatorApplicationDifferential.php
··· 26 26 return 'Review Code'; 27 27 } 28 28 29 - public function getIconURI() { 30 - return celerity_get_resource_uri('/rsrc/image/app/app_differential.png'); 29 + public function getAutospriteName() { 30 + return 'differential'; 31 31 } 32 32 33 33 public function getFactObjectsForAnalysis() {
+2 -2
src/applications/diffusion/application/PhabricatorApplicationDiffusion.php
··· 26 26 return '/diffusion/'; 27 27 } 28 28 29 - public function getIconURI() { 30 - return celerity_get_resource_uri('/rsrc/image/app/app_diffusion.png'); 29 + public function getAutospriteName() { 30 + return 'diffusion'; 31 31 } 32 32 33 33 public function getHelpURI() {
+2 -2
src/applications/fact/application/PhabricatorApplicationFact.php
··· 26 26 return '/fact/'; 27 27 } 28 28 29 - public function getIconURI() { 30 - return celerity_get_resource_uri('/rsrc/image/app/app_fact.png'); 29 + public function getAutospriteName() { 30 + return 'fact'; 31 31 } 32 32 33 33 public function getRoutes() {
+2 -2
src/applications/flag/application/PhabricatorApplicationFlags.php
··· 26 26 return '/flag/'; 27 27 } 28 28 29 - public function getIconURI() { 30 - return celerity_get_resource_uri('/rsrc/image/app/app_flags.png'); 29 + public function getAutospriteName() { 30 + return 'flags'; 31 31 } 32 32 33 33 public function loadStatus(PhabricatorUser $user) {
+4
src/applications/mailinglists/application/PhabricatorApplicationMailingLists.php
··· 30 30 return 'Manage External Lists'; 31 31 } 32 32 33 + public function getAutospriteName() { 34 + return 'mail'; 35 + } 36 + 33 37 public function getRoutes() { 34 38 return array( 35 39 '/mailinglists/' => array(
+2 -2
src/applications/maniphest/application/PhabricatorApplicationManiphest.php
··· 30 30 return PhabricatorEnv::getEnvConfig('maniphest.enabled'); 31 31 } 32 32 33 - public function getIconURI() { 34 - return celerity_get_resource_uri('/rsrc/image/app/app_maniphest.png'); 33 + public function getAutospriteName() { 34 + return 'maniphest'; 35 35 } 36 36 37 37 public function getCoreApplicationOrder() {
+2 -2
src/applications/meta/application/PhabricatorApplicationApplications.php
··· 26 26 return 'Manage Applications'; 27 27 } 28 28 29 - public function getIconURI() { 30 - return celerity_get_resource_uri('/rsrc/image/app/app_applications.png'); 29 + public function getAutospriteName() { 30 + return 'applications'; 31 31 } 32 32 33 33 public function getRoutes() {
+22 -1
src/applications/meta/view/PhabricatorApplicationLaunchView.php
··· 76 76 phutil_escape_html($count)); 77 77 } 78 78 79 + 80 + $classes = array(); 81 + $classes[] = 'phabricator-application-launch-icon'; 82 + $styles = array(); 83 + 84 + if ($application->getIconURI()) { 85 + $styles[] = 'background-image: url('.$application->getIconURI().')'; 86 + } else { 87 + $autosprite = $application->getAutospriteName(); 88 + $classes[] = 'autosprite'; 89 + $classes[] = 'app-'.$autosprite.'-full'; 90 + } 91 + 92 + $icon = phutil_render_tag( 93 + 'span', 94 + array( 95 + 'class' => implode(' ', $classes), 96 + 'style' => nonempty(implode('; ', $styles), null), 97 + ), 98 + ''); 99 + 79 100 return phutil_render_tag( 80 101 'a', 81 102 array( 82 103 'class' => 'phabricator-application-launch-container', 83 - 'style' => 'background-image: url('.$application->getIconURI().')', 84 104 'href' => $application->getBaseURI(), 85 105 ), 106 + $icon. 86 107 $this->renderSingleView($content)); 87 108 } 88 109 }
+4
src/applications/metamta/application/PhabricatorApplicationMetaMTA.php
··· 26 26 return 'View Mail Logs'; 27 27 } 28 28 29 + public function getAutospriteName() { 30 + return 'mail'; 31 + } 32 + 29 33 public function getRoutes() { 30 34 return array( 31 35 $this->getBaseURI() => array(
+2 -2
src/applications/people/application/PhabricatorApplicationPeople.php
··· 30 30 return "\xE2\x99\x9F"; 31 31 } 32 32 33 - public function getIconURI() { 34 - return celerity_get_resource_uri('/rsrc/image/app/app_people.png'); 33 + public function getAutospriteName() { 34 + return 'people'; 35 35 } 36 36 37 37 public function getRoutes() {
+2 -2
src/applications/phriction/application/PhabricatorApplicationPhriction.php
··· 26 26 return '/w/'; 27 27 } 28 28 29 - public function getIconURI() { 30 - return celerity_get_resource_uri('/rsrc/image/app/app_phriction.png'); 29 + public function getAutospriteName() { 30 + return 'phriction'; 31 31 } 32 32 33 33 public function getHelpURI() {
+2 -2
src/applications/ponder/application/PhabricatorApplicationPonder.php
··· 26 26 return 'Find Answers'; 27 27 } 28 28 29 - public function getIconURI() { 30 - return celerity_get_resource_uri('/rsrc/image/app/app_ponder.png'); 29 + public function getAutospriteName() { 30 + return 'ponder'; 31 31 } 32 32 33 33 public function getFactObjectsForAnalysis() {
+4
src/applications/project/application/PhabricatorApplicationProject.php
··· 30 30 return '/project/'; 31 31 } 32 32 33 + public function getAutospriteName() { 34 + return 'projects'; 35 + } 36 + 33 37 public function getRoutes() { 34 38 return array( 35 39 '/project/' => array(
+2 -2
src/applications/settings/application/PhabricatorApplicationSettings.php
··· 26 26 return 'User Preferences'; 27 27 } 28 28 29 - public function getIconURI() { 30 - return celerity_get_resource_uri('/rsrc/image/app/app_settings.png'); 29 + public function getAutospriteName() { 30 + return 'settings'; 31 31 } 32 32 33 33 public function getRoutes() {
src/rsrc/sprites.psd

This is a binary file and will not be displayed.

+20 -1
src/view/layout/AphrontSideNavView.php
··· 240 240 $classes[] = 'phabricator-nav-app-item-selected'; 241 241 } 242 242 243 + $iclasses = array(); 244 + $iclasses[] = 'phabricator-nav-app-item-icon'; 245 + $style = null; 246 + if ($application->getIconURI()) { 247 + $style = 'background-image: url('.$application->getIconURI().'); '. 248 + 'background-size: 30px auto;'; 249 + } else { 250 + $iclasses[] = 'autosprite'; 251 + $iclasses[] = 'app-'.$application->getAutospriteName(); 252 + } 253 + 254 + $icon = phutil_render_tag( 255 + 'span', 256 + array( 257 + 'class' => implode(' ', $iclasses), 258 + 'style' => $style, 259 + ), 260 + ''); 261 + 243 262 $apps[] = phutil_render_tag( 244 263 'a', 245 264 array( 246 265 'class' => implode(' ', $classes), 247 266 'href' => $application->getBaseURI(), 248 - 'style' => 'background-image: url('.$application->getIconURI().')', 249 267 ), 268 + $icon. 250 269 phutil_escape_html($application->getName())); 251 270 } 252 271
+18 -6
webroot/rsrc/css/aphront/phabricator-nav-view.css
··· 119 119 color: #222222; 120 120 font-weight: normal; 121 121 padding: 4px; 122 - padding-left: 37px; 122 + padding-left: 40px; 123 123 vertical-align: middle; 124 - line-height: 25px; 124 + line-height: 30px; 125 + height: 30px; 125 126 126 127 border-width: 1px 0px; 127 128 border-style: solid; 128 129 border-color: transparent; 129 130 130 - background-size: auto 25px; 131 - background-position: 4px 4px; 132 - background-repeat: no-repeat; 131 + position: relative; 133 132 } 134 133 135 134 a.phabricator-nav-app-item-selected { 136 135 background-color: #f3f3f3; 137 - box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.20); 136 + box-shadow: inset -1px 0 3px rgba(0, 0, 0, 0.15); 138 137 border-color: #b0b0b0; 139 138 } 140 139 140 + span.phabricator-nav-app-item-icon { 141 + position: absolute; 142 + display: block; 143 + 144 + left: 5px; 145 + top: 6px; 146 + background-repeat: no-repeat; 147 + 148 + width: 30px; 149 + height: 30px; 150 + padding: 0; 151 + margin: 0; 152 + } 141 153 142 154 a.phabricator-nav-app-button-expand, 143 155 a.phabricator-nav-app-button-collapse {
+11 -3
webroot/rsrc/css/application/base/phabricator-application-launch-view.css
··· 32 32 display: inline-block; 33 33 width: 210px; 34 34 min-height: 90px; 35 - background-repeat: no-repeat; 36 35 padding: 5px 15px 5px 80px; 37 - background-position: 15px 10px; 38 36 margin: 3px 6px; 39 37 overflow: hidden; 40 38 position: relative; ··· 65 63 display: block; 66 64 } 67 65 66 + .phabricator-application-launch-icon { 67 + display: block; 68 + position: absolute; 69 + left: 15px; 70 + top: 10px; 71 + width: 60px; 72 + height: 60px; 73 + background-repeat: no-repeat; 74 + } 75 + 68 76 .phabricator-application-launch-name { 69 77 font-weight: bold; 70 78 } ··· 82 90 position: absolute; 83 91 left: 45px; 84 92 top: 10px; 85 - background: red; 93 + background: #ff0000; 86 94 border-radius: 10px; 87 95 color: white; 88 96 font-weight: normal;
+108 -108
webroot/rsrc/css/autosprite.css
··· 11 11 background-position: 0px 0px; 12 12 } 13 13 14 - .main-menu-item-icon-settings { 15 - background-position: 0px -26px; 14 + .main-menu-item-icon-help-selected { 15 + background-position: 0px -27px; 16 16 } 17 17 18 - .main-menu-item-icon-logout { 19 - background-position: 0px -52px; 18 + .main-menu-item-icon-help:hover { 19 + background-position: 0px -54px; 20 20 } 21 21 22 - .main-menu-item-icon-notifications { 23 - background-position: 0px -78px; 22 + .main-menu-item-icon-settings { 23 + background-position: 0px -81px; 24 24 } 25 25 26 - .main-menu-item-icon-task { 27 - background-position: 0px -104px; 26 + .main-menu-item-icon-settings-selected { 27 + background-position: 0px -108px; 28 28 } 29 29 30 - .main-menu-item-icon-help-selected { 31 - background-position: 0px -130px; 30 + .main-menu-item-icon-settings:hover { 31 + background-position: 0px -135px; 32 32 } 33 33 34 - .main-menu-item-icon-settings-selected { 35 - background-position: 0px -156px; 34 + .main-menu-item-icon-logout { 35 + background-position: 0px -162px; 36 36 } 37 37 38 38 .main-menu-item-icon-logout-selected { 39 - background-position: 0px -182px; 39 + background-position: 0px -189px; 40 40 } 41 41 42 - .main-menu-item-icon-notifications-selected { 43 - background-position: 0px -208px; 42 + .main-menu-item-icon-logout:hover { 43 + background-position: 0px -216px; 44 44 } 45 45 46 - .main-menu-item-icon-task-selected { 47 - background-position: 0px -234px; 46 + .main-menu-item-icon-notifications { 47 + background-position: 0px -243px; 48 48 } 49 49 50 - .main-menu-item-icon-help:hover { 51 - background-position: 0px -260px; 50 + .main-menu-item-icon-notifications-selected { 51 + background-position: 0px -270px; 52 52 } 53 53 54 - .main-menu-item-icon-settings:hover { 55 - background-position: 0px -286px; 54 + .main-menu-item-icon-notifications:hover { 55 + background-position: 0px -297px; 56 56 } 57 57 58 - .main-menu-item-icon-logout:hover { 59 - background-position: 0px -312px; 58 + .main-menu-item-icon-task { 59 + background-position: 0px -324px; 60 60 } 61 61 62 - .main-menu-item-icon-notifications:hover { 63 - background-position: 0px -338px; 62 + .main-menu-item-icon-task-selected { 63 + background-position: 0px -351px; 64 64 } 65 65 66 66 .main-menu-item-icon-task:hover { 67 - background-position: 0px -364px; 67 + background-position: 0px -378px; 68 68 } 69 69 70 70 .app-differential-full { 71 - background-position: 0px -390px; 71 + background-position: 0px -405px; 72 72 } 73 73 74 - .app-fact-full { 75 - background-position: 0px -450px; 74 + .app-differential { 75 + background-position: 0px -466px; 76 76 } 77 77 78 - .app-mail-full { 79 - background-position: 0px -510px; 78 + .app-fact-full { 79 + background-position: 0px -497px; 80 80 } 81 81 82 - .app-diffusion-full { 83 - background-position: 0px -570px; 82 + .app-fact { 83 + background-position: 0px -558px; 84 84 } 85 85 86 - .app-slowvote-full { 87 - background-position: 0px -630px; 86 + .app-mail-full { 87 + background-position: 0px -589px; 88 88 } 89 89 90 - .app-phriction-full { 91 - background-position: 0px -690px; 90 + .app-mail { 91 + background-position: 0px -650px; 92 92 } 93 93 94 - .app-maniphest-full { 95 - background-position: 0px -750px; 94 + .app-diffusion-full { 95 + background-position: 0px -681px; 96 96 } 97 97 98 - .app-flags-full { 99 - background-position: 0px -810px; 98 + .app-diffusion { 99 + background-position: 0px -742px; 100 100 } 101 101 102 - .app-settings-full { 103 - background-position: 0px -870px; 102 + .app-slowvote-full { 103 + background-position: 0px -773px; 104 104 } 105 105 106 - .app-applications-full { 107 - background-position: 0px -930px; 106 + .app-slowvote { 107 + background-position: 0px -834px; 108 108 } 109 109 110 - .app-default-full { 111 - background-position: 0px -990px; 110 + .app-phriction-full { 111 + background-position: 0px -865px; 112 112 } 113 113 114 - .app-people-full { 115 - background-position: 0px -1050px; 114 + .app-phriction { 115 + background-position: 0px -926px; 116 116 } 117 117 118 - .app-ponder-full { 119 - background-position: 0px -1110px; 118 + .app-maniphest-full { 119 + background-position: 0px -957px; 120 120 } 121 121 122 - .app-calendar-full { 123 - background-position: 0px -1170px; 122 + .app-maniphest { 123 + background-position: 0px -1018px; 124 124 } 125 125 126 - .app-files-full { 127 - background-position: 0px -1230px; 126 + .app-flags-full { 127 + background-position: 0px -1049px; 128 128 } 129 129 130 - .app-projects-full { 131 - background-position: 0px -1290px; 130 + .app-flags { 131 + background-position: 0px -1110px; 132 132 } 133 133 134 - .app-daemons-full { 135 - background-position: 0px -1350px; 134 + .app-settings-full { 135 + background-position: 0px -1141px; 136 136 } 137 137 138 - .app-herald-full { 139 - background-position: 0px -1410px; 138 + .app-settings { 139 + background-position: 0px -1202px; 140 140 } 141 141 142 - .app-countdown-full { 143 - background-position: 0px -1470px; 142 + .app-applications-full { 143 + background-position: 0px -1233px; 144 144 } 145 145 146 - .app-conduit-full { 147 - background-position: 0px -1530px; 146 + .app-applications { 147 + background-position: 0px -1294px; 148 148 } 149 149 150 - .app-feed-full { 151 - background-position: 0px -1590px; 150 + .app-default-full { 151 + background-position: 0px -1325px; 152 152 } 153 153 154 - .app-differential { 155 - background-position: 0px -1650px; 154 + .app-default { 155 + background-position: 0px -1386px; 156 156 } 157 157 158 - .app-fact { 159 - background-position: 0px -1676px; 158 + .app-people-full { 159 + background-position: 0px -1417px; 160 160 } 161 161 162 - .app-mail { 163 - background-position: 0px -1702px; 162 + .app-people { 163 + background-position: 0px -1478px; 164 164 } 165 165 166 - .app-diffusion { 167 - background-position: 0px -1728px; 166 + .app-ponder-full { 167 + background-position: 0px -1509px; 168 168 } 169 169 170 - .app-slowvote { 171 - background-position: 0px -1754px; 170 + .app-ponder { 171 + background-position: 0px -1570px; 172 172 } 173 173 174 - .app-phriction { 175 - background-position: 0px -1780px; 174 + .app-calendar-full { 175 + background-position: 0px -1601px; 176 176 } 177 177 178 - .app-maniphest { 179 - background-position: 0px -1806px; 178 + .app-calendar { 179 + background-position: 0px -1662px; 180 180 } 181 181 182 - .app-flags { 183 - background-position: 0px -1832px; 182 + .app-files-full { 183 + background-position: 0px -1693px; 184 184 } 185 185 186 - .app-settings { 187 - background-position: 0px -1858px; 186 + .app-files { 187 + background-position: 0px -1754px; 188 188 } 189 189 190 - .app-applications { 191 - background-position: 0px -1884px; 190 + .app-projects-full { 191 + background-position: 0px -1785px; 192 192 } 193 193 194 - .app-default { 195 - background-position: 0px -1910px; 194 + .app-projects { 195 + background-position: 0px -1846px; 196 196 } 197 197 198 - .app-people { 199 - background-position: 0px -1936px; 198 + .app-daemons-full { 199 + background-position: 0px -1877px; 200 200 } 201 201 202 - .app-ponder { 203 - background-position: 0px -1962px; 202 + .app-daemons { 203 + background-position: 0px -1938px; 204 204 } 205 205 206 - .app-calendar { 207 - background-position: 0px -1988px; 206 + .app-herald-full { 207 + background-position: 0px -1969px; 208 208 } 209 209 210 - .app-files { 211 - background-position: 0px -2014px; 210 + .app-herald { 211 + background-position: 0px -2030px; 212 212 } 213 213 214 - .app-projects { 215 - background-position: 0px -2040px; 214 + .app-countdown-full { 215 + background-position: 0px -2061px; 216 216 } 217 217 218 - .app-daemons { 219 - background-position: 0px -2066px; 218 + .app-countdown { 219 + background-position: 0px -2122px; 220 220 } 221 221 222 - .app-herald { 223 - background-position: 0px -2092px; 222 + .app-conduit-full { 223 + background-position: 0px -2153px; 224 224 } 225 225 226 - .app-countdown { 227 - background-position: 0px -2118px; 226 + .app-conduit { 227 + background-position: 0px -2214px; 228 228 } 229 229 230 - .app-conduit { 231 - background-position: 0px -2144px; 230 + .app-feed-full { 231 + background-position: 0px -2245px; 232 232 } 233 233 234 234 .app-feed { 235 - background-position: 0px -2170px; 235 + background-position: 0px -2306px; 236 236 }
webroot/rsrc/image/app/app_applications.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_differential.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_diffusion.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_fact.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_flags.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_maniphest.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_people.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_phriction.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_ponder.png

This is a binary file and will not be displayed.

webroot/rsrc/image/app/app_settings.png

This is a binary file and will not be displayed.

webroot/rsrc/image/autosprite.png

This is a binary file and will not be displayed.