diff --git a/resources/celerity/map.php b/resources/celerity/map.php index e9cdb43737..c605de0c18 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -1,2192 +1,2192 @@ array( 'core.pkg.css' => '71e0a12a', 'core.pkg.js' => 'c7854cc5', 'darkconsole.pkg.js' => 'ca8671ce', 'differential.pkg.css' => '5a65a762', 'differential.pkg.js' => '322ea941', 'diffusion.pkg.css' => '3783278d', 'diffusion.pkg.js' => '7b51e80a', 'javelin.pkg.js' => '6d430a66', 'maniphest.pkg.css' => '6944ad50', 'maniphest.pkg.js' => '1e8f11af', 'rsrc/css/aphront/aphront-bars.css' => '231ac33c', 'rsrc/css/aphront/aphront-notes.css' => '6acadd3f', 'rsrc/css/aphront/calendar-view.css' => '166af03d', 'rsrc/css/aphront/context-bar.css' => '1c3b0529', 'rsrc/css/aphront/dark-console.css' => '6378ef3d', 'rsrc/css/aphront/dialog-view.css' => 'dd9db96c', 'rsrc/css/aphront/error-view.css' => '16cd9949', 'rsrc/css/aphront/lightbox-attachment.css' => '686f8885', 'rsrc/css/aphront/list-filter-view.css' => 'ef989c67', - 'rsrc/css/aphront/multi-column.css' => '05bbd016', + 'rsrc/css/aphront/multi-column.css' => '6f7573f0', 'rsrc/css/aphront/notification.css' => '6901121e', 'rsrc/css/aphront/pager-view.css' => '2e3539af', 'rsrc/css/aphront/panel-view.css' => '5846dfa2', 'rsrc/css/aphront/phabricator-nav-view.css' => 'd0d4a509', 'rsrc/css/aphront/request-failure-view.css' => 'da14df31', 'rsrc/css/aphront/table-view.css' => '92a719ca', 'rsrc/css/aphront/tokenizer.css' => 'd888465e', 'rsrc/css/aphront/tooltip.css' => '9c90229d', 'rsrc/css/aphront/transaction.css' => 'ce491938', 'rsrc/css/aphront/two-column.css' => '16ab3ad2', 'rsrc/css/aphront/typeahead.css' => '00c9a200', 'rsrc/css/application/auth/auth.css' => '1e655982', 'rsrc/css/application/base/main-menu-view.css' => '1de0ef6f', 'rsrc/css/application/base/notification-menu.css' => 'fc9a363c', 'rsrc/css/application/base/phabricator-application-launch-view.css' => '55ba7571', 'rsrc/css/application/base/standard-page-view.css' => '517cdfb1', 'rsrc/css/application/chatlog/chatlog.css' => 'ad006c53', 'rsrc/css/application/config/config-options.css' => '7fedf08b', 'rsrc/css/application/config/config-template.css' => '25d446d6', 'rsrc/css/application/config/setup-issue.css' => '1bb81c53', 'rsrc/css/application/conpherence/menu.css' => '561348ac', 'rsrc/css/application/conpherence/message-pane.css' => '2aedca89', 'rsrc/css/application/conpherence/notification.css' => 'f9ba9914', 'rsrc/css/application/conpherence/update.css' => '1099a660', 'rsrc/css/application/conpherence/widget-pane.css' => '87b12e0c', 'rsrc/css/application/contentsource/content-source-view.css' => '4b8b05d4', 'rsrc/css/application/countdown/timer.css' => '86b7b0a0', 'rsrc/css/application/diff/inline-comment-summary.css' => '14a91639', 'rsrc/css/application/differential/add-comment.css' => 'c478bcaa', 'rsrc/css/application/differential/changeset-view.css' => '82431767', 'rsrc/css/application/differential/core.css' => '8135cb0c', 'rsrc/css/application/differential/local-commits-view.css' => '19649019', 'rsrc/css/application/differential/results-table.css' => '239924f9', 'rsrc/css/application/differential/revision-comment-list.css' => 'bc291c47', 'rsrc/css/application/differential/revision-comment.css' => '48186045', 'rsrc/css/application/differential/revision-history.css' => 'f37aee8f', 'rsrc/css/application/differential/revision-list.css' => 'f3c47d33', 'rsrc/css/application/differential/table-of-contents.css' => '19566f76', 'rsrc/css/application/diffusion/commit-view.css' => '92d1e8f9', 'rsrc/css/application/diffusion/diffusion-icons.css' => '384a0f7d', 'rsrc/css/application/diffusion/diffusion-source.css' => '66fdf661', 'rsrc/css/application/directory/phabricator-jump-nav.css' => 'f0c5e726', 'rsrc/css/application/feed/feed.css' => '0d17c209', 'rsrc/css/application/files/global-drag-and-drop.css' => '697324ad', 'rsrc/css/application/flag/flag.css' => '5337623f', 'rsrc/css/application/herald/herald-test.css' => '2b7d0f54', 'rsrc/css/application/herald/herald.css' => '59d48f01', 'rsrc/css/application/legalpad/legalpad-document.css' => 'cd275275', 'rsrc/css/application/maniphest/batch-editor.css' => '78444bc1', 'rsrc/css/application/maniphest/report.css' => '6fc16517', 'rsrc/css/application/maniphest/task-edit.css' => '8e23031b', 'rsrc/css/application/maniphest/task-summary.css' => '0cabd9a6', 'rsrc/css/application/objectselector/object-selector.css' => '029a133d', 'rsrc/css/application/owners/owners-path-editor.css' => '2f00933b', 'rsrc/css/application/paste/paste.css' => 'aa1767d1', 'rsrc/css/application/people/people-profile.css' => 'd0bababe', 'rsrc/css/application/phame/phame.css' => '450826e1', 'rsrc/css/application/pholio/pholio-edit.css' => 'b9e59b6d', 'rsrc/css/application/pholio/pholio-inline-comments.css' => '52be33f0', 'rsrc/css/application/pholio/pholio.css' => 'd23ace50', 'rsrc/css/application/phortune/phortune-credit-card-form.css' => 'b25b4beb', 'rsrc/css/application/phrequent/phrequent.css' => 'ffc185ad', 'rsrc/css/application/phriction/phriction-document-css.css' => 'b0309d8e', 'rsrc/css/application/policy/policy-edit.css' => '05cca26a', 'rsrc/css/application/policy/policy.css' => '957ea14c', 'rsrc/css/application/ponder/comments.css' => '6cdccea7', 'rsrc/css/application/ponder/feed.css' => 'e62615b6', 'rsrc/css/application/ponder/post.css' => 'ebab8a70', 'rsrc/css/application/ponder/vote.css' => '8ed6ed8b', 'rsrc/css/application/profile/profile-view.css' => '3a7e04ca', 'rsrc/css/application/projects/phabricator-object-list-view.css' => '1a1ea560', 'rsrc/css/application/projects/project-tag.css' => '095c9404', 'rsrc/css/application/releeph/releeph-branch.css' => 'b8821d2d', 'rsrc/css/application/releeph/releeph-colors.css' => '2d2d6aa8', 'rsrc/css/application/releeph/releeph-core.css' => '140b959d', 'rsrc/css/application/releeph/releeph-intents.css' => '7364ac97', 'rsrc/css/application/releeph/releeph-preview-branch.css' => '0e383ca3', 'rsrc/css/application/releeph/releeph-project.css' => 'ee1f9f57', 'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '8d8b92cd', 'rsrc/css/application/releeph/releeph-request-typeahead.css' => '667a48ae', 'rsrc/css/application/releeph/releeph-status.css' => 'a20631d9', 'rsrc/css/application/search/search-results.css' => 'f240504c', 'rsrc/css/application/settings/settings.css' => 'ea8f5915', 'rsrc/css/application/slowvote/slowvote.css' => '266df6a1', 'rsrc/css/application/tokens/tokens.css' => 'fb286311', 'rsrc/css/application/uiexample/example.css' => '4741b891', 'rsrc/css/core/core.css' => 'da26ddb2', 'rsrc/css/core/remarkup.css' => 'ca7f2265', 'rsrc/css/core/syntax.css' => '3c18c1cb', 'rsrc/css/core/z-index.css' => '1bbbd4f1', 'rsrc/css/diviner/diviner-shared.css' => 'be90f718', 'rsrc/css/layout/phabricator-action-header-view.css' => 'cc654b91', 'rsrc/css/layout/phabricator-action-list-view.css' => '81383e25', 'rsrc/css/layout/phabricator-crumbs-view.css' => '2d9db584', 'rsrc/css/layout/phabricator-filetree-view.css' => 'a8c86ace', 'rsrc/css/layout/phabricator-hovercard-view.css' => '67c12b16', 'rsrc/css/layout/phabricator-side-menu-view.css' => '503699d0', 'rsrc/css/layout/phabricator-source-code-view.css' => '62a99814', 'rsrc/css/layout/phabricator-timeline-view.css' => 'f4f846c4', - 'rsrc/css/phui/phui-box.css' => '21da4d8c', + 'rsrc/css/phui/phui-box.css' => '6c21bd6a', 'rsrc/css/phui/phui-button.css' => '8784a966', 'rsrc/css/phui/phui-document.css' => '143b2ac8', 'rsrc/css/phui/phui-feed-story.css' => '3a59c2cf', 'rsrc/css/phui/phui-form-view.css' => '0efd3326', 'rsrc/css/phui/phui-form.css' => 'b78ec020', 'rsrc/css/phui/phui-header-view.css' => '472a6003', 'rsrc/css/phui/phui-icon.css' => 'fcb145a7', 'rsrc/css/phui/phui-info-panel.css' => '27ea50a1', 'rsrc/css/phui/phui-list.css' => '2edb76cf', 'rsrc/css/phui/phui-object-box.css' => '4f916b80', 'rsrc/css/phui/phui-object-item-list-view.css' => 'eb579d6c', 'rsrc/css/phui/phui-pinboard-view.css' => '4b346c2a', 'rsrc/css/phui/phui-property-list-view.css' => 'dbf53b12', 'rsrc/css/phui/phui-remarkup-preview.css' => '19ad512b', 'rsrc/css/phui/phui-spacing.css' => '042804d6', 'rsrc/css/phui/phui-status.css' => '2f562399', 'rsrc/css/phui/phui-tag-view.css' => '295d81c4', 'rsrc/css/phui/phui-text.css' => '23e9b4b7', 'rsrc/css/phui/phui-workboard-view.css' => 'bf70dd2e', 'rsrc/css/phui/phui-workpanel-view.css' => '6f8527f6', 'rsrc/css/sprite-actions.css' => '4557baf8', 'rsrc/css/sprite-apps-large.css' => '0a453d4b', 'rsrc/css/sprite-apps-xlarge.css' => 'db66c878', 'rsrc/css/sprite-apps.css' => 'c3857e4e', 'rsrc/css/sprite-buttonbar.css' => 'bbec51ec', 'rsrc/css/sprite-conpherence.css' => '084b1f13', 'rsrc/css/sprite-docs.css' => '7ea4927e', 'rsrc/css/sprite-gradient.css' => 'a10def53', 'rsrc/css/sprite-icons.css' => 'ce73ef3e', 'rsrc/css/sprite-login.css' => 'fa00ebdc', 'rsrc/css/sprite-main-header.css' => 'ba949d0d', 'rsrc/css/sprite-menu.css' => '9db4da0b', 'rsrc/css/sprite-minicons.css' => 'eb009037', 'rsrc/css/sprite-payments.css' => '68ec786d', 'rsrc/css/sprite-projects.css' => '8109f6e3', 'rsrc/css/sprite-status.css' => '767312f9', 'rsrc/css/sprite-tokens.css' => '9540e337', 'rsrc/externals/javelin/core/Event.js' => '79473b62', 'rsrc/externals/javelin/core/Stratcom.js' => 'c293f7b9', 'rsrc/externals/javelin/core/__tests__/event-stop-and-kill.js' => 'e27df27b', 'rsrc/externals/javelin/core/__tests__/install.js' => '1dd4d6db', 'rsrc/externals/javelin/core/__tests__/stratcom.js' => 'da194d4b', 'rsrc/externals/javelin/core/__tests__/util.js' => 'd3b157a9', 'rsrc/externals/javelin/core/init.js' => 'b88ab49e', 'rsrc/externals/javelin/core/install.js' => '52a92793', 'rsrc/externals/javelin/core/util.js' => '7501647b', 'rsrc/externals/javelin/docs/Base.js' => '3b9ca7eb', 'rsrc/externals/javelin/docs/onload.js' => '69948972', 'rsrc/externals/javelin/ext/fx/Color.js' => '7e41274a', 'rsrc/externals/javelin/ext/fx/FX.js' => '54b612ba', 'rsrc/externals/javelin/ext/reactor/core/DynVal.js' => '63f9ad59', 'rsrc/externals/javelin/ext/reactor/core/Reactor.js' => 'ba86e2fd', 'rsrc/externals/javelin/ext/reactor/core/ReactorNode.js' => '96474586', 'rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js' => '4c33dff1', 'rsrc/externals/javelin/ext/reactor/dom/RDOM.js' => 'bd3c1838', 'rsrc/externals/javelin/ext/view/HTMLView.js' => '957caa12', 'rsrc/externals/javelin/ext/view/View.js' => '4641579a', 'rsrc/externals/javelin/ext/view/ViewInterpreter.js' => '0c33c1a0', 'rsrc/externals/javelin/ext/view/ViewPlaceholder.js' => '2fa810fc', 'rsrc/externals/javelin/ext/view/ViewRenderer.js' => '77461fd6', 'rsrc/externals/javelin/ext/view/ViewVisitor.js' => 'ca704f2b', 'rsrc/externals/javelin/ext/view/__tests__/HTMLView.js' => 'f92d7bcb', 'rsrc/externals/javelin/ext/view/__tests__/View.js' => 'bda69c40', 'rsrc/externals/javelin/ext/view/__tests__/ViewInterpreter.js' => '7a94d6a5', 'rsrc/externals/javelin/ext/view/__tests__/ViewRenderer.js' => '5426001c', 'rsrc/externals/javelin/lib/Cookie.js' => '6b3dcf44', 'rsrc/externals/javelin/lib/DOM.js' => '03be94fb', 'rsrc/externals/javelin/lib/History.js' => 'c60f4327', 'rsrc/externals/javelin/lib/JSON.js' => '08e56a4e', 'rsrc/externals/javelin/lib/Mask.js' => 'b9f26029', 'rsrc/externals/javelin/lib/Request.js' => '23f9bb8d', 'rsrc/externals/javelin/lib/Resource.js' => '356de121', 'rsrc/externals/javelin/lib/URI.js' => 'd9a9b862', 'rsrc/externals/javelin/lib/Vector.js' => '403a3dce', 'rsrc/externals/javelin/lib/Workflow.js' => 'd16edeae', 'rsrc/externals/javelin/lib/__tests__/Cookie.js' => '5ed109e8', 'rsrc/externals/javelin/lib/__tests__/DOM.js' => 'c984504b', 'rsrc/externals/javelin/lib/__tests__/JSON.js' => '2295d074', 'rsrc/externals/javelin/lib/__tests__/URI.js' => 'ece3ddb3', 'rsrc/externals/javelin/lib/__tests__/behavior.js' => 'c1d75ee6', 'rsrc/externals/javelin/lib/behavior.js' => '8a3ed18b', 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => 'e9e18227', 'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => 'c22f4c01', 'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => '5f850b5c', 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => 'dbd9cd11', 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '1f595fb0', 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => 'e9b95df3', 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => 'f4412299', 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => 'c2b8bf64', 'rsrc/externals/raphael/g.raphael.js' => '40dde778', 'rsrc/externals/raphael/g.raphael.line.js' => '40da039e', 'rsrc/externals/raphael/raphael.js' => '51ee6b43', 'rsrc/image/actions/edit.png' => '2fc41442', 'rsrc/image/apple-touch-icon.png' => '8458dda7', 'rsrc/image/avatar.png' => '62c5f933', 'rsrc/image/checker_dark.png' => 'd8e65881', 'rsrc/image/checker_light.png' => 'a0155918', 'rsrc/image/credit_cards.png' => '72b8ede8', 'rsrc/image/darkload.gif' => '1ffd3ec6', 'rsrc/image/divot.png' => '94dded62', 'rsrc/image/grippy_texture.png' => 'aca81e2f', 'rsrc/image/icon/fatcow/arrow_branch.png' => '2537c01c', 'rsrc/image/icon/fatcow/arrow_merge.png' => '21b660e0', 'rsrc/image/icon/fatcow/bullet_black.png' => 'ff190031', 'rsrc/image/icon/fatcow/bullet_orange.png' => 'e273e5bb', 'rsrc/image/icon/fatcow/bullet_red.png' => 'c0b75434', 'rsrc/image/icon/fatcow/calendar_edit.png' => '24632275', 'rsrc/image/icon/fatcow/document_black.png' => '45fe1c60', 'rsrc/image/icon/fatcow/flag_blue.png' => 'a01abb1d', 'rsrc/image/icon/fatcow/flag_finish.png' => '67825cee', 'rsrc/image/icon/fatcow/flag_ghost.png' => '20ca8783', 'rsrc/image/icon/fatcow/flag_green.png' => '7e0eaa7a', 'rsrc/image/icon/fatcow/flag_orange.png' => '9e73df66', 'rsrc/image/icon/fatcow/flag_pink.png' => '7e92f3b2', 'rsrc/image/icon/fatcow/flag_purple.png' => 'cc517522', 'rsrc/image/icon/fatcow/flag_red.png' => '04ec726f', 'rsrc/image/icon/fatcow/flag_yellow.png' => '73946fd4', 'rsrc/image/icon/fatcow/folder.png' => '95a435af', 'rsrc/image/icon/fatcow/folder_go.png' => '001cbc94', 'rsrc/image/icon/fatcow/key_question.png' => '52a0c26a', 'rsrc/image/icon/fatcow/link.png' => '7afd4d5e', 'rsrc/image/icon/fatcow/page_white_edit.png' => '39a2eed8', 'rsrc/image/icon/fatcow/page_white_link.png' => 'a90023c7', 'rsrc/image/icon/fatcow/page_white_put.png' => '08c95a0c', 'rsrc/image/icon/fatcow/page_white_text.png' => '1e1f79c3', 'rsrc/image/icon/fatcow/source/conduit.png' => '4ea01d2f', 'rsrc/image/icon/fatcow/source/email.png' => '9bab3239', 'rsrc/image/icon/fatcow/source/fax.png' => '04195e68', 'rsrc/image/icon/fatcow/source/mobile.png' => 'f1321264', 'rsrc/image/icon/fatcow/source/tablet.png' => '49396799', 'rsrc/image/icon/fatcow/source/web.png' => '136ccb5d', 'rsrc/image/icon/fatcow/thumbnails/default160x120.png' => 'f2e8a2eb', 'rsrc/image/icon/fatcow/thumbnails/default60x45.png' => '0118abed', 'rsrc/image/icon/fatcow/thumbnails/image160x120.png' => '79bb556a', 'rsrc/image/icon/fatcow/thumbnails/image60x45.png' => 'c5e1685e', 'rsrc/image/icon/fatcow/thumbnails/pdf160x120.png' => 'ac9edbf5', 'rsrc/image/icon/fatcow/thumbnails/pdf60x45.png' => 'c0db4143', 'rsrc/image/icon/fatcow/thumbnails/zip160x120.png' => '75f9cd0f', 'rsrc/image/icon/fatcow/thumbnails/zip60x45.png' => 'af11bf3e', 'rsrc/image/icon/lightbox/close-2.png' => 'cc40e7c8', 'rsrc/image/icon/lightbox/close-hover-2.png' => 'fb5d6d9e', 'rsrc/image/icon/lightbox/left-arrow-2.png' => '8426133b', 'rsrc/image/icon/lightbox/left-arrow-hover-2.png' => '701e5ee3', 'rsrc/image/icon/lightbox/right-arrow-2.png' => '6d5519a0', 'rsrc/image/icon/lightbox/right-arrow-hover-2.png' => '3a04aa21', 'rsrc/image/icon/subscribe.png' => 'd03ed5a5', 'rsrc/image/icon/tango/attachment.png' => 'ecc8022e', 'rsrc/image/icon/tango/edit.png' => '929a1363', 'rsrc/image/icon/tango/go-down.png' => '96d95e43', 'rsrc/image/icon/tango/log.png' => 'b08cc63a', 'rsrc/image/icon/tango/upload.png' => '7bbb7984', 'rsrc/image/icon/unsubscribe.png' => '25725013', 'rsrc/image/lightblue-header.png' => '5c168b6d', 'rsrc/image/loading.gif' => '75d384cc', 'rsrc/image/loading/boating_24.gif' => '5c90f086', 'rsrc/image/loading/compass_24.gif' => 'b36b4f46', 'rsrc/image/loading/loading_24.gif' => '26bc9adc', 'rsrc/image/loading/loading_48.gif' => '6a4994c7', 'rsrc/image/loading/loading_d48.gif' => 'cdcbe900', 'rsrc/image/loading/loading_w24.gif' => '7662fa2b', 'rsrc/image/main_texture.png' => '29a2c5ad', 'rsrc/image/menu_texture.png' => '5a17580d', 'rsrc/image/people/harding.png' => '45aa614e', 'rsrc/image/people/jefferson.png' => 'afca0e53', 'rsrc/image/people/lincoln.png' => '9369126d', 'rsrc/image/people/mckinley.png' => 'fb8f16ce', 'rsrc/image/people/taft.png' => 'd7bc402c', 'rsrc/image/people/washington.png' => '40dd301c', 'rsrc/image/phrequent_active.png' => 'a466a8ed', 'rsrc/image/phrequent_inactive.png' => 'bfc15a69', 'rsrc/image/search-white.png' => '64cc0d45', 'rsrc/image/search.png' => '82625a7e', 'rsrc/image/sprite-actions-X2.png' => '7dfd5652', 'rsrc/image/sprite-actions.png' => '7b370d72', 'rsrc/image/sprite-apps-X2.png' => '8d56a056', 'rsrc/image/sprite-apps-large-X2.png' => '0e676838', 'rsrc/image/sprite-apps-large.png' => 'b0aa7d64', 'rsrc/image/sprite-apps-xlarge.png' => 'a751a580', 'rsrc/image/sprite-apps.png' => '35052ada', 'rsrc/image/sprite-buttonbar-X2.png' => '36fcc19d', 'rsrc/image/sprite-buttonbar.png' => 'e488cf8d', 'rsrc/image/sprite-conpherence-X2.png' => '5ed80fb0', 'rsrc/image/sprite-conpherence.png' => '7146f76f', 'rsrc/image/sprite-docs-X2.png' => '520858fa', 'rsrc/image/sprite-docs.png' => '4636297f', 'rsrc/image/sprite-gradient.png' => '4ece0b62', 'rsrc/image/sprite-icons-X2.png' => '2e9bb665', 'rsrc/image/sprite-icons.png' => 'edbe6b0d', 'rsrc/image/sprite-login-X2.png' => 'd2132242', 'rsrc/image/sprite-login.png' => '7f878f1d', 'rsrc/image/sprite-main-header.png' => 'bca643fc', 'rsrc/image/sprite-menu-X2.png' => '4e38aacb', 'rsrc/image/sprite-menu.png' => '8d4da28c', 'rsrc/image/sprite-minicons-X2.png' => 'd986b16b', 'rsrc/image/sprite-minicons.png' => '272644ea', 'rsrc/image/sprite-payments.png' => 'aedcb4a6', 'rsrc/image/sprite-projects-X2.png' => 'd30e8ca4', 'rsrc/image/sprite-projects.png' => '9e372fae', 'rsrc/image/sprite-status-X2.png' => '2997265d', 'rsrc/image/sprite-status.png' => '94fdbdd8', 'rsrc/image/sprite-tokens-X2.png' => '1e5d2641', 'rsrc/image/sprite-tokens.png' => 'a6cf4488', 'rsrc/image/texture/card-gradient.png' => '815f26e8', 'rsrc/image/texture/dark-menu-hover.png' => '5fa7ece8', 'rsrc/image/texture/dark-menu.png' => '7e22296e', 'rsrc/image/texture/grip.png' => '719404f3', 'rsrc/image/texture/panel-header-gradient.png' => 'e3b8dcfe', 'rsrc/image/texture/phlnx-bg.png' => '8d819209', 'rsrc/image/texture/pholio-background.gif' => 'ba29239c', 'rsrc/image/texture/table_header.png' => '5c433037', 'rsrc/image/texture/table_header_hover.png' => '038ec3b9', 'rsrc/image/texture/table_header_tall.png' => 'd56b434f', 'rsrc/js/application/aphlict/Aphlict.js' => '493665ee', 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '2a2dba85', 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => '845731b8', 'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18', 'rsrc/js/application/config/behavior-reorder-fields.js' => '69bb5094', 'rsrc/js/application/conpherence/behavior-menu.js' => '872bc8ff', 'rsrc/js/application/conpherence/behavior-pontificate.js' => '53f6f2dd', 'rsrc/js/application/conpherence/behavior-widget-pane.js' => 'd8ef8659', 'rsrc/js/application/countdown/timer.js' => '8454ce4f', 'rsrc/js/application/differential/DifferentialInlineCommentEditor.js' => 'f2441746', 'rsrc/js/application/differential/behavior-accept-with-errors.js' => 'e12c760a', 'rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js' => '4ba4c13d', 'rsrc/js/application/differential/behavior-comment-jump.js' => '71755c79', 'rsrc/js/application/differential/behavior-comment-preview.js' => '127f2018', 'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1', 'rsrc/js/application/differential/behavior-dropdown-menus.js' => '5f004630', 'rsrc/js/application/differential/behavior-edit-inline-comments.js' => '93f43142', 'rsrc/js/application/differential/behavior-keyboard-nav.js' => 'da3e88f9', 'rsrc/js/application/differential/behavior-populate.js' => 'ce0c217a', 'rsrc/js/application/differential/behavior-show-all-comments.js' => '784b8218', 'rsrc/js/application/differential/behavior-show-field-details.js' => '441f2137', 'rsrc/js/application/differential/behavior-show-more.js' => 'dd7e8ef5', 'rsrc/js/application/differential/behavior-toggle-files.js' => 'ca3f91eb', 'rsrc/js/application/differential/behavior-user-select.js' => 'a8d8459d', 'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'be81801d', 'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'eae2f65d', 'rsrc/js/application/diffusion/behavior-commit-graph.js' => '85ba3cf4', 'rsrc/js/application/diffusion/behavior-jump-to.js' => '9db3d160', 'rsrc/js/application/diffusion/behavior-load-blame.js' => '42126667', 'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => '3c5310da', 'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => 'fd27d99a', 'rsrc/js/application/files/behavior-icon-composer.js' => 'ea38f732', 'rsrc/js/application/files/behavior-launch-icon-composer.js' => '6ec125a0', 'rsrc/js/application/harbormaster/behavior-reorder-steps.js' => 'b21125a5', 'rsrc/js/application/herald/HeraldRuleEditor.js' => '4f31d692', 'rsrc/js/application/herald/PathTypeahead.js' => 'f7fc67ec', 'rsrc/js/application/herald/herald-rule-editor.js' => '7ebaeed3', 'rsrc/js/application/maniphest/behavior-batch-editor.js' => '391457d7', 'rsrc/js/application/maniphest/behavior-batch-selector.js' => 'ead554ec', 'rsrc/js/application/maniphest/behavior-line-chart.js' => 'cdcbe8a4', 'rsrc/js/application/maniphest/behavior-list-edit.js' => 'cf76cfd5', 'rsrc/js/application/maniphest/behavior-subpriorityeditor.js' => '84845b5b', 'rsrc/js/application/maniphest/behavior-transaction-controls.js' => '75e50c72', 'rsrc/js/application/maniphest/behavior-transaction-expand.js' => '2f2e18aa', 'rsrc/js/application/maniphest/behavior-transaction-preview.js' => 'f8248bc5', 'rsrc/js/application/owners/OwnersPathEditor.js' => '46efd18e', 'rsrc/js/application/owners/owners-path-editor.js' => '7a68dda3', 'rsrc/js/application/passphrase/phame-credential-control.js' => '1e1c8a59', 'rsrc/js/application/phame/phame-post-preview.js' => '61d927ec', 'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => '1e1e8bb0', 'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => '28497740', 'rsrc/js/application/phortune/behavior-balanced-payment-form.js' => '3b3e1664', 'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => '1693a296', 'rsrc/js/application/phortune/behavior-test-payment-form.js' => 'b3e5ee60', 'rsrc/js/application/phortune/phortune-credit-card-form.js' => '2290aeef', 'rsrc/js/application/policy/behavior-policy-control.js' => 'c01153ea', 'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '263aeb8c', 'rsrc/js/application/ponder/behavior-votebox.js' => '327dbe61', 'rsrc/js/application/projects/behavior-project-boards.js' => '1b9facd8', 'rsrc/js/application/projects/behavior-project-create.js' => '065227cc', 'rsrc/js/application/releeph/releeph-preview-branch.js' => '9eb2cedb', 'rsrc/js/application/releeph/releeph-request-state-change.js' => 'fe7fc914', 'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'cd9e7094', 'rsrc/js/application/repository/repository-crossreference.js' => '8ab282be', 'rsrc/js/application/search/behavior-reorder-queries.js' => '34397f68', 'rsrc/js/application/slowvote/behavior-slowvote-embed.js' => 'a51fdb2e', 'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => '9084a36f', 'rsrc/js/application/transactions/behavior-transaction-list.js' => '0dcf1716', 'rsrc/js/application/uiexample/JavelinViewExample.js' => 'd4a14807', 'rsrc/js/application/uiexample/ReactorButtonExample.js' => '44524435', 'rsrc/js/application/uiexample/ReactorCheckboxExample.js' => '7ba325ee', 'rsrc/js/application/uiexample/ReactorFocusExample.js' => '82f568cd', 'rsrc/js/application/uiexample/ReactorInputExample.js' => 'd6ca6b1c', 'rsrc/js/application/uiexample/ReactorMouseoverExample.js' => '4e37e4de', 'rsrc/js/application/uiexample/ReactorRadioExample.js' => '858f9728', 'rsrc/js/application/uiexample/ReactorSelectExample.js' => '189e4fe3', 'rsrc/js/application/uiexample/ReactorSendClassExample.js' => 'bf97561d', 'rsrc/js/application/uiexample/ReactorSendPropertiesExample.js' => '551add57', 'rsrc/js/application/uiexample/busy-example.js' => 'fbbce3bf', 'rsrc/js/application/uiexample/gesture-example.js' => 'f42bb8c6', 'rsrc/js/application/uiexample/notification-example.js' => 'c51a6616', 'rsrc/js/core/Busy.js' => '6453c869', 'rsrc/js/core/DragAndDropFileUpload.js' => 'ae6abfba', 'rsrc/js/core/DraggableList.js' => '1681c4d4', 'rsrc/js/core/DropdownMenu.js' => 'fb342e18', 'rsrc/js/core/DropdownMenuItem.js' => '0f386ef4', 'rsrc/js/core/FileUpload.js' => '96713558', 'rsrc/js/core/Hovercard.js' => '4f344388', 'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2', 'rsrc/js/core/KeyboardShortcutManager.js' => 'ad7a69ca', 'rsrc/js/core/MultirowRowManager.js' => 'e7076916', 'rsrc/js/core/Notification.js' => '95944043', 'rsrc/js/core/Prefab.js' => '9eaf0bfa', 'rsrc/js/core/ShapedRequest.js' => 'dfa181a4', 'rsrc/js/core/TextAreaUtils.js' => 'b3ec3cfc', 'rsrc/js/core/ToolTip.js' => '0a81ea29', 'rsrc/js/core/behavior-active-nav.js' => 'c81bc98f', 'rsrc/js/core/behavior-audio-source.js' => '59b251eb', 'rsrc/js/core/behavior-autofocus.js' => '7319e029', 'rsrc/js/core/behavior-crop.js' => 'b98fc918', 'rsrc/js/core/behavior-dark-console.js' => 'e9fdb5e5', 'rsrc/js/core/behavior-device.js' => '03d6ed07', 'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '94d146cb', 'rsrc/js/core/behavior-error-log.js' => 'a5d7cf86', 'rsrc/js/core/behavior-fancy-datepicker.js' => '5d584426', 'rsrc/js/core/behavior-file-tree.js' => 'c8728c70', 'rsrc/js/core/behavior-form.js' => '27d4da3f', 'rsrc/js/core/behavior-gesture.js' => 'fe2e0ba4', 'rsrc/js/core/behavior-global-drag-and-drop.js' => '828a2eed', 'rsrc/js/core/behavior-history-install.js' => '7ee2b591', 'rsrc/js/core/behavior-hovercard.js' => '9c808199', 'rsrc/js/core/behavior-keyboard-pager.js' => 'b657bdf8', 'rsrc/js/core/behavior-keyboard-shortcuts.js' => 'd75709e6', 'rsrc/js/core/behavior-konami.js' => '5bc2cb21', 'rsrc/js/core/behavior-lightbox-attachments.js' => '3aa45ad9', 'rsrc/js/core/behavior-line-linker.js' => 'bc778103', 'rsrc/js/core/behavior-more.js' => '9b9197be', 'rsrc/js/core/behavior-object-selector.js' => 'b4eef37b', 'rsrc/js/core/behavior-oncopy.js' => 'dab9253e', 'rsrc/js/core/behavior-phabricator-nav.js' => 'b5842a5e', 'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => 'c021950a', 'rsrc/js/core/behavior-refresh-csrf.js' => 'c4b31646', 'rsrc/js/core/behavior-remarkup-preview.js' => 'f7379f45', 'rsrc/js/core/behavior-reveal-content.js' => '8f24abfc', 'rsrc/js/core/behavior-search-typeahead.js' => 'f6b56f7a', 'rsrc/js/core/behavior-select-on-click.js' => '0e34ca02', 'rsrc/js/core/behavior-toggle-class.js' => 'a82a7769', 'rsrc/js/core/behavior-tokenizer.js' => 'b3a4b884', 'rsrc/js/core/behavior-tooltip.js' => 'e5dd1c6d', 'rsrc/js/core/behavior-watch-anchor.js' => '06e05112', 'rsrc/js/core/behavior-workflow.js' => '82947dda', 'rsrc/js/core/phtize.js' => 'd254d646', 'rsrc/js/phui/behavior-phui-object-box-tabs.js' => 'a3e2244e', 'rsrc/swf/aphlict.swf' => 'abac967d', ), 'symbols' => array( 'aphront-bars' => '231ac33c', 'aphront-calendar-view-css' => '166af03d', 'aphront-contextbar-view-css' => '1c3b0529', 'aphront-dark-console-css' => '6378ef3d', 'aphront-dialog-view-css' => 'dd9db96c', 'aphront-error-view-css' => '16cd9949', 'aphront-list-filter-view-css' => 'ef989c67', - 'aphront-multi-column-view-css' => '05bbd016', + 'aphront-multi-column-view-css' => '6f7573f0', 'aphront-notes' => '6acadd3f', 'aphront-pager-view-css' => '2e3539af', 'aphront-panel-view-css' => '5846dfa2', 'aphront-request-failure-view-css' => 'da14df31', 'aphront-table-view-css' => '92a719ca', 'aphront-tokenizer-control-css' => 'd888465e', 'aphront-tooltip-css' => '9c90229d', 'aphront-two-column-view-css' => '16ab3ad2', 'aphront-typeahead-control-css' => '00c9a200', 'auth-css' => '1e655982', 'config-options-css' => '7fedf08b', 'conpherence-menu-css' => '561348ac', 'conpherence-message-pane-css' => '2aedca89', 'conpherence-notification-css' => 'f9ba9914', 'conpherence-update-css' => '1099a660', 'conpherence-widget-pane-css' => '87b12e0c', 'differential-changeset-view-css' => '82431767', 'differential-core-view-css' => '8135cb0c', 'differential-inline-comment-editor' => 'f2441746', 'differential-local-commits-view-css' => '19649019', 'differential-results-table-css' => '239924f9', 'differential-revision-add-comment-css' => 'c478bcaa', 'differential-revision-comment-css' => '48186045', 'differential-revision-comment-list-css' => 'bc291c47', 'differential-revision-history-css' => 'f37aee8f', 'differential-revision-list-css' => 'f3c47d33', 'differential-table-of-contents-css' => '19566f76', 'diffusion-commit-view-css' => '92d1e8f9', 'diffusion-icons-css' => '384a0f7d', 'diffusion-source-css' => '66fdf661', 'diviner-shared-css' => 'be90f718', 'global-drag-and-drop-css' => '697324ad', 'herald-css' => '59d48f01', 'herald-rule-editor' => '4f31d692', 'herald-test-css' => '2b7d0f54', 'inline-comment-summary-css' => '14a91639', 'javelin-aphlict' => '493665ee', 'javelin-behavior' => '8a3ed18b', 'javelin-behavior-aphlict-dropdown' => '2a2dba85', 'javelin-behavior-aphlict-listen' => '845731b8', 'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884', 'javelin-behavior-aphront-crop' => 'b98fc918', 'javelin-behavior-aphront-drag-and-drop-textarea' => '94d146cb', 'javelin-behavior-aphront-form-disable-on-submit' => '27d4da3f', 'javelin-behavior-aphront-more' => '9b9197be', 'javelin-behavior-audio-source' => '59b251eb', 'javelin-behavior-audit-preview' => 'be81801d', 'javelin-behavior-balanced-payment-form' => '3b3e1664', 'javelin-behavior-config-reorder-fields' => '69bb5094', 'javelin-behavior-conpherence-menu' => '872bc8ff', 'javelin-behavior-conpherence-pontificate' => '53f6f2dd', 'javelin-behavior-conpherence-widget-pane' => 'd8ef8659', 'javelin-behavior-countdown-timer' => '8454ce4f', 'javelin-behavior-dark-console' => 'e9fdb5e5', 'javelin-behavior-device' => '03d6ed07', 'javelin-behavior-differential-accept-with-errors' => 'e12c760a', 'javelin-behavior-differential-add-reviewers-and-ccs' => '4ba4c13d', 'javelin-behavior-differential-comment-jump' => '71755c79', 'javelin-behavior-differential-diff-radios' => 'e1ff79b1', 'javelin-behavior-differential-dropdown-menus' => '5f004630', 'javelin-behavior-differential-edit-inline-comments' => '93f43142', 'javelin-behavior-differential-feedback-preview' => '127f2018', 'javelin-behavior-differential-keyboard-navigation' => 'da3e88f9', 'javelin-behavior-differential-populate' => 'ce0c217a', 'javelin-behavior-differential-show-all-comments' => '784b8218', 'javelin-behavior-differential-show-field-details' => '441f2137', 'javelin-behavior-differential-show-more' => 'dd7e8ef5', 'javelin-behavior-differential-toggle-files' => 'ca3f91eb', 'javelin-behavior-differential-user-select' => 'a8d8459d', 'javelin-behavior-diffusion-commit-branches' => 'eae2f65d', 'javelin-behavior-diffusion-commit-graph' => '85ba3cf4', 'javelin-behavior-diffusion-jump-to' => '9db3d160', 'javelin-behavior-diffusion-pull-lastmodified' => '3c5310da', 'javelin-behavior-doorkeeper-tag' => 'fd27d99a', 'javelin-behavior-error-log' => 'a5d7cf86', 'javelin-behavior-fancy-datepicker' => '5d584426', 'javelin-behavior-global-drag-and-drop' => '828a2eed', 'javelin-behavior-harbormaster-reorder-steps' => 'b21125a5', 'javelin-behavior-herald-rule-editor' => '7ebaeed3', 'javelin-behavior-history-install' => '7ee2b591', 'javelin-behavior-icon-composer' => 'ea38f732', 'javelin-behavior-konami' => '5bc2cb21', 'javelin-behavior-launch-icon-composer' => '6ec125a0', 'javelin-behavior-lightbox-attachments' => '3aa45ad9', 'javelin-behavior-line-chart' => 'cdcbe8a4', 'javelin-behavior-load-blame' => '42126667', 'javelin-behavior-maniphest-batch-editor' => '391457d7', 'javelin-behavior-maniphest-batch-selector' => 'ead554ec', 'javelin-behavior-maniphest-list-editor' => 'cf76cfd5', 'javelin-behavior-maniphest-subpriority-editor' => '84845b5b', 'javelin-behavior-maniphest-transaction-controls' => '75e50c72', 'javelin-behavior-maniphest-transaction-expand' => '2f2e18aa', 'javelin-behavior-maniphest-transaction-preview' => 'f8248bc5', 'javelin-behavior-owners-path-editor' => '7a68dda3', 'javelin-behavior-passphrase-credential-control' => '1e1c8a59', 'javelin-behavior-persona-login' => '9414ff18', 'javelin-behavior-phabricator-active-nav' => 'c81bc98f', 'javelin-behavior-phabricator-autofocus' => '7319e029', 'javelin-behavior-phabricator-busy-example' => 'fbbce3bf', 'javelin-behavior-phabricator-file-tree' => 'c8728c70', 'javelin-behavior-phabricator-gesture' => 'fe2e0ba4', 'javelin-behavior-phabricator-gesture-example' => 'f42bb8c6', 'javelin-behavior-phabricator-hovercards' => '9c808199', 'javelin-behavior-phabricator-keyboard-pager' => 'b657bdf8', 'javelin-behavior-phabricator-keyboard-shortcuts' => 'd75709e6', 'javelin-behavior-phabricator-line-linker' => 'bc778103', 'javelin-behavior-phabricator-nav' => 'b5842a5e', 'javelin-behavior-phabricator-notification-example' => 'c51a6616', 'javelin-behavior-phabricator-object-selector' => 'b4eef37b', 'javelin-behavior-phabricator-oncopy' => 'dab9253e', 'javelin-behavior-phabricator-remarkup-assist' => 'c021950a', 'javelin-behavior-phabricator-reveal-content' => '8f24abfc', 'javelin-behavior-phabricator-search-typeahead' => 'f6b56f7a', 'javelin-behavior-phabricator-tooltips' => 'e5dd1c6d', 'javelin-behavior-phabricator-transaction-comment-form' => '9084a36f', 'javelin-behavior-phabricator-transaction-list' => '0dcf1716', 'javelin-behavior-phabricator-watch-anchor' => '06e05112', 'javelin-behavior-phame-post-preview' => '61d927ec', 'javelin-behavior-pholio-mock-edit' => '1e1e8bb0', 'javelin-behavior-pholio-mock-view' => '28497740', 'javelin-behavior-phui-object-box-tabs' => 'a3e2244e', 'javelin-behavior-policy-control' => 'c01153ea', 'javelin-behavior-policy-rule-editor' => '263aeb8c', 'javelin-behavior-ponder-votebox' => '327dbe61', 'javelin-behavior-project-boards' => '1b9facd8', 'javelin-behavior-project-create' => '065227cc', 'javelin-behavior-refresh-csrf' => 'c4b31646', 'javelin-behavior-releeph-preview-branch' => '9eb2cedb', 'javelin-behavior-releeph-request-state-change' => 'fe7fc914', 'javelin-behavior-releeph-request-typeahead' => 'cd9e7094', 'javelin-behavior-remarkup-preview' => 'f7379f45', 'javelin-behavior-repository-crossreference' => '8ab282be', 'javelin-behavior-search-reorder-queries' => '34397f68', 'javelin-behavior-select-on-click' => '0e34ca02', 'javelin-behavior-slowvote-embed' => 'a51fdb2e', 'javelin-behavior-stripe-payment-form' => '1693a296', 'javelin-behavior-test-payment-form' => 'b3e5ee60', 'javelin-behavior-toggle-class' => 'a82a7769', 'javelin-behavior-view-placeholder' => '2fa810fc', 'javelin-behavior-workflow' => '82947dda', 'javelin-color' => '7e41274a', 'javelin-cookie' => '6b3dcf44', 'javelin-dom' => '03be94fb', 'javelin-dynval' => '63f9ad59', 'javelin-event' => '79473b62', 'javelin-fx' => '54b612ba', 'javelin-history' => 'c60f4327', 'javelin-install' => '52a92793', 'javelin-json' => '08e56a4e', 'javelin-magical-init' => 'b88ab49e', 'javelin-mask' => 'b9f26029', 'javelin-reactor' => 'ba86e2fd', 'javelin-reactor-dom' => 'bd3c1838', 'javelin-reactor-node-calmer' => '4c33dff1', 'javelin-reactornode' => '96474586', 'javelin-request' => '23f9bb8d', 'javelin-resource' => '356de121', 'javelin-stratcom' => 'c293f7b9', 'javelin-tokenizer' => 'e9e18227', 'javelin-typeahead' => 'c22f4c01', 'javelin-typeahead-composite-source' => 'dbd9cd11', 'javelin-typeahead-normalizer' => '5f850b5c', 'javelin-typeahead-ondemand-source' => '1f595fb0', 'javelin-typeahead-preloaded-source' => 'e9b95df3', 'javelin-typeahead-source' => 'f4412299', 'javelin-typeahead-static-source' => 'c2b8bf64', 'javelin-uri' => 'd9a9b862', 'javelin-util' => '7501647b', 'javelin-vector' => '403a3dce', 'javelin-view' => '4641579a', 'javelin-view-html' => '957caa12', 'javelin-view-interpreter' => '0c33c1a0', 'javelin-view-renderer' => '77461fd6', 'javelin-view-visitor' => 'ca704f2b', 'javelin-workflow' => 'd16edeae', 'legalpad-document-css' => 'cd275275', 'lightbox-attachment-css' => '686f8885', 'maniphest-batch-editor' => '78444bc1', 'maniphest-report-css' => '6fc16517', 'maniphest-task-edit-css' => '8e23031b', 'maniphest-task-summary-css' => '0cabd9a6', 'multirow-row-manager' => 'e7076916', 'owners-path-editor' => '46efd18e', 'owners-path-editor-css' => '2f00933b', 'paste-css' => 'aa1767d1', 'path-typeahead' => 'f7fc67ec', 'people-profile-css' => 'd0bababe', 'phabricator-action-header-view-css' => 'cc654b91', 'phabricator-action-list-view-css' => '81383e25', 'phabricator-application-launch-view-css' => '55ba7571', 'phabricator-busy' => '6453c869', 'phabricator-chatlog-css' => 'ad006c53', 'phabricator-content-source-view-css' => '4b8b05d4', 'phabricator-core-css' => 'da26ddb2', 'phabricator-countdown-css' => '86b7b0a0', 'phabricator-crumbs-view-css' => '2d9db584', 'phabricator-drag-and-drop-file-upload' => 'ae6abfba', 'phabricator-draggable-list' => '1681c4d4', 'phabricator-dropdown-menu' => 'fb342e18', 'phabricator-fatal-config-template-css' => '25d446d6', 'phabricator-feed-css' => '0d17c209', 'phabricator-file-upload' => '96713558', 'phabricator-filetree-view-css' => 'a8c86ace', 'phabricator-flag-css' => '5337623f', 'phabricator-hovercard' => '4f344388', 'phabricator-hovercard-view-css' => '67c12b16', 'phabricator-jump-nav' => 'f0c5e726', 'phabricator-keyboard-shortcut' => '1ae869f2', 'phabricator-keyboard-shortcut-manager' => 'ad7a69ca', 'phabricator-main-menu-view' => '1de0ef6f', 'phabricator-menu-item' => '0f386ef4', 'phabricator-nav-view-css' => 'd0d4a509', 'phabricator-notification' => '95944043', 'phabricator-notification-css' => '6901121e', 'phabricator-notification-menu-css' => 'fc9a363c', 'phabricator-object-list-view-css' => '1a1ea560', 'phabricator-object-selector-css' => '029a133d', 'phabricator-phtize' => 'd254d646', 'phabricator-prefab' => '9eaf0bfa', 'phabricator-profile-css' => '3a7e04ca', 'phabricator-project-tag-css' => '095c9404', 'phabricator-remarkup-css' => 'ca7f2265', 'phabricator-search-results-css' => 'f240504c', 'phabricator-settings-css' => 'ea8f5915', 'phabricator-shaped-request' => 'dfa181a4', 'phabricator-side-menu-view-css' => '503699d0', 'phabricator-slowvote-css' => '266df6a1', 'phabricator-source-code-view-css' => '62a99814', 'phabricator-standard-page-view' => '517cdfb1', 'phabricator-textareautils' => 'b3ec3cfc', 'phabricator-timeline-view-css' => 'f4f846c4', 'phabricator-tooltip' => '0a81ea29', 'phabricator-transaction-view-css' => 'ce491938', 'phabricator-ui-example-css' => '4741b891', 'phabricator-uiexample-javelin-view' => 'd4a14807', 'phabricator-uiexample-reactor-button' => '44524435', 'phabricator-uiexample-reactor-checkbox' => '7ba325ee', 'phabricator-uiexample-reactor-focus' => '82f568cd', 'phabricator-uiexample-reactor-input' => 'd6ca6b1c', 'phabricator-uiexample-reactor-mouseover' => '4e37e4de', 'phabricator-uiexample-reactor-radio' => '858f9728', 'phabricator-uiexample-reactor-select' => '189e4fe3', 'phabricator-uiexample-reactor-sendclass' => 'bf97561d', 'phabricator-uiexample-reactor-sendproperties' => '551add57', 'phabricator-zindex-css' => '1bbbd4f1', 'phame-css' => '450826e1', 'pholio-css' => 'd23ace50', 'pholio-edit-css' => 'b9e59b6d', 'pholio-inline-comments-css' => '52be33f0', 'phortune-credit-card-form' => '2290aeef', 'phortune-credit-card-form-css' => 'b25b4beb', 'phrequent-css' => 'ffc185ad', 'phriction-document-css' => 'b0309d8e', - 'phui-box-css' => '21da4d8c', + 'phui-box-css' => '6c21bd6a', 'phui-button-css' => '8784a966', 'phui-document-view-css' => '143b2ac8', 'phui-feed-story-css' => '3a59c2cf', 'phui-form-css' => 'b78ec020', 'phui-form-view-css' => '0efd3326', 'phui-header-view-css' => '472a6003', 'phui-icon-view-css' => 'fcb145a7', 'phui-info-panel-css' => '27ea50a1', 'phui-list-view-css' => '2edb76cf', 'phui-object-box-css' => '4f916b80', 'phui-object-item-list-view-css' => 'eb579d6c', 'phui-pinboard-view-css' => '4b346c2a', 'phui-property-list-view-css' => 'dbf53b12', 'phui-remarkup-preview-css' => '19ad512b', 'phui-spacing-css' => '042804d6', 'phui-status-list-view-css' => '2f562399', 'phui-tag-view-css' => '295d81c4', 'phui-text-css' => '23e9b4b7', 'phui-workboard-view-css' => 'bf70dd2e', 'phui-workpanel-view-css' => '6f8527f6', 'policy-css' => '957ea14c', 'policy-edit-css' => '05cca26a', 'ponder-comment-table-css' => '6cdccea7', 'ponder-feed-view-css' => 'e62615b6', 'ponder-post-css' => 'ebab8a70', 'ponder-vote-css' => '8ed6ed8b', 'raphael-core' => '51ee6b43', 'raphael-g' => '40dde778', 'raphael-g-line' => '40da039e', 'releeph-branch' => 'b8821d2d', 'releeph-colors' => '2d2d6aa8', 'releeph-core' => '140b959d', 'releeph-intents' => '7364ac97', 'releeph-preview-branch' => '0e383ca3', 'releeph-project' => 'ee1f9f57', 'releeph-request-differential-create-dialog' => '8d8b92cd', 'releeph-request-typeahead-css' => '667a48ae', 'releeph-status' => 'a20631d9', 'setup-issue-css' => '1bb81c53', 'sprite-actions-css' => '4557baf8', 'sprite-apps-css' => 'c3857e4e', 'sprite-apps-large-css' => '0a453d4b', 'sprite-apps-xlarge-css' => 'db66c878', 'sprite-buttonbar-css' => 'bbec51ec', 'sprite-conpherence-css' => '084b1f13', 'sprite-docs-css' => '7ea4927e', 'sprite-gradient-css' => 'a10def53', 'sprite-icons-css' => 'ce73ef3e', 'sprite-login-css' => 'fa00ebdc', 'sprite-main-header-css' => 'ba949d0d', 'sprite-menu-css' => '9db4da0b', 'sprite-minicons-css' => 'eb009037', 'sprite-payments-css' => '68ec786d', 'sprite-projects-css' => '8109f6e3', 'sprite-status-css' => '767312f9', 'sprite-tokens-css' => '9540e337', 'syntax-highlighting-css' => '3c18c1cb', 'tokens-css' => 'fb286311', ), 'requires' => array( '029a133d' => array( 0 => 'aphront-dialog-view-css', ), '03be94fb' => array( 0 => 'javelin-magical-init', 1 => 'javelin-install', 2 => 'javelin-util', 3 => 'javelin-vector', 4 => 'javelin-stratcom', ), '03d6ed07' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-vector', 4 => 'javelin-install', ), '065227cc' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-workflow', ), '06e05112' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-vector', ), '08e56a4e' => array( 0 => 'javelin-install', ), '0a81ea29' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-vector', ), '0c33c1a0' => array( 0 => 'javelin-view', 1 => 'javelin-install', 2 => 'javelin-dom', ), '0dcf1716' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-workflow', 3 => 'javelin-dom', 4 => 'javelin-fx', ), '0e34ca02' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), '0f386ef4' => array( 0 => 'javelin-install', 1 => 'javelin-dom', ), '127f2018' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-request', 4 => 'javelin-util', 5 => 'phabricator-shaped-request', ), '1681c4d4' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-util', 4 => 'javelin-vector', 5 => 'javelin-magical-init', ), '1693a296' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phortune-credit-card-form', ), '189e4fe3' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-reactor-dom', ), '1ae869f2' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'phabricator-keyboard-shortcut-manager', ), '1b9facd8' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-stratcom', 4 => 'javelin-workflow', 5 => 'phabricator-draggable-list', ), '1e1c8a59' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-workflow', 4 => 'javelin-util', 5 => 'javelin-uri', ), '1e1e8bb0' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-workflow', 4 => 'phabricator-phtize', 5 => 'phabricator-drag-and-drop-file-upload', 6 => 'phabricator-draggable-list', ), '1f595fb0' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-request', 3 => 'javelin-typeahead-source', ), '2290aeef' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-json', 3 => 'javelin-workflow', 4 => 'javelin-util', ), '23f9bb8d' => array( 0 => 'javelin-install', 1 => 'javelin-stratcom', 2 => 'javelin-util', 3 => 'javelin-behavior', 4 => 'javelin-json', 5 => 'javelin-dom', 6 => 'javelin-resource', ), '263aeb8c' => array( 0 => 'javelin-behavior', 1 => 'multirow-row-manager', 2 => 'javelin-dom', 3 => 'javelin-util', 4 => 'phabricator-prefab', 5 => 'javelin-tokenizer', 6 => 'javelin-typeahead', 7 => 'javelin-typeahead-preloaded-source', 8 => 'javelin-json', ), '27d4da3f' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), '2a2dba85' => array( 0 => 'javelin-behavior', 1 => 'javelin-request', 2 => 'javelin-stratcom', 3 => 'javelin-vector', 4 => 'javelin-dom', 5 => 'javelin-uri', 6 => 'javelin-behavior-device', ), '2f2e18aa' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-workflow', 3 => 'javelin-stratcom', ), '2fa810fc' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-view-renderer', 3 => 'javelin-install', ), '327dbe61' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-stratcom', 4 => 'javelin-request', ), '34397f68' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-workflow', 3 => 'javelin-dom', 4 => 'phabricator-draggable-list', ), '356de121' => array( 0 => 'javelin-util', 1 => 'javelin-uri', 2 => 'javelin-install', ), '391457d7' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-prefab', 4 => 'multirow-row-manager', 5 => 'javelin-json', ), '3aa45ad9' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-mask', 4 => 'javelin-util', 5 => 'phabricator-busy', ), '3b3e1664' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phortune-credit-card-form', ), '3c5310da' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-request', ), '403a3dce' => array( 0 => 'javelin-install', 1 => 'javelin-event', ), '441f2137' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), '4641579a' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), '46efd18e' => array( 0 => 'multirow-row-manager', 1 => 'javelin-install', 2 => 'path-typeahead', 3 => 'javelin-dom', 4 => 'javelin-util', 5 => 'phabricator-prefab', ), '493665ee' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), '4ba4c13d' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phabricator-prefab', ), '4c33dff1' => array( 0 => 'javelin-install', 1 => 'javelin-reactor', 2 => 'javelin-util', ), '4e37e4de' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-reactor-dom', ), '4f31d692' => array( 0 => 'multirow-row-manager', 1 => 'javelin-install', 2 => 'javelin-typeahead', 3 => 'javelin-util', 4 => 'javelin-dom', 5 => 'javelin-tokenizer', 6 => 'javelin-typeahead-preloaded-source', 7 => 'javelin-stratcom', 8 => 'javelin-json', 9 => 'phabricator-prefab', ), '4f344388' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-vector', 3 => 'javelin-request', 4 => 'javelin-uri', ), '52a92793' => array( 0 => 'javelin-util', 1 => 'javelin-magical-init', ), '53f6f2dd' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-workflow', 4 => 'javelin-stratcom', ), '54b612ba' => array( 0 => 'javelin-color', 1 => 'javelin-install', 2 => 'javelin-util', ), '551add57' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-reactor-dom', ), '59b251eb' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-vector', 3 => 'javelin-dom', ), '5bc2cb21' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', ), '5d584426' => array( 0 => 'javelin-behavior', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-stratcom', 4 => 'javelin-vector', ), '5f004630' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-stratcom', 4 => 'phabricator-dropdown-menu', 5 => 'phabricator-menu-item', 6 => 'phabricator-phtize', ), '5f850b5c' => array( 0 => 'javelin-install', ), '61d927ec' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-shaped-request', ), '63f9ad59' => array( 0 => 'javelin-install', 1 => 'javelin-reactornode', 2 => 'javelin-util', 3 => 'javelin-reactor', ), '6453c869' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-fx', ), '69bb5094' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-json', 4 => 'phabricator-draggable-list', ), '6b3dcf44' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), '6ec125a0' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-workflow', ), '71755c79' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), '7319e029' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', ), '75e50c72' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phabricator-prefab', ), '77461fd6' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), '784b8218' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), '79473b62' => array( 0 => 'javelin-install', ), '7a68dda3' => array( 0 => 'owners-path-editor', 1 => 'javelin-behavior', ), '7ba325ee' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-reactor-dom', ), '7e41274a' => array( 0 => 'javelin-install', ), '7ebaeed3' => array( 0 => 'herald-rule-editor', 1 => 'javelin-behavior', ), '7ee2b591' => array( 0 => 'javelin-behavior', 1 => 'javelin-history', ), '828a2eed' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-uri', 3 => 'javelin-mask', 4 => 'phabricator-drag-and-drop-file-upload', ), '82947dda' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-workflow', 3 => 'javelin-dom', ), '82f568cd' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-reactor-dom', ), '8454ce4f' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', ), '845731b8' => array( 0 => 'javelin-behavior', 1 => 'javelin-aphlict', 2 => 'javelin-stratcom', 3 => 'javelin-request', 4 => 'javelin-uri', 5 => 'javelin-dom', 6 => 'javelin-json', 7 => 'phabricator-notification', ), '84845b5b' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-workflow', 4 => 'phabricator-draggable-list', ), '858f9728' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-reactor-dom', ), '85ba3cf4' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', ), '872bc8ff' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-stratcom', 4 => 'javelin-workflow', 5 => 'javelin-behavior-device', 6 => 'javelin-history', 7 => 'javelin-vector', ), '8a3ed18b' => array( 0 => 'javelin-magical-init', 1 => 'javelin-util', ), '8ab282be' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-uri', ), '8f24abfc' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), '9084a36f' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-fx', 4 => 'javelin-request', 5 => 'phabricator-shaped-request', ), '93f43142' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-util', 4 => 'javelin-vector', 5 => 'differential-inline-comment-editor', ), '9414ff18' => array( 0 => 'javelin-behavior', 1 => 'javelin-resource', 2 => 'javelin-stratcom', 3 => 'javelin-workflow', 4 => 'javelin-util', ), '94d146cb' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phabricator-drag-and-drop-file-upload', 3 => 'phabricator-textareautils', ), '957caa12' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-view-visitor', 3 => 'javelin-util', ), '9b9197be' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), '9c808199' => array( 0 => 'javelin-behavior', 1 => 'javelin-behavior-device', 2 => 'javelin-stratcom', 3 => 'javelin-vector', 4 => 'phabricator-hovercard', ), '9db3d160' => array( 0 => 'javelin-behavior', 1 => 'javelin-vector', 2 => 'javelin-dom', ), '9eaf0bfa' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-typeahead', 4 => 'javelin-tokenizer', 5 => 'javelin-typeahead-preloaded-source', 6 => 'javelin-typeahead-ondemand-source', 7 => 'javelin-dom', 8 => 'javelin-stratcom', 9 => 'javelin-util', ), '9eb2cedb' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-uri', 3 => 'javelin-request', ), 'a3e2244e' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'a51fdb2e' => array( 0 => 'javelin-behavior', 1 => 'javelin-request', 2 => 'javelin-stratcom', 3 => 'javelin-dom', ), 'a5d7cf86' => array( 0 => 'javelin-dom', ), 'a82a7769' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'a8d8459d' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', ), 'ad7a69ca' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-dom', 4 => 'javelin-vector', ), 'ae6abfba' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-request', 3 => 'javelin-dom', 4 => 'javelin-uri', 5 => 'phabricator-file-upload', ), 'b21125a5' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-workflow', 3 => 'javelin-dom', 4 => 'phabricator-draggable-list', ), 'b3a4b884' => array( 0 => 'javelin-behavior', 1 => 'phabricator-prefab', ), 'b3e5ee60' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phortune-credit-card-form', ), 'b3ec3cfc' => array( 0 => 'javelin-install', ), 'b4eef37b' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-request', 3 => 'javelin-util', ), 'b5842a5e' => array( 0 => 'javelin-behavior', 1 => 'javelin-behavior-device', 2 => 'javelin-stratcom', 3 => 'javelin-dom', 4 => 'javelin-magical-init', 5 => 'javelin-vector', 6 => 'javelin-request', 7 => 'javelin-util', ), 'b657bdf8' => array( 0 => 'javelin-behavior', 1 => 'javelin-uri', 2 => 'phabricator-keyboard-shortcut', ), 'b98fc918' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-vector', 3 => 'javelin-magical-init', ), 'b9f26029' => array( 0 => 'javelin-install', 1 => 'javelin-dom', ), 'ba86e2fd' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), 'bc778103' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-history', ), 'bd3c1838' => array( 0 => 'javelin-dom', 1 => 'javelin-dynval', 2 => 'javelin-reactor', 3 => 'javelin-reactornode', 4 => 'javelin-install', 5 => 'javelin-util', ), 'be81801d' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-shaped-request', ), 'bf97561d' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-reactor-dom', ), 'c01153ea' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-dropdown-menu', 4 => 'phabricator-menu-item', 5 => 'javelin-workflow', ), 'c021950a' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'phabricator-phtize', 4 => 'phabricator-textareautils', 5 => 'javelin-workflow', 6 => 'javelin-vector', ), 'c22f4c01' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-vector', 3 => 'javelin-util', ), 'c293f7b9' => array( 0 => 'javelin-install', 1 => 'javelin-event', 2 => 'javelin-util', 3 => 'javelin-magical-init', ), 'c2b8bf64' => array( 0 => 'javelin-install', 1 => 'javelin-typeahead-source', ), 'c4b31646' => array( 0 => 'javelin-request', 1 => 'javelin-behavior', 2 => 'javelin-dom', 3 => 'phabricator-busy', ), 'c51a6616' => array( 0 => 'phabricator-notification', 1 => 'javelin-stratcom', 2 => 'javelin-behavior', ), 'c60f4327' => array( 0 => 'javelin-stratcom', 1 => 'javelin-install', 2 => 'javelin-uri', 3 => 'javelin-util', ), 'c81bc98f' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-vector', 3 => 'javelin-dom', 4 => 'javelin-uri', ), 'c8728c70' => array( 0 => 'javelin-behavior', 1 => 'phabricator-keyboard-shortcut', 2 => 'javelin-stratcom', ), 'ca3f91eb' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'phabricator-phtize', ), 'ca704f2b' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), 'cd9e7094' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-typeahead', 3 => 'javelin-typeahead-ondemand-source', 4 => 'javelin-dom', ), 'cdcbe8a4' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-vector', ), 'ce0c217a' => array( 0 => 'javelin-behavior', 1 => 'javelin-workflow', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-stratcom', 5 => 'javelin-behavior-device', 6 => 'javelin-vector', 7 => 'phabricator-tooltip', ), 'cf76cfd5' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-workflow', 4 => 'javelin-fx', 5 => 'javelin-util', ), 'd16edeae' => array( 0 => 'javelin-stratcom', 1 => 'javelin-request', 2 => 'javelin-dom', 3 => 'javelin-vector', 4 => 'javelin-install', 5 => 'javelin-util', 6 => 'javelin-mask', 7 => 'javelin-uri', ), 'd254d646' => array( 0 => 'javelin-util', ), 'd4a14807' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-view', ), 'd6ca6b1c' => array( 0 => 'javelin-install', 1 => 'javelin-reactor-dom', 2 => 'javelin-view-html', 3 => 'javelin-view-interpreter', 4 => 'javelin-view-renderer', ), 'd75709e6' => array( 0 => 'javelin-behavior', 1 => 'javelin-workflow', 2 => 'javelin-json', 3 => 'javelin-dom', 4 => 'phabricator-keyboard-shortcut', ), 'd888465e' => array( 0 => 'aphront-typeahead-control-css', ), 'd8ef8659' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-workflow', 4 => 'javelin-util', 5 => 'phabricator-notification', 6 => 'javelin-behavior-device', 7 => 'phabricator-dropdown-menu', 8 => 'phabricator-menu-item', ), 'd9a9b862' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-stratcom', ), 'da3e88f9' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'phabricator-keyboard-shortcut', ), 'dab9253e' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', ), 'dbd9cd11' => array( 0 => 'javelin-install', 1 => 'javelin-typeahead-source', 2 => 'javelin-util', ), 'dd7e8ef5' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-workflow', 3 => 'javelin-util', 4 => 'javelin-stratcom', ), 'dfa181a4' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-request', ), 'e12c760a' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', ), 'e1ff79b1' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'e5dd1c6d' => array( 0 => 'javelin-behavior', 1 => 'javelin-behavior-device', 2 => 'javelin-stratcom', 3 => 'phabricator-tooltip', ), 'e7076916' => array( 0 => 'javelin-install', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-util', ), 'e9b95df3' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-request', 3 => 'javelin-typeahead-source', ), 'e9e18227' => array( 0 => 'javelin-dom', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-install', ), 'e9fdb5e5' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-request', 5 => 'phabricator-keyboard-shortcut', ), 'ea38f732' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', ), 'ead554ec' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-util', ), 'eae2f65d' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-request', ), 'f2441746' => array( 0 => 'javelin-dom', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-install', 4 => 'javelin-request', 5 => 'javelin-workflow', ), 'f42bb8c6' => array( 0 => 'javelin-stratcom', 1 => 'javelin-behavior', 2 => 'javelin-vector', 3 => 'javelin-dom', ), 'f4412299' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-typeahead-normalizer', ), 'f6b56f7a' => array( 0 => 'javelin-behavior', 1 => 'javelin-typeahead-ondemand-source', 2 => 'javelin-typeahead', 3 => 'javelin-dom', 4 => 'javelin-uri', 5 => 'javelin-util', 6 => 'javelin-stratcom', ), 'f7379f45' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-shaped-request', ), 'f7fc67ec' => array( 0 => 'javelin-install', 1 => 'javelin-typeahead', 2 => 'javelin-dom', 3 => 'javelin-request', 4 => 'javelin-typeahead-ondemand-source', 5 => 'javelin-util', ), 'f8248bc5' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-json', 4 => 'javelin-stratcom', 5 => 'phabricator-shaped-request', ), 'fb342e18' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-vector', 4 => 'javelin-stratcom', 5 => 'phabricator-menu-item', ), 'fbbce3bf' => array( 0 => 'phabricator-busy', 1 => 'javelin-behavior', ), 'fd27d99a' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-json', 3 => 'javelin-workflow', 4 => 'javelin-magical-init', ), 'fe2e0ba4' => array( 0 => 'javelin-behavior', 1 => 'javelin-behavior-device', 2 => 'javelin-stratcom', 3 => 'javelin-vector', 4 => 'javelin-dom', 5 => 'javelin-magical-init', ), 'fe7fc914' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-request', 4 => 'phabricator-keyboard-shortcut', 5 => 'phabricator-notification', ), 28497740 => array( 0 => 'javelin-behavior', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-dom', 4 => 'javelin-vector', 5 => 'javelin-magical-init', 6 => 'javelin-request', 7 => 'javelin-history', 8 => 'javelin-workflow', 9 => 'javelin-mask', 10 => 'javelin-behavior-device', 11 => 'phabricator-keyboard-shortcut', ), 42126667 => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-request', ), 44524435 => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-dynval', 4 => 'javelin-reactor-dom', ), 95944043 => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-util', 4 => 'phabricator-notification-css', ), 96474586 => array( 0 => 'javelin-install', 1 => 'javelin-reactor', 2 => 'javelin-util', 3 => 'javelin-reactor-node-calmer', ), 96713558 => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'phabricator-notification', ), ), 'packages' => array( 'core.pkg.css' => array( 0 => 'phabricator-core-css', 1 => 'phabricator-zindex-css', 2 => 'phui-button-css', 3 => 'phabricator-standard-page-view', 4 => 'aphront-dialog-view-css', 5 => 'phui-form-view-css', 6 => 'aphront-panel-view-css', 7 => 'aphront-table-view-css', 8 => 'aphront-tokenizer-control-css', 9 => 'aphront-typeahead-control-css', 10 => 'aphront-list-filter-view-css', 11 => 'phabricator-jump-nav', 12 => 'phabricator-remarkup-css', 13 => 'syntax-highlighting-css', 14 => 'aphront-pager-view-css', 15 => 'phabricator-transaction-view-css', 16 => 'aphront-tooltip-css', 17 => 'phabricator-flag-css', 18 => 'aphront-error-view-css', 19 => 'sprite-icons-css', 20 => 'sprite-gradient-css', 21 => 'sprite-menu-css', 22 => 'sprite-apps-large-css', 23 => 'sprite-status-css', 24 => 'phabricator-main-menu-view', 25 => 'phabricator-notification-css', 26 => 'phabricator-notification-menu-css', 27 => 'lightbox-attachment-css', 28 => 'phui-header-view-css', 29 => 'phabricator-filetree-view-css', 30 => 'phabricator-nav-view-css', 31 => 'phabricator-side-menu-view-css', 32 => 'phabricator-crumbs-view-css', 33 => 'phui-object-item-list-view-css', 34 => 'global-drag-and-drop-css', 35 => 'phui-spacing-css', 36 => 'phui-form-css', 37 => 'phui-icon-view-css', 38 => 'phabricator-application-launch-view-css', 39 => 'phabricator-action-list-view-css', 40 => 'phui-property-list-view-css', 41 => 'phui-tag-view-css', 42 => 'phui-list-view-css', ), 'core.pkg.js' => array( 0 => 'javelin-behavior-aphront-basic-tokenizer', 1 => 'javelin-behavior-workflow', 2 => 'javelin-behavior-aphront-form-disable-on-submit', 3 => 'phabricator-keyboard-shortcut-manager', 4 => 'phabricator-keyboard-shortcut', 5 => 'javelin-behavior-phabricator-keyboard-shortcuts', 6 => 'javelin-behavior-refresh-csrf', 7 => 'javelin-behavior-phabricator-watch-anchor', 8 => 'javelin-behavior-phabricator-autofocus', 9 => 'phabricator-menu-item', 10 => 'phabricator-dropdown-menu', 11 => 'phabricator-phtize', 12 => 'javelin-behavior-phabricator-oncopy', 13 => 'phabricator-tooltip', 14 => 'javelin-behavior-phabricator-tooltips', 15 => 'phabricator-prefab', 16 => 'javelin-behavior-device', 17 => 'javelin-behavior-toggle-class', 18 => 'javelin-behavior-lightbox-attachments', 19 => 'phabricator-busy', 20 => 'javelin-aphlict', 21 => 'phabricator-notification', 22 => 'javelin-behavior-aphlict-listen', 23 => 'javelin-behavior-phabricator-search-typeahead', 24 => 'javelin-behavior-konami', 25 => 'javelin-behavior-aphlict-dropdown', 26 => 'javelin-behavior-history-install', 27 => 'javelin-behavior-phabricator-gesture', 28 => 'javelin-behavior-phabricator-active-nav', 29 => 'javelin-behavior-phabricator-nav', 30 => 'javelin-behavior-phabricator-remarkup-assist', 31 => 'phabricator-textareautils', 32 => 'phabricator-file-upload', 33 => 'javelin-behavior-global-drag-and-drop', 34 => 'javelin-behavior-phabricator-reveal-content', 35 => 'phabricator-hovercard', 36 => 'javelin-behavior-phabricator-hovercards', 37 => 'javelin-color', 38 => 'javelin-fx', ), 'darkconsole.pkg.js' => array( 0 => 'javelin-behavior-dark-console', 1 => 'javelin-behavior-error-log', ), 'differential.pkg.css' => array( 0 => 'differential-core-view-css', 1 => 'differential-changeset-view-css', 2 => 'differential-results-table-css', 3 => 'differential-revision-history-css', 4 => 'differential-revision-list-css', 5 => 'differential-table-of-contents-css', 6 => 'differential-revision-comment-css', 7 => 'differential-revision-add-comment-css', 8 => 'differential-revision-comment-list-css', 9 => 'phabricator-object-selector-css', 10 => 'phabricator-content-source-view-css', 11 => 'differential-local-commits-view-css', 12 => 'inline-comment-summary-css', ), 'differential.pkg.js' => array( 0 => 'phabricator-drag-and-drop-file-upload', 1 => 'phabricator-shaped-request', 2 => 'javelin-behavior-differential-feedback-preview', 3 => 'javelin-behavior-differential-edit-inline-comments', 4 => 'javelin-behavior-differential-populate', 5 => 'javelin-behavior-differential-show-more', 6 => 'javelin-behavior-differential-diff-radios', 7 => 'javelin-behavior-differential-accept-with-errors', 8 => 'javelin-behavior-differential-comment-jump', 9 => 'javelin-behavior-differential-add-reviewers-and-ccs', 10 => 'javelin-behavior-differential-keyboard-navigation', 11 => 'javelin-behavior-aphront-drag-and-drop-textarea', 12 => 'javelin-behavior-phabricator-object-selector', 13 => 'javelin-behavior-repository-crossreference', 14 => 'javelin-behavior-load-blame', 15 => 'differential-inline-comment-editor', 16 => 'javelin-behavior-differential-dropdown-menus', 17 => 'javelin-behavior-differential-toggle-files', 18 => 'javelin-behavior-differential-user-select', ), 'diffusion.pkg.css' => array( 0 => 'diffusion-commit-view-css', 1 => 'diffusion-icons-css', ), 'diffusion.pkg.js' => array( 0 => 'javelin-behavior-diffusion-pull-lastmodified', 1 => 'javelin-behavior-diffusion-commit-graph', 2 => 'javelin-behavior-audit-preview', ), 'javelin.pkg.js' => array( 0 => 'javelin-util', 1 => 'javelin-install', 2 => 'javelin-event', 3 => 'javelin-stratcom', 4 => 'javelin-behavior', 5 => 'javelin-resource', 6 => 'javelin-request', 7 => 'javelin-vector', 8 => 'javelin-dom', 9 => 'javelin-json', 10 => 'javelin-uri', 11 => 'javelin-workflow', 12 => 'javelin-mask', 13 => 'javelin-typeahead', 14 => 'javelin-typeahead-normalizer', 15 => 'javelin-typeahead-source', 16 => 'javelin-typeahead-preloaded-source', 17 => 'javelin-typeahead-ondemand-source', 18 => 'javelin-tokenizer', 19 => 'javelin-history', ), 'maniphest.pkg.css' => array( 0 => 'maniphest-task-summary-css', 1 => 'phabricator-project-tag-css', ), 'maniphest.pkg.js' => array( 0 => 'javelin-behavior-maniphest-batch-selector', 1 => 'javelin-behavior-maniphest-transaction-controls', 2 => 'javelin-behavior-maniphest-transaction-preview', 3 => 'javelin-behavior-maniphest-transaction-expand', 4 => 'javelin-behavior-maniphest-subpriority-editor', ), ), ); diff --git a/src/applications/search/controller/PhabricatorApplicationSearchController.php b/src/applications/search/controller/PhabricatorApplicationSearchController.php index a0a0b3d606..14fc701738 100644 --- a/src/applications/search/controller/PhabricatorApplicationSearchController.php +++ b/src/applications/search/controller/PhabricatorApplicationSearchController.php @@ -1,396 +1,396 @@ useOffsetPaging = $use_offset_paging; return $this; } public function getUseOffsetPaging() { return $this->useOffsetPaging; } public function setPreface($preface) { $this->preface = $preface; return $this; } public function getPreface() { return $this->preface; } public function setQueryKey($query_key) { $this->queryKey = $query_key; return $this; } protected function getQueryKey() { return $this->queryKey; } public function setNavigation(AphrontSideNavFilterView $navigation) { $this->navigation = $navigation; return $this; } protected function getNavigation() { return $this->navigation; } public function setSearchEngine( PhabricatorApplicationSearchEngine $search_engine) { $this->searchEngine = $search_engine; return $this; } protected function getSearchEngine() { return $this->searchEngine; } protected function validateDelegatingController() { $parent = $this->getDelegatingController(); if (!$parent) { throw new Exception( "You must delegate to this controller, not invoke it directly."); } $engine = $this->getSearchEngine(); if (!$engine) { throw new Exception( "Call setEngine() before delegating to this controller!"); } $nav = $this->getNavigation(); if (!$nav) { throw new Exception( "Call setNavigation() before delegating to this controller!"); } $engine->setViewer($this->getRequest()->getUser()); $parent = $this->getDelegatingController(); $interface = 'PhabricatorApplicationSearchResultsControllerInterface'; if (!$parent instanceof $interface) { throw new Exception( "Delegating controller must implement '{$interface}'."); } } public function processRequest() { $this->validateDelegatingController(); $key = $this->getQueryKey(); if ($key == 'edit') { return $this->processEditRequest(); } else { return $this->processSearchRequest(); } } private function processSearchRequest() { $parent = $this->getDelegatingController(); $request = $this->getRequest(); $user = $request->getUser(); $engine = $this->getSearchEngine(); $nav = $this->getNavigation(); if ($request->isFormPost()) { $saved_query = $engine->buildSavedQueryFromRequest($request); $this->saveQuery($saved_query); return id(new AphrontRedirectResponse())->setURI( $engine->getQueryResultsPageURI($saved_query->getQueryKey()).'#R'); } $named_query = null; $run_query = true; $query_key = $this->queryKey; if ($this->queryKey == 'advanced') { $run_query = false; $query_key = $request->getStr('query'); } else if (!strlen($this->queryKey)) { $found_query_data = false; if ($request->isHTTPGet()) { // If this is a GET request and it has some query data, don't // do anything unless it's only before= or after=. We'll build and // execute a query from it below. This allows external tools to build // URIs like "/query/?users=a,b". $pt_data = $request->getPassthroughRequestData(); foreach ($pt_data as $pt_key => $pt_value) { if ($pt_key != 'before' && $pt_key != 'after') { $found_query_data = true; break; } } } if (!$found_query_data) { // Otherwise, there's no query data so just run the user's default // query for this application. $query_key = head_key($engine->loadEnabledNamedQueries()); } } if ($engine->isBuiltinQuery($query_key)) { $saved_query = $engine->buildSavedQueryFromBuiltin($query_key); $named_query = idx($engine->loadEnabledNamedQueries(), $query_key); } else if ($query_key) { $saved_query = id(new PhabricatorSavedQueryQuery()) ->setViewer($user) ->withQueryKeys(array($query_key)) ->executeOne(); if (!$saved_query) { return new Aphront404Response(); } $named_query = idx($engine->loadEnabledNamedQueries(), $query_key); } else { $saved_query = $engine->buildSavedQueryFromRequest($request); // Save the query to generate a query key, so "Save Custom Query..." and // other features like Maniphest's "Export..." work correctly. $this->saveQuery($saved_query); } $nav->selectFilter( 'query/'.$saved_query->getQueryKey(), 'query/advanced'); $form = id(new AphrontFormView()) ->setUser($user); $engine->buildSearchForm($form, $saved_query); $errors = $engine->getErrors(); if ($errors) { $run_query = false; $errors = id(new AphrontErrorView()) ->setTitle(pht('Query Errors')) ->setErrors($errors); } $submit = id(new AphrontFormSubmitControl()) ->setValue(pht('Execute Query')); if ($run_query && !$named_query && $user->isLoggedIn()) { $submit->addCancelButton( '/search/edit/'.$saved_query->getQueryKey().'/', pht('Save Custom Query...')); } $form->appendChild($submit); $filter_view = id(new AphrontListFilterView())->appendChild($form); if ($run_query && $named_query) { if ($named_query->getIsBuiltin()) { $description = pht( 'Showing results for query "%s".', $named_query->getQueryName()); } else { $description = pht( 'Showing results for saved query "%s".', $named_query->getQueryName()); } $filter_view->setCollapsed( pht('Edit Query...'), pht('Hide Query'), $description, $this->getApplicationURI('query/advanced/?query='.$query_key)); } if ($this->getPreface()) { $nav->appendChild($this->getPreface()); } $nav->appendChild($filter_view); if ($run_query) { $nav->appendChild( $anchor = id(new PhabricatorAnchorView()) ->setAnchorName('R')); $query = $engine->buildQueryFromSavedQuery($saved_query); $use_offset_paging = $this->getUseOffsetPaging(); if ($use_offset_paging) { $pager = new AphrontPagerView(); } else { $pager = new AphrontCursorPagerView(); } $pager->readFromRequest($request); $page_size = $engine->getPageSize($saved_query); if (is_finite($page_size)) { $pager->setPageSize($page_size); } else { // Consider an INF pagesize to mean a large finite pagesize. // TODO: It would be nice to handle this more gracefully, but math // with INF seems to vary across PHP versions, systems, and runtimes. $pager->setPageSize(0xFFFF); } $query->setViewer($request->getUser()); if ($use_offset_paging) { $objects = $query->executeWithOffsetPager($pager); } else { $objects = $query->executeWithCursorPager($pager); } $list = $parent->renderResultsList($objects, $saved_query); $nav->appendChild($list); // TODO: This is a bit hacky. if ($list instanceof PHUIObjectItemListView) { $list->setNoDataString(pht("No results found for this query.")); $list->setPager($pager); } else { if ($pager->willShowPagingControls()) { $pager_box = id(new PHUIBoxView()) ->addPadding(PHUI::PADDING_MEDIUM) ->addMargin(PHUI::MARGIN_LARGE) - ->setShadow(true) + ->setBorder(true) ->appendChild($pager); $nav->appendChild($pager_box); } } } if ($errors) { $nav->appendChild($errors); } if ($named_query) { $title = pht('Query: %s', $named_query->getQueryName()); } else { $title = pht('Advanced Search'); } $crumbs = $parent ->buildApplicationCrumbs() ->addTextCrumb(pht("Search")); $nav->setCrumbs($crumbs); return $this->buildApplicationPage( $nav, array( 'title' => $title, 'device' => true, )); } private function processEditRequest() { $parent = $this->getDelegatingController(); $request = $this->getRequest(); $user = $request->getUser(); $engine = $this->getSearchEngine(); $nav = $this->getNavigation(); $named_queries = $engine->loadAllNamedQueries(); $list_id = celerity_generate_unique_node_id(); $list = new PHUIObjectItemListView(); $list->setUser($user); $list->setID($list_id); Javelin::initBehavior( 'search-reorder-queries', array( 'listID' => $list_id, 'orderURI' => '/search/order/'.get_class($engine).'/', )); foreach ($named_queries as $named_query) { $class = get_class($engine); $key = $named_query->getQueryKey(); $item = id(new PHUIObjectItemView()) ->setHeader($named_query->getQueryName()) ->setHref($engine->getQueryResultsPageURI($key)); if ($named_query->getIsBuiltin() && $named_query->getIsDisabled()) { $icon = 'new'; } else { $icon = 'delete'; } $item->addAction( id(new PHUIListItemView()) ->setIcon($icon) ->setHref('/search/delete/'.$key.'/'.$class.'/') ->setWorkflow(true)); if ($named_query->getIsBuiltin()) { if ($named_query->getIsDisabled()) { $item->addIcon('delete-grey', pht('Disabled')); $item->setDisabled(true); } else { $item->addIcon('lock-grey', pht('Builtin')); } } else { $item->addAction( id(new PHUIListItemView()) ->setIcon('edit') ->setHref('/search/edit/'.$key.'/')); } $item->setGrippable(true); $item->addSigil('named-query'); $item->setMetadata( array( 'queryKey' => $named_query->getQueryKey(), )); $list->addItem($item); } $list->setNoDataString(pht('No saved queries.')); $crumbs = $parent ->buildApplicationCrumbs() ->addTextCrumb(pht("Saved Queries"), $engine->getQueryManagementURI()); $nav->selectFilter('query/edit'); $nav->setCrumbs($crumbs); $nav->appendChild($list); return $parent->buildApplicationPage( $nav, array( 'title' => pht("Saved Queries"), 'device' => true, )); } private function saveQuery(PhabricatorSavedQuery $query) { $query->setEngineClassName(get_class($this->getSearchEngine())); $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); try { $query->save(); } catch (AphrontQueryDuplicateKeyException $ex) { // Ignore, this is just a repeated search. } unset($unguarded); } protected function buildApplicationMenu() { return $this->getDelegatingController()->buildApplicationMenu(); } } diff --git a/src/applications/search/controller/PhabricatorSearchController.php b/src/applications/search/controller/PhabricatorSearchController.php index aa2d87eb97..cb57c48a2f 100644 --- a/src/applications/search/controller/PhabricatorSearchController.php +++ b/src/applications/search/controller/PhabricatorSearchController.php @@ -1,141 +1,141 @@ queryKey = idx($data, 'queryKey'); } public function processRequest() { $request = $this->getRequest(); $viewer = $request->getUser(); if ($request->getStr('jump') != 'no') { $pref_jump = PhabricatorUserPreferences::PREFERENCE_SEARCHBAR_JUMP; if ($viewer->loadPreferences($pref_jump, 1)) { $response = PhabricatorJumpNavHandler::getJumpResponse( $viewer, $request->getStr('query')); if ($response) { return $response; } } } $engine = new PhabricatorSearchApplicationSearchEngine(); $engine->setViewer($viewer); // NOTE: This is a little weird. If we're coming from primary search, we // load the user's first search filter and overwrite the "query" part of // it, then send them to that result page. This is sort of odd, but lets // users choose a default query like "Open Tasks" in a reasonable way, // with only this piece of somewhat-sketchy code. See discussion in T4365. if ($request->getBool('search:primary')) { $named_queries = $engine->loadEnabledNamedQueries(); if ($named_queries) { $named = head($named_queries); $query_key = $named->getQueryKey(); $saved = null; if ($engine->isBuiltinQuery($query_key)) { $saved = $engine->buildSavedQueryFromBuiltin($query_key); } else { $saved = id(new PhabricatorSavedQueryQuery()) ->setViewer($viewer) ->withQueryKeys(array($query_key)) ->executeOne(); } if ($saved) { $saved->setParameter('query', $request->getStr('query')); $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); try { $saved->setID(null)->save(); } catch (AphrontQueryDuplicateKeyException $ex) { // Ignore, this is just a repeated search. } unset($unguarded); $results_uri = $engine->getQueryResultsPageURI( $saved->getQueryKey()).'#R'; return id(new AphrontRedirectResponse())->setURI($results_uri); } } } $controller = id(new PhabricatorApplicationSearchController($request)) ->setQueryKey($this->queryKey) ->setSearchEngine($engine) ->setUseOffsetPaging(true) ->setNavigation($this->buildSideNavView()); return $this->delegateToController($controller); } public function buildSideNavView($for_app = false) { $viewer = $this->getRequest()->getUser(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); id(new PhabricatorSearchApplicationSearchEngine()) ->setViewer($viewer) ->addNavigationItems($nav->getMenu()); $nav->selectFilter(null); return $nav; } public function renderResultsList( array $results, PhabricatorSavedQuery $query) { $viewer = $this->getRequest()->getUser(); if ($results) { $objects = id(new PhabricatorObjectQuery()) ->setViewer($viewer) ->withPHIDs(mpull($results, 'getPHID')) ->execute(); $output = array(); foreach ($results as $phid => $handle) { $view = id(new PhabricatorSearchResultView()) ->setHandle($handle) ->setQuery($query) ->setObject(idx($objects, $phid)); $output[] = $view->render(); } $results = phutil_tag_div( 'phabricator-search-result-list', $output); } else { $results = phutil_tag_div( 'phabricator-search-result-list', phutil_tag( 'p', array('class' => 'phabricator-search-no-results'), pht('No search results.'))); } return id(new PHUIBoxView()) ->addMargin(PHUI::MARGIN_LARGE) ->addPadding(PHUI::PADDING_LARGE) - ->setShadow(true) + ->setBorder(true) ->appendChild($results) ->addClass('phabricator-search-result-box'); } } diff --git a/src/applications/uiexample/examples/PHUIBoxExample.php b/src/applications/uiexample/examples/PHUIBoxExample.php index d9daecd8cc..22ba0ded29 100644 --- a/src/applications/uiexample/examples/PHUIBoxExample.php +++ b/src/applications/uiexample/examples/PHUIBoxExample.php @@ -1,119 +1,119 @@ appendChild($content1), id(new PHUIBoxView()) ->appendChild($content2), id(new PHUIBoxView()) ->appendChild($content3)); $layout2 = array( id(new PHUIBoxView()) ->appendChild($content1) ->addMargin(PHUI::MARGIN_SMALL_LEFT), id(new PHUIBoxView()) ->appendChild($content2) ->addMargin(PHUI::MARGIN_MEDIUM_LEFT) ->addMargin(PHUI::MARGIN_MEDIUM_TOP), id(new PHUIBoxView()) ->appendChild($content3) ->addMargin(PHUI::MARGIN_LARGE_LEFT) ->addMargin(PHUI::MARGIN_LARGE_TOP)); $layout3 = array( id(new PHUIBoxView()) ->appendChild($content1) - ->setShadow(true) + ->setBorder(true) ->addPadding(PHUI::PADDING_SMALL) ->addMargin(PHUI::MARGIN_LARGE_BOTTOM), id(new PHUIBoxView()) ->appendChild($content2) - ->setShadow(true) + ->setBorder(true) ->addPadding(PHUI::PADDING_MEDIUM) ->addMargin(PHUI::MARGIN_LARGE_BOTTOM), id(new PHUIBoxView()) ->appendChild($content3) - ->setShadow(true) + ->setBorder(true) ->addPadding(PHUI::PADDING_LARGE) ->addMargin(PHUI::MARGIN_LARGE_BOTTOM)); $image = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_ICONS) ->setSpriteIcon('love'); $button = id(new PHUIButtonView()) ->setTag('a') ->setColor(PHUIButtonView::SIMPLE) ->setIcon($image) ->setText('Such Wow') ->addClass(PHUI::MARGIN_SMALL_RIGHT); $header = id(new PHUIHeaderView()) ->setHeader('Fancy Box') ->addActionLink($button); $obj4 = id(new PHUIObjectBoxView()) ->setHeader($header) ->appendChild(id(new PHUIBoxView()) ->addPadding(PHUI::PADDING_MEDIUM) ->appendChild('Such Fancy, Nice Box, Many Corners.')); $head1 = id(new PHUIHeaderView()) ->setHeader(pht('Plain Box')); $head2 = id(new PHUIHeaderView()) ->setHeader(pht('Plain Box with space')); $head3 = id(new PHUIHeaderView()) - ->setHeader(pht('Shadow Box with space')); + ->setHeader(pht('Border Box with space')); $head4 = id(new PHUIHeaderView()) ->setHeader(pht('PHUIObjectBoxView')); $wrap1 = id(new PHUIBoxView()) ->appendChild($layout1) ->addMargin(PHUI::MARGIN_LARGE); $wrap2 = id(new PHUIBoxView()) ->appendChild($layout2) ->addMargin(PHUI::MARGIN_LARGE); $wrap3 = id(new PHUIBoxView()) ->appendChild($layout3) ->addMargin(PHUI::MARGIN_LARGE); return phutil_tag( 'div', array(), array( $head1, $wrap1, $head2, $wrap2, $head3, $wrap3, $head4, $obj4, )); } } diff --git a/src/applications/uiexample/examples/PHUIIconExample.php b/src/applications/uiexample/examples/PHUIIconExample.php index f0cea628a8..ea45f414e2 100644 --- a/src/applications/uiexample/examples/PHUIIconExample.php +++ b/src/applications/uiexample/examples/PHUIIconExample.php @@ -1,218 +1,218 @@ setHeadSize(PHUIIconView::HEAD_MEDIUM); $person1->setHref('http://en.wikipedia.org/wiki/George_Washington'); $person1->setImage( celerity_get_resource_uri('/rsrc/image/people/washington.png')); $person2 = new PHUIIconView(); $person2->setHeadSize(PHUIIconView::HEAD_MEDIUM); $person2->setHref('http://en.wikipedia.org/wiki/Warren_G._Harding'); $person2->setImage( celerity_get_resource_uri('/rsrc/image/people/harding.png')); $person3 = new PHUIIconView(); $person3->setHeadSize(PHUIIconView::HEAD_MEDIUM); $person3->setHref('http://en.wikipedia.org/wiki/William_Howard_Taft'); $person3->setImage( celerity_get_resource_uri('/rsrc/image/people/taft.png')); $person4 = new PHUIIconView(); $person4->setHeadSize(PHUIIconView::HEAD_SMALL); $person4->setHref('http://en.wikipedia.org/wiki/George_Washington'); $person4->setImage( celerity_get_resource_uri('/rsrc/image/people/washington.png')); $person5 = new PHUIIconView(); $person5->setHeadSize(PHUIIconView::HEAD_SMALL); $person5->setHref('http://en.wikipedia.org/wiki/Warren_G._Harding'); $person5->setImage( celerity_get_resource_uri('/rsrc/image/people/harding.png')); $person6 = new PHUIIconView(); $person6->setHeadSize(PHUIIconView::HEAD_SMALL); $person6->setHref('http://en.wikipedia.org/wiki/William_Howard_Taft'); $person6->setImage( celerity_get_resource_uri('/rsrc/image/people/taft.png')); $card1 = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS) ->setSpriteIcon('visa') ->addClass(PHUI::MARGIN_SMALL_RIGHT); $card2 = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS) ->setSpriteIcon('mastercard') ->addClass(PHUI::MARGIN_SMALL_RIGHT); $card3 = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS) ->setSpriteIcon('paypal') ->addClass(PHUI::MARGIN_SMALL_RIGHT); $card4 = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS) ->setSpriteIcon('americanexpress') ->addClass(PHUI::MARGIN_SMALL_RIGHT); $card5 = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS) ->setSpriteIcon('googlecheckout'); $actions = array( 'settings-grey', 'heart-grey', 'tag-grey', 'new-grey', 'search-grey', 'move-grey'); $actionview = array(); foreach ($actions as $action) { $actionview[] = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_ACTIONS) ->setSpriteIcon($action) ->setHref('#'); } $tokens = array( 'like-1', 'like-2', 'heart-1', 'heart-2'); $tokenview = array(); foreach ($tokens as $token) { $tokenview[] = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_TOKENS) ->setSpriteIcon($token); } $logins = array( 'Asana', 'Dropbox', 'Google', 'Github'); $loginview = array(); foreach ($logins as $login) { $loginview[] = id(new PHUIIconView()) ->setSpriteSheet(PHUIIconView::SPRITE_LOGIN) ->setSpriteIcon($login) ->addClass(PHUI::MARGIN_SMALL_RIGHT); } $layout1 = array( id(new PHUIBoxView()) ->appendChild($actionview) ->addMargin(PHUI::MARGIN_MEDIUM) ->addPadding(PHUI::PADDING_SMALL) - ->setShadow(true)); + ->setBorder(true)); $layout2 = array( id(new PHUIBoxView()) ->appendChild(array($person1, $person2, $person3)) ->addMargin(PHUI::MARGIN_MEDIUM) ->addPadding(PHUI::PADDING_SMALL) - ->setShadow(true)); + ->setBorder(true)); $layout2a = array( id(new PHUIBoxView()) ->appendChild(array($person4, $person5, $person6)) ->addMargin(PHUI::MARGIN_MEDIUM) ->addPadding(PHUI::PADDING_SMALL) - ->setShadow(true)); + ->setBorder(true)); $layout3 = array( id(new PHUIBoxView()) ->appendChild($tokenview) ->addMargin(PHUI::MARGIN_MEDIUM) ->addPadding(PHUI::PADDING_SMALL) - ->setShadow(true)); + ->setBorder(true)); $layout4 = array( id(new PHUIBoxView()) ->appendChild(array($card1, $card2, $card3, $card4, $card5)) ->addMargin(PHUI::MARGIN_MEDIUM) ->addPadding(PHUI::PADDING_MEDIUM) - ->setShadow(true)); + ->setBorder(true)); $layout5 = array( id(new PHUIBoxView()) ->appendChild($loginview) ->addMargin(PHUI::MARGIN_MEDIUM) ->addPadding(PHUI::PADDING_MEDIUM) - ->setShadow(true)); + ->setBorder(true)); $head1 = id(new PHUIHeaderView()) ->setHeader(pht('Action Icons!')); $head2 = id(new PHUIHeaderView()) ->setHeader(pht('People!')); $head3 = id(new PHUIHeaderView()) ->setHeader(pht('Tokens')); $head4 = id(new PHUIHeaderView()) ->setHeader(pht('Payments')); $head5 = id(new PHUIHeaderView()) ->setHeader(pht('Authentication')); $wrap1 = id(new PHUIBoxView()) ->appendChild($layout1) ->addMargin(PHUI::MARGIN_LARGE); $wrap2 = id(new PHUIBoxView()) ->appendChild(array($layout2, $layout2a)) ->addMargin(PHUI::MARGIN_LARGE); $wrap3 = id(new PHUIBoxView()) ->appendChild($layout3) ->addMargin(PHUI::MARGIN_LARGE); $wrap4 = id(new PHUIBoxView()) ->appendChild($layout4) ->addMargin(PHUI::MARGIN_LARGE); $wrap5 = id(new PHUIBoxView()) ->appendChild($layout5) ->addMargin(PHUI::MARGIN_LARGE); return phutil_tag( 'div', array( 'class' => 'phui-icon-example', ), array( $head1, $wrap1, $head2, $wrap2, $head3, $wrap3, $head4, $wrap4, $head5, $wrap5 )); } } diff --git a/src/applications/uiexample/examples/PHUIListExample.php b/src/applications/uiexample/examples/PHUIListExample.php index 6e70e21672..d9d100bf45 100644 --- a/src/applications/uiexample/examples/PHUIListExample.php +++ b/src/applications/uiexample/examples/PHUIListExample.php @@ -1,297 +1,297 @@ setName('Edit Document') ->setHref('#') ->setIcon('edit') ->setType(PHUIListItemView::TYPE_LINK); $action2 = id(new PHUIListItemView()) ->setName('Move Document') ->setHref('#') ->setIcon('move') ->setType(PHUIListItemView::TYPE_LINK); $action3 = id(new PHUIListItemView()) ->setName('Delete Document') ->setHref('#') ->setIcon('delete') ->setType(PHUIListItemView::TYPE_LINK); $action4 = id(new PHUIListItemView()) ->setName('View History') ->setHref('#') ->setIcon('history') ->setType(PHUIListItemView::TYPE_LINK); $action5 = id(new PHUIListItemView()) ->setName('Subscribe') ->setHref('#') ->setIcon('check') ->setType(PHUIListItemView::TYPE_LINK); $actionmenu = id(new PHUIListView()) ->setType(PHUIListView::SIDENAV_LIST) ->addMenuItem($action1) ->addMenuItem($action2) ->addMenuItem($action3) ->addMenuItem($action4) ->addMenuItem($action5); /* Side Navigation */ $label1 = id(new PHUIListItemView()) ->setName('Getting Started') ->setType(PHUIListItemView::TYPE_LABEL); $label2 = id(new PHUIListItemView()) ->setName('Documentation') ->setType(PHUIListItemView::TYPE_LABEL); $item1 = id(new PHUIListItemView()) ->setName('Installation') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $item2 = id(new PHUIListItemView()) ->setName('Webserver Config') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $item3 = id(new PHUIListItemView()) ->setName('Adding Users') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $item4 = id(new PHUIListItemView()) ->setName('Debugging') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $divider = id(new PHUIListItemView) ->setType(PHUIListItemView::TYPE_DIVIDER); $sidenav = id(new PHUIListView()) ->setType(PHUIListView::SIDENAV_LIST) ->addMenuItem($label1) ->addMenuItem($item3) ->addMenuItem($item2) ->addMenuItem($item1) ->addMenuItem($item4) ->addMenuItem($divider) ->addMenuItem($label2) ->addMenuItem($item3) ->addMenuItem($item2) ->addMenuItem($item1) ->addMenuItem($item4); /* Unstyled */ $item1 = id(new PHUIListItemView()) ->setName('Rain'); $item2 = id(new PHUIListItemView()) ->setName('Spain'); $item3 = id(new PHUIListItemView()) ->setName('Mainly'); $item4 = id(new PHUIListItemView()) ->setName('Plains'); $unstyled = id(new PHUIListView()) ->addMenuItem($item1) ->addMenuItem($item2) ->addMenuItem($item3) ->addMenuItem($item4); /* Top Navigation */ $home = id(new PHUIListItemView()) ->setIcon('home') ->setHref('#') ->setType(PHUIListItemView::TYPE_ICON); $item1 = id(new PHUIListItemView()) ->setName('Installation') ->setHref('#') ->setSelected(true) ->setType(PHUIListItemView::TYPE_LINK); $item2 = id(new PHUIListItemView()) ->setName('Webserver Config') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $item3 = id(new PHUIListItemView()) ->setName('Adding Users') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $item4 = id(new PHUIListItemView()) ->setName('Debugging') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $item1 = id(new PHUIListItemView()) ->setName('Installation') ->setHref('#') ->setSelected(true) ->setType(PHUIListItemView::TYPE_LINK); $item2 = id(new PHUIListItemView()) ->setName('Webserver Config') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $details1 = id(new PHUIListItemView()) ->setName('Details') ->setHref('#') ->setSelected(true) ->setType(PHUIListItemView::TYPE_LINK); $details2 = id(new PHUIListItemView()) ->setName('Lint (OK)') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $details3 = id(new PHUIListItemView()) ->setName('Unit (5/5)') ->setHref('#') ->setType(PHUIListItemView::TYPE_LINK); $details4 = id(new PHUIListItemView()) ->setName('Lint (Warn)') ->setHref('#') ->setStatusColor(PHUIListItemView::STATUS_WARN) ->setType(PHUIListItemView::TYPE_LINK); $details5 = id(new PHUIListItemView()) ->setName('Unit (3/5)') ->setHref('#') ->setStatusColor(PHUIListItemView::STATUS_FAIL) ->setType(PHUIListItemView::TYPE_LINK); $topnav = id(new PHUIListView()) ->setType(PHUIListView::NAVBAR_LIST) ->addMenuItem($home) ->addMenuItem($item1) ->addMenuItem($item2) ->addMenuItem($item3) ->addMenuItem($item4); $statustabs = id(new PHUIListView()) ->setType(PHUIListView::NAVBAR_LIST) ->addMenuItem($details1) ->addMenuItem($details2) ->addMenuItem($details3) ->addMenuItem($details4) ->addMenuItem($details5); $layout1 = array( id(new PHUIBoxView()) ->appendChild($unstyled) ->addMargin(PHUI::MARGIN_MEDIUM) ->addPadding(PHUI::PADDING_SMALL) - ->setShadow(true)); + ->setBorder(true)); $layout2 = array( id(new PHUIBoxView()) ->appendChild($sidenav) ->addMargin(PHUI::MARGIN_MEDIUM) - ->setShadow(true)); + ->setBorder(true)); $layout3 = array( id(new PHUIBoxView()) ->appendChild($topnav) ->addMargin(PHUI::MARGIN_MEDIUM) - ->setShadow(true)); + ->setBorder(true)); $layout4 = array( id(new PHUIBoxView()) ->appendChild($actionmenu) ->addMargin(PHUI::MARGIN_MEDIUM) - ->setShadow(true)); + ->setBorder(true)); $layout5 = array( id(new PHUIBoxView()) ->appendChild($statustabs) ->addMargin(PHUI::MARGIN_MEDIUM) - ->setShadow(true)); + ->setBorder(true)); $head1 = id(new PHUIHeaderView()) ->setHeader(pht('Unstyled')); $head2 = id(new PHUIHeaderView()) ->setHeader(pht('Side Navigation')); $head3 = id(new PHUIHeaderView()) ->setHeader(pht('Top Navigation')); $head4 = id(new PHUIHeaderView()) ->setHeader(pht('Action Menu')); $head5 = id(new PHUIHeaderView()) ->setHeader(pht('Status Tabs')); $wrap1 = id(new PHUIBoxView()) ->appendChild($layout1) ->addMargin(PHUI::MARGIN_LARGE); $wrap2 = id(new PHUIBoxView()) ->appendChild($layout2) ->addMargin(PHUI::MARGIN_LARGE); $wrap3 = id(new PHUIBoxView()) ->appendChild($layout3) ->addMargin(PHUI::MARGIN_LARGE); $wrap4 = id(new PHUIBoxView()) ->appendChild($layout4) ->addMargin(PHUI::MARGIN_LARGE); $wrap5 = id(new PHUIBoxView()) ->appendChild($layout5) ->addMargin(PHUI::MARGIN_LARGE); return phutil_tag( 'div', array( 'class' => 'phui-list-example', ), array( $head1, $wrap1, $head2, $wrap2, $head3, $wrap3, $head5, $wrap5, $head4, $wrap4 )); } } diff --git a/src/applications/uiexample/examples/PHUITextExample.php b/src/applications/uiexample/examples/PHUITextExample.php index 47af6a6a47..7d650a9237 100644 --- a/src/applications/uiexample/examples/PHUITextExample.php +++ b/src/applications/uiexample/examples/PHUITextExample.php @@ -1,105 +1,105 @@ setText($color1) ->addClass(PHUI::TEXT_RED), id(new PHUITextView()) ->setText($color2) ->addClass(PHUI::TEXT_ORANGE), id(new PHUITextView()) ->setText($color3) ->addClass(PHUI::TEXT_YELLOW), id(new PHUITextView()) ->setText($color4) ->addClass(PHUI::TEXT_GREEN), id(new PHUITextView()) ->setText($color5) ->addClass(PHUI::TEXT_BLUE), id(new PHUITextView()) ->setText($color6) ->addClass(PHUI::TEXT_INDIGO), id(new PHUITextView()) ->setText($color7) ->addClass(PHUI::TEXT_VIOLET), id(new PHUITextView()) ->setText($color8) ->addClass(PHUI::TEXT_WHITE), id(new PHUITextView()) ->setText($color9) ->addClass(PHUI::TEXT_BLACK)); $content2 = array( id(new PHUITextView()) ->setText($text1) ->addClass(PHUI::TEXT_BOLD), id(new PHUITextView()) ->setText($text2) ->addClass(PHUI::TEXT_UPPERCASE), id(new PHUITextView()) ->setText($text3) ->addClass(PHUI::TEXT_STRIKE)); $layout1 = id(new PHUIBoxView()) ->appendChild($content) - ->setShadow(true) + ->setBorder(true) ->addPadding(PHUI::PADDING_MEDIUM); $head1 = id(new PHUIHeaderView()) ->setHeader(pht('Basic Colors')); $wrap1 = id(new PHUIBoxView()) ->appendChild($layout1) ->addMargin(PHUI::MARGIN_LARGE); $layout2 = id(new PHUIBoxView()) ->appendChild($content2) - ->setShadow(true) + ->setBorder(true) ->addPadding(PHUI::PADDING_MEDIUM); $head2 = id(new PHUIHeaderView()) ->setHeader(pht('Basic Transforms')); $wrap2 = id(new PHUIBoxView()) ->appendChild($layout2) ->addMargin(PHUI::MARGIN_LARGE); return phutil_tag( 'div', array(), array( $head1, $wrap1, $head2, $wrap2 )); } } diff --git a/src/applications/uiexample/examples/PhabricatorMultiColumnExample.php b/src/applications/uiexample/examples/PhabricatorMultiColumnExample.php index bf43872f90..83df527c1c 100644 --- a/src/applications/uiexample/examples/PhabricatorMultiColumnExample.php +++ b/src/applications/uiexample/examples/PhabricatorMultiColumnExample.php @@ -1,225 +1,225 @@ getRequest(); $user = $request->getUser(); $column1 = phutil_tag( 'div', array( 'class' => 'pm', 'style' => 'border: 1px solid green;' ), 'Bruce Campbell'); $column2 = phutil_tag( 'div', array( 'class' => 'pm', 'style' => 'border: 1px solid blue;' ), 'Army of Darkness'); $head1 = id(new PHUIHeaderView()) ->setHeader(pht('2 Column Fixed')); $layout1 = id(new AphrontMultiColumnView()) ->addColumn($column1) ->addColumn($column2) ->setGutter(AphrontMultiColumnView::GUTTER_MEDIUM); $head2 = id(new PHUIHeaderView()) ->setHeader(pht('2 Column Fluid')); $layout2 = id(new AphrontMultiColumnView()) ->addColumn($column1) ->addColumn($column2) ->setFluidLayout(true) ->setGutter(AphrontMultiColumnView::GUTTER_MEDIUM); $head3 = id(new PHUIHeaderView()) ->setHeader(pht('4 Column Fixed')); $layout3 = id(new AphrontMultiColumnView()) ->addColumn($column1) ->addColumn($column2) ->addColumn($column1) ->addColumn($column2) ->setGutter(AphrontMultiColumnView::GUTTER_SMALL); $head4 = id(new PHUIHeaderView()) ->setHeader(pht('4 Column Fluid')); $layout4 = id(new AphrontMultiColumnView()) ->addColumn($column1) ->addColumn($column2) ->addColumn($column1) ->addColumn($column2) ->setFluidLayout(true) ->setGutter(AphrontMultiColumnView::GUTTER_SMALL); $sunday = hsprintf('Sunday

Watch Football'. '
Code
Eat
Sleep'); $monday = hsprintf('Monday

Code'. '
Eat
Sleep'); $tuesday = hsprintf('Tuesday
'. '
Code
Eat
Sleep'); $wednesday = hsprintf('Wednesday

Code'. '
Eat
Sleep'); $thursday = hsprintf('Thursday
'. '
Code
Eat
Sleep'); $friday = hsprintf('Friday

Code'. '
Eat
Sleep'); $saturday = hsprintf('Saturday

StarCraft II'. '
All
Damn
Day'); $head5 = id(new PHUIHeaderView()) ->setHeader(pht('7 Column Fluid')); $layout5 = id(new AphrontMultiColumnView()) ->addColumn($sunday) ->addColumn($monday) ->addColumn($tuesday) ->addColumn($wednesday) ->addColumn($thursday) ->addColumn($friday) ->addColumn($saturday) ->setFluidLayout(true) - ->setShadow(true); + ->setBorder(true); $shipping = id(new PHUIFormLayoutView()) ->setUser($user) ->setFullWidth(true) ->appendChild( id(new AphrontFormTextControl()) ->setLabel('Name') ->setDisableAutocomplete(true) ->setSigil('name-input')) ->appendChild( id(new AphrontFormTextControl()) ->setLabel('Address') ->setDisableAutocomplete(true) ->setSigil('address-input')) ->appendChild( id(new AphrontFormTextControl()) ->setLabel('City/State') ->setDisableAutocomplete(true) ->setSigil('city-input')) ->appendChild( id(new AphrontFormTextControl()) ->setLabel('Country') ->setDisableAutocomplete(true) ->setSigil('country-input')) ->appendChild( id(new AphrontFormTextControl()) ->setLabel('Postal Code') ->setDisableAutocomplete(true) ->setSigil('postal-input')); $cc = id(new PHUIFormLayoutView()) ->setUser($user) ->setFullWidth(true) ->appendChild( id(new AphrontFormTextControl()) ->setLabel('Card Number') ->setDisableAutocomplete(true) ->setSigil('number-input') ->setError('')) ->appendChild( id(new AphrontFormTextControl()) ->setLabel('CVC') ->setDisableAutocomplete(true) ->setSigil('cvc-input') ->setError('')) ->appendChild( id(new PhortuneMonthYearExpiryControl()) ->setLabel('Expiration') ->setUser($user) ->setError('')); $shipping_title = pht('Shipping Address'); $billing_title = pht('Billing Address'); $cc_title = pht('Payment Information'); $head6 = id(new PHUIHeaderView()) ->setHeader(pht('Let\'s Go Shopping')); $layout6 = id(new AphrontMultiColumnView()) ->addColumn(hsprintf('

%s

%s', $shipping_title, $shipping)) ->addColumn(hsprintf('

%s

%s', $billing_title, $shipping)) ->addColumn(hsprintf('

%s

%s', $cc_title, $cc)) ->setFluidLayout(true) - ->setShadow(true); + ->setBorder(true); $wrap1 = phutil_tag( 'div', array( 'class' => 'ml' ), $layout1); $wrap2 = phutil_tag( 'div', array( 'class' => 'ml' ), $layout2); $wrap3 = phutil_tag( 'div', array( 'class' => 'ml' ), $layout3); $wrap4 = phutil_tag( 'div', array( 'class' => 'ml' ), $layout4); $wrap5 = phutil_tag( 'div', array( 'class' => 'ml' ), $layout5); $wrap6 = phutil_tag( 'div', array( 'class' => 'ml' ), $layout6); return phutil_tag( 'div', array(), array( $head1, $wrap1, $head2, $wrap2, $head3, $wrap3, $head4, $wrap4, $head5, $wrap5, $head6, $wrap6 )); } } diff --git a/src/applications/uiexample/examples/PhabricatorUIStatusExample.php b/src/applications/uiexample/examples/PhabricatorUIStatusExample.php index ac18adad84..9237ec6be8 100644 --- a/src/applications/uiexample/examples/PhabricatorUIStatusExample.php +++ b/src/applications/uiexample/examples/PhabricatorUIStatusExample.php @@ -1,79 +1,79 @@ PHUIStatusListView to show relationships with objects.'); } public function renderExample() { $out = array(); $view = new PHUIStatusListView(); $view->addItem( id(new PHUIStatusItemView()) ->setIcon('accept-green', pht('Yum')) ->setTarget(pht('Apple')) ->setNote(pht('You can eat them.'))); $view->addItem( id(new PHUIStatusItemView()) ->setIcon('add-blue', pht('Has Peel')) ->setTarget(pht('Banana')) ->setNote(pht('Comes in bunches.')) ->setHighlighted(true)); $view->addItem( id(new PHUIStatusItemView()) ->setIcon('warning-dark', pht('Caution')) ->setTarget(pht('Pomegranite')) ->setNote(pht('Lots of seeds. Watch out.'))); $view->addItem( id(new PHUIStatusItemView()) ->setIcon('reject-red', pht('Bleh!')) ->setTarget(pht('Zucchini')) ->setNote(pht('Slimy and gross. Yuck!'))); $out[] = id(new PHUIHeaderView()) ->setHeader(pht('Fruit and Vegetable Status')); $out[] = id(new PHUIBoxView()) ->addMargin(PHUI::MARGIN_LARGE) ->addPadding(PHUI::PADDING_LARGE) - ->setShadow(true) + ->setBorder(true) ->appendChild($view); $view = new PHUIStatusListView(); $manifest = PHUIIconView::getSheetManifest(PHUIIconView::SPRITE_STATUS); foreach ($manifest as $sprite) { $name = substr($sprite['name'], strlen('status-')); $view->addItem( id(new PHUIStatusItemView()) ->setIcon($name) ->setTarget($name)); } $out[] = id(new PHUIHeaderView()) ->setHeader(pht('All Icons')); $out[] = id(new PHUIBoxView()) ->addMargin(PHUI::MARGIN_LARGE) ->addPadding(PHUI::PADDING_LARGE) - ->setShadow(true) + ->setBorder(true) ->appendChild($view); return $out; } } diff --git a/src/view/layout/AphrontMultiColumnView.php b/src/view/layout/AphrontMultiColumnView.php index 56622c43dd..e314cb2a6b 100644 --- a/src/view/layout/AphrontMultiColumnView.php +++ b/src/view/layout/AphrontMultiColumnView.php @@ -1,124 +1,124 @@ columns[] = $column; return $this; } public function setFluidlayout($layout) { $this->fluidLayout = $layout; return $this; } public function setFluidishLayout($layout) { $this->fluidLayout = true; $this->fluidishLayout = $layout; return $this; } public function setGutter($gutter) { $this->gutter = $gutter; return $this; } - public function setShadow($shadow) { - $this->shadow = $shadow; + public function setBorder($border) { + $this->border = $border; return $this; } public function render() { require_celerity_resource('aphront-multi-column-view-css'); $classes = array(); $classes[] = 'aphront-multi-column-inner'; $classes[] = 'grouped'; if (count($this->columns) > 7) { throw new Exception("No more than 7 columns per view."); } $classes[] = 'aphront-multi-column-'.count($this->columns).'-up'; $columns = array(); $column_class = array(); $column_class[] = 'aphront-multi-column-column'; $outer_class = array(); $outer_class[] = 'aphront-multi-column-column-outer'; if ($this->gutter) { $column_class[] = $this->gutter; } $i = 0; foreach ($this->columns as $column) { if (++$i === count($this->columns)) { $column_class[] = 'aphront-multi-column-column-last'; $outer_class[] = 'aphront-multi-colum-column-outer-last'; } $column_inner = phutil_tag( 'div', array( 'class' => implode(' ', $column_class) ), $column); $columns[] = phutil_tag( 'div', array( 'class' => implode(' ', $outer_class) ), $column_inner); } $view = phutil_tag( 'div', array( 'class' => implode(' ', $classes), ), array( $columns, )); $classes = array(); $classes[] = 'aphront-multi-column-outer'; if ($this->fluidLayout) { $classes[] = 'aphront-multi-column-fluid'; if ($this->fluidishLayout) { $classes[] = 'aphront-multi-column-fluidish'; } } else { $classes[] = 'aphront-multi-column-fixed'; } $board = phutil_tag( 'div', array( 'class' => implode(' ', $classes) ), $view); - if ($this->shadow) { + if ($this->border) { $board = id(new PHUIBoxView()) - ->setShadow(true) + ->setBorder(true) ->appendChild($board) ->addPadding(PHUI::PADDING_MEDIUM_TOP) ->addPadding(PHUI::PADDING_MEDIUM_BOTTOM); } return phutil_tag( 'div', array( 'class' => 'aphront-multi-column-view' ), $board); } } diff --git a/src/view/phui/PHUIBoxView.php b/src/view/phui/PHUIBoxView.php index 86e6d3226a..45d855c9c5 100644 --- a/src/view/phui/PHUIBoxView.php +++ b/src/view/phui/PHUIBoxView.php @@ -1,66 +1,57 @@ margin[] = $margin; return $this; } public function addPadding($padding) { $this->padding[] = $padding; return $this; } - public function setShadow($shadow) { - $this->shadow = $shadow; - return $this; - } - public function setBorder($border) { $this->border = $border; return $this; } protected function getTagAttributes() { $outer_classes = array(); $outer_classes[] = 'phui-box'; - if ($this->shadow) { - $outer_classes[] = 'phui-box-shadow'; - } if ($this->border) { $outer_classes[] = 'phui-box-border'; } foreach ($this->margin as $margin) { $outer_classes[] = $margin; } return array('class' => $outer_classes); } public function getTagName() { return 'div'; } public function getTagContent() { require_celerity_resource('phui-box-css'); $inner_classes = array(); $inner_classes[] = 'phui-box-inner'; foreach ($this->padding as $padding) { $inner_classes[] = $padding; } return phutil_tag( 'div', array( 'class' => implode(' ', $inner_classes) ), $this->renderChildren()); } } diff --git a/src/view/phui/PHUIFeedStoryView.php b/src/view/phui/PHUIFeedStoryView.php index 3b9183dab9..edf26ba7d6 100644 --- a/src/view/phui/PHUIFeedStoryView.php +++ b/src/view/phui/PHUIFeedStoryView.php @@ -1,283 +1,283 @@ chronologicalKey = $chronological_key; return $this; } public function getChronologicalKey() { return $this->chronologicalKey; } public function setTitle($title) { $this->title = $title; return $this; } public function setEpoch($epoch) { $this->epoch = $epoch; return $this; } public function setImage($image) { $this->image = $image; return $this; } public function setImageHref($image_href) { $this->imageHref = $image_href; return $this; } public function setAppIcon($icon) { $this->appIcon = $icon; return $this; } public function setViewed($viewed) { $this->viewed = $viewed; return $this; } public function getViewed() { return $this->viewed; } public function setHref($href) { $this->href = $href; return $this; } public function setTokenBar(array $tokens) { $this->tokenBar = $tokens; return $this; } public function addProject($project) { $this->projects[] = $project; return $this; } public function addAction(PHUIIconView $action) { $this->actions[] = $action; return $this; } public function setPontification($text, $title = null) { if ($title) { $title = phutil_tag('h3', array(), $title); } $copy = phutil_tag( 'div', array( 'class' => 'phui-feed-story-bigtext-post', ), array( $title, $text)); $this->appendChild($copy); return $this; } public function getHref() { return $this->href; } public function renderNotification($user) { $classes = array( 'phabricator-notification', ); if (!$this->viewed) { $classes[] = 'phabricator-notification-unread'; } if ($this->epoch) { if ($user) { $foot = phabricator_datetime($this->epoch, $user); $foot = phutil_tag( 'span', array( 'class' => 'phabricator-notification-date'), $foot); } else { $foot = null; } } else { $foot = pht('No time specified.'); } return javelin_tag( 'div', array( 'class' => implode(' ', $classes), 'sigil' => 'notification', 'meta' => array( 'href' => $this->getHref(), ), ), array($this->title, $foot)); } public function render() { require_celerity_resource('phui-feed-story-css'); Javelin::initBehavior('phabricator-hovercards'); $oneline = !$this->hasChildren(); $body = null; $foot = null; $image_style = null; $actor = ''; if ($this->image) { $actor = new PHUIIconView(); $actor->setImage($this->image); $actor->addClass('phui-feed-story-actor-image'); if ($this->imageHref) { $actor->setHref($this->imageHref); } } if ($this->epoch) { // TODO: This is really bad; when rendering through Conduit and via // renderText() we don't have a user. if ($this->user) { $foot = phabricator_datetime($this->epoch, $this->user); } else { $foot = null; } } else { $foot = pht('No time specified.'); } if ($this->chronologicalKey) { $foot = phutil_tag( 'a', array( 'href' => '/feed/'.$this->chronologicalKey.'/', ), $foot); } $icon = null; if ($this->appIcon) { $icon = new PHUIIconView(); $icon->setSpriteIcon($this->appIcon); $icon->setSpriteSheet(PHUIIconView::SPRITE_APPS); } $ol_foot = null; if ($oneline) { $ol_foot = phutil_tag( 'div', array( 'class' => 'phui-feed-story-oneline-foot' ), array( $icon, $foot)); } $action_list = array(); $icons = null; foreach ($this->actions as $action) { $action_list[] = phutil_tag( 'li', array( 'class' => 'phui-feed-story-action-item' ), $action); } if (!empty($action_list)) { $icons = phutil_tag( 'ul', array( 'class' => 'phui-feed-story-action-list' ), $action_list); } $head = phutil_tag( 'div', array( 'class' => 'phui-feed-story-head', ), array( (!$oneline ? $actor : null), nonempty($this->title, pht('Untitled Story')), $icons, $ol_foot )); if (!empty($this->tokenBar)) { $tokenview = phutil_tag( 'div', array( 'class' => 'phui-feed-token-bar' ), $this->tokenBar); $this->appendChild($tokenview); } $body_content = $this->renderChildren(); if ($body_content) { $body = phutil_tag( 'div', array( 'class' => 'phui-feed-story-body', ), $body_content); } if ($oneline) { $foot = null; } else { $foot = phutil_tag( 'div', array( 'class' => 'phui-feed-story-foot', ), array( $icon, $foot)); } $classes = array('phui-feed-story'); if ($oneline) { $classes[] = 'phui-feed-story-oneline'; } return id(new PHUIBoxView()) ->addClass(implode(' ', $classes)) - ->setShadow(true) + ->setBorder(true) ->addMargin(PHUI::MARGIN_MEDIUM_BOTTOM) ->appendChild(array($head, $body, $foot)); } public function setAppIconFromPHID($phid) { switch (phid_get_type($phid)) { case PholioPHIDTypeMock::TYPECONST: $this->setAppIcon("pholio-dark"); break; case PhabricatorMacroPHIDTypeMacro::TYPECONST: $this->setAppIcon("macro-dark"); break; } } } diff --git a/webroot/rsrc/css/aphront/multi-column.css b/webroot/rsrc/css/aphront/multi-column.css index 5f644464c2..64f3236ed9 100644 --- a/webroot/rsrc/css/aphront/multi-column.css +++ b/webroot/rsrc/css/aphront/multi-column.css @@ -1,145 +1,145 @@ /** * @provides aphront-multi-column-view-css */ .aphront-multi-column-view { width: 100%; } .device .aphront-multi-column-outer { padding: 0; margin: 0 auto; width: 100%; } .aphront-multi-column-inner .aphront-multi-column-column-last, .device .aphront-multi-column-column { margin: 0; } .device .aphront-multi-column-outer div.aphront-multi-column-column-outer { width: auto; margin-bottom: 16px; } .device .aphront-multi-column-fixed .aphront-multi-column-inner { width: 100%; } .aphront-multi-column-fixed .aphront-multi-column-column-outer { width: 300px; } /* flexible, but with a minimum */ .device-desktop .aphront-multi-column-fluidish .aphront-multi-column-1-up { min-width: 200px; } .device-desktop .aphront-multi-column-fluidish .aphront-multi-column-2-up { min-width: 400px; } .device-desktop .aphront-multi-column-fluidish .aphront-multi-column-3-up { min-width: 600px; } .device-desktop .aphront-multi-column-fluidish .aphront-multi-column-4-up { min-width: 800px; } .device-desktop .aphront-multi-column-fluidish .aphront-multi-column-5-up { min-width: 1000px; } .device-desktop .aphront-multi-column-fluidish .aphront-multi-column-6-up { min-width: 1200px; } .device-desktop .aphront-multi-column-fluidish .aphront-multi-column-7-up { min-width: 1400px; } /* table division */ .aphront-multi-column-fluid .aphront-multi-column-1-up .aphront-multi-column-column-outer { width: 100%; } .aphront-multi-column-fluid .aphront-multi-column-2-up .aphront-multi-column-column-outer { width: 50%; } .aphront-multi-column-fluid .aphront-multi-column-3-up .aphront-multi-column-column-outer { width: 33.3333%; } .aphront-multi-column-fluid .aphront-multi-column-4-up .aphront-multi-column-column-outer { width: 25%; } .aphront-multi-column-fluid .aphront-multi-column-5-up .aphront-multi-column-column-outer { width: 20%; } .aphront-multi-column-fluid .aphront-multi-column-6-up .aphront-multi-column-column-outer { width: 16.6666%; } .aphront-multi-column-fluid .aphront-multi-column-7-up .aphront-multi-column-column-outer { width: 14.2857%; } /* Shadow Panels */ .aphront-multi-column-inner { display: table; width: 100%; } /* magic sauce */ .aphront-multi-column-fluid .aphront-multi-column-inner { table-layout: fixed; } .device .aphront-multi-column-inner { display: block; width: auto; } .aphront-multi-column-column-outer { display: table-cell; height: 100%; vertical-align: top; } -.phui-box-shadow .aphront-multi-column-column-outer { - border-right: 1px solid #e7e7e7; - padding-left: 10px; - padding-right: 10px; +.phui-box-border .aphront-multi-column-column-outer { + border-right: 1px solid {$lightblueborder}; + padding-left: 8px; + padding-right: 8px; } .phui-box-shadow .aphront-multi-colum-column-outer-last { border: none; } .device .aphront-multi-column-column-outer { display: block; border: none; } -.device .phui-box-shadow .aphront-multi-column-column-outer { - padding-bottom: 20px; +.device .phui-box-border .aphront-multi-column-column-outer { + padding-bottom: 16px; border-bottom: 1px solid #e7e7e7; } -.device .phui-box-shadow .aphront-multi-colum-column-outer-last { +.device .phui-box-border .aphront-multi-colum-column-outer-last { border: none; padding-bottom: 0; } diff --git a/webroot/rsrc/css/phui/phui-box.css b/webroot/rsrc/css/phui/phui-box.css index 8b370802a5..aa58be3d26 100644 --- a/webroot/rsrc/css/phui/phui-box.css +++ b/webroot/rsrc/css/phui/phui-box.css @@ -1,30 +1,19 @@ /** * @provides phui-box-css */ -.phui-box-shadow { - border-left: 1px solid #e7e7e7; - border-right: 1px solid #e7e7e7; - border-bottom: 1px solid #c0c5d1; -} - -.phui-box-shadow .phui-box-inner { - background-color: #fff; - box-shadow: 0 1px 2px rgba(0,0,0,0.2); -} - .phui-box-border { border: 1px solid {$lightblueborder}; border-bottom: 1px solid {$blueborder}; } .phui-box-border .phui-box-inner { background-color: #fff; } .device-phone .phui-box { border-left: none; border-right: none; margin-left: 0; margin-right: 0; }