Merge branch 'master' into phutil_tag
(Just synchronizing master into the tag branch.)
BIN
resources/sprite/apps_blue_2x/conpherence.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/sprite/apps_blue_4x/conpherence.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
resources/sprite/apps_dark_1x/conpherence.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/sprite/apps_dark_2x/conpherence.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
resources/sprite/apps_dark_4x/conpherence.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
resources/sprite/apps_glow_2x/conpherence.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
resources/sprite/apps_glow_4x/conpherence.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
resources/sprite/apps_lb_2x/conpherence.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
resources/sprite/apps_lb_4x/conpherence.png
Normal file
After Width: | Height: | Size: 3 KiB |
|
@ -4,762 +4,782 @@
|
|||
"app-application-blue-large" : {
|
||||
"name" : "app-application-blue-large",
|
||||
"rule" : ".app-application-blue-large, .phabricator-crumb-view:hover .app-application-dark-large",
|
||||
"hash" : "c8e0319f0c8a3c19bb74391785149424"
|
||||
"hash" : "80f42a283979cef89577721ca6d9cdef"
|
||||
},
|
||||
"app-application-dark-large" : {
|
||||
"name" : "app-application-dark-large",
|
||||
"rule" : ".app-application-dark-large",
|
||||
"hash" : "a5a904b67bdd26c15b8df07b0b0cee1a"
|
||||
"hash" : "8ab1619bcb768cc1b85106b077d29522"
|
||||
},
|
||||
"app-application-glow-large" : {
|
||||
"name" : "app-application-glow-large",
|
||||
"rule" : ".app-application-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-application-light-large",
|
||||
"hash" : "04cd8ab1f4785d33d6c9c829dce35cb6"
|
||||
"hash" : "26aedaf7940300f18eb0ef59566a0988"
|
||||
},
|
||||
"app-application-light-large" : {
|
||||
"name" : "app-application-light-large",
|
||||
"rule" : ".app-application-light-large",
|
||||
"hash" : "8b071cf0efedda7c8c772829d31453ea"
|
||||
"hash" : "09d4ef0cb36255291693971754ec55ee"
|
||||
},
|
||||
"app-audit-blue-large" : {
|
||||
"name" : "app-audit-blue-large",
|
||||
"rule" : ".app-audit-blue-large, .phabricator-crumb-view:hover .app-audit-dark-large",
|
||||
"hash" : "cfb6e6c27d6bf4bbf2e07c8d284948d7"
|
||||
"hash" : "05941dc7d5ff156c0e899c6345f6833a"
|
||||
},
|
||||
"app-audit-dark-large" : {
|
||||
"name" : "app-audit-dark-large",
|
||||
"rule" : ".app-audit-dark-large",
|
||||
"hash" : "0880246fc6aa5d0cec823166af5b388f"
|
||||
"hash" : "cbf8e6c5a580bd3b5169f30d3cd0ec6a"
|
||||
},
|
||||
"app-audit-glow-large" : {
|
||||
"name" : "app-audit-glow-large",
|
||||
"rule" : ".app-audit-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-audit-light-large",
|
||||
"hash" : "2f3896e45a05d55c3a95440dbeac9187"
|
||||
"hash" : "5ab43e357c123c05a9db85a964b20252"
|
||||
},
|
||||
"app-audit-light-large" : {
|
||||
"name" : "app-audit-light-large",
|
||||
"rule" : ".app-audit-light-large",
|
||||
"hash" : "8dd753f716233d2f6edf553df4fde942"
|
||||
"hash" : "aa853bebb7a315b994f1527247e3b362"
|
||||
},
|
||||
"app-calendar-blue-large" : {
|
||||
"name" : "app-calendar-blue-large",
|
||||
"rule" : ".app-calendar-blue-large, .phabricator-crumb-view:hover .app-calendar-dark-large",
|
||||
"hash" : "a05add9fa18df8a98cf2735cf27ec6e1"
|
||||
"hash" : "9e530feec2926878ee7eaa8a04a8607b"
|
||||
},
|
||||
"app-calendar-dark-large" : {
|
||||
"name" : "app-calendar-dark-large",
|
||||
"rule" : ".app-calendar-dark-large",
|
||||
"hash" : "5c98faf324152ec55bad6ac76f77ec00"
|
||||
"hash" : "65de91c173d169bbf407c9e7cefa9715"
|
||||
},
|
||||
"app-calendar-glow-large" : {
|
||||
"name" : "app-calendar-glow-large",
|
||||
"rule" : ".app-calendar-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-calendar-light-large",
|
||||
"hash" : "d1a7c623c5b3d902a389fc2ea8941858"
|
||||
"hash" : "1dc738045b09476feebe5e705a61b7a9"
|
||||
},
|
||||
"app-calendar-light-large" : {
|
||||
"name" : "app-calendar-light-large",
|
||||
"rule" : ".app-calendar-light-large",
|
||||
"hash" : "466b97737778eff91ebd9afabac6e5a6"
|
||||
"hash" : "043dab56a011f84f5affc2c7c13e3a39"
|
||||
},
|
||||
"app-conduit-blue-large" : {
|
||||
"name" : "app-conduit-blue-large",
|
||||
"rule" : ".app-conduit-blue-large, .phabricator-crumb-view:hover .app-conduit-dark-large",
|
||||
"hash" : "ed8208ab196da7da6160edbdb0be118a"
|
||||
"hash" : "4ab937882a119bacc0206029cbd7919d"
|
||||
},
|
||||
"app-conduit-dark-large" : {
|
||||
"name" : "app-conduit-dark-large",
|
||||
"rule" : ".app-conduit-dark-large",
|
||||
"hash" : "bad7559ed9928596c0241d8490e67422"
|
||||
"hash" : "34de5192c69af7a9cf3941f7b5cb088e"
|
||||
},
|
||||
"app-conduit-glow-large" : {
|
||||
"name" : "app-conduit-glow-large",
|
||||
"rule" : ".app-conduit-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-conduit-light-large",
|
||||
"hash" : "072c3ca188a60e9ee08c6eb36b8628c9"
|
||||
"hash" : "b89b969a7fba76d39c768ac8de19c964"
|
||||
},
|
||||
"app-conduit-light-large" : {
|
||||
"name" : "app-conduit-light-large",
|
||||
"rule" : ".app-conduit-light-large",
|
||||
"hash" : "92047e758fac063dfb0608863ee66b7e"
|
||||
"hash" : "a2fd3cfe6e4e46d589e0e99f52e7f6f0"
|
||||
},
|
||||
"app-conpherence-blue-large" : {
|
||||
"name" : "app-conpherence-blue-large",
|
||||
"rule" : ".app-conpherence-blue-large, .phabricator-crumb-view:hover .app-conpherence-dark-large",
|
||||
"hash" : "efcf3788ac60484d5920b37c1560e565"
|
||||
},
|
||||
"app-conpherence-dark-large" : {
|
||||
"name" : "app-conpherence-dark-large",
|
||||
"rule" : ".app-conpherence-dark-large",
|
||||
"hash" : "2722117e3da8c2dbc478d957fb21ca53"
|
||||
},
|
||||
"app-conpherence-glow-large" : {
|
||||
"name" : "app-conpherence-glow-large",
|
||||
"rule" : ".app-conpherence-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-conpherence-light-large",
|
||||
"hash" : "efa3c29ad40680fca2d62e0b180e709f"
|
||||
},
|
||||
"app-conpherence-light-large" : {
|
||||
"name" : "app-conpherence-light-large",
|
||||
"rule" : ".app-conpherence-light-large",
|
||||
"hash" : "a79e5f0094caf9f012f3e9d7a10f2bac"
|
||||
},
|
||||
"app-countdown-blue-large" : {
|
||||
"name" : "app-countdown-blue-large",
|
||||
"rule" : ".app-countdown-blue-large, .phabricator-crumb-view:hover .app-countdown-dark-large",
|
||||
"hash" : "d44b7acae6b6b052ac869f0176b66b89"
|
||||
"hash" : "a4079b8e55924b7590011b35ba9bfdb0"
|
||||
},
|
||||
"app-countdown-dark-large" : {
|
||||
"name" : "app-countdown-dark-large",
|
||||
"rule" : ".app-countdown-dark-large",
|
||||
"hash" : "dc7df8202a5fa7baf17fd446a9b5c4c5"
|
||||
"hash" : "25547923eb9927ed0c30804fafd471d3"
|
||||
},
|
||||
"app-countdown-glow-large" : {
|
||||
"name" : "app-countdown-glow-large",
|
||||
"rule" : ".app-countdown-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-countdown-light-large",
|
||||
"hash" : "3b972002d629a49a4eca9049a9b2c6ae"
|
||||
"hash" : "472fcd5cf9f292b0d2f9f275541fed18"
|
||||
},
|
||||
"app-countdown-light-large" : {
|
||||
"name" : "app-countdown-light-large",
|
||||
"rule" : ".app-countdown-light-large",
|
||||
"hash" : "8f3814f70c1cb0475dd4678cc8937d91"
|
||||
"hash" : "24bac143e049862bed161d819990cee0"
|
||||
},
|
||||
"app-daemon-blue-large" : {
|
||||
"name" : "app-daemon-blue-large",
|
||||
"rule" : ".app-daemon-blue-large, .phabricator-crumb-view:hover .app-daemon-dark-large",
|
||||
"hash" : "c922a7e7ec9467ca48b2a2573904b7ce"
|
||||
"hash" : "beb6586864ef67a7bd7a9a159b8c2a56"
|
||||
},
|
||||
"app-daemon-dark-large" : {
|
||||
"name" : "app-daemon-dark-large",
|
||||
"rule" : ".app-daemon-dark-large",
|
||||
"hash" : "b2e566baac0c579563bd5bd700deb41b"
|
||||
"hash" : "cf2e12b2967d155c437862bbb9ce2d86"
|
||||
},
|
||||
"app-daemon-glow-large" : {
|
||||
"name" : "app-daemon-glow-large",
|
||||
"rule" : ".app-daemon-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-daemon-light-large",
|
||||
"hash" : "1c8e2776b9b984b804f6dca073f101eb"
|
||||
"hash" : "1728089df503ec805b42e262b196b616"
|
||||
},
|
||||
"app-daemon-light-large" : {
|
||||
"name" : "app-daemon-light-large",
|
||||
"rule" : ".app-daemon-light-large",
|
||||
"hash" : "9c778b43f9f7380fc9bd862c097bbaa8"
|
||||
"hash" : "44328612154fbf1a2f0f6ff28cd23521"
|
||||
},
|
||||
"app-differential-blue-large" : {
|
||||
"name" : "app-differential-blue-large",
|
||||
"rule" : ".app-differential-blue-large, .phabricator-crumb-view:hover .app-differential-dark-large",
|
||||
"hash" : "59049df6a30c816ea68d3025da79a091"
|
||||
"hash" : "9491284c8cbf77df0795bdf9cd16651e"
|
||||
},
|
||||
"app-differential-dark-large" : {
|
||||
"name" : "app-differential-dark-large",
|
||||
"rule" : ".app-differential-dark-large",
|
||||
"hash" : "fd1e0f1fa97b00c7409ebfdc56cf4865"
|
||||
"hash" : "a4b2ac4d4f697896e3abe9e58501fea5"
|
||||
},
|
||||
"app-differential-glow-large" : {
|
||||
"name" : "app-differential-glow-large",
|
||||
"rule" : ".app-differential-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-differential-light-large",
|
||||
"hash" : "3997a58a26389e8ede8022fd05cf8b43"
|
||||
"hash" : "d7e777585cc826becb64042f8bb31fc5"
|
||||
},
|
||||
"app-differential-light-large" : {
|
||||
"name" : "app-differential-light-large",
|
||||
"rule" : ".app-differential-light-large",
|
||||
"hash" : "b5c750e09f57a787e89f32820f791c4a"
|
||||
"hash" : "a763d63d22cac8226d8bd5656221a91b"
|
||||
},
|
||||
"app-diffusion-blue-large" : {
|
||||
"name" : "app-diffusion-blue-large",
|
||||
"rule" : ".app-diffusion-blue-large, .phabricator-crumb-view:hover .app-diffusion-dark-large",
|
||||
"hash" : "b982cfacfde43d3267082bca236bc72c"
|
||||
"hash" : "35e35c07ca1a151c810bb38a90496a2d"
|
||||
},
|
||||
"app-diffusion-dark-large" : {
|
||||
"name" : "app-diffusion-dark-large",
|
||||
"rule" : ".app-diffusion-dark-large",
|
||||
"hash" : "2eb71cde4af83347efdee542f4cadd8e"
|
||||
"hash" : "5b3752babd557f2c9bbc0120bd9a0747"
|
||||
},
|
||||
"app-diffusion-glow-large" : {
|
||||
"name" : "app-diffusion-glow-large",
|
||||
"rule" : ".app-diffusion-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-diffusion-light-large",
|
||||
"hash" : "55873c2e30e693e7bde0f4a90045064d"
|
||||
"hash" : "a5a682fffa03d4cdae9a86b8c79d1a81"
|
||||
},
|
||||
"app-diffusion-light-large" : {
|
||||
"name" : "app-diffusion-light-large",
|
||||
"rule" : ".app-diffusion-light-large",
|
||||
"hash" : "6eeb6f6df3ecd1ee923081b2d82f0505"
|
||||
"hash" : "1f04606fe4f0650982327bf09bf5adc0"
|
||||
},
|
||||
"app-diviner-blue-large" : {
|
||||
"name" : "app-diviner-blue-large",
|
||||
"rule" : ".app-diviner-blue-large, .phabricator-crumb-view:hover .app-diviner-dark-large",
|
||||
"hash" : "bda64f504c0c2c34125758bd01c80e05"
|
||||
"hash" : "97f1242c914315cf773c27bbec964335"
|
||||
},
|
||||
"app-diviner-dark-large" : {
|
||||
"name" : "app-diviner-dark-large",
|
||||
"rule" : ".app-diviner-dark-large",
|
||||
"hash" : "786a865464564d66d458557c909a77ea"
|
||||
"hash" : "c4f0550826f60fcd48d6ebcd340184b4"
|
||||
},
|
||||
"app-diviner-glow-large" : {
|
||||
"name" : "app-diviner-glow-large",
|
||||
"rule" : ".app-diviner-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-diviner-light-large",
|
||||
"hash" : "d173b3a659a2a4b5af5890ba70e827d1"
|
||||
"hash" : "7f7f0e1886036d894a5b22b72872ad06"
|
||||
},
|
||||
"app-diviner-light-large" : {
|
||||
"name" : "app-diviner-light-large",
|
||||
"rule" : ".app-diviner-light-large",
|
||||
"hash" : "c515bc52cb560adebce1e84bb5d917ce"
|
||||
"hash" : "b13413ada716fa7d3449c38b11decd5d"
|
||||
},
|
||||
"app-drydock-blue-large" : {
|
||||
"name" : "app-drydock-blue-large",
|
||||
"rule" : ".app-drydock-blue-large, .phabricator-crumb-view:hover .app-drydock-dark-large",
|
||||
"hash" : "ba82e330a78dd60df033560e083601cf"
|
||||
"hash" : "a63aaba405583e356f00af6bc1dedfad"
|
||||
},
|
||||
"app-drydock-dark-large" : {
|
||||
"name" : "app-drydock-dark-large",
|
||||
"rule" : ".app-drydock-dark-large",
|
||||
"hash" : "7a41b9668c77b85b8acf048d9e61c50a"
|
||||
"hash" : "a97be15640a38db803cc03215968e856"
|
||||
},
|
||||
"app-drydock-glow-large" : {
|
||||
"name" : "app-drydock-glow-large",
|
||||
"rule" : ".app-drydock-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-drydock-light-large",
|
||||
"hash" : "f5866c62ecbc94ecacd1563d2780677d"
|
||||
"hash" : "d7beac10376044ffda0adbe6ed01e645"
|
||||
},
|
||||
"app-drydock-light-large" : {
|
||||
"name" : "app-drydock-light-large",
|
||||
"rule" : ".app-drydock-light-large",
|
||||
"hash" : "2c1ce32d5d5291e7d3d3d6e9323a2a65"
|
||||
"hash" : "712c8fa45f964e0c4cbb69321fd1fded"
|
||||
},
|
||||
"app-fact-blue-large" : {
|
||||
"name" : "app-fact-blue-large",
|
||||
"rule" : ".app-fact-blue-large, .phabricator-crumb-view:hover .app-fact-dark-large",
|
||||
"hash" : "1e2b911cb36b0d44384487e348892ccc"
|
||||
"hash" : "4b07b51e2178f12533c04c55d522d9e5"
|
||||
},
|
||||
"app-fact-dark-large" : {
|
||||
"name" : "app-fact-dark-large",
|
||||
"rule" : ".app-fact-dark-large",
|
||||
"hash" : "5fb4a988baad433e9900f1a814b89caa"
|
||||
"hash" : "6040fe830d8f0868cdb38ee2b8ee16ac"
|
||||
},
|
||||
"app-fact-glow-large" : {
|
||||
"name" : "app-fact-glow-large",
|
||||
"rule" : ".app-fact-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-fact-light-large",
|
||||
"hash" : "5bd7e5f2adfa0935ae97270139ec4912"
|
||||
"hash" : "691ab101af38d4f06421ca0b22e463d9"
|
||||
},
|
||||
"app-fact-light-large" : {
|
||||
"name" : "app-fact-light-large",
|
||||
"rule" : ".app-fact-light-large",
|
||||
"hash" : "3bc45d399dad8ec8d55873714c42c1d7"
|
||||
"hash" : "8253f813361ba065866ee6e6e2077320"
|
||||
},
|
||||
"app-feed-blue-large" : {
|
||||
"name" : "app-feed-blue-large",
|
||||
"rule" : ".app-feed-blue-large, .phabricator-crumb-view:hover .app-feed-dark-large",
|
||||
"hash" : "3bcdec795b38002644a8009c927a0acc"
|
||||
"hash" : "462246f99422c86301b7d4faa67d9488"
|
||||
},
|
||||
"app-feed-dark-large" : {
|
||||
"name" : "app-feed-dark-large",
|
||||
"rule" : ".app-feed-dark-large",
|
||||
"hash" : "e83834eccc699399b604069b95465cff"
|
||||
"hash" : "0eecff752dc5dde55e7feaa52b7ee7d0"
|
||||
},
|
||||
"app-feed-glow-large" : {
|
||||
"name" : "app-feed-glow-large",
|
||||
"rule" : ".app-feed-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-feed-light-large",
|
||||
"hash" : "ca2fb9a2cd437b465f5d912a4d26f3e5"
|
||||
"hash" : "45fe559a997e540933c184ae570a6ddc"
|
||||
},
|
||||
"app-feed-light-large" : {
|
||||
"name" : "app-feed-light-large",
|
||||
"rule" : ".app-feed-light-large",
|
||||
"hash" : "e3a8add13539550ddaab62f84b30dd66"
|
||||
"hash" : "2ec6e12956fe1e1b746261bb3d0a0d36"
|
||||
},
|
||||
"app-files-blue-large" : {
|
||||
"name" : "app-files-blue-large",
|
||||
"rule" : ".app-files-blue-large, .phabricator-crumb-view:hover .app-files-dark-large",
|
||||
"hash" : "4505af3a9261a1ee4e00bf1d046286dd"
|
||||
"hash" : "f9217c49be154a830303285ae64790c8"
|
||||
},
|
||||
"app-files-dark-large" : {
|
||||
"name" : "app-files-dark-large",
|
||||
"rule" : ".app-files-dark-large",
|
||||
"hash" : "1d229c79f3b8301ca1ee38ccd9c7c142"
|
||||
"hash" : "78fb66b9edc99c3694325548582f0506"
|
||||
},
|
||||
"app-files-glow-large" : {
|
||||
"name" : "app-files-glow-large",
|
||||
"rule" : ".app-files-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-files-light-large",
|
||||
"hash" : "4bd7617617d0af975282bdd9a399d0ab"
|
||||
"hash" : "cabf071ace59043fc877f1e962109c83"
|
||||
},
|
||||
"app-files-light-large" : {
|
||||
"name" : "app-files-light-large",
|
||||
"rule" : ".app-files-light-large",
|
||||
"hash" : "0d8bf609759312d89e2a4b148f0701d8"
|
||||
"hash" : "ee5503d0684ea20be40023a29589d322"
|
||||
},
|
||||
"app-flags-blue-large" : {
|
||||
"name" : "app-flags-blue-large",
|
||||
"rule" : ".app-flags-blue-large, .phabricator-crumb-view:hover .app-flags-dark-large",
|
||||
"hash" : "a6f52b520f88e4ef60b7a76fb3c2c597"
|
||||
"hash" : "8bbdefdaba30bf6a020f8515ee33d452"
|
||||
},
|
||||
"app-flags-dark-large" : {
|
||||
"name" : "app-flags-dark-large",
|
||||
"rule" : ".app-flags-dark-large",
|
||||
"hash" : "51307234bb3c309b3ea69381e0b72b16"
|
||||
"hash" : "c6824e1362ec59ccf9ad8f451da466c1"
|
||||
},
|
||||
"app-flags-glow-large" : {
|
||||
"name" : "app-flags-glow-large",
|
||||
"rule" : ".app-flags-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-flags-light-large",
|
||||
"hash" : "75c1c107f4e750ef27bf50b4b51b0e00"
|
||||
"hash" : "e728b1018c62d24efa5d416d138cb671"
|
||||
},
|
||||
"app-flags-light-large" : {
|
||||
"name" : "app-flags-light-large",
|
||||
"rule" : ".app-flags-light-large",
|
||||
"hash" : "8c198ba5bcd146595870bab777d4992e"
|
||||
"hash" : "4a40dc3e18011a8283840e5dfbe14dc9"
|
||||
},
|
||||
"app-help-blue-large" : {
|
||||
"name" : "app-help-blue-large",
|
||||
"rule" : ".app-help-blue-large, .phabricator-crumb-view:hover .app-help-dark-large",
|
||||
"hash" : "a74c4f436b2e70c0e06f4224953d064a"
|
||||
"hash" : "703f8c674cdd22f1314ffe8977acf35b"
|
||||
},
|
||||
"app-help-dark-large" : {
|
||||
"name" : "app-help-dark-large",
|
||||
"rule" : ".app-help-dark-large",
|
||||
"hash" : "3cbd366c4b5758e45ef07507c70f68c0"
|
||||
"hash" : "601aaf7047f9db41baf7e3393b0d7aeb"
|
||||
},
|
||||
"app-help-glow-large" : {
|
||||
"name" : "app-help-glow-large",
|
||||
"rule" : ".app-help-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-help-light-large",
|
||||
"hash" : "c795358a116961342b206821a1b8038b"
|
||||
"hash" : "1a2928f28cbfdcc31f411e7d2dc26447"
|
||||
},
|
||||
"app-help-light-large" : {
|
||||
"name" : "app-help-light-large",
|
||||
"rule" : ".app-help-light-large",
|
||||
"hash" : "722eceffe63605b00a5b957b5f40db98"
|
||||
"hash" : "c17b8e6228f844777177c5070e17dd91"
|
||||
},
|
||||
"app-herald-blue-large" : {
|
||||
"name" : "app-herald-blue-large",
|
||||
"rule" : ".app-herald-blue-large, .phabricator-crumb-view:hover .app-herald-dark-large",
|
||||
"hash" : "9edfe47e8f1f2c4f1071f4d8b6ed346d"
|
||||
"hash" : "4bf9b4b872e7207d66c6e80dcad47b0e"
|
||||
},
|
||||
"app-herald-dark-large" : {
|
||||
"name" : "app-herald-dark-large",
|
||||
"rule" : ".app-herald-dark-large",
|
||||
"hash" : "4b7a3ab5e0b6a04224ccb6e520e73d6e"
|
||||
"hash" : "e19fd614bf5f904603517df957165b22"
|
||||
},
|
||||
"app-herald-glow-large" : {
|
||||
"name" : "app-herald-glow-large",
|
||||
"rule" : ".app-herald-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-herald-light-large",
|
||||
"hash" : "22beef0629ee517ba1a2b822ed440d0c"
|
||||
"hash" : "13ef725e4f2da68211cf9ab17740c723"
|
||||
},
|
||||
"app-herald-light-large" : {
|
||||
"name" : "app-herald-light-large",
|
||||
"rule" : ".app-herald-light-large",
|
||||
"hash" : "65bbeb68fd051b77f4871aafe2994f56"
|
||||
"hash" : "81af2b9899db0b5c877d96016ddfa1a1"
|
||||
},
|
||||
"app-home-blue-large" : {
|
||||
"name" : "app-home-blue-large",
|
||||
"rule" : ".app-home-blue-large, .phabricator-crumb-view:hover .app-home-dark-large",
|
||||
"hash" : "7df64082c33dcc3d2263772c0393be70"
|
||||
"hash" : "7011cb276b9d7d1f042d2f0393a74312"
|
||||
},
|
||||
"app-home-dark-large" : {
|
||||
"name" : "app-home-dark-large",
|
||||
"rule" : ".app-home-dark-large",
|
||||
"hash" : "79acb839094adcb3ad94567c054801eb"
|
||||
"hash" : "6b7f677ad630593900132f6271c41cb4"
|
||||
},
|
||||
"app-home-glow-large" : {
|
||||
"name" : "app-home-glow-large",
|
||||
"rule" : ".app-home-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-home-light-large",
|
||||
"hash" : "5af620ae48ba98ee4ee594c32ba761cb"
|
||||
"hash" : "8b61be58e6a4f0e9e73434c40844260b"
|
||||
},
|
||||
"app-home-light-large" : {
|
||||
"name" : "app-home-light-large",
|
||||
"rule" : ".app-home-light-large",
|
||||
"hash" : "181a71639319f3beda59809963384250"
|
||||
"hash" : "f0740b16cd3746a1234070f1785c03eb"
|
||||
},
|
||||
"app-logo-blue-large" : {
|
||||
"name" : "app-logo-blue-large",
|
||||
"rule" : ".app-logo-blue-large, .phabricator-crumb-view:hover .app-logo-dark-large",
|
||||
"hash" : "025f46665b079f5899ec53be09165d09"
|
||||
"hash" : "64a8124698f9441f50230f3a63364dd7"
|
||||
},
|
||||
"app-logo-dark-large" : {
|
||||
"name" : "app-logo-dark-large",
|
||||
"rule" : ".app-logo-dark-large",
|
||||
"hash" : "20524d2868b7b57423aa8dc27b284cac"
|
||||
"hash" : "8023a60fcba24c3f200214152a62a2c3"
|
||||
},
|
||||
"app-logo-glow-large" : {
|
||||
"name" : "app-logo-glow-large",
|
||||
"rule" : ".app-logo-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-logo-light-large",
|
||||
"hash" : "3969545781a17ec856bacec4ed110506"
|
||||
"hash" : "c742c782b92cc5fecdc1a9747568ad70"
|
||||
},
|
||||
"app-logo-light-large" : {
|
||||
"name" : "app-logo-light-large",
|
||||
"rule" : ".app-logo-light-large",
|
||||
"hash" : "bd1b66ffad9ee26019738fc00a7eb343"
|
||||
"hash" : "52fc06fb90f7ec1c29498069b1a059b2"
|
||||
},
|
||||
"app-macro-blue-large" : {
|
||||
"name" : "app-macro-blue-large",
|
||||
"rule" : ".app-macro-blue-large, .phabricator-crumb-view:hover .app-macro-dark-large",
|
||||
"hash" : "a6116a196718bf6cd5337b4c49de710e"
|
||||
"hash" : "50c14fec9a7f913c8aa4a2793bf2867c"
|
||||
},
|
||||
"app-macro-dark-large" : {
|
||||
"name" : "app-macro-dark-large",
|
||||
"rule" : ".app-macro-dark-large",
|
||||
"hash" : "583a495f319fb63f99400b0197832dce"
|
||||
"hash" : "890cde6b9407d00c6394d446974674ff"
|
||||
},
|
||||
"app-macro-glow-large" : {
|
||||
"name" : "app-macro-glow-large",
|
||||
"rule" : ".app-macro-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-macro-light-large",
|
||||
"hash" : "16d2c3aeabb43a51bb5742c67c4b92a1"
|
||||
"hash" : "a3aaa9ebca64e5659e8c3c4eebdedd7a"
|
||||
},
|
||||
"app-macro-light-large" : {
|
||||
"name" : "app-macro-light-large",
|
||||
"rule" : ".app-macro-light-large",
|
||||
"hash" : "b073066348826c93f57ba76f746e5c7e"
|
||||
"hash" : "7dcba4f0560b9e197849f5540b7ec66d"
|
||||
},
|
||||
"app-mail-blue-large" : {
|
||||
"name" : "app-mail-blue-large",
|
||||
"rule" : ".app-mail-blue-large, .phabricator-crumb-view:hover .app-mail-dark-large",
|
||||
"hash" : "192f85bd7a5be296de7acff9bbc9bd1d"
|
||||
"hash" : "a0a94c194794bb435ea3152ecb2cd42d"
|
||||
},
|
||||
"app-mail-dark-large" : {
|
||||
"name" : "app-mail-dark-large",
|
||||
"rule" : ".app-mail-dark-large",
|
||||
"hash" : "4709516a74216e0ba886a30180ad93d4"
|
||||
"hash" : "1a1437047fd24b9bb2643435185b6f13"
|
||||
},
|
||||
"app-mail-glow-large" : {
|
||||
"name" : "app-mail-glow-large",
|
||||
"rule" : ".app-mail-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-mail-light-large",
|
||||
"hash" : "1f0d2be98c3771791db7a9ad20784872"
|
||||
"hash" : "141548cae4bf8265be9452e583be3504"
|
||||
},
|
||||
"app-mail-light-large" : {
|
||||
"name" : "app-mail-light-large",
|
||||
"rule" : ".app-mail-light-large",
|
||||
"hash" : "740ea3d3104365ab7bad981b13d23693"
|
||||
"hash" : "27aec2b8d5bd1fb7eba00ffbaacf1930"
|
||||
},
|
||||
"app-maniphest-blue-large" : {
|
||||
"name" : "app-maniphest-blue-large",
|
||||
"rule" : ".app-maniphest-blue-large, .phabricator-crumb-view:hover .app-maniphest-dark-large",
|
||||
"hash" : "d667667cc5216ff510cb58c359ffc2a4"
|
||||
"hash" : "619ff6fea2c90a8d70b000ed0ece6e4b"
|
||||
},
|
||||
"app-maniphest-dark-large" : {
|
||||
"name" : "app-maniphest-dark-large",
|
||||
"rule" : ".app-maniphest-dark-large",
|
||||
"hash" : "acadb7737b24ecc23e892cdaab7c1fe2"
|
||||
"hash" : "7a204fc2f4779eff27847bf799652140"
|
||||
},
|
||||
"app-maniphest-glow-large" : {
|
||||
"name" : "app-maniphest-glow-large",
|
||||
"rule" : ".app-maniphest-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-maniphest-light-large",
|
||||
"hash" : "8dccd7ba95ddffc4e071e42b69773f5c"
|
||||
"hash" : "2b67eff9fb01bdf0972749532301e038"
|
||||
},
|
||||
"app-maniphest-light-large" : {
|
||||
"name" : "app-maniphest-light-large",
|
||||
"rule" : ".app-maniphest-light-large",
|
||||
"hash" : "0d2c71a1279686c3884c267d98bc36ba"
|
||||
"hash" : "90ea395741410840b1b4a974f802b06c"
|
||||
},
|
||||
"app-metamta-blue-large" : {
|
||||
"name" : "app-metamta-blue-large",
|
||||
"rule" : ".app-metamta-blue-large, .phabricator-crumb-view:hover .app-metamta-dark-large",
|
||||
"hash" : "1757d281dcdbdf221ca2b2e90993dba8"
|
||||
"hash" : "48af88efc2887cc985f09d5202922df0"
|
||||
},
|
||||
"app-metamta-dark-large" : {
|
||||
"name" : "app-metamta-dark-large",
|
||||
"rule" : ".app-metamta-dark-large",
|
||||
"hash" : "c5f3a7468d98ebb977bfb0cc81abd5ee"
|
||||
"hash" : "bf18a2c7ef31e72dc9ce6695035baf60"
|
||||
},
|
||||
"app-metamta-glow-large" : {
|
||||
"name" : "app-metamta-glow-large",
|
||||
"rule" : ".app-metamta-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-metamta-light-large",
|
||||
"hash" : "5f7b115d45e5d3a5a5a730173366f2e4"
|
||||
"hash" : "74c00295bf0d394e6427593665a271f1"
|
||||
},
|
||||
"app-metamta-light-large" : {
|
||||
"name" : "app-metamta-light-large",
|
||||
"rule" : ".app-metamta-light-large",
|
||||
"hash" : "13ce4ca0f223cda37e3af39da8c6e564"
|
||||
"hash" : "720cc7f66ab36770998aa4fe9ad22785"
|
||||
},
|
||||
"app-owners-blue-large" : {
|
||||
"name" : "app-owners-blue-large",
|
||||
"rule" : ".app-owners-blue-large, .phabricator-crumb-view:hover .app-owners-dark-large",
|
||||
"hash" : "585c128af418f94b8fbf18206605ec84"
|
||||
"hash" : "ee909b2d51a3c52b38c0cca3da8d861d"
|
||||
},
|
||||
"app-owners-dark-large" : {
|
||||
"name" : "app-owners-dark-large",
|
||||
"rule" : ".app-owners-dark-large",
|
||||
"hash" : "b09a80f307491acbe56fb16e01956173"
|
||||
"hash" : "05a6fcc603b5ee346d25b1fb25e7e695"
|
||||
},
|
||||
"app-owners-glow-large" : {
|
||||
"name" : "app-owners-glow-large",
|
||||
"rule" : ".app-owners-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-owners-light-large",
|
||||
"hash" : "a63816e6979ec6c222a086b5d72a0b86"
|
||||
"hash" : "4bcba14ffcdf7ac3c1968ebcc34f7e37"
|
||||
},
|
||||
"app-owners-light-large" : {
|
||||
"name" : "app-owners-light-large",
|
||||
"rule" : ".app-owners-light-large",
|
||||
"hash" : "6b06493f46a91584e746e5034be15366"
|
||||
"hash" : "2d6b3f02f210c73242d91bdb9ef8456c"
|
||||
},
|
||||
"app-paste-blue-large" : {
|
||||
"name" : "app-paste-blue-large",
|
||||
"rule" : ".app-paste-blue-large, .phabricator-crumb-view:hover .app-paste-dark-large",
|
||||
"hash" : "4a14c100c5b78282712dd2cc619d72b4"
|
||||
"hash" : "2ce99237cc2f064f0aa48fb1d147c781"
|
||||
},
|
||||
"app-paste-dark-large" : {
|
||||
"name" : "app-paste-dark-large",
|
||||
"rule" : ".app-paste-dark-large",
|
||||
"hash" : "03d3dded4964e60771c8a45549e13973"
|
||||
"hash" : "f566e3e0c8e6a17b7c2fc4168b079ede"
|
||||
},
|
||||
"app-paste-glow-large" : {
|
||||
"name" : "app-paste-glow-large",
|
||||
"rule" : ".app-paste-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-paste-light-large",
|
||||
"hash" : "507192b6a41abdc1a886a144cc315326"
|
||||
"hash" : "34333bbb31fb3909461cc064ea2f72e9"
|
||||
},
|
||||
"app-paste-light-large" : {
|
||||
"name" : "app-paste-light-large",
|
||||
"rule" : ".app-paste-light-large",
|
||||
"hash" : "66f1f8fe7acafaab5f608598589aaa5c"
|
||||
"hash" : "e77a206e1cbaf1417b4a0b9f3d67380a"
|
||||
},
|
||||
"app-people-blue-large" : {
|
||||
"name" : "app-people-blue-large",
|
||||
"rule" : ".app-people-blue-large, .phabricator-crumb-view:hover .app-people-dark-large",
|
||||
"hash" : "ed242e94b2b5698fd90261ca63aef8a6"
|
||||
"hash" : "37fcac5bc4ad63c37d68da2c77717301"
|
||||
},
|
||||
"app-people-dark-large" : {
|
||||
"name" : "app-people-dark-large",
|
||||
"rule" : ".app-people-dark-large",
|
||||
"hash" : "b1748b3a5afacd4f8afcd5ea37352dc7"
|
||||
"hash" : "01fb27eba95c01d1aadde04ea4513caa"
|
||||
},
|
||||
"app-people-glow-large" : {
|
||||
"name" : "app-people-glow-large",
|
||||
"rule" : ".app-people-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-people-light-large",
|
||||
"hash" : "ed1b2d2d27ae8fd07d0e5e1d4002625e"
|
||||
"hash" : "6d859c1505f5877b86faf34385bbcd59"
|
||||
},
|
||||
"app-people-light-large" : {
|
||||
"name" : "app-people-light-large",
|
||||
"rule" : ".app-people-light-large",
|
||||
"hash" : "f6efcbdbcee02f9f37f92774b4b0e4cf"
|
||||
"hash" : "d1d80fddc9e6295494d12b72b4700dc5"
|
||||
},
|
||||
"app-phame-blue-large" : {
|
||||
"name" : "app-phame-blue-large",
|
||||
"rule" : ".app-phame-blue-large, .phabricator-crumb-view:hover .app-phame-dark-large",
|
||||
"hash" : "d448b392b7bc927b9b5522d525fa8c49"
|
||||
"hash" : "f72bd35227e9ba2157852377e2d87ec4"
|
||||
},
|
||||
"app-phame-dark-large" : {
|
||||
"name" : "app-phame-dark-large",
|
||||
"rule" : ".app-phame-dark-large",
|
||||
"hash" : "a7cf2f8ec22cdb675a3bc792c7c1edf6"
|
||||
"hash" : "7bfe54cf7d885985fb7e06ad0abaf4e9"
|
||||
},
|
||||
"app-phame-glow-large" : {
|
||||
"name" : "app-phame-glow-large",
|
||||
"rule" : ".app-phame-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phame-light-large",
|
||||
"hash" : "4587c25ff8a94fd48a1a0ca2e9fd9f42"
|
||||
"hash" : "60013586092f2c5eb5ed1f58c7f02a74"
|
||||
},
|
||||
"app-phame-light-large" : {
|
||||
"name" : "app-phame-light-large",
|
||||
"rule" : ".app-phame-light-large",
|
||||
"hash" : "265471ec8d3c7ddeb3c269384d22243d"
|
||||
"hash" : "5266f8774d0470adc65f610c9175a251"
|
||||
},
|
||||
"app-phid-blue-large" : {
|
||||
"name" : "app-phid-blue-large",
|
||||
"rule" : ".app-phid-blue-large, .phabricator-crumb-view:hover .app-phid-dark-large",
|
||||
"hash" : "b94bc233e1bcf520c65351b71794c228"
|
||||
"hash" : "d726ca94608547ff3974a1d49e6b1012"
|
||||
},
|
||||
"app-phid-dark-large" : {
|
||||
"name" : "app-phid-dark-large",
|
||||
"rule" : ".app-phid-dark-large",
|
||||
"hash" : "f4dfdcc8e1fde50cfcb7e07376696964"
|
||||
"hash" : "04af0c932bea8b7c36f6dc954994ea11"
|
||||
},
|
||||
"app-phid-glow-large" : {
|
||||
"name" : "app-phid-glow-large",
|
||||
"rule" : ".app-phid-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phid-light-large",
|
||||
"hash" : "10ec316b409b385e19800048fcb1a79e"
|
||||
"hash" : "b1e8a6e4ac9ad64d34fbc7560d507e5b"
|
||||
},
|
||||
"app-phid-light-large" : {
|
||||
"name" : "app-phid-light-large",
|
||||
"rule" : ".app-phid-light-large",
|
||||
"hash" : "0087c573b07d8badaeadcb8ad560ae9b"
|
||||
"hash" : "0ba23a08c29e8064fdddee9112c638e3"
|
||||
},
|
||||
"app-pholio-blue-large" : {
|
||||
"name" : "app-pholio-blue-large",
|
||||
"rule" : ".app-pholio-blue-large, .phabricator-crumb-view:hover .app-pholio-dark-large",
|
||||
"hash" : "5b8e3f47a49a0dee84c1b7c228884f0c"
|
||||
"hash" : "08bfdf63411a09e6be88d99128c1e9f8"
|
||||
},
|
||||
"app-pholio-dark-large" : {
|
||||
"name" : "app-pholio-dark-large",
|
||||
"rule" : ".app-pholio-dark-large",
|
||||
"hash" : "4a73276e5bcd9cfbb08435ed36051dff"
|
||||
"hash" : "2a8bfa3870726691766fe3f6cb73df38"
|
||||
},
|
||||
"app-pholio-glow-large" : {
|
||||
"name" : "app-pholio-glow-large",
|
||||
"rule" : ".app-pholio-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-pholio-light-large",
|
||||
"hash" : "aca383c3c4fcec4742a11702e3427221"
|
||||
"hash" : "499b68a80e78ab5f6ebe5ba7470fbb4a"
|
||||
},
|
||||
"app-pholio-light-large" : {
|
||||
"name" : "app-pholio-light-large",
|
||||
"rule" : ".app-pholio-light-large",
|
||||
"hash" : "1a3ace478c2b0f9b444005112e17c695"
|
||||
"hash" : "9a4d4223e6e1d7a77c4545504ea0908c"
|
||||
},
|
||||
"app-phpast-blue-large" : {
|
||||
"name" : "app-phpast-blue-large",
|
||||
"rule" : ".app-phpast-blue-large, .phabricator-crumb-view:hover .app-phpast-dark-large",
|
||||
"hash" : "22ba8a058d6b920a909c5f6731f301a0"
|
||||
"hash" : "a9f4f0a62e5841b2ed669dc02694419d"
|
||||
},
|
||||
"app-phpast-dark-large" : {
|
||||
"name" : "app-phpast-dark-large",
|
||||
"rule" : ".app-phpast-dark-large",
|
||||
"hash" : "bdbfd96cb50a8b7450daf82576fcfe95"
|
||||
"hash" : "1dbc83cc09d722253b634f3308608627"
|
||||
},
|
||||
"app-phpast-glow-large" : {
|
||||
"name" : "app-phpast-glow-large",
|
||||
"rule" : ".app-phpast-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phpast-light-large",
|
||||
"hash" : "ce7433350eeaee95ecf358905ad38029"
|
||||
"hash" : "e98e4cdc93e51b0d7c1df25c01c75fac"
|
||||
},
|
||||
"app-phpast-light-large" : {
|
||||
"name" : "app-phpast-light-large",
|
||||
"rule" : ".app-phpast-light-large",
|
||||
"hash" : "5ebd26eb5e0bc0229db5696020dd9b4a"
|
||||
"hash" : "c63fb0fe3cc326f1a19e4e59c42a73f7"
|
||||
},
|
||||
"app-phriction-blue-large" : {
|
||||
"name" : "app-phriction-blue-large",
|
||||
"rule" : ".app-phriction-blue-large, .phabricator-crumb-view:hover .app-phriction-dark-large",
|
||||
"hash" : "0134e9d694ce72a6d9c554e639a6ed50"
|
||||
"hash" : "55bbded073e078117369f42e05b5b5c4"
|
||||
},
|
||||
"app-phriction-dark-large" : {
|
||||
"name" : "app-phriction-dark-large",
|
||||
"rule" : ".app-phriction-dark-large",
|
||||
"hash" : "e4f3121261bc96e00bb6b94b467582f4"
|
||||
"hash" : "944c3a520a484580895b287eaaa103b1"
|
||||
},
|
||||
"app-phriction-glow-large" : {
|
||||
"name" : "app-phriction-glow-large",
|
||||
"rule" : ".app-phriction-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phriction-light-large",
|
||||
"hash" : "27612f55aaa40c4178a3a5a46d225947"
|
||||
"hash" : "84639b5ccba94daf1850a9449131a078"
|
||||
},
|
||||
"app-phriction-light-large" : {
|
||||
"name" : "app-phriction-light-large",
|
||||
"rule" : ".app-phriction-light-large",
|
||||
"hash" : "a56dcfca00861938d337cc2f217b33f6"
|
||||
"hash" : "2ca79fdfd141b0fe00ff8b2e13df73bf"
|
||||
},
|
||||
"app-ponder-blue-large" : {
|
||||
"name" : "app-ponder-blue-large",
|
||||
"rule" : ".app-ponder-blue-large, .phabricator-crumb-view:hover .app-ponder-dark-large",
|
||||
"hash" : "1bfc2f6150bd67cc25cbe1fbc9283f9c"
|
||||
"hash" : "8018fe4ebc1e9af91a8a737e0505aa5d"
|
||||
},
|
||||
"app-ponder-dark-large" : {
|
||||
"name" : "app-ponder-dark-large",
|
||||
"rule" : ".app-ponder-dark-large",
|
||||
"hash" : "6efc0b3a74d2cc9eb5de96205613b640"
|
||||
"hash" : "1da67495789c69621f91800939ea9684"
|
||||
},
|
||||
"app-ponder-glow-large" : {
|
||||
"name" : "app-ponder-glow-large",
|
||||
"rule" : ".app-ponder-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-ponder-light-large",
|
||||
"hash" : "9c2a2506e53e6a902976d504dfe94b46"
|
||||
"hash" : "f73a1b5a6b688c6d3feba14193357147"
|
||||
},
|
||||
"app-ponder-light-large" : {
|
||||
"name" : "app-ponder-light-large",
|
||||
"rule" : ".app-ponder-light-large",
|
||||
"hash" : "595895068b10c68b0e05234570a6a268"
|
||||
"hash" : "eb8b13c3bc35f36b14f33ef1158b71ab"
|
||||
},
|
||||
"app-power-blue-large" : {
|
||||
"name" : "app-power-blue-large",
|
||||
"rule" : ".app-power-blue-large, .phabricator-crumb-view:hover .app-power-dark-large",
|
||||
"hash" : "c3e03022f162f986f784b2a43c8784c7"
|
||||
"hash" : "743499c84546b7b35139eec60bf74c34"
|
||||
},
|
||||
"app-power-dark-large" : {
|
||||
"name" : "app-power-dark-large",
|
||||
"rule" : ".app-power-dark-large",
|
||||
"hash" : "52d04564ca2cc7f3a96809e827162f3e"
|
||||
"hash" : "1a3520a2ec255f5b7f1779ea66153ade"
|
||||
},
|
||||
"app-power-glow-large" : {
|
||||
"name" : "app-power-glow-large",
|
||||
"rule" : ".app-power-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-power-light-large",
|
||||
"hash" : "3f7719f0299abef8ba900e79fb6b5015"
|
||||
"hash" : "3951e012561a0d5d5d2b00711b13fa9c"
|
||||
},
|
||||
"app-power-light-large" : {
|
||||
"name" : "app-power-light-large",
|
||||
"rule" : ".app-power-light-large",
|
||||
"hash" : "ffe9f181e6103eab9fc688ab84b07ad1"
|
||||
"hash" : "52d04bd829dfe7477a9dc2ef916990ab"
|
||||
},
|
||||
"app-projects-blue-large" : {
|
||||
"name" : "app-projects-blue-large",
|
||||
"rule" : ".app-projects-blue-large, .phabricator-crumb-view:hover .app-projects-dark-large",
|
||||
"hash" : "494ca64479f68588823e00609496414a"
|
||||
"hash" : "278113829ca3543b9377030555e04edc"
|
||||
},
|
||||
"app-projects-dark-large" : {
|
||||
"name" : "app-projects-dark-large",
|
||||
"rule" : ".app-projects-dark-large",
|
||||
"hash" : "fa85ad644a2e289cb6bea2a67ab534f8"
|
||||
"hash" : "b6f043db039d4960397f76904a84e9fc"
|
||||
},
|
||||
"app-projects-glow-large" : {
|
||||
"name" : "app-projects-glow-large",
|
||||
"rule" : ".app-projects-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-projects-light-large",
|
||||
"hash" : "b28bf212416595b3ba4bfb528dfaf791"
|
||||
"hash" : "3d1bf3efdbd9ccdbb73fc3a11d5d1265"
|
||||
},
|
||||
"app-projects-light-large" : {
|
||||
"name" : "app-projects-light-large",
|
||||
"rule" : ".app-projects-light-large",
|
||||
"hash" : "228db63ac0e80b3cef46903a003a44df"
|
||||
"hash" : "88c73c7cb50ce7cf9cd8d33ec20c8245"
|
||||
},
|
||||
"app-repositories-blue-large" : {
|
||||
"name" : "app-repositories-blue-large",
|
||||
"rule" : ".app-repositories-blue-large, .phabricator-crumb-view:hover .app-repositories-dark-large",
|
||||
"hash" : "a83dd2186f9d92949f19a97f8f777a9c"
|
||||
"hash" : "0642bf1118210cef9105cc463ec3d36f"
|
||||
},
|
||||
"app-repositories-dark-large" : {
|
||||
"name" : "app-repositories-dark-large",
|
||||
"rule" : ".app-repositories-dark-large",
|
||||
"hash" : "30ead88c9f018797a8d5ef2f4e4221fe"
|
||||
"hash" : "c92eb4e857d74f1ef206ba5b184ad88c"
|
||||
},
|
||||
"app-repositories-glow-large" : {
|
||||
"name" : "app-repositories-glow-large",
|
||||
"rule" : ".app-repositories-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-repositories-light-large",
|
||||
"hash" : "44b04cbf1652211fbc2046c7773b4cf2"
|
||||
"hash" : "7fe40fbb4150dfbc6133c79578fc1494"
|
||||
},
|
||||
"app-repositories-light-large" : {
|
||||
"name" : "app-repositories-light-large",
|
||||
"rule" : ".app-repositories-light-large",
|
||||
"hash" : "bcba180d121f9269787509ba7cdd3e48"
|
||||
"hash" : "446a7eab7b7fc07329bc21a77c438033"
|
||||
},
|
||||
"app-settings-blue-large" : {
|
||||
"name" : "app-settings-blue-large",
|
||||
"rule" : ".app-settings-blue-large, .phabricator-crumb-view:hover .app-settings-dark-large",
|
||||
"hash" : "c615df792c7e81b35cfbb78ece39e796"
|
||||
"hash" : "4d22a7f016509777bb5b55f39198d9d7"
|
||||
},
|
||||
"app-settings-dark-large" : {
|
||||
"name" : "app-settings-dark-large",
|
||||
"rule" : ".app-settings-dark-large",
|
||||
"hash" : "6c174857e23a9d169d0cb4079aa14637"
|
||||
"hash" : "55e0869a51f70cacdd72f2baad4b28ce"
|
||||
},
|
||||
"app-settings-glow-large" : {
|
||||
"name" : "app-settings-glow-large",
|
||||
"rule" : ".app-settings-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-settings-light-large",
|
||||
"hash" : "4d8c68dc709d99141a19aad5bc483971"
|
||||
"hash" : "314ab0f607baa65ff6a684b1ddd4861d"
|
||||
},
|
||||
"app-settings-light-large" : {
|
||||
"name" : "app-settings-light-large",
|
||||
"rule" : ".app-settings-light-large",
|
||||
"hash" : "e901b672f2a51ef286369bfea70a7e8d"
|
||||
"hash" : "41da4708f38fae918af46505e566bd6a"
|
||||
},
|
||||
"app-setup-blue-large" : {
|
||||
"name" : "app-setup-blue-large",
|
||||
"rule" : ".app-setup-blue-large, .phabricator-crumb-view:hover .app-setup-dark-large",
|
||||
"hash" : "a2f8f470c3cd928e8c1a6959ff745789"
|
||||
"hash" : "74d2ba681cdad54b31d53f7c174f5826"
|
||||
},
|
||||
"app-setup-dark-large" : {
|
||||
"name" : "app-setup-dark-large",
|
||||
"rule" : ".app-setup-dark-large",
|
||||
"hash" : "3183fafc1dc05b851ba902ace2dfa34d"
|
||||
"hash" : "89a94fe1ce36351d3ea81f1776fb061a"
|
||||
},
|
||||
"app-setup-glow-large" : {
|
||||
"name" : "app-setup-glow-large",
|
||||
"rule" : ".app-setup-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-setup-light-large",
|
||||
"hash" : "d91b7e5480cb4296871b9f1c4c634256"
|
||||
"hash" : "53942c73b14210f5bf0bfad68bcb4431"
|
||||
},
|
||||
"app-setup-light-large" : {
|
||||
"name" : "app-setup-light-large",
|
||||
"rule" : ".app-setup-light-large",
|
||||
"hash" : "419829d244a85f97d67fb45c6febd4e5"
|
||||
"hash" : "890dd2d7cb1e51992b202dd462d56ba6"
|
||||
},
|
||||
"app-slowvote-blue-large" : {
|
||||
"name" : "app-slowvote-blue-large",
|
||||
"rule" : ".app-slowvote-blue-large, .phabricator-crumb-view:hover .app-slowvote-dark-large",
|
||||
"hash" : "941028e7abbe491e2911fb24c4a8edca"
|
||||
"hash" : "12299956375e7f382217ebf8c1cb8203"
|
||||
},
|
||||
"app-slowvote-dark-large" : {
|
||||
"name" : "app-slowvote-dark-large",
|
||||
"rule" : ".app-slowvote-dark-large",
|
||||
"hash" : "6197df3550b652011bc1a8da00005059"
|
||||
"hash" : "ce57e4a318e4e8d556f713b459e6d798"
|
||||
},
|
||||
"app-slowvote-glow-large" : {
|
||||
"name" : "app-slowvote-glow-large",
|
||||
"rule" : ".app-slowvote-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-slowvote-light-large",
|
||||
"hash" : "43783af8df4f99e94f0989ca149264f2"
|
||||
"hash" : "dcd5be64ded69e0fdfee5364367c9b55"
|
||||
},
|
||||
"app-slowvote-light-large" : {
|
||||
"name" : "app-slowvote-light-large",
|
||||
"rule" : ".app-slowvote-light-large",
|
||||
"hash" : "23eb39153b5ac9b5bd91c8b800023d93"
|
||||
"hash" : "7ac2515f26b194a9fafaa6a27997be2a"
|
||||
},
|
||||
"app-uiexamples-blue-large" : {
|
||||
"name" : "app-uiexamples-blue-large",
|
||||
"rule" : ".app-uiexamples-blue-large, .phabricator-crumb-view:hover .app-uiexamples-dark-large",
|
||||
"hash" : "eabac7f7b83c47618a5f72b6f30b6410"
|
||||
"hash" : "7add7df6b621c4af5322160bc1cd31b2"
|
||||
},
|
||||
"app-uiexamples-dark-large" : {
|
||||
"name" : "app-uiexamples-dark-large",
|
||||
"rule" : ".app-uiexamples-dark-large",
|
||||
"hash" : "31c9fb99289cc73aae73f3acad66b449"
|
||||
"hash" : "d8563a5f06692a313a2eff11235d5d0d"
|
||||
},
|
||||
"app-uiexamples-glow-large" : {
|
||||
"name" : "app-uiexamples-glow-large",
|
||||
"rule" : ".app-uiexamples-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-uiexamples-light-large",
|
||||
"hash" : "069e59208dad509a6c3d74d102f08ae8"
|
||||
"hash" : "0532cdd91b6de17ab194bd29cacfc24f"
|
||||
},
|
||||
"app-uiexamples-light-large" : {
|
||||
"name" : "app-uiexamples-light-large",
|
||||
"rule" : ".app-uiexamples-light-large",
|
||||
"hash" : "b384102bcee1b312b2e06abc5f4b27de"
|
||||
"hash" : "ee40dd0e3168f8e7fb520665a1d50f95"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
|
@ -4,192 +4,197 @@
|
|||
"app-application-dark" : {
|
||||
"name" : "app-application-dark",
|
||||
"rule" : ".app-application-dark",
|
||||
"hash" : "89f861c28e97878311885623cff3d314"
|
||||
"hash" : "60e228106718bf6f3ee5024400d31f24"
|
||||
},
|
||||
"app-audit-dark" : {
|
||||
"name" : "app-audit-dark",
|
||||
"rule" : ".app-audit-dark",
|
||||
"hash" : "2c141bc445c4fe62986cd6cff0c29b36"
|
||||
"hash" : "38339b9cc4e39cbbbea36dcf039873bb"
|
||||
},
|
||||
"app-calendar-dark" : {
|
||||
"name" : "app-calendar-dark",
|
||||
"rule" : ".app-calendar-dark",
|
||||
"hash" : "04c61a081986f0d38cf27fc4e18bce40"
|
||||
"hash" : "756d60566639ad1424444436a95c6a3f"
|
||||
},
|
||||
"app-conduit-dark" : {
|
||||
"name" : "app-conduit-dark",
|
||||
"rule" : ".app-conduit-dark",
|
||||
"hash" : "7b410e96c87e7818fb93bdfa2ed9368f"
|
||||
"hash" : "01fba8ca32f1cfefb3516b45c9d28b40"
|
||||
},
|
||||
"app-conpherence-dark" : {
|
||||
"name" : "app-conpherence-dark",
|
||||
"rule" : ".app-conpherence-dark",
|
||||
"hash" : "dbb6fdd5f082a604b4ef10b7eeedbfa2"
|
||||
},
|
||||
"app-countdown-dark" : {
|
||||
"name" : "app-countdown-dark",
|
||||
"rule" : ".app-countdown-dark",
|
||||
"hash" : "8891502317896beea6a5f9ec87eb5e2e"
|
||||
"hash" : "625f2589ee491aead58aaa5b965a7451"
|
||||
},
|
||||
"app-daemon-dark" : {
|
||||
"name" : "app-daemon-dark",
|
||||
"rule" : ".app-daemon-dark",
|
||||
"hash" : "23a9a2927b368e2328dd70f95c5b1a07"
|
||||
"hash" : "4472be3242150f06ea5bf7b45333c4c5"
|
||||
},
|
||||
"app-differential-dark" : {
|
||||
"name" : "app-differential-dark",
|
||||
"rule" : ".app-differential-dark",
|
||||
"hash" : "bb7032f3c17901f242f9bbbcdc9a721c"
|
||||
"hash" : "508401fe36d9636bdcbdcbcae253c152"
|
||||
},
|
||||
"app-diffusion-dark" : {
|
||||
"name" : "app-diffusion-dark",
|
||||
"rule" : ".app-diffusion-dark",
|
||||
"hash" : "46ab6648a6ae04e4fd1a28a9afcc4996"
|
||||
"hash" : "0a6f8c85079c4a325430197adb05967c"
|
||||
},
|
||||
"app-diviner-dark" : {
|
||||
"name" : "app-diviner-dark",
|
||||
"rule" : ".app-diviner-dark",
|
||||
"hash" : "e21a74e866a6fc22a991b8df6efc3ca7"
|
||||
"hash" : "08872eb1c6bb51b9727290f6fa802633"
|
||||
},
|
||||
"app-drydock-dark" : {
|
||||
"name" : "app-drydock-dark",
|
||||
"rule" : ".app-drydock-dark",
|
||||
"hash" : "ed44013d98257a23306bad9c6b24760d"
|
||||
"hash" : "d50309da57021c676774f9bdc68c5fe7"
|
||||
},
|
||||
"app-fact-dark" : {
|
||||
"name" : "app-fact-dark",
|
||||
"rule" : ".app-fact-dark",
|
||||
"hash" : "f373f38e784289b866ab914471c342ec"
|
||||
"hash" : "0c1be568e1ac05fca814718600190369"
|
||||
},
|
||||
"app-feed-dark" : {
|
||||
"name" : "app-feed-dark",
|
||||
"rule" : ".app-feed-dark",
|
||||
"hash" : "c4f1765e70615c6ee4cae6e8135fb969"
|
||||
"hash" : "830232709eedbe6ce7cdbcebf182c86c"
|
||||
},
|
||||
"app-files-dark" : {
|
||||
"name" : "app-files-dark",
|
||||
"rule" : ".app-files-dark",
|
||||
"hash" : "7faf45efa5b9b97e571bc66636ca1a15"
|
||||
"hash" : "00f5ab7ea3e9367e378cf9f395400ed4"
|
||||
},
|
||||
"app-flags-dark" : {
|
||||
"name" : "app-flags-dark",
|
||||
"rule" : ".app-flags-dark",
|
||||
"hash" : "10298f695592714e27f72ef746ffd8a9"
|
||||
"hash" : "6382f373f7b0e70522d80ce06ef62813"
|
||||
},
|
||||
"app-help-dark" : {
|
||||
"name" : "app-help-dark",
|
||||
"rule" : ".app-help-dark",
|
||||
"hash" : "5cf715cc566b98c87958793eebea5f35"
|
||||
"hash" : "2299a14e27d76fdf66209ef0042cc84f"
|
||||
},
|
||||
"app-herald-dark" : {
|
||||
"name" : "app-herald-dark",
|
||||
"rule" : ".app-herald-dark",
|
||||
"hash" : "e3bc39a3dd1d66a0abf4594c608a3846"
|
||||
"hash" : "b2193b62df3bd4cf5c8de514a07fb6c3"
|
||||
},
|
||||
"app-home-dark" : {
|
||||
"name" : "app-home-dark",
|
||||
"rule" : ".app-home-dark",
|
||||
"hash" : "7e01fbdfa526919a2d90d2c29a6c9fa0"
|
||||
"hash" : "88f020497fcbcf43729aa817695b174f"
|
||||
},
|
||||
"app-logo-dark" : {
|
||||
"name" : "app-logo-dark",
|
||||
"rule" : ".app-logo-dark",
|
||||
"hash" : "39701e1282fd120e77b09ed9fcddc686"
|
||||
"hash" : "02e71ae2421f1949f2ef075c27e052c9"
|
||||
},
|
||||
"app-macro-dark" : {
|
||||
"name" : "app-macro-dark",
|
||||
"rule" : ".app-macro-dark",
|
||||
"hash" : "ef89457bcee666ad265de1659b9b8a62"
|
||||
"hash" : "8e0e72847a8f70eb3f8e60e7fb681c06"
|
||||
},
|
||||
"app-mail-dark" : {
|
||||
"name" : "app-mail-dark",
|
||||
"rule" : ".app-mail-dark",
|
||||
"hash" : "4d05a5cd4360052183e91f61967a6c57"
|
||||
"hash" : "a2a792fddc44be4ae0f1a601380c8449"
|
||||
},
|
||||
"app-maniphest-dark" : {
|
||||
"name" : "app-maniphest-dark",
|
||||
"rule" : ".app-maniphest-dark",
|
||||
"hash" : "320da127d7f887e09965a0416d5e44d3"
|
||||
"hash" : "ea94fc7dbb2267adc33513f78916fe90"
|
||||
},
|
||||
"app-metamta-dark" : {
|
||||
"name" : "app-metamta-dark",
|
||||
"rule" : ".app-metamta-dark",
|
||||
"hash" : "51f100c2a7a80149404dbc8b27f595a9"
|
||||
"hash" : "8abbb6e74d1697f950a01dcd6c8077be"
|
||||
},
|
||||
"app-owners-dark" : {
|
||||
"name" : "app-owners-dark",
|
||||
"rule" : ".app-owners-dark",
|
||||
"hash" : "33c064dd3b7fc3f9eb934d0cf84f3af5"
|
||||
"hash" : "23b948cc1d32a0968785fbfca749dcdf"
|
||||
},
|
||||
"app-paste-dark" : {
|
||||
"name" : "app-paste-dark",
|
||||
"rule" : ".app-paste-dark",
|
||||
"hash" : "9482649caa8e5a46d277271092517b12"
|
||||
"hash" : "9e0c1d1fe03aebcb55a4d19be051e255"
|
||||
},
|
||||
"app-people-dark" : {
|
||||
"name" : "app-people-dark",
|
||||
"rule" : ".app-people-dark",
|
||||
"hash" : "67245eafa79367e4e07289549cf34deb"
|
||||
"hash" : "0b3995fcd043b506a408de6e25ad5292"
|
||||
},
|
||||
"app-phame-dark" : {
|
||||
"name" : "app-phame-dark",
|
||||
"rule" : ".app-phame-dark",
|
||||
"hash" : "029d7d48523cc43b0404bf40ccf56f8b"
|
||||
"hash" : "24ff4d322bce13f1c156ce5361a03a07"
|
||||
},
|
||||
"app-phid-dark" : {
|
||||
"name" : "app-phid-dark",
|
||||
"rule" : ".app-phid-dark",
|
||||
"hash" : "2099c2987fe3929ce1d9dec470c7699d"
|
||||
"hash" : "5a0ac05bbf36a7aeb36753d093c3c9f8"
|
||||
},
|
||||
"app-pholio-dark" : {
|
||||
"name" : "app-pholio-dark",
|
||||
"rule" : ".app-pholio-dark",
|
||||
"hash" : "aab47c79d2e03fdcaffb6f41dc1e0f06"
|
||||
"hash" : "7d3befd1c12dd464a5f5edbef4574a5c"
|
||||
},
|
||||
"app-phpast-dark" : {
|
||||
"name" : "app-phpast-dark",
|
||||
"rule" : ".app-phpast-dark",
|
||||
"hash" : "e6db72b398f57d03a400c9c18bd3c412"
|
||||
"hash" : "de1ad812c7a177c844fcff626b1abebf"
|
||||
},
|
||||
"app-phriction-dark" : {
|
||||
"name" : "app-phriction-dark",
|
||||
"rule" : ".app-phriction-dark",
|
||||
"hash" : "8064272206874a324d20d956c8fb10da"
|
||||
"hash" : "8596da3f375087db6a163c98f0c968ae"
|
||||
},
|
||||
"app-ponder-dark" : {
|
||||
"name" : "app-ponder-dark",
|
||||
"rule" : ".app-ponder-dark",
|
||||
"hash" : "abdb353635bed5cfd48a176b4340022f"
|
||||
"hash" : "232577eb875f383f45cb9dbd9a4e3976"
|
||||
},
|
||||
"app-power-dark" : {
|
||||
"name" : "app-power-dark",
|
||||
"rule" : ".app-power-dark",
|
||||
"hash" : "d3e943d1267206963d8f9419629c5581"
|
||||
"hash" : "e3708b1b4bfdfc614d9cf630943e5bef"
|
||||
},
|
||||
"app-projects-dark" : {
|
||||
"name" : "app-projects-dark",
|
||||
"rule" : ".app-projects-dark",
|
||||
"hash" : "6bd7c598e2f2cf0b77918a7b0fa8bd19"
|
||||
"hash" : "5e799f1e95ecfd33cb67b6e4ac992043"
|
||||
},
|
||||
"app-repositories-dark" : {
|
||||
"name" : "app-repositories-dark",
|
||||
"rule" : ".app-repositories-dark",
|
||||
"hash" : "db2823a16dae198145f53e8021170740"
|
||||
"hash" : "736066962e96df88eacc04d734613a0e"
|
||||
},
|
||||
"app-settings-dark" : {
|
||||
"name" : "app-settings-dark",
|
||||
"rule" : ".app-settings-dark",
|
||||
"hash" : "1c84d22b769730d9e8b6fcd3414de72c"
|
||||
"hash" : "2fadcf918fb084bd3452712f700ae1a0"
|
||||
},
|
||||
"app-setup-dark" : {
|
||||
"name" : "app-setup-dark",
|
||||
"rule" : ".app-setup-dark",
|
||||
"hash" : "27db76695d99be0c25368dc9e0932b17"
|
||||
"hash" : "061b80f3555ade1c36934474b61fe76b"
|
||||
},
|
||||
"app-slowvote-dark" : {
|
||||
"name" : "app-slowvote-dark",
|
||||
"rule" : ".app-slowvote-dark",
|
||||
"hash" : "0d5861fab4562ad21242e34f9a29a33e"
|
||||
"hash" : "e51cc1e6887f2deaff02d9c60aae36e0"
|
||||
},
|
||||
"app-uiexamples-dark" : {
|
||||
"name" : "app-uiexamples-dark",
|
||||
"rule" : ".app-uiexamples-dark",
|
||||
"hash" : "6416a3d9d9007673ee558433b80692a1"
|
||||
"hash" : "dd919fd2c10e7d1e0915f523ac3922ce"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
|
@ -4,67 +4,67 @@
|
|||
"gradient-black-dark" : {
|
||||
"name" : "gradient-black-dark",
|
||||
"rule" : ".gradient-black-dark, button.black, a.black, a.black:visited",
|
||||
"hash" : "b9faf8505427bb14a8c51324e13e2f81"
|
||||
"hash" : "17425d8c9c53672ab2edbd236e6efd7a"
|
||||
},
|
||||
"gradient-black-light" : {
|
||||
"name" : "gradient-black-light",
|
||||
"rule" : ".gradient-black-light, button.black:active, a.black:active",
|
||||
"hash" : "812c3375d00ccc93c36c6df2eb565df4"
|
||||
"hash" : "c4fb2231553d2894fd2c97beaa8bfe39"
|
||||
},
|
||||
"gradient-blue-dark" : {
|
||||
"name" : "gradient-blue-dark",
|
||||
"rule" : ".gradient-blue-dark, button, a.button, a.button:visited, input.inputsubmit",
|
||||
"hash" : "adc2d0f7397374936384014c5d78550d"
|
||||
"hash" : "f467612edcdbf984672287c6086492c4"
|
||||
},
|
||||
"gradient-blue-light" : {
|
||||
"name" : "gradient-blue-light",
|
||||
"rule" : ".gradient-blue-light, button:active, a.button:active",
|
||||
"hash" : "91b841067a63e543a4dcd9d41e0a2e5c"
|
||||
"hash" : "471d47c102def6db46b345310aac5a03"
|
||||
},
|
||||
"gradient-breadcrumbs" : {
|
||||
"name" : "gradient-breadcrumbs",
|
||||
"rule" : ".gradient-breadcrumbs",
|
||||
"hash" : "688ab77f50cfbc17ec30d798efb1b39e"
|
||||
"hash" : "3d0f8634df5bc29eaf2a5a01bae79cf1"
|
||||
},
|
||||
"gradient-dark-menu-label" : {
|
||||
"name" : "gradient-dark-menu-label",
|
||||
"rule" : ".gradient-dark-menu-label, .phabricator-dark-menu .phabricator-menu-item-type-label",
|
||||
"hash" : "89a908596142d38fbe61a706694cd321"
|
||||
"hash" : "e0d4a455142f9c4745d36ad8b7dd3f78"
|
||||
},
|
||||
"gradient-green-dark" : {
|
||||
"name" : "gradient-green-dark",
|
||||
"rule" : ".gradient-green-dark, button.green, a.green, a.green:visited",
|
||||
"hash" : "0d19ab593772b6b406c0db309b3a14fb"
|
||||
"hash" : "a6719fe55b2b0e527ed32985691eab34"
|
||||
},
|
||||
"gradient-green-light" : {
|
||||
"name" : "gradient-green-light",
|
||||
"rule" : ".gradient-green-light, button.green:active, a.green:active",
|
||||
"hash" : "71c67916327ec7fc65149ab72c3a2924"
|
||||
"hash" : "124969cc7805bbd754005bc702e24c54"
|
||||
},
|
||||
"gradient-grey-dark" : {
|
||||
"name" : "gradient-grey-dark",
|
||||
"rule" : ".gradient-grey-dark, button.grey, input.inputaux, a.grey, a.grey:visited, a.button.disabled, button[disabled], button.disabled",
|
||||
"hash" : "32651902d28d37dca01cf067072c39c0"
|
||||
"hash" : "fac28a773098fc62bf571e12b843f71a"
|
||||
},
|
||||
"gradient-grey-light" : {
|
||||
"name" : "gradient-grey-light",
|
||||
"rule" : ".gradient-grey-light, button.grey:active, a.grey:active, button.grey_active, a.dropdown-open",
|
||||
"hash" : "c3c9ee1ed6f800a4ac86910b94687877"
|
||||
"hash" : "83c6128f59fc2e426c912c2f73f5b92b"
|
||||
},
|
||||
"gradient-menu-hover" : {
|
||||
"name" : "gradient-menu-hover",
|
||||
"rule" : ".gradient-menu-hover, .device-desktop .phabricator-side-menu a.phabricator-menu-item-type-link:hover, .phabricator-filetree a.phabricator-filetree-item:hover",
|
||||
"hash" : "856380207ac8c5cb6770d44dceb245a8"
|
||||
"hash" : "e6e064156d66952180e99b00996ffc38"
|
||||
},
|
||||
"gradient-menu-label" : {
|
||||
"name" : "gradient-menu-label",
|
||||
"rule" : ".gradient-menu-label, .phabricator-side-menu .phabricator-menu-item-type-label",
|
||||
"hash" : "8ad8352b077ae02820ebbbae26dc669b"
|
||||
"hash" : "04b9943f5b06c8cb21fe6b96714e6662"
|
||||
},
|
||||
"gradient-menu-selected" : {
|
||||
"name" : "gradient-menu-selected",
|
||||
"rule" : ".gradient-menu-selected, .phabricator-side-menu .phabricator-menu-item-selected, .device-desktop .phabricator-side-menu a.phabricator-menu-item-selected:hover, .phabricator-nav-local a.phabricator-active-nav-focus",
|
||||
"hash" : "815bafb94e11c23e1a419ea85dcae113"
|
||||
"hash" : "9b4b039fba177b90bc26f0e6eece339d"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
|
@ -4,47 +4,52 @@
|
|||
"app" : {
|
||||
"name" : "app",
|
||||
"rule" : ".menu-icon-app",
|
||||
"hash" : "a389f99d9c00f688e625da71579ee90a"
|
||||
"hash" : "fc525b5b3e3ecaeda3baccc18ace5a0a"
|
||||
},
|
||||
"arrow-right" : {
|
||||
"name" : "arrow-right",
|
||||
"rule" : ".phabricator-crumb-divider",
|
||||
"hash" : "a994209450dc73a80841cdd66bb59925"
|
||||
"hash" : "50180da0aed206c9db2bc1547c1a158c"
|
||||
},
|
||||
"bubble" : {
|
||||
"name" : "bubble",
|
||||
"rule" : ".phabricator-main-menu-alert-bubble.alert-unread",
|
||||
"hash" : "1145ac8a137a2a22517c1945fe22c517"
|
||||
"conf-hover" : {
|
||||
"name" : "conf-hover",
|
||||
"rule" : ".alert-notifications:hover .phabricator-main-menu-message-icon",
|
||||
"hash" : "febc4135b2821ae2d3f0b06aa295ca0d"
|
||||
},
|
||||
"conf-off" : {
|
||||
"name" : "conf-off",
|
||||
"rule" : ".alert-notifications .phabricator-main-menu-message-icon",
|
||||
"hash" : "dc1b05cb611eaef76a09e8cff698c99d"
|
||||
},
|
||||
"conf-unseen" : {
|
||||
"name" : "conf-unseen",
|
||||
"rule" : ".alert-notifications.message-unread .phabricator-main-menu-message-icon",
|
||||
"hash" : "1f7d54b2b9781099f867b100ebdd6c6a"
|
||||
},
|
||||
"eye" : {
|
||||
"name" : "eye",
|
||||
"rule" : ".menu-icon-eye",
|
||||
"hash" : "d598b1acb1933a86eaed3dea3347f7b0"
|
||||
"hash" : "553eb617c19b74b428558e606ff9b066"
|
||||
},
|
||||
"logo" : {
|
||||
"name" : "logo",
|
||||
"rule" : ".phabricator-main-menu-logo-image",
|
||||
"hash" : "c6c7ab165dce13a51ef329928c7c4aba"
|
||||
},
|
||||
"round_bubble" : {
|
||||
"name" : "round_bubble",
|
||||
"rule" : ".phabricator-main-menu-alert-bubble",
|
||||
"hash" : "9be91cc0128997992e9001baf32c8ab8"
|
||||
"hash" : "6eadea2c3dd2ada989eba22b6769b3eb"
|
||||
},
|
||||
"seen_have_unread" : {
|
||||
"name" : "seen_have_unread",
|
||||
"rule" : ".alert-notifications:hover .phabricator-main-menu-alert-icon",
|
||||
"hash" : "a8a7f07caa726d7e61ef3d41f959d94d"
|
||||
"hash" : "03a02951857811c722732dcfff9d458e"
|
||||
},
|
||||
"seen_read_all" : {
|
||||
"name" : "seen_read_all",
|
||||
"rule" : ".alert-notifications .phabricator-main-menu-alert-icon",
|
||||
"hash" : "4fdd4807d0c41bd4179dd43150c7fc44"
|
||||
"hash" : "f166fc60ed7a7a8ec2f41ab1af2cb3ec"
|
||||
},
|
||||
"unseen_any" : {
|
||||
"name" : "unseen_any",
|
||||
"rule" : ".alert-notifications.alert-unread .phabricator-main-menu-alert-icon",
|
||||
"hash" : "50d946952c73028b34e0c3378ca36b17"
|
||||
"hash" : "a8643b150166a076e81a42e5893a899f"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
BIN
resources/sprite/menu_1x/conf-hover.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
resources/sprite/menu_1x/conf-off.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
resources/sprite/menu_1x/conf-unseen.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/sprite/menu_2x/conf-hover.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/sprite/menu_2x/conf-off.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/sprite/menu_2x/conf-unseen.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
3
resources/sql/patches/20130127.altheraldtranscript.sql
Normal file
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE `{$NAMESPACE}_herald`.`herald_transcript`
|
||||
DROP `psth`;
|
||||
|
|
@ -7,6 +7,13 @@
|
|||
*/
|
||||
|
||||
celerity_register_resource_map(array(
|
||||
'/rsrc/image/actions/edit.png' =>
|
||||
array(
|
||||
'hash' => 'ae90914d120ac3838ddc633b480343f3',
|
||||
'uri' => '/res/ae90914d/rsrc/image/actions/edit.png',
|
||||
'disk' => '/rsrc/image/actions/edit.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
'/rsrc/image/avatar.png' =>
|
||||
array(
|
||||
'hash' => '1c5f255071537f05406adee86717ff27',
|
||||
|
@ -436,22 +443,22 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'/rsrc/image/sprite-apps-X2.png' =>
|
||||
array(
|
||||
'hash' => '984f8159dfc5bae465aa48a6ee5f00fe',
|
||||
'uri' => '/res/984f8159/rsrc/image/sprite-apps-X2.png',
|
||||
'hash' => '361e64ded74eee1094127c7878c2c385',
|
||||
'uri' => '/res/361e64de/rsrc/image/sprite-apps-X2.png',
|
||||
'disk' => '/rsrc/image/sprite-apps-X2.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
'/rsrc/image/sprite-apps-large-X2.png' =>
|
||||
array(
|
||||
'hash' => 'b215a44c77664577d8edf0d2ac9a8cfd',
|
||||
'uri' => '/res/b215a44c/rsrc/image/sprite-apps-large-X2.png',
|
||||
'hash' => '73507e04b4bd4d1e8e7544f7c424fc0f',
|
||||
'uri' => '/res/73507e04/rsrc/image/sprite-apps-large-X2.png',
|
||||
'disk' => '/rsrc/image/sprite-apps-large-X2.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
'/rsrc/image/sprite-apps-large.png' =>
|
||||
array(
|
||||
'hash' => 'f60b55b3d4a2b87169444d88a9f629c6',
|
||||
'uri' => '/res/f60b55b3/rsrc/image/sprite-apps-large.png',
|
||||
'hash' => '6a5aade6134954171f2f1f8507270632',
|
||||
'uri' => '/res/6a5aade6/rsrc/image/sprite-apps-large.png',
|
||||
'disk' => '/rsrc/image/sprite-apps-large.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
|
@ -464,8 +471,8 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'/rsrc/image/sprite-apps.png' =>
|
||||
array(
|
||||
'hash' => '7a13551ec085fff5438c621ca5213d8e',
|
||||
'uri' => '/res/7a13551e/rsrc/image/sprite-apps.png',
|
||||
'hash' => '5e76c53e9f61755e5d3e7befa9d73ae5',
|
||||
'uri' => '/res/5e76c53e/rsrc/image/sprite-apps.png',
|
||||
'disk' => '/rsrc/image/sprite-apps.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
|
@ -492,15 +499,15 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'/rsrc/image/sprite-menu-X2.png' =>
|
||||
array(
|
||||
'hash' => '11017d94e949aa169361b966716e8729',
|
||||
'uri' => '/res/11017d94/rsrc/image/sprite-menu-X2.png',
|
||||
'hash' => 'ad544a9287ca73b9e0d3f549834701ee',
|
||||
'uri' => '/res/ad544a92/rsrc/image/sprite-menu-X2.png',
|
||||
'disk' => '/rsrc/image/sprite-menu-X2.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
'/rsrc/image/sprite-menu.png' =>
|
||||
array(
|
||||
'hash' => 'ba0f7d61f49ea50e9c3ff93b160e14c5',
|
||||
'uri' => '/res/ba0f7d61/rsrc/image/sprite-menu.png',
|
||||
'hash' => '8a6822c29bfa6f33db1c1b8b02b5c6d3',
|
||||
'uri' => '/res/8a6822c2/rsrc/image/sprite-menu.png',
|
||||
'disk' => '/rsrc/image/sprite-menu.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
|
@ -609,7 +616,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'aphront-error-view-css' =>
|
||||
array(
|
||||
'uri' => '/res/048ed376/rsrc/css/aphront/error-view.css',
|
||||
'uri' => '/res/5f43a7c5/rsrc/css/aphront/error-view.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -718,7 +725,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'config-options-css' =>
|
||||
array(
|
||||
'uri' => '/res/6f7f64e8/rsrc/css/application/config/config-options.css',
|
||||
'uri' => '/res/e6c21f2f/rsrc/css/application/config/config-options.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -727,7 +734,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'conpherence-header-pane-css' =>
|
||||
array(
|
||||
'uri' => '/res/e50e02c8/rsrc/css/application/conpherence/header-pane.css',
|
||||
'uri' => '/res/4b8aebd2/rsrc/css/application/conpherence/header-pane.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -736,7 +743,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'conpherence-menu-css' =>
|
||||
array(
|
||||
'uri' => '/res/02b20456/rsrc/css/application/conpherence/menu.css',
|
||||
'uri' => '/res/0dc6b412/rsrc/css/application/conpherence/menu.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -745,7 +752,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'conpherence-message-pane-css' =>
|
||||
array(
|
||||
'uri' => '/res/799dc191/rsrc/css/application/conpherence/message-pane.css',
|
||||
'uri' => '/res/88b1927c/rsrc/css/application/conpherence/message-pane.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -763,7 +770,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'conpherence-widget-pane-css' =>
|
||||
array(
|
||||
'uri' => '/res/7af40cac/rsrc/css/application/conpherence/widget-pane.css',
|
||||
'uri' => '/res/b3e6a558/rsrc/css/application/conpherence/widget-pane.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -1023,13 +1030,14 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'javelin-behavior-aphront-drag-and-drop' =>
|
||||
array(
|
||||
'uri' => '/res/84a67d72/rsrc/js/application/core/behavior-drag-and-drop.js',
|
||||
'uri' => '/res/3d809b40/rsrc/js/application/core/behavior-drag-and-drop.js',
|
||||
'type' => 'js',
|
||||
'requires' =>
|
||||
array(
|
||||
0 => 'javelin-behavior',
|
||||
1 => 'javelin-dom',
|
||||
2 => 'phabricator-drag-and-drop-file-upload',
|
||||
2 => 'phabricator-file-upload',
|
||||
3 => 'phabricator-drag-and-drop-file-upload',
|
||||
),
|
||||
'disk' => '/rsrc/js/application/core/behavior-drag-and-drop.js',
|
||||
),
|
||||
|
@ -2705,7 +2713,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'phabricator-main-menu-view' =>
|
||||
array(
|
||||
'uri' => '/res/a38edb46/rsrc/css/application/base/main-menu-view.css',
|
||||
'uri' => '/res/38ec42d4/rsrc/css/application/base/main-menu-view.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -2766,7 +2774,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'phabricator-object-item-list-view-css' =>
|
||||
array(
|
||||
'uri' => '/res/1f9c7ebb/rsrc/css/layout/phabricator-object-item-list-view.css',
|
||||
'uri' => '/res/2fb97c5c/rsrc/css/layout/phabricator-object-item-list-view.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -2920,7 +2928,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'phabricator-source-code-view-css' =>
|
||||
array(
|
||||
'uri' => '/res/87935c75/rsrc/css/layout/phabricator-source-code-view.css',
|
||||
'uri' => '/res/9373e769/rsrc/css/layout/phabricator-source-code-view.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -3256,7 +3264,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'sprite-apps-css' =>
|
||||
array(
|
||||
'uri' => '/res/2d8a940e/rsrc/css/sprite-apps.css',
|
||||
'uri' => '/res/8de495b4/rsrc/css/sprite-apps.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -3265,7 +3273,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'sprite-apps-large-css' =>
|
||||
array(
|
||||
'uri' => '/res/6b528e03/rsrc/css/sprite-apps-large.css',
|
||||
'uri' => '/res/174143b7/rsrc/css/sprite-apps-large.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -3301,7 +3309,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'sprite-menu-css' =>
|
||||
array(
|
||||
'uri' => '/res/3d9f75af/rsrc/css/sprite-menu.css',
|
||||
'uri' => '/res/8e6624b0/rsrc/css/sprite-menu.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -3338,7 +3346,7 @@ celerity_register_resource_map(array(
|
|||
), array(
|
||||
'packages' =>
|
||||
array(
|
||||
'8fd19266' =>
|
||||
'023adc14' =>
|
||||
array(
|
||||
'name' => 'core.pkg.css',
|
||||
'symbols' =>
|
||||
|
@ -3382,7 +3390,7 @@ celerity_register_resource_map(array(
|
|||
36 => 'phabricator-object-item-list-view-css',
|
||||
37 => 'global-drag-and-drop-css',
|
||||
),
|
||||
'uri' => '/res/pkg/8fd19266/core.pkg.css',
|
||||
'uri' => '/res/pkg/023adc14/core.pkg.css',
|
||||
'type' => 'css',
|
||||
),
|
||||
'66dca903' =>
|
||||
|
@ -3462,7 +3470,7 @@ celerity_register_resource_map(array(
|
|||
'uri' => '/res/pkg/ec01d039/differential.pkg.css',
|
||||
'type' => 'css',
|
||||
),
|
||||
'ac53d36a' =>
|
||||
'310cd201' =>
|
||||
array(
|
||||
'name' => 'differential.pkg.js',
|
||||
'symbols' =>
|
||||
|
@ -3487,7 +3495,7 @@ celerity_register_resource_map(array(
|
|||
17 => 'javelin-behavior-differential-toggle-files',
|
||||
18 => 'javelin-behavior-differential-user-select',
|
||||
),
|
||||
'uri' => '/res/pkg/ac53d36a/differential.pkg.js',
|
||||
'uri' => '/res/pkg/310cd201/differential.pkg.js',
|
||||
'type' => 'js',
|
||||
),
|
||||
'c8ce2d88' =>
|
||||
|
@ -3572,22 +3580,22 @@ celerity_register_resource_map(array(
|
|||
'reverse' =>
|
||||
array(
|
||||
'aphront-attached-file-view-css' => 'e30a3fa8',
|
||||
'aphront-crumbs-view-css' => '8fd19266',
|
||||
'aphront-dialog-view-css' => '8fd19266',
|
||||
'aphront-error-view-css' => '8fd19266',
|
||||
'aphront-form-view-css' => '8fd19266',
|
||||
'aphront-crumbs-view-css' => '023adc14',
|
||||
'aphront-dialog-view-css' => '023adc14',
|
||||
'aphront-error-view-css' => '023adc14',
|
||||
'aphront-form-view-css' => '023adc14',
|
||||
'aphront-headsup-action-list-view-css' => 'ec01d039',
|
||||
'aphront-headsup-view-css' => '8fd19266',
|
||||
'aphront-list-filter-view-css' => '8fd19266',
|
||||
'aphront-pager-view-css' => '8fd19266',
|
||||
'aphront-panel-view-css' => '8fd19266',
|
||||
'aphront-table-view-css' => '8fd19266',
|
||||
'aphront-tokenizer-control-css' => '8fd19266',
|
||||
'aphront-tooltip-css' => '8fd19266',
|
||||
'aphront-typeahead-control-css' => '8fd19266',
|
||||
'aphront-headsup-view-css' => '023adc14',
|
||||
'aphront-list-filter-view-css' => '023adc14',
|
||||
'aphront-pager-view-css' => '023adc14',
|
||||
'aphront-panel-view-css' => '023adc14',
|
||||
'aphront-table-view-css' => '023adc14',
|
||||
'aphront-tokenizer-control-css' => '023adc14',
|
||||
'aphront-tooltip-css' => '023adc14',
|
||||
'aphront-typeahead-control-css' => '023adc14',
|
||||
'differential-changeset-view-css' => 'ec01d039',
|
||||
'differential-core-view-css' => 'ec01d039',
|
||||
'differential-inline-comment-editor' => 'ac53d36a',
|
||||
'differential-inline-comment-editor' => '310cd201',
|
||||
'differential-local-commits-view-css' => 'ec01d039',
|
||||
'differential-results-table-css' => 'ec01d039',
|
||||
'differential-revision-add-comment-css' => 'ec01d039',
|
||||
|
@ -3598,32 +3606,32 @@ celerity_register_resource_map(array(
|
|||
'differential-table-of-contents-css' => 'ec01d039',
|
||||
'diffusion-commit-view-css' => 'c8ce2d88',
|
||||
'diffusion-icons-css' => 'c8ce2d88',
|
||||
'global-drag-and-drop-css' => '8fd19266',
|
||||
'global-drag-and-drop-css' => '023adc14',
|
||||
'inline-comment-summary-css' => 'ec01d039',
|
||||
'javelin-aphlict' => '66dca903',
|
||||
'javelin-behavior' => 'fbeded59',
|
||||
'javelin-behavior-aphlict-dropdown' => '66dca903',
|
||||
'javelin-behavior-aphlict-listen' => '66dca903',
|
||||
'javelin-behavior-aphront-basic-tokenizer' => '66dca903',
|
||||
'javelin-behavior-aphront-drag-and-drop' => 'ac53d36a',
|
||||
'javelin-behavior-aphront-drag-and-drop-textarea' => 'ac53d36a',
|
||||
'javelin-behavior-aphront-drag-and-drop' => '310cd201',
|
||||
'javelin-behavior-aphront-drag-and-drop-textarea' => '310cd201',
|
||||
'javelin-behavior-aphront-form-disable-on-submit' => '66dca903',
|
||||
'javelin-behavior-audit-preview' => 'f96657b8',
|
||||
'javelin-behavior-dark-console' => '8edbada5',
|
||||
'javelin-behavior-dark-console-ajax' => '8edbada5',
|
||||
'javelin-behavior-device' => '66dca903',
|
||||
'javelin-behavior-differential-accept-with-errors' => 'ac53d36a',
|
||||
'javelin-behavior-differential-add-reviewers-and-ccs' => 'ac53d36a',
|
||||
'javelin-behavior-differential-comment-jump' => 'ac53d36a',
|
||||
'javelin-behavior-differential-diff-radios' => 'ac53d36a',
|
||||
'javelin-behavior-differential-dropdown-menus' => 'ac53d36a',
|
||||
'javelin-behavior-differential-edit-inline-comments' => 'ac53d36a',
|
||||
'javelin-behavior-differential-feedback-preview' => 'ac53d36a',
|
||||
'javelin-behavior-differential-keyboard-navigation' => 'ac53d36a',
|
||||
'javelin-behavior-differential-populate' => 'ac53d36a',
|
||||
'javelin-behavior-differential-show-more' => 'ac53d36a',
|
||||
'javelin-behavior-differential-toggle-files' => 'ac53d36a',
|
||||
'javelin-behavior-differential-user-select' => 'ac53d36a',
|
||||
'javelin-behavior-differential-accept-with-errors' => '310cd201',
|
||||
'javelin-behavior-differential-add-reviewers-and-ccs' => '310cd201',
|
||||
'javelin-behavior-differential-comment-jump' => '310cd201',
|
||||
'javelin-behavior-differential-diff-radios' => '310cd201',
|
||||
'javelin-behavior-differential-dropdown-menus' => '310cd201',
|
||||
'javelin-behavior-differential-edit-inline-comments' => '310cd201',
|
||||
'javelin-behavior-differential-feedback-preview' => '310cd201',
|
||||
'javelin-behavior-differential-keyboard-navigation' => '310cd201',
|
||||
'javelin-behavior-differential-populate' => '310cd201',
|
||||
'javelin-behavior-differential-show-more' => '310cd201',
|
||||
'javelin-behavior-differential-toggle-files' => '310cd201',
|
||||
'javelin-behavior-differential-user-select' => '310cd201',
|
||||
'javelin-behavior-diffusion-commit-graph' => 'f96657b8',
|
||||
'javelin-behavior-diffusion-pull-lastmodified' => 'f96657b8',
|
||||
'javelin-behavior-error-log' => '8edbada5',
|
||||
|
@ -3640,14 +3648,14 @@ celerity_register_resource_map(array(
|
|||
'javelin-behavior-phabricator-home-reveal-tiles' => '66dca903',
|
||||
'javelin-behavior-phabricator-keyboard-shortcuts' => '66dca903',
|
||||
'javelin-behavior-phabricator-nav' => '66dca903',
|
||||
'javelin-behavior-phabricator-object-selector' => 'ac53d36a',
|
||||
'javelin-behavior-phabricator-object-selector' => '310cd201',
|
||||
'javelin-behavior-phabricator-oncopy' => '66dca903',
|
||||
'javelin-behavior-phabricator-remarkup-assist' => '66dca903',
|
||||
'javelin-behavior-phabricator-search-typeahead' => '66dca903',
|
||||
'javelin-behavior-phabricator-tooltips' => '66dca903',
|
||||
'javelin-behavior-phabricator-watch-anchor' => '66dca903',
|
||||
'javelin-behavior-refresh-csrf' => '66dca903',
|
||||
'javelin-behavior-repository-crossreference' => 'ac53d36a',
|
||||
'javelin-behavior-repository-crossreference' => '310cd201',
|
||||
'javelin-behavior-toggle-class' => '66dca903',
|
||||
'javelin-behavior-workflow' => '66dca903',
|
||||
'javelin-dom' => 'fbeded59',
|
||||
|
@ -3668,48 +3676,48 @@ celerity_register_resource_map(array(
|
|||
'javelin-util' => 'fbeded59',
|
||||
'javelin-vector' => 'fbeded59',
|
||||
'javelin-workflow' => 'fbeded59',
|
||||
'lightbox-attachment-css' => '8fd19266',
|
||||
'lightbox-attachment-css' => '023adc14',
|
||||
'maniphest-task-summary-css' => 'e30a3fa8',
|
||||
'maniphest-transaction-detail-css' => 'e30a3fa8',
|
||||
'phabricator-busy' => '66dca903',
|
||||
'phabricator-content-source-view-css' => 'ec01d039',
|
||||
'phabricator-core-buttons-css' => '8fd19266',
|
||||
'phabricator-core-css' => '8fd19266',
|
||||
'phabricator-crumbs-view-css' => '8fd19266',
|
||||
'phabricator-directory-css' => '8fd19266',
|
||||
'phabricator-drag-and-drop-file-upload' => 'ac53d36a',
|
||||
'phabricator-core-buttons-css' => '023adc14',
|
||||
'phabricator-core-css' => '023adc14',
|
||||
'phabricator-crumbs-view-css' => '023adc14',
|
||||
'phabricator-directory-css' => '023adc14',
|
||||
'phabricator-drag-and-drop-file-upload' => '310cd201',
|
||||
'phabricator-dropdown-menu' => '66dca903',
|
||||
'phabricator-file-upload' => '66dca903',
|
||||
'phabricator-filetree-view-css' => '8fd19266',
|
||||
'phabricator-flag-css' => '8fd19266',
|
||||
'phabricator-form-view-css' => '8fd19266',
|
||||
'phabricator-header-view-css' => '8fd19266',
|
||||
'phabricator-jump-nav' => '8fd19266',
|
||||
'phabricator-filetree-view-css' => '023adc14',
|
||||
'phabricator-flag-css' => '023adc14',
|
||||
'phabricator-form-view-css' => '023adc14',
|
||||
'phabricator-header-view-css' => '023adc14',
|
||||
'phabricator-jump-nav' => '023adc14',
|
||||
'phabricator-keyboard-shortcut' => '66dca903',
|
||||
'phabricator-keyboard-shortcut-manager' => '66dca903',
|
||||
'phabricator-main-menu-view' => '8fd19266',
|
||||
'phabricator-main-menu-view' => '023adc14',
|
||||
'phabricator-menu-item' => '66dca903',
|
||||
'phabricator-nav-view-css' => '8fd19266',
|
||||
'phabricator-nav-view-css' => '023adc14',
|
||||
'phabricator-notification' => '66dca903',
|
||||
'phabricator-notification-css' => '8fd19266',
|
||||
'phabricator-notification-menu-css' => '8fd19266',
|
||||
'phabricator-object-item-list-view-css' => '8fd19266',
|
||||
'phabricator-notification-css' => '023adc14',
|
||||
'phabricator-notification-menu-css' => '023adc14',
|
||||
'phabricator-object-item-list-view-css' => '023adc14',
|
||||
'phabricator-object-selector-css' => 'ec01d039',
|
||||
'phabricator-paste-file-upload' => '66dca903',
|
||||
'phabricator-prefab' => '66dca903',
|
||||
'phabricator-project-tag-css' => 'e30a3fa8',
|
||||
'phabricator-remarkup-css' => '8fd19266',
|
||||
'phabricator-shaped-request' => 'ac53d36a',
|
||||
'phabricator-side-menu-view-css' => '8fd19266',
|
||||
'phabricator-standard-page-view' => '8fd19266',
|
||||
'phabricator-remarkup-css' => '023adc14',
|
||||
'phabricator-shaped-request' => '310cd201',
|
||||
'phabricator-side-menu-view-css' => '023adc14',
|
||||
'phabricator-standard-page-view' => '023adc14',
|
||||
'phabricator-textareautils' => '66dca903',
|
||||
'phabricator-tooltip' => '66dca903',
|
||||
'phabricator-transaction-view-css' => '8fd19266',
|
||||
'phabricator-zindex-css' => '8fd19266',
|
||||
'sprite-apps-large-css' => '8fd19266',
|
||||
'sprite-gradient-css' => '8fd19266',
|
||||
'sprite-icon-css' => '8fd19266',
|
||||
'sprite-menu-css' => '8fd19266',
|
||||
'syntax-highlighting-css' => '8fd19266',
|
||||
'phabricator-transaction-view-css' => '023adc14',
|
||||
'phabricator-zindex-css' => '023adc14',
|
||||
'sprite-apps-large-css' => '023adc14',
|
||||
'sprite-gradient-css' => '023adc14',
|
||||
'sprite-icon-css' => '023adc14',
|
||||
'sprite-menu-css' => '023adc14',
|
||||
'syntax-highlighting-css' => '023adc14',
|
||||
),
|
||||
));
|
||||
|
|
|
@ -195,6 +195,7 @@ phutil_register_library_map(array(
|
|||
'ConduitCallTestCase' => 'applications/conduit/call/__tests__/ConduitCallTestCase.php',
|
||||
'ConduitException' => 'applications/conduit/protocol/ConduitException.php',
|
||||
'ConduitSSHWorkflow' => 'applications/conduit/ssh/ConduitSSHWorkflow.php',
|
||||
'ConpherenceConfigOptions' => 'applications/conpherence/config/ConpherenceConfigOptions.php',
|
||||
'ConpherenceConstants' => 'applications/conpherence/constants/ConpherenceConstants.php',
|
||||
'ConpherenceController' => 'applications/conpherence/controller/ConpherenceController.php',
|
||||
'ConpherenceDAO' => 'applications/conpherence/storage/ConpherenceDAO.php',
|
||||
|
@ -205,6 +206,7 @@ phutil_register_library_map(array(
|
|||
'ConpherenceParticipant' => 'applications/conpherence/storage/ConpherenceParticipant.php',
|
||||
'ConpherenceParticipantQuery' => 'applications/conpherence/query/ConpherenceParticipantQuery.php',
|
||||
'ConpherenceParticipationStatus' => 'applications/conpherence/constants/ConpherenceParticipationStatus.php',
|
||||
'ConpherenceReplyHandler' => 'applications/conpherence/mail/ConpherenceReplyHandler.php',
|
||||
'ConpherenceThread' => 'applications/conpherence/storage/ConpherenceThread.php',
|
||||
'ConpherenceThreadQuery' => 'applications/conpherence/query/ConpherenceThreadQuery.php',
|
||||
'ConpherenceTransaction' => 'applications/conpherence/storage/ConpherenceTransaction.php',
|
||||
|
@ -1666,6 +1668,7 @@ phutil_register_library_map(array(
|
|||
'ConduitCallTestCase' => 'PhabricatorTestCase',
|
||||
'ConduitException' => 'Exception',
|
||||
'ConduitSSHWorkflow' => 'PhabricatorSSHWorkflow',
|
||||
'ConpherenceConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||
'ConpherenceController' => 'PhabricatorController',
|
||||
'ConpherenceDAO' => 'PhabricatorLiskDAO',
|
||||
'ConpherenceEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||
|
@ -1675,6 +1678,7 @@ phutil_register_library_map(array(
|
|||
'ConpherenceParticipant' => 'ConpherenceDAO',
|
||||
'ConpherenceParticipantQuery' => 'PhabricatorOffsetPagedQuery',
|
||||
'ConpherenceParticipationStatus' => 'ConpherenceConstants',
|
||||
'ConpherenceReplyHandler' => 'PhabricatorMailReplyHandler',
|
||||
'ConpherenceThread' =>
|
||||
array(
|
||||
0 => 'ConpherenceDAO',
|
||||
|
|
|
@ -5,7 +5,7 @@ abstract class PhabricatorAuthController extends PhabricatorController {
|
|||
public function buildStandardPageResponse($view, array $data) {
|
||||
$page = $this->buildStandardPageView();
|
||||
|
||||
$page->setApplicationName('Login');
|
||||
$page->setApplicationName(pht('Login'));
|
||||
$page->setBaseURI('/login/');
|
||||
$page->setTitle(idx($data, 'title'));
|
||||
$page->appendChild($view);
|
||||
|
|
|
@ -15,13 +15,14 @@ final class PhabricatorDisabledUserController
|
|||
}
|
||||
|
||||
$failure_view = new AphrontRequestFailureView();
|
||||
$failure_view->setHeader('Account Disabled');
|
||||
$failure_view->appendChild('<p>Your account has been disabled.</p>');
|
||||
$failure_view->setHeader(pht('Account Disabled'));
|
||||
$failure_view->appendChild(
|
||||
'<p>'.pht('Your account has been disabled.').'</p>');
|
||||
|
||||
return $this->buildStandardPageResponse(
|
||||
$failure_view,
|
||||
array(
|
||||
'title' => 'Account Disabled',
|
||||
'title' => pht('Account Disabled'),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -22,18 +22,18 @@ final class PhabricatorEmailLoginController
|
|||
|
||||
if ($request->isFormPost()) {
|
||||
$e_email = null;
|
||||
$e_captcha = 'Again';
|
||||
$e_captcha = pht('Again');
|
||||
|
||||
$captcha_ok = AphrontFormRecaptchaControl::processCaptcha($request);
|
||||
if (!$captcha_ok) {
|
||||
$errors[] = "Captcha response is incorrect, try again.";
|
||||
$e_captcha = 'Invalid';
|
||||
$errors[] = pht("Captcha response is incorrect, try again.");
|
||||
$e_captcha = pht('Invalid');
|
||||
}
|
||||
|
||||
$email = $request->getStr('email');
|
||||
if (!strlen($email)) {
|
||||
$errors[] = "You must provide an email address.";
|
||||
$e_email = 'Required';
|
||||
$errors[] = pht("You must provide an email address.");
|
||||
$e_email = pht('Required');
|
||||
}
|
||||
|
||||
if (!$errors) {
|
||||
|
@ -53,8 +53,9 @@ final class PhabricatorEmailLoginController
|
|||
}
|
||||
|
||||
if (!$target_user) {
|
||||
$errors[] = "There is no account associated with that email address.";
|
||||
$e_email = "Invalid";
|
||||
$errors[] =
|
||||
pht("There is no account associated with that email address.");
|
||||
$e_email = pht("Invalid");
|
||||
}
|
||||
|
||||
if (!$errors) {
|
||||
|
@ -96,13 +97,15 @@ EOBODY;
|
|||
$mail->saveAndSend();
|
||||
|
||||
$view = new AphrontRequestFailureView();
|
||||
$view->setHeader('Check Your Email');
|
||||
$view->setHeader(pht('Check Your Email'));
|
||||
$view->appendChild(
|
||||
'<p>An email has been sent with a link you can use to login.</p>');
|
||||
'<p>'.pht(
|
||||
'An email has been sent with a link you can use to login.'
|
||||
).'</p>');
|
||||
return $this->buildStandardPageResponse(
|
||||
$view,
|
||||
array(
|
||||
'title' => 'Email Sent',
|
||||
'title' => pht('Email Sent'),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -115,38 +118,41 @@ EOBODY;
|
|||
->setUser($request->getUser())
|
||||
->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('Email')
|
||||
->setLabel(pht('Email'))
|
||||
->setName('email')
|
||||
->setValue($request->getStr('email'))
|
||||
->setError($e_email))
|
||||
->appendChild(
|
||||
id(new AphrontFormRecaptchaControl())
|
||||
->setLabel('Captcha')
|
||||
->setLabel(pht('Captcha'))
|
||||
->setError($e_captcha))
|
||||
->appendChild(
|
||||
id(new AphrontFormSubmitControl())
|
||||
->setValue('Send Email'));
|
||||
->setValue(pht('Send Email')));
|
||||
|
||||
$error_view = null;
|
||||
if ($errors) {
|
||||
$error_view = new AphrontErrorView();
|
||||
$error_view->setTitle('Login Error');
|
||||
$error_view->setTitle(pht('Login Error'));
|
||||
$error_view->setErrors($errors);
|
||||
}
|
||||
|
||||
|
||||
$panel = new AphrontPanelView();
|
||||
$panel->setWidth(AphrontPanelView::WIDTH_FORM);
|
||||
$panel->appendChild('<h1>Forgot Password / Email Login</h1>');
|
||||
$panel->appendChild('
|
||||
<h1>'.pht('Forgot Password / Email Login').'</h1>');
|
||||
$panel->appendChild($email_auth);
|
||||
$panel->setNoBackground();
|
||||
|
||||
return $this->buildStandardPageResponse(
|
||||
return $this->buildApplicationPage(
|
||||
array(
|
||||
$error_view,
|
||||
$panel,
|
||||
),
|
||||
array(
|
||||
'title' => 'Create New Account',
|
||||
'title' => pht('Forgot Password'),
|
||||
'device' => true,
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -49,21 +49,23 @@ final class PhabricatorEmailTokenController
|
|||
!$target_user->validateEmailToken($target_email, $token)) {
|
||||
|
||||
$view = new AphrontRequestFailureView();
|
||||
$view->setHeader('Unable to Login');
|
||||
$view->setHeader(pht('Unable to Login'));
|
||||
$view->appendChild(
|
||||
'<p>The authentication information in the link you clicked is '.
|
||||
'<p>'.pht('The authentication information in the link you clicked is '.
|
||||
'invalid or out of date. Make sure you are copy-and-pasting the '.
|
||||
'entire link into your browser. You can try again, or request '.
|
||||
'a new email.</p>');
|
||||
'a new email.').'</p>');
|
||||
$view->appendChild(
|
||||
'<div class="aphront-failure-continue">'.
|
||||
'<a class="button" href="/login/email/">Send Another Email</a>'.
|
||||
'<a class="button" href="/login/email/">'.
|
||||
pht('Send Another Email').
|
||||
'</a>'.
|
||||
'</div>');
|
||||
|
||||
return $this->buildStandardPageResponse(
|
||||
$view,
|
||||
array(
|
||||
'title' => 'Login Failure',
|
||||
'title' => pht('Login Failure'),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -42,11 +42,12 @@ final class PhabricatorLDAPLoginController extends PhabricatorAuthController {
|
|||
$existing_ldap) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($current_user);
|
||||
$dialog->setTitle('Already Linked to Another Account');
|
||||
$dialog->setTitle(pht('Already Linked to Another Account'));
|
||||
$dialog->appendChild(
|
||||
'<p>The LDAP account you just authorized is already linked to '.
|
||||
'another Phabricator account. Before you can link it to a '.
|
||||
'different LDAP account, you must unlink the old account.</p>'
|
||||
'<p>'.pht('The LDAP account you just authorized is already '.
|
||||
'linked toanother Phabricator account. Before you can link it '.
|
||||
'to a different LDAP account, you must unlink the old '.
|
||||
'account.').'</p>'
|
||||
);
|
||||
$dialog->addCancelButton('/settings/panel/ldap/');
|
||||
|
||||
|
@ -60,12 +61,14 @@ final class PhabricatorLDAPLoginController extends PhabricatorAuthController {
|
|||
if (!$request->isDialogFormPost()) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($current_user);
|
||||
$dialog->setTitle('Link LDAP Account');
|
||||
$dialog->setTitle(pht('Link LDAP Account'));
|
||||
$dialog->appendChild(
|
||||
'<p>Link your LDAP account to your Phabricator account?</p>');
|
||||
'<p>'.
|
||||
pht('Link your LDAP account to your Phabricator account?').
|
||||
'</p>');
|
||||
$dialog->addHiddenInput('username', $request->getStr('username'));
|
||||
$dialog->addHiddenInput('password', $request->getStr('password'));
|
||||
$dialog->addSubmitButton('Link Accounts');
|
||||
$dialog->addSubmitButton(pht('Link Accounts'));
|
||||
$dialog->addCancelButton('/settings/panel/ldap/');
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
|
@ -116,27 +119,27 @@ final class PhabricatorLDAPLoginController extends PhabricatorAuthController {
|
|||
->setAction('/ldap/login/')
|
||||
->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('LDAP username')
|
||||
->setLabel(pht('LDAP username'))
|
||||
->setName('username')
|
||||
->setValue($ldap_username))
|
||||
->appendChild(
|
||||
id(new AphrontFormPasswordControl())
|
||||
->setLabel('Password')
|
||||
->setLabel(pht('Password'))
|
||||
->setName('password'));
|
||||
|
||||
$ldap_form
|
||||
->appendChild(
|
||||
id(new AphrontFormSubmitControl())
|
||||
->setValue('Login'));
|
||||
->setValue(pht('Login')));
|
||||
|
||||
$panel = new AphrontPanelView();
|
||||
$panel->setWidth(AphrontPanelView::WIDTH_FORM);
|
||||
$panel->appendChild('<h1>LDAP login</h1>');
|
||||
$panel->appendChild('<h1>'.pht('LDAP login').'</h1>');
|
||||
$panel->appendChild($ldap_form);
|
||||
|
||||
if (isset($errors) && count($errors) > 0) {
|
||||
$error_view = new AphrontErrorView();
|
||||
$error_view->setTitle('Login Failed');
|
||||
$error_view->setTitle(pht('Login Failed'));
|
||||
$error_view->setErrors($errors);
|
||||
}
|
||||
|
||||
|
@ -146,7 +149,7 @@ final class PhabricatorLDAPLoginController extends PhabricatorAuthController {
|
|||
$panel,
|
||||
),
|
||||
array(
|
||||
'title' => 'Login',
|
||||
'title' => pht('Login'),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -63,10 +63,10 @@ extends PhabricatorAuthController {
|
|||
$user->setUsername($request->getStr('username'));
|
||||
$username = $user->getUsername();
|
||||
if (!strlen($user->getUsername())) {
|
||||
$e_username = 'Required';
|
||||
$errors[] = 'Username is required.';
|
||||
$e_username = pht('Required');
|
||||
$errors[] = pht('Username is required.');
|
||||
} else if (!PhabricatorUser::validateUsername($username)) {
|
||||
$e_username = 'Invalid';
|
||||
$e_username = pht('Invalid');
|
||||
$errors[] = PhabricatorUser::describeValidUsername();
|
||||
} else {
|
||||
$e_username = null;
|
||||
|
@ -75,8 +75,8 @@ extends PhabricatorAuthController {
|
|||
if (!$new_email) {
|
||||
$new_email = trim($request->getStr('email'));
|
||||
if (!$new_email) {
|
||||
$e_email = 'Required';
|
||||
$errors[] = 'Email is required.';
|
||||
$e_email = pht('Required');
|
||||
$errors[] = pht('Email is required.');
|
||||
} else {
|
||||
$e_email = null;
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ extends PhabricatorAuthController {
|
|||
|
||||
if ($new_email) {
|
||||
if (!PhabricatorUserEmail::isAllowedAddress($new_email)) {
|
||||
$e_email = 'Invalid';
|
||||
$e_email = pht('Invalid');
|
||||
$errors[] = PhabricatorUserEmail::describeAllowedAddresses();
|
||||
}
|
||||
}
|
||||
|
@ -92,8 +92,8 @@ extends PhabricatorAuthController {
|
|||
if (!strlen($user->getRealName())) {
|
||||
$user->setRealName($request->getStr('realname'));
|
||||
if (!strlen($user->getRealName())) {
|
||||
$e_realname = 'Required';
|
||||
$errors[] = 'Real name is required.';
|
||||
$e_realname = pht('Required');
|
||||
$errors[] = pht('Real name is required.');
|
||||
} else {
|
||||
$e_realname = null;
|
||||
}
|
||||
|
@ -137,11 +137,11 @@ extends PhabricatorAuthController {
|
|||
$new_email);
|
||||
|
||||
if ($same_username) {
|
||||
$e_username = 'Duplicate';
|
||||
$errors[] = 'That username or email is not unique.';
|
||||
$e_username = pht('Duplicate');
|
||||
$errors[] = pht('That username or email is not unique.');
|
||||
} else if ($same_email) {
|
||||
$e_email = 'Duplicate';
|
||||
$errors[] = 'That email is not unique.';
|
||||
$e_email = pht('Duplicate');
|
||||
$errors[] = pht('That email is not unique.');
|
||||
} else {
|
||||
throw $exception;
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ extends PhabricatorAuthController {
|
|||
$error_view = null;
|
||||
if ($errors) {
|
||||
$error_view = new AphrontErrorView();
|
||||
$error_view->setTitle('Registration Failed');
|
||||
$error_view->setTitle(pht('Registration Failed'));
|
||||
$error_view->setErrors($errors);
|
||||
}
|
||||
|
||||
|
@ -169,20 +169,20 @@ extends PhabricatorAuthController {
|
|||
->setAction($action_path)
|
||||
->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('Username')
|
||||
->setLabel(pht('Username'))
|
||||
->setName('username')
|
||||
->setValue($user->getUsername())
|
||||
->setError($e_username));
|
||||
|
||||
$form->appendChild(
|
||||
id(new AphrontFormPasswordControl())
|
||||
->setLabel('Password')
|
||||
->setLabel(pht('Password'))
|
||||
->setName('password'));
|
||||
|
||||
if ($show_email_input) {
|
||||
$form->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('Email')
|
||||
->setLabel(pht('Email'))
|
||||
->setName('email')
|
||||
->setValue($request->getStr('email'))
|
||||
->setError($e_email));
|
||||
|
@ -191,7 +191,7 @@ extends PhabricatorAuthController {
|
|||
if ($provider->retrieveUserRealName() === null) {
|
||||
$form->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('Real Name')
|
||||
->setLabel(pht('Real Name'))
|
||||
->setName('realname')
|
||||
->setValue($request->getStr('realname'))
|
||||
->setError($e_realname));
|
||||
|
@ -200,10 +200,10 @@ extends PhabricatorAuthController {
|
|||
$form
|
||||
->appendChild(
|
||||
id(new AphrontFormSubmitControl())
|
||||
->setValue('Create Account'));
|
||||
->setValue(pht('Create Account')));
|
||||
|
||||
$panel = new AphrontPanelView();
|
||||
$panel->setHeader('Create New Account');
|
||||
$panel->setHeader(pht('Create New Account'));
|
||||
$panel->setWidth(AphrontPanelView::WIDTH_FORM);
|
||||
$panel->appendChild($form);
|
||||
|
||||
|
@ -213,7 +213,7 @@ extends PhabricatorAuthController {
|
|||
$panel,
|
||||
),
|
||||
array(
|
||||
'title' => 'Create New Account',
|
||||
'title' => pht('Create New Account'),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -17,11 +17,11 @@ final class PhabricatorLDAPUnlinkController extends PhabricatorAuthController {
|
|||
if (!$request->isDialogFormPost()) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($user);
|
||||
$dialog->setTitle('Really unlink account?');
|
||||
$dialog->setTitle(pht('Really unlink account?'));
|
||||
$dialog->appendChild(
|
||||
'<p><strong>You will not be able to login</strong> using this account '.
|
||||
'once you unlink it. Continue?</p>');
|
||||
$dialog->addSubmitButton('Unlink Account');
|
||||
'<p>'.pht('You will not be able to login using this account '.
|
||||
'once you unlink it. Continue?').'</p>');
|
||||
$dialog->addSubmitButton(pht('Unlink Account'));
|
||||
$dialog->addCancelButton('/settings/panel/ldap/');
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
|
|
|
@ -28,10 +28,10 @@ final class PhabricatorLoginController
|
|||
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($user);
|
||||
$dialog->setTitle('Login Required');
|
||||
$dialog->appendChild('<p>You must login to continue.</p>');
|
||||
$dialog->addSubmitButton('Login');
|
||||
$dialog->addCancelButton('/', 'Cancel');
|
||||
$dialog->setTitle(pht('Login Required'));
|
||||
$dialog->appendChild('<p>'.pht('You must login to continue.').'</p>');
|
||||
$dialog->addSubmitButton(pht('Login'));
|
||||
$dialog->addCancelButton('/', pht('Cancel'));
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
}
|
||||
|
@ -62,10 +62,10 @@ final class PhabricatorLoginController
|
|||
$request->clearCookie('phsid');
|
||||
|
||||
$error_view = new AphrontErrorView();
|
||||
$error_view->setTitle('Invalid Session');
|
||||
$error_view->setTitle(pht('Invalid Session'));
|
||||
$error_view->setErrors(array(
|
||||
"Your login session is invalid. Try logging in again. If that ".
|
||||
"doesn't work, clear your browser cookies."
|
||||
pht("Your login session is invalid. Try logging in again. If that ".
|
||||
"doesn't work, clear your browser cookies.")
|
||||
));
|
||||
}
|
||||
|
||||
|
@ -100,12 +100,12 @@ final class PhabricatorLoginController
|
|||
$require_captcha = true;
|
||||
if (!AphrontFormRecaptchaControl::processCaptcha($request)) {
|
||||
if (AphrontFormRecaptchaControl::hasCaptchaResponse($request)) {
|
||||
$e_captcha = 'Invalid';
|
||||
$errors[] = 'CAPTCHA was not entered correctly.';
|
||||
$e_captcha = pht('Invalid');
|
||||
$errors[] = pht('CAPTCHA was not entered correctly.');
|
||||
} else {
|
||||
$e_captcha = 'Required';
|
||||
$errors[] = 'Too many login failures recently. You must '.
|
||||
'submit a CAPTCHA with your login request.';
|
||||
$e_captcha = pht('Required');
|
||||
$errors[] = pht('Too many login failures recently. You must '.
|
||||
'submit a CAPTCHA with your login request.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ final class PhabricatorLoginController
|
|||
$envelope = new PhutilOpaqueEnvelope($request->getStr('password'));
|
||||
|
||||
if (!$user || !$user->comparePassword($envelope)) {
|
||||
$errors[] = 'Bad username/password.';
|
||||
$errors[] = pht('Bad username/password.');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -160,7 +160,7 @@ final class PhabricatorLoginController
|
|||
|
||||
if ($errors) {
|
||||
$error_view = new AphrontErrorView();
|
||||
$error_view->setTitle('Login Failed');
|
||||
$error_view->setTitle(pht('Login Failed'));
|
||||
$error_view->setErrors($errors);
|
||||
}
|
||||
|
||||
|
@ -170,16 +170,16 @@ final class PhabricatorLoginController
|
|||
->setAction('/login/')
|
||||
->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('Username/Email')
|
||||
->setLabel(pht('Username/Email'))
|
||||
->setName('username_or_email')
|
||||
->setValue($username_or_email))
|
||||
->appendChild(
|
||||
id(new AphrontFormPasswordControl())
|
||||
->setLabel('Password')
|
||||
->setLabel(pht('Password'))
|
||||
->setName('password')
|
||||
->setCaption(
|
||||
'<a href="/login/email/">'.
|
||||
'Forgot your password? / Email Login</a>'));
|
||||
pht('Forgot your password? / Email Login').'</a>'));
|
||||
|
||||
if ($require_captcha) {
|
||||
$form->appendChild(
|
||||
|
@ -190,7 +190,7 @@ final class PhabricatorLoginController
|
|||
$form
|
||||
->appendChild(
|
||||
id(new AphrontFormSubmitControl())
|
||||
->setValue('Login'));
|
||||
->setValue(pht('Login')));
|
||||
|
||||
|
||||
// $panel->setCreateButton('Register New Account', '/login/register/');
|
||||
|
@ -206,18 +206,18 @@ final class PhabricatorLoginController
|
|||
->setAction('/ldap/login/')
|
||||
->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('LDAP username')
|
||||
->setLabel(pht('LDAP username'))
|
||||
->setName('username')
|
||||
->setValue($username_or_email))
|
||||
->appendChild(
|
||||
id(new AphrontFormPasswordControl())
|
||||
->setLabel('Password')
|
||||
->setLabel(pht('Password'))
|
||||
->setName('password'));
|
||||
|
||||
$ldap_form
|
||||
->appendChild(
|
||||
id(new AphrontFormSubmitControl())
|
||||
->setValue('Login'));
|
||||
->setValue(pht('Login')));
|
||||
|
||||
$forms['LDAP Login'] = $ldap_form;
|
||||
}
|
||||
|
@ -243,18 +243,23 @@ final class PhabricatorLoginController
|
|||
// CSRF for logged-out users is vaugely tricky.
|
||||
|
||||
if ($provider->isProviderRegistrationEnabled()) {
|
||||
$title = "Login or Register with {$provider_name}";
|
||||
$body = 'Login or register for Phabricator using your '.
|
||||
phutil_escape_html($provider_name).' account.';
|
||||
$button = "Login or Register with {$provider_name}";
|
||||
$title = pht("Login or Register with %s",
|
||||
phutil_escape_html($provider_name));
|
||||
$body = pht('Login or register for Phabricator using your %s account.',
|
||||
phutil_escape_html($provider_name));
|
||||
$button = pht("Login or Register with %s",
|
||||
phutil_escape_html($provider_name));
|
||||
} else {
|
||||
$title = "Login with {$provider_name}";
|
||||
$body = 'Login to your existing Phabricator account using your '.
|
||||
phutil_escape_html($provider_name).' account.<br /><br />'.
|
||||
'<strong>You can not use '.
|
||||
phutil_escape_html($provider_name).' to register a new '.
|
||||
'account.</strong>';
|
||||
$button = "Login with {$provider_name}";
|
||||
$title = pht("Login with %s",
|
||||
phutil_escape_html($provider_name));
|
||||
$body = pht('Login to your existing Phabricator account using your '.
|
||||
'%s account.', phutil_escape_html($provider_name)).
|
||||
'<br /><br />'.
|
||||
'<strong>'.
|
||||
pht('You can not use %s to register a new account.',
|
||||
phutil_escape_html($provider_name)).
|
||||
'</strong>';
|
||||
$button = pht("Log in with %s", phutil_escape_html($provider_name));
|
||||
}
|
||||
|
||||
$auth_form = new AphrontFormView();
|
||||
|
@ -298,7 +303,7 @@ final class PhabricatorLoginController
|
|||
$panel,
|
||||
),
|
||||
array(
|
||||
'title' => 'Login',
|
||||
'title' => pht('Login'),
|
||||
'device' => true
|
||||
));
|
||||
}
|
||||
|
|
|
@ -48,19 +48,19 @@ final class PhabricatorLoginValidateController
|
|||
$list = '<ul>'.implode("\n", $list).'</ul>';
|
||||
|
||||
$view = new AphrontRequestFailureView();
|
||||
$view->setHeader('Login Failed');
|
||||
$view->setHeader(pht('Login Failed'));
|
||||
$view->appendChild(
|
||||
'<p>Login failed:</p>'.
|
||||
'<p>'.pht('Login failed:').'</p>'.
|
||||
$list.
|
||||
'<p><strong>Clear your cookies</strong> and try again.</p>');
|
||||
'<p>'.pht('<strong>Clear your cookies</strong> and try again.').'</p>');
|
||||
$view->appendChild(
|
||||
'<div class="aphront-failure-continue">'.
|
||||
'<a class="button" href="/login/">Try Again</a>'.
|
||||
'<a class="button" href="/login/">'.pht('Try Again').'</a>'.
|
||||
'</div>');
|
||||
return $this->buildStandardPageResponse(
|
||||
$view,
|
||||
array(
|
||||
'title' => 'Login Failed',
|
||||
'title' => pht('Login Failed'),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -45,9 +45,9 @@ final class PhabricatorLogoutController
|
|||
if ($user->getPHID()) {
|
||||
$dialog = id(new AphrontDialogView())
|
||||
->setUser($user)
|
||||
->setTitle('Log out of Phabricator?')
|
||||
->appendChild('<p>Are you sure you want to log out?</p>')
|
||||
->addSubmitButton('Log Out')
|
||||
->setTitle(pht('Log out of Phabricator?'))
|
||||
->appendChild('<p>'.pht('Are you sure you want to log out?').'</p>')
|
||||
->addSubmitButton(pht('Logout'))
|
||||
->addCancelButton('/');
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
|
|
|
@ -30,21 +30,25 @@ final class PhabricatorMustVerifyEmailController
|
|||
$email->sendVerificationEmail($user);
|
||||
$sent = new AphrontErrorView();
|
||||
$sent->setSeverity(AphrontErrorView::SEVERITY_NOTICE);
|
||||
$sent->setTitle('Email Sent');
|
||||
$sent->appendChild(
|
||||
'<p>Another verification email was sent to <strong>'.
|
||||
phutil_escape_html($email_address).'</strong>.</p>');
|
||||
$sent->setTitle(pht('Email Sent'));
|
||||
$sent->appendChild('<p>'.
|
||||
pht('Another verification email was sent to <strong>%s</strong>.',
|
||||
phutil_escape_html($email_address)).'</p>');
|
||||
}
|
||||
|
||||
$error_view = new AphrontRequestFailureView();
|
||||
$error_view->setHeader('Check Your Email');
|
||||
$error_view->setHeader(pht('Check Your Email'));
|
||||
$error_view->appendChild(
|
||||
'<p>You must verify your email address to login. You should have a new '.
|
||||
'<p>'.
|
||||
pht('You must verify your email address to login. You should have a new '.
|
||||
'email message from Phabricator with verification instructions in your '.
|
||||
'inbox (<strong>'.phutil_escape_html($email_address).'</strong>).</p>');
|
||||
'inbox (<strong>%s</strong>).', phutil_escape_html($email_address)).
|
||||
'</p>');
|
||||
$error_view->appendChild(
|
||||
'<p>If you did not receive an email, you can click the button below '.
|
||||
'to try sending another one.</p>');
|
||||
'<p>'.
|
||||
pht('If you did not receive an email, you can click the button below '.
|
||||
'to try sending another one.').
|
||||
'</p>');
|
||||
$error_view->appendChild(
|
||||
'<div class="aphront-failure-continue">'.
|
||||
phabricator_render_form(
|
||||
|
@ -57,17 +61,18 @@ final class PhabricatorMustVerifyEmailController
|
|||
'button',
|
||||
array(
|
||||
),
|
||||
'Send Another Email')).
|
||||
pht('Send Another Email'))).
|
||||
'</div>');
|
||||
|
||||
|
||||
return $this->buildStandardPageResponse(
|
||||
return $this->buildApplicationPage(
|
||||
array(
|
||||
$sent,
|
||||
$error_view,
|
||||
),
|
||||
array(
|
||||
'title' => 'Must Verify Email',
|
||||
'title' => pht('Must Verify Email'),
|
||||
'device' => true
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -68,15 +68,15 @@ final class PhabricatorOAuthLoginController
|
|||
if ($oauth_info->getUserID() != $current_user->getID()) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($current_user);
|
||||
$dialog->setTitle('Already Linked to Another Account');
|
||||
$dialog->appendChild(
|
||||
hsprintf(
|
||||
'<p>The %s account you just authorized is already linked to '.
|
||||
$dialog->setTitle(pht('Already Linked to Another Account'));
|
||||
$dialog->appendChild('<p>'.
|
||||
pht(
|
||||
'The %s account you just authorized is already linked to '.
|
||||
'another Phabricator account. Before you can associate your %s '.
|
||||
'account with this Phabriactor account, you must unlink it from '.
|
||||
'the Phabricator account it is currently linked to.</p>',
|
||||
$provider_name,
|
||||
$provider_name));
|
||||
phutil_escape_html($provider_name),
|
||||
phutil_escape_html($provider_name))).'</p>';
|
||||
$dialog->addCancelButton($provider->getSettingsPanelURI());
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
|
@ -95,14 +95,15 @@ final class PhabricatorOAuthLoginController
|
|||
if ($existing_oauth) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($current_user);
|
||||
$dialog->setTitle('Already Linked to an Account From This Provider');
|
||||
$dialog->appendChild(
|
||||
hsprintf(
|
||||
'<p>The account you are logged in with is already linked to a %s '.
|
||||
$dialog->setTitle(
|
||||
pht('Already Linked to an Account From This Provider'));
|
||||
$dialog->appendChild('<p>'.
|
||||
pht(
|
||||
'The account you are logged in with is already linked to a %s '.
|
||||
'account. Before you can link it to a different %s account, you '.
|
||||
'must unlink the old account.</p>',
|
||||
$provider_name,
|
||||
$provider_name));
|
||||
phutil_escape_html($provider_name),
|
||||
phutil_escape_html($provider_name))).'</p>';
|
||||
$dialog->addCancelButton($provider->getSettingsPanelURI());
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
}
|
||||
|
@ -110,11 +111,11 @@ final class PhabricatorOAuthLoginController
|
|||
if (!$request->isDialogFormPost()) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($current_user);
|
||||
$dialog->setTitle('Link '.$provider_name.' Account');
|
||||
$dialog->setTitle(pht('Link %s Account', $provider_name));
|
||||
$dialog->appendChild(
|
||||
hsprintf(
|
||||
pht(
|
||||
'<p>Link your %s account to your Phabricator account?</p>',
|
||||
$provider_name));
|
||||
phutil_escape_html($provider_name)));
|
||||
$dialog->addHiddenInput('confirm_token', $provider->getAccessToken());
|
||||
$dialog->addHiddenInput('expires', $oauth_info->getTokenExpires());
|
||||
$dialog->addHiddenInput('state', $this->oauthState);
|
||||
|
@ -168,14 +169,14 @@ final class PhabricatorOAuthLoginController
|
|||
if ($known_email) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($current_user);
|
||||
$dialog->setTitle('Already Linked to Another Account');
|
||||
$dialog->appendChild(
|
||||
hsprintf(
|
||||
'<p>The %s account you just authorized has an email address which '.
|
||||
$dialog->setTitle(pht('Already Linked to Another Account'));
|
||||
$dialog->appendChild('<p>'.
|
||||
pht(
|
||||
'The %s account you just authorized has an email address which '.
|
||||
'is already in use by another Phabricator account. To link the '.
|
||||
'accounts, log in to your Phabricator account and then go to '.
|
||||
'Settings.</p>',
|
||||
$provider_name));
|
||||
'Settings.',
|
||||
phutil_escape_html($provider_name))).'</p>';
|
||||
|
||||
$user = id(new PhabricatorUser())
|
||||
->loadOneWhere('phid = %s', $known_email->getUserPHID());
|
||||
|
@ -189,9 +190,9 @@ final class PhabricatorOAuthLoginController
|
|||
->getProviderName();
|
||||
}
|
||||
$dialog->appendChild(
|
||||
hsprintf(
|
||||
pht(
|
||||
'<p>The account is associated with: %s.</p>',
|
||||
implode(', ', $providers)));
|
||||
implode(', ', phutil_escape_html($providers))));
|
||||
}
|
||||
|
||||
$dialog->addCancelButton('/login/');
|
||||
|
@ -203,14 +204,14 @@ final class PhabricatorOAuthLoginController
|
|||
if (!$provider->isProviderRegistrationEnabled()) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($current_user);
|
||||
$dialog->setTitle('No Account Registration With '.$provider_name);
|
||||
$dialog->appendChild(
|
||||
hsprintf(
|
||||
'<p>You can not register a new account using %s; you can only use '.
|
||||
$dialog->setTitle(pht('No Account Registration with %s', $provider_name));
|
||||
$dialog->appendChild('<p>'.
|
||||
pht(
|
||||
'You can not register a new account using %s; you can only use '.
|
||||
'your %s account to log into an existing Phabricator account which '.
|
||||
'you have registered through other means.</p>',
|
||||
$provider_name,
|
||||
$provider_name));
|
||||
'you have registered through other means.',
|
||||
phutil_escape_html($provider_name),
|
||||
phutil_escape_html($provider_name))).'</p>';
|
||||
$dialog->addCancelButton('/login/');
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
|
@ -242,7 +243,7 @@ final class PhabricatorOAuthLoginController
|
|||
return $this->buildStandardPageResponse(
|
||||
$view,
|
||||
array(
|
||||
'title' => $provider_name.' Auth Failed',
|
||||
'title' => pht('Auth Failed'),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ final class PhabricatorOAuthUnlinkController extends PhabricatorAuthController {
|
|||
|
||||
if ($provider->isProviderLinkPermanent()) {
|
||||
throw new Exception(
|
||||
"You may not unlink accounts from this OAuth provider.");
|
||||
pht("You may not unlink accounts from this OAuth provider."));
|
||||
}
|
||||
|
||||
$provider_key = $provider->getProviderKey();
|
||||
|
@ -33,11 +33,11 @@ final class PhabricatorOAuthUnlinkController extends PhabricatorAuthController {
|
|||
if (!$request->isDialogFormPost()) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($user);
|
||||
$dialog->setTitle('Really unlink account?');
|
||||
$dialog->setTitle(pht('Really unlink account?'));
|
||||
$dialog->appendChild(
|
||||
'<p><strong>You will not be able to login</strong> using this account '.
|
||||
'once you unlink it. Continue?</p>');
|
||||
$dialog->addSubmitButton('Unlink Account');
|
||||
'<p>'.pht('You will not be able to login using this account '.
|
||||
'once you unlink it. Continue?').'</p>');
|
||||
$dialog->addSubmitButton(pht('Unlink Account'));
|
||||
$dialog->addCancelButton($provider->getSettingsPanelURI());
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
|
|
|
@ -45,10 +45,10 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
$user->setUsername($request->getStr('username'));
|
||||
$username = $user->getUsername();
|
||||
if (!strlen($user->getUsername())) {
|
||||
$e_username = 'Required';
|
||||
$errors[] = 'Username is required.';
|
||||
$e_username = pht('Required');
|
||||
$errors[] = pht('Username is required.');
|
||||
} else if (!PhabricatorUser::validateUsername($username)) {
|
||||
$e_username = 'Invalid';
|
||||
$e_username = pht('Invalid');
|
||||
$errors[] = PhabricatorUser::describeValidUsername();
|
||||
} else {
|
||||
$e_username = null;
|
||||
|
@ -57,8 +57,8 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
if (!$new_email) {
|
||||
$new_email = trim($request->getStr('email'));
|
||||
if (!$new_email) {
|
||||
$e_email = 'Required';
|
||||
$errors[] = 'Email is required.';
|
||||
$e_email = pht('Required');
|
||||
$errors[] = pht('Email is required.');
|
||||
} else {
|
||||
$e_email = null;
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
if ($new_email) {
|
||||
$email_ok = PhabricatorUserEmail::isAllowedAddress($new_email);
|
||||
if (!$email_ok) {
|
||||
$e_email = 'Invalid';
|
||||
$e_email = pht('Invalid');
|
||||
$errors[] = PhabricatorUserEmail::describeAllowedAddresses();
|
||||
}
|
||||
}
|
||||
|
@ -75,8 +75,8 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
if (!strlen($user->getRealName())) {
|
||||
$user->setRealName($request->getStr('realname'));
|
||||
if (!strlen($user->getRealName())) {
|
||||
$e_realname = 'Required';
|
||||
$errors[] = 'Real name is required.';
|
||||
$e_realname = pht('Required');
|
||||
$errors[] = pht('Real name is required.');
|
||||
} else {
|
||||
$e_realname = null;
|
||||
}
|
||||
|
@ -142,11 +142,11 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
$new_email);
|
||||
|
||||
if ($same_username) {
|
||||
$e_username = 'Duplicate';
|
||||
$errors[] = 'That username or email is not unique.';
|
||||
$e_username = pht('Duplicate');
|
||||
$errors[] = pht('That username or email is not unique.');
|
||||
} else if ($same_email) {
|
||||
$e_email = 'Duplicate';
|
||||
$errors[] = 'That email is not unique.';
|
||||
$e_email = pht('Duplicate');
|
||||
$errors[] = pht('That email is not unique.');
|
||||
} else {
|
||||
throw $exception;
|
||||
}
|
||||
|
@ -157,7 +157,7 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
$error_view = null;
|
||||
if ($errors) {
|
||||
$error_view = new AphrontErrorView();
|
||||
$error_view->setTitle('Registration Failed');
|
||||
$error_view->setTitle(pht('Registration Failed'));
|
||||
$error_view->setErrors($errors);
|
||||
}
|
||||
|
||||
|
@ -176,7 +176,7 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
->setAction($action_path)
|
||||
->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('Username')
|
||||
->setLabel(pht('Username'))
|
||||
->setName('username')
|
||||
->setValue($user->getUsername())
|
||||
->setError($e_username));
|
||||
|
@ -184,7 +184,7 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
if ($show_email_input) {
|
||||
$form->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('Email')
|
||||
->setLabel(pht('Email'))
|
||||
->setName('email')
|
||||
->setValue($request->getStr('email'))
|
||||
->setCaption(PhabricatorUserEmail::describeAllowedAddresses())
|
||||
|
@ -194,7 +194,7 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
if ($provider->retrieveUserRealName() === null) {
|
||||
$form->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel('Real Name')
|
||||
->setLabel(pht('Real Name'))
|
||||
->setName('realname')
|
||||
->setValue($request->getStr('realname'))
|
||||
->setError($e_realname));
|
||||
|
@ -203,20 +203,22 @@ final class PhabricatorOAuthDefaultRegistrationController
|
|||
$form
|
||||
->appendChild(
|
||||
id(new AphrontFormSubmitControl())
|
||||
->setValue('Create Account'));
|
||||
->setValue(pht('Create Account')));
|
||||
|
||||
$panel = new AphrontPanelView();
|
||||
$panel->setHeader('Create New Account');
|
||||
$panel->setHeader(pht('Create New Account'));
|
||||
$panel->setWidth(AphrontPanelView::WIDTH_FORM);
|
||||
$panel->appendChild($form);
|
||||
$panel->setNoBackground();
|
||||
|
||||
return $this->buildStandardPageResponse(
|
||||
return $this->buildApplicationPage(
|
||||
array(
|
||||
$error_view,
|
||||
$panel,
|
||||
),
|
||||
array(
|
||||
'title' => 'Create New Account',
|
||||
'title' => pht('Create New Account'),
|
||||
'device' => true
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ final class PhabricatorOAuthFailureView extends AphrontView {
|
|||
$diagnose = null;
|
||||
|
||||
$view = new AphrontRequestFailureView();
|
||||
$view->setHeader($provider_name.' Auth Failed');
|
||||
$view->setHeader(pht('%s Auth Failed', $provider_name));
|
||||
if ($this->request) {
|
||||
$view->appendChild(
|
||||
hsprintf(
|
||||
|
@ -79,7 +79,7 @@ final class PhabricatorOAuthFailureView extends AphrontView {
|
|||
$view->appendChild(
|
||||
'<div class="aphront-failure-continue">'.
|
||||
$diagnose.
|
||||
'<a href="/login/" class="button">Continue</a>'.
|
||||
'<a href="/login/" class="button">'.pht('Continue').'</a>'.
|
||||
'</div>');
|
||||
|
||||
return $view->render();
|
||||
|
|
|
@ -84,7 +84,6 @@ final class PhabricatorConfigAllController
|
|||
$nav->appendChild($panel);
|
||||
|
||||
|
||||
|
||||
return $this->buildApplicationPage(
|
||||
$nav,
|
||||
array(
|
||||
|
|
|
@ -72,6 +72,7 @@ final class PhabricatorConfigGroupController
|
|||
$engine->process();
|
||||
|
||||
$list = new PhabricatorObjectItemListView();
|
||||
$list->setStackable();
|
||||
foreach ($options as $option) {
|
||||
$summary = $engine->getOutput($option, 'summary');
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ final class PhabricatorConfigIssueListController
|
|||
private function buildIssueList(array $issues) {
|
||||
assert_instances_of($issues, 'PhabricatorSetupIssue');
|
||||
$list = new PhabricatorObjectItemListView();
|
||||
$list->setStackable();
|
||||
|
||||
foreach ($issues as $issue) {
|
||||
$href = $this->getApplicationURI('/issue/'.$issue->getIssueKey().'/');
|
||||
|
|
|
@ -46,6 +46,7 @@ final class PhabricatorConfigListController
|
|||
assert_instances_of($groups, 'PhabricatorApplicationConfigOptions');
|
||||
|
||||
$list = new PhabricatorObjectItemListView();
|
||||
$list->setStackable();
|
||||
$groups = msort($groups, 'getName');
|
||||
foreach ($groups as $group) {
|
||||
$item = id(new PhabricatorObjectItemView())
|
||||
|
|
|
@ -235,6 +235,13 @@ EODOC
|
|||
pht(
|
||||
'Controls whether Phabricator sends email "From" users.'))
|
||||
->setDescription($send_as_user_desc),
|
||||
$this->newOption(
|
||||
'metamta.reply-handler-domain',
|
||||
'string',
|
||||
'phabricator.example.com')
|
||||
->setDescription(pht(
|
||||
'Domain used for reply email addresses. Some applications can '.
|
||||
'configure this domain.')),
|
||||
$this->newOption('metamta.reply.show-hints', 'bool', true)
|
||||
->setBoolOptions(
|
||||
array(
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
final class ConpherenceConfigOptions
|
||||
extends PhabricatorApplicationConfigOptions {
|
||||
|
||||
public function getName() {
|
||||
return pht('Copherence');
|
||||
}
|
||||
|
||||
public function getDescription() {
|
||||
return pht('Configure Conpherence messaging.');
|
||||
}
|
||||
|
||||
public function getOptions() {
|
||||
return array(
|
||||
$this->newOption(
|
||||
'metamta.conpherence.subject-prefix',
|
||||
'string',
|
||||
'[Conpherence]')
|
||||
->setDescription(pht('Subject prefix for Conpherence mail.')),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
|
@ -65,9 +65,8 @@ abstract class ConpherenceController extends PhabricatorController {
|
|||
}
|
||||
|
||||
$unread_status = ConpherenceParticipationStatus::BEHIND;
|
||||
$unread_participant_query = id(new ConpherenceParticipantQuery())
|
||||
->withParticipantPHIDs(array($user->getPHID()));
|
||||
$unread = $unread_participant_query
|
||||
$unread = id(new ConpherenceParticipantQuery())
|
||||
->withParticipantPHIDs(array($user->getPHID()))
|
||||
->withParticipationStatus($unread_status)
|
||||
->execute();
|
||||
|
||||
|
|
|
@ -41,11 +41,7 @@ final class ConpherenceListController extends
|
|||
}
|
||||
$this->setSelectedConpherencePHID($conpherence->getPHID());
|
||||
|
||||
$read_status = ConpherenceParticipationStatus::UP_TO_DATE;
|
||||
$participant = $conpherence->getParticipant($user->getPHID());
|
||||
$write_guard = AphrontWriteGuard::beginScopedUnguardedWrites();
|
||||
$participant->markUpToDate();
|
||||
unset($write_guard);
|
||||
$current_selection_epoch = $participant->getDateTouched();
|
||||
}
|
||||
|
||||
|
|
|
@ -60,6 +60,11 @@ final class ConpherenceNewController extends ConpherenceController {
|
|||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(ConpherenceTransactionType::TYPE_PARTICIPANTS)
|
||||
->setNewValue(array('+' => $participants));
|
||||
if ($files) {
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(ConpherenceTransactionType::TYPE_FILES)
|
||||
->setNewValue(array('+' => mpull($files, 'getPHID')));
|
||||
}
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(PhabricatorTransactions::TYPE_COMMENT)
|
||||
->attachComment(
|
||||
|
@ -67,11 +72,6 @@ final class ConpherenceNewController extends ConpherenceController {
|
|||
->setContent($message)
|
||||
->setConpherencePHID($conpherence->getPHID())
|
||||
);
|
||||
if ($files) {
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(ConpherenceTransactionType::TYPE_FILES)
|
||||
->setNewValue(array('+' => mpull($files, 'getPHID')));
|
||||
}
|
||||
$content_source = PhabricatorContentSource::newForSource(
|
||||
PhabricatorContentSource::SOURCE_WEB,
|
||||
array(
|
||||
|
|
|
@ -35,7 +35,7 @@ final class ConpherenceUpdateController extends
|
|||
|
||||
$updated = false;
|
||||
$error_view = null;
|
||||
$e_image = null;
|
||||
$e_file = array();
|
||||
$errors = array();
|
||||
if ($request->isFormPost()) {
|
||||
$content_source = PhabricatorContentSource::newForSource(
|
||||
|
@ -43,41 +43,21 @@ final class ConpherenceUpdateController extends
|
|||
array(
|
||||
'ip' => $request->getRemoteAddr()
|
||||
));
|
||||
$editor = id(new ConpherenceEditor())
|
||||
->setContentSource($content_source)
|
||||
->setActor($user);
|
||||
|
||||
$action = $request->getStr('action');
|
||||
switch ($action) {
|
||||
case 'message':
|
||||
$message = $request->getStr('text');
|
||||
$files = array();
|
||||
$file_phids =
|
||||
PhabricatorMarkupEngine::extractFilePHIDsFromEmbeddedFiles(
|
||||
array($message)
|
||||
);
|
||||
if ($file_phids) {
|
||||
$files = id(new PhabricatorFileQuery())
|
||||
->setViewer($user)
|
||||
->withPHIDs($file_phids)
|
||||
->execute();
|
||||
}
|
||||
$xactions = array();
|
||||
if ($files) {
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(ConpherenceTransactionType::TYPE_FILES)
|
||||
->setNewValue(array('+' => mpull($files, 'getPHID')));
|
||||
}
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(PhabricatorTransactions::TYPE_COMMENT)
|
||||
->attachComment(
|
||||
id(new ConpherenceTransactionComment())
|
||||
->setContent($message)
|
||||
->setConpherencePHID($conpherence->getPHID())
|
||||
);
|
||||
$xactions = $editor->generateTransactionsFromText(
|
||||
$conpherence,
|
||||
$message
|
||||
);
|
||||
$time = time();
|
||||
$conpherence->openTransaction();
|
||||
$xactions = id(new ConpherenceEditor())
|
||||
->setContentSource($content_source)
|
||||
->setActor($user)
|
||||
->applyTransactions($conpherence, $xactions);
|
||||
$xactions = $editor->applyTransactions($conpherence, $xactions);
|
||||
$last_xaction = end($xactions);
|
||||
$xaction_phid = $last_xaction->getPHID();
|
||||
$behind = ConpherenceParticipationStatus::BEHIND;
|
||||
|
@ -100,37 +80,30 @@ final class ConpherenceUpdateController extends
|
|||
break;
|
||||
case 'metadata':
|
||||
$xactions = array();
|
||||
$default_image = $request->getExists('default_image');
|
||||
if ($default_image) {
|
||||
$image_phid = null;
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(ConpherenceTransactionType::TYPE_PICTURE)
|
||||
->setNewValue($image_phid);
|
||||
} else if (!empty($_FILES['image'])) {
|
||||
$err = idx($_FILES['image'], 'error');
|
||||
if ($err != UPLOAD_ERR_NO_FILE) {
|
||||
$file = PhabricatorFile::newFromPHPUpload(
|
||||
$_FILES['image'],
|
||||
array(
|
||||
'authorPHID' => $user->getPHID(),
|
||||
));
|
||||
$okay = $file->isTransformableImage();
|
||||
if ($okay) {
|
||||
$xformer = new PhabricatorImageTransformer();
|
||||
$xformed = $xformer->executeThumbTransform(
|
||||
$file,
|
||||
$x = 50,
|
||||
$y = 50);
|
||||
$image_phid = $xformed->getPHID();
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(ConpherenceTransactionType::TYPE_PICTURE)
|
||||
->setNewValue($image_phid);
|
||||
} else {
|
||||
$e_image = pht('Not Supported');
|
||||
$errors[] =
|
||||
pht('This server only supports these image formats: %s.',
|
||||
$images = $request->getArr('image');
|
||||
if ($images) {
|
||||
// just take the first one
|
||||
$file_phid = reset($images);
|
||||
$file = id(new PhabricatorFileQuery())
|
||||
->setViewer($user)
|
||||
->withPHIDs(array($file_phid))
|
||||
->executeOne();
|
||||
$okay = $file->isTransformableImage();
|
||||
if ($okay) {
|
||||
$xformer = new PhabricatorImageTransformer();
|
||||
$xformed = $xformer->executeThumbTransform(
|
||||
$file,
|
||||
$x = 50,
|
||||
$y = 50);
|
||||
$image_phid = $xformed->getPHID();
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(ConpherenceTransactionType::TYPE_PICTURE)
|
||||
->setNewValue($image_phid);
|
||||
} else {
|
||||
$e_file[] = $file;
|
||||
$errors[] =
|
||||
pht('This server only supports these image formats: %s.',
|
||||
implode(', ', $supported_formats));
|
||||
}
|
||||
}
|
||||
}
|
||||
$title = $request->getStr('title');
|
||||
|
@ -142,9 +115,7 @@ final class ConpherenceUpdateController extends
|
|||
|
||||
if ($xactions) {
|
||||
$conpherence->openTransaction();
|
||||
$xactions = id(new ConpherenceEditor())
|
||||
->setContentSource($content_source)
|
||||
->setActor($user)
|
||||
$xactions = $editor
|
||||
->setContinueOnNoEffect(true)
|
||||
->applyTransactions($conpherence, $xactions);
|
||||
$updated = $conpherence->saveTransaction();
|
||||
|
@ -169,6 +140,7 @@ final class ConpherenceUpdateController extends
|
|||
if ($errors) {
|
||||
$error_view = id(new AphrontErrorView())
|
||||
->setTitle(pht('Errors editing conpherence.'))
|
||||
->setInsideDialogue(true)
|
||||
->setErrors($errors);
|
||||
}
|
||||
|
||||
|
@ -190,29 +162,26 @@ final class ConpherenceUpdateController extends
|
|||
)
|
||||
)
|
||||
->appendChild(
|
||||
id(new AphrontFormImageControl())
|
||||
id(new AphrontFormDragAndDropUploadControl())
|
||||
->setLabel(pht('Change Image'))
|
||||
->setName('image')
|
||||
->setValue($e_file)
|
||||
->setCaption('Supported formats: '.implode(', ', $supported_formats))
|
||||
->setError($e_image)
|
||||
);
|
||||
);
|
||||
|
||||
// TODO -- fix javelin so we can upload files from a workflow
|
||||
require_celerity_resource('conpherence-update-css');
|
||||
return $this->buildStandardPageResponse(
|
||||
array(
|
||||
$error_view,
|
||||
return id(new AphrontDialogResponse())
|
||||
->setDialog(
|
||||
id(new AphrontDialogView())
|
||||
->setUser($user)
|
||||
->setTitle(pht('Update Conpherence'))
|
||||
->setWidth(AphrontDialogView::WIDTH_FORM)
|
||||
->setSubmitURI($this->getApplicationURI('update/'.$conpherence_id.'/'))
|
||||
->addHiddenInput('action', 'metadata')
|
||||
->appendChild($error_view)
|
||||
->appendChild($form)
|
||||
->addSubmitButton()
|
||||
->addCancelButton($this->getApplicationURI($conpherence->getID().'/')),
|
||||
),
|
||||
array()
|
||||
);
|
||||
->addCancelButton($this->getApplicationURI($conpherence->getID().'/'))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,8 +49,10 @@ final class ConpherenceViewController extends
|
|||
$this->setConpherence($conpherence);
|
||||
|
||||
$participant = $conpherence->getParticipant($user->getPHID());
|
||||
$transactions = $conpherence->getTransactions();
|
||||
$latest_transaction = end($transactions);
|
||||
$write_guard = AphrontWriteGuard::beginScopedUnguardedWrites();
|
||||
$participant->markUpToDate();
|
||||
$participant->markUpToDate($latest_transaction);
|
||||
unset($write_guard);
|
||||
|
||||
$header = $this->renderHeaderPaneContent();
|
||||
|
@ -69,13 +71,14 @@ final class ConpherenceViewController extends
|
|||
$edit_href = $this->getApplicationURI('update/'.$conpherence->getID().'/');
|
||||
|
||||
$header =
|
||||
phutil_render_tag(
|
||||
javelin_render_tag(
|
||||
'a',
|
||||
array(
|
||||
'class' => 'edit',
|
||||
'href' => $edit_href,
|
||||
'sigil' => 'workflow',
|
||||
),
|
||||
pht('edit...')
|
||||
''
|
||||
).
|
||||
phutil_render_tag(
|
||||
'div',
|
||||
|
@ -112,6 +115,9 @@ final class ConpherenceViewController extends
|
|||
|
||||
$transactions = $conpherence->getTransactions();
|
||||
foreach ($transactions as $transaction) {
|
||||
if ($transaction->shouldHide()) {
|
||||
continue;
|
||||
}
|
||||
$rendered_transactions[] = id(new ConpherenceTransactionView())
|
||||
->setUser($user)
|
||||
->setConpherenceTransaction($transaction)
|
||||
|
|
|
@ -5,6 +5,42 @@
|
|||
*/
|
||||
final class ConpherenceEditor extends PhabricatorApplicationTransactionEditor {
|
||||
|
||||
public function generateTransactionsFromText(
|
||||
ConpherenceThread $conpherence,
|
||||
$text) {
|
||||
|
||||
$files = array();
|
||||
$file_phids =
|
||||
PhabricatorMarkupEngine::extractFilePHIDsFromEmbeddedFiles(
|
||||
array($text)
|
||||
);
|
||||
// Since these are extracted from text, we might be re-including the
|
||||
// same file -- e.g. a mock under discussion. Filter files we
|
||||
// already have.
|
||||
$existing_file_phids = $conpherence->getFilePHIDs();
|
||||
$file_phids = array_diff($file_phids, $existing_file_phids);
|
||||
if ($file_phids) {
|
||||
$files = id(new PhabricatorFileQuery())
|
||||
->setViewer($this->getActor())
|
||||
->withPHIDs($file_phids)
|
||||
->execute();
|
||||
}
|
||||
$xactions = array();
|
||||
if ($files) {
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(ConpherenceTransactionType::TYPE_FILES)
|
||||
->setNewValue(array('+' => mpull($files, 'getPHID')));
|
||||
}
|
||||
$xactions[] = id(new ConpherenceTransaction())
|
||||
->setTransactionType(PhabricatorTransactions::TYPE_COMMENT)
|
||||
->attachComment(
|
||||
id(new ConpherenceTransactionComment())
|
||||
->setContent($text)
|
||||
->setConpherencePHID($conpherence->getPHID())
|
||||
);
|
||||
return $xactions;
|
||||
}
|
||||
|
||||
public function getTransactionTypes() {
|
||||
$types = parent::getTransactionTypes();
|
||||
|
||||
|
@ -120,33 +156,40 @@ final class ConpherenceEditor extends PhabricatorApplicationTransactionEditor {
|
|||
}
|
||||
|
||||
protected function supportsMail() {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* TODO
|
||||
|
||||
protected function buildReplyHandler(PhabricatorLiskDAO $object) {
|
||||
return id(new ConpherenceReplyHandler())
|
||||
->setActor($this->getActor())
|
||||
->setMailReceiver($object);
|
||||
}
|
||||
|
||||
protected function buildMailTemplate(PhabricatorLiskDAO $object) {
|
||||
$id = $object->getID();
|
||||
$title = $object->getTitle();
|
||||
if (!$title) {
|
||||
$title = pht(
|
||||
'%s sent you a message.',
|
||||
$this->getActor()->getUserName()
|
||||
);
|
||||
}
|
||||
$phid = $object->getPHID();
|
||||
$original_name = $object->getOriginalName();
|
||||
|
||||
return id(new PhabricatorMetaMTAMail())
|
||||
->setSubject("C{$id}: {$title}")
|
||||
->addHeader('Thread-Topic', "C{$id}: {$phid}");
|
||||
->setSubject("E{$id}: {$title}")
|
||||
->addHeader('Thread-Topic', "E{$id}: {$phid}");
|
||||
}
|
||||
|
||||
protected function getMailTo(PhabricatorLiskDAO $object) {
|
||||
$participants = $object->getParticipants();
|
||||
$participants[$this->requireActor()->getPHID()] = true;
|
||||
return array_keys($participants);
|
||||
}
|
||||
|
||||
protected function getMailCC(PhabricatorLiskDAO $object) {
|
||||
return array();
|
||||
}
|
||||
|
||||
protected function buildMailBody(
|
||||
PhabricatorLiskDAO $object,
|
||||
array $xactions) {
|
||||
|
@ -162,7 +205,6 @@ final class ConpherenceEditor extends PhabricatorApplicationTransactionEditor {
|
|||
protected function getMailSubjectPrefix() {
|
||||
return PhabricatorEnv::getEnvConfig('metamta.conpherence.subject-prefix');
|
||||
}
|
||||
*/
|
||||
|
||||
protected function supportsFeed() {
|
||||
return false;
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @group conpherence
|
||||
*/
|
||||
final class ConpherenceReplyHandler extends PhabricatorMailReplyHandler {
|
||||
|
||||
public function validateMailReceiver($mail_receiver) {
|
||||
if (!($mail_receiver instanceof ConpherenceThread)) {
|
||||
throw new Exception("Mail receiver is not a ConpherenceThread!");
|
||||
}
|
||||
}
|
||||
|
||||
public function getPrivateReplyHandlerEmailAddress(
|
||||
PhabricatorObjectHandle $handle) {
|
||||
return $this->getDefaultPrivateReplyHandlerEmailAddress($handle, 'E');
|
||||
}
|
||||
|
||||
public function getPublicReplyHandlerEmailAddress() {
|
||||
return $this->getDefaultPublicReplyHandlerEmailAddress('E');
|
||||
}
|
||||
|
||||
public function getReplyHandlerInstructions() {
|
||||
if ($this->supportsReplies()) {
|
||||
return pht('Reply to comment and attach files.');
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) {
|
||||
$conpherence = $this->getMailReceiver();
|
||||
$user = $this->getActor();
|
||||
if (!$conpherence->getPHID()) {
|
||||
$conpherence
|
||||
->attachParticipants(array())
|
||||
->attachFilePHIDs(array());
|
||||
} else {
|
||||
$edge_type = PhabricatorEdgeConfig::TYPE_OBJECT_HAS_FILE;
|
||||
$file_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
|
||||
$conpherence->getPHID(),
|
||||
$edge_type
|
||||
);
|
||||
$conpherence->attachFilePHIDs($file_phids);
|
||||
$participants = id(new ConpherenceParticipant())
|
||||
->loadAllWhere('conpherencePHID = %s', $conpherence->getPHID());
|
||||
$participants = mpull($participants, null, 'getParticipantPHID');
|
||||
$conpherence->attachParticipants($participants);
|
||||
}
|
||||
|
||||
$content_source = PhabricatorContentSource::newForSource(
|
||||
PhabricatorContentSource::SOURCE_EMAIL,
|
||||
array(
|
||||
'id' => $mail->getID(),
|
||||
));
|
||||
|
||||
$editor = id(new ConpherenceEditor())
|
||||
->setActor($user)
|
||||
->setContentSource($content_source)
|
||||
->setParentMessageID($mail->getMessageID());
|
||||
|
||||
$body = $mail->getCleanTextBody();
|
||||
$body = trim($body);
|
||||
$file_phids = $mail->getAttachments();
|
||||
$body = $this->enhanceBodyWithAttachments(
|
||||
$body,
|
||||
$file_phids,
|
||||
'{F%d}'
|
||||
);
|
||||
$xactions = $editor->generateTransactionsFromText(
|
||||
$conpherence,
|
||||
$body
|
||||
);
|
||||
|
||||
$editor->applyTransactions($conpherence, $xactions);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -11,9 +11,10 @@ final class ConpherenceParticipant extends ConpherenceDAO {
|
|||
protected $behindTransactionPHID;
|
||||
protected $dateTouched;
|
||||
|
||||
public function markUpToDate() {
|
||||
public function markUpToDate(ConpherenceTransaction $xaction) {
|
||||
if (!$this->isUpToDate()) {
|
||||
$this->setParticipationStatus(ConpherenceParticipationStatus::UP_TO_DATE);
|
||||
$this->setBehindTransactionPHID($xaction->getPHID());
|
||||
$this->save();
|
||||
}
|
||||
return $this;
|
||||
|
|
|
@ -189,15 +189,18 @@ final class ConpherenceThread extends ConpherenceDAO
|
|||
}
|
||||
// fallthrough intentionally here
|
||||
case ConpherenceTransactionType::TYPE_FILES:
|
||||
default:
|
||||
if ($behind_transaction_phid &&
|
||||
$transaction->getPHID() != $behind_transaction_phid) {
|
||||
$unread_count++;
|
||||
if ($behind_transaction_phid) {
|
||||
$unread_count++;
|
||||
if ($transaction->getPHID() == $behind_transaction_phid) {
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
if ($unread_count > $max_count) {
|
||||
break 2;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
continue 2;
|
||||
}
|
||||
if ($snippet && !$behind_transaction_phid) {
|
||||
break;
|
||||
|
|
|
@ -29,8 +29,9 @@ final class ConpherenceTransaction extends PhabricatorApplicationTransaction {
|
|||
return ($old === null);
|
||||
case ConpherenceTransactionType::TYPE_TITLE:
|
||||
case ConpherenceTransactionType::TYPE_PICTURE:
|
||||
case ConpherenceTransactionType::TYPE_FILES:
|
||||
return false;
|
||||
case ConpherenceTransactionType::TYPE_FILES:
|
||||
return true;
|
||||
}
|
||||
|
||||
return parent::shouldHide();
|
||||
|
|
|
@ -109,7 +109,7 @@ final class DifferentialCommentEditor extends PhabricatorEditor {
|
|||
$revision->loadRelationships();
|
||||
$reviewer_phids = $revision->getReviewers();
|
||||
if ($reviewer_phids) {
|
||||
$reviewer_phids = array_combine($reviewer_phids, $reviewer_phids);
|
||||
$reviewer_phids = array_fuse($reviewer_phids);
|
||||
}
|
||||
|
||||
$metadata = array();
|
||||
|
|
|
@ -36,9 +36,9 @@ final class PhabricatorMacroListController
|
|||
if ($has_search) {
|
||||
$macros = queryfx_all(
|
||||
$conn,
|
||||
'SELECT m.*
|
||||
FROM '.implode(' JOIN ', $join).'
|
||||
WHERE '.implode(' AND ', $where));
|
||||
'SELECT m.* FROM %Q WHERE %Q',
|
||||
implode(' JOIN ', $join),
|
||||
implode(' AND ', $where));
|
||||
$macros = $macro_table->loadAllFromArray($macros);
|
||||
$nodata = pht('There are no macros matching the filter.');
|
||||
} else {
|
||||
|
@ -65,7 +65,7 @@ final class PhabricatorMacroListController
|
|||
}
|
||||
|
||||
if ($authors) {
|
||||
$author_phids = array_combine($authors, $authors);
|
||||
$author_phids = array_fuse($authors);
|
||||
} else {
|
||||
$author_phids = array();
|
||||
}
|
||||
|
|
|
@ -28,6 +28,12 @@ final class PhabricatorMetaMTAReceiveController
|
|||
array(
|
||||
'text' => $request->getStr('body'),
|
||||
));
|
||||
|
||||
// Make up some unique value, since this column isn't nullable.
|
||||
$received->setMessageIDHash(
|
||||
PhabricatorHash::digestForIndex(
|
||||
Filesystem::readRandomBytes(12)));
|
||||
|
||||
$received->save();
|
||||
|
||||
$received->processReceivedMail();
|
||||
|
|
|
@ -39,6 +39,8 @@ final class PhabricatorMetaMTASendGridReceiveController
|
|||
'text' => $request->getStr('text'),
|
||||
'html' => $request->getStr('from'),
|
||||
));
|
||||
$received->setMessageIDHash(
|
||||
PhabricatorHash::digestForIndex($received->getMessageID()));
|
||||
|
||||
$file_phids = array();
|
||||
foreach ($_FILES as $file_raw) {
|
||||
|
|
|
@ -37,7 +37,11 @@ abstract class PhabricatorMailReplyHandler {
|
|||
abstract public function validateMailReceiver($mail_receiver);
|
||||
abstract public function getPrivateReplyHandlerEmailAddress(
|
||||
PhabricatorObjectHandle $handle);
|
||||
abstract public function getReplyHandlerDomain();
|
||||
public function getReplyHandlerDomain() {
|
||||
return PhabricatorEnv::getEnvConfig(
|
||||
'metamta.reply-handler-domain'
|
||||
);
|
||||
}
|
||||
abstract public function getReplyHandlerInstructions();
|
||||
abstract protected function receiveEmail(
|
||||
PhabricatorMetaMTAReceivedMail $mail);
|
||||
|
@ -291,8 +295,10 @@ EOBODY;
|
|||
return $this->getSingleReplyHandlerPrefix($address);
|
||||
}
|
||||
|
||||
final protected function enhanceBodyWithAttachments($body,
|
||||
array $attachments) {
|
||||
final protected function enhanceBodyWithAttachments(
|
||||
$body,
|
||||
array $attachments,
|
||||
$format = '- {F%d, layout=link}') {
|
||||
if (!$attachments) {
|
||||
return $body;
|
||||
}
|
||||
|
@ -306,7 +312,7 @@ EOBODY;
|
|||
}
|
||||
|
||||
foreach ($files as $file) {
|
||||
$file_str = sprintf('- {F%d, layout=link}', $file->getID());
|
||||
$file_str = sprintf($format, $file->getID());
|
||||
$body .= $file_str."\n";
|
||||
}
|
||||
|
||||
|
|
|
@ -804,7 +804,7 @@ final class PhabricatorMetaMTAMail extends PhabricatorMetaMTADAO {
|
|||
return array();
|
||||
}
|
||||
|
||||
$phids = array_combine($phids, $phids);
|
||||
$phids = array_fuse($phids);
|
||||
|
||||
|
||||
// Exclude PHIDs explicitly marked for exclusion. We use this to prevent
|
||||
|
|
|
@ -93,7 +93,7 @@ final class PhabricatorMetaMTAReceivedMail extends PhabricatorMetaMTADAO {
|
|||
$prefixPattern = ($single_handle_prefix)
|
||||
? preg_quote($single_handle_prefix, '/') . '\+'
|
||||
: '';
|
||||
$pattern = "/^{$prefixPattern}((?:D|T|C)\d+)\+([\w]+)\+([a-f0-9]{16})@/U";
|
||||
$pattern = "/^{$prefixPattern}((?:D|T|C|E)\d+)\+([\w]+)\+([a-f0-9]{16})@/U";
|
||||
|
||||
$phabricator_address = null;
|
||||
$receiver_name = null;
|
||||
|
@ -276,10 +276,7 @@ final class PhabricatorMetaMTAReceivedMail extends PhabricatorMetaMTADAO {
|
|||
|
||||
$expect_hash = self::computeMailHash($receiver->getMailKey(), $check_phid);
|
||||
|
||||
// See note at computeOldMailHash().
|
||||
$old_hash = self::computeOldMailHash($receiver->getMailKey(), $check_phid);
|
||||
|
||||
if ($expect_hash != $hash && $old_hash != $hash) {
|
||||
if ($expect_hash != $hash) {
|
||||
return $this->setMessage("Invalid mail hash!")->save();
|
||||
}
|
||||
|
||||
|
@ -292,6 +289,9 @@ final class PhabricatorMetaMTAReceivedMail extends PhabricatorMetaMTADAO {
|
|||
} else if ($receiver instanceof PhabricatorRepositoryCommit) {
|
||||
$handler = PhabricatorAuditCommentEditor::newReplyHandlerForCommit(
|
||||
$receiver);
|
||||
} else if ($receiver instanceof ConpherenceThread) {
|
||||
$handler = id(new ConpherenceReplyHandler())
|
||||
->setMailReceiver($receiver);
|
||||
}
|
||||
|
||||
$handler->setActor($user);
|
||||
|
@ -334,6 +334,9 @@ final class PhabricatorMetaMTAReceivedMail extends PhabricatorMetaMTADAO {
|
|||
case 'C':
|
||||
$class_obj = new PhabricatorRepositoryCommit();
|
||||
break;
|
||||
case 'E':
|
||||
$class_obj = new ConpherenceThread();
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
@ -348,20 +351,6 @@ final class PhabricatorMetaMTAReceivedMail extends PhabricatorMetaMTADAO {
|
|||
return substr($hash, 0, 16);
|
||||
}
|
||||
|
||||
public static function computeOldMailHash($mail_key, $phid) {
|
||||
|
||||
// TODO: Remove this method entirely in a couple of months. We've moved from
|
||||
// plain sha1 to sha1+hmac to make the codebase more auditable for good uses
|
||||
// of hash functions, but still accept the old hashes on email replies to
|
||||
// avoid breaking things. Once we've been sending only hmac hashes for a
|
||||
// while, remove this and start rejecting old hashes. See T547.
|
||||
|
||||
$global_mail_key = PhabricatorEnv::getEnvConfig('phabricator.mail-key');
|
||||
|
||||
$hash = sha1($mail_key.$global_mail_key.$phid);
|
||||
return substr($hash, 0, 16);
|
||||
}
|
||||
|
||||
/**
|
||||
* Strip an email address down to the actual user@domain.tld part if
|
||||
* necessary, since sometimes it will have formatting like
|
||||
|
|
|
@ -388,7 +388,7 @@ final class PhabricatorObjectHandleData {
|
|||
if (empty($entries[$phid])) {
|
||||
$handle->setName('Unknown Config Entry');
|
||||
} else {
|
||||
$entry = $entry[$phid];
|
||||
$entry = $entries[$phid];
|
||||
$handle->setName($entry->getKey());
|
||||
$handle->setURI('/config/edit/'.$entry->getKey());
|
||||
$handle->setFullName($entry->getKey());
|
||||
|
|
|
@ -16,7 +16,8 @@ final class PholioMockListController extends PholioController {
|
|||
$user = $request->getUser();
|
||||
|
||||
$query = id(new PholioMockQuery())
|
||||
->setViewer($user);
|
||||
->setViewer($user)
|
||||
->needCoverFiles(true);
|
||||
|
||||
$nav = $this->buildSideNav();
|
||||
$filter = $nav->selectFilter('view/'.$this->view, 'view/all');
|
||||
|
@ -38,7 +39,8 @@ final class PholioMockListController extends PholioController {
|
|||
$board->addItem(
|
||||
id(new PhabricatorPinboardItemView())
|
||||
->setHeader($mock->getName())
|
||||
->setURI('/M'.$mock->getID()));
|
||||
->setURI('/M'.$mock->getID())
|
||||
->setImageURI($mock->getCoverFile()->getThumb160x120URI()));
|
||||
}
|
||||
|
||||
$header = id(new PhabricatorHeaderView())
|
||||
|
|
|
@ -18,6 +18,8 @@ final class PholioMockViewController extends PholioController {
|
|||
$mock = id(new PholioMockQuery())
|
||||
->setViewer($user)
|
||||
->withIDs(array($this->id))
|
||||
->needImages(true)
|
||||
->needCoverFiles(true)
|
||||
->executeOne();
|
||||
|
||||
if (!$mock) {
|
||||
|
|
|
@ -10,6 +10,9 @@ final class PholioMockQuery
|
|||
private $phids;
|
||||
private $authorPHIDs;
|
||||
|
||||
private $needCoverFiles;
|
||||
private $needImages;
|
||||
|
||||
public function withIDs(array $ids) {
|
||||
$this->ids = $ids;
|
||||
return $this;
|
||||
|
@ -37,7 +40,17 @@ final class PholioMockQuery
|
|||
$this->buildOrderClause($conn_r),
|
||||
$this->buildLimitClause($conn_r));
|
||||
|
||||
return $table->loadAllFromArray($data);
|
||||
$mocks = $table->loadAllFromArray($data);
|
||||
|
||||
if ($mocks && $this->needImages) {
|
||||
$this->loadImages($mocks);
|
||||
}
|
||||
if ($mocks && $this->needCoverFiles) {
|
||||
$this->loadCoverFiles($mocks);
|
||||
}
|
||||
|
||||
|
||||
return $mocks;
|
||||
}
|
||||
|
||||
private function buildWhereClause(AphrontDatabaseConnection $conn_r) {
|
||||
|
@ -69,4 +82,49 @@ final class PholioMockQuery
|
|||
return $this->formatWhereClause($where);
|
||||
}
|
||||
|
||||
public function needCoverFiles($need_cover_files) {
|
||||
$this->needCoverFiles = $need_cover_files;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function needImages($need_images) {
|
||||
$this->needImages = $need_images;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function loadImages(array $mocks) {
|
||||
assert_instances_of($mocks, 'PholioMock');
|
||||
|
||||
$mock_ids = mpull($mocks, 'getID');
|
||||
$all_images = id(new PholioImage())->loadAllWhere(
|
||||
'mockID IN (%Ld)',
|
||||
$mock_ids);
|
||||
|
||||
$file_phids = mpull($all_images, 'getFilePHID');
|
||||
$all_files = mpull(id(new PhabricatorFile())->loadAllWhere(
|
||||
'phid IN (%Ls)',
|
||||
$file_phids), null, 'getPHID');
|
||||
|
||||
foreach ($all_images as $image) {
|
||||
$image->attachFile($all_files[$image->getFilePHID()]);
|
||||
}
|
||||
|
||||
$image_groups = mgroup($all_images, 'getMockID');
|
||||
|
||||
foreach ($mocks as $mock) {
|
||||
$mock->attachImages($image_groups[$mock->getID()]);
|
||||
}
|
||||
}
|
||||
|
||||
public function loadCoverFiles(array $mocks) {
|
||||
assert_instances_of($mocks, 'PholioMock');
|
||||
$cover_file_phids = mpull($mocks, 'getCoverPHID');
|
||||
$cover_files = mpull(id(new PhabricatorFile())->loadAllWhere(
|
||||
'phid IN (%Ls)',
|
||||
$cover_file_phids), null, 'getPHID');
|
||||
|
||||
foreach ($mocks as $mock) {
|
||||
$mock->attachCoverFile($cover_files[$mock->getCoverPHID()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ final class PholioImage extends PholioDAO
|
|||
protected $description = '';
|
||||
protected $sequence;
|
||||
|
||||
private $file;
|
||||
|
||||
/* -( PhabricatorMarkupInterface )----------------------------------------- */
|
||||
|
||||
|
@ -39,4 +40,16 @@ final class PholioImage extends PholioDAO
|
|||
return (bool)$this->getID();
|
||||
}
|
||||
|
||||
public function attachFile(PhabricatorFile $file) {
|
||||
$this->file = $file;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getFile() {
|
||||
if ($this->file === null) {
|
||||
throw new Exception("Call attachFile() before getFile()!");
|
||||
}
|
||||
return $this->file;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,6 +20,9 @@ final class PholioMock extends PholioDAO
|
|||
protected $coverPHID;
|
||||
protected $mailKey;
|
||||
|
||||
private $images;
|
||||
private $coverFile;
|
||||
|
||||
public function getConfiguration() {
|
||||
return array(
|
||||
self::CONFIG_AUX_PHID => true,
|
||||
|
@ -37,6 +40,31 @@ final class PholioMock extends PholioDAO
|
|||
return parent::save();
|
||||
}
|
||||
|
||||
public function attachImages(array $images) {
|
||||
assert_instances_of($images, 'PholioImage');
|
||||
$this->images = $images;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getImages() {
|
||||
if ($this->images === null) {
|
||||
throw new Exception("Call attachImages() before getImages()!");
|
||||
}
|
||||
return $this->images;
|
||||
}
|
||||
|
||||
public function attachCoverFile(PhabricatorFile $file) {
|
||||
$this->coverFile = $file;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCoverFile() {
|
||||
if ($this->coverFile === null) {
|
||||
throw new Exception("Call attachCoverFile() before getCoverFile()!");
|
||||
}
|
||||
return $this->coverFile;
|
||||
}
|
||||
|
||||
|
||||
/* -( PhabricatorSubscribableInterface Implementation )-------------------- */
|
||||
|
||||
|
|
|
@ -13,13 +13,7 @@ final class PholioMockImagesView extends AphrontView {
|
|||
throw new Exception("Call setMock() before render()!");
|
||||
}
|
||||
|
||||
$image = id(new PholioImage())->loadOneWhere(
|
||||
"mockid=%d",
|
||||
$this->mock->getID());
|
||||
|
||||
$file = id(new PhabricatorFile())->loadOneWhere(
|
||||
"phid=%s",
|
||||
$image->getFilePHID());
|
||||
$file = head($this->mock->getImages())->getFile();
|
||||
|
||||
$image_tag = phutil_tag(
|
||||
'img',
|
||||
|
|
|
@ -59,7 +59,7 @@ final class PhortuneMonthYearExpiryControl extends AphrontFormControl {
|
|||
|
||||
$current_year = $this->getCurrentYear();
|
||||
$years = range($current_year, $current_year + 20);
|
||||
$years = array_combine($years, $years);
|
||||
$years = array_fuse($years);
|
||||
|
||||
if ($this->getMonthInputValue()) {
|
||||
$selected_month = $this->getMonthInputValue();
|
||||
|
|
|
@ -215,19 +215,30 @@ final class PhrictionDocumentController
|
|||
|
||||
$slug = PhabricatorSlug::normalize($this->slug);
|
||||
|
||||
return id(new PhabricatorActionListView())
|
||||
$action_view = id(new PhabricatorActionListView())
|
||||
->setUser($user)
|
||||
->setObject($document)
|
||||
->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setName(pht('Edit Document'))
|
||||
->setIcon('edit')
|
||||
->setHref('/phriction/edit/'.$document->getID().'/'))
|
||||
->addAction(
|
||||
->setHref('/phriction/edit/'.$document->getID().'/'));
|
||||
|
||||
if ($document->getStatus() == PhrictionDocumentStatus::STATUS_EXISTS) {
|
||||
$action_view->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setName(pht('View History'))
|
||||
->setIcon('history')
|
||||
->setHref(PhrictionDocument::getSlugURI($slug, 'history')));
|
||||
->setName(pht('Delete Document'))
|
||||
->setIcon('delete')
|
||||
->setHref('/phriction/delete/'.$document->getID().'/')
|
||||
->setWorkflow(true));
|
||||
}
|
||||
|
||||
return
|
||||
$action_view->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setName(pht('View History'))
|
||||
->setIcon('history')
|
||||
->setHref(PhrictionDocument::getSlugURI($slug, 'history')));
|
||||
}
|
||||
|
||||
private function renderChildren($slug) {
|
||||
|
|
|
@ -154,19 +154,9 @@ final class PhrictionEditController
|
|||
->setErrors($errors);
|
||||
}
|
||||
|
||||
$delete_button = null;
|
||||
if ($document->getID()) {
|
||||
$panel_header = 'Edit Phriction Document';
|
||||
$submit_button = 'Save Changes';
|
||||
if ($document->getStatus() != PhrictionDocumentStatus::STATUS_DELETED) {
|
||||
$delete_button = phutil_tag(
|
||||
'a',
|
||||
array(
|
||||
'href' => '/phriction/delete/'.$document->getID().'/',
|
||||
'class' => 'grey button',
|
||||
),
|
||||
'Delete Document');
|
||||
}
|
||||
} else {
|
||||
$panel_header = 'Create New Phriction Document';
|
||||
$submit_button = 'Create Document';
|
||||
|
@ -240,10 +230,6 @@ final class PhrictionEditController
|
|||
->setHeader($panel_header)
|
||||
->appendChild($form);
|
||||
|
||||
if ($delete_button) {
|
||||
$panel->addButton($delete_button);
|
||||
}
|
||||
|
||||
$preview_panel =
|
||||
'<div class="aphront-panel-preview aphront-panel-preview-wide">
|
||||
<div class="phriction-document-preview-header">
|
||||
|
|
|
@ -62,7 +62,7 @@ final class PhabricatorSettingsPanelAccount
|
|||
}
|
||||
|
||||
$timezone_ids = DateTimeZone::listIdentifiers();
|
||||
$timezone_id_map = array_combine($timezone_ids, $timezone_ids);
|
||||
$timezone_id_map = array_fuse($timezone_ids);
|
||||
|
||||
$form = new AphrontFormView();
|
||||
$form
|
||||
|
|
|
@ -15,6 +15,7 @@ abstract class PhabricatorApplicationTransactionEditor
|
|||
private $isNewObject;
|
||||
private $mentionedPHIDs;
|
||||
private $continueOnNoEffect;
|
||||
private $parentMessageID;
|
||||
|
||||
private $isPreview;
|
||||
|
||||
|
@ -40,6 +41,18 @@ abstract class PhabricatorApplicationTransactionEditor
|
|||
return $this->continueOnNoEffect;
|
||||
}
|
||||
|
||||
/**
|
||||
* Not strictly necessary, but reply handlers ideally set this value to
|
||||
* make email threading work better.
|
||||
*/
|
||||
public function setParentMessageID($parent_message_id) {
|
||||
$this->parentMessageID = $parent_message_id;
|
||||
return $this;
|
||||
}
|
||||
public function getParentMessageID() {
|
||||
return $this->parentMessageID;
|
||||
}
|
||||
|
||||
protected function getIsNewObject() {
|
||||
return $this->isNewObject;
|
||||
}
|
||||
|
@ -509,7 +522,7 @@ abstract class PhabricatorApplicationTransactionEditor
|
|||
protected function getPHIDTransactionNewValue(
|
||||
PhabricatorApplicationTransaction $xaction) {
|
||||
|
||||
$old = array_combine($xaction->getOldValue(), $xaction->getOldValue());
|
||||
$old = array_fuse($xaction->getOldValue());
|
||||
|
||||
$new = $xaction->getNewValue();
|
||||
$new_add = idx($new, '+', array());
|
||||
|
@ -518,7 +531,7 @@ abstract class PhabricatorApplicationTransactionEditor
|
|||
unset($new['-']);
|
||||
$new_set = idx($new, '=', null);
|
||||
if ($new_set !== null) {
|
||||
$new_set = array_combine($new_set, $new_set);
|
||||
$new_set = array_fuse($new_set);
|
||||
}
|
||||
unset($new['=']);
|
||||
|
||||
|
@ -669,8 +682,9 @@ abstract class PhabricatorApplicationTransactionEditor
|
|||
->setIsBulk(true)
|
||||
->setBody($body->render());
|
||||
|
||||
// TODO
|
||||
// ->setParentMessageID(...)
|
||||
if ($this->getParentMessageID()) {
|
||||
$template->setParentMessageID($this->getParentMessageID());
|
||||
}
|
||||
|
||||
$mails = $this
|
||||
->buildReplyHandler($object)
|
||||
|
|
|
@ -151,7 +151,7 @@ such as PHID columns. Otherwise, use `COLLATE utf8_general_ci`.
|
|||
- Name all indexes so it is possible to delete them later.
|
||||
# Edit `src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php` and
|
||||
add your patch to @{method@phabricator:PhabricatorBuiltinPatchList::getPatches}.
|
||||
# Run `bin/storage/upgrade`.
|
||||
# Run `bin/storage upgrade`.
|
||||
|
||||
It is also possible to create more complex patches in PHP for data migration
|
||||
(due to schema changes or otherwise.) However, the schema changes themselves
|
||||
|
|
|
@ -91,19 +91,21 @@ involved but may be easier in some deployment environments. Note that this needs
|
|||
to be set in your webserver environment, and also in your shell whenever you
|
||||
run a script:
|
||||
|
||||
# Shell
|
||||
export PHABRICATOR_ENV=custom/exampleconfig
|
||||
```
|
||||
# Shell
|
||||
export PHABRICATOR_ENV=custom/exampleconfig
|
||||
|
||||
# Apache
|
||||
SetEnv PHABRICATOR_ENV custom/exampleconfig
|
||||
# Apache
|
||||
SetEnv PHABRICATOR_ENV custom/exampleconfig
|
||||
|
||||
# nginx
|
||||
fastcgi_param PHABRICATOR_ENV "custom/exampleconfig";
|
||||
# nginx
|
||||
fastcgi_param PHABRICATOR_ENV "custom/exampleconfig";
|
||||
|
||||
# lighttpd
|
||||
setenv.add-environment = (
|
||||
"PHABRICATOR_ENV" => "custom/exampleconfig",
|
||||
)
|
||||
# lighttpd
|
||||
setenv.add-environment = (
|
||||
"PHABRICATOR_ENV" => "custom/exampleconfig",
|
||||
)
|
||||
```
|
||||
|
||||
After creating and selecting a configuration file, restart your webserver. Any
|
||||
configuration you set should take effect immediately, and your file should be
|
||||
|
|
|
@ -87,16 +87,6 @@ final class CeleritySpriteGenerator {
|
|||
$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,
|
||||
|
@ -135,6 +125,25 @@ final class CeleritySpriteGenerator {
|
|||
'y' => 25,
|
||||
'css' => '.phabricator-main-menu-logo-image',
|
||||
),
|
||||
'conf-off' => array(
|
||||
'x' => 14,
|
||||
'y' => 14,
|
||||
'css' =>
|
||||
'.alert-notifications .phabricator-main-menu-message-icon',
|
||||
),
|
||||
'conf-hover' => array(
|
||||
'x' => 14,
|
||||
'y' => 14,
|
||||
'css' =>
|
||||
'.alert-notifications:hover .phabricator-main-menu-message-icon',
|
||||
),
|
||||
'conf-unseen' => array(
|
||||
'x' => 14,
|
||||
'y' => 14,
|
||||
'css' =>
|
||||
'.alert-notifications.message-unread '.
|
||||
'.phabricator-main-menu-message-icon',
|
||||
),
|
||||
);
|
||||
|
||||
$scales = array(
|
||||
|
@ -183,7 +192,7 @@ final class CeleritySpriteGenerator {
|
|||
// 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_fuse($gradients);
|
||||
$gradients = array_select_keys(
|
||||
$gradients,
|
||||
array(
|
||||
|
|
|
@ -102,7 +102,7 @@ abstract class PhabricatorWorker {
|
|||
final public static function waitForTasks(array $task_ids) {
|
||||
$task_table = new PhabricatorWorkerActiveTask();
|
||||
|
||||
$waiting = array_combine($task_ids, $task_ids);
|
||||
$waiting = array_fuse($task_ids);
|
||||
while ($waiting) {
|
||||
$conn_w = $task_table->establishConnection('w');
|
||||
|
||||
|
|
|
@ -55,10 +55,20 @@ final class PhabricatorRemarkupRuleEmbedFile
|
|||
case 'full':
|
||||
$attrs['src'] = $file->getBestURI();
|
||||
$options['image_class'] = null;
|
||||
$file_data = $file->getMetadata();
|
||||
$height = idx($file_data, PhabricatorFile::METADATA_IMAGE_HEIGHT);
|
||||
if ($height) {
|
||||
$attrs['height'] = $height;
|
||||
}
|
||||
$width = idx($file_data, PhabricatorFile::METADATA_IMAGE_WIDTH);
|
||||
if ($width) {
|
||||
$attrs['width'] = $width;
|
||||
}
|
||||
break;
|
||||
case 'thumb':
|
||||
default:
|
||||
$attrs['src'] = $file->getPreview220URI();
|
||||
$attrs['width'] = '220';
|
||||
$options['image_class'] = 'phabricator-remarkup-embed-image';
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -29,10 +29,20 @@ final class PhabricatorRemarkupRuleImageMacro
|
|||
$phid = $this->images[$matches[1]];
|
||||
|
||||
$file = id(new PhabricatorFile())->loadOneWhere('phid = %s', $phid);
|
||||
$style = null;
|
||||
$src_uri = null;
|
||||
if ($file) {
|
||||
$src_uri = $file->getBestURI();
|
||||
} else {
|
||||
$src_uri = null;
|
||||
$file_data = $file->getMetadata();
|
||||
$height = idx($file_data,PhabricatorFile::METADATA_IMAGE_HEIGHT);
|
||||
$width = idx($file_data, PhabricatorFile::METADATA_IMAGE_WIDTH);
|
||||
if ($height && $width) {
|
||||
$style = sprintf(
|
||||
'height: %dpx; width: %dpx;',
|
||||
$height,
|
||||
$width
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$img = phutil_tag(
|
||||
|
@ -41,6 +51,7 @@ final class PhabricatorRemarkupRuleImageMacro
|
|||
'src' => $src_uri,
|
||||
'alt' => $matches[1],
|
||||
'title' => $matches[1],
|
||||
'style' => $style,
|
||||
));
|
||||
return $this->getEngine()->storeText($img);
|
||||
} else {
|
||||
|
|
|
@ -1093,6 +1093,10 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList {
|
|||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20130111.conpherence.sql'),
|
||||
),
|
||||
'20130127.altheraldtranscript.sql' => array(
|
||||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20130127.altheraldtranscript.sql'),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,15 @@ final class AphrontErrorView extends AphrontView {
|
|||
private $errors;
|
||||
private $severity;
|
||||
private $id;
|
||||
private $insideDialogue;
|
||||
|
||||
public function setInsideDialogue($inside_dialogue) {
|
||||
$this->insideDialogue = $inside_dialogue;
|
||||
return $this;
|
||||
}
|
||||
public function getInsideDialogue() {
|
||||
return $this->insideDialogue;
|
||||
}
|
||||
|
||||
public function setTitle($title) {
|
||||
$this->title = $title;
|
||||
|
@ -32,6 +41,15 @@ final class AphrontErrorView extends AphrontView {
|
|||
return $this;
|
||||
}
|
||||
|
||||
private function getBaseClass() {
|
||||
if ($this->getInsideDialogue()) {
|
||||
$class = 'aphront-error-view-dialogue';
|
||||
} else {
|
||||
$class = 'aphront-error-view';
|
||||
}
|
||||
return $class;
|
||||
}
|
||||
|
||||
final public function render() {
|
||||
|
||||
require_celerity_resource('aphront-error-view-css');
|
||||
|
@ -69,15 +87,16 @@ final class AphrontErrorView extends AphrontView {
|
|||
|
||||
$this->severity = nonempty($this->severity, self::SEVERITY_ERROR);
|
||||
|
||||
$more_classes = array();
|
||||
$more_classes[] = 'aphront-error-severity-'.$this->severity;
|
||||
$more_classes = implode(' ', $more_classes);
|
||||
$classes = array();
|
||||
$classes[] = $this->getBaseClass();
|
||||
$classes[] = 'aphront-error-severity-'.$this->severity;
|
||||
$classes = implode(' ', $classes);
|
||||
|
||||
return phutil_render_tag(
|
||||
'div',
|
||||
array(
|
||||
'id' => $this->id,
|
||||
'class' => 'aphront-error-view '.$more_classes,
|
||||
'class' => $classes,
|
||||
),
|
||||
array(
|
||||
$title,
|
||||
|
|
|
@ -181,7 +181,7 @@ final class AphrontFormDateControl extends AphrontFormControl {
|
|||
$max_year = $this->getMaxYear();
|
||||
|
||||
$days = range(1, 31);
|
||||
$days = array_combine($days, $days);
|
||||
$days = array_fuse($days);
|
||||
|
||||
$months = array(
|
||||
1 => 'Jan',
|
||||
|
@ -199,7 +199,7 @@ final class AphrontFormDateControl extends AphrontFormControl {
|
|||
);
|
||||
|
||||
$years = range($this->getMinYear(), $this->getMaxYear());
|
||||
$years = array_combine($years, $years);
|
||||
$years = array_fuse($years);
|
||||
|
||||
$days_sel = AphrontFormSelectControl::renderSelectTag(
|
||||
$this->getDayInputValue(),
|
||||
|
|
|
@ -5,6 +5,7 @@ final class PhabricatorObjectItemListView extends AphrontView {
|
|||
private $header;
|
||||
private $items;
|
||||
private $pager;
|
||||
private $stackable;
|
||||
private $noDataString;
|
||||
|
||||
public function setHeader($header) {
|
||||
|
@ -27,9 +28,15 @@ final class PhabricatorObjectItemListView extends AphrontView {
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function setStackable() {
|
||||
$this->stackable = true;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function render() {
|
||||
require_celerity_resource('phabricator-object-item-list-view-css');
|
||||
|
||||
$classes = array();
|
||||
$header = null;
|
||||
if (strlen($this->header)) {
|
||||
$header = phutil_tag(
|
||||
|
@ -55,10 +62,15 @@ final class PhabricatorObjectItemListView extends AphrontView {
|
|||
$pager = $this->renderSingleView($this->pager);
|
||||
}
|
||||
|
||||
$classes[] = 'phabricator-object-item-list-view';
|
||||
if ($this->stackable) {
|
||||
$classes[] = 'phabricator-object-list-stackable';
|
||||
}
|
||||
|
||||
return phutil_render_tag(
|
||||
'div',
|
||||
'ul',
|
||||
array(
|
||||
'class' => 'phabricator-object-item-list-view',
|
||||
'class' => implode(' ', $classes),
|
||||
),
|
||||
$header.$items.$pager);
|
||||
}
|
||||
|
|
|
@ -166,7 +166,7 @@ final class PhabricatorObjectItemView extends AphrontView {
|
|||
$header.$attrs.$this->renderChildren());
|
||||
|
||||
return phutil_tag(
|
||||
'div',
|
||||
'li',
|
||||
array(
|
||||
'class' => implode(' ', $classes),
|
||||
),
|
||||
|
|
|
@ -292,6 +292,59 @@ final class PhabricatorMainMenuView extends AphrontView {
|
|||
require_celerity_resource('phabricator-notification-menu-css');
|
||||
require_celerity_resource('sprite-menu-css');
|
||||
|
||||
$container_classes = array(
|
||||
'sprite-menu',
|
||||
'alert-notifications',
|
||||
);
|
||||
|
||||
$conpherence = id(new PhabricatorApplicationConpherence())->isBeta();
|
||||
$allow_beta =
|
||||
PhabricatorEnv::getEnvConfig('phabricator.show-beta-applications');
|
||||
$message_tag = '';
|
||||
|
||||
if (!$conpherence || $allow_beta) {
|
||||
$message_id = celerity_generate_unique_node_id();
|
||||
$message_count_id = celerity_generate_unique_node_id();
|
||||
|
||||
$unread_status = ConpherenceParticipationStatus::BEHIND;
|
||||
$unread = id(new ConpherenceParticipantQuery())
|
||||
->withParticipantPHIDs(array($user->getPHID()))
|
||||
->withParticipationStatus($unread_status)
|
||||
->execute();
|
||||
$message_count_number = count($unread);
|
||||
if ($message_count_number > 999) {
|
||||
$message_count_number = "\xE2\x88\x9E";
|
||||
}
|
||||
|
||||
$message_count_tag = phutil_render_tag(
|
||||
'span',
|
||||
array(
|
||||
'id' => $message_count_id,
|
||||
'class' => 'phabricator-main-menu-message-count'
|
||||
),
|
||||
phutil_escape_html($message_count_number));
|
||||
|
||||
$message_icon_tag = phutil_render_tag(
|
||||
'span',
|
||||
array(
|
||||
'class' => 'sprite-menu phabricator-main-menu-message-icon',
|
||||
),
|
||||
'');
|
||||
|
||||
if ($message_count_number) {
|
||||
$container_classes[] = 'message-unread';
|
||||
}
|
||||
|
||||
$message_tag = phutil_render_tag(
|
||||
'a',
|
||||
array(
|
||||
'href' => '/conpherence/',
|
||||
'class' => implode(' ', $container_classes),
|
||||
'id' => $message_id,
|
||||
),
|
||||
$message_icon_tag.$message_count_tag);
|
||||
}
|
||||
|
||||
$count_id = celerity_generate_unique_node_id();
|
||||
$dropdown_id = celerity_generate_unique_node_id();
|
||||
$bubble_id = celerity_generate_unique_node_id();
|
||||
|
@ -318,11 +371,6 @@ final class PhabricatorMainMenuView extends AphrontView {
|
|||
),
|
||||
'');
|
||||
|
||||
$container_classes = array(
|
||||
'phabricator-main-menu-alert-bubble',
|
||||
'sprite-menu',
|
||||
'alert-notifications',
|
||||
);
|
||||
if ($count_number) {
|
||||
$container_classes[] = 'alert-unread';
|
||||
}
|
||||
|
@ -354,7 +402,8 @@ final class PhabricatorMainMenuView extends AphrontView {
|
|||
),
|
||||
'');
|
||||
|
||||
return array($bubble_tag, $notification_dropdown);
|
||||
return array(
|
||||
$bubble_tag.$message_tag, $notification_dropdown);
|
||||
}
|
||||
|
||||
private function renderMenuIcon($name) {
|
||||
|
|
|
@ -2,12 +2,19 @@
|
|||
* @provides aphront-error-view-css
|
||||
*/
|
||||
|
||||
.aphront-error-view {
|
||||
margin: 20px;
|
||||
.aphront-error-view,
|
||||
.aphront-error-view-dialogue {
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
.aphront-error-view {
|
||||
margin: 20px;
|
||||
}
|
||||
.aphront-error-view-dialogue {
|
||||
margin: 0px 0px 16px 0px;
|
||||
}
|
||||
|
||||
.device-phone .aphront-error-view {
|
||||
margin: 10px;
|
||||
}
|
||||
|
|
|
@ -41,8 +41,6 @@
|
|||
|
||||
.phabricator-main-menu-logo {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
height: 44px;
|
||||
width: 139px;
|
||||
margin-right: 6px;
|
||||
padding-right: 6px;
|
||||
|
@ -248,59 +246,45 @@ a:hover .phabricator-main-search-typeahead-result .result-type {
|
|||
|
||||
*/
|
||||
|
||||
.device-desktop .phabricator-main-menu-alerts {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.device .phabricator-main-menu-alerts {
|
||||
position: absolute;
|
||||
left: 60px;
|
||||
right: 60px;
|
||||
top: 10px;
|
||||
height: 34px;
|
||||
text-align: center;
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
.phabricator-main-menu-alert-bubble {
|
||||
.phabricator-main-menu-alerts {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
margin-bottom: 9px;
|
||||
border-radius: 15px;
|
||||
background: rgba(0,0,0,.2);
|
||||
height: 20px;
|
||||
padding: 3px 10px;
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
.phabricator-main-menu-alert-bubble.alert-unread {
|
||||
width: 46px;
|
||||
}
|
||||
|
||||
.phabricator-main-menu-alert-icon {
|
||||
position: absolute;
|
||||
.phabricator-main-menu-alert-icon,
|
||||
.phabricator-main-menu-message-icon {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
top: 5px;
|
||||
left: 6px;
|
||||
display: block;
|
||||
float: left;
|
||||
margin: 2px 0 0 0;
|
||||
}
|
||||
|
||||
.phabricator-main-menu-alert-count {
|
||||
position: absolute;
|
||||
.alert-notifications .phabricator-main-menu-message-icon {
|
||||
margin: 3px 0 0 8px;
|
||||
}
|
||||
|
||||
.phabricator-main-menu-alert-count,
|
||||
.phabricator-main-menu-message-count {
|
||||
font-weight: bold;
|
||||
line-height: 22px;
|
||||
top: 1px;
|
||||
right: 8px;
|
||||
left: 20px;
|
||||
line-height: 20px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
display: none;
|
||||
float: left;
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.phabricator-main-menu-alert-item {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
margin: 9px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.alert-unread .phabricator-main-menu-alert-count {
|
||||
.alert-unread .phabricator-main-menu-alert-count,
|
||||
.message-unread .phabricator-main-menu-message-count {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,10 +38,10 @@
|
|||
}
|
||||
|
||||
.config-options-current-value {
|
||||
padding: 0 6px 2px;
|
||||
padding: 0 10px 8px;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.config-options-current-value span {
|
||||
color: #666666;
|
||||
color: #777;
|
||||
}
|
||||
|
|
|
@ -2,21 +2,29 @@
|
|||
* @provides conpherence-header-pane-css
|
||||
*/
|
||||
|
||||
#conpherence-main-pane {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.conpherence-header-pane {
|
||||
border-bottom: 1px solid #ccc;
|
||||
background: #fff;
|
||||
height: 50px;
|
||||
height: 80px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.conpherence-header-pane .edit {
|
||||
position: relative;
|
||||
float: right;
|
||||
margin: 16px 16px 0px 0px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
background-image: url('/rsrc/image/actions/edit.png');
|
||||
}
|
||||
|
||||
.conpherence-header-pane .header-image {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
left: 15px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
}
|
||||
|
@ -24,16 +32,17 @@
|
|||
.conpherence-header-pane .title {
|
||||
position: relative;
|
||||
font-size: 16px;
|
||||
left: 62px;
|
||||
top: 6px;
|
||||
font-weight: bold;
|
||||
left: 77px;
|
||||
top: 21px;
|
||||
max-width: 80%;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.conpherence-header-pane .subtitle {
|
||||
position: relative;
|
||||
left: 62px;
|
||||
top: 6px;
|
||||
left: 77px;
|
||||
top: 21px;
|
||||
color: #bfbfbf;
|
||||
max-width: 80%;
|
||||
}
|
||||
|
|
|
@ -3,9 +3,12 @@
|
|||
*/
|
||||
|
||||
.no-conpherences-menu-item {
|
||||
color: #ffffff;
|
||||
color: #a1a5a9;
|
||||
border-top: solid 1px #3B3D3E;
|
||||
padding: 20px 0px 20px 66px;
|
||||
padding: 20px 0;
|
||||
margin: 0px auto;
|
||||
width: 320px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.conpherence-menu .phabricator-nav-column-background,
|
||||
|
|
|
@ -15,15 +15,16 @@
|
|||
position: fixed;
|
||||
left: 320px;
|
||||
right: 321px;
|
||||
top: 94px;
|
||||
bottom: 225px;
|
||||
top: 124px;
|
||||
bottom: 142px;
|
||||
overflow-y: auto;
|
||||
box-shadow: inset 1px 5px 5px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.conpherence-message-pane .phabricator-form-view {
|
||||
border-width: 0;
|
||||
background: none;
|
||||
height: 224px;
|
||||
height: 143px;
|
||||
padding: 0;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
|
@ -46,8 +47,7 @@
|
|||
}
|
||||
|
||||
.conpherence-message-pane .phabricator-transaction-view {
|
||||
margin: 1em 1.25em 1em 1.25em;
|
||||
display: block;
|
||||
margin: 10px 0 10px 15px;
|
||||
}
|
||||
|
||||
.conpherence-message-pane .phabricator-transaction-detail {
|
||||
|
@ -67,8 +67,7 @@
|
|||
}
|
||||
|
||||
.conpherence-message-pane .conpherence-edited .phabricator-transaction-content {
|
||||
font-size: 12px;
|
||||
padding: 0em 1em 0em 1em;
|
||||
padding: 0 1em 0 1em;
|
||||
margin-top: -4px;
|
||||
}
|
||||
|
||||
|
@ -82,14 +81,19 @@
|
|||
.conpherence-message-pane .remarkup-assist-bar {
|
||||
border-width: 1px 0 0;
|
||||
border-color: #CCC;
|
||||
border-bottom: transparent;
|
||||
}
|
||||
|
||||
.conpherence-message-pane .remarkup-assist-textarea {
|
||||
border-width: 1px 0 1px 0;
|
||||
border-color: #CCC;
|
||||
border-width: 0 0 1px 0;
|
||||
border-color: #e7e7e7;
|
||||
}
|
||||
|
||||
.conpherence-message-pane .remarkup-assist-textarea:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.conpherence-message-pane .aphront-form-input textarea {
|
||||
padding: 6px;
|
||||
height: 6em;
|
||||
}
|
||||
|
|
|
@ -5,12 +5,13 @@
|
|||
.conpherence-widget-pane {
|
||||
position: fixed;
|
||||
right: 0px;
|
||||
top: 94px;
|
||||
top: 125px;
|
||||
width: 320px;
|
||||
height: 100%;
|
||||
border-width: 0 0 0 1px;
|
||||
border-color: #CCC;
|
||||
border-style: solid;
|
||||
background: url('/rsrc/image/texture/dust_background.jpg');
|
||||
}
|
||||
|
||||
.conpherence-widget-pane .aphront-form-input {
|
||||
|
|
|
@ -7,6 +7,10 @@
|
|||
background: #f4f5f6;
|
||||
}
|
||||
|
||||
.phabricator-object-item-list-view.phabricator-object-list-stackable .phabricator-object-item {
|
||||
margin: -1px 0 0 0;
|
||||
}
|
||||
|
||||
.device-desktop .phabricator-object-item-list-view {
|
||||
padding: 20px;
|
||||
}
|
||||
|
@ -14,22 +18,27 @@
|
|||
.phabricator-object-item {
|
||||
background: #ffffff;
|
||||
border-style: solid;
|
||||
border-color: #d7d7d7 #e4e3e4 #bcbcbd #d7d7d7;
|
||||
border-color: #c0c5d1;
|
||||
border-width: 1px 1px 1px 3px;
|
||||
margin: 3px 0;
|
||||
margin: 5px 0;
|
||||
|
||||
overflow: hidden;
|
||||
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.10);
|
||||
}
|
||||
|
||||
.phabricator-object-list-stackable .phabricator-object-item {
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
.device-desktop .phabricator-object-item {
|
||||
margin: 0 0 5px 0;
|
||||
}
|
||||
|
||||
.phabricator-object-item-name {
|
||||
display: block;
|
||||
padding: 4px 8px 4px;
|
||||
padding: 8px 10px 2px;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.phabricator-object-item-content {
|
||||
|
@ -43,13 +52,13 @@
|
|||
*/
|
||||
|
||||
.phabricator-object-item-attributes {
|
||||
padding: 0px 8px 4px;
|
||||
padding: 0px 10px 8px;
|
||||
}
|
||||
|
||||
.phabricator-object-item-attribute {
|
||||
display: inline;
|
||||
color: #555555;
|
||||
font-size: 11px;
|
||||
color: #777;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.phabricator-object-item-attribute-spacer {
|
||||
|
@ -66,7 +75,7 @@
|
|||
|
||||
.phabricator-object-item-icons {
|
||||
float: right;
|
||||
padding: 2px 4px 0;
|
||||
padding: 10px 10px 0;
|
||||
}
|
||||
|
||||
/* NOTE: The main content is an "overflow: hidden" div which we give a right
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
}
|
||||
|
||||
.phabricator-source-code-summary {
|
||||
margin-bottom: 4px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
/* If a Paste has enormously long lines, truncate them in the summary on the
|
||||
|
|
|
@ -82,546 +82,562 @@ only screen and (-webkit-min-device-pixel-ratio: 1.5) {
|
|||
background-position: -87px -29px;
|
||||
}
|
||||
|
||||
.app-countdown-light-large {
|
||||
.app-conpherence-light-large {
|
||||
background-position: -116px -29px;
|
||||
}
|
||||
|
||||
.app-countdown-dark-large {
|
||||
.app-conpherence-dark-large {
|
||||
background-position: -145px -29px;
|
||||
}
|
||||
|
||||
.app-countdown-blue-large, .phabricator-crumb-view:hover .app-countdown-dark-large {
|
||||
.app-conpherence-blue-large, .phabricator-crumb-view:hover .app-conpherence-dark-large {
|
||||
background-position: -174px -29px;
|
||||
}
|
||||
|
||||
.app-countdown-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-countdown-light-large {
|
||||
.app-conpherence-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-conpherence-light-large {
|
||||
background-position: -203px -29px;
|
||||
}
|
||||
|
||||
.app-daemon-light-large {
|
||||
.app-countdown-light-large {
|
||||
background-position: -232px -29px;
|
||||
}
|
||||
|
||||
.app-daemon-dark-large {
|
||||
.app-countdown-dark-large {
|
||||
background-position: -261px -29px;
|
||||
}
|
||||
|
||||
.app-daemon-blue-large, .phabricator-crumb-view:hover .app-daemon-dark-large {
|
||||
.app-countdown-blue-large, .phabricator-crumb-view:hover .app-countdown-dark-large {
|
||||
background-position: -290px -29px;
|
||||
}
|
||||
|
||||
.app-daemon-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-daemon-light-large {
|
||||
.app-countdown-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-countdown-light-large {
|
||||
background-position: -319px -29px;
|
||||
}
|
||||
|
||||
.app-differential-light-large {
|
||||
.app-daemon-light-large {
|
||||
background-position: 0px -58px;
|
||||
}
|
||||
|
||||
.app-differential-dark-large {
|
||||
.app-daemon-dark-large {
|
||||
background-position: -29px -58px;
|
||||
}
|
||||
|
||||
.app-differential-blue-large, .phabricator-crumb-view:hover .app-differential-dark-large {
|
||||
.app-daemon-blue-large, .phabricator-crumb-view:hover .app-daemon-dark-large {
|
||||
background-position: -58px -58px;
|
||||
}
|
||||
|
||||
.app-differential-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-differential-light-large {
|
||||
.app-daemon-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-daemon-light-large {
|
||||
background-position: -87px -58px;
|
||||
}
|
||||
|
||||
.app-diffusion-light-large {
|
||||
.app-differential-light-large {
|
||||
background-position: -116px -58px;
|
||||
}
|
||||
|
||||
.app-diffusion-dark-large {
|
||||
.app-differential-dark-large {
|
||||
background-position: -145px -58px;
|
||||
}
|
||||
|
||||
.app-diffusion-blue-large, .phabricator-crumb-view:hover .app-diffusion-dark-large {
|
||||
.app-differential-blue-large, .phabricator-crumb-view:hover .app-differential-dark-large {
|
||||
background-position: -174px -58px;
|
||||
}
|
||||
|
||||
.app-diffusion-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-diffusion-light-large {
|
||||
.app-differential-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-differential-light-large {
|
||||
background-position: -203px -58px;
|
||||
}
|
||||
|
||||
.app-diviner-light-large {
|
||||
.app-diffusion-light-large {
|
||||
background-position: -232px -58px;
|
||||
}
|
||||
|
||||
.app-diviner-dark-large {
|
||||
.app-diffusion-dark-large {
|
||||
background-position: -261px -58px;
|
||||
}
|
||||
|
||||
.app-diviner-blue-large, .phabricator-crumb-view:hover .app-diviner-dark-large {
|
||||
.app-diffusion-blue-large, .phabricator-crumb-view:hover .app-diffusion-dark-large {
|
||||
background-position: -290px -58px;
|
||||
}
|
||||
|
||||
.app-diviner-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-diviner-light-large {
|
||||
.app-diffusion-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-diffusion-light-large {
|
||||
background-position: -319px -58px;
|
||||
}
|
||||
|
||||
.app-drydock-light-large {
|
||||
.app-diviner-light-large {
|
||||
background-position: 0px -87px;
|
||||
}
|
||||
|
||||
.app-drydock-dark-large {
|
||||
.app-diviner-dark-large {
|
||||
background-position: -29px -87px;
|
||||
}
|
||||
|
||||
.app-drydock-blue-large, .phabricator-crumb-view:hover .app-drydock-dark-large {
|
||||
.app-diviner-blue-large, .phabricator-crumb-view:hover .app-diviner-dark-large {
|
||||
background-position: -58px -87px;
|
||||
}
|
||||
|
||||
.app-drydock-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-drydock-light-large {
|
||||
.app-diviner-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-diviner-light-large {
|
||||
background-position: -87px -87px;
|
||||
}
|
||||
|
||||
.app-fact-light-large {
|
||||
.app-drydock-light-large {
|
||||
background-position: -116px -87px;
|
||||
}
|
||||
|
||||
.app-fact-dark-large {
|
||||
.app-drydock-dark-large {
|
||||
background-position: -145px -87px;
|
||||
}
|
||||
|
||||
.app-fact-blue-large, .phabricator-crumb-view:hover .app-fact-dark-large {
|
||||
.app-drydock-blue-large, .phabricator-crumb-view:hover .app-drydock-dark-large {
|
||||
background-position: -174px -87px;
|
||||
}
|
||||
|
||||
.app-fact-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-fact-light-large {
|
||||
.app-drydock-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-drydock-light-large {
|
||||
background-position: -203px -87px;
|
||||
}
|
||||
|
||||
.app-feed-light-large {
|
||||
.app-fact-light-large {
|
||||
background-position: -232px -87px;
|
||||
}
|
||||
|
||||
.app-feed-dark-large {
|
||||
.app-fact-dark-large {
|
||||
background-position: -261px -87px;
|
||||
}
|
||||
|
||||
.app-feed-blue-large, .phabricator-crumb-view:hover .app-feed-dark-large {
|
||||
.app-fact-blue-large, .phabricator-crumb-view:hover .app-fact-dark-large {
|
||||
background-position: -290px -87px;
|
||||
}
|
||||
|
||||
.app-feed-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-feed-light-large {
|
||||
.app-fact-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-fact-light-large {
|
||||
background-position: -319px -87px;
|
||||
}
|
||||
|
||||
.app-files-light-large {
|
||||
.app-feed-light-large {
|
||||
background-position: 0px -116px;
|
||||
}
|
||||
|
||||
.app-files-dark-large {
|
||||
.app-feed-dark-large {
|
||||
background-position: -29px -116px;
|
||||
}
|
||||
|
||||
.app-files-blue-large, .phabricator-crumb-view:hover .app-files-dark-large {
|
||||
.app-feed-blue-large, .phabricator-crumb-view:hover .app-feed-dark-large {
|
||||
background-position: -58px -116px;
|
||||
}
|
||||
|
||||
.app-files-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-files-light-large {
|
||||
.app-feed-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-feed-light-large {
|
||||
background-position: -87px -116px;
|
||||
}
|
||||
|
||||
.app-flags-light-large {
|
||||
.app-files-light-large {
|
||||
background-position: -116px -116px;
|
||||
}
|
||||
|
||||
.app-flags-dark-large {
|
||||
.app-files-dark-large {
|
||||
background-position: -145px -116px;
|
||||
}
|
||||
|
||||
.app-flags-blue-large, .phabricator-crumb-view:hover .app-flags-dark-large {
|
||||
.app-files-blue-large, .phabricator-crumb-view:hover .app-files-dark-large {
|
||||
background-position: -174px -116px;
|
||||
}
|
||||
|
||||
.app-flags-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-flags-light-large {
|
||||
.app-files-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-files-light-large {
|
||||
background-position: -203px -116px;
|
||||
}
|
||||
|
||||
.app-help-light-large {
|
||||
.app-flags-light-large {
|
||||
background-position: -232px -116px;
|
||||
}
|
||||
|
||||
.app-help-dark-large {
|
||||
.app-flags-dark-large {
|
||||
background-position: -261px -116px;
|
||||
}
|
||||
|
||||
.app-help-blue-large, .phabricator-crumb-view:hover .app-help-dark-large {
|
||||
.app-flags-blue-large, .phabricator-crumb-view:hover .app-flags-dark-large {
|
||||
background-position: -290px -116px;
|
||||
}
|
||||
|
||||
.app-help-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-help-light-large {
|
||||
.app-flags-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-flags-light-large {
|
||||
background-position: -319px -116px;
|
||||
}
|
||||
|
||||
.app-herald-light-large {
|
||||
.app-help-light-large {
|
||||
background-position: 0px -145px;
|
||||
}
|
||||
|
||||
.app-herald-dark-large {
|
||||
.app-help-dark-large {
|
||||
background-position: -29px -145px;
|
||||
}
|
||||
|
||||
.app-herald-blue-large, .phabricator-crumb-view:hover .app-herald-dark-large {
|
||||
.app-help-blue-large, .phabricator-crumb-view:hover .app-help-dark-large {
|
||||
background-position: -58px -145px;
|
||||
}
|
||||
|
||||
.app-herald-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-herald-light-large {
|
||||
.app-help-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-help-light-large {
|
||||
background-position: -87px -145px;
|
||||
}
|
||||
|
||||
.app-home-light-large {
|
||||
.app-herald-light-large {
|
||||
background-position: -116px -145px;
|
||||
}
|
||||
|
||||
.app-home-dark-large {
|
||||
.app-herald-dark-large {
|
||||
background-position: -145px -145px;
|
||||
}
|
||||
|
||||
.app-home-blue-large, .phabricator-crumb-view:hover .app-home-dark-large {
|
||||
.app-herald-blue-large, .phabricator-crumb-view:hover .app-herald-dark-large {
|
||||
background-position: -174px -145px;
|
||||
}
|
||||
|
||||
.app-home-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-home-light-large {
|
||||
.app-herald-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-herald-light-large {
|
||||
background-position: -203px -145px;
|
||||
}
|
||||
|
||||
.app-logo-light-large {
|
||||
.app-home-light-large {
|
||||
background-position: -232px -145px;
|
||||
}
|
||||
|
||||
.app-logo-dark-large {
|
||||
.app-home-dark-large {
|
||||
background-position: -261px -145px;
|
||||
}
|
||||
|
||||
.app-logo-blue-large, .phabricator-crumb-view:hover .app-logo-dark-large {
|
||||
.app-home-blue-large, .phabricator-crumb-view:hover .app-home-dark-large {
|
||||
background-position: -290px -145px;
|
||||
}
|
||||
|
||||
.app-logo-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-logo-light-large {
|
||||
.app-home-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-home-light-large {
|
||||
background-position: -319px -145px;
|
||||
}
|
||||
|
||||
.app-macro-light-large {
|
||||
.app-logo-light-large {
|
||||
background-position: 0px -174px;
|
||||
}
|
||||
|
||||
.app-macro-dark-large {
|
||||
.app-logo-dark-large {
|
||||
background-position: -29px -174px;
|
||||
}
|
||||
|
||||
.app-macro-blue-large, .phabricator-crumb-view:hover .app-macro-dark-large {
|
||||
.app-logo-blue-large, .phabricator-crumb-view:hover .app-logo-dark-large {
|
||||
background-position: -58px -174px;
|
||||
}
|
||||
|
||||
.app-macro-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-macro-light-large {
|
||||
.app-logo-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-logo-light-large {
|
||||
background-position: -87px -174px;
|
||||
}
|
||||
|
||||
.app-mail-light-large {
|
||||
.app-macro-light-large {
|
||||
background-position: -116px -174px;
|
||||
}
|
||||
|
||||
.app-mail-dark-large {
|
||||
.app-macro-dark-large {
|
||||
background-position: -145px -174px;
|
||||
}
|
||||
|
||||
.app-mail-blue-large, .phabricator-crumb-view:hover .app-mail-dark-large {
|
||||
.app-macro-blue-large, .phabricator-crumb-view:hover .app-macro-dark-large {
|
||||
background-position: -174px -174px;
|
||||
}
|
||||
|
||||
.app-mail-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-mail-light-large {
|
||||
.app-macro-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-macro-light-large {
|
||||
background-position: -203px -174px;
|
||||
}
|
||||
|
||||
.app-maniphest-light-large {
|
||||
.app-mail-light-large {
|
||||
background-position: -232px -174px;
|
||||
}
|
||||
|
||||
.app-maniphest-dark-large {
|
||||
.app-mail-dark-large {
|
||||
background-position: -261px -174px;
|
||||
}
|
||||
|
||||
.app-maniphest-blue-large, .phabricator-crumb-view:hover .app-maniphest-dark-large {
|
||||
.app-mail-blue-large, .phabricator-crumb-view:hover .app-mail-dark-large {
|
||||
background-position: -290px -174px;
|
||||
}
|
||||
|
||||
.app-maniphest-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-maniphest-light-large {
|
||||
.app-mail-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-mail-light-large {
|
||||
background-position: -319px -174px;
|
||||
}
|
||||
|
||||
.app-metamta-light-large {
|
||||
.app-maniphest-light-large {
|
||||
background-position: 0px -203px;
|
||||
}
|
||||
|
||||
.app-metamta-dark-large {
|
||||
.app-maniphest-dark-large {
|
||||
background-position: -29px -203px;
|
||||
}
|
||||
|
||||
.app-metamta-blue-large, .phabricator-crumb-view:hover .app-metamta-dark-large {
|
||||
.app-maniphest-blue-large, .phabricator-crumb-view:hover .app-maniphest-dark-large {
|
||||
background-position: -58px -203px;
|
||||
}
|
||||
|
||||
.app-metamta-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-metamta-light-large {
|
||||
.app-maniphest-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-maniphest-light-large {
|
||||
background-position: -87px -203px;
|
||||
}
|
||||
|
||||
.app-owners-light-large {
|
||||
.app-metamta-light-large {
|
||||
background-position: -116px -203px;
|
||||
}
|
||||
|
||||
.app-owners-dark-large {
|
||||
.app-metamta-dark-large {
|
||||
background-position: -145px -203px;
|
||||
}
|
||||
|
||||
.app-owners-blue-large, .phabricator-crumb-view:hover .app-owners-dark-large {
|
||||
.app-metamta-blue-large, .phabricator-crumb-view:hover .app-metamta-dark-large {
|
||||
background-position: -174px -203px;
|
||||
}
|
||||
|
||||
.app-owners-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-owners-light-large {
|
||||
.app-metamta-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-metamta-light-large {
|
||||
background-position: -203px -203px;
|
||||
}
|
||||
|
||||
.app-paste-light-large {
|
||||
.app-owners-light-large {
|
||||
background-position: -232px -203px;
|
||||
}
|
||||
|
||||
.app-paste-dark-large {
|
||||
.app-owners-dark-large {
|
||||
background-position: -261px -203px;
|
||||
}
|
||||
|
||||
.app-paste-blue-large, .phabricator-crumb-view:hover .app-paste-dark-large {
|
||||
.app-owners-blue-large, .phabricator-crumb-view:hover .app-owners-dark-large {
|
||||
background-position: -290px -203px;
|
||||
}
|
||||
|
||||
.app-paste-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-paste-light-large {
|
||||
.app-owners-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-owners-light-large {
|
||||
background-position: -319px -203px;
|
||||
}
|
||||
|
||||
.app-people-light-large {
|
||||
.app-paste-light-large {
|
||||
background-position: 0px -232px;
|
||||
}
|
||||
|
||||
.app-people-dark-large {
|
||||
.app-paste-dark-large {
|
||||
background-position: -29px -232px;
|
||||
}
|
||||
|
||||
.app-people-blue-large, .phabricator-crumb-view:hover .app-people-dark-large {
|
||||
.app-paste-blue-large, .phabricator-crumb-view:hover .app-paste-dark-large {
|
||||
background-position: -58px -232px;
|
||||
}
|
||||
|
||||
.app-people-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-people-light-large {
|
||||
.app-paste-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-paste-light-large {
|
||||
background-position: -87px -232px;
|
||||
}
|
||||
|
||||
.app-phame-light-large {
|
||||
.app-people-light-large {
|
||||
background-position: -116px -232px;
|
||||
}
|
||||
|
||||
.app-phame-dark-large {
|
||||
.app-people-dark-large {
|
||||
background-position: -145px -232px;
|
||||
}
|
||||
|
||||
.app-phame-blue-large, .phabricator-crumb-view:hover .app-phame-dark-large {
|
||||
.app-people-blue-large, .phabricator-crumb-view:hover .app-people-dark-large {
|
||||
background-position: -174px -232px;
|
||||
}
|
||||
|
||||
.app-phame-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phame-light-large {
|
||||
.app-people-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-people-light-large {
|
||||
background-position: -203px -232px;
|
||||
}
|
||||
|
||||
.app-phid-light-large {
|
||||
.app-phame-light-large {
|
||||
background-position: -232px -232px;
|
||||
}
|
||||
|
||||
.app-phid-dark-large {
|
||||
.app-phame-dark-large {
|
||||
background-position: -261px -232px;
|
||||
}
|
||||
|
||||
.app-phid-blue-large, .phabricator-crumb-view:hover .app-phid-dark-large {
|
||||
.app-phame-blue-large, .phabricator-crumb-view:hover .app-phame-dark-large {
|
||||
background-position: -290px -232px;
|
||||
}
|
||||
|
||||
.app-phid-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phid-light-large {
|
||||
.app-phame-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phame-light-large {
|
||||
background-position: -319px -232px;
|
||||
}
|
||||
|
||||
.app-pholio-light-large {
|
||||
.app-phid-light-large {
|
||||
background-position: 0px -261px;
|
||||
}
|
||||
|
||||
.app-pholio-dark-large {
|
||||
.app-phid-dark-large {
|
||||
background-position: -29px -261px;
|
||||
}
|
||||
|
||||
.app-pholio-blue-large, .phabricator-crumb-view:hover .app-pholio-dark-large {
|
||||
.app-phid-blue-large, .phabricator-crumb-view:hover .app-phid-dark-large {
|
||||
background-position: -58px -261px;
|
||||
}
|
||||
|
||||
.app-pholio-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-pholio-light-large {
|
||||
.app-phid-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phid-light-large {
|
||||
background-position: -87px -261px;
|
||||
}
|
||||
|
||||
.app-phpast-light-large {
|
||||
.app-pholio-light-large {
|
||||
background-position: -116px -261px;
|
||||
}
|
||||
|
||||
.app-phpast-dark-large {
|
||||
.app-pholio-dark-large {
|
||||
background-position: -145px -261px;
|
||||
}
|
||||
|
||||
.app-phpast-blue-large, .phabricator-crumb-view:hover .app-phpast-dark-large {
|
||||
.app-pholio-blue-large, .phabricator-crumb-view:hover .app-pholio-dark-large {
|
||||
background-position: -174px -261px;
|
||||
}
|
||||
|
||||
.app-phpast-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phpast-light-large {
|
||||
.app-pholio-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-pholio-light-large {
|
||||
background-position: -203px -261px;
|
||||
}
|
||||
|
||||
.app-phriction-light-large {
|
||||
.app-phpast-light-large {
|
||||
background-position: -232px -261px;
|
||||
}
|
||||
|
||||
.app-phriction-dark-large {
|
||||
.app-phpast-dark-large {
|
||||
background-position: -261px -261px;
|
||||
}
|
||||
|
||||
.app-phriction-blue-large, .phabricator-crumb-view:hover .app-phriction-dark-large {
|
||||
.app-phpast-blue-large, .phabricator-crumb-view:hover .app-phpast-dark-large {
|
||||
background-position: -290px -261px;
|
||||
}
|
||||
|
||||
.app-phriction-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phriction-light-large {
|
||||
.app-phpast-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phpast-light-large {
|
||||
background-position: -319px -261px;
|
||||
}
|
||||
|
||||
.app-ponder-light-large {
|
||||
.app-phriction-light-large {
|
||||
background-position: 0px -290px;
|
||||
}
|
||||
|
||||
.app-ponder-dark-large {
|
||||
.app-phriction-dark-large {
|
||||
background-position: -29px -290px;
|
||||
}
|
||||
|
||||
.app-ponder-blue-large, .phabricator-crumb-view:hover .app-ponder-dark-large {
|
||||
.app-phriction-blue-large, .phabricator-crumb-view:hover .app-phriction-dark-large {
|
||||
background-position: -58px -290px;
|
||||
}
|
||||
|
||||
.app-ponder-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-ponder-light-large {
|
||||
.app-phriction-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-phriction-light-large {
|
||||
background-position: -87px -290px;
|
||||
}
|
||||
|
||||
.app-power-light-large {
|
||||
.app-ponder-light-large {
|
||||
background-position: -116px -290px;
|
||||
}
|
||||
|
||||
.app-power-dark-large {
|
||||
.app-ponder-dark-large {
|
||||
background-position: -145px -290px;
|
||||
}
|
||||
|
||||
.app-power-blue-large, .phabricator-crumb-view:hover .app-power-dark-large {
|
||||
.app-ponder-blue-large, .phabricator-crumb-view:hover .app-ponder-dark-large {
|
||||
background-position: -174px -290px;
|
||||
}
|
||||
|
||||
.app-power-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-power-light-large {
|
||||
.app-ponder-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-ponder-light-large {
|
||||
background-position: -203px -290px;
|
||||
}
|
||||
|
||||
.app-projects-light-large {
|
||||
.app-power-light-large {
|
||||
background-position: -232px -290px;
|
||||
}
|
||||
|
||||
.app-projects-dark-large {
|
||||
.app-power-dark-large {
|
||||
background-position: -261px -290px;
|
||||
}
|
||||
|
||||
.app-projects-blue-large, .phabricator-crumb-view:hover .app-projects-dark-large {
|
||||
.app-power-blue-large, .phabricator-crumb-view:hover .app-power-dark-large {
|
||||
background-position: -290px -290px;
|
||||
}
|
||||
|
||||
.app-projects-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-projects-light-large {
|
||||
.app-power-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-power-light-large {
|
||||
background-position: -319px -290px;
|
||||
}
|
||||
|
||||
.app-repositories-light-large {
|
||||
.app-projects-light-large {
|
||||
background-position: 0px -319px;
|
||||
}
|
||||
|
||||
.app-repositories-dark-large {
|
||||
.app-projects-dark-large {
|
||||
background-position: -29px -319px;
|
||||
}
|
||||
|
||||
.app-repositories-blue-large, .phabricator-crumb-view:hover .app-repositories-dark-large {
|
||||
.app-projects-blue-large, .phabricator-crumb-view:hover .app-projects-dark-large {
|
||||
background-position: -58px -319px;
|
||||
}
|
||||
|
||||
.app-repositories-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-repositories-light-large {
|
||||
.app-projects-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-projects-light-large {
|
||||
background-position: -87px -319px;
|
||||
}
|
||||
|
||||
.app-settings-light-large {
|
||||
.app-repositories-light-large {
|
||||
background-position: -116px -319px;
|
||||
}
|
||||
|
||||
.app-settings-dark-large {
|
||||
.app-repositories-dark-large {
|
||||
background-position: -145px -319px;
|
||||
}
|
||||
|
||||
.app-settings-blue-large, .phabricator-crumb-view:hover .app-settings-dark-large {
|
||||
.app-repositories-blue-large, .phabricator-crumb-view:hover .app-repositories-dark-large {
|
||||
background-position: -174px -319px;
|
||||
}
|
||||
|
||||
.app-settings-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-settings-light-large {
|
||||
.app-repositories-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-repositories-light-large {
|
||||
background-position: -203px -319px;
|
||||
}
|
||||
|
||||
.app-setup-light-large {
|
||||
.app-settings-light-large {
|
||||
background-position: -232px -319px;
|
||||
}
|
||||
|
||||
.app-setup-dark-large {
|
||||
.app-settings-dark-large {
|
||||
background-position: -261px -319px;
|
||||
}
|
||||
|
||||
.app-setup-blue-large, .phabricator-crumb-view:hover .app-setup-dark-large {
|
||||
.app-settings-blue-large, .phabricator-crumb-view:hover .app-settings-dark-large {
|
||||
background-position: -290px -319px;
|
||||
}
|
||||
|
||||
.app-setup-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-setup-light-large {
|
||||
.app-settings-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-settings-light-large {
|
||||
background-position: -319px -319px;
|
||||
}
|
||||
|
||||
.app-slowvote-light-large {
|
||||
.app-setup-light-large {
|
||||
background-position: 0px -348px;
|
||||
}
|
||||
|
||||
.app-slowvote-dark-large {
|
||||
.app-setup-dark-large {
|
||||
background-position: -29px -348px;
|
||||
}
|
||||
|
||||
.app-slowvote-blue-large, .phabricator-crumb-view:hover .app-slowvote-dark-large {
|
||||
.app-setup-blue-large, .phabricator-crumb-view:hover .app-setup-dark-large {
|
||||
background-position: -58px -348px;
|
||||
}
|
||||
|
||||
.app-slowvote-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-slowvote-light-large {
|
||||
.app-setup-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-setup-light-large {
|
||||
background-position: -87px -348px;
|
||||
}
|
||||
|
||||
.app-uiexamples-light-large {
|
||||
.app-slowvote-light-large {
|
||||
background-position: -116px -348px;
|
||||
}
|
||||
|
||||
.app-uiexamples-dark-large {
|
||||
.app-slowvote-dark-large {
|
||||
background-position: -145px -348px;
|
||||
}
|
||||
|
||||
.app-uiexamples-blue-large, .phabricator-crumb-view:hover .app-uiexamples-dark-large {
|
||||
.app-slowvote-blue-large, .phabricator-crumb-view:hover .app-slowvote-dark-large {
|
||||
background-position: -174px -348px;
|
||||
}
|
||||
|
||||
.app-uiexamples-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-uiexamples-light-large {
|
||||
.app-slowvote-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-slowvote-light-large {
|
||||
background-position: -203px -348px;
|
||||
}
|
||||
|
||||
.app-uiexamples-light-large {
|
||||
background-position: -232px -348px;
|
||||
}
|
||||
|
||||
.app-uiexamples-dark-large {
|
||||
background-position: -261px -348px;
|
||||
}
|
||||
|
||||
.app-uiexamples-blue-large, .phabricator-crumb-view:hover .app-uiexamples-dark-large {
|
||||
background-position: -290px -348px;
|
||||
}
|
||||
|
||||
.app-uiexamples-glow-large, .device-desktop .phabricator-dark-menu a:hover .app-uiexamples-light-large {
|
||||
background-position: -319px -348px;
|
||||
}
|
||||
|
|
|
@ -34,138 +34,142 @@ only screen and (-webkit-min-device-pixel-ratio: 1.5) {
|
|||
background-position: -45px 0px;
|
||||
}
|
||||
|
||||
.app-countdown-dark {
|
||||
.app-conpherence-dark {
|
||||
background-position: -60px 0px;
|
||||
}
|
||||
|
||||
.app-daemon-dark {
|
||||
.app-countdown-dark {
|
||||
background-position: -75px 0px;
|
||||
}
|
||||
|
||||
.app-differential-dark {
|
||||
.app-daemon-dark {
|
||||
background-position: 0px -15px;
|
||||
}
|
||||
|
||||
.app-diffusion-dark {
|
||||
.app-differential-dark {
|
||||
background-position: -15px -15px;
|
||||
}
|
||||
|
||||
.app-diviner-dark {
|
||||
.app-diffusion-dark {
|
||||
background-position: -30px -15px;
|
||||
}
|
||||
|
||||
.app-drydock-dark {
|
||||
.app-diviner-dark {
|
||||
background-position: -45px -15px;
|
||||
}
|
||||
|
||||
.app-fact-dark {
|
||||
.app-drydock-dark {
|
||||
background-position: -60px -15px;
|
||||
}
|
||||
|
||||
.app-feed-dark {
|
||||
.app-fact-dark {
|
||||
background-position: -75px -15px;
|
||||
}
|
||||
|
||||
.app-files-dark {
|
||||
.app-feed-dark {
|
||||
background-position: 0px -30px;
|
||||
}
|
||||
|
||||
.app-flags-dark {
|
||||
.app-files-dark {
|
||||
background-position: -15px -30px;
|
||||
}
|
||||
|
||||
.app-help-dark {
|
||||
.app-flags-dark {
|
||||
background-position: -30px -30px;
|
||||
}
|
||||
|
||||
.app-herald-dark {
|
||||
.app-help-dark {
|
||||
background-position: -45px -30px;
|
||||
}
|
||||
|
||||
.app-home-dark {
|
||||
.app-herald-dark {
|
||||
background-position: -60px -30px;
|
||||
}
|
||||
|
||||
.app-logo-dark {
|
||||
.app-home-dark {
|
||||
background-position: -75px -30px;
|
||||
}
|
||||
|
||||
.app-macro-dark {
|
||||
.app-logo-dark {
|
||||
background-position: 0px -45px;
|
||||
}
|
||||
|
||||
.app-mail-dark {
|
||||
.app-macro-dark {
|
||||
background-position: -15px -45px;
|
||||
}
|
||||
|
||||
.app-maniphest-dark {
|
||||
.app-mail-dark {
|
||||
background-position: -30px -45px;
|
||||
}
|
||||
|
||||
.app-metamta-dark {
|
||||
.app-maniphest-dark {
|
||||
background-position: -45px -45px;
|
||||
}
|
||||
|
||||
.app-owners-dark {
|
||||
.app-metamta-dark {
|
||||
background-position: -60px -45px;
|
||||
}
|
||||
|
||||
.app-paste-dark {
|
||||
.app-owners-dark {
|
||||
background-position: -75px -45px;
|
||||
}
|
||||
|
||||
.app-people-dark {
|
||||
.app-paste-dark {
|
||||
background-position: 0px -60px;
|
||||
}
|
||||
|
||||
.app-phame-dark {
|
||||
.app-people-dark {
|
||||
background-position: -15px -60px;
|
||||
}
|
||||
|
||||
.app-phid-dark {
|
||||
.app-phame-dark {
|
||||
background-position: -30px -60px;
|
||||
}
|
||||
|
||||
.app-pholio-dark {
|
||||
.app-phid-dark {
|
||||
background-position: -45px -60px;
|
||||
}
|
||||
|
||||
.app-phpast-dark {
|
||||
.app-pholio-dark {
|
||||
background-position: -60px -60px;
|
||||
}
|
||||
|
||||
.app-phriction-dark {
|
||||
.app-phpast-dark {
|
||||
background-position: -75px -60px;
|
||||
}
|
||||
|
||||
.app-ponder-dark {
|
||||
.app-phriction-dark {
|
||||
background-position: 0px -75px;
|
||||
}
|
||||
|
||||
.app-power-dark {
|
||||
.app-ponder-dark {
|
||||
background-position: -15px -75px;
|
||||
}
|
||||
|
||||
.app-projects-dark {
|
||||
.app-power-dark {
|
||||
background-position: -30px -75px;
|
||||
}
|
||||
|
||||
.app-repositories-dark {
|
||||
.app-projects-dark {
|
||||
background-position: -45px -75px;
|
||||
}
|
||||
|
||||
.app-settings-dark {
|
||||
.app-repositories-dark {
|
||||
background-position: -60px -75px;
|
||||
}
|
||||
|
||||
.app-setup-dark {
|
||||
.app-settings-dark {
|
||||
background-position: -75px -75px;
|
||||
}
|
||||
|
||||
.app-slowvote-dark {
|
||||
.app-setup-dark {
|
||||
background-position: 0px -90px;
|
||||
}
|
||||
|
||||
.app-uiexamples-dark {
|
||||
.app-slowvote-dark {
|
||||
background-position: -15px -90px;
|
||||
}
|
||||
|
||||
.app-uiexamples-dark {
|
||||
background-position: -30px -90px;
|
||||
}
|
||||
|
|
|
@ -13,19 +13,11 @@ only screen and (min-device-pixel-ratio: 1.5),
|
|||
only screen and (-webkit-min-device-pixel-ratio: 1.5) {
|
||||
.sprite-menu {
|
||||
background-image: url(/rsrc/image/sprite-menu-X2.png);
|
||||
background-size: 140px 127px;
|
||||
background-size: 140px 88px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.phabricator-main-menu-alert-bubble {
|
||||
background-position: 0px -68px;
|
||||
}
|
||||
|
||||
.phabricator-main-menu-alert-bubble.alert-unread {
|
||||
background-position: 0px -41px;
|
||||
}
|
||||
|
||||
.alert-notifications .phabricator-main-menu-alert-icon {
|
||||
background-position: 0px 0px;
|
||||
}
|
||||
|
@ -35,21 +27,33 @@ only screen and (-webkit-min-device-pixel-ratio: 1.5) {
|
|||
}
|
||||
|
||||
.alert-notifications.alert-unread .phabricator-main-menu-alert-icon {
|
||||
background-position: -27px -68px;
|
||||
background-position: -30px 0px;
|
||||
}
|
||||
|
||||
.phabricator-crumb-divider {
|
||||
background-position: 0px -95px;
|
||||
background-position: 0px -56px;
|
||||
}
|
||||
|
||||
.menu-icon-eye {
|
||||
background-position: -47px -41px;
|
||||
background-position: -10px -56px;
|
||||
}
|
||||
|
||||
.menu-icon-app {
|
||||
background-position: -42px -68px;
|
||||
background-position: -35px -56px;
|
||||
}
|
||||
|
||||
.phabricator-main-menu-logo-image {
|
||||
background-position: 0px -30px;
|
||||
}
|
||||
|
||||
.alert-notifications .phabricator-main-menu-message-icon {
|
||||
background-position: 0px -15px;
|
||||
}
|
||||
|
||||
.alert-notifications:hover .phabricator-main-menu-message-icon {
|
||||
background-position: -15px -15px;
|
||||
}
|
||||
|
||||
.alert-notifications.message-unread .phabricator-main-menu-message-icon {
|
||||
background-position: -30px -15px;
|
||||
}
|
||||
|
|
BIN
webroot/rsrc/image/actions/edit.png
Normal file
After Width: | Height: | Size: 410 B |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 222 KiB |