diff --git a/resources/sprite/manifest/icon.json b/resources/sprite/manifest/icon.json index d310d6d0d..68ab25220 100644 --- a/resources/sprite/manifest/icon.json +++ b/resources/sprite/manifest/icon.json @@ -1,971 +1,971 @@ { "version" : 1, "sprites" : { "action-arrow_left" : { "name" : "action-arrow_left", "rule" : ".action-arrow_left", "hash" : "d4d2ea82a38975e9630d75ea36a97239" }, "action-arrow_left-grey" : { "name" : "action-arrow_left-grey", "rule" : ".action-arrow_left-grey", "hash" : "ab68a8f75c055fe43e02d9a55006ac80" }, "action-arrow_left-white" : { "name" : "action-arrow_left-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-arrow_left", + "rule" : ".action-arrow_left-white, .device-desktop .phabricator-action-view:hover .action-arrow_left", "hash" : "23e5824a1e58e858d7fff622e10c9670" }, "action-arrow_right" : { "name" : "action-arrow_right", "rule" : ".action-arrow_right", "hash" : "9f23ba0505db0e199a866d1810f8156a" }, "action-arrow_right-grey" : { "name" : "action-arrow_right-grey", "rule" : ".action-arrow_right-grey", "hash" : "1d71f24b7821e63eca17d2c2501892a9" }, "action-arrow_right-white" : { "name" : "action-arrow_right-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-arrow_right", + "rule" : ".action-arrow_right-white, .device-desktop .phabricator-action-view:hover .action-arrow_right", "hash" : "c36b010025e1550fda9dff1d4b677076" }, "action-attach" : { "name" : "action-attach", "rule" : ".action-attach", "hash" : "bc18c0f45652bca9b7f1d9996fef3514" }, "action-attach-grey" : { "name" : "action-attach-grey", "rule" : ".action-attach-grey", "hash" : "ba38e3af334aafa6f42ab01ef8879cef" }, "action-attach-white" : { "name" : "action-attach-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-attach", + "rule" : ".action-attach-white, .device-desktop .phabricator-action-view:hover .action-attach", "hash" : "8f95a2a247a1b2f79c55b76bc62caedb" }, "action-blame" : { "name" : "action-blame", "rule" : ".action-blame", "hash" : "b90fd9e982c92a29b8eb61a02d9276d1" }, "action-blame-grey" : { "name" : "action-blame-grey", "rule" : ".action-blame-grey", "hash" : "dd16c414547b9ced79f95bf8481e9406" }, "action-blame-white" : { "name" : "action-blame-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-blame", + "rule" : ".action-blame-white, .device-desktop .phabricator-action-view:hover .action-blame", "hash" : "f2d2a1a06236432903297bf58cf00138" }, "action-check" : { "name" : "action-check", "rule" : ".action-check", "hash" : "0806a6293f4b6e65112fc17484ae4f70" }, "action-check-grey" : { "name" : "action-check-grey", "rule" : ".action-check-grey", "hash" : "c10d72cc1504f9d5ffccbd26fd798518" }, "action-check-white" : { "name" : "action-check-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-check", + "rule" : ".action-check-white, .device-desktop .phabricator-action-view:hover .action-check", "hash" : "6328b4abc8f44954e637c3382e859536" }, "action-comment" : { "name" : "action-comment", "rule" : ".action-comment", "hash" : "e7e0d20602f4a77e90e13e0a60974ce5" }, "action-comment-grey" : { "name" : "action-comment-grey", "rule" : ".action-comment-grey", "hash" : "a0a1f0d0d32fab29c58dcc59c2b6fcb2" }, "action-comment-white" : { "name" : "action-comment-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-comment", + "rule" : ".action-comment-white, .device-desktop .phabricator-action-view:hover .action-comment", "hash" : "370761544111cf3d6a8878927baa9199" }, "action-computer" : { "name" : "action-computer", "rule" : ".action-computer", "hash" : "b724d76f98fff7bc187f40cc23c06bc8" }, "action-computer-grey" : { "name" : "action-computer-grey", "rule" : ".action-computer-grey", "hash" : "3c46bda86e5c60b81909c1fa1395bb14" }, "action-computer-white" : { "name" : "action-computer-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-computer", + "rule" : ".action-computer-white, .device-desktop .phabricator-action-view:hover .action-computer", "hash" : "82cef35cbea64a3ee60a9b71f2a1c583" }, "action-create" : { "name" : "action-create", "rule" : ".action-create", "hash" : "360c79b389e5f3667f9be3ec47b3f248" }, "action-create-grey" : { "name" : "action-create-grey", "rule" : ".action-create-grey", "hash" : "03ac5c89de22f74442fab30ca777119f" }, "action-create-white" : { "name" : "action-create-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-create", + "rule" : ".action-create-white, .device-desktop .phabricator-action-view:hover .action-create", "hash" : "126f91b6c84a5f6d5b60b347b690d12c" }, "action-delete" : { "name" : "action-delete", "rule" : ".action-delete", "hash" : "3bcd865dc1d46645735cd97400ff8aba" }, "action-delete-grey" : { "name" : "action-delete-grey", "rule" : ".action-delete-grey", "hash" : "272c2791dbbaa37e9240e1da45325546" }, "action-delete-white" : { "name" : "action-delete-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-delete", + "rule" : ".action-delete-white, .device-desktop .phabricator-action-view:hover .action-delete", "hash" : "e773f5117a9a29f3fa338e7ef8dc1780" }, "action-disable" : { "name" : "action-disable", "rule" : ".action-disable", "hash" : "d9b0d16bdeaad39ccd881641c3bbd966" }, "action-disable-grey" : { "name" : "action-disable-grey", "rule" : ".action-disable-grey", "hash" : "7ff9a4502d1ae097d105b96d05e0ac64" }, "action-disable-white" : { "name" : "action-disable-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-disable", + "rule" : ".action-disable-white, .device-desktop .phabricator-action-view:hover .action-disable", "hash" : "eae52c680ce1bc0b529a76a200cc52df" }, "action-dislike" : { "name" : "action-dislike", "rule" : ".action-dislike", "hash" : "12234ae1fff0a0cae4a3b08366dc8e76" }, "action-dislike-grey" : { "name" : "action-dislike-grey", "rule" : ".action-dislike-grey", "hash" : "b75e2fb881f80263a943aae46e866da5" }, "action-dislike-white" : { "name" : "action-dislike-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-dislike", + "rule" : ".action-dislike-white, .device-desktop .phabricator-action-view:hover .action-dislike", "hash" : "045543b094cdcd888d64860869cc6e5b" }, "action-download" : { "name" : "action-download", "rule" : ".action-download", "hash" : "d833c952e92afabe38f22afd797bd930" }, "action-download-grey" : { "name" : "action-download-grey", "rule" : ".action-download-grey", "hash" : "57676a6e25d26648d1fd9a8a8f580771" }, "action-download-white" : { "name" : "action-download-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-download", + "rule" : ".action-download-white, .device-desktop .phabricator-action-view:hover .action-download", "hash" : "cc5c770af0fd5a1097c743c99fd27985" }, "action-edit" : { "name" : "action-edit", "rule" : ".action-edit", "hash" : "7a689907e70134d9b959cce8b9563f78" }, "action-edit-grey" : { "name" : "action-edit-grey", "rule" : ".action-edit-grey", "hash" : "180a369e4ebfd663bac4b0f71c6fd6e0" }, "action-edit-white" : { "name" : "action-edit-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-edit", + "rule" : ".action-edit-white, .device-desktop .phabricator-action-view:hover .action-edit", "hash" : "8c1e028cdcffd4b5f2b2b1ffbefd94aa" }, "action-enable" : { "name" : "action-enable", "rule" : ".action-enable", "hash" : "44a48b59d175cbf76ed76c5f10f37e99" }, "action-enable-grey" : { "name" : "action-enable-grey", "rule" : ".action-enable-grey", "hash" : "8bfde2b13363e83c2980bb67a756b46e" }, "action-enable-white" : { "name" : "action-enable-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-enable", + "rule" : ".action-enable-white, .device-desktop .phabricator-action-view:hover .action-enable", "hash" : "455194cf17fcced25cbc0156951180fd" }, "action-file" : { "name" : "action-file", "rule" : ".action-file", "hash" : "ae34ce5e62b1bc3c4dc6da4f7fbf7447" }, "action-file-grey" : { "name" : "action-file-grey", "rule" : ".action-file-grey", "hash" : "1eb8c0b693fa2ee7a71fe6ef885b20eb" }, "action-file-white" : { "name" : "action-file-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-file", + "rule" : ".action-file-white, .device-desktop .phabricator-action-view:hover .action-file", "hash" : "fc348080a6fa3d845f8da0dba1f0accf" }, "action-flag" : { "name" : "action-flag", "rule" : ".action-flag", "hash" : "6c005cc20af556cd6131747654444ec6" }, "action-flag-0" : { "name" : "action-flag-0", "rule" : ".action-flag-0", "hash" : "b6147505c95144f0ce6c5bc4c74a3bf3" }, "action-flag-0-grey" : { "name" : "action-flag-0-grey", "rule" : ".action-flag-0-grey", "hash" : "6422b4d1e9878dfedc7ec670ba97c9ac" }, "action-flag-0-white" : { "name" : "action-flag-0-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-0", + "rule" : ".action-flag-0-white, .device-desktop .phabricator-action-view:hover .action-flag-0", "hash" : "44e72a52052200846fcf3d7dd13d1247" }, "action-flag-1" : { "name" : "action-flag-1", "rule" : ".action-flag-1", "hash" : "7c9c162d50e8496e373b719ef7b507b6" }, "action-flag-1-grey" : { "name" : "action-flag-1-grey", "rule" : ".action-flag-1-grey", "hash" : "1bc1b824544c19f83c0c564fba07e504" }, "action-flag-1-white" : { "name" : "action-flag-1-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-1", + "rule" : ".action-flag-1-white, .device-desktop .phabricator-action-view:hover .action-flag-1", "hash" : "83e63386c1b5fe0a2580c57dcd3d5bc8" }, "action-flag-2" : { "name" : "action-flag-2", "rule" : ".action-flag-2", "hash" : "c6c1a0a1d66e4a492989af2e5a784c34" }, "action-flag-2-grey" : { "name" : "action-flag-2-grey", "rule" : ".action-flag-2-grey", "hash" : "b80cf86cae93a20a87d8cb8c742b9576" }, "action-flag-2-white" : { "name" : "action-flag-2-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-2", + "rule" : ".action-flag-2-white, .device-desktop .phabricator-action-view:hover .action-flag-2", "hash" : "86e4cdc53d9101f144455114ec01856b" }, "action-flag-3" : { "name" : "action-flag-3", "rule" : ".action-flag-3", "hash" : "8bbc031251a1834d6ede293474d62545" }, "action-flag-3-grey" : { "name" : "action-flag-3-grey", "rule" : ".action-flag-3-grey", "hash" : "0c4934d095a7a6ffa4ee734203af3616" }, "action-flag-3-white" : { "name" : "action-flag-3-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-3", + "rule" : ".action-flag-3-white, .device-desktop .phabricator-action-view:hover .action-flag-3", "hash" : "de92148b46fa30ed3e5cfdc63c941213" }, "action-flag-4" : { "name" : "action-flag-4", "rule" : ".action-flag-4", "hash" : "2ba2c89181a1f7949a1e9ac93bce41e3" }, "action-flag-4-grey" : { "name" : "action-flag-4-grey", "rule" : ".action-flag-4-grey", "hash" : "84594202eff4dd72abcf3ae30f8138b0" }, "action-flag-4-white" : { "name" : "action-flag-4-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-4", + "rule" : ".action-flag-4-white, .device-desktop .phabricator-action-view:hover .action-flag-4", "hash" : "832420753c9481e7fc0de1b16d465951" }, "action-flag-5" : { "name" : "action-flag-5", "rule" : ".action-flag-5", "hash" : "922270dee1b7b36be6845008352d34e8" }, "action-flag-5-grey" : { "name" : "action-flag-5-grey", "rule" : ".action-flag-5-grey", "hash" : "3471ceb4994112b0a6e48eeb50ad8c90" }, "action-flag-5-white" : { "name" : "action-flag-5-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-5", + "rule" : ".action-flag-5-white, .device-desktop .phabricator-action-view:hover .action-flag-5", "hash" : "d80426ed6dad58d6b557adc3b08a35c2" }, "action-flag-6" : { "name" : "action-flag-6", "rule" : ".action-flag-6", "hash" : "02c3fb78cc75105605659578e75acfc3" }, "action-flag-6-grey" : { "name" : "action-flag-6-grey", "rule" : ".action-flag-6-grey", "hash" : "8ab1cde8884759e77030c9343d177bdb" }, "action-flag-6-white" : { "name" : "action-flag-6-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-6", + "rule" : ".action-flag-6-white, .device-desktop .phabricator-action-view:hover .action-flag-6", "hash" : "40bf7e2b36e70d02fab3cdf7e7eece36" }, "action-flag-7" : { "name" : "action-flag-7", "rule" : ".action-flag-7", "hash" : "f4c757e27875d55e914608fecc190849" }, "action-flag-7-grey" : { "name" : "action-flag-7-grey", "rule" : ".action-flag-7-grey", "hash" : "d16921bf53cd5142c7fea2177511bb9e" }, "action-flag-7-white" : { "name" : "action-flag-7-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-7", + "rule" : ".action-flag-7-white, .device-desktop .phabricator-action-view:hover .action-flag-7", "hash" : "5972a5f1e3ecff9146727ebfb43c5956" }, "action-flag-ghost" : { "name" : "action-flag-ghost", "rule" : ".action-flag-ghost", "hash" : "80d651f12e09ec81435612e06e28a2e2" }, "action-flag-ghost-grey" : { "name" : "action-flag-ghost-grey", "rule" : ".action-flag-ghost-grey", "hash" : "6a5ee12fc2f0f7961e646c3a335e2703" }, "action-flag-ghost-white" : { "name" : "action-flag-ghost-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-ghost", + "rule" : ".action-flag-ghost-white, .device-desktop .phabricator-action-view:hover .action-flag-ghost", "hash" : "ff05197e8a66b1fb1037c93f3c52d866" }, "action-flag-grey" : { "name" : "action-flag-grey", "rule" : ".action-flag-grey", "hash" : "cf991807516bcdd9c175463cba0ddf6d" }, "action-flag-white" : { "name" : "action-flag-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-flag", + "rule" : ".action-flag-white, .device-desktop .phabricator-action-view:hover .action-flag", "hash" : "bb03676086c8af46377bb61593af0baa" }, "action-folder-open" : { "name" : "action-folder-open", "rule" : ".action-folder-open", "hash" : "3626a7bee8e8e0f846c5bc1432cd21a7" }, "action-folder-open-grey" : { "name" : "action-folder-open-grey", "rule" : ".action-folder-open-grey", "hash" : "5920e7bc4385d3efe46eb0e9ba28f828" }, "action-folder-open-white" : { "name" : "action-folder-open-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-folder-open", + "rule" : ".action-folder-open-white, .device-desktop .phabricator-action-view:hover .action-folder-open", "hash" : "5ccf5cfa0f446a522e55f64fe3ceed76" }, "action-fork" : { "name" : "action-fork", "rule" : ".action-fork", "hash" : "f2786a0553793e4eafd5088c325d3bf1" }, "action-fork-grey" : { "name" : "action-fork-grey", "rule" : ".action-fork-grey", "hash" : "b21de87ac4434cc79360d7f1f86b9feb" }, "action-fork-white" : { "name" : "action-fork-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-fork", + "rule" : ".action-fork-white, .device-desktop .phabricator-action-view:hover .action-fork", "hash" : "68f97284072a6ff630261af74629c884" }, "action-herald" : { "name" : "action-herald", "rule" : ".action-herald", "hash" : "a09777d816e1c3ec7ca1f024413d853a" }, "action-herald-grey" : { "name" : "action-herald-grey", "rule" : ".action-herald-grey", "hash" : "b091b3f6776f0620b77f7943e2723354" }, "action-herald-white" : { "name" : "action-herald-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-herald", + "rule" : ".action-herald-white, .device-desktop .phabricator-action-view:hover .action-herald", "hash" : "a30bd0191721e4ab028338c4c7ebdfa8" }, "action-highlight" : { "name" : "action-highlight", "rule" : ".action-highlight", "hash" : "c25f409ae6b43aa8edc28aac44bdb648" }, "action-highlight-grey" : { "name" : "action-highlight-grey", "rule" : ".action-highlight-grey", "hash" : "0638dc63d844cd03441457999486e295" }, "action-highlight-white" : { "name" : "action-highlight-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-highlight", + "rule" : ".action-highlight-white, .device-desktop .phabricator-action-view:hover .action-highlight", "hash" : "27e28bec94c1652eef5c556f23aa1dd6" }, "action-history" : { "name" : "action-history", "rule" : ".action-history", "hash" : "2ce835c4d455cf7ebb7914c6387a29ab" }, "action-history-grey" : { "name" : "action-history-grey", "rule" : ".action-history-grey", "hash" : "8685d466a6450d1055bb25782316af17" }, "action-history-white" : { "name" : "action-history-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-history", + "rule" : ".action-history-white, .device-desktop .phabricator-action-view:hover .action-history", "hash" : "2c57ad5babe37b8335e88c5464c5529c" }, "action-image" : { "name" : "action-image", "rule" : ".action-image", "hash" : "7e2d0b5937124146c8da254601d34d15" }, "action-image-grey" : { "name" : "action-image-grey", "rule" : ".action-image-grey", "hash" : "cc5392a9d8deb9b3a30b370924635eb1" }, "action-image-white" : { "name" : "action-image-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-image", + "rule" : ".action-image-white, .device-desktop .phabricator-action-view:hover .action-image", "hash" : "66ee76f5242792c0c274980df9bd9d58" }, "action-like" : { "name" : "action-like", "rule" : ".action-like", "hash" : "f024649c9c2a82e0ad0afdd8884a2c7d" }, "action-like-grey" : { "name" : "action-like-grey", "rule" : ".action-like-grey", "hash" : "a89fdf2f499e762b97f54c507715bde6" }, "action-like-white" : { "name" : "action-like-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-like", + "rule" : ".action-like-white, .device-desktop .phabricator-action-view:hover .action-like", "hash" : "bd1a5fad4c83353e476378fc1d99c6e1" }, "action-link" : { "name" : "action-link", "rule" : ".action-link", "hash" : "7c37d22aafdfd860b942d5fbcdc4975c" }, "action-link-grey" : { "name" : "action-link-grey", "rule" : ".action-link-grey", "hash" : "8139d52194b607e8c73d5a2124a28329" }, "action-link-white" : { "name" : "action-link-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-link", + "rule" : ".action-link-white, .device-desktop .phabricator-action-view:hover .action-link", "hash" : "157c08f843f6f30cf3561349f8e4ddbd" }, "action-lint-info" : { "name" : "action-lint-info", "rule" : ".action-lint-info", "hash" : "65c2692a045b7446c4312e1b7331701d" }, "action-lint-info-grey" : { "name" : "action-lint-info-grey", "rule" : ".action-lint-info-grey", "hash" : "4a0ca839249567756774af56977888cb" }, "action-lint-info-white" : { "name" : "action-lint-info-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-lint-info", + "rule" : ".action-lint-info-white, .device-desktop .phabricator-action-view:hover .action-lint-info", "hash" : "cf5a05749979f6701d4b3de53acca500" }, "action-lint-ok" : { "name" : "action-lint-ok", "rule" : ".action-lint-ok", "hash" : "7637e89a5ed282988c0427b61abb56a0" }, "action-lint-ok-grey" : { "name" : "action-lint-ok-grey", "rule" : ".action-lint-ok-grey", "hash" : "1c71c359debb765d73f1ee9b5b98ba3d" }, "action-lint-ok-white" : { "name" : "action-lint-ok-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-lint-ok", + "rule" : ".action-lint-ok-white, .device-desktop .phabricator-action-view:hover .action-lint-ok", "hash" : "faaa9e076d5012af17a73f9f09b6ede8" }, "action-lint-warning" : { "name" : "action-lint-warning", "rule" : ".action-lint-warning", "hash" : "b79d4525ef1806bf0cb524a7e7490af7" }, "action-lint-warning-grey" : { "name" : "action-lint-warning-grey", "rule" : ".action-lint-warning-grey", "hash" : "c522bb48f7d328b8230b5ecc2dac3d1f" }, "action-lint-warning-white" : { "name" : "action-lint-warning-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-lint-warning", + "rule" : ".action-lint-warning-white, .device-desktop .phabricator-action-view:hover .action-lint-warning", "hash" : "4a13ffad1125caf3656a276e4c40c907" }, "action-lock" : { "name" : "action-lock", "rule" : ".action-lock", "hash" : "943a4495056310f22bbbc2e64997ec74" }, "action-lock-grey" : { "name" : "action-lock-grey", "rule" : ".action-lock-grey", "hash" : "514bd65df15aaeeb35148d8c673e8718" }, "action-lock-white" : { "name" : "action-lock-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-lock", + "rule" : ".action-lock-white, .device-desktop .phabricator-action-view:hover .action-lock", "hash" : "1cd87a6ffac7f03535faa6109e69dcfa" }, "action-love" : { "name" : "action-love", "rule" : ".action-love", "hash" : "498bcb15f80897b768762c540b51ff91" }, "action-love-grey" : { "name" : "action-love-grey", "rule" : ".action-love-grey", "hash" : "07fa2968a8d447a20d0f5ae0f42fa454" }, "action-love-white" : { "name" : "action-love-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-love", + "rule" : ".action-love-white, .device-desktop .phabricator-action-view:hover .action-love", "hash" : "3fe85e0ad08e6f0151765ab5ce5624b0" }, "action-merge" : { "name" : "action-merge", "rule" : ".action-merge", "hash" : "c9ebe633aa17cc26cd454711e21e6686" }, "action-merge-grey" : { "name" : "action-merge-grey", "rule" : ".action-merge-grey", "hash" : "028f56f351b8021fe526824230170a48" }, "action-merge-white" : { "name" : "action-merge-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-merge", + "rule" : ".action-merge-white, .device-desktop .phabricator-action-view:hover .action-merge", "hash" : "334f751f7a9531af3e383bce06a0a2ff" }, "action-message" : { "name" : "action-message", "rule" : ".action-message", "hash" : "33db2ccd98bcbbe6bf8fae278ad2c2fc" }, "action-message-grey" : { "name" : "action-message-grey", "rule" : ".action-message-grey", "hash" : "306ee80f9f635f045ce15fe0c0a684c5" }, "action-message-white" : { "name" : "action-message-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-message", + "rule" : ".action-message-white, .device-desktop .phabricator-action-view:hover .action-message", "hash" : "d7ad1f04ffcd3e96cee0d81af509e77c" }, "action-meta-mta" : { "name" : "action-meta-mta", "rule" : ".action-meta-mta", "hash" : "bb8d824fef25830bda0929ae8e299147" }, "action-meta-mta-grey" : { "name" : "action-meta-mta-grey", "rule" : ".action-meta-mta-grey", "hash" : "e3e3b26c8c55628b27f9342df865edbf" }, "action-meta-mta-white" : { "name" : "action-meta-mta-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-meta-mta", + "rule" : ".action-meta-mta-white, .device-desktop .phabricator-action-view:hover .action-meta-mta", "hash" : "0455c2a3f7111e88daec4ddd68c9528a" }, "action-move" : { "name" : "action-move", "rule" : ".action-move", "hash" : "4cb5767570d935747f9338b8da9399df" }, "action-move-grey" : { "name" : "action-move-grey", "rule" : ".action-move-grey", "hash" : "d8bc3bdd62fc5dbc613875c9be75d7e1" }, "action-move-white" : { "name" : "action-move-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-move", + "rule" : ".action-move-white, .device-desktop .phabricator-action-view:hover .action-move", "hash" : "eb654087894d3bc7229d17b221eafcf0" }, "action-new" : { "name" : "action-new", "rule" : ".action-new", "hash" : "28a4a88aec75c601347d6dd0d9143de5" }, "action-new-grey" : { "name" : "action-new-grey", "rule" : ".action-new-grey", "hash" : "724855bb4c8eae16593ae6fba5653f7a" }, "action-new-white" : { "name" : "action-new-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-new", + "rule" : ".action-new-white, .device-desktop .phabricator-action-view:hover .action-new", "hash" : "21b047ec502a24eabe1f57fda5cd2fc1" }, "action-perflab" : { "name" : "action-perflab", "rule" : ".action-perflab", "hash" : "4449e5eb4780114dbafbfe2c7be538de" }, "action-perflab-grey" : { "name" : "action-perflab-grey", "rule" : ".action-perflab-grey", "hash" : "51414c80d753daa37f7deaa2cf4e5bc6" }, "action-perflab-white" : { "name" : "action-perflab-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-perflab", + "rule" : ".action-perflab-white, .device-desktop .phabricator-action-view:hover .action-perflab", "hash" : "e00e31057d557047300da57a5d07837e" }, "action-preview" : { "name" : "action-preview", "rule" : ".action-preview", "hash" : "069500f028ae272c474920785723247c" }, "action-preview-grey" : { "name" : "action-preview-grey", "rule" : ".action-preview-grey", "hash" : "522f17cdaee1af29c3073e21eb1fb7a6" }, "action-preview-white" : { "name" : "action-preview-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-preview", + "rule" : ".action-preview-white, .device-desktop .phabricator-action-view:hover .action-preview", "hash" : "c62768ba193052c527ce7d499fd9f662" }, "action-refresh" : { "name" : "action-refresh", "rule" : ".action-refresh", "hash" : "ef02448a2a4cbe830b56d3cbd9444ffd" }, "action-refresh-grey" : { "name" : "action-refresh-grey", "rule" : ".action-refresh-grey", "hash" : "24030ea198e22ed84891fa3698d891e4" }, "action-refresh-white" : { "name" : "action-refresh-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-refresh", + "rule" : ".action-refresh-white, .device-desktop .phabricator-action-view:hover .action-refresh", "hash" : "7800f18fbd6dde59e2ae91d695002318" }, "action-remove" : { "name" : "action-remove", "rule" : ".action-remove", "hash" : "69bf8194a7c539bdd6b7b8ad888d7260" }, "action-remove-grey" : { "name" : "action-remove-grey", "rule" : ".action-remove-grey", "hash" : "41abfeb5561b52b686943ac4da8f0876" }, "action-remove-white" : { "name" : "action-remove-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-remove", + "rule" : ".action-remove-white, .device-desktop .phabricator-action-view:hover .action-remove", "hash" : "24542d8d3890c8e89b7d60d0efd99e9c" }, "action-search" : { "name" : "action-search", "rule" : ".action-search", "hash" : "8fbe318c0633c3de3ce6eb331f891d5c" }, "action-search-grey" : { "name" : "action-search-grey", "rule" : ".action-search-grey", "hash" : "a58f5ea5770836de72f67a18b2a2d92b" }, "action-search-white" : { "name" : "action-search-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-search", + "rule" : ".action-search-white, .device-desktop .phabricator-action-view:hover .action-search", "hash" : "1c1a7b4ac122c6ffa56edda3c7ce35b0" }, "action-start-sandcastle" : { "name" : "action-start-sandcastle", "rule" : ".action-start-sandcastle", "hash" : "5aa74bb11fbc26b941f6fa0ed7507c64" }, "action-start-sandcastle-grey" : { "name" : "action-start-sandcastle-grey", "rule" : ".action-start-sandcastle-grey", "hash" : "a65b85198bdbed8d5563c515d475316a" }, "action-start-sandcastle-white" : { "name" : "action-start-sandcastle-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-start-sandcastle", + "rule" : ".action-start-sandcastle-white, .device-desktop .phabricator-action-view:hover .action-start-sandcastle", "hash" : "b99feb063a1e56833419119f426455f0" }, "action-subscribe-add" : { "name" : "action-subscribe-add", "rule" : ".action-subscribe-add", "hash" : "5a47685848c39d5449b8ec0985a627e7" }, "action-subscribe-add-grey" : { "name" : "action-subscribe-add-grey", "rule" : ".action-subscribe-add-grey", "hash" : "a691ac944079cee6655ff9f4ab321de3" }, "action-subscribe-add-white" : { "name" : "action-subscribe-add-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-subscribe-add", + "rule" : ".action-subscribe-add-white, .device-desktop .phabricator-action-view:hover .action-subscribe-add", "hash" : "1173fbd24131329e2e0c81893c1bd412" }, "action-subscribe-auto" : { "name" : "action-subscribe-auto", "rule" : ".action-subscribe-auto", "hash" : "01f6ea8fb35628abe6641b6e88c27c1e" }, "action-subscribe-auto-grey" : { "name" : "action-subscribe-auto-grey", "rule" : ".action-subscribe-auto-grey", "hash" : "b956dec1b5ae1d9ae6addffb3aa77a7f" }, "action-subscribe-auto-white" : { "name" : "action-subscribe-auto-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-subscribe-auto", + "rule" : ".action-subscribe-auto-white, .device-desktop .phabricator-action-view:hover .action-subscribe-auto", "hash" : "8525c0d691c327ddb0500cc27bfa9822" }, "action-subscribe-delete" : { "name" : "action-subscribe-delete", "rule" : ".action-subscribe-delete", "hash" : "0d91e4d61349e9e1b7141fdc8d333d84" }, "action-subscribe-delete-grey" : { "name" : "action-subscribe-delete-grey", "rule" : ".action-subscribe-delete-grey", "hash" : "16895241e0f9e62610c99e940ee3bcbc" }, "action-subscribe-delete-white" : { "name" : "action-subscribe-delete-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-subscribe-delete", + "rule" : ".action-subscribe-delete-white, .device-desktop .phabricator-action-view:hover .action-subscribe-delete", "hash" : "e9d5f98355e04b3404706581f6597569" }, "action-tag" : { "name" : "action-tag", "rule" : ".action-tag", "hash" : "d4b219d1272879dd50621439e1f33a72" }, "action-tag-grey" : { "name" : "action-tag-grey", "rule" : ".action-tag-grey", "hash" : "08507569a675ef6cc85b17870f9f2e91" }, "action-tag-white" : { "name" : "action-tag-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-tag", + "rule" : ".action-tag-white, .device-desktop .phabricator-action-view:hover .action-tag", "hash" : "aed3d83123f33e69ae4b7338b23f7c9c" }, "action-transcript" : { "name" : "action-transcript", "rule" : ".action-transcript", "hash" : "055b6b1a2999d017fcf87f96c2796c49" }, "action-transcript-grey" : { "name" : "action-transcript-grey", "rule" : ".action-transcript-grey", "hash" : "81f66da48452c5235aa9d84edd7831d3" }, "action-transcript-white" : { "name" : "action-transcript-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-transcript", + "rule" : ".action-transcript-white, .device-desktop .phabricator-action-view:hover .action-transcript", "hash" : "e56f623fdf8f059bb80c24944dec6af6" }, "action-undo" : { "name" : "action-undo", "rule" : ".action-undo", "hash" : "8f8586333203f466a681b0721cf1b57b" }, "action-undo-grey" : { "name" : "action-undo-grey", "rule" : ".action-undo-grey", "hash" : "961216a677dc6c38afe2d4e729417bfb" }, "action-undo-white" : { "name" : "action-undo-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-undo", + "rule" : ".action-undo-white, .device-desktop .phabricator-action-view:hover .action-undo", "hash" : "97bd8f43a4db2a97d53975ce42a6232d" }, "action-unlock" : { "name" : "action-unlock", "rule" : ".action-unlock", "hash" : "f9d34e15f51777198f307d63d635e1ac" }, "action-unlock-grey" : { "name" : "action-unlock-grey", "rule" : ".action-unlock-grey", "hash" : "4e7908dc34c83a6b8dab8c4dd554a98a" }, "action-unlock-white" : { "name" : "action-unlock-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-unlock", + "rule" : ".action-unlock-white, .device-desktop .phabricator-action-view:hover .action-unlock", "hash" : "ceb342bc0a17310cf58c90fd3bb53ce1" }, "action-unmerge" : { "name" : "action-unmerge", "rule" : ".action-unmerge", "hash" : "f994dd276cab26c3d5968d0b946dd8bc" }, "action-unmerge-grey" : { "name" : "action-unmerge-grey", "rule" : ".action-unmerge-grey", "hash" : "3a82fed2967d8a9d5fe9651c38055db7" }, "action-unmerge-white" : { "name" : "action-unmerge-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-unmerge", + "rule" : ".action-unmerge-white, .device-desktop .phabricator-action-view:hover .action-unmerge", "hash" : "574e4176d9c2243050958182e487f239" }, "action-unpublish" : { "name" : "action-unpublish", "rule" : ".action-unpublish", "hash" : "c2241706bf6857b24ba1739a2fe281b1" }, "action-unpublish-grey" : { "name" : "action-unpublish-grey", "rule" : ".action-unpublish-grey", "hash" : "5c9e548386c85d63f7f21699ba54813e" }, "action-unpublish-white" : { "name" : "action-unpublish-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-unpublish", + "rule" : ".action-unpublish-white, .device-desktop .phabricator-action-view:hover .action-unpublish", "hash" : "a37305e8ea29bc41d83d6b5a11aebe9f" }, "action-warning" : { "name" : "action-warning", "rule" : ".action-warning", "hash" : "1c0c7f76a2c43af5532f67f0f8622d7c" }, "action-warning-grey" : { "name" : "action-warning-grey", "rule" : ".action-warning-grey", "hash" : "5dc7b0cd75e629ad91437b15901d990a" }, "action-warning-white" : { "name" : "action-warning-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-warning", + "rule" : ".action-warning-white, .device-desktop .phabricator-action-view:hover .action-warning", "hash" : "c30c2e287bab73ca454712de6cbe2502" }, "action-world" : { "name" : "action-world", "rule" : ".action-world", "hash" : "ae2bf28bf07aab51f54c1ea9beed10cb" }, "action-world-grey" : { "name" : "action-world-grey", "rule" : ".action-world-grey", "hash" : "8d332d48b945f152aaf84a7ca83cfbc2" }, "action-world-white" : { "name" : "action-world-white", - "rule" : ".device-desktop .phabricator-action-view:hover .action-world", + "rule" : ".action-world-white, .device-desktop .phabricator-action-view:hover .action-world", "hash" : "401df878395c514a443720a8acd1ab63" }, "remarkup-assist-text_b" : { "name" : "remarkup-assist-text_b", "rule" : ".remarkup-assist-b", "hash" : "12c565d4934f6a777c9524baf75cebb6" }, "remarkup-assist-text_code" : { "name" : "remarkup-assist-text_code", "rule" : ".remarkup-assist-code", "hash" : "f06f106cb8edb67e8b99d159d704a61a" }, "remarkup-assist-text_help" : { "name" : "remarkup-assist-text_help", "rule" : ".remarkup-assist-help", "hash" : "9d54d8224b81de8e3ed7beac0e486257" }, "remarkup-assist-text_i" : { "name" : "remarkup-assist-text_i", "rule" : ".remarkup-assist-i", "hash" : "50f83a53f5b094d3d92b619d06fada3c" }, "remarkup-assist-text_image" : { "name" : "remarkup-assist-text_image", "rule" : ".remarkup-assist-image", "hash" : "c2869e71cc7cb6178598cd41a19ababb" }, "remarkup-assist-text_larger" : { "name" : "remarkup-assist-text_larger", "rule" : ".remarkup-assist-larger", "hash" : "d3165f15a1b3734e4b7088f7b74330ba" }, "remarkup-assist-text_meme" : { "name" : "remarkup-assist-text_meme", "rule" : ".remarkup-assist-meme", "hash" : "ed9c4166858ca1caedf5f8e4b8ad587e" }, "remarkup-assist-text_ol" : { "name" : "remarkup-assist-text_ol", "rule" : ".remarkup-assist-ol", "hash" : "266b858f5ffc42760fb2e12913a5198a" }, "remarkup-assist-text_table" : { "name" : "remarkup-assist-text_table", "rule" : ".remarkup-assist-table", "hash" : "5c2961b35460b3b5b7efdd5bc4e318ca" }, "remarkup-assist-text_tag" : { "name" : "remarkup-assist-text_tag", "rule" : ".remarkup-assist-tag", "hash" : "165bd3a4de8d54cf720db9bc64116d25" }, "remarkup-assist-text_tt" : { "name" : "remarkup-assist-text_tt", "rule" : ".remarkup-assist-tt", "hash" : "c07e6816500c9cd66fa27758cc902195" }, "remarkup-assist-text_ul" : { "name" : "remarkup-assist-text_ul", "rule" : ".remarkup-assist-ul", "hash" : "26f55c0fcf9148879e3fb058ac319100" } }, "scales" : [ 1, 2 ], "header" : "\/**\n * @provides sprite-icon-css\n * @generated\n *\/\n\n.sprite-icon {\n background-image: url(\/rsrc\/image\/sprite-icon.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n .sprite-icon {\n background-image: url(\/rsrc\/image\/sprite-icon-X2.png);\n background-size: {X}px {Y}px;\n }\n}\n", "type" : "standard" } diff --git a/src/applications/pholio/controller/PholioMockViewController.php b/src/applications/pholio/controller/PholioMockViewController.php index 14867cbf9..0d8119266 100644 --- a/src/applications/pholio/controller/PholioMockViewController.php +++ b/src/applications/pholio/controller/PholioMockViewController.php @@ -1,223 +1,223 @@ id = $data['id']; } public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $mock = id(new PholioMockQuery()) ->setViewer($user) ->withIDs(array($this->id)) ->executeOne(); if (!$mock) { return new Aphront404Response(); } $xactions = id(new PholioTransactionQuery()) ->setViewer($user) ->withObjectPHIDs(array($mock->getPHID())) ->execute(); $subscribers = PhabricatorSubscribersQuery::loadSubscribersForPHID( $mock->getPHID()); $phids = array(); $phids[] = $mock->getAuthorPHID(); foreach ($subscribers as $subscriber) { $phids[] = $subscriber; } $this->loadHandles($phids); $engine = id(new PhabricatorMarkupEngine()) ->setViewer($user); $engine->addObject($mock, PholioMock::MARKUP_FIELD_DESCRIPTION); foreach ($xactions as $xaction) { if ($xaction->getComment()) { $engine->addObject( $xaction->getComment(), PholioTransaction::MARKUP_FIELD_COMMENT); } } $engine->process(); $title = 'M'.$mock->getID().' '.$mock->getName(); $header = id(new PhabricatorHeaderView()) ->setHeader($title); $actions = $this->buildActionView($mock); $properties = $this->buildPropertyView($mock, $engine, $subscribers); $carousel = '

'. 'Carousel Goes Here

'; $xaction_view = $this->buildTransactionView($xactions, $engine); $add_comment = $this->buildAddCommentView($mock); $content = array( $header, $actions, $properties, $carousel, $xaction_view, $add_comment, ); return $this->buildApplicationPage( $content, array( 'title' => $title, 'device' => true, )); } private function buildActionView(PholioMock $mock) { $user = $this->getRequest()->getUser(); $actions = id(new PhabricatorActionListView()) ->setUser($user) ->setObject($mock); $can_edit = PhabricatorPolicyFilter::hasCapability( $user, $mock, PhabricatorPolicyCapability::CAN_EDIT); $actions->addAction( id(new PhabricatorActionView()) ->setIcon('edit') ->setName(pht('Edit Mock')) ->setHref($this->getApplicationURI('/edit/'.$mock->getID())) ->setDisabled(!$can_edit) ->setWorkflow(!$can_edit)); return $actions; } private function buildPropertyView( PholioMock $mock, PhabricatorMarkupEngine $engine, array $subscribers) { $user = $this->getRequest()->getUser(); $properties = new PhabricatorPropertyListView(); $properties->addProperty( pht('Author'), $this->getHandle($mock->getAuthorPHID())->renderLink()); $properties->addProperty( pht('Created'), phabricator_datetime($mock->getDateCreated(), $user)); $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions( $user, $mock); $properties->addProperty( pht('Visible To'), $descriptions[PhabricatorPolicyCapability::CAN_VIEW]); if ($subscribers) { $sub_view = array(); foreach ($subscribers as $subscriber) { $sub_view[] = $this->getHandle($subscriber)->renderLink(); } $sub_view = implode(', ', $sub_view); } else { $sub_view = ''.pht('None').''; } $properties->addProperty( pht('Subscribers'), $sub_view); $properties->addTextContent( $engine->getOutput($mock, PholioMock::MARKUP_FIELD_DESCRIPTION)); return $properties; } private function buildAddCommentView(PholioMock $mock) { $user = $this->getRequest()->getUser(); $is_serious = PhabricatorEnv::getEnvConfig('phabricator.serious-business'); $title = $is_serious ? pht('Add Comment') : pht('History Beckons'); $header = id(new PhabricatorHeaderView()) ->setHeader($title); $action = $is_serious ? pht('Add Comment') : pht('Answer The Call'); $form = id(new AphrontFormView()) ->setUser($user) ->setAction($this->getApplicationURI('/comment/'.$mock->getID().'/')) ->setWorkflow(true) ->setFlexible(true) ->appendChild( id(new PhabricatorRemarkupControl()) ->setName('comment') ->setLabel(pht('Comment')) ->setUser($user)) ->appendChild( id(new AphrontFormSubmitControl()) ->setValue($action)); return array( $header, $form, ); } private function buildTransactionView( array $xactions, PhabricatorMarkupEngine $engine) { assert_instances_of($xactions, 'PholioTransaction'); $view = new PhabricatorTimelineView(); foreach ($xactions as $xaction) { if ($xaction->shouldHide()) { continue; } - $title = $xaction->getTitle(); - $event = id(new PhabricatorTimelineEventView()) ->setUserHandle($xaction->getHandle($xaction->getAuthorPHID())) - ->setTitle($title); + ->setIcon($xaction->getIcon()) + ->setColor($xaction->getColor()) + ->setTitle($xaction->getTitle()); if ($xaction->getComment()) { $event->appendChild( $engine->getOutput( $xaction->getComment(), PholioTransaction::MARKUP_FIELD_COMMENT)); } $view->addEvent($event); } return $view; } } diff --git a/src/applications/transactions/constants/PhabricatorTransactions.php b/src/applications/transactions/constants/PhabricatorTransactions.php index 54140c3f7..c70b185fe 100644 --- a/src/applications/transactions/constants/PhabricatorTransactions.php +++ b/src/applications/transactions/constants/PhabricatorTransactions.php @@ -1,10 +1,21 @@ getApplicationTransactionType(); return PhabricatorPHID::generateNewPHID($type, $subtype); } public function getConfiguration() { return array( self::CONFIG_AUX_PHID => true, self::CONFIG_SERIALIZATION => array( 'oldValue' => self::SERIALIZATION_JSON, 'newValue' => self::SERIALIZATION_JSON, ), ) + parent::getConfiguration(); } public function setContentSource(PhabricatorContentSource $content_source) { $this->contentSource = $content_source->serialize(); return $this; } public function getContentSource() { return PhabricatorContentSource::newFromSerialized($this->contentSource); } public function getComment() { if ($this->commentNotLoaded) { throw new Exception("Comment for this transaction was not loaded."); } return $this->comment; } public function attachComment( PhabricatorApplicationTransactionComment $comment) { $this->comment = $comment; $this->commentNotLoaded = false; return $this; } public function setCommentNotLoaded($not_loaded) { $this->commentNotLoaded = $not_loaded; return $this; } /* -( Rendering )---------------------------------------------------------- */ public function getRequiredHandlePHIDs() { $phids = array(); $old = $this->getOldValue(); $new = $this->getNewValue(); $phids[] = array($this->getAuthorPHID()); switch ($this->getTransactionType()) { case PhabricatorTransactions::TYPE_SUBSCRIBERS: $phids[] = $old; $phids[] = $new; break; } return array_mergev($phids); } public function setHandles(array $handles) { $this->handles = $handles; return $this; } public function getHandle($phid) { if (empty($this->handles[$phid])) { throw new Exception( "Transaction requires a handle ('{$phid}') it did not load."); } return $this->handles[$phid]; } protected function renderHandleLink($phid) { return $this->getHandle($phid)->renderLink(); } protected function renderHandleList(array $phids) { $links = array(); foreach ($phids as $phid) { $links[] = $this->renderHandleLink($phid); } return implode(', ', $links); } + public function getIcon() { + return null; + } + + public function getColor() { + return null; + } + public function shouldHide() { switch ($this->getTransactionType()) { case PhabricatorTransactions::TYPE_VIEW_POLICY: case PhabricatorTransactions::TYPE_EDIT_POLICY: if ($this->getOldValue() === null) { return true; } else { return false; } break; } return false; } public function getTitle() { $author_phid = $this->getAuthorPHID(); $old = $this->getOldValue(); $new = $this->getNewValue(); switch ($this->getTransactionType()) { case PhabricatorTransactions::TYPE_COMMENT: return pht( '%s added a comment.', $this->renderHandleLink($author_phid)); case PhabricatorTransactions::TYPE_VIEW_POLICY: // TODO: Render human-readable. return pht( '%s changed the visibility of this %s from "%s" to "%s".', $this->renderHandleLink($author_phid), $this->getApplicationObjectTypeName(), phutil_escape_html($old), phutil_escape_html($new)); case PhabricatorTransactions::TYPE_EDIT_POLICY: // TODO: Render human-readable. return pht( '%s changed the edit policy of this %s from "%s" to "%s".', $this->renderHandleLink($author_phid), $this->getApplicationObjectTypeName(), phutil_escape_html($old), phutil_escape_html($new)); case PhabricatorTransactions::TYPE_SUBSCRIBERS: $add = array_diff($new, $old); $rem = array_diff($old, $new); if ($add && $rem) { return pht( '%s edited subscriber(s), added %d: %s; removed %d: %s.', $this->renderHandleLink($author_phid), count($add), $this->renderHandleList($add), count($rem), $this->renderHandleList($rem)); } else if ($add) { return pht( '%s added %d subscriber(s): %s.', $this->renderHandleLink($author_phid), count($add), $this->renderHandleList($add)); } else { return pht( '%s removed %d subscribers: %s.', $this->renderHandleLink($author_phid), count($rem), $this->renderHandleList($rem)); } break; default: return pht( '%s edited this %s.', $this->renderHandleLink($author_phid), $this->getApplicationObjectTypeName()); } } /* -( PhabricatorPolicyInterface Implementation )-------------------------- */ public function getCapabilities() { return array( PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT, ); } public function getPolicy($capability) { switch ($capability) { case PhabricatorPolicyCapability::CAN_VIEW: return $this->getViewPolicy(); case PhabricatorPolicyCapability::CAN_EDIT: return $this->getEditPolicy(); } } public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { return ($viewer->getPHID() == $this->getAuthorPHID()); } } diff --git a/src/applications/uiexample/examples/PhabricatorTimelineExample.php b/src/applications/uiexample/examples/PhabricatorTimelineExample.php index 5003532d9..12095969d 100644 --- a/src/applications/uiexample/examples/PhabricatorTimelineExample.php +++ b/src/applications/uiexample/examples/PhabricatorTimelineExample.php @@ -1,87 +1,107 @@ PhabricatorTimelineView to comments and transactions.'; } public function renderExample() { $request = $this->getRequest(); $user = $request->getUser(); $handle = PhabricatorObjectHandleData::loadOneHandle( $user->getPHID(), $user); $events = array(); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->setTitle('A major event.') ->appendChild('This is a major timeline event.'); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->setTitle('A minor event.'); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->appendChild('A major event with no title.'); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->setTitle('Another minor event.'); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->setTitle('Major Red Event') + ->setIcon('love') ->appendChild('This event is red!') - ->addClass('phabricator-timeline-red'); + ->setColor(PhabricatorTransactions::COLOR_RED); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->setTitle('Minor Red Event') - ->addClass('phabricator-timeline-red'); + ->setColor(PhabricatorTransactions::COLOR_RED); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->setTitle('Minor Not-Red Event'); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->setTitle('Minor Red Event') - ->addClass('phabricator-timeline-red'); + ->setColor(PhabricatorTransactions::COLOR_RED); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) ->setTitle('Minor Not-Red Event'); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) - ->setTitle('Unstyled event') - ->appendChild('This event disables standard title and content styling.') - ->setDisableStandardTitleStyle(true) - ->setDisableStandardContentStyle(true); + ->setTitle('Major Green Event') + ->appendChild('This event is green!') + ->setColor(PhabricatorTransactions::COLOR_GREEN); + + $colors = array( + PhabricatorTransactions::COLOR_RED, + PhabricatorTransactions::COLOR_ORANGE, + PhabricatorTransactions::COLOR_YELLOW, + PhabricatorTransactions::COLOR_GREEN, + PhabricatorTransactions::COLOR_SKY, + PhabricatorTransactions::COLOR_BLUE, + PhabricatorTransactions::COLOR_INDIGO, + PhabricatorTransactions::COLOR_VIOLET, + PhabricatorTransactions::COLOR_GREY, + PhabricatorTransactions::COLOR_BLACK, + ); $events[] = id(new PhabricatorTimelineEventView()) ->setUserHandle($handle) - ->setTitle('Major Green Event') - ->appendChild('This event is green!') - ->addClass('phabricator-timeline-green'); + ->setTitle(phutil_escape_html("Colorless")) + ->setIcon('lock'); + + foreach ($colors as $color) { + $events[] = id(new PhabricatorTimelineEventView()) + ->setUserHandle($handle) + ->setTitle(phutil_escape_html("Color '{$color}'")) + ->setIcon('lock') + ->setColor($color); + } $timeline = id(new PhabricatorTimelineView()); foreach ($events as $event) { $timeline->addEvent($event); } return $timeline; } } diff --git a/src/infrastructure/celerity/CeleritySpriteGenerator.php b/src/infrastructure/celerity/CeleritySpriteGenerator.php index 4d5277395..7e38b0ded 100644 --- a/src/infrastructure/celerity/CeleritySpriteGenerator.php +++ b/src/infrastructure/celerity/CeleritySpriteGenerator.php @@ -1,415 +1,416 @@ getDirectoryList('icons_1x'); $colors = array( '', 'grey', 'white', ); $scales = array( '1x' => 1, '2x' => 2, ); $template = id(new PhutilSprite()) ->setSourceSize(14, 14); $sprites = array(); foreach ($colors as $color) { foreach ($icons as $icon) { $prefix = 'icons_'; if (strlen($color)) { $prefix .= $color.'_'; } $suffix = ''; if (strlen($color)) { $suffix = '-'.$color; } $sprite = id(clone $template) ->setName('action-'.$icon.$suffix); if ($color == 'white') { $sprite->setTargetCSS( + '.action-'.$icon.$suffix.', '. '.device-desktop .phabricator-action-view:hover .action-'.$icon); } else { $sprite->setTargetCSS('.action-'.$icon.$suffix); } foreach ($scales as $scale_key => $scale) { $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png'); $sprite->setSourceFile($path, $scale); } $sprites[] = $sprite; } } $remarkup_icons = $this->getDirectoryList('remarkup_1x'); foreach ($remarkup_icons as $icon) { $prefix = 'remarkup_'; // Strip 'text_' from these file names. $class_name = substr($icon, 5); $sprite = id(clone $template) ->setName('remarkup-assist-'.$icon) ->setTargetCSS('.remarkup-assist-'.$class_name); foreach ($scales as $scale_key => $scale) { $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png'); $sprite->setSourceFile($path, $scale); } $sprites[] = $sprite; } $sheet = $this->buildSheet('icon', true); $sheet->setScales($scales); foreach ($sprites as $sprite) { $sheet->addSprite($sprite); } return $sheet; } public function buildMenuSheet() { $sprites = array(); $sources = array( 'round_bubble' => array( 'x' => 26, 'y' => 26, 'css' => '.phabricator-main-menu-alert-bubble' ), 'bubble' => array( 'x' => 46, 'y' => 26, 'css' => '.phabricator-main-menu-alert-bubble.alert-unread' ), 'seen_read_all' => array( 'x' => 14, 'y' => 14, 'css' => '.alert-notifications .phabricator-main-menu-alert-icon', ), 'seen_have_unread' => array( 'x' => 14, 'y' => 14, 'css' => '.alert-notifications:hover .phabricator-main-menu-alert-icon', ), 'unseen_any' => array( 'x' => 14, 'y' => 14, 'css' => '.alert-notifications.alert-unread .phabricator-main-menu-alert-icon', ), 'arrow-right' => array( 'x' => 9, 'y' => 31, 'css' => '.phabricator-crumb-divider', ), 'eye' => array( 'x' => 24, 'y' => 20, 'css' => '.menu-icon-eye', ), 'app' => array( 'x' => 24, 'y' => 20, 'css' => '.menu-icon-app', ), 'logo' => array( 'x' => 139, 'y' => 25, 'css' => '.phabricator-main-menu-logo-image', ), ); $scales = array( '1x' => 1, '2x' => 2, ); $template = new PhutilSprite(); foreach ($sources as $name => $spec) { $sprite = id(clone $template) ->setName($name) ->setSourceSize($spec['x'], $spec['y']) ->setTargetCSS($spec['css']); foreach ($scales as $scale_name => $scale) { $path = 'menu_'.$scale_name.'/'.$name.'.png'; $path = $this->getPath($path); $sprite->setSourceFile($path, $scale); } $sprites[] = $sprite; } $sheet = $this->buildSheet('menu', true); $sheet->setScales($scales); foreach ($sprites as $sprite) { $sheet->addSprite($sprite); } return $sheet; } public function buildGradientSheet() { $gradients = $this->getDirectoryList('gradients'); $template = new PhutilSprite(); $unusual_heights = array( 'dark-menu-label' => 25, 'breadcrumbs' => 31, ); // Reorder the sprites so less-specific rules generate earlier in the sheet. // Otherwise we end up with blue "a.black" buttons because the blue rules // have the same specificity but appear later. $gradients = array_combine($gradients, $gradients); $gradients = array_select_keys( $gradients, array( 'blue-dark', 'blue-light', )) + $gradients; $extra_css = array( 'black-dark' => ', button.black, a.black, a.black:visited', 'black-light' => ', button.black:active, a.black:active', 'blue-dark' => ', button, a.button, a.button:visited, input.inputsubmit', 'blue-light' => ', button:active, a.button:active', 'grey-dark' => ', button.grey, input.inputaux, a.grey, a.grey:visited, '. 'a.button.disabled, button[disabled], button.disabled', 'grey-light' => ', button.grey:active, a.grey:active, '. 'button.grey_active, a.dropdown-open', 'green-dark' => ', button.green, a.green, a.green:visited', 'green-light' => ', button.green:active, a.green:active', 'dark-menu-label' => ', .phabricator-dark-menu .phabricator-menu-item-type-label', ); $sprites = array(); foreach ($gradients as $gradient) { $path = $this->getPath('gradients/'.$gradient.'.png'); $sprite = id(clone $template) ->setName('gradient-'.$gradient) ->setSourceFile($path) ->setTargetCSS('.gradient-'.$gradient.idx($extra_css, $gradient)); $sprite->setSourceSize(4, idx($unusual_heights, $gradient, 26)); $sprites[] = $sprite; } $sheet = $this->buildSheet( 'gradient', false, PhutilSpriteSheet::TYPE_REPEAT_X, ', button, a.button, a.button:visited, input.inputsubmit, '. '.phabricator-dark-menu .phabricator-menu-item-type-label'); foreach ($sprites as $sprite) { $sheet->addSprite($sprite); } return $sheet; } public function buildAppsSheet() { return $this->buildAppsSheetVariant(1); } public function buildAppsLargeSheet() { return $this->buildAppsSheetVariant(2); } public function buildAppsXLargeSheet() { return $this->buildAppsSheetVariant(3); } private function buildAppsSheetVariant($variant) { if ($variant == 1) { $scales = array( '1x' => 1, '2x' => 2, ); $variant_name = 'apps'; $variant_short = ''; $size_x = 14; $size_y = 14; $colors = array( 'dark' => 'dark', ); } else if ($variant == 2) { $scales = array( '2x' => 1, '4x' => 2, ); $variant_name = 'apps-large'; $variant_short = '-large'; $size_x = 28; $size_y = 28; $colors = array( 'light' => 'lb', 'dark' => 'dark', 'blue' => 'blue', 'glow' => 'glow', ); } else { $scales = array( '4x' => 1, ); $variant_name = 'apps-xlarge'; $variant_short = '-xlarge'; $size_x = 56; $size_y = 56; $colors = array( 'dark' => 'dark', /* TODO: These are available but not currently used. 'blue' => 'blue', 'light' => 'lb', 'glow' => 'glow', */ ); } $apps = $this->getDirectoryList('apps_dark_1x'); $template = id(new PhutilSprite()) ->setSourceSize($size_x, $size_y); $sprites = array(); foreach ($apps as $app) { foreach ($colors as $color => $color_path) { $css = '.app-'.$app.'-'.$color.$variant_short; if ($color == 'blue' && $variant_name == 'apps-large') { $css .= ', .phabricator-crumb-view:hover .app-'.$app.'-dark-large'; } if ($color == 'glow' && $variant_name == 'apps-large') { $css .= ', .device-desktop .phabricator-dark-menu a:hover '. '.app-'.$app.'-light-large'; } $sprite = id(clone $template) ->setName('app-'.$app.'-'.$color.$variant_short) ->setTargetCSS($css); foreach ($scales as $scale_name => $scale) { $path = $this->getPath( 'apps_'.$color_path.'_'.$scale_name.'/'.$app.'.png'); $sprite->setSourceFile($path, $scale); } $sprites[] = $sprite; } } $sheet = $this->buildSheet($variant_name, count($scales) > 1); $sheet->setScales($scales); foreach ($sprites as $sprite) { $sheet->addSprite($sprite); } return $sheet; } private function getPath($to_path = null) { $root = dirname(phutil_get_library_root('phabricator')); return $root.'/resources/sprite/'.$to_path; } private function getDirectoryList($dir) { $path = $this->getPath($dir); $result = array(); $images = Filesystem::listDirectory($path, $include_hidden = false); foreach ($images as $image) { if (!preg_match('/\.png$/', $image)) { throw new Exception( "Expected file '{$image}' in '{$path}' to be a sprite source ". "ending in '.png'."); } $result[] = substr($image, 0, -4); } return $result; } private function buildSheet( $name, $has_retina, $type = null, $extra_css = '') { $sheet = new PhutilSpriteSheet(); $at = '@'; switch ($type) { case PhutilSpriteSheet::TYPE_STANDARD: default: $type = PhutilSpriteSheet::TYPE_STANDARD; $repeat_rule = 'no-repeat'; break; case PhutilSpriteSheet::TYPE_REPEAT_X: $repeat_rule = 'repeat-x'; break; case PhutilSpriteSheet::TYPE_REPEAT_Y: $repeat_rule = 'repeat-y'; break; } $retina_rules = null; if ($has_retina) { $retina_rules = <<setSheetType($type); $sheet->setCSSHeader(<<userHandle = $handle; return $this; } public function setTitle($title) { $this->title = $title; return $this; } public function addClass($class) { $this->classes[] = $class; return $this; } - public function setDisableStandardTitleStyle($disable) { - $this->disableStandardTitleStyle = $disable; + public function setIcon($icon) { + $this->icon = $icon; return $this; } - public function setDisableStandardContentStyle($disable) { - $this->disableStandardContentStyle = $disable; + public function setColor($color) { + $this->color = $color; return $this; } public function render() { $content = $this->renderChildren(); $title = $this->title; if (($title === null) && !strlen($content)) { $title = ''; } if ($title !== null) { $title_classes = array(); $title_classes[] = 'phabricator-timeline-title'; - if (!$this->disableStandardTitleStyle) { - $title_classes[] = 'phabricator-timeline-standard-title'; + + $icon = null; + if ($this->icon) { + $title_classes[] = 'phabricator-timeline-title-with-icon'; + + $icon = phutil_render_tag( + 'span', + array( + 'class' => 'phabricator-timeline-icon-fill', + ), + phutil_render_tag( + 'span', + array( + 'class' => 'phabricator-timeline-icon sprite-icon '. + 'action-'.$this->icon.'-white', + ), + '')); } $title = phutil_render_tag( 'div', array( 'class' => implode(' ', $title_classes), ), - $title); + $icon.$title); } $wedge = phutil_render_tag( 'div', array( 'class' => 'phabricator-timeline-wedge phabricator-timeline-border', ), ''); $image_uri = $this->userHandle->getImageURI(); $image = phutil_render_tag( 'div', array( 'style' => 'background-image: url('.$image_uri.')', 'class' => 'phabricator-timeline-image', ), ''); $content_classes = array(); $content_classes[] = 'phabricator-timeline-content'; - if (!$this->disableStandardContentStyle) { - $content_classes[] = 'phabricator-timeline-standard-content'; - } $classes = array(); $classes[] = 'phabricator-timeline-event-view'; $classes[] = 'phabricator-timeline-border'; if ($content) { $classes[] = 'phabricator-timeline-major-event'; $content = phutil_render_tag( 'div', array( 'class' => implode(' ', $content_classes), ), phutil_render_tag( 'div', array( 'class' => 'phabricator-timeline-inner-content', ), $title. phutil_render_tag( 'div', array( 'class' => 'phabricator-timeline-core-content', ), $content))); $content = $image.$wedge.$content; } else { $classes[] = 'phabricator-timeline-minor-event'; $content = phutil_render_tag( 'div', array( 'class' => implode(' ', $content_classes), ), $image.$wedge.$title); } + $outer_classes = $this->classes; + if ($this->color) { + $outer_classes[] = 'phabricator-timeline-'.$this->color; + } + return phutil_render_tag( 'div', array( - 'class' => implode(' ', $this->classes), + 'class' => implode(' ', $outer_classes), ), phutil_render_tag( 'div', array( 'class' => implode(' ', $classes), ), $content)); } } diff --git a/webroot/rsrc/css/layout/phabricator-timeline-view.css b/webroot/rsrc/css/layout/phabricator-timeline-view.css index 4ad083d77..6072c751e 100644 --- a/webroot/rsrc/css/layout/phabricator-timeline-view.css +++ b/webroot/rsrc/css/layout/phabricator-timeline-view.css @@ -1,132 +1,218 @@ /** * @provides phabricator-timeline-view-css */ .phabricator-timeline-event-view { border-width: 0 0 0 3px; border-style: solid; - border-color: #eaeaea; + border-color: #c0c5d1; } .device-desktop .phabricator-timeline-event-view { margin-left: 80px; margin-right: 12px; position: relative; } .device-desktop .phabricator-timeline-spacer { min-height: 10px; border-right-width: 0; } -.device-desktop .phabricator-timeline-major-event { +.device-desktop .phabricator-timeline-major-event, +.device-desktop .phabricator-timeline-minor-event { border-right-width: 3px; } .device-desktop .phabricator-timeline-wedge { - border-bottom: 3px solid #eaeaea; + border-bottom: 3px solid #c0c5d1; position: absolute; width: 10px; } .device-desktop .phabricator-timeline-major-event .phabricator-timeline-content { min-height: 70px; } -.phabricator-timeline-major-event .phabricator-timeline-content { +.phabricator-timeline-content { border-style: solid; - border-color: #eaeaea; + border-color: #c0c5d1; border-width: 1px 0; } .device-desktop .phabricator-timeline-minor-event .phabricator-timeline-content { - margin-left: 35px; - padding: 5px 0; - min-height: 25px; + min-height: 23px; } -.device-desktop .phabricator-timeline-title { - line-height: 25px; +.phabricator-timeline-title { + line-height: 23px; + min-height: 23px; + position: relative; } -.device-desktop .phabricator-timeline-major-event .phabricator-timeline-wedge { +.device-desktop .phabricator-timeline-wedge { left: -10px; +} +.device-desktop .phabricator-timeline-major-event .phabricator-timeline-wedge { top: 34px; } .device-desktop .phabricator-timeline-minor-event .phabricator-timeline-wedge { - left: 0px; - top: 17px; + top: 12px; } .phabricator-timeline-image { - background: #eaeaea; + background: #c0c5d1; background-repeat: no-repeat; position: absolute; } .device-desktop .phabricator-timeline-major-event .phabricator-timeline-image { width: 50px; height: 50px; top: 10px; left: -60px; } .device-desktop .phabricator-timeline-minor-event .phabricator-timeline-image { width: 25px; height: 25px; background-size: 25px auto; - top: 5px; - left: 10px; + left: -35px; } -.device-desktop .phabricator-timeline-major-event - .phabricator-timeline-standard-title { +.phabricator-timeline-major-event .phabricator-timeline-title { background: #f7f7f7; } -.device-desktop .phabricator-timeline-standard-title { +.phabricator-timeline-title { padding: 0 5px; } -.phabricator-timeline-major-event .phabricator-timeline-standard-content - .phabricator-timeline-core-content { - padding: 5px; -} - - -.phabricator-timeline-red .phabricator-timeline-border { - border-color: #dd0000; +.phabricator-timeline-title-with-icon { + padding-left: 28px; } -.phabricator-timeline-green .phabricator-timeline-border { - border-color: #009966; +.phabricator-timeline-major-event .phabricator-timeline-content + .phabricator-timeline-core-content { + padding: 5px; } .device .phabricator-timeline-event-view { - min-height: 25px; + min-height: 23px; position: relative; margin-left: 3px; margin-right: 3px; border-right-width: 3px; border-right-style: solid; } .device .phabricator-timeline-image { display: none; } -.device .phabricator-timeline-title { - line-height: 25px; - min-height: 25px; - background: #f7f7f7; - padding: 0 5px; -} - .device .phabricator-timeline-spacer { min-height: 8px; border-width: 0; } + +.phabricator-timeline-icon-fill { + position: absolute; + width: 25px; + height: 25px; + background-color: #c0c5d1; + top: -1px; + left: -3px; +} + +.phabricator-timeline-icon { + position: absolute; + left: 6px; + top: 5px; + height: 14px; + width: 14px; +} + +.phabricator-timeline-red .phabricator-timeline-border { + border-color: #cc0000; +} + +.phabricator-timeline-orange .phabricator-timeline-border { + border-color: #cc7300; +} + +.phabricator-timeline-yellow .phabricator-timeline-border { + border-color: #ccc000; +} + +.phabricator-timeline-green .phabricator-timeline-border { + border-color: #009b2d; +} + +.phabricator-timeline-sky .phabricator-timeline-border { + border-color: #6498cf; +} + +.phabricator-timeline-blue .phabricator-timeline-border { + border-color: #00659a; +} + +.phabricator-timeline-indigo .phabricator-timeline-border { + border-color: #3a00cc; +} + +.phabricator-timeline-violet .phabricator-timeline-border { + border-color: #67009b; +} + +.phabricator-timeline-grey .phabricator-timeline-border { + border-color: #999999; +} + +.phabricator-timeline-black .phabricator-timeline-border { + border-color: #333333; +} + + +.phabricator-timeline-red .phabricator-timeline-icon-fill { + background-color: #cc0000; +} + +.phabricator-timeline-orange .phabricator-timeline-icon-fill { + background-color: #cc7300; +} + +.phabricator-timeline-yellow .phabricator-timeline-icon-fill { + background-color: #ccc000; +} + +.phabricator-timeline-green .phabricator-timeline-icon-fill { + background-color: #009b2d; +} + +.phabricator-timeline-sky .phabricator-timeline-icon-fill { + background-color: #6498cf; +} + +.phabricator-timeline-blue .phabricator-timeline-icon-fill { + background-color: #00659a; +} + +.phabricator-timeline-indigo .phabricator-timeline-icon-fill { + background-color: #3a00cc; +} + +.phabricator-timeline-violet .phabricator-timeline-icon-fill { + background-color: #67009b; +} + +.phabricator-timeline-grey .phabricator-timeline-icon-fill { + background-color: #999999; +} + +.phabricator-timeline-black .phabricator-timeline-icon-fill { + background-color: #333333; +} diff --git a/webroot/rsrc/css/sprite-icon.css b/webroot/rsrc/css/sprite-icon.css index b6b924590..02a8705fd 100644 --- a/webroot/rsrc/css/sprite-icon.css +++ b/webroot/rsrc/css/sprite-icon.css @@ -1,787 +1,787 @@ /** * @provides sprite-icon-css * @generated */ .sprite-icon { background-image: url(/rsrc/image/sprite-icon.png); background-repeat: no-repeat; } @media only screen and (min-device-pixel-ratio: 1.5), only screen and (-webkit-min-device-pixel-ratio: 1.5) { .sprite-icon { background-image: url(/rsrc/image/sprite-icon-X2.png); background-size: 210px 210px; } } .action-arrow_left { background-position: 0px 0px; } .action-arrow_right { background-position: -15px 0px; } .action-attach { background-position: -30px 0px; } .action-blame { background-position: -45px 0px; } .action-check { background-position: -60px 0px; } .action-comment { background-position: -75px 0px; } .action-computer { background-position: -90px 0px; } .action-create { background-position: -105px 0px; } .action-delete { background-position: -120px 0px; } .action-disable { background-position: -135px 0px; } .action-dislike { background-position: -150px 0px; } .action-download { background-position: -165px 0px; } .action-edit { background-position: -180px 0px; } .action-enable { background-position: -195px 0px; } .action-file { background-position: 0px -15px; } .action-flag-0 { background-position: -15px -15px; } .action-flag-1 { background-position: -30px -15px; } .action-flag-2 { background-position: -45px -15px; } .action-flag-3 { background-position: -60px -15px; } .action-flag-4 { background-position: -75px -15px; } .action-flag-5 { background-position: -90px -15px; } .action-flag-6 { background-position: -105px -15px; } .action-flag-7 { background-position: -120px -15px; } .action-flag-ghost { background-position: -135px -15px; } .action-flag { background-position: -150px -15px; } .action-folder-open { background-position: -165px -15px; } .action-fork { background-position: -180px -15px; } .action-herald { background-position: -195px -15px; } .action-highlight { background-position: 0px -30px; } .action-history { background-position: -15px -30px; } .action-image { background-position: -30px -30px; } .action-like { background-position: -45px -30px; } .action-link { background-position: -60px -30px; } .action-lint-info { background-position: -75px -30px; } .action-lint-ok { background-position: -90px -30px; } .action-lint-warning { background-position: -105px -30px; } .action-lock { background-position: -120px -30px; } .action-love { background-position: -135px -30px; } .action-merge { background-position: -150px -30px; } .action-message { background-position: -165px -30px; } .action-meta-mta { background-position: -180px -30px; } .action-move { background-position: -195px -30px; } .action-new { background-position: 0px -45px; } .action-perflab { background-position: -15px -45px; } .action-preview { background-position: -30px -45px; } .action-refresh { background-position: -45px -45px; } .action-remove { background-position: -60px -45px; } .action-search { background-position: -75px -45px; } .action-start-sandcastle { background-position: -90px -45px; } .action-subscribe-add { background-position: -105px -45px; } .action-subscribe-auto { background-position: -120px -45px; } .action-subscribe-delete { background-position: -135px -45px; } .action-tag { background-position: -150px -45px; } .action-transcript { background-position: -165px -45px; } .action-undo { background-position: -180px -45px; } .action-unlock { background-position: -195px -45px; } .action-unmerge { background-position: 0px -60px; } .action-unpublish { background-position: -15px -60px; } .action-warning { background-position: -30px -60px; } .action-world { background-position: -45px -60px; } .action-arrow_left-grey { background-position: -60px -60px; } .action-arrow_right-grey { background-position: -75px -60px; } .action-attach-grey { background-position: -90px -60px; } .action-blame-grey { background-position: -105px -60px; } .action-check-grey { background-position: -120px -60px; } .action-comment-grey { background-position: -135px -60px; } .action-computer-grey { background-position: -150px -60px; } .action-create-grey { background-position: -165px -60px; } .action-delete-grey { background-position: -180px -60px; } .action-disable-grey { background-position: -195px -60px; } .action-dislike-grey { background-position: 0px -75px; } .action-download-grey { background-position: -15px -75px; } .action-edit-grey { background-position: -30px -75px; } .action-enable-grey { background-position: -45px -75px; } .action-file-grey { background-position: -60px -75px; } .action-flag-0-grey { background-position: -75px -75px; } .action-flag-1-grey { background-position: -90px -75px; } .action-flag-2-grey { background-position: -105px -75px; } .action-flag-3-grey { background-position: -120px -75px; } .action-flag-4-grey { background-position: -135px -75px; } .action-flag-5-grey { background-position: -150px -75px; } .action-flag-6-grey { background-position: -165px -75px; } .action-flag-7-grey { background-position: -180px -75px; } .action-flag-ghost-grey { background-position: -195px -75px; } .action-flag-grey { background-position: 0px -90px; } .action-folder-open-grey { background-position: -15px -90px; } .action-fork-grey { background-position: -30px -90px; } .action-herald-grey { background-position: -45px -90px; } .action-highlight-grey { background-position: -60px -90px; } .action-history-grey { background-position: -75px -90px; } .action-image-grey { background-position: -90px -90px; } .action-like-grey { background-position: -105px -90px; } .action-link-grey { background-position: -120px -90px; } .action-lint-info-grey { background-position: -135px -90px; } .action-lint-ok-grey { background-position: -150px -90px; } .action-lint-warning-grey { background-position: -165px -90px; } .action-lock-grey { background-position: -180px -90px; } .action-love-grey { background-position: -195px -90px; } .action-merge-grey { background-position: 0px -105px; } .action-message-grey { background-position: -15px -105px; } .action-meta-mta-grey { background-position: -30px -105px; } .action-move-grey { background-position: -45px -105px; } .action-new-grey { background-position: -60px -105px; } .action-perflab-grey { background-position: -75px -105px; } .action-preview-grey { background-position: -90px -105px; } .action-refresh-grey { background-position: -105px -105px; } .action-remove-grey { background-position: -120px -105px; } .action-search-grey { background-position: -135px -105px; } .action-start-sandcastle-grey { background-position: -150px -105px; } .action-subscribe-add-grey { background-position: -165px -105px; } .action-subscribe-auto-grey { background-position: -180px -105px; } .action-subscribe-delete-grey { background-position: -195px -105px; } .action-tag-grey { background-position: 0px -120px; } .action-transcript-grey { background-position: -15px -120px; } .action-undo-grey { background-position: -30px -120px; } .action-unlock-grey { background-position: -45px -120px; } .action-unmerge-grey { background-position: -60px -120px; } .action-unpublish-grey { background-position: -75px -120px; } .action-warning-grey { background-position: -90px -120px; } .action-world-grey { background-position: -105px -120px; } -.device-desktop .phabricator-action-view:hover .action-arrow_left { +.action-arrow_left-white, .device-desktop .phabricator-action-view:hover .action-arrow_left { background-position: -120px -120px; } -.device-desktop .phabricator-action-view:hover .action-arrow_right { +.action-arrow_right-white, .device-desktop .phabricator-action-view:hover .action-arrow_right { background-position: -135px -120px; } -.device-desktop .phabricator-action-view:hover .action-attach { +.action-attach-white, .device-desktop .phabricator-action-view:hover .action-attach { background-position: -150px -120px; } -.device-desktop .phabricator-action-view:hover .action-blame { +.action-blame-white, .device-desktop .phabricator-action-view:hover .action-blame { background-position: -165px -120px; } -.device-desktop .phabricator-action-view:hover .action-check { +.action-check-white, .device-desktop .phabricator-action-view:hover .action-check { background-position: -180px -120px; } -.device-desktop .phabricator-action-view:hover .action-comment { +.action-comment-white, .device-desktop .phabricator-action-view:hover .action-comment { background-position: -195px -120px; } -.device-desktop .phabricator-action-view:hover .action-computer { +.action-computer-white, .device-desktop .phabricator-action-view:hover .action-computer { background-position: 0px -135px; } -.device-desktop .phabricator-action-view:hover .action-create { +.action-create-white, .device-desktop .phabricator-action-view:hover .action-create { background-position: -15px -135px; } -.device-desktop .phabricator-action-view:hover .action-delete { +.action-delete-white, .device-desktop .phabricator-action-view:hover .action-delete { background-position: -30px -135px; } -.device-desktop .phabricator-action-view:hover .action-disable { +.action-disable-white, .device-desktop .phabricator-action-view:hover .action-disable { background-position: -45px -135px; } -.device-desktop .phabricator-action-view:hover .action-dislike { +.action-dislike-white, .device-desktop .phabricator-action-view:hover .action-dislike { background-position: -60px -135px; } -.device-desktop .phabricator-action-view:hover .action-download { +.action-download-white, .device-desktop .phabricator-action-view:hover .action-download { background-position: -75px -135px; } -.device-desktop .phabricator-action-view:hover .action-edit { +.action-edit-white, .device-desktop .phabricator-action-view:hover .action-edit { background-position: -90px -135px; } -.device-desktop .phabricator-action-view:hover .action-enable { +.action-enable-white, .device-desktop .phabricator-action-view:hover .action-enable { background-position: -105px -135px; } -.device-desktop .phabricator-action-view:hover .action-file { +.action-file-white, .device-desktop .phabricator-action-view:hover .action-file { background-position: -120px -135px; } -.device-desktop .phabricator-action-view:hover .action-flag-0 { +.action-flag-0-white, .device-desktop .phabricator-action-view:hover .action-flag-0 { background-position: -135px -135px; } -.device-desktop .phabricator-action-view:hover .action-flag-1 { +.action-flag-1-white, .device-desktop .phabricator-action-view:hover .action-flag-1 { background-position: -150px -135px; } -.device-desktop .phabricator-action-view:hover .action-flag-2 { +.action-flag-2-white, .device-desktop .phabricator-action-view:hover .action-flag-2 { background-position: -165px -135px; } -.device-desktop .phabricator-action-view:hover .action-flag-3 { +.action-flag-3-white, .device-desktop .phabricator-action-view:hover .action-flag-3 { background-position: -180px -135px; } -.device-desktop .phabricator-action-view:hover .action-flag-4 { +.action-flag-4-white, .device-desktop .phabricator-action-view:hover .action-flag-4 { background-position: -195px -135px; } -.device-desktop .phabricator-action-view:hover .action-flag-5 { +.action-flag-5-white, .device-desktop .phabricator-action-view:hover .action-flag-5 { background-position: 0px -150px; } -.device-desktop .phabricator-action-view:hover .action-flag-6 { +.action-flag-6-white, .device-desktop .phabricator-action-view:hover .action-flag-6 { background-position: -15px -150px; } -.device-desktop .phabricator-action-view:hover .action-flag-7 { +.action-flag-7-white, .device-desktop .phabricator-action-view:hover .action-flag-7 { background-position: -30px -150px; } -.device-desktop .phabricator-action-view:hover .action-flag-ghost { +.action-flag-ghost-white, .device-desktop .phabricator-action-view:hover .action-flag-ghost { background-position: -45px -150px; } -.device-desktop .phabricator-action-view:hover .action-flag { +.action-flag-white, .device-desktop .phabricator-action-view:hover .action-flag { background-position: -60px -150px; } -.device-desktop .phabricator-action-view:hover .action-folder-open { +.action-folder-open-white, .device-desktop .phabricator-action-view:hover .action-folder-open { background-position: -75px -150px; } -.device-desktop .phabricator-action-view:hover .action-fork { +.action-fork-white, .device-desktop .phabricator-action-view:hover .action-fork { background-position: -90px -150px; } -.device-desktop .phabricator-action-view:hover .action-herald { +.action-herald-white, .device-desktop .phabricator-action-view:hover .action-herald { background-position: -105px -150px; } -.device-desktop .phabricator-action-view:hover .action-highlight { +.action-highlight-white, .device-desktop .phabricator-action-view:hover .action-highlight { background-position: -120px -150px; } -.device-desktop .phabricator-action-view:hover .action-history { +.action-history-white, .device-desktop .phabricator-action-view:hover .action-history { background-position: -135px -150px; } -.device-desktop .phabricator-action-view:hover .action-image { +.action-image-white, .device-desktop .phabricator-action-view:hover .action-image { background-position: -150px -150px; } -.device-desktop .phabricator-action-view:hover .action-like { +.action-like-white, .device-desktop .phabricator-action-view:hover .action-like { background-position: -165px -150px; } -.device-desktop .phabricator-action-view:hover .action-link { +.action-link-white, .device-desktop .phabricator-action-view:hover .action-link { background-position: -180px -150px; } -.device-desktop .phabricator-action-view:hover .action-lint-info { +.action-lint-info-white, .device-desktop .phabricator-action-view:hover .action-lint-info { background-position: 0px -165px; } -.device-desktop .phabricator-action-view:hover .action-lint-ok { +.action-lint-ok-white, .device-desktop .phabricator-action-view:hover .action-lint-ok { background-position: -15px -165px; } -.device-desktop .phabricator-action-view:hover .action-lint-warning { +.action-lint-warning-white, .device-desktop .phabricator-action-view:hover .action-lint-warning { background-position: -30px -165px; } -.device-desktop .phabricator-action-view:hover .action-lock { +.action-lock-white, .device-desktop .phabricator-action-view:hover .action-lock { background-position: -45px -165px; } -.device-desktop .phabricator-action-view:hover .action-love { +.action-love-white, .device-desktop .phabricator-action-view:hover .action-love { background-position: -60px -165px; } -.device-desktop .phabricator-action-view:hover .action-merge { +.action-merge-white, .device-desktop .phabricator-action-view:hover .action-merge { background-position: -75px -165px; } -.device-desktop .phabricator-action-view:hover .action-message { +.action-message-white, .device-desktop .phabricator-action-view:hover .action-message { background-position: -90px -165px; } -.device-desktop .phabricator-action-view:hover .action-meta-mta { +.action-meta-mta-white, .device-desktop .phabricator-action-view:hover .action-meta-mta { background-position: -105px -165px; } -.device-desktop .phabricator-action-view:hover .action-move { +.action-move-white, .device-desktop .phabricator-action-view:hover .action-move { background-position: -120px -165px; } -.device-desktop .phabricator-action-view:hover .action-new { +.action-new-white, .device-desktop .phabricator-action-view:hover .action-new { background-position: -135px -165px; } -.device-desktop .phabricator-action-view:hover .action-perflab { +.action-perflab-white, .device-desktop .phabricator-action-view:hover .action-perflab { background-position: -150px -165px; } -.device-desktop .phabricator-action-view:hover .action-preview { +.action-preview-white, .device-desktop .phabricator-action-view:hover .action-preview { background-position: -165px -165px; } -.device-desktop .phabricator-action-view:hover .action-refresh { +.action-refresh-white, .device-desktop .phabricator-action-view:hover .action-refresh { background-position: -180px -165px; } -.device-desktop .phabricator-action-view:hover .action-remove { +.action-remove-white, .device-desktop .phabricator-action-view:hover .action-remove { background-position: 0px -180px; } -.device-desktop .phabricator-action-view:hover .action-search { +.action-search-white, .device-desktop .phabricator-action-view:hover .action-search { background-position: -15px -180px; } -.device-desktop .phabricator-action-view:hover .action-start-sandcastle { +.action-start-sandcastle-white, .device-desktop .phabricator-action-view:hover .action-start-sandcastle { background-position: -30px -180px; } -.device-desktop .phabricator-action-view:hover .action-subscribe-add { +.action-subscribe-add-white, .device-desktop .phabricator-action-view:hover .action-subscribe-add { background-position: -45px -180px; } -.device-desktop .phabricator-action-view:hover .action-subscribe-auto { +.action-subscribe-auto-white, .device-desktop .phabricator-action-view:hover .action-subscribe-auto { background-position: -60px -180px; } -.device-desktop .phabricator-action-view:hover .action-subscribe-delete { +.action-subscribe-delete-white, .device-desktop .phabricator-action-view:hover .action-subscribe-delete { background-position: -75px -180px; } -.device-desktop .phabricator-action-view:hover .action-tag { +.action-tag-white, .device-desktop .phabricator-action-view:hover .action-tag { background-position: -90px -180px; } -.device-desktop .phabricator-action-view:hover .action-transcript { +.action-transcript-white, .device-desktop .phabricator-action-view:hover .action-transcript { background-position: -105px -180px; } -.device-desktop .phabricator-action-view:hover .action-undo { +.action-undo-white, .device-desktop .phabricator-action-view:hover .action-undo { background-position: -120px -180px; } -.device-desktop .phabricator-action-view:hover .action-unlock { +.action-unlock-white, .device-desktop .phabricator-action-view:hover .action-unlock { background-position: -135px -180px; } -.device-desktop .phabricator-action-view:hover .action-unmerge { +.action-unmerge-white, .device-desktop .phabricator-action-view:hover .action-unmerge { background-position: -150px -180px; } -.device-desktop .phabricator-action-view:hover .action-unpublish { +.action-unpublish-white, .device-desktop .phabricator-action-view:hover .action-unpublish { background-position: -165px -180px; } -.device-desktop .phabricator-action-view:hover .action-warning { +.action-warning-white, .device-desktop .phabricator-action-view:hover .action-warning { background-position: -180px -180px; } -.device-desktop .phabricator-action-view:hover .action-world { +.action-world-white, .device-desktop .phabricator-action-view:hover .action-world { background-position: 0px -195px; } .remarkup-assist-b { background-position: -15px -195px; } .remarkup-assist-code { background-position: -30px -195px; } .remarkup-assist-help { background-position: -45px -195px; } .remarkup-assist-i { background-position: -60px -195px; } .remarkup-assist-image { background-position: -75px -195px; } .remarkup-assist-larger { background-position: -90px -195px; } .remarkup-assist-meme { background-position: -105px -195px; } .remarkup-assist-ol { background-position: -120px -195px; } .remarkup-assist-table { background-position: -135px -195px; } .remarkup-assist-tag { background-position: -150px -195px; } .remarkup-assist-tt { background-position: -165px -195px; } .remarkup-assist-ul { background-position: -180px -195px; }