Index: src/__celerity_resource_map__.php =================================================================== --- src/__celerity_resource_map__.php +++ src/__celerity_resource_map__.php @@ -3342,7 +3342,7 @@ ), 'phabricator-main-menu-view' => array( - 'uri' => '/res/ef11f2fc/rsrc/css/application/base/main-menu-view.css', + 'uri' => '/res/95ff522a/rsrc/css/application/base/main-menu-view.css', 'type' => 'css', 'requires' => array( @@ -4309,7 +4309,7 @@ ), array( 'packages' => array( - '71e32b00' => + 'c35f1eca' => array( 'name' => 'core.pkg.css', 'symbols' => @@ -4358,7 +4358,7 @@ 41 => 'phabricator-tag-view-css', 42 => 'phui-list-view-css', ), - 'uri' => '/res/pkg/71e32b00/core.pkg.css', + 'uri' => '/res/pkg/c35f1eca/core.pkg.css', 'type' => 'css', ), '2c1dba03' => @@ -4550,15 +4550,15 @@ ), 'reverse' => array( - 'aphront-dialog-view-css' => '71e32b00', - 'aphront-error-view-css' => '71e32b00', - 'aphront-list-filter-view-css' => '71e32b00', - 'aphront-pager-view-css' => '71e32b00', - 'aphront-panel-view-css' => '71e32b00', - 'aphront-table-view-css' => '71e32b00', - 'aphront-tokenizer-control-css' => '71e32b00', - 'aphront-tooltip-css' => '71e32b00', - 'aphront-typeahead-control-css' => '71e32b00', + 'aphront-dialog-view-css' => 'c35f1eca', + 'aphront-error-view-css' => 'c35f1eca', + 'aphront-list-filter-view-css' => 'c35f1eca', + 'aphront-pager-view-css' => 'c35f1eca', + 'aphront-panel-view-css' => 'c35f1eca', + 'aphront-table-view-css' => 'c35f1eca', + 'aphront-tokenizer-control-css' => 'c35f1eca', + 'aphront-tooltip-css' => 'c35f1eca', + 'aphront-typeahead-control-css' => 'c35f1eca', 'differential-changeset-view-css' => '7cd7e387', 'differential-core-view-css' => '7cd7e387', 'differential-inline-comment-editor' => '5e9e5c4e', @@ -4572,7 +4572,7 @@ 'differential-table-of-contents-css' => '7cd7e387', 'diffusion-commit-view-css' => '270f4eb4', 'diffusion-icons-css' => '270f4eb4', - 'global-drag-and-drop-css' => '71e32b00', + 'global-drag-and-drop-css' => 'c35f1eca', 'inline-comment-summary-css' => '7cd7e387', 'javelin-aphlict' => '2c1dba03', 'javelin-behavior' => '3e3be199', @@ -4647,56 +4647,56 @@ 'javelin-util' => '3e3be199', 'javelin-vector' => '3e3be199', 'javelin-workflow' => '3e3be199', - 'lightbox-attachment-css' => '71e32b00', + 'lightbox-attachment-css' => 'c35f1eca', 'maniphest-task-summary-css' => '49898640', - 'phabricator-action-list-view-css' => '71e32b00', - 'phabricator-application-launch-view-css' => '71e32b00', + 'phabricator-action-list-view-css' => 'c35f1eca', + 'phabricator-application-launch-view-css' => 'c35f1eca', 'phabricator-busy' => '2c1dba03', 'phabricator-content-source-view-css' => '7cd7e387', - 'phabricator-core-css' => '71e32b00', - 'phabricator-crumbs-view-css' => '71e32b00', + 'phabricator-core-css' => 'c35f1eca', + 'phabricator-crumbs-view-css' => 'c35f1eca', 'phabricator-drag-and-drop-file-upload' => '5e9e5c4e', 'phabricator-dropdown-menu' => '2c1dba03', 'phabricator-file-upload' => '2c1dba03', - 'phabricator-filetree-view-css' => '71e32b00', - 'phabricator-flag-css' => '71e32b00', + 'phabricator-filetree-view-css' => 'c35f1eca', + 'phabricator-flag-css' => 'c35f1eca', 'phabricator-hovercard' => '2c1dba03', - 'phabricator-jump-nav' => '71e32b00', + 'phabricator-jump-nav' => 'c35f1eca', 'phabricator-keyboard-shortcut' => '2c1dba03', 'phabricator-keyboard-shortcut-manager' => '2c1dba03', - 'phabricator-main-menu-view' => '71e32b00', + 'phabricator-main-menu-view' => 'c35f1eca', 'phabricator-menu-item' => '2c1dba03', - 'phabricator-nav-view-css' => '71e32b00', + 'phabricator-nav-view-css' => 'c35f1eca', 'phabricator-notification' => '2c1dba03', - 'phabricator-notification-css' => '71e32b00', - 'phabricator-notification-menu-css' => '71e32b00', + 'phabricator-notification-css' => 'c35f1eca', + 'phabricator-notification-menu-css' => 'c35f1eca', 'phabricator-object-selector-css' => '7cd7e387', 'phabricator-phtize' => '2c1dba03', 'phabricator-prefab' => '2c1dba03', 'phabricator-project-tag-css' => '49898640', - 'phabricator-remarkup-css' => '71e32b00', + 'phabricator-remarkup-css' => 'c35f1eca', 'phabricator-shaped-request' => '5e9e5c4e', - 'phabricator-side-menu-view-css' => '71e32b00', - 'phabricator-standard-page-view' => '71e32b00', - 'phabricator-tag-view-css' => '71e32b00', + 'phabricator-side-menu-view-css' => 'c35f1eca', + 'phabricator-standard-page-view' => 'c35f1eca', + 'phabricator-tag-view-css' => 'c35f1eca', 'phabricator-textareautils' => '2c1dba03', 'phabricator-tooltip' => '2c1dba03', - 'phabricator-transaction-view-css' => '71e32b00', - 'phabricator-zindex-css' => '71e32b00', - 'phui-button-css' => '71e32b00', - 'phui-form-css' => '71e32b00', - 'phui-form-view-css' => '71e32b00', - 'phui-header-view-css' => '71e32b00', - 'phui-icon-view-css' => '71e32b00', - 'phui-list-view-css' => '71e32b00', - 'phui-object-item-list-view-css' => '71e32b00', - 'phui-property-list-view-css' => '71e32b00', - 'phui-spacing-css' => '71e32b00', - 'sprite-apps-large-css' => '71e32b00', - 'sprite-gradient-css' => '71e32b00', - 'sprite-icons-css' => '71e32b00', - 'sprite-menu-css' => '71e32b00', - 'sprite-status-css' => '71e32b00', - 'syntax-highlighting-css' => '71e32b00', + 'phabricator-transaction-view-css' => 'c35f1eca', + 'phabricator-zindex-css' => 'c35f1eca', + 'phui-button-css' => 'c35f1eca', + 'phui-form-css' => 'c35f1eca', + 'phui-form-view-css' => 'c35f1eca', + 'phui-header-view-css' => 'c35f1eca', + 'phui-icon-view-css' => 'c35f1eca', + 'phui-list-view-css' => 'c35f1eca', + 'phui-object-item-list-view-css' => 'c35f1eca', + 'phui-property-list-view-css' => 'c35f1eca', + 'phui-spacing-css' => 'c35f1eca', + 'sprite-apps-large-css' => 'c35f1eca', + 'sprite-gradient-css' => 'c35f1eca', + 'sprite-icons-css' => 'c35f1eca', + 'sprite-menu-css' => 'c35f1eca', + 'sprite-status-css' => 'c35f1eca', + 'syntax-highlighting-css' => 'c35f1eca', ), )); Index: src/__phutil_library_map__.php =================================================================== --- src/__phutil_library_map__.php +++ src/__phutil_library_map__.php @@ -2497,11 +2497,7 @@ 'DifferentialHunk' => 'DifferentialDAO', 'DifferentialHunkParserTestCase' => 'PhabricatorTestCase', 'DifferentialHunkTestCase' => 'ArcanistPhutilTestCase', - 'DifferentialInlineComment' => - array( - 0 => 'DifferentialDAO', - 1 => 'PhabricatorInlineCommentInterface', - ), + 'DifferentialInlineComment' => 'PhabricatorInlineCommentInterface', 'DifferentialInlineCommentEditController' => 'PhabricatorInlineCommentController', 'DifferentialInlineCommentEditView' => 'AphrontView', 'DifferentialInlineCommentPreviewController' => 'PhabricatorInlineCommentPreviewController', Index: src/infrastructure/celerity/CelerityResourceTransformer.php =================================================================== --- src/infrastructure/celerity/CelerityResourceTransformer.php +++ src/infrastructure/celerity/CelerityResourceTransformer.php @@ -39,6 +39,7 @@ switch ($type) { case 'css': + $data = $this->replaceCSSPrintRules($path, $data); $data = $this->replaceCSSVariables($path, $data); $data = preg_replace_callback( '@url\s*\((\s*[\'"]?.*?)\)@s', @@ -129,6 +130,14 @@ $data); } + private function replaceCSSPrintRules($path, $data) { + $this->currentPath = $path; + return preg_replace_callback( + '/!print\s+(.+?{.+?})/s', + array($this, 'replaceCSSPrintRule'), + $data); + } + public static function getCSSVariableMap() { return array( // Base Colors @@ -174,6 +183,7 @@ ); } + public function replaceCSSVariable($matches) { static $map; if (!$map) { @@ -190,4 +200,13 @@ return $map[$var_name]; } + public function replaceCSSPrintRule($matches) { + $rule = $matches[1]; + + $rules = array(); + $rules[] = '.printable '.$rule; + $rules[] = "@media print {\n ".str_replace("\n", "\n ", $rule)."\n}\n"; + + return implode("\n\n", $rules); + } } Index: src/infrastructure/celerity/__tests__/transformer/print.css =================================================================== --- /dev/null +++ src/infrastructure/celerity/__tests__/transformer/print.css @@ -0,0 +1,14 @@ +~~~~~~ +!print .example { + background: #ffffff; +} +~~~~~~ +.printable .example { + background: #ffffff; +} + +@media print { + .example { + background: #ffffff; + } +} Index: src/view/page/PhabricatorStandardPageView.php =================================================================== --- src/view/page/PhabricatorStandardPageView.php +++ src/view/page/PhabricatorStandardPageView.php @@ -424,6 +424,10 @@ $classes[] = 'platform-linux'; } + if ($this->getRequest()->getStr('__print__')) { + $classes[] = 'printable'; + } + return implode(' ', $classes); } Index: webroot/rsrc/css/application/base/main-menu-view.css =================================================================== --- webroot/rsrc/css/application/base/main-menu-view.css +++ webroot/rsrc/css/application/base/main-menu-view.css @@ -400,3 +400,11 @@ .phabricator-application-menu .phui-list-item-name { padding-left: 12px; } + + +/* - Print --------------------------------------------------------------------- +*/ + +!print .phabricator-main-menu { + display: none; +}