1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-15 18:10:53 +01:00

(stable) Promote 2017 Week 23

This commit is contained in:
epriestley 2017-06-09 14:03:11 -07:00
commit e419c523ce
84 changed files with 804 additions and 424 deletions

View file

@ -9,13 +9,13 @@ return array(
'names' => array( 'names' => array(
'conpherence.pkg.css' => 'ff161f2d', 'conpherence.pkg.css' => 'ff161f2d',
'conpherence.pkg.js' => 'b5b51108', 'conpherence.pkg.js' => 'b5b51108',
'core.pkg.css' => 'ea94e844', 'core.pkg.css' => 'ab24402f',
'core.pkg.js' => '1475bd91', 'core.pkg.js' => '1475bd91',
'darkconsole.pkg.js' => '1f9a31bc', 'darkconsole.pkg.js' => '1f9a31bc',
'differential.pkg.css' => 'a2755617', 'differential.pkg.css' => '1ccbf3a9',
'differential.pkg.js' => '9cab3335', 'differential.pkg.js' => 'b7504037',
'diffusion.pkg.css' => 'b93d9b8c', 'diffusion.pkg.css' => 'b93d9b8c',
'diffusion.pkg.js' => '84c8f8fd', 'diffusion.pkg.js' => '6134c5a1',
'favicon.ico' => '30672e08', 'favicon.ico' => '30672e08',
'maniphest.pkg.css' => '4845691a', 'maniphest.pkg.css' => '4845691a',
'maniphest.pkg.js' => '5ab2753f', 'maniphest.pkg.js' => '5ab2753f',
@ -25,14 +25,14 @@ return array(
'rsrc/audio/basic/tap.mp3' => 'fc2fd796', 'rsrc/audio/basic/tap.mp3' => 'fc2fd796',
'rsrc/audio/basic/ting.mp3' => '17660001', 'rsrc/audio/basic/ting.mp3' => '17660001',
'rsrc/css/aphront/aphront-bars.css' => '231ac33c', 'rsrc/css/aphront/aphront-bars.css' => '231ac33c',
'rsrc/css/aphront/dark-console.css' => '53798a6d', 'rsrc/css/aphront/dark-console.css' => 'f7b071f1',
'rsrc/css/aphront/dialog-view.css' => '685c7e2d', 'rsrc/css/aphront/dialog-view.css' => '685c7e2d',
'rsrc/css/aphront/list-filter-view.css' => '5d6f0526', 'rsrc/css/aphront/list-filter-view.css' => '5d6f0526',
'rsrc/css/aphront/multi-column.css' => '84cc6640', 'rsrc/css/aphront/multi-column.css' => '84cc6640',
'rsrc/css/aphront/notification.css' => '3f6c89c9', 'rsrc/css/aphront/notification.css' => '3f6c89c9',
'rsrc/css/aphront/panel-view.css' => '8427b78d', 'rsrc/css/aphront/panel-view.css' => '8427b78d',
'rsrc/css/aphront/phabricator-nav-view.css' => 'faf6a6fc', 'rsrc/css/aphront/phabricator-nav-view.css' => 'faf6a6fc',
'rsrc/css/aphront/table-view.css' => '34cf86b4', 'rsrc/css/aphront/table-view.css' => 'a3aa6910',
'rsrc/css/aphront/tokenizer.css' => '15d5ff71', 'rsrc/css/aphront/tokenizer.css' => '15d5ff71',
'rsrc/css/aphront/tooltip.css' => '173b9431', 'rsrc/css/aphront/tooltip.css' => '173b9431',
'rsrc/css/aphront/typeahead-browse.css' => '4f82e510', 'rsrc/css/aphront/typeahead-browse.css' => '4f82e510',
@ -64,16 +64,16 @@ return array(
'rsrc/css/application/dashboard/dashboard.css' => 'fe5b1869', 'rsrc/css/application/dashboard/dashboard.css' => 'fe5b1869',
'rsrc/css/application/diff/inline-comment-summary.css' => '51efda3a', 'rsrc/css/application/diff/inline-comment-summary.css' => '51efda3a',
'rsrc/css/application/differential/add-comment.css' => 'c47f8c40', 'rsrc/css/application/differential/add-comment.css' => 'c47f8c40',
'rsrc/css/application/differential/changeset-view.css' => '983751ee', 'rsrc/css/application/differential/changeset-view.css' => 'c3f44655',
'rsrc/css/application/differential/core.css' => '5b7b8ff4', 'rsrc/css/application/differential/core.css' => '5b7b8ff4',
'rsrc/css/application/differential/phui-inline-comment.css' => 'ffd1a542', 'rsrc/css/application/differential/phui-inline-comment.css' => 'ffd1a542',
'rsrc/css/application/differential/revision-comment.css' => '14b8565a', 'rsrc/css/application/differential/revision-comment.css' => '14b8565a',
'rsrc/css/application/differential/revision-history.css' => '0e8eb855', 'rsrc/css/application/differential/revision-history.css' => '0e8eb855',
'rsrc/css/application/differential/revision-list.css' => 'f3c47d33', 'rsrc/css/application/differential/revision-list.css' => 'f3c47d33',
'rsrc/css/application/differential/table-of-contents.css' => 'ae4b7a55', 'rsrc/css/application/differential/table-of-contents.css' => 'ae4b7a55',
'rsrc/css/application/diffusion/diffusion-history.css' => 'de70e348', 'rsrc/css/application/diffusion/diffusion-history.css' => '6870e8c1',
'rsrc/css/application/diffusion/diffusion-icons.css' => 'a6a1e2ba', 'rsrc/css/application/diffusion/diffusion-icons.css' => 'a6a1e2ba',
'rsrc/css/application/diffusion/diffusion-readme.css' => '18bd3910', 'rsrc/css/application/diffusion/diffusion-readme.css' => '419dd5b6',
'rsrc/css/application/diffusion/diffusion-source.css' => '750add59', 'rsrc/css/application/diffusion/diffusion-source.css' => '750add59',
'rsrc/css/application/feed/feed.css' => 'ecd4ec57', 'rsrc/css/application/feed/feed.css' => 'ecd4ec57',
'rsrc/css/application/files/global-drag-and-drop.css' => '5c1b47c2', 'rsrc/css/application/files/global-drag-and-drop.css' => '5c1b47c2',
@ -115,7 +115,7 @@ return array(
'rsrc/css/application/tokens/tokens.css' => '3d0f239e', 'rsrc/css/application/tokens/tokens.css' => '3d0f239e',
'rsrc/css/application/uiexample/example.css' => '528b19de', 'rsrc/css/application/uiexample/example.css' => '528b19de',
'rsrc/css/core/core.css' => '23beb330', 'rsrc/css/core/core.css' => '23beb330',
'rsrc/css/core/remarkup.css' => 'd1a5e11e', 'rsrc/css/core/remarkup.css' => '509fb36e',
'rsrc/css/core/syntax.css' => 'cae95e89', 'rsrc/css/core/syntax.css' => 'cae95e89',
'rsrc/css/core/z-index.css' => '9d8f7c4b', 'rsrc/css/core/z-index.css' => '9d8f7c4b',
'rsrc/css/diviner/diviner-shared.css' => '896f1d43', 'rsrc/css/diviner/diviner-shared.css' => '896f1d43',
@ -125,8 +125,8 @@ return array(
'rsrc/css/layout/phabricator-filetree-view.css' => 'fccf9f82', 'rsrc/css/layout/phabricator-filetree-view.css' => 'fccf9f82',
'rsrc/css/layout/phabricator-source-code-view.css' => '4383192f', 'rsrc/css/layout/phabricator-source-code-view.css' => '4383192f',
'rsrc/css/phui/button/phui-button-bar.css' => '39fe680c', 'rsrc/css/phui/button/phui-button-bar.css' => '39fe680c',
'rsrc/css/phui/button/phui-button-simple.css' => '081cfeea', 'rsrc/css/phui/button/phui-button-simple.css' => '8e1baf68',
'rsrc/css/phui/button/phui-button.css' => '9f13ddcc', 'rsrc/css/phui/button/phui-button.css' => '022581b4',
'rsrc/css/phui/calendar/phui-calendar-day.css' => '572b1893', 'rsrc/css/phui/calendar/phui-calendar-day.css' => '572b1893',
'rsrc/css/phui/calendar/phui-calendar-list.css' => '576be600', 'rsrc/css/phui/calendar/phui-calendar-list.css' => '576be600',
'rsrc/css/phui/calendar/phui-calendar-month.css' => '8e10e92c', 'rsrc/css/phui/calendar/phui-calendar-month.css' => '8e10e92c',
@ -135,7 +135,7 @@ return array(
'rsrc/css/phui/object-item/phui-oi-color.css' => 'cd2b9b77', 'rsrc/css/phui/object-item/phui-oi-color.css' => 'cd2b9b77',
'rsrc/css/phui/object-item/phui-oi-drag-ui.css' => '08f4ccc3', 'rsrc/css/phui/object-item/phui-oi-drag-ui.css' => '08f4ccc3',
'rsrc/css/phui/object-item/phui-oi-flush-ui.css' => '9d9685d6', 'rsrc/css/phui/object-item/phui-oi-flush-ui.css' => '9d9685d6',
'rsrc/css/phui/object-item/phui-oi-list-view.css' => '43752968', 'rsrc/css/phui/object-item/phui-oi-list-view.css' => 'bf094950',
'rsrc/css/phui/object-item/phui-oi-simple-ui.css' => 'a8beebea', 'rsrc/css/phui/object-item/phui-oi-simple-ui.css' => 'a8beebea',
'rsrc/css/phui/phui-action-list.css' => 'c01858f4', 'rsrc/css/phui/phui-action-list.css' => 'c01858f4',
'rsrc/css/phui/phui-action-panel.css' => '91c7b835', 'rsrc/css/phui/phui-action-panel.css' => '91c7b835',
@ -149,7 +149,7 @@ return array(
'rsrc/css/phui/phui-comment-panel.css' => 'f50152ad', 'rsrc/css/phui/phui-comment-panel.css' => 'f50152ad',
'rsrc/css/phui/phui-crumbs-view.css' => '6ece3bbb', 'rsrc/css/phui/phui-crumbs-view.css' => '6ece3bbb',
'rsrc/css/phui/phui-curtain-view.css' => '55dd0e59', 'rsrc/css/phui/phui-curtain-view.css' => '55dd0e59',
'rsrc/css/phui/phui-document-pro.css' => 'bb18da6b', 'rsrc/css/phui/phui-document-pro.css' => '8af7ea27',
'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf', 'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf',
'rsrc/css/phui/phui-document.css' => 'c32e8dec', 'rsrc/css/phui/phui-document.css' => 'c32e8dec',
'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9', 'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9',
@ -157,7 +157,7 @@ return array(
'rsrc/css/phui/phui-form-view.css' => '6175808d', 'rsrc/css/phui/phui-form-view.css' => '6175808d',
'rsrc/css/phui/phui-form.css' => 'a5570f70', 'rsrc/css/phui/phui-form.css' => 'a5570f70',
'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f', 'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f',
'rsrc/css/phui/phui-header-view.css' => 'a3d1aecd', 'rsrc/css/phui/phui-header-view.css' => 'e7de7ee2',
'rsrc/css/phui/phui-hovercard.css' => 'f0592bcf', 'rsrc/css/phui/phui-hovercard.css' => 'f0592bcf',
'rsrc/css/phui/phui-icon-set-selector.css' => '87db8fee', 'rsrc/css/phui/phui-icon-set-selector.css' => '87db8fee',
'rsrc/css/phui/phui-icon.css' => '4c46b6ba', 'rsrc/css/phui/phui-icon.css' => '4c46b6ba',
@ -168,14 +168,14 @@ return array(
'rsrc/css/phui/phui-lightbox.css' => '0a035e40', 'rsrc/css/phui/phui-lightbox.css' => '0a035e40',
'rsrc/css/phui/phui-list.css' => '12eb8ce6', 'rsrc/css/phui/phui-list.css' => '12eb8ce6',
'rsrc/css/phui/phui-object-box.css' => '9cff003c', 'rsrc/css/phui/phui-object-box.css' => '9cff003c',
'rsrc/css/phui/phui-pager.css' => '77d8a794', 'rsrc/css/phui/phui-pager.css' => 'edcbc226',
'rsrc/css/phui/phui-pinboard-view.css' => '2495140e', 'rsrc/css/phui/phui-pinboard-view.css' => '2495140e',
'rsrc/css/phui/phui-property-list-view.css' => '2dc7993f', 'rsrc/css/phui/phui-property-list-view.css' => '2dc7993f',
'rsrc/css/phui/phui-remarkup-preview.css' => '54a34863', 'rsrc/css/phui/phui-remarkup-preview.css' => '54a34863',
'rsrc/css/phui/phui-segment-bar-view.css' => 'b1d1b892', 'rsrc/css/phui/phui-segment-bar-view.css' => 'b1d1b892',
'rsrc/css/phui/phui-spacing.css' => '042804d6', 'rsrc/css/phui/phui-spacing.css' => '042804d6',
'rsrc/css/phui/phui-status.css' => 'd5263e49', 'rsrc/css/phui/phui-status.css' => 'd5263e49',
'rsrc/css/phui/phui-tag-view.css' => '3fa7765e', 'rsrc/css/phui/phui-tag-view.css' => '93b084cf',
'rsrc/css/phui/phui-timeline-view.css' => '313c7f22', 'rsrc/css/phui/phui-timeline-view.css' => '313c7f22',
'rsrc/css/phui/phui-two-column-view.css' => 'ce9fa0b7', 'rsrc/css/phui/phui-two-column-view.css' => 'ce9fa0b7',
'rsrc/css/phui/workboards/phui-workboard-color.css' => '783cdff5', 'rsrc/css/phui/workboards/phui-workboard-color.css' => '783cdff5',
@ -298,6 +298,8 @@ return array(
'rsrc/image/checker_dark.png' => 'd8e65881', 'rsrc/image/checker_dark.png' => 'd8e65881',
'rsrc/image/checker_light.png' => 'a0155918', 'rsrc/image/checker_light.png' => 'a0155918',
'rsrc/image/checker_lighter.png' => 'd5da91b6', 'rsrc/image/checker_lighter.png' => 'd5da91b6',
'rsrc/image/controls/checkbox-checked.png' => 'ad6441ea',
'rsrc/image/controls/checkbox-unchecked.png' => '8eb1f0ae',
'rsrc/image/d5d8e1.png' => '0c2a1497', 'rsrc/image/d5d8e1.png' => '0c2a1497',
'rsrc/image/darkload.gif' => '1ffd3ec6', 'rsrc/image/darkload.gif' => '1ffd3ec6',
'rsrc/image/divot.png' => '94dded62', 'rsrc/image/divot.png' => '94dded62',
@ -393,9 +395,9 @@ return array(
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173', 'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173',
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375', 'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63', 'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
'rsrc/js/application/diff/DiffChangeset.js' => 'aaaf4cb5', 'rsrc/js/application/diff/DiffChangeset.js' => 'd498bddb',
'rsrc/js/application/diff/DiffChangesetList.js' => '85abc805', 'rsrc/js/application/diff/DiffChangesetList.js' => '29bbc02c',
'rsrc/js/application/diff/DiffInline.js' => '1d17130f', 'rsrc/js/application/diff/DiffInline.js' => '20553f71',
'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832', 'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832',
'rsrc/js/application/differential/behavior-comment-preview.js' => '51c5ad07', 'rsrc/js/application/differential/behavior-comment-preview.js' => '51c5ad07',
'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1', 'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1',
@ -404,7 +406,7 @@ return array(
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => 'c93358e3', 'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => 'c93358e3',
'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'd835b03a', 'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'd835b03a',
'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'bdaf4d04', 'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'bdaf4d04',
'rsrc/js/application/diffusion/behavior-commit-graph.js' => '49ae8328', 'rsrc/js/application/diffusion/behavior-commit-graph.js' => '75b83cbb',
'rsrc/js/application/diffusion/behavior-diffusion-browse-file.js' => '054a0f0b', 'rsrc/js/application/diffusion/behavior-diffusion-browse-file.js' => '054a0f0b',
'rsrc/js/application/diffusion/behavior-jump-to.js' => '73d09eef', 'rsrc/js/application/diffusion/behavior-jump-to.js' => '73d09eef',
'rsrc/js/application/diffusion/behavior-load-blame.js' => '42126667', 'rsrc/js/application/diffusion/behavior-load-blame.js' => '42126667',
@ -494,7 +496,7 @@ return array(
'rsrc/js/core/behavior-lightbox-attachments.js' => '560f41da', 'rsrc/js/core/behavior-lightbox-attachments.js' => '560f41da',
'rsrc/js/core/behavior-line-linker.js' => '1499a8cb', 'rsrc/js/core/behavior-line-linker.js' => '1499a8cb',
'rsrc/js/core/behavior-more.js' => 'a80d0378', 'rsrc/js/core/behavior-more.js' => 'a80d0378',
'rsrc/js/core/behavior-object-selector.js' => 'e0ec7f2f', 'rsrc/js/core/behavior-object-selector.js' => '77c1f0b0',
'rsrc/js/core/behavior-oncopy.js' => '2926fff2', 'rsrc/js/core/behavior-oncopy.js' => '2926fff2',
'rsrc/js/core/behavior-phabricator-nav.js' => '947753e0', 'rsrc/js/core/behavior-phabricator-nav.js' => '947753e0',
'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => 'acd29eee', 'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => 'acd29eee',
@ -526,7 +528,7 @@ return array(
'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8', 'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8',
'rsrc/js/phuix/PHUIXActionView.js' => 'b3465b9b', 'rsrc/js/phuix/PHUIXActionView.js' => 'b3465b9b',
'rsrc/js/phuix/PHUIXAutocomplete.js' => 'f6699267', 'rsrc/js/phuix/PHUIXAutocomplete.js' => 'f6699267',
'rsrc/js/phuix/PHUIXButtonView.js' => '0f13520b', 'rsrc/js/phuix/PHUIXButtonView.js' => 'a37126bd',
'rsrc/js/phuix/PHUIXDropdownMenu.js' => '8018ee50', 'rsrc/js/phuix/PHUIXDropdownMenu.js' => '8018ee50',
'rsrc/js/phuix/PHUIXExample.js' => '68af71ca', 'rsrc/js/phuix/PHUIXExample.js' => '68af71ca',
'rsrc/js/phuix/PHUIXFormControl.js' => '83e03671', 'rsrc/js/phuix/PHUIXFormControl.js' => '83e03671',
@ -535,12 +537,12 @@ return array(
'symbols' => array( 'symbols' => array(
'almanac-css' => 'dbb9b3af', 'almanac-css' => 'dbb9b3af',
'aphront-bars' => '231ac33c', 'aphront-bars' => '231ac33c',
'aphront-dark-console-css' => '53798a6d', 'aphront-dark-console-css' => 'f7b071f1',
'aphront-dialog-view-css' => '685c7e2d', 'aphront-dialog-view-css' => '685c7e2d',
'aphront-list-filter-view-css' => '5d6f0526', 'aphront-list-filter-view-css' => '5d6f0526',
'aphront-multi-column-view-css' => '84cc6640', 'aphront-multi-column-view-css' => '84cc6640',
'aphront-panel-view-css' => '8427b78d', 'aphront-panel-view-css' => '8427b78d',
'aphront-table-view-css' => '34cf86b4', 'aphront-table-view-css' => 'a3aa6910',
'aphront-tokenizer-control-css' => '15d5ff71', 'aphront-tokenizer-control-css' => '15d5ff71',
'aphront-tooltip-css' => '173b9431', 'aphront-tooltip-css' => '173b9431',
'aphront-typeahead-control-css' => '8a84cc7d', 'aphront-typeahead-control-css' => '8a84cc7d',
@ -560,16 +562,16 @@ return array(
'conpherence-thread-manager' => '4d863052', 'conpherence-thread-manager' => '4d863052',
'conpherence-transaction-css' => '85129c68', 'conpherence-transaction-css' => '85129c68',
'd3' => 'a11a5ff2', 'd3' => 'a11a5ff2',
'differential-changeset-view-css' => '983751ee', 'differential-changeset-view-css' => 'c3f44655',
'differential-core-view-css' => '5b7b8ff4', 'differential-core-view-css' => '5b7b8ff4',
'differential-revision-add-comment-css' => 'c47f8c40', 'differential-revision-add-comment-css' => 'c47f8c40',
'differential-revision-comment-css' => '14b8565a', 'differential-revision-comment-css' => '14b8565a',
'differential-revision-history-css' => '0e8eb855', 'differential-revision-history-css' => '0e8eb855',
'differential-revision-list-css' => 'f3c47d33', 'differential-revision-list-css' => 'f3c47d33',
'differential-table-of-contents-css' => 'ae4b7a55', 'differential-table-of-contents-css' => 'ae4b7a55',
'diffusion-history-css' => 'de70e348', 'diffusion-history-css' => '6870e8c1',
'diffusion-icons-css' => 'a6a1e2ba', 'diffusion-icons-css' => 'a6a1e2ba',
'diffusion-readme-css' => '18bd3910', 'diffusion-readme-css' => '419dd5b6',
'diffusion-source-css' => '750add59', 'diffusion-source-css' => '750add59',
'diviner-shared-css' => '896f1d43', 'diviner-shared-css' => '896f1d43',
'font-fontawesome' => 'e838e088', 'font-fontawesome' => 'e838e088',
@ -618,7 +620,7 @@ return array(
'javelin-behavior-differential-user-select' => 'a8d8459d', 'javelin-behavior-differential-user-select' => 'a8d8459d',
'javelin-behavior-diffusion-browse-file' => '054a0f0b', 'javelin-behavior-diffusion-browse-file' => '054a0f0b',
'javelin-behavior-diffusion-commit-branches' => 'bdaf4d04', 'javelin-behavior-diffusion-commit-branches' => 'bdaf4d04',
'javelin-behavior-diffusion-commit-graph' => '49ae8328', 'javelin-behavior-diffusion-commit-graph' => '75b83cbb',
'javelin-behavior-diffusion-jump-to' => '73d09eef', 'javelin-behavior-diffusion-jump-to' => '73d09eef',
'javelin-behavior-diffusion-locate-file' => '6d3e1947', 'javelin-behavior-diffusion-locate-file' => '6d3e1947',
'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc', 'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc',
@ -656,7 +658,7 @@ return array(
'javelin-behavior-phabricator-line-linker' => '1499a8cb', 'javelin-behavior-phabricator-line-linker' => '1499a8cb',
'javelin-behavior-phabricator-nav' => '947753e0', 'javelin-behavior-phabricator-nav' => '947753e0',
'javelin-behavior-phabricator-notification-example' => '8ce821c5', 'javelin-behavior-phabricator-notification-example' => '8ce821c5',
'javelin-behavior-phabricator-object-selector' => 'e0ec7f2f', 'javelin-behavior-phabricator-object-selector' => '77c1f0b0',
'javelin-behavior-phabricator-oncopy' => '2926fff2', 'javelin-behavior-phabricator-oncopy' => '2926fff2',
'javelin-behavior-phabricator-remarkup-assist' => 'acd29eee', 'javelin-behavior-phabricator-remarkup-assist' => 'acd29eee',
'javelin-behavior-phabricator-reveal-content' => '60821bc7', 'javelin-behavior-phabricator-reveal-content' => '60821bc7',
@ -772,9 +774,9 @@ return array(
'phabricator-darklog' => 'c8e1ffe3', 'phabricator-darklog' => 'c8e1ffe3',
'phabricator-darkmessage' => 'c48cccdd', 'phabricator-darkmessage' => 'c48cccdd',
'phabricator-dashboard-css' => 'fe5b1869', 'phabricator-dashboard-css' => 'fe5b1869',
'phabricator-diff-changeset' => 'aaaf4cb5', 'phabricator-diff-changeset' => 'd498bddb',
'phabricator-diff-changeset-list' => '85abc805', 'phabricator-diff-changeset-list' => '29bbc02c',
'phabricator-diff-inline' => '1d17130f', 'phabricator-diff-inline' => '20553f71',
'phabricator-drag-and-drop-file-upload' => '58dea2fa', 'phabricator-drag-and-drop-file-upload' => '58dea2fa',
'phabricator-draggable-list' => 'bea6e7f4', 'phabricator-draggable-list' => 'bea6e7f4',
'phabricator-fatal-config-template-css' => '8f18fa41', 'phabricator-fatal-config-template-css' => '8f18fa41',
@ -793,7 +795,7 @@ return array(
'phabricator-object-selector-css' => '85ee8ce6', 'phabricator-object-selector-css' => '85ee8ce6',
'phabricator-phtize' => 'd254d646', 'phabricator-phtize' => 'd254d646',
'phabricator-prefab' => 'c5af80a2', 'phabricator-prefab' => 'c5af80a2',
'phabricator-remarkup-css' => 'd1a5e11e', 'phabricator-remarkup-css' => '509fb36e',
'phabricator-search-results-css' => '8f8e08ed', 'phabricator-search-results-css' => '8f8e08ed',
'phabricator-shaped-request' => '7cbe244b', 'phabricator-shaped-request' => '7cbe244b',
'phabricator-slowvote-css' => 'a94b7230', 'phabricator-slowvote-css' => 'a94b7230',
@ -820,8 +822,8 @@ return array(
'phui-big-info-view-css' => 'bd903741', 'phui-big-info-view-css' => 'bd903741',
'phui-box-css' => '269cbc99', 'phui-box-css' => '269cbc99',
'phui-button-bar-css' => '39fe680c', 'phui-button-bar-css' => '39fe680c',
'phui-button-css' => '9f13ddcc', 'phui-button-css' => '022581b4',
'phui-button-simple-css' => '081cfeea', 'phui-button-simple-css' => '8e1baf68',
'phui-calendar-css' => '477acfaa', 'phui-calendar-css' => '477acfaa',
'phui-calendar-day-css' => '572b1893', 'phui-calendar-day-css' => '572b1893',
'phui-calendar-list-css' => '576be600', 'phui-calendar-list-css' => '576be600',
@ -834,14 +836,14 @@ return array(
'phui-curtain-view-css' => '55dd0e59', 'phui-curtain-view-css' => '55dd0e59',
'phui-document-summary-view-css' => '9ca48bdf', 'phui-document-summary-view-css' => '9ca48bdf',
'phui-document-view-css' => 'c32e8dec', 'phui-document-view-css' => 'c32e8dec',
'phui-document-view-pro-css' => 'bb18da6b', 'phui-document-view-pro-css' => '8af7ea27',
'phui-feed-story-css' => '44a9c8e9', 'phui-feed-story-css' => '44a9c8e9',
'phui-font-icon-base-css' => '870a7360', 'phui-font-icon-base-css' => '870a7360',
'phui-fontkit-css' => '1320ed01', 'phui-fontkit-css' => '1320ed01',
'phui-form-css' => 'a5570f70', 'phui-form-css' => 'a5570f70',
'phui-form-view-css' => '6175808d', 'phui-form-view-css' => '6175808d',
'phui-head-thing-view-css' => 'fd311e5f', 'phui-head-thing-view-css' => 'fd311e5f',
'phui-header-view-css' => 'a3d1aecd', 'phui-header-view-css' => 'e7de7ee2',
'phui-hovercard' => '1bd28176', 'phui-hovercard' => '1bd28176',
'phui-hovercard-view-css' => 'f0592bcf', 'phui-hovercard-view-css' => 'f0592bcf',
'phui-icon-set-selector-css' => '87db8fee', 'phui-icon-set-selector-css' => '87db8fee',
@ -858,16 +860,16 @@ return array(
'phui-oi-color-css' => 'cd2b9b77', 'phui-oi-color-css' => 'cd2b9b77',
'phui-oi-drag-ui-css' => '08f4ccc3', 'phui-oi-drag-ui-css' => '08f4ccc3',
'phui-oi-flush-ui-css' => '9d9685d6', 'phui-oi-flush-ui-css' => '9d9685d6',
'phui-oi-list-view-css' => '43752968', 'phui-oi-list-view-css' => 'bf094950',
'phui-oi-simple-ui-css' => 'a8beebea', 'phui-oi-simple-ui-css' => 'a8beebea',
'phui-pager-css' => '77d8a794', 'phui-pager-css' => 'edcbc226',
'phui-pinboard-view-css' => '2495140e', 'phui-pinboard-view-css' => '2495140e',
'phui-property-list-view-css' => '2dc7993f', 'phui-property-list-view-css' => '2dc7993f',
'phui-remarkup-preview-css' => '54a34863', 'phui-remarkup-preview-css' => '54a34863',
'phui-segment-bar-view-css' => 'b1d1b892', 'phui-segment-bar-view-css' => 'b1d1b892',
'phui-spacing-css' => '042804d6', 'phui-spacing-css' => '042804d6',
'phui-status-list-view-css' => 'd5263e49', 'phui-status-list-view-css' => 'd5263e49',
'phui-tag-view-css' => '3fa7765e', 'phui-tag-view-css' => '93b084cf',
'phui-theme-css' => '9f261c6b', 'phui-theme-css' => '9f261c6b',
'phui-timeline-view-css' => '313c7f22', 'phui-timeline-view-css' => '313c7f22',
'phui-two-column-view-css' => 'ce9fa0b7', 'phui-two-column-view-css' => 'ce9fa0b7',
@ -878,7 +880,7 @@ return array(
'phuix-action-list-view' => 'b5c256b8', 'phuix-action-list-view' => 'b5c256b8',
'phuix-action-view' => 'b3465b9b', 'phuix-action-view' => 'b3465b9b',
'phuix-autocomplete' => 'f6699267', 'phuix-autocomplete' => 'f6699267',
'phuix-button-view' => '0f13520b', 'phuix-button-view' => 'a37126bd',
'phuix-dropdown-menu' => '8018ee50', 'phuix-dropdown-menu' => '8018ee50',
'phuix-form-control-view' => '83e03671', 'phuix-form-control-view' => '83e03671',
'phuix-icon-view' => 'bff6884b', 'phuix-icon-view' => 'bff6884b',
@ -936,9 +938,6 @@ return array(
'javelin-stratcom', 'javelin-stratcom',
'javelin-workflow', 'javelin-workflow',
), ),
'081cfeea' => array(
'phui-button-css',
),
'0825c27a' => array( '0825c27a' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-dom', 'javelin-dom',
@ -960,10 +959,6 @@ return array(
'javelin-dom', 'javelin-dom',
'javelin-router', 'javelin-router',
), ),
'0f13520b' => array(
'javelin-install',
'javelin-dom',
),
'0f764c35' => array( '0f764c35' => array(
'javelin-install', 'javelin-install',
'javelin-util', 'javelin-util',
@ -1021,9 +1016,6 @@ return array(
'javelin-request', 'javelin-request',
'javelin-uri', 'javelin-uri',
), ),
'1d17130f' => array(
'javelin-dom',
),
'1e911d0f' => array( '1e911d0f' => array(
'javelin-stratcom', 'javelin-stratcom',
'javelin-request', 'javelin-request',
@ -1047,6 +1039,9 @@ return array(
'javelin-install', 'javelin-install',
'javelin-dom', 'javelin-dom',
), ),
'20553f71' => array(
'javelin-dom',
),
'2290aeef' => array( '2290aeef' => array(
'javelin-install', 'javelin-install',
'javelin-dom', 'javelin-dom',
@ -1072,6 +1067,10 @@ return array(
'javelin-install', 'javelin-install',
'javelin-util', 'javelin-util',
), ),
'29bbc02c' => array(
'javelin-install',
'phuix-button-view',
),
'2ae077e1' => array( '2ae077e1' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-dom', 'javelin-dom',
@ -1225,11 +1224,6 @@ return array(
'javelin-vector', 'javelin-vector',
'javelin-stratcom', 'javelin-stratcom',
), ),
'49ae8328' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
),
'4b3c4443' => array( '4b3c4443' => array(
'phuix-icon-view', 'phuix-icon-view',
), ),
@ -1446,6 +1440,11 @@ return array(
'javelin-install', 'javelin-install',
'javelin-workboard-card', 'javelin-workboard-card',
), ),
'75b83cbb' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
),
'76b9fc3e' => array( '76b9fc3e' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-stratcom', 'javelin-stratcom',
@ -1458,6 +1457,12 @@ return array(
'javelin-reactor', 'javelin-reactor',
'javelin-util', 'javelin-util',
), ),
'77c1f0b0' => array(
'javelin-behavior',
'javelin-dom',
'javelin-request',
'javelin-util',
),
'782ab6e7' => array( '782ab6e7' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-dom', 'javelin-dom',
@ -1514,9 +1519,6 @@ return array(
'javelin-dom', 'javelin-dom',
'javelin-stratcom', 'javelin-stratcom',
), ),
'85abc805' => array(
'javelin-install',
),
'85ee8ce6' => array( '85ee8ce6' => array(
'aphront-dialog-view-css', 'aphront-dialog-view-css',
), ),
@ -1564,6 +1566,9 @@ return array(
'javelin-stratcom', 'javelin-stratcom',
'javelin-install', 'javelin-install',
), ),
'8e1baf68' => array(
'phui-button-css',
),
'8ff5e24c' => array( '8ff5e24c' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-stratcom', 'javelin-stratcom',
@ -1621,9 +1626,6 @@ return array(
'javelin-mask', 'javelin-mask',
'phabricator-drag-and-drop-file-upload', 'phabricator-drag-and-drop-file-upload',
), ),
'983751ee' => array(
'phui-inline-comment-view-css',
),
'9a6dd75c' => array( '9a6dd75c' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-stratcom', 'javelin-stratcom',
@ -1657,6 +1659,10 @@ return array(
'javelin-util', 'javelin-util',
'phabricator-keyboard-shortcut', 'phabricator-keyboard-shortcut',
), ),
'a37126bd' => array(
'javelin-install',
'javelin-dom',
),
'a3a63478' => array( 'a3a63478' => array(
'phui-workcard-view-css', 'phui-workcard-view-css',
), ),
@ -1716,17 +1722,6 @@ return array(
'javelin-util', 'javelin-util',
'phabricator-prefab', 'phabricator-prefab',
), ),
'aaaf4cb5' => array(
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-install',
'javelin-workflow',
'javelin-router',
'javelin-behavior-device',
'javelin-vector',
'phabricator-diff-inline',
),
'ab2f381b' => array( 'ab2f381b' => array(
'javelin-request', 'javelin-request',
'javelin-behavior', 'javelin-behavior',
@ -1877,6 +1872,9 @@ return array(
'javelin-dom', 'javelin-dom',
'javelin-vector', 'javelin-vector',
), ),
'c3f44655' => array(
'phui-inline-comment-view-css',
),
'c420b0b9' => array( 'c420b0b9' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-behavior-device', 'javelin-behavior-device',
@ -1988,6 +1986,17 @@ return array(
'javelin-uri', 'javelin-uri',
'javelin-util', 'javelin-util',
), ),
'd498bddb' => array(
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-install',
'javelin-workflow',
'javelin-router',
'javelin-behavior-device',
'javelin-vector',
'phabricator-diff-inline',
),
'd4eecc63' => array( 'd4eecc63' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-dom', 'javelin-dom',
@ -2029,12 +2038,6 @@ return array(
'javelin-typeahead-ondemand-source', 'javelin-typeahead-ondemand-source',
'javelin-dom', 'javelin-dom',
), ),
'e0ec7f2f' => array(
'javelin-behavior',
'javelin-dom',
'javelin-request',
'javelin-util',
),
'e1d25dfb' => array( 'e1d25dfb' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-stratcom', 'javelin-stratcom',

View file

@ -0,0 +1,2 @@
ALTER TABLE {$NAMESPACE}_file.file
CHANGE contentHash contentHash BINARY(64);

View file

@ -0,0 +1,68 @@
<?php
$table = new ManiphestTransaction();
$add_edges = array();
foreach (new LiskMigrationIterator($table) as $txn) {
$txn_type = $txn->getTransactionType();
if ($txn_type == 'mergedinto') {
// dupe handling as implemented in D10427, which creates a specific txn
$add_edges[] = array(
'src' => $txn->getObjectPHID(),
'dst' => $txn->getNewValue(),
);
} else if ($txn_type == 'status' && $txn->getNewValue() == 'duplicate') {
// dupe handling as originally implemented, which just changes the status
// and adds a comment
$src_phid = $txn->getObjectPHID();
// get all the comment transactions associated with this task
$viewer = PhabricatorUser::getOmnipotentUser();
$comment_txns = id(new ManiphestTransactionQuery())
->setViewer($viewer)
->withObjectPHIDs(array($src_phid))
->needComments(true)
->execute();
// check each comment, looking for the "Merged Into" message
foreach ($comment_txns as $comment_txn) {
if ($comment_txn->hasComment()) {
$comment = $comment_txn->getComment()->getContent();
$pattern = '/^\xE2\x9C\x98 Merged into T(\d+)\.$/';
$matches = array();
if (preg_match($pattern, $comment, $matches)) {
$dst_task = id(new ManiphestTaskQuery())
->setViewer($viewer)
->withIDs(array($matches[1]))
->executeOne();
if ($dst_task) {
$dst_phid = $dst_task->getPHID();
$add_edges[] = array(
'src' => $src_phid,
'dst' => $dst_phid,
);
}
}
}
}
}
}
if ($add_edges) {
foreach ($add_edges as $edge) {
$src_phid = $edge['src'];
$dst_phid = $edge['dst'];
$type = ManiphestTaskIsDuplicateOfTaskEdgeType::EDGECONST;
try {
$editor = id(new PhabricatorEdgeEditor())
->addEdge($src_phid, $type, $dst_phid)
->save();
} catch (PhabricatorEdgeCycleException $ex) {
// Some earlier or later merge made this invalid, just skip it.
}
}
}

View file

@ -84,8 +84,8 @@ abstract class AlmanacController
'a', 'a',
array( array(
'class' => ($can_edit 'class' => ($can_edit
? 'button grey small' ? 'button button-grey small'
: 'button grey small disabled'), : 'button button-grey small disabled'),
'sigil' => 'workflow', 'sigil' => 'workflow',
'href' => $delete_uri, 'href' => $delete_uri,
), ),

View file

@ -77,7 +77,7 @@ final class AlmanacBindingTableView extends AphrontView {
phutil_tag( phutil_tag(
'a', 'a',
array( array(
'class' => 'small grey button', 'class' => 'small button button-grey',
'href' => '/almanac/binding/'.$binding->getID().'/', 'href' => '/almanac/binding/'.$binding->getID().'/',
), ),
pht('Details')), pht('Details')),

View file

@ -30,9 +30,9 @@ final class AlmanacInterfaceTableView extends AphrontView {
$can_edit = $this->getCanEdit(); $can_edit = $this->getCanEdit();
if ($can_edit) { if ($can_edit) {
$button_class = 'small grey button'; $button_class = 'small button button-grey';
} else { } else {
$button_class = 'small grey button disabled'; $button_class = 'small button button-grey disabled';
} }
$handles = $viewer->loadHandles(mpull($interfaces, 'getNetworkPHID')); $handles = $viewer->loadHandles(mpull($interfaces, 'getNetworkPHID'));

View file

@ -49,6 +49,17 @@ final class PhabricatorAuditTransaction
return $blocks; return $blocks;
} }
public function getActionStrength() {
$type = $this->getTransactionType();
switch ($type) {
case self::TYPE_COMMIT:
return 3.0;
}
return parent::getActionStrength();
}
public function getRequiredHandlePHIDs() { public function getRequiredHandlePHIDs() {
$phids = parent::getRequiredHandlePHIDs(); $phids = parent::getRequiredHandlePHIDs();

View file

@ -60,7 +60,7 @@ final class PhabricatorConduitTokensSettingsPanel
javelin_tag( javelin_tag(
'a', 'a',
array( array(
'class' => 'button small grey', 'class' => 'button small button-grey',
'href' => '/conduit/token/terminate/'.$token->getID().'/', 'href' => '/conduit/token/terminate/'.$token->getID().'/',
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),

View file

@ -129,7 +129,7 @@ final class PhabricatorSetupIssueView extends AphrontView {
array( array(
'href' => '/config/unignore/'.$issue->getIssueKey().'/', 'href' => '/config/unignore/'.$issue->getIssueKey().'/',
'sigil' => 'workflow', 'sigil' => 'workflow',
'class' => 'button grey', 'class' => 'button button-grey',
), ),
pht('Unignore Setup Issue')); pht('Unignore Setup Issue'));
} else { } else {
@ -138,7 +138,7 @@ final class PhabricatorSetupIssueView extends AphrontView {
array( array(
'href' => '/config/ignore/'.$issue->getIssueKey().'/', 'href' => '/config/ignore/'.$issue->getIssueKey().'/',
'sigil' => 'workflow', 'sigil' => 'workflow',
'class' => 'button grey', 'class' => 'button button-grey',
), ),
pht('Ignore Setup Issue')); pht('Ignore Setup Issue'));
} }
@ -147,7 +147,7 @@ final class PhabricatorSetupIssueView extends AphrontView {
'a', 'a',
array( array(
'href' => '/config/issue/'.$issue->getIssueKey().'/', 'href' => '/config/issue/'.$issue->getIssueKey().'/',
'class' => 'button grey', 'class' => 'button button-grey',
'style' => 'float: right', 'style' => 'float: right',
), ),
pht('Reload Page')); pht('Reload Page'));

View file

@ -140,7 +140,7 @@ abstract class ConpherenceController extends PhabricatorController {
'button', 'button',
array( array(
'type' => 'SUBMIT', 'type' => 'SUBMIT',
'class' => 'button green mlr', 'class' => 'button button-green mlr',
), ),
pht('Join Room')); pht('Join Room'));

View file

@ -132,7 +132,7 @@ final class ConpherenceRoomPictureController
$button = javelin_tag( $button = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip', 'sigil' => 'has-tooltip',
'meta' => array( 'meta' => array(
'tip' => $spec['tip'], 'tip' => $spec['tip'],

View file

@ -404,7 +404,7 @@ final class ConpherenceDurableColumnView extends AphrontTagView {
'a', 'a',
array( array(
'href' => '/conpherence/search/', 'href' => '/conpherence/search/',
'class' => 'button grey', 'class' => 'button button-grey',
), ),
pht('Find Rooms')), pht('Find Rooms')),
); );

View file

@ -170,7 +170,8 @@ final class DarkConsoleServicesPlugin extends DarkConsolePlugin {
'a', 'a',
array( array(
'href' => $data['analyzeURI'], 'href' => $data['analyzeURI'],
'class' => $data['didAnalyze'] ? 'disabled button' : 'green button', 'class' => $data['didAnalyze'] ?
'disabled button' : 'button button-green',
), ),
pht('Analyze Query Plans')), pht('Analyze Query Plans')),
phutil_tag('h1', array(), pht('Calls to External Services')), phutil_tag('h1', array(), pht('Calls to External Services')),

View file

@ -67,7 +67,7 @@ final class DarkConsoleXHProfPlugin extends DarkConsolePlugin {
'a', 'a',
array( array(
'href' => $profile_uri, 'href' => $profile_uri,
'class' => $run ? 'disabled button' : 'green button', 'class' => $run ? 'disabled button' : 'button button-green',
), ),
pht('Profile Page')), pht('Profile Page')),
phutil_tag('h1', array(), pht('XHProf Profiler')), phutil_tag('h1', array(), pht('XHProf Profiler')),

View file

@ -41,7 +41,7 @@ final class PhabricatorDaemonTasksTableView extends AphrontView {
'a', 'a',
array( array(
'href' => '/daemon/task/'.$task->getID().'/', 'href' => '/daemon/task/'.$task->getID().'/',
'class' => 'button small grey', 'class' => 'button small button-grey',
), ),
pht('View Task')), pht('View Task')),
); );

View file

@ -156,7 +156,7 @@ final class DifferentialRevisionViewController extends DifferentialController {
phutil_tag( phutil_tag(
'a', 'a',
array( array(
'class' => 'button grey', 'class' => 'button button-grey',
'href' => $request_uri 'href' => $request_uri
->alter('large', 'true') ->alter('large', 'true')
->setFragment('toc'), ->setFragment('toc'),

View file

@ -174,7 +174,7 @@ final class DifferentialChangesetListView extends AphrontView {
$load = javelin_tag( $load = javelin_tag(
'a', 'a',
array( array(
'class' => 'button grey', 'class' => 'button button-grey',
'href' => '#'.$uniq_id, 'href' => '#'.$uniq_id,
'sigil' => 'differential-load', 'sigil' => 'differential-load',
'meta' => array( 'meta' => array(
@ -275,6 +275,10 @@ final class DifferentialChangesetListView extends AphrontView {
pht('Hide or show the current file.'), pht('Hide or show the current file.'),
'You must select a file to hide or show.' => 'You must select a file to hide or show.' =>
pht('You must select a file to hide or show.'), pht('You must select a file to hide or show.'),
'Unsaved' => pht('Unsaved'),
'Unsubmitted' => pht('Unsubmitted'),
'Comments' => pht('Comments'),
), ),
)); ));

View file

@ -57,11 +57,14 @@ final class DiffusionSearchQueryConduitAPIMethod
$results = array(); $results = array();
$future = $repository->getLocalCommandFuture( $future = $repository->getLocalCommandFuture(
// NOTE: --perl-regexp is available only with libpcre compiled in. // NOTE: --perl-regexp is available only with libpcre compiled in.
'grep --extended-regexp --null -n --no-color -e %s %s -- %s', 'grep --extended-regexp --null -n --no-color -f - %s -- %s',
$grep,
$drequest->getStableCommit(), $drequest->getStableCommit(),
$path); $path);
// NOTE: We're writing the pattern on stdin to avoid issues with UTF8
// being mangled by the shell. See T12807.
$future->write($grep);
$binary_pattern = '/Binary file [^:]*:(.+) matches/'; $binary_pattern = '/Binary file [^:]*:(.+) matches/';
$lines = new LinesOfALargeExecFuture($future); $lines = new LinesOfALargeExecFuture($future);

View file

@ -333,6 +333,7 @@ abstract class DiffusionController extends PhabricatorController {
$tag = id(new PHUITagView()) $tag = id(new PHUITagView())
->setName($commit) ->setName($commit)
->setColor(PHUITagView::COLOR_INDIGO) ->setColor(PHUITagView::COLOR_INDIGO)
->setBorder(PHUITagView::BORDER_NONE)
->setType(PHUITagView::TYPE_SHADE); ->setType(PHUITagView::TYPE_SHADE);
return $tag; return $tag;

View file

@ -69,7 +69,8 @@ final class DiffusionHistoryController extends DiffusionController {
return $this->newPage() return $this->newPage()
->setTitle($title) ->setTitle($title)
->setCrumbs($crumbs) ->setCrumbs($crumbs)
->appendChild($view); ->appendChild($view)
->addClass('diffusion-history-view');
} }
private function buildHeader(DiffusionRequest $drequest) { private function buildHeader(DiffusionRequest $drequest) {

View file

@ -94,18 +94,10 @@ final class DiffusionCommitListView extends AphrontView {
$handles = $viewer->loadHandles($phids); $handles = $viewer->loadHandles($phids);
$cur_date = 0; $cur_date = 0;
$list = null;
$header = null;
$view = array(); $view = array();
foreach ($this->commits as $commit) { foreach ($this->commits as $commit) {
$new_date = date('Ymd', $commit->getEpoch()); $new_date = phabricator_date($commit->getEpoch(), $viewer);
if ($cur_date != $new_date) { if ($cur_date !== $new_date) {
if ($list) {
$view[] = id(new PHUIObjectBoxView())
->setHeader($header)
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setObjectList($list);
}
$date = ucfirst( $date = ucfirst(
phabricator_relative_date($commit->getEpoch(), $viewer)); phabricator_relative_date($commit->getEpoch(), $viewer));
$header = id(new PHUIHeaderView()) $header = id(new PHUIHeaderView())
@ -113,6 +105,11 @@ final class DiffusionCommitListView extends AphrontView {
$list = id(new PHUIObjectItemListView()) $list = id(new PHUIObjectItemListView())
->setFlush(true) ->setFlush(true)
->addClass('diffusion-history-list'); ->addClass('diffusion-history-list');
$view[] = id(new PHUIObjectBoxView())
->setHeader($header)
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setObjectList($list);
} }
$commit_phid = $commit->getPHID(); $commit_phid = $commit->getPHID();
@ -146,6 +143,7 @@ final class DiffusionCommitListView extends AphrontView {
->setName($commit_name) ->setName($commit_name)
->setType(PHUITagView::TYPE_SHADE) ->setType(PHUITagView::TYPE_SHADE)
->setColor(PHUITagView::COLOR_INDIGO) ->setColor(PHUITagView::COLOR_INDIGO)
->setBorder(PHUITagView::BORDER_NONE)
->setSlimShady(true); ->setSlimShady(true);
$item = id(new PHUIObjectItemView()) $item = id(new PHUIObjectItemView())

View file

@ -110,7 +110,7 @@ final class DiffusionHistoryListView extends DiffusionHistoryView {
->setType(PHUITagView::TYPE_SHADE) ->setType(PHUITagView::TYPE_SHADE)
->setColor(PHUITagView::COLOR_BLUE) ->setColor(PHUITagView::COLOR_BLUE)
->setHref('/D'.$d_id) ->setHref('/D'.$d_id)
->addClass('diffusion-differential-tag') ->setBorder(PHUITagView::BORDER_NONE)
->setSlimShady(true); ->setSlimShady(true);
} }
} }
@ -155,6 +155,7 @@ final class DiffusionHistoryListView extends DiffusionHistoryView {
->setName($commit_name) ->setName($commit_name)
->setType(PHUITagView::TYPE_SHADE) ->setType(PHUITagView::TYPE_SHADE)
->setColor(PHUITagView::COLOR_INDIGO) ->setColor(PHUITagView::COLOR_INDIGO)
->setBorder(PHUITagView::BORDER_NONE)
->setSlimShady(true); ->setSlimShady(true);
$item = id(new PHUIObjectItemView()) $item = id(new PHUIObjectItemView())

View file

@ -82,7 +82,7 @@ final class PhabricatorFileComposeController
$buttons[] = javelin_tag( $buttons[] = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip compose-select-color', 'sigil' => 'has-tooltip compose-select-color',
'style' => 'margin: 0 8px 8px 0', 'style' => 'margin: 0 8px 8px 0',
'meta' => array( 'meta' => array(
@ -102,7 +102,7 @@ final class PhabricatorFileComposeController
$icons[] = javelin_tag( $icons[] = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip compose-select-icon', 'sigil' => 'has-tooltip compose-select-icon',
'style' => 'margin: 0 8px 8px 0', 'style' => 'margin: 0 8px 8px 0',
'meta' => array( 'meta' => array(

View file

@ -68,7 +68,7 @@ final class PhabricatorFileTransformListController
$view_link = phutil_tag( $view_link = phutil_tag(
'a', 'a',
array( array(
'class' => 'small grey button', 'class' => 'small button button-grey',
'href' => $view_href, 'href' => $view_href,
), ),
$view_text); $view_text);

View file

@ -191,7 +191,7 @@ final class HeraldRuleController extends HeraldController {
'a', 'a',
array( array(
'href' => '#', 'href' => '#',
'class' => 'button green', 'class' => 'button button-green',
'sigil' => 'create-condition', 'sigil' => 'create-condition',
'mustcapture' => true, 'mustcapture' => true,
), ),
@ -212,7 +212,7 @@ final class HeraldRuleController extends HeraldController {
'a', 'a',
array( array(
'href' => '#', 'href' => '#',
'class' => 'button green', 'class' => 'button button-green',
'sigil' => 'create-action', 'sigil' => 'create-action',
'mustcapture' => true, 'mustcapture' => true,
), ),

View file

@ -173,7 +173,7 @@ final class ManiphestBatchEditController extends ManiphestController {
'a', 'a',
array( array(
'href' => '#', 'href' => '#',
'class' => 'button green', 'class' => 'button button-green',
'sigil' => 'add-action', 'sigil' => 'add-action',
'mustcapture' => true, 'mustcapture' => true,
), ),

View file

@ -36,6 +36,7 @@ final class ManiphestTaskDetailController extends ManiphestController {
ManiphestTaskHasMockEdgeType::EDGECONST, ManiphestTaskHasMockEdgeType::EDGECONST,
PhabricatorObjectMentionedByObjectEdgeType::EDGECONST, PhabricatorObjectMentionedByObjectEdgeType::EDGECONST,
PhabricatorObjectMentionsObjectEdgeType::EDGECONST, PhabricatorObjectMentionsObjectEdgeType::EDGECONST,
ManiphestTaskHasDuplicateTaskEdgeType::EDGECONST,
); );
$phid = $task->getPHID(); $phid = $task->getPHID();
@ -159,6 +160,7 @@ final class ManiphestTaskDetailController extends ManiphestController {
$related_tabs[] = $this->newMocksTab($task, $query); $related_tabs[] = $this->newMocksTab($task, $query);
$related_tabs[] = $this->newMentionsTab($task, $query); $related_tabs[] = $this->newMentionsTab($task, $query);
$related_tabs[] = $this->newDuplicatesTab($task, $query);
$tab_view = null; $tab_view = null;
@ -553,6 +555,32 @@ final class ManiphestTaskDetailController extends ManiphestController {
->appendChild($view); ->appendChild($view);
} }
private function newDuplicatesTab(
ManiphestTask $task,
PhabricatorEdgeQuery $edge_query) {
$in_type = ManiphestTaskHasDuplicateTaskEdgeType::EDGECONST;
$in_phids = $edge_query->getDestinationPHIDs(array(), array($in_type));
$viewer = $this->getViewer();
$in_handles = $viewer->loadHandles($in_phids);
$in_handles = $this->getCompleteHandles($in_handles);
$view = new PHUIPropertyListView();
if (!count($in_handles)) {
return null;
}
$view->addProperty(
pht('Duplicates Merged Here'), $in_handles->renderList());
return id(new PHUITabView())
->setName(pht('Duplicates'))
->setKey('duplicates')
->appendChild($view);
}
private function getCompleteHandles(PhabricatorHandleList $handles) { private function getCompleteHandles(PhabricatorHandleList $handles) {
$phids = array(); $phids = array();

View file

@ -196,7 +196,7 @@ final class ManiphestTaskResultListView extends ManiphestView {
array( array(
'href' => '#', 'href' => '#',
'mustcapture' => true, 'mustcapture' => true,
'class' => 'grey button', 'class' => 'button button-grey',
'id' => 'batch-select-all', 'id' => 'batch-select-all',
), ),
pht('Select All')); pht('Select All'));
@ -206,7 +206,7 @@ final class ManiphestTaskResultListView extends ManiphestView {
array( array(
'href' => '#', 'href' => '#',
'mustcapture' => true, 'mustcapture' => true,
'class' => 'grey button', 'class' => 'button button-grey',
'id' => 'batch-select-none', 'id' => 'batch-select-none',
), ),
pht('Clear Selection')); pht('Clear Selection'));
@ -224,7 +224,7 @@ final class ManiphestTaskResultListView extends ManiphestView {
'a', 'a',
array( array(
'href' => '/maniphest/export/'.$saved_query->getQueryKey().'/', 'href' => '/maniphest/export/'.$saved_query->getQueryKey().'/',
'class' => 'grey button', 'class' => 'button button-grey',
), ),
pht('Export to Excel')); pht('Export to Excel'));

View file

@ -13,10 +13,6 @@ final class PhabricatorMetaMTAWorker
protected function doWork() { protected function doWork() {
$message = $this->loadMessage(); $message = $this->loadMessage();
if (!$message) {
throw new PhabricatorWorkerPermanentFailureException(
pht('Unable to load message!'));
}
if ($message->getStatus() != PhabricatorMailOutboundStatus::STATUS_QUEUE) { if ($message->getStatus() != PhabricatorMailOutboundStatus::STATUS_QUEUE) {
return; return;
@ -32,7 +28,18 @@ final class PhabricatorMetaMTAWorker
private function loadMessage() { private function loadMessage() {
$message_id = $this->getTaskData(); $message_id = $this->getTaskData();
return id(new PhabricatorMetaMTAMail())->load($message_id); $message = id(new PhabricatorMetaMTAMail())
->load($message_id);
if (!$message) {
throw new PhabricatorWorkerPermanentFailureException(
pht(
'Unable to load mail message (with ID "%s") while preparing to '.
'deliver it.',
$message_id));
}
return $message;
} }
public function renderForDisplay(PhabricatorUser $viewer) { public function renderForDisplay(PhabricatorUser $viewer) {

View file

@ -341,7 +341,7 @@ final class PhabricatorMetaMTAApplicationEmailPanel
$button_edit = javelin_tag( $button_edit = javelin_tag(
'a', 'a',
array( array(
'class' => 'button small grey', 'class' => 'button small button-grey',
'href' => $uri->alter('edit', $email->getID()), 'href' => $uri->alter('edit', $email->getID()),
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),
@ -350,7 +350,7 @@ final class PhabricatorMetaMTAApplicationEmailPanel
$button_remove = javelin_tag( $button_remove = javelin_tag(
'a', 'a',
array( array(
'class' => 'button small grey', 'class' => 'button small button-grey',
'href' => $uri->alter('delete', $email->getID()), 'href' => $uri->alter('delete', $email->getID()),
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),

View file

@ -87,7 +87,7 @@ final class PhabricatorOAuthServerAuthorizationsSettingsPanel
'a', 'a',
array( array(
'href' => $this->getPanelURI('?revoke='.$authorization->getID()), 'href' => $this->getPanelURI('?revoke='.$authorization->getID()),
'class' => 'small grey button', 'class' => 'small button button-grey',
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),
pht('Revoke')); pht('Revoke'));

View file

@ -124,7 +124,7 @@ final class PhabricatorOwnersPathsController
'a', 'a',
array( array(
'href' => '#', 'href' => '#',
'class' => 'button green', 'class' => 'button button-green',
'sigil' => 'addpath', 'sigil' => 'addpath',
'mustcapture' => true, 'mustcapture' => true,
), ),

View file

@ -113,7 +113,7 @@ final class PassphraseCredentialControl extends AphrontFormControl {
'a', 'a',
array( array(
'href' => '#', 'href' => '#',
'class' => 'button grey', 'class' => 'button button-grey',
'sigil' => 'passphrase-credential-add', 'sigil' => 'passphrase-credential-add',
'mustcapture' => true, 'mustcapture' => true,
), ),

View file

@ -190,7 +190,7 @@ final class PhabricatorPeopleProfilePictureController
$button = javelin_tag( $button = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip', 'sigil' => 'has-tooltip',
'meta' => array( 'meta' => array(
'tip' => $spec['tip'], 'tip' => $spec['tip'],

View file

@ -133,7 +133,7 @@ final class PhameBlogProfilePictureController
$button = javelin_tag( $button = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip', 'sigil' => 'has-tooltip',
'meta' => array( 'meta' => array(
'tip' => $spec['tip'], 'tip' => $spec['tip'],

View file

@ -120,7 +120,7 @@ final class PholioUploadedImageView extends AphrontView {
return javelin_tag( return javelin_tag(
'a', 'a',
array( array(
'class' => 'button grey', 'class' => 'button button-grey',
'sigil' => 'pholio-drop-remove', 'sigil' => 'pholio-drop-remove',
), ),
'X'); 'X');

View file

@ -152,7 +152,7 @@ final class PhortuneCartCheckoutController
$new_method = javelin_tag( $new_method = javelin_tag(
'a', 'a',
array( array(
'class' => 'button grey', 'class' => 'button button-grey',
'href' => $payment_method_uri, 'href' => $payment_method_uri,
), ),
pht('Add New Payment Method')); pht('Add New Payment Method'));

View file

@ -133,7 +133,7 @@ final class PhortuneMerchantPictureController
$button = javelin_tag( $button = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip', 'sigil' => 'has-tooltip',
'meta' => array( 'meta' => array(
'tip' => $spec['tip'], 'tip' => $spec['tip'],

View file

@ -123,7 +123,7 @@ final class PhortuneSubscriptionEditController extends PhortuneController {
'a', 'a',
array( array(
'href' => $uri, 'href' => $uri,
'class' => 'button grey', 'class' => 'button button-grey',
), ),
pht('Add Payment Method...')); pht('Add Payment Method...'));

View file

@ -101,7 +101,7 @@ final class PhortuneOrderTableView extends AphrontView {
'a', 'a',
array( array(
'href' => $cart->getCheckoutURI(), 'href' => $cart->getCheckoutURI(),
'class' => 'small green button', 'class' => 'small button button-green',
), ),
pht('Pay Now')), pht('Pay Now')),
); );

View file

@ -103,7 +103,7 @@ final class PhrictionDiffController extends PhrictionController {
'a', 'a',
array( array(
'href' => $uri->alter('l', $l - 1)->alter('r', $r - 1), 'href' => $uri->alter('l', $l - 1)->alter('r', $r - 1),
'class' => 'button grey', 'class' => 'button button-grey',
), ),
pht("\xC2\xAB Previous Change")); pht("\xC2\xAB Previous Change"));
} else { } else {
@ -111,7 +111,7 @@ final class PhrictionDiffController extends PhrictionController {
'a', 'a',
array( array(
'href' => '#', 'href' => '#',
'class' => 'button grey disabled', 'class' => 'button button-grey disabled',
), ),
pht('Original Change')); pht('Original Change'));
} }
@ -122,7 +122,7 @@ final class PhrictionDiffController extends PhrictionController {
'a', 'a',
array( array(
'href' => $uri->alter('l', $l + 1)->alter('r', $r + 1), 'href' => $uri->alter('l', $l + 1)->alter('r', $r + 1),
'class' => 'button grey', 'class' => 'button button-grey',
), ),
pht("Next Change \xC2\xBB")); pht("Next Change \xC2\xBB"));
} else { } else {
@ -130,7 +130,7 @@ final class PhrictionDiffController extends PhrictionController {
'a', 'a',
array( array(
'href' => '#', 'href' => '#',
'class' => 'button grey disabled', 'class' => 'button button-grey disabled',
), ),
pht('Most Recent Change')); pht('Most Recent Change'));
} }
@ -200,7 +200,7 @@ final class PhrictionDiffController extends PhrictionController {
'a', 'a',
array( array(
'href' => '/phriction/edit/'.$document_id.'/', 'href' => '/phriction/edit/'.$document_id.'/',
'class' => 'button grey', 'class' => 'button button-grey',
), ),
pht('Edit Current Version')); pht('Edit Current Version'));
} }
@ -210,7 +210,7 @@ final class PhrictionDiffController extends PhrictionController {
'a', 'a',
array( array(
'href' => '/phriction/edit/'.$document_id.'/?revert='.$version, 'href' => '/phriction/edit/'.$document_id.'/?revert='.$version,
'class' => 'button grey', 'class' => 'button button-grey',
), ),
pht('Revert to Version %s...', $version)); pht('Revert to Version %s...', $version));
} }

View file

@ -199,7 +199,7 @@ final class PhabricatorPolicyEditController
'a', 'a',
array( array(
'href' => '#', 'href' => '#',
'class' => 'button green', 'class' => 'button button-green',
'sigil' => 'create-rule', 'sigil' => 'create-rule',
'mustcapture' => true, 'mustcapture' => true,
), ),

View file

@ -138,7 +138,7 @@ final class PhabricatorProjectBoardBackgroundController
$button = javelin_tag( $button = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip', 'sigil' => 'has-tooltip',
'meta' => array( 'meta' => array(
'tip' => $option['name'], 'tip' => $option['name'],

View file

@ -134,7 +134,7 @@ final class PhabricatorProjectEditPictureController
$button = javelin_tag( $button = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip', 'sigil' => 'has-tooltip',
'meta' => array( 'meta' => array(
'tip' => $spec['tip'], 'tip' => $spec['tip'],
@ -285,7 +285,7 @@ final class PhabricatorProjectEditPictureController
$default_button = javelin_tag( $default_button = javelin_tag(
'button', 'button',
array( array(
'class' => 'grey profile-image-button', 'class' => 'button-grey profile-image-button',
'sigil' => 'has-tooltip', 'sigil' => 'has-tooltip',
'meta' => array( 'meta' => array(
'tip' => pht('Use Icon and Color'), 'tip' => pht('Use Icon and Color'),

View file

@ -63,7 +63,7 @@ final class PhabricatorEmailAddressesSettingsPanel
$button_verify = javelin_tag( $button_verify = javelin_tag(
'a', 'a',
array( array(
'class' => 'button small grey', 'class' => 'button small button-grey',
'href' => $uri->alter('verify', $email->getID()), 'href' => $uri->alter('verify', $email->getID()),
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),
@ -72,7 +72,7 @@ final class PhabricatorEmailAddressesSettingsPanel
$button_make_primary = javelin_tag( $button_make_primary = javelin_tag(
'a', 'a',
array( array(
'class' => 'button small grey', 'class' => 'button small button-grey',
'href' => $uri->alter('primary', $email->getID()), 'href' => $uri->alter('primary', $email->getID()),
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),
@ -81,7 +81,7 @@ final class PhabricatorEmailAddressesSettingsPanel
$button_remove = javelin_tag( $button_remove = javelin_tag(
'a', 'a',
array( array(
'class' => 'button small grey', 'class' => 'button small button-grey',
'href' => $uri->alter('delete', $email->getID()), 'href' => $uri->alter('delete', $email->getID()),
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),

View file

@ -69,7 +69,7 @@ final class PhabricatorMultiFactorSettingsPanel
array( array(
'href' => $this->getPanelURI('?delete='.$factor->getID()), 'href' => $this->getPanelURI('?delete='.$factor->getID()),
'sigil' => 'workflow', 'sigil' => 'workflow',
'class' => 'small grey button', 'class' => 'small button button-grey',
), ),
pht('Remove')), pht('Remove')),
); );

View file

@ -58,7 +58,7 @@ final class PhabricatorSessionsSettingsPanel extends PhabricatorSettingsPanel {
$button = phutil_tag( $button = phutil_tag(
'a', 'a',
array( array(
'class' => 'small grey button disabled', 'class' => 'small button button-grey disabled',
), ),
pht('Current')); pht('Current'));
} else { } else {
@ -67,7 +67,7 @@ final class PhabricatorSessionsSettingsPanel extends PhabricatorSettingsPanel {
'a', 'a',
array( array(
'href' => '/auth/session/terminate/'.$session->getID().'/', 'href' => '/auth/session/terminate/'.$session->getID().'/',
'class' => 'small grey button', 'class' => 'small button button-grey',
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),
pht('Terminate')); pht('Terminate'));

View file

@ -30,7 +30,7 @@ final class PhabricatorTokensSettingsPanel extends PhabricatorSettingsPanel {
'a', 'a',
array( array(
'href' => '/auth/token/revoke/'.$token->getID().'/', 'href' => '/auth/token/revoke/'.$token->getID().'/',
'class' => 'small grey button', 'class' => 'small button button-grey',
'sigil' => 'workflow', 'sigil' => 'workflow',
), ),
pht('Revoke')); pht('Revoke'));
@ -38,7 +38,7 @@ final class PhabricatorTokensSettingsPanel extends PhabricatorSettingsPanel {
$button = javelin_tag( $button = javelin_tag(
'a', 'a',
array( array(
'class' => 'small grey button disabled', 'class' => 'small button button-grey disabled',
), ),
pht('Revoke')); pht('Revoke'));
} }

View file

@ -68,21 +68,10 @@ final class PHUIBoxExample extends PhabricatorUIExample {
->setText(pht('Such Wow')) ->setText(pht('Such Wow'))
->addClass(PHUI::MARGIN_SMALL_RIGHT); ->addClass(PHUI::MARGIN_SMALL_RIGHT);
$badge1 = id(new PHUIBadgeMiniView())
->setIcon('fa-bug')
->setHeader(pht('Bugmeister'));
$badge2 = id(new PHUIBadgeMiniView())
->setIcon('fa-heart')
->setHeader(pht('Funder'))
->setQuality(PhabricatorBadgesQuality::UNCOMMON);
$header = id(new PHUIHeaderView()) $header = id(new PHUIHeaderView())
->setHeader(pht('Fancy Box')) ->setHeader(pht('Fancy Box'))
->addActionLink($button) ->addActionLink($button)
->setSubheader(pht('Much Features')) ->setSubheader(pht('Much Features'));
->addBadge($badge1)
->addBadge($badge2);
$obj4 = id(new PHUIObjectBoxView()) $obj4 = id(new PHUIObjectBoxView())
->setHeader($header) ->setHeader($header)
@ -116,7 +105,9 @@ final class PHUIBoxExample extends PhabricatorUIExample {
return phutil_tag( return phutil_tag(
'div', 'div',
array(), array(
'class' => 'ml',
),
array( array(
$head1, $head1,
$wrap1, $wrap1,

View file

@ -16,63 +16,11 @@ final class PHUIButtonExample extends PhabricatorUIExample {
$request = $this->getRequest(); $request = $this->getRequest();
$user = $request->getUser(); $user = $request->getUser();
$colors = array('', 'green', 'grey', 'disabled');
$sizes = array('', 'small');
$tags = array('a', 'button');
// phutil_tag
$column = array();
foreach ($tags as $tag) {
foreach ($colors as $color) {
foreach ($sizes as $key => $size) {
$class = implode(' ', array($color, $size));
if ($tag == 'a') {
$class .= ' button';
}
$column[$key][] = phutil_tag(
$tag,
array(
'class' => $class,
),
phutil_utf8_ucwords($size.' '.$color.' '.$tag));
$column[$key][] = hsprintf('<br /><br />');
}
}
}
$column3 = array();
foreach ($colors as $color) {
$caret = phutil_tag('span', array('class' => 'caret'), '');
$column3[] = phutil_tag(
'a',
array(
'class' => $color.' button dropdown',
),
array(
phutil_utf8_ucwords($color.' Dropdown'),
$caret,
));
$column3[] = hsprintf('<br /><br />');
}
$layout1 = id(new AphrontMultiColumnView())
->addColumn($column[0])
->addColumn($column[1])
->addColumn($column3)
->setFluidLayout(true)
->setGutter(AphrontMultiColumnView::GUTTER_MEDIUM);
// PHUIButtonView // PHUIButtonView
$colors = array( $colors = array(
null, null,
PHUIButtonView::GREEN, PHUIButtonView::GREEN,
PHUIButtonView::GREY, PHUIButtonView::GREY,
PHUIButtonView::DISABLED,
); );
$sizes = array(null, PHUIButtonView::SMALL); $sizes = array(null, PHUIButtonView::SMALL);
$column = array(); $column = array();
@ -223,24 +171,21 @@ final class PHUIButtonExample extends PhabricatorUIExample {
// Set it and forget it // Set it and forget it
$head1 = id(new PHUIHeaderView())
->setHeader('phutil_tag');
$head2 = id(new PHUIHeaderView()) $head2 = id(new PHUIHeaderView())
->setHeader('PHUIButtonView'); ->setHeader('PHUIButtonView')
->addClass('ml');
$head3 = id(new PHUIHeaderView()) $head3 = id(new PHUIHeaderView())
->setHeader(pht('Icon Buttons')); ->setHeader(pht('Icon Buttons'))
->addClass('ml');
$head4 = id(new PHUIHeaderView()) $head4 = id(new PHUIHeaderView())
->setHeader(pht('Simple Buttons')); ->setHeader(pht('Simple Buttons'))
->addClass('ml');
$head5 = id(new PHUIHeaderView()) $head5 = id(new PHUIHeaderView())
->setHeader(pht('Big Icon Buttons')); ->setHeader(pht('Big Icon Buttons'))
->addClass('ml');
$wrap1 = id(new PHUIBoxView())
->appendChild($layout1)
->addMargin(PHUI::MARGIN_LARGE);
$wrap2 = id(new PHUIBoxView()) $wrap2 = id(new PHUIBoxView())
->appendChild($layout2) ->appendChild($layout2)
@ -259,8 +204,6 @@ final class PHUIButtonExample extends PhabricatorUIExample {
->addMargin(PHUI::MARGIN_LARGE); ->addMargin(PHUI::MARGIN_LARGE);
return array( return array(
$head1,
$wrap1,
$head2, $head2,
$wrap2, $wrap2,
$head3, $head3,

View file

@ -101,7 +101,7 @@ final class PHUIColorPalletteExample extends PhabricatorUIExample {
'a', 'a',
array( array(
'href' => 'http://color.hailpixel.com/#'.implode(',', $url), 'href' => 'http://color.hailpixel.com/#'.implode(',', $url),
'class' => 'button grey mlb', 'class' => 'button button-grey mlb',
), ),
pht('Color Palette')); pht('Color Palette'));

View file

@ -55,14 +55,6 @@ final class PHUIHovercardUIExample extends PhabricatorUIExample {
->addTag($tag)); ->addTag($tag));
$elements[] = $panel; $elements[] = $panel;
$badge1 = id(new PHUIBadgeMiniView())
->setIcon('fa-book')
->setHeader(pht('Documenter'));
$badge2 = id(new PHUIBadgeMiniView())
->setIcon('fa-star')
->setHeader(pht('Contributor'));
$user_handle = $this->createBasicDummyHandle( $user_handle = $this->createBasicDummyHandle(
'gwashington', 'gwashington',
PhabricatorPeopleUserPHIDType::TYPECONST, PhabricatorPeopleUserPHIDType::TYPECONST,
@ -75,8 +67,6 @@ final class PHUIHovercardUIExample extends PhabricatorUIExample {
->addField(pht('Status'), pht('Available')) ->addField(pht('Status'), pht('Available'))
->addField(pht('Member since'), '30. February 1750') ->addField(pht('Member since'), '30. February 1750')
->addAction(pht('Send a Message'), '/dev/null') ->addAction(pht('Send a Message'), '/dev/null')
->addBadge($badge1)
->addBadge($badge2)
->setUser($user)); ->setUser($user));
$elements[] = $panel; $elements[] = $panel;

View file

@ -24,7 +24,7 @@ final class PhabricatorNotificationUIExample extends PhabricatorUIExample {
'a', 'a',
array( array(
'sigil' => 'notification-example', 'sigil' => 'notification-example',
'class' => 'button green', 'class' => 'button button-green',
), ),
pht('Show Notification')); pht('Show Notification'));

View file

@ -23,11 +23,15 @@ final class PhabricatorTaskmasterDaemon extends PhabricatorDaemon {
$ex = $task->getExecutionException(); $ex = $task->getExecutionException();
if ($ex) { if ($ex) {
if ($ex instanceof PhabricatorWorkerPermanentFailureException) { if ($ex instanceof PhabricatorWorkerPermanentFailureException) {
$this->log( // NOTE: Make sure these reach the daemon log, even when not
// running in "phd.verbose" mode. See T12803 for discussion.
$log_exception = new PhutilProxyException(
pht( pht(
'Task %d was cancelled: %s', 'Task "%s" encountered a permanent failure and was '.
$id, 'cancelled.',
$ex->getMessage())); $id),
$ex);
phlog($log_exception);
} else if ($ex instanceof PhabricatorWorkerYieldException) { } else if ($ex instanceof PhabricatorWorkerYieldException) {
$this->log(pht('Task %s yielded.', $id)); $this->log(pht('Task %s yielded.', $id));
} else { } else {

View file

@ -107,6 +107,11 @@ final class PHUIDiffInlineCommentDetailView
break; break;
} }
$is_synthetic = false;
if ($inline->getSyntheticAuthor()) {
$is_synthetic = true;
}
$metadata = array( $metadata = array(
'id' => $inline->getID(), 'id' => $inline->getID(),
'phid' => $inline->getPHID(), 'phid' => $inline->getPHID(),
@ -120,6 +125,7 @@ final class PHUIDiffInlineCommentDetailView
'isDraft' => $inline->isDraft(), 'isDraft' => $inline->isDraft(),
'isFixed' => $is_fixed, 'isFixed' => $is_fixed,
'isGhost' => $inline->getIsGhost(), 'isGhost' => $inline->getIsGhost(),
'isSynthetic' => $is_synthetic,
); );
$sigil = 'differential-inline-comment'; $sigil = 'differential-inline-comment';
@ -136,11 +142,6 @@ final class PHUIDiffInlineCommentDetailView
$links = array(); $links = array();
$is_synthetic = false;
if ($inline->getSyntheticAuthor()) {
$is_synthetic = true;
}
$draft_text = null; $draft_text = null;
if (!$is_synthetic) { if (!$is_synthetic) {
// This display is controlled by CSS // This display is controlled by CSS

View file

@ -248,7 +248,7 @@ final class AphrontDialogView
'a', 'a',
array( array(
'href' => $this->cancelURI, 'href' => $this->cancelURI,
'class' => 'button grey', 'class' => 'button button-grey',
'name' => '__cancel__', 'name' => '__cancel__',
'sigil' => 'jx-workflow-button', 'sigil' => 'jx-workflow-button',
'meta' => $meta, 'meta' => $meta,

View file

@ -324,7 +324,8 @@ final class AphrontFormPolicyControl extends AphrontFormControl {
javelin_tag( javelin_tag(
'a', 'a',
array( array(
'class' => 'grey button dropdown has-icon has-text policy-control', 'class' => 'button button-grey dropdown has-icon has-text '.
'policy-control',
'href' => '#', 'href' => '#',
'mustcapture' => true, 'mustcapture' => true,
'sigil' => 'policy-control', 'sigil' => 'policy-control',

View file

@ -30,7 +30,7 @@ final class PHUIFormIconSetControl
$classes = array(); $classes = array();
$classes[] = 'button'; $classes[] = 'button';
$classes[] = 'grey'; $classes[] = 'button-grey';
if ($is_disabled) { if ($is_disabled) {
$classes[] = 'disabled'; $classes[] = 'disabled';

View file

@ -44,7 +44,7 @@ final class AphrontListFilterView extends AphrontView {
$hide_action = javelin_tag( $hide_action = javelin_tag(
'a', 'a',
array( array(
'class' => 'button grey', 'class' => 'button button-grey',
'sigil' => 'reveal-content', 'sigil' => 'reveal-content',
'id' => $hide_action_id, 'id' => $hide_action_id,
'href' => $this->showHideHref, 'href' => $this->showHideHref,
@ -65,7 +65,7 @@ final class AphrontListFilterView extends AphrontView {
$show_action = javelin_tag( $show_action = javelin_tag(
'a', 'a',
array( array(
'class' => 'button grey', 'class' => 'button button-grey',
'sigil' => 'reveal-content', 'sigil' => 'reveal-content',
'style' => 'display: none;', 'style' => 'display: none;',
'href' => '#', 'href' => '#',

View file

@ -4,6 +4,7 @@ final class PHUIButtonView extends AphrontTagView {
const GREEN = 'green'; const GREEN = 'green';
const GREY = 'grey'; const GREY = 'grey';
const BLUE = 'blue';
const DISABLED = 'disabled'; const DISABLED = 'disabled';
const SMALL = 'small'; const SMALL = 'small';
@ -159,7 +160,7 @@ final class PHUIButtonView extends AphrontTagView {
$classes[] = 'button'; $classes[] = 'button';
if ($this->color) { if ($this->color) {
$classes[] = $this->color; $classes[] = 'button-'.$this->color;
} }
if ($this->size) { if ($this->size) {
@ -188,10 +189,10 @@ final class PHUIButtonView extends AphrontTagView {
switch ($this->getButtonType()) { switch ($this->getButtonType()) {
case self::BUTTONTYPE_DEFAULT: case self::BUTTONTYPE_DEFAULT:
// Nothing special for default buttons. $classes[] = 'phui-button-default';
break; break;
case self::BUTTONTYPE_SIMPLE: case self::BUTTONTYPE_SIMPLE:
$classes[] = 'simple'; $classes[] = 'phui-button-simple';
break; break;
} }

View file

@ -21,7 +21,6 @@ final class PHUIHeaderView extends AphrontTagView {
private $policyObject; private $policyObject;
private $epoch; private $epoch;
private $actionItems = array(); private $actionItems = array();
private $badges = array();
private $href; private $href;
private $actionList; private $actionList;
private $actionListID; private $actionListID;
@ -46,11 +45,6 @@ final class PHUIHeaderView extends AphrontTagView {
return $this; return $this;
} }
public function addBadge(PHUIBadgeMiniView $badge) {
$this->badges[] = $badge;
return $this;
}
public function setImage($uri) { public function setImage($uri) {
$this->image = $uri; $this->image = $uri;
return $this; return $this;
@ -341,21 +335,13 @@ final class PHUIHeaderView extends AphrontTagView {
$header_content, $header_content,
)); ));
if ($this->subheader || $this->badges) { if ($this->subheader) {
$badges = null;
if ($this->badges) {
$badges = new PHUIBadgeBoxView();
$badges->addItems($this->badges);
$badges->setCollapsed(true);
}
$left[] = phutil_tag( $left[] = phutil_tag(
'div', 'div',
array( array(
'class' => 'phui-header-subheader', 'class' => 'phui-header-subheader',
), ),
array( array(
$badges,
$this->subheader, $this->subheader,
)); ));
} }

View file

@ -173,7 +173,7 @@ final class PHUIHovercardView extends AphrontTagView {
foreach ($this->actions as $action) { foreach ($this->actions as $action) {
$options = array( $options = array(
'class' => 'button grey', 'class' => 'button button-grey',
'href' => $action['uri'], 'href' => $action['uri'],
); );

View file

@ -28,6 +28,8 @@ final class PHUITagView extends AphrontTagView {
const COLOR_OBJECT = 'object'; const COLOR_OBJECT = 'object';
const COLOR_PERSON = 'person'; const COLOR_PERSON = 'person';
const BORDER_NONE = 'border-none';
private $type; private $type;
private $href; private $href;
private $name; private $name;
@ -40,6 +42,7 @@ final class PHUITagView extends AphrontTagView {
private $icon; private $icon;
private $shade; private $shade;
private $slimShady; private $slimShady;
private $border;
public function setType($type) { public function setType($type) {
$this->type = $type; $this->type = $type;
@ -104,6 +107,11 @@ final class PHUITagView extends AphrontTagView {
return $this; return $this;
} }
public function setBorder($border) {
$this->border = $border;
return $this;
}
public function setIcon($icon) { public function setIcon($icon) {
$this->icon = $icon; $this->icon = $icon;
return $this; return $this;
@ -142,6 +150,10 @@ final class PHUITagView extends AphrontTagView {
$classes[] = 'phui-tag-icon-view'; $classes[] = 'phui-tag-icon-view';
} }
if ($this->border) {
$classes[] = 'phui-tag-'.$this->border;
}
if ($this->phid) { if ($this->phid) {
Javelin::initBehavior('phui-hovercards'); Javelin::initBehavior('phui-hovercards');

View file

@ -3,12 +3,12 @@
*/ */
.dark-console { .dark-console {
background: #444444; background: #444444;
color: #eeeeee; color: #eeeeee;
width: 100%; width: 100%;
font-family: "Verdana"; font-family: "Verdana";
font-size: 11px; font-size: 11px;
position: relative; position: relative;
} }
.dark-console a { .dark-console a {
@ -74,6 +74,7 @@
.dark-console-requests a.dark-console-request:hover, .dark-console-requests a.dark-console-request:hover,
.dark-console-tabs a.dark-console-tab:hover { .dark-console-tabs a.dark-console-tab:hover {
background: #1188cc; background: #1188cc;
text-decoration: none;
} }
.dark-console-tabs a.dark-console-tab { .dark-console-tabs a.dark-console-tab {
@ -107,6 +108,12 @@
.dark-console .aphront-table-view td { .dark-console .aphront-table-view td {
font-size: 11px; font-size: 11px;
color: #eee;
}
.dark-console .aphront-table-view tr:hover,
.dark-console .aphront-table-view tr.alt:hover {
background: #333;
} }
.dark-console .aphront-table-view td.header { .dark-console .aphront-table-view td.header {

View file

@ -24,7 +24,6 @@
.aphront-table-notice { .aphront-table-notice {
padding: 12px 16px; padding: 12px 16px;
font-size: {$normalfontsize};
color: {$darkbluetext}; color: {$darkbluetext};
border-bottom: 1px solid {$thinblueborder}; border-bottom: 1px solid {$thinblueborder};
} }
@ -37,9 +36,16 @@
background: {$lightgreybackground}; background: {$lightgreybackground};
} }
.device-desktop .aphront-table-view tr:hover {
background: {$bluebackground};
}
.device-desktop .aphront-table-view tr.no-data:hover {
background: inherit;
}
.aphront-table-view th { .aphront-table-view th {
font-weight: bold; font-weight: bold;
font-size: {$normalfontsize};
white-space: nowrap; white-space: nowrap;
color: {$bluetext}; color: {$bluetext};
text-shadow: 0 1px 0 white; text-shadow: 0 1px 0 white;
@ -78,6 +84,7 @@ th.aphront-table-view-sortable-selected {
.aphront-table-view td { .aphront-table-view td {
white-space: nowrap; white-space: nowrap;
vertical-align: middle; vertical-align: middle;
color: {$darkbluetext};
} }
.aphront-table-down-sort { .aphront-table-down-sort {
@ -115,12 +122,10 @@ th.aphront-table-view-sortable-selected {
.aphront-table-view th { .aphront-table-view th {
padding: 8px 10px; padding: 8px 10px;
font-size: {$normalfontsize};
} }
.aphront-table-view td { .aphront-table-view td {
padding: 8px 10px; padding: 8px 10px;
font-size: {$smallerfontsize};
} }
.device-tablet .aphront-table-view td, .device-tablet .aphront-table-view td,
@ -128,22 +133,12 @@ th.aphront-table-view-sortable-selected {
padding: 6px; padding: 6px;
} }
.device-tablet .aphront-table-view td + td,
.device-phone .aphront-table-view td + td {
padding-left: 0px;
}
.device-tablet .aphront-table-view th, .device-tablet .aphront-table-view th,
.device-phone .aphront-table-view th { .device-phone .aphront-table-view th {
padding: 6px; padding: 6px;
overflow: hidden; overflow: hidden;
} }
.device-tablet .aphront-table-view th + th,
.device-phone .aphront-table-view th + th {
padding-left: 0px;
}
.aphront-table-view td.sorted-column { .aphront-table-view td.sorted-column {
background: {$lightbluebackground}; background: {$lightbluebackground};
} }
@ -196,7 +191,7 @@ th.aphront-table-view-sortable-selected {
} }
.aphront-table-view td.wrap { .aphront-table-view td.wrap {
white-space: normal; white-space: normal;
} }
.aphront-table-view td.prewrap { .aphront-table-view td.prewrap {
@ -282,7 +277,6 @@ span.single-display-line-content {
text-align: center; text-align: center;
color: {$lightgreytext}; color: {$lightgreytext};
font-style: italic; font-style: italic;
font-size: {$normalfontsize};
} }
.aphront-table-view td.thumb img { .aphront-table-view td.thumb img {

View file

@ -413,3 +413,7 @@ tr.differential-inline-loading {
.diff-banner-has-unsubmitted { .diff-banner-has-unsubmitted {
background: {$sh-yellowbackground}; background: {$sh-yellowbackground};
} }
.diff-banner-buttons {
float: right;
}

View file

@ -2,19 +2,13 @@
* @provides diffusion-history-css * @provides diffusion-history-css
*/ */
/* - List Styles ------------------------------------------------------------*/
.diffusion-history-list .phui-oi-link { .diffusion-history-list .phui-oi-link {
color: #000; color: #000;
font-size: {$biggerfontsize}; font-size: {$biggerfontsize};
} }
.diffusion-history-list .phui-oi-attribute .phui-tag-core {
border-color: transparent;
}
.diffusion-history-list .phui-oi-attribute .phui-tag-indigo a {
color: {$indigo};
}
.diffusion-history-message { .diffusion-history-message {
background-color: {$bluebackground}; background-color: {$bluebackground};
padding: 16px; padding: 16px;
@ -36,7 +30,53 @@
margin-left: 4px; margin-left: 4px;
} }
a.phui-tag-view:hover.diffusion-differential-tag .phui-tag-core {
border-color: transparent; /* - Phone Style ------------------------------------------------------------*/
text-decoration: underline;
.device-phone.diffusion-history-view .phui-two-column-view
.phui-two-column-footer .phui-object-box {
border-color: {$thinblueborder};
}
.device-phone.diffusion-history-view .phui-two-column-view
.phui-two-column-footer .phui-header-view {
text-align: center;
}
.device-phone.diffusion-history-view .phui-two-column-content {
padding: 0;
margin: 0 -4px;
}
.device-phone.diffusion-history-view .phui-oi-attribute-spacer {
display: none;
}
.device-phone.diffusion-history-view .phui-oi-attribute {
display: block;
margin: 0 0 4px 0;
}
.device-phone.diffusion-history-view .phui-oi-image {
height: 36px;
width: 36px;
margin-top: 10px;
}
.device-phone.diffusion-history-view .phui-oi-with-image .phui-oi-content-box {
margin-left: 44px;
}
.device-phone.diffusion-history-view .phui-oi-col2.phui-oi-side-column {
padding-bottom: 10px;
}
.device-phone.diffusion-history-view .diffusion-history-list .button.has-icon
.phui-button-text {
margin: 0;
}
.device-phone.diffusion-history-view .diffusion-history-list .button.has-icon
.phui-icon-view {
display: none;
} }

View file

@ -14,6 +14,10 @@
padding: 24px 32px; padding: 24px 32px;
} }
.device .diffusion-readme-view .phui-document-container {
padding: 8px 16px;
}
.diffusion-readme-view .phabricator-remarkup-toc { .diffusion-readme-view .phabricator-remarkup-toc {
display: none; display: none;
} }

View file

@ -122,17 +122,38 @@
.phabricator-remarkup .remarkup-list-with-checkmarks .remarkup-checked-item, .phabricator-remarkup .remarkup-list-with-checkmarks .remarkup-checked-item,
.phabricator-remarkup .remarkup-list-with-checkmarks .remarkup-unchecked-item { .phabricator-remarkup .remarkup-list-with-checkmarks .remarkup-unchecked-item {
list-style: none; list-style: none;
margin-left: -18px; margin-left: -20px;
position: relative;
padding-left: 22px;
} }
.phabricator-remarkup .remarkup-list-with-checkmarks input { .phabricator-remarkup .remarkup-list-with-checkmarks input {
margin-right: 4px; display: none;
opacity: 1; }
.phabricator-remarkup .remarkup-list-with-checkmarks
.remarkup-list-item::before {
height: 16px;
width: 16px;
background-size: 16px;
display: inline-block;
content: '';
position: absolute;
top: 3px;
left: 0;
}
.remarkup-list-with-checkmarks .remarkup-checked-item::before {
background-image: url(rsrc/image/controls/checkbox-checked.png);
}
.remarkup-list-with-checkmarks .remarkup-unchecked-item::before {
background-image: url(rsrc/image/controls/checkbox-unchecked.png);
} }
.phabricator-remarkup .remarkup-list-with-checkmarks .remarkup-checked-item { .phabricator-remarkup .remarkup-list-with-checkmarks .remarkup-checked-item {
text-decoration: line-through;
color: {$lightgreytext}; color: {$lightgreytext};
text-decoration: line-through;
} }
.phabricator-remarkup ul.remarkup-list ol.remarkup-list, .phabricator-remarkup ul.remarkup-list ol.remarkup-list,

View file

@ -6,55 +6,55 @@
/* - Basic -------------------------------------------------------------------*/ /* - Basic -------------------------------------------------------------------*/
button.simple, button.phui-button-simple,
input[type="submit"].simple, input[type="submit"].phui-button-simple,
a.simple, a.phui-button-simple,
a.simple:visited { a.phui-button-simple:visited {
background: #fff; background: #fff;
color: {$bluetext}; color: {$bluetext};
border: 1px solid {$lightblueborder}; border: 1px solid {$lightblueborder};
} }
button.simple .phui-icon-view, button.phui-button-simple .phui-icon-view,
input[type="submit"].simple .phui-icon-view, input[type="submit"].phui-button-simple .phui-icon-view,
a.simple .phui-icon-view, a.phui-button-simple .phui-icon-view,
a.simple:visited .phui-icon-view { a.phui-button-simple:visited .phui-icon-view {
color: {$lightbluetext}; color: {$lightbluetext};
} }
a.button.simple:hover, a.button.phui-button-simple:hover,
button.simple:hover { button.phui-button-simple:hover {
border-color: {$blueborder}; border-color: {$blueborder};
background-image: none; background-image: none;
background-color: #fff; background-color: #fff;
transition: 0s; transition: 0s;
} }
a.simple.current { a.phui-button-simple.current {
background: {$lightblue}; background: {$lightblue};
} }
/* - Red --------------------------------------------------------------------*/ /* - Red --------------------------------------------------------------------*/
button.simple.red, button.phui-button-simple.button-red,
input[type="submit"].simple.red, input[type="submit"].phui-button-simple.button-red,
a.simple.red, a.phui-button-simple.button-red,
a.simple.red:visited { a.phui-button-simple.button-red:visited {
background: {$sh-redbackground}; background: {$sh-redbackground};
color: {$redtext}; color: {$redtext};
border: 1px solid {$sh-redborder}; border: 1px solid {$sh-redborder};
} }
button.simple.red .phui-icon-view, button.phui-button-simple.button-red .phui-icon-view,
input[type="submit"].simple.red .phui-icon-view, input[type="submit"].phui-button-simple.button-red .phui-icon-view,
a.simple.red .phui-icon-view, a.phui-button-simple.button-red .phui-icon-view,
a.simple.red:visited .phui-icon-view { a.phui-button-simple.button-red:visited .phui-icon-view {
color: {$redtext}; color: {$redtext};
} }
a.button.simple.red:hover, a.button.phui-button-simple.button-red:hover,
button.simple.red:hover { button.phui-button-simple.button-red:hover {
border-color: {$sh-redtext}; border-color: {$sh-redtext};
background-image: none; background-image: none;
background-color: {$sh-redbackground}; background-color: {$sh-redbackground};
@ -63,24 +63,24 @@ button.simple.red:hover {
/* - Green ------------------------------------------------------------------*/ /* - Green ------------------------------------------------------------------*/
button.simple.green, button.phui-button-simple.button-green,
input[type="submit"].simple.green, input[type="submit"].phui-button-simple.button-green,
a.simple.green, a.phui-button-simple.button-green,
a.simple.green:visited { a.phui-button-simple.button-green:visited {
background: {$sh-greenbackground}; background: {$sh-greenbackground};
color: {$greentext}; color: {$greentext};
border: 1px solid {$sh-greenborder}; border: 1px solid {$sh-greenborder};
} }
button.simple.green .phui-icon-view, button.phui-button-simple.button-green .phui-icon-view,
input[type="submit"].simple.green .phui-icon-view, input[type="submit"].phui-button-simple.button-green .phui-icon-view,
a.simple.green .phui-icon-view, a.phui-button-simple.button-green .phui-icon-view,
a.simple.green:visited .phui-icon-view { a.phui-button-simple.button-green:visited .phui-icon-view {
color: {$greentext}; color: {$greentext};
} }
a.button.simple.green:hover, a.button.phui-button-simple.button-green:hover,
button.simple.green:hover { button.phui-button-simple.button-green:hover {
border-color: {$sh-greentext}; border-color: {$sh-greentext};
background-image: none; background-image: none;
background-color: {$sh-greenbackground}; background-color: {$sh-greenbackground};
@ -89,24 +89,24 @@ button.simple.green:hover {
/* - Yellow -----------------------------------------------------------------*/ /* - Yellow -----------------------------------------------------------------*/
button.simple.yellow, button.phui-button-simple.button-yellow,
input[type="submit"].simple.yellow, input[type="submit"].phui-button-simple.button-yellow,
a.simple.yellow, a.phui-button-simple.button-yellow,
a.simple.yellow:visited { a.phui-button-simple.button-yellow:visited {
background-color: {$sh-yellowbackground}; background-color: {$sh-yellowbackground};
color: {$sh-yellowtext}; color: {$sh-yellowtext};
border: 1px solid {$sh-yellowborder}; border: 1px solid {$sh-yellowborder};
} }
button.simple.yellow .phui-icon-view, button.phui-button-simple.button-yellow .phui-icon-view,
input[type="submit"].simple.yellow .phui-icon-view, input[type="submit"].phui-button-simple.button-yellow .phui-icon-view,
a.simple.yellow .phui-icon-view, a.phui-button-simple.button-yellow .phui-icon-view,
a.simple.yellow:visited .phui-icon-view { a.phui-button-simple.button-yellow:visited .phui-icon-view {
color: {$sh-yellowicon}; color: {$sh-yellowicon};
} }
a.button.simple.yellow:hover, a.button.phui-button-simple.button-yellow:hover,
button.simple.yellow:hover { button.phui-button-simple.button-yellow:hover {
border-color: {$sh-yellowtext}; border-color: {$sh-yellowtext};
background-image: none; background-image: none;
background-color: {$sh-yellowbackground}; background-color: {$sh-yellowbackground};
@ -116,16 +116,16 @@ button.simple.yellow:hover {
/* - Misc -------------------------------------------------------------------*/ /* - Misc -------------------------------------------------------------------*/
a.button.simple .phui-icon-view { a.button.phui-button-simple .phui-icon-view {
border: none; border: none;
} }
a.button.simple.phuix-dropdown-open { a.button.phui-button-simple.phuix-dropdown-open {
background-color: #fff; background-color: #fff;
color: {$blue}; color: {$blue};
box-shadow: none; box-shadow: none;
} }
a.button.simple.phuix-dropdown-open:hover .phui-icon-view { a.button.phui-button-simple.phuix-dropdown-open:hover .phui-icon-view {
color: {$blue}; color: {$blue};
} }

View file

@ -49,13 +49,13 @@ input[type="submit"] {
button .phui-icon-view, button .phui-icon-view,
a.button .phui-icon-view, a.button .phui-icon-view,
button.green .phui-icon-view, button.button-green .phui-icon-view,
a.button.green .phui-icon-view { a.button.button-green .phui-icon-view {
color: white; color: white;
} }
button.grey .phui-icon-view, button.button-grey .phui-icon-view,
a.button.grey .phui-icon-view { a.button.button-grey .phui-icon-view {
color: {$darkbluetext}; color: {$darkbluetext};
} }
@ -68,18 +68,18 @@ a.icon:visited {
text-indent: 29px; text-indent: 29px;
} }
button.green, button.button-green,
a.green.button, a.button-green.button,
a.green.button:visited { a.button-green.button:visited {
background-color: {$green}; background-color: {$green};
border-color: {$green}; border-color: {$green};
background-image: linear-gradient(to bottom, #23BB5B, #139543); background-image: linear-gradient(to bottom, #23BB5B, #139543);
} }
button.grey, button.button-grey,
input[type="submit"].grey, input[type="submit"].button-grey,
a.grey, a.button-grey,
a.grey:visited { a.button-grey:visited {
background-color: #F7F7F9; background-color: #F7F7F9;
background-image: linear-gradient(to bottom, #ffffff, #f1f0f1); background-image: linear-gradient(to bottom, #ffffff, #f1f0f1);
border: 1px solid rgba({$alphablue}, 0.3); border: 1px solid rgba({$alphablue}, 0.3);
@ -108,15 +108,15 @@ button:hover {
transition: 0.1s; transition: 0.1s;
} }
a.button.grey:hover, a.button.button-grey:hover,
button.grey:hover { button.button-grey:hover {
background-image: linear-gradient(to bottom, #ffffff, #eeebec); background-image: linear-gradient(to bottom, #ffffff, #eeebec);
border-color: rgba({$alphablue}, 0.4); border-color: rgba({$alphablue}, 0.4);
transition: 0.1s; transition: 0.1s;
} }
a.button.green:hover, a.button.button-green:hover,
button.green:hover { button.button-green:hover {
border-color: #127336; border-color: #127336;
background-color: #0DAD48; background-color: #0DAD48;
background-image: linear-gradient(to bottom, #23BB5B, #178841); background-image: linear-gradient(to bottom, #23BB5B, #178841);
@ -244,7 +244,7 @@ a.policy-control .phui-button-text {
margin-top: 6px; margin-top: 6px;
} }
.grey.dropdown .caret { .button-grey.dropdown .caret {
border-top-color: #000; border-top-color: #000;
} }

View file

@ -426,7 +426,7 @@ ul.phui-oi-icons {
} }
.phui-oi.phui-oi-disabled .phui-oi-attribute, .phui-oi.phui-oi-disabled .phui-oi-attribute,
.phui-oi.phui-oi-disabled .phui-oi-attribute .phui-icon-view { .phui-oi.phui-oi-disabled .phui-oi-attribute > .phui-icon-view {
color: {$lightgreytext}; color: {$lightgreytext};
} }

View file

@ -64,21 +64,13 @@ body.printable {
.phui-document-view-pro .phui-document-toc { .phui-document-view-pro .phui-document-toc {
position: absolute; position: absolute;
top: 34px; top: 34px;
left: -36px; left: -44px;
} }
.printable .phui-document-view-pro a.phui-document-toc { .printable .phui-document-view-pro a.phui-document-toc {
display: none; display: none;
} }
a.button.phui-document-toc {
display: inline-block;
height: 16px;
width: 20px;
padding-left: 8px;
padding-right: 8px;
}
.phui-document-view-pro .phui-document-toc-list { .phui-document-view-pro .phui-document-toc-list {
margin: 8px; margin: 8px;
border: 1px solid {$lightgreyborder}; border: 1px solid {$lightgreyborder};
@ -105,12 +97,7 @@ a.button.phui-document-toc {
} }
.phui-document-toc-open .phui-document-toc { .phui-document-toc-open .phui-document-toc {
background-color: {$blue}; border-color: {$blueborder};
border-color: {$blue};
}
.phui-document-toc-open .phui-document-toc .phui-icon-view {
color: #fff;
} }
.phui-document-view-pro .phui-document-toc-content { .phui-document-view-pro .phui-document-toc-content {

View file

@ -120,7 +120,7 @@ body .phui-header-shell.phui-bleed-header
.device-phone .phui-header-action-link .phui-button-text { .device-phone .phui-header-action-link .phui-button-text {
visibility: hidden; visibility: hidden;
width: 0; width: 0;
margin-left: 4px; margin-left: 8px;
} }
.device-phone .phui-header-action-link.button .phui-icon-view { .device-phone .phui-header-action-link.button .phui-icon-view {
@ -307,14 +307,6 @@ body .phui-header-shell.phui-bleed-header
text-decoration: underline; text-decoration: underline;
} }
.phui-header-subheader .phui-badge-flex-view {
display: inline;
margin-right: 4px;
}
.phui-header-subheader .phui-badge-flex-view:after {
display: inline;
}
/*** Profile Header ***********************************************************/ /*** Profile Header ***********************************************************/

View file

@ -6,3 +6,9 @@
clear: both; clear: both;
text-align: center; text-align: center;
} }
.phui-pager-view a.button.current,
.phui-pager-view a.button.current:hover {
border-color: {$sh-orangetext};
color: {$sh-orangetext};
}

View file

@ -154,6 +154,15 @@ a.phui-tag-view:hover
margin: 0 4px 2px 0; margin: 0 4px 2px 0;
} }
.phui-tag-view.phui-tag-border-none .phui-tag-core {
border-color: transparent;
}
a.phui-tag-view:hover.phui-tag-border-none .phui-tag-core {
border-color: transparent !important;
text-decoration: underline;
}
/* - Shaded Tags --------------------------------------------------------------- /* - Shaded Tags ---------------------------------------------------------------

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

View file

@ -403,6 +403,8 @@ JX.install('DiffChangeset', {
block.items.push(rows[ii]); block.items.push(rows[ii]);
} }
var last_inline = null;
var last_inline_item = null;
for (ii = 0; ii < blocks.length; ii++) { for (ii = 0; ii < blocks.length; ii++) {
block = blocks[ii]; block = blocks[ii];
@ -422,16 +424,43 @@ JX.install('DiffChangeset', {
for (var jj = 0; jj < block.items.length; jj++) { for (var jj = 0; jj < block.items.length; jj++) {
var inline = this.getInlineForRow(block.items[jj]); var inline = this.getInlineForRow(block.items[jj]);
items.push({ // When comments are being edited, they have a hidden row with
// the actual comment and then a visible row with the editor.
// In this case, we only want to generate one item, but it should
// use the editor as a scroll target. To accomplish this, check if
// this row has the same inline as the previous row. If so, update
// the last item to use this row's nodes.
if (inline === last_inline) {
last_inline_item.nodes.begin = block.items[jj];
last_inline_item.nodes.end = block.items[jj];
continue;
} else {
last_inline = inline;
}
var is_saved = (!inline.isDraft() && !inline.isEditing());
last_inline_item = {
type: block.type, type: block.type,
changeset: this, changeset: this,
target: inline, target: inline,
hidden: inline.isHidden(), hidden: inline.isHidden(),
deleted: !inline.getID() && !inline.isEditing(),
nodes: { nodes: {
begin: block.items[jj], begin: block.items[jj],
end: block.items[jj] end: block.items[jj]
},
attributes: {
unsaved: inline.isEditing(),
unsubmitted: inline.isDraft(),
undone: (is_saved && !inline.isDone()),
done: (is_saved && inline.isDone())
} }
}); };
items.push(last_inline_item);
} }
} }
} }

View file

@ -1,6 +1,7 @@
/** /**
* @provides phabricator-diff-changeset-list * @provides phabricator-diff-changeset-list
* @requires javelin-install * @requires javelin-install
* phuix-button-view
* @javelin * @javelin
*/ */
@ -111,6 +112,10 @@ JX.install('DiffChangesetList', {
_rangeTarget: null, _rangeTarget: null,
_bannerNode: null, _bannerNode: null,
_unsavedButton: null,
_unsubmittedButton: null,
_doneButton: null,
_doneMode: null,
sleep: function() { sleep: function() {
this._asleep = true; this._asleep = true;
@ -258,7 +263,13 @@ JX.install('DiffChangesetList', {
_installJumpKey: function(key, label, delta, filter, show_hidden) { _installJumpKey: function(key, label, delta, filter, show_hidden) {
filter = filter || null; filter = filter || null;
var handler = JX.bind(this, this._onjumpkey, delta, filter, show_hidden);
var options = {
filter: filter,
hidden: show_hidden
};
var handler = JX.bind(this, this._onjumpkey, delta, options);
return this._installKey(key, label, handler); return this._installKey(key, label, handler);
}, },
@ -440,9 +451,14 @@ JX.install('DiffChangesetList', {
.show(); .show();
}, },
_onjumpkey: function(delta, filter, show_hidden, manager) { _onjumpkey: function(delta, options) {
var state = this._getSelectionState(); var state = this._getSelectionState();
var filter = options.filter || null;
var hidden = options.hidden || false;
var wrap = options.wrap || false;
var attribute = options.attribute || null;
var cursor = state.cursor; var cursor = state.cursor;
var items = state.items; var items = state.items;
@ -452,6 +468,7 @@ JX.install('DiffChangesetList', {
return; return;
} }
var did_wrap = false;
while (true) { while (true) {
if (cursor === null) { if (cursor === null) {
cursor = 0; cursor = 0;
@ -464,9 +481,22 @@ JX.install('DiffChangesetList', {
return; return;
} }
// If we've gone forward off the end of the list, bail out. // If we've gone forward off the end of the list, figure out where we
// should end up.
if (cursor >= items.length) { if (cursor >= items.length) {
return; if (!wrap) {
// If we aren't wrapping around, we're done.
return;
}
if (did_wrap) {
// If we're already wrapped around, we're done.
return;
}
// Otherwise, wrap the cursor back to the top.
cursor = 0;
did_wrap = true;
} }
// If we're selecting things of a particular type (like only files) // If we're selecting things of a particular type (like only files)
@ -479,17 +509,31 @@ JX.install('DiffChangesetList', {
// If the item is hidden, don't select it when iterating with jump // If the item is hidden, don't select it when iterating with jump
// keys. It can still potentially be selected in other ways. // keys. It can still potentially be selected in other ways.
if (!show_hidden) { if (!hidden) {
if (items[cursor].hidden) { if (items[cursor].hidden) {
continue; continue;
} }
} }
// If the item has been deleted, don't select it when iterating. The
// cursor may remain on it until it is removed.
if (items[cursor].deleted) {
continue;
}
// If we're selecting things with a particular attribute, like
// "unsaved", skip items without the attribute.
if (attribute !== null) {
if (!(items[cursor].attributes || {})[attribute]) {
continue;
}
}
// Otherwise, we've found a valid item to select. // Otherwise, we've found a valid item to select.
break; break;
} }
this._setSelectionState(items[cursor], manager); this._setSelectionState(items[cursor], true);
}, },
_getSelectionState: function() { _getSelectionState: function() {
@ -512,24 +556,34 @@ JX.install('DiffChangesetList', {
}; };
}, },
_setSelectionState: function(item, manager) { _setSelectionState: function(item, scroll) {
this._cursorItem = item; this._cursorItem = item;
this._redrawSelection(manager, true); this._redrawSelection(scroll);
return this; return this;
}, },
_redrawSelection: function(manager, scroll) { _redrawSelection: function(scroll) {
var cursor = this._cursorItem; var cursor = this._cursorItem;
if (!cursor) { if (!cursor) {
this.setFocus(null); this.setFocus(null);
return; return;
} }
// If this item has been removed from the document (for example: create
// a new empty comment, then use the "Unsaved" button to select it, then
// cancel it), we can still keep the cursor here but do not want to show
// a selection reticle over an invisible node.
if (cursor.deleted) {
this.setFocus(null);
return;
}
this.setFocus(cursor.nodes.begin, cursor.nodes.end); this.setFocus(cursor.nodes.begin, cursor.nodes.end);
if (manager && scroll) { if (scroll) {
manager.scrollTo(cursor.nodes.begin); var pos = JX.$V(cursor.nodes.begin);
JX.DOM.scrollToPosition(0, pos.y - 60);
} }
return this; return this;
@ -546,7 +600,7 @@ JX.install('DiffChangesetList', {
var state = this._getSelectionState(); var state = this._getSelectionState();
if (state.cursor !== null) { if (state.cursor !== null) {
this._setSelectionState(state.items[state.cursor]); this._setSelectionState(state.items[state.cursor], false);
} }
}, },
@ -858,7 +912,7 @@ JX.install('DiffChangesetList', {
if (selection.cursor !== null) { if (selection.cursor !== null) {
item = selection.items[selection.cursor]; item = selection.items[selection.cursor];
if (item.target === inline) { if (item.target === inline) {
this._setSelectionState(null); this._setSelectionState(null, false);
return; return;
} }
} }
@ -870,7 +924,7 @@ JX.install('DiffChangesetList', {
for (var ii = 0; ii < items.length; ii++) { for (var ii = 0; ii < items.length; ii++) {
item = items[ii]; item = items[ii];
if (item.target === inline) { if (item.target === inline) {
this._setSelectionState(item); this._setSelectionState(item, false);
} }
} }
}, },
@ -1287,7 +1341,7 @@ JX.install('DiffChangesetList', {
var unsaved = []; var unsaved = [];
var unsubmitted = []; var unsubmitted = [];
var undone = []; var undone = [];
var all = []; var done = [];
for (var ii = 0; ii < changesets.length; ii++) { for (var ii = 0; ii < changesets.length; ii++) {
var inlines = changesets[ii].getInlines(); var inlines = changesets[ii].getInlines();
@ -1298,14 +1352,22 @@ JX.install('DiffChangesetList', {
continue; continue;
} }
all.push(inline); if (inline.isSynthetic()) {
continue;
}
if (inline.isEditing()) { if (inline.isEditing()) {
unsaved.push(inline); unsaved.push(inline);
} else if (!inline.getID()) {
// These are new comments which have been cancelled, and do not
// count as anything.
continue;
} else if (inline.isDraft()) { } else if (inline.isDraft()) {
unsubmitted.push(inline); unsubmitted.push(inline);
} else if (!inline.isDone()) { } else if (!inline.isDone()) {
undone.push(inline); undone.push(inline);
} else {
done.push(inline);
} }
} }
} }
@ -1320,14 +1382,173 @@ JX.install('DiffChangesetList', {
'diff-banner-has-unsubmitted', 'diff-banner-has-unsubmitted',
!!unsubmitted.length); !!unsubmitted.length);
var pht = this.getTranslations();
var unsaved_button = this._getUnsavedButton();
var unsubmitted_button = this._getUnsubmittedButton();
var done_button = this._getDoneButton();
if (unsaved.length) {
unsaved_button.setText(unsaved.length + ' ' + pht('Unsaved'));
JX.DOM.show(unsaved_button.getNode());
} else {
JX.DOM.hide(unsaved_button.getNode());
}
if (unsubmitted.length) {
unsubmitted_button.setText(
unsubmitted.length + ' ' + pht('Unsubmitted'));
JX.DOM.show(unsubmitted_button.getNode());
} else {
JX.DOM.hide(unsubmitted_button.getNode());
}
if (done.length || undone.length) {
// If you haven't marked any comments as "Done", we just show text
// like "3 Comments". If you've marked at least one done, we show
// "1 / 3 Comments".
var done_text;
if (done.length) {
done_text = [
done.length,
' / ',
(done.length + undone.length),
' ',
pht('Comments')
];
} else {
done_text = [
undone.length,
' ',
pht('Comments')
];
}
done_button.setText(done_text);
JX.DOM.show(done_button.getNode());
// If any comments are not marked "Done", this cycles through the
// missing comments. Otherwise, it cycles through all the saved
// comments.
if (undone.length) {
this._doneMode = 'undone';
} else {
this._doneMode = 'done';
}
} else {
JX.DOM.hide(done_button.getNode());
}
var path_view = [icon, ' ', changeset.getDisplayPath()];
var buttons_attrs = {
className: 'diff-banner-buttons'
};
var buttons_list = [
unsaved_button.getNode(),
unsubmitted_button.getNode(),
done_button.getNode()
];
var buttons_view = JX.$N('div', buttons_attrs, buttons_list);
var icon = new JX.PHUIXIconView() var icon = new JX.PHUIXIconView()
.setIcon(changeset.getIcon()) .setIcon(changeset.getIcon())
.getNode(); .getNode();
JX.DOM.setContent(node, [icon, ' ', changeset.getDisplayPath()]); JX.DOM.setContent(node, [buttons_view, path_view]);
document.body.appendChild(node); document.body.appendChild(node);
}, },
_getUnsavedButton: function() {
if (!this._unsavedButton) {
var button = new JX.PHUIXButtonView()
.setIcon('fa-commenting-o')
.setButtonType(JX.PHUIXButtonView.BUTTONTYPE_SIMPLE);
var node = button.getNode();
var onunsaved = JX.bind(this, this._onunsavedclick);
JX.DOM.listen(node, 'click', null, onunsaved);
this._unsavedButton = button;
}
return this._unsavedButton;
},
_getUnsubmittedButton: function() {
if (!this._unsubmittedButton) {
var button = new JX.PHUIXButtonView()
.setIcon('fa-comment-o')
.setButtonType(JX.PHUIXButtonView.BUTTONTYPE_SIMPLE);
var node = button.getNode();
var onunsubmitted = JX.bind(this, this._onunsubmittedclick);
JX.DOM.listen(node, 'click', null, onunsubmitted);
this._unsubmittedButton = button;
}
return this._unsubmittedButton;
},
_getDoneButton: function() {
if (!this._doneButton) {
var button = new JX.PHUIXButtonView()
.setIcon('fa-comment')
.setButtonType(JX.PHUIXButtonView.BUTTONTYPE_SIMPLE);
var node = button.getNode();
var ondone = JX.bind(this, this._ondoneclick);
JX.DOM.listen(node, 'click', null, ondone);
this._doneButton = button;
}
return this._doneButton;
},
_onunsavedclick: function(e) {
e.kill();
var options = {
filter: 'comment',
wrap: true,
attribute: 'unsaved'
};
this._onjumpkey(1, options);
},
_onunsubmittedclick: function(e) {
e.kill();
var options = {
filter: 'comment',
wrap: true,
attribute: 'unsubmitted'
};
this._onjumpkey(1, options);
},
_ondoneclick: function(e) {
e.kill();
var options = {
filter: 'comment',
wrap: true,
attribute: this._doneMode
};
this._onjumpkey(1, options);
},
_getBannerNode: function() { _getBannerNode: function() {
if (!this._bannerNode) { if (!this._bannerNode) {
var attributes = { var attributes = {

View file

@ -34,6 +34,7 @@ JX.install('DiffInline', {
_isFixed: null, _isFixed: null,
_isEditing: false, _isEditing: false,
_isNew: false, _isNew: false,
_isSynthetic: false,
bindToRow: function(row) { bindToRow: function(row) {
this._row = row; this._row = row;
@ -71,6 +72,7 @@ JX.install('DiffInline', {
this._isDraft = data.isDraft; this._isDraft = data.isDraft;
this._isFixed = data.isFixed; this._isFixed = data.isFixed;
this._isGhost = data.isGhost; this._isGhost = data.isGhost;
this._isSynthetic = data.isSynthetic;
this._changesetID = data.changesetID; this._changesetID = data.changesetID;
this._isNew = false; this._isNew = false;
@ -97,6 +99,10 @@ JX.install('DiffInline', {
return this._isDeleted; return this._isDeleted;
}, },
isSynthetic: function() {
return this._isSynthetic;
},
bindToRange: function(data) { bindToRange: function(data) {
this._displaySide = data.displaySide; this._displaySide = data.displaySide;
this._number = parseInt(data.number, 10); this._number = parseInt(data.number, 10);

View file

@ -53,7 +53,7 @@ JX.behavior('diffusion-commit-graph', function(config) {
return (col * cell) + (cell / 2); return (col * cell) + (cell / 2);
}; };
var h = 32; var h = 34;
var w = cell * config.count; var w = cell * config.count;
var canvas = JX.$N('canvas', {width: w, height: h}); var canvas = JX.$N('canvas', {width: w, height: h});

View file

@ -137,7 +137,9 @@ JX.behavior('phabricator-object-selector', function(config) {
var select_object_button = JX.$N( var select_object_button = JX.$N(
'a', 'a',
{href: '#', sigil: 'object-attacher', className: 'button small grey'}, {href: '#',
sigil: 'object-attacher',
className: 'button small button-grey'},
attach ? 'Select' : 'Remove'); attach ? 'Select' : 'Remove');
var cells = [ var cells = [

View file

@ -35,10 +35,10 @@ JX.install('PHUIXButtonView', {
var node = this.getNode(); var node = this.getNode();
if (this._color) { if (this._color) {
JX.DOM.alterClass(node, this._color, false); JX.DOM.alterClass(node, 'button-' + this._color, false);
} }
this._color = color; this._color = color;
JX.DOM.alterClass(node, this._color, true); JX.DOM.alterClass(node, 'button-' + this._color, true);
return this; return this;
}, },
@ -50,13 +50,14 @@ JX.install('PHUIXButtonView', {
var node = this.getNode(); var node = this.getNode();
var is_simple = (this._buttonType == self.BUTTONTYPE_SIMPLE); var is_simple = (this._buttonType == self.BUTTONTYPE_SIMPLE);
JX.DOM.alterClass(node, 'simple', is_simple); JX.DOM.alterClass(node, 'phui-button-simple', is_simple);
return this; return this;
}, },
setText: function(text) { setText: function(text) {
JX.DOM.setContent(this._getTextNode(), text); JX.DOM.setContent(this._getTextNode(), text);
this._redraw();
return this; return this;
}, },