Tokens v1
Summary: Features! - Giving tokens. - Taking tokens back. - Not giving tokens. Test Plan: See screenshots. Reviewers: chad, vrana Reviewed By: chad CC: aran, btrahan Maniphest Tasks: T2541 Differential Revision: https://secure.phabricator.com/D4964
11
externals/javelinjs/src/lib/Workflow.js
vendored
|
@ -88,14 +88,19 @@ JX.install('Workflow', {
|
|||
return;
|
||||
}
|
||||
|
||||
var t = event.getTarget();
|
||||
// Get the button (which is sometimes actually another tag, like an <a />)
|
||||
// which triggered the event. In particular, this makes sure we get the
|
||||
// right node if there is a <button> with an <img /> inside it or
|
||||
// or something similar.
|
||||
var t = event.getNode('jx-workflow-button') ||
|
||||
event.getNode('tag:button');
|
||||
if (t.name == '__cancel__' || t.name == '__close__') {
|
||||
JX.Workflow._pop();
|
||||
} else {
|
||||
|
||||
var form = event.getNode('jx-dialog');
|
||||
var data = JX.DOM.convertFormToListOfPairs(form);
|
||||
data.push([t.name, true]);
|
||||
|
||||
data.push([t.name, t.value || true]);
|
||||
|
||||
var active = JX.Workflow._getActiveWorkflow();
|
||||
var e = active.invoke('submit', {form: form, data: data});
|
||||
|
|
|
@ -4,782 +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" : "80f42a283979cef89577721ca6d9cdef"
|
||||
"hash" : "c8e0319f0c8a3c19bb74391785149424"
|
||||
},
|
||||
"app-application-dark-large" : {
|
||||
"name" : "app-application-dark-large",
|
||||
"rule" : ".app-application-dark-large",
|
||||
"hash" : "8ab1619bcb768cc1b85106b077d29522"
|
||||
"hash" : "a5a904b67bdd26c15b8df07b0b0cee1a"
|
||||
},
|
||||
"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" : "26aedaf7940300f18eb0ef59566a0988"
|
||||
"hash" : "04cd8ab1f4785d33d6c9c829dce35cb6"
|
||||
},
|
||||
"app-application-light-large" : {
|
||||
"name" : "app-application-light-large",
|
||||
"rule" : ".app-application-light-large",
|
||||
"hash" : "09d4ef0cb36255291693971754ec55ee"
|
||||
"hash" : "8b071cf0efedda7c8c772829d31453ea"
|
||||
},
|
||||
"app-audit-blue-large" : {
|
||||
"name" : "app-audit-blue-large",
|
||||
"rule" : ".app-audit-blue-large, .phabricator-crumb-view:hover .app-audit-dark-large",
|
||||
"hash" : "05941dc7d5ff156c0e899c6345f6833a"
|
||||
"hash" : "cfb6e6c27d6bf4bbf2e07c8d284948d7"
|
||||
},
|
||||
"app-audit-dark-large" : {
|
||||
"name" : "app-audit-dark-large",
|
||||
"rule" : ".app-audit-dark-large",
|
||||
"hash" : "cbf8e6c5a580bd3b5169f30d3cd0ec6a"
|
||||
"hash" : "0880246fc6aa5d0cec823166af5b388f"
|
||||
},
|
||||
"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" : "5ab43e357c123c05a9db85a964b20252"
|
||||
"hash" : "2f3896e45a05d55c3a95440dbeac9187"
|
||||
},
|
||||
"app-audit-light-large" : {
|
||||
"name" : "app-audit-light-large",
|
||||
"rule" : ".app-audit-light-large",
|
||||
"hash" : "aa853bebb7a315b994f1527247e3b362"
|
||||
"hash" : "8dd753f716233d2f6edf553df4fde942"
|
||||
},
|
||||
"app-calendar-blue-large" : {
|
||||
"name" : "app-calendar-blue-large",
|
||||
"rule" : ".app-calendar-blue-large, .phabricator-crumb-view:hover .app-calendar-dark-large",
|
||||
"hash" : "9e530feec2926878ee7eaa8a04a8607b"
|
||||
"hash" : "a05add9fa18df8a98cf2735cf27ec6e1"
|
||||
},
|
||||
"app-calendar-dark-large" : {
|
||||
"name" : "app-calendar-dark-large",
|
||||
"rule" : ".app-calendar-dark-large",
|
||||
"hash" : "65de91c173d169bbf407c9e7cefa9715"
|
||||
"hash" : "5c98faf324152ec55bad6ac76f77ec00"
|
||||
},
|
||||
"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" : "1dc738045b09476feebe5e705a61b7a9"
|
||||
"hash" : "d1a7c623c5b3d902a389fc2ea8941858"
|
||||
},
|
||||
"app-calendar-light-large" : {
|
||||
"name" : "app-calendar-light-large",
|
||||
"rule" : ".app-calendar-light-large",
|
||||
"hash" : "043dab56a011f84f5affc2c7c13e3a39"
|
||||
"hash" : "466b97737778eff91ebd9afabac6e5a6"
|
||||
},
|
||||
"app-conduit-blue-large" : {
|
||||
"name" : "app-conduit-blue-large",
|
||||
"rule" : ".app-conduit-blue-large, .phabricator-crumb-view:hover .app-conduit-dark-large",
|
||||
"hash" : "4ab937882a119bacc0206029cbd7919d"
|
||||
"hash" : "ed8208ab196da7da6160edbdb0be118a"
|
||||
},
|
||||
"app-conduit-dark-large" : {
|
||||
"name" : "app-conduit-dark-large",
|
||||
"rule" : ".app-conduit-dark-large",
|
||||
"hash" : "34de5192c69af7a9cf3941f7b5cb088e"
|
||||
"hash" : "bad7559ed9928596c0241d8490e67422"
|
||||
},
|
||||
"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" : "b89b969a7fba76d39c768ac8de19c964"
|
||||
"hash" : "072c3ca188a60e9ee08c6eb36b8628c9"
|
||||
},
|
||||
"app-conduit-light-large" : {
|
||||
"name" : "app-conduit-light-large",
|
||||
"rule" : ".app-conduit-light-large",
|
||||
"hash" : "a2fd3cfe6e4e46d589e0e99f52e7f6f0"
|
||||
"hash" : "92047e758fac063dfb0608863ee66b7e"
|
||||
},
|
||||
"app-conpherence-blue-large" : {
|
||||
"name" : "app-conpherence-blue-large",
|
||||
"rule" : ".app-conpherence-blue-large, .phabricator-crumb-view:hover .app-conpherence-dark-large",
|
||||
"hash" : "efcf3788ac60484d5920b37c1560e565"
|
||||
"hash" : "6b84241639e4755b450085f7eeb30cb1"
|
||||
},
|
||||
"app-conpherence-dark-large" : {
|
||||
"name" : "app-conpherence-dark-large",
|
||||
"rule" : ".app-conpherence-dark-large",
|
||||
"hash" : "2722117e3da8c2dbc478d957fb21ca53"
|
||||
"hash" : "d9ced45f6ce7ffec0a0edb17c5e63834"
|
||||
},
|
||||
"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"
|
||||
"hash" : "aa5d889f5d46f3b7cefc766ae5c7b904"
|
||||
},
|
||||
"app-conpherence-light-large" : {
|
||||
"name" : "app-conpherence-light-large",
|
||||
"rule" : ".app-conpherence-light-large",
|
||||
"hash" : "a79e5f0094caf9f012f3e9d7a10f2bac"
|
||||
"hash" : "d85a049c1742fec1f95a8ebb6ca5c944"
|
||||
},
|
||||
"app-countdown-blue-large" : {
|
||||
"name" : "app-countdown-blue-large",
|
||||
"rule" : ".app-countdown-blue-large, .phabricator-crumb-view:hover .app-countdown-dark-large",
|
||||
"hash" : "a4079b8e55924b7590011b35ba9bfdb0"
|
||||
"hash" : "d44b7acae6b6b052ac869f0176b66b89"
|
||||
},
|
||||
"app-countdown-dark-large" : {
|
||||
"name" : "app-countdown-dark-large",
|
||||
"rule" : ".app-countdown-dark-large",
|
||||
"hash" : "25547923eb9927ed0c30804fafd471d3"
|
||||
"hash" : "dc7df8202a5fa7baf17fd446a9b5c4c5"
|
||||
},
|
||||
"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" : "472fcd5cf9f292b0d2f9f275541fed18"
|
||||
"hash" : "3b972002d629a49a4eca9049a9b2c6ae"
|
||||
},
|
||||
"app-countdown-light-large" : {
|
||||
"name" : "app-countdown-light-large",
|
||||
"rule" : ".app-countdown-light-large",
|
||||
"hash" : "24bac143e049862bed161d819990cee0"
|
||||
"hash" : "8f3814f70c1cb0475dd4678cc8937d91"
|
||||
},
|
||||
"app-daemon-blue-large" : {
|
||||
"name" : "app-daemon-blue-large",
|
||||
"rule" : ".app-daemon-blue-large, .phabricator-crumb-view:hover .app-daemon-dark-large",
|
||||
"hash" : "beb6586864ef67a7bd7a9a159b8c2a56"
|
||||
"hash" : "c922a7e7ec9467ca48b2a2573904b7ce"
|
||||
},
|
||||
"app-daemon-dark-large" : {
|
||||
"name" : "app-daemon-dark-large",
|
||||
"rule" : ".app-daemon-dark-large",
|
||||
"hash" : "cf2e12b2967d155c437862bbb9ce2d86"
|
||||
"hash" : "b2e566baac0c579563bd5bd700deb41b"
|
||||
},
|
||||
"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" : "1728089df503ec805b42e262b196b616"
|
||||
"hash" : "1c8e2776b9b984b804f6dca073f101eb"
|
||||
},
|
||||
"app-daemon-light-large" : {
|
||||
"name" : "app-daemon-light-large",
|
||||
"rule" : ".app-daemon-light-large",
|
||||
"hash" : "44328612154fbf1a2f0f6ff28cd23521"
|
||||
"hash" : "9c778b43f9f7380fc9bd862c097bbaa8"
|
||||
},
|
||||
"app-differential-blue-large" : {
|
||||
"name" : "app-differential-blue-large",
|
||||
"rule" : ".app-differential-blue-large, .phabricator-crumb-view:hover .app-differential-dark-large",
|
||||
"hash" : "9491284c8cbf77df0795bdf9cd16651e"
|
||||
"hash" : "59049df6a30c816ea68d3025da79a091"
|
||||
},
|
||||
"app-differential-dark-large" : {
|
||||
"name" : "app-differential-dark-large",
|
||||
"rule" : ".app-differential-dark-large",
|
||||
"hash" : "a4b2ac4d4f697896e3abe9e58501fea5"
|
||||
"hash" : "fd1e0f1fa97b00c7409ebfdc56cf4865"
|
||||
},
|
||||
"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" : "d7e777585cc826becb64042f8bb31fc5"
|
||||
"hash" : "3997a58a26389e8ede8022fd05cf8b43"
|
||||
},
|
||||
"app-differential-light-large" : {
|
||||
"name" : "app-differential-light-large",
|
||||
"rule" : ".app-differential-light-large",
|
||||
"hash" : "a763d63d22cac8226d8bd5656221a91b"
|
||||
"hash" : "b5c750e09f57a787e89f32820f791c4a"
|
||||
},
|
||||
"app-diffusion-blue-large" : {
|
||||
"name" : "app-diffusion-blue-large",
|
||||
"rule" : ".app-diffusion-blue-large, .phabricator-crumb-view:hover .app-diffusion-dark-large",
|
||||
"hash" : "35e35c07ca1a151c810bb38a90496a2d"
|
||||
"hash" : "b982cfacfde43d3267082bca236bc72c"
|
||||
},
|
||||
"app-diffusion-dark-large" : {
|
||||
"name" : "app-diffusion-dark-large",
|
||||
"rule" : ".app-diffusion-dark-large",
|
||||
"hash" : "5b3752babd557f2c9bbc0120bd9a0747"
|
||||
"hash" : "2eb71cde4af83347efdee542f4cadd8e"
|
||||
},
|
||||
"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" : "a5a682fffa03d4cdae9a86b8c79d1a81"
|
||||
"hash" : "55873c2e30e693e7bde0f4a90045064d"
|
||||
},
|
||||
"app-diffusion-light-large" : {
|
||||
"name" : "app-diffusion-light-large",
|
||||
"rule" : ".app-diffusion-light-large",
|
||||
"hash" : "1f04606fe4f0650982327bf09bf5adc0"
|
||||
"hash" : "6eeb6f6df3ecd1ee923081b2d82f0505"
|
||||
},
|
||||
"app-diviner-blue-large" : {
|
||||
"name" : "app-diviner-blue-large",
|
||||
"rule" : ".app-diviner-blue-large, .phabricator-crumb-view:hover .app-diviner-dark-large",
|
||||
"hash" : "97f1242c914315cf773c27bbec964335"
|
||||
"hash" : "bda64f504c0c2c34125758bd01c80e05"
|
||||
},
|
||||
"app-diviner-dark-large" : {
|
||||
"name" : "app-diviner-dark-large",
|
||||
"rule" : ".app-diviner-dark-large",
|
||||
"hash" : "c4f0550826f60fcd48d6ebcd340184b4"
|
||||
"hash" : "786a865464564d66d458557c909a77ea"
|
||||
},
|
||||
"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" : "7f7f0e1886036d894a5b22b72872ad06"
|
||||
"hash" : "d173b3a659a2a4b5af5890ba70e827d1"
|
||||
},
|
||||
"app-diviner-light-large" : {
|
||||
"name" : "app-diviner-light-large",
|
||||
"rule" : ".app-diviner-light-large",
|
||||
"hash" : "b13413ada716fa7d3449c38b11decd5d"
|
||||
"hash" : "c515bc52cb560adebce1e84bb5d917ce"
|
||||
},
|
||||
"app-drydock-blue-large" : {
|
||||
"name" : "app-drydock-blue-large",
|
||||
"rule" : ".app-drydock-blue-large, .phabricator-crumb-view:hover .app-drydock-dark-large",
|
||||
"hash" : "a63aaba405583e356f00af6bc1dedfad"
|
||||
"hash" : "ba82e330a78dd60df033560e083601cf"
|
||||
},
|
||||
"app-drydock-dark-large" : {
|
||||
"name" : "app-drydock-dark-large",
|
||||
"rule" : ".app-drydock-dark-large",
|
||||
"hash" : "a97be15640a38db803cc03215968e856"
|
||||
"hash" : "7a41b9668c77b85b8acf048d9e61c50a"
|
||||
},
|
||||
"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" : "d7beac10376044ffda0adbe6ed01e645"
|
||||
"hash" : "f5866c62ecbc94ecacd1563d2780677d"
|
||||
},
|
||||
"app-drydock-light-large" : {
|
||||
"name" : "app-drydock-light-large",
|
||||
"rule" : ".app-drydock-light-large",
|
||||
"hash" : "712c8fa45f964e0c4cbb69321fd1fded"
|
||||
"hash" : "2c1ce32d5d5291e7d3d3d6e9323a2a65"
|
||||
},
|
||||
"app-fact-blue-large" : {
|
||||
"name" : "app-fact-blue-large",
|
||||
"rule" : ".app-fact-blue-large, .phabricator-crumb-view:hover .app-fact-dark-large",
|
||||
"hash" : "4b07b51e2178f12533c04c55d522d9e5"
|
||||
"hash" : "1e2b911cb36b0d44384487e348892ccc"
|
||||
},
|
||||
"app-fact-dark-large" : {
|
||||
"name" : "app-fact-dark-large",
|
||||
"rule" : ".app-fact-dark-large",
|
||||
"hash" : "6040fe830d8f0868cdb38ee2b8ee16ac"
|
||||
"hash" : "5fb4a988baad433e9900f1a814b89caa"
|
||||
},
|
||||
"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" : "691ab101af38d4f06421ca0b22e463d9"
|
||||
"hash" : "5bd7e5f2adfa0935ae97270139ec4912"
|
||||
},
|
||||
"app-fact-light-large" : {
|
||||
"name" : "app-fact-light-large",
|
||||
"rule" : ".app-fact-light-large",
|
||||
"hash" : "8253f813361ba065866ee6e6e2077320"
|
||||
"hash" : "3bc45d399dad8ec8d55873714c42c1d7"
|
||||
},
|
||||
"app-feed-blue-large" : {
|
||||
"name" : "app-feed-blue-large",
|
||||
"rule" : ".app-feed-blue-large, .phabricator-crumb-view:hover .app-feed-dark-large",
|
||||
"hash" : "462246f99422c86301b7d4faa67d9488"
|
||||
"hash" : "3bcdec795b38002644a8009c927a0acc"
|
||||
},
|
||||
"app-feed-dark-large" : {
|
||||
"name" : "app-feed-dark-large",
|
||||
"rule" : ".app-feed-dark-large",
|
||||
"hash" : "0eecff752dc5dde55e7feaa52b7ee7d0"
|
||||
"hash" : "e83834eccc699399b604069b95465cff"
|
||||
},
|
||||
"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" : "45fe559a997e540933c184ae570a6ddc"
|
||||
"hash" : "ca2fb9a2cd437b465f5d912a4d26f3e5"
|
||||
},
|
||||
"app-feed-light-large" : {
|
||||
"name" : "app-feed-light-large",
|
||||
"rule" : ".app-feed-light-large",
|
||||
"hash" : "2ec6e12956fe1e1b746261bb3d0a0d36"
|
||||
"hash" : "e3a8add13539550ddaab62f84b30dd66"
|
||||
},
|
||||
"app-files-blue-large" : {
|
||||
"name" : "app-files-blue-large",
|
||||
"rule" : ".app-files-blue-large, .phabricator-crumb-view:hover .app-files-dark-large",
|
||||
"hash" : "f9217c49be154a830303285ae64790c8"
|
||||
"hash" : "4505af3a9261a1ee4e00bf1d046286dd"
|
||||
},
|
||||
"app-files-dark-large" : {
|
||||
"name" : "app-files-dark-large",
|
||||
"rule" : ".app-files-dark-large",
|
||||
"hash" : "78fb66b9edc99c3694325548582f0506"
|
||||
"hash" : "1d229c79f3b8301ca1ee38ccd9c7c142"
|
||||
},
|
||||
"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" : "cabf071ace59043fc877f1e962109c83"
|
||||
"hash" : "4bd7617617d0af975282bdd9a399d0ab"
|
||||
},
|
||||
"app-files-light-large" : {
|
||||
"name" : "app-files-light-large",
|
||||
"rule" : ".app-files-light-large",
|
||||
"hash" : "ee5503d0684ea20be40023a29589d322"
|
||||
"hash" : "0d8bf609759312d89e2a4b148f0701d8"
|
||||
},
|
||||
"app-flags-blue-large" : {
|
||||
"name" : "app-flags-blue-large",
|
||||
"rule" : ".app-flags-blue-large, .phabricator-crumb-view:hover .app-flags-dark-large",
|
||||
"hash" : "8bbdefdaba30bf6a020f8515ee33d452"
|
||||
"hash" : "a6f52b520f88e4ef60b7a76fb3c2c597"
|
||||
},
|
||||
"app-flags-dark-large" : {
|
||||
"name" : "app-flags-dark-large",
|
||||
"rule" : ".app-flags-dark-large",
|
||||
"hash" : "c6824e1362ec59ccf9ad8f451da466c1"
|
||||
"hash" : "51307234bb3c309b3ea69381e0b72b16"
|
||||
},
|
||||
"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" : "e728b1018c62d24efa5d416d138cb671"
|
||||
"hash" : "75c1c107f4e750ef27bf50b4b51b0e00"
|
||||
},
|
||||
"app-flags-light-large" : {
|
||||
"name" : "app-flags-light-large",
|
||||
"rule" : ".app-flags-light-large",
|
||||
"hash" : "4a40dc3e18011a8283840e5dfbe14dc9"
|
||||
"hash" : "8c198ba5bcd146595870bab777d4992e"
|
||||
},
|
||||
"app-help-blue-large" : {
|
||||
"name" : "app-help-blue-large",
|
||||
"rule" : ".app-help-blue-large, .phabricator-crumb-view:hover .app-help-dark-large",
|
||||
"hash" : "703f8c674cdd22f1314ffe8977acf35b"
|
||||
"hash" : "a74c4f436b2e70c0e06f4224953d064a"
|
||||
},
|
||||
"app-help-dark-large" : {
|
||||
"name" : "app-help-dark-large",
|
||||
"rule" : ".app-help-dark-large",
|
||||
"hash" : "601aaf7047f9db41baf7e3393b0d7aeb"
|
||||
"hash" : "3cbd366c4b5758e45ef07507c70f68c0"
|
||||
},
|
||||
"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" : "1a2928f28cbfdcc31f411e7d2dc26447"
|
||||
"hash" : "c795358a116961342b206821a1b8038b"
|
||||
},
|
||||
"app-help-light-large" : {
|
||||
"name" : "app-help-light-large",
|
||||
"rule" : ".app-help-light-large",
|
||||
"hash" : "c17b8e6228f844777177c5070e17dd91"
|
||||
"hash" : "722eceffe63605b00a5b957b5f40db98"
|
||||
},
|
||||
"app-herald-blue-large" : {
|
||||
"name" : "app-herald-blue-large",
|
||||
"rule" : ".app-herald-blue-large, .phabricator-crumb-view:hover .app-herald-dark-large",
|
||||
"hash" : "4bf9b4b872e7207d66c6e80dcad47b0e"
|
||||
"hash" : "9edfe47e8f1f2c4f1071f4d8b6ed346d"
|
||||
},
|
||||
"app-herald-dark-large" : {
|
||||
"name" : "app-herald-dark-large",
|
||||
"rule" : ".app-herald-dark-large",
|
||||
"hash" : "e19fd614bf5f904603517df957165b22"
|
||||
"hash" : "4b7a3ab5e0b6a04224ccb6e520e73d6e"
|
||||
},
|
||||
"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" : "13ef725e4f2da68211cf9ab17740c723"
|
||||
"hash" : "22beef0629ee517ba1a2b822ed440d0c"
|
||||
},
|
||||
"app-herald-light-large" : {
|
||||
"name" : "app-herald-light-large",
|
||||
"rule" : ".app-herald-light-large",
|
||||
"hash" : "81af2b9899db0b5c877d96016ddfa1a1"
|
||||
"hash" : "65bbeb68fd051b77f4871aafe2994f56"
|
||||
},
|
||||
"app-home-blue-large" : {
|
||||
"name" : "app-home-blue-large",
|
||||
"rule" : ".app-home-blue-large, .phabricator-crumb-view:hover .app-home-dark-large",
|
||||
"hash" : "7011cb276b9d7d1f042d2f0393a74312"
|
||||
"hash" : "7df64082c33dcc3d2263772c0393be70"
|
||||
},
|
||||
"app-home-dark-large" : {
|
||||
"name" : "app-home-dark-large",
|
||||
"rule" : ".app-home-dark-large",
|
||||
"hash" : "6b7f677ad630593900132f6271c41cb4"
|
||||
"hash" : "79acb839094adcb3ad94567c054801eb"
|
||||
},
|
||||
"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" : "8b61be58e6a4f0e9e73434c40844260b"
|
||||
"hash" : "5af620ae48ba98ee4ee594c32ba761cb"
|
||||
},
|
||||
"app-home-light-large" : {
|
||||
"name" : "app-home-light-large",
|
||||
"rule" : ".app-home-light-large",
|
||||
"hash" : "f0740b16cd3746a1234070f1785c03eb"
|
||||
"hash" : "181a71639319f3beda59809963384250"
|
||||
},
|
||||
"app-logo-blue-large" : {
|
||||
"name" : "app-logo-blue-large",
|
||||
"rule" : ".app-logo-blue-large, .phabricator-crumb-view:hover .app-logo-dark-large",
|
||||
"hash" : "64a8124698f9441f50230f3a63364dd7"
|
||||
"hash" : "025f46665b079f5899ec53be09165d09"
|
||||
},
|
||||
"app-logo-dark-large" : {
|
||||
"name" : "app-logo-dark-large",
|
||||
"rule" : ".app-logo-dark-large",
|
||||
"hash" : "8023a60fcba24c3f200214152a62a2c3"
|
||||
"hash" : "20524d2868b7b57423aa8dc27b284cac"
|
||||
},
|
||||
"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" : "c742c782b92cc5fecdc1a9747568ad70"
|
||||
"hash" : "3969545781a17ec856bacec4ed110506"
|
||||
},
|
||||
"app-logo-light-large" : {
|
||||
"name" : "app-logo-light-large",
|
||||
"rule" : ".app-logo-light-large",
|
||||
"hash" : "52fc06fb90f7ec1c29498069b1a059b2"
|
||||
"hash" : "bd1b66ffad9ee26019738fc00a7eb343"
|
||||
},
|
||||
"app-macro-blue-large" : {
|
||||
"name" : "app-macro-blue-large",
|
||||
"rule" : ".app-macro-blue-large, .phabricator-crumb-view:hover .app-macro-dark-large",
|
||||
"hash" : "50c14fec9a7f913c8aa4a2793bf2867c"
|
||||
"hash" : "a6116a196718bf6cd5337b4c49de710e"
|
||||
},
|
||||
"app-macro-dark-large" : {
|
||||
"name" : "app-macro-dark-large",
|
||||
"rule" : ".app-macro-dark-large",
|
||||
"hash" : "890cde6b9407d00c6394d446974674ff"
|
||||
"hash" : "583a495f319fb63f99400b0197832dce"
|
||||
},
|
||||
"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" : "a3aaa9ebca64e5659e8c3c4eebdedd7a"
|
||||
"hash" : "16d2c3aeabb43a51bb5742c67c4b92a1"
|
||||
},
|
||||
"app-macro-light-large" : {
|
||||
"name" : "app-macro-light-large",
|
||||
"rule" : ".app-macro-light-large",
|
||||
"hash" : "7dcba4f0560b9e197849f5540b7ec66d"
|
||||
"hash" : "b073066348826c93f57ba76f746e5c7e"
|
||||
},
|
||||
"app-mail-blue-large" : {
|
||||
"name" : "app-mail-blue-large",
|
||||
"rule" : ".app-mail-blue-large, .phabricator-crumb-view:hover .app-mail-dark-large",
|
||||
"hash" : "a0a94c194794bb435ea3152ecb2cd42d"
|
||||
"hash" : "192f85bd7a5be296de7acff9bbc9bd1d"
|
||||
},
|
||||
"app-mail-dark-large" : {
|
||||
"name" : "app-mail-dark-large",
|
||||
"rule" : ".app-mail-dark-large",
|
||||
"hash" : "1a1437047fd24b9bb2643435185b6f13"
|
||||
"hash" : "4709516a74216e0ba886a30180ad93d4"
|
||||
},
|
||||
"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" : "141548cae4bf8265be9452e583be3504"
|
||||
"hash" : "1f0d2be98c3771791db7a9ad20784872"
|
||||
},
|
||||
"app-mail-light-large" : {
|
||||
"name" : "app-mail-light-large",
|
||||
"rule" : ".app-mail-light-large",
|
||||
"hash" : "27aec2b8d5bd1fb7eba00ffbaacf1930"
|
||||
"hash" : "740ea3d3104365ab7bad981b13d23693"
|
||||
},
|
||||
"app-maniphest-blue-large" : {
|
||||
"name" : "app-maniphest-blue-large",
|
||||
"rule" : ".app-maniphest-blue-large, .phabricator-crumb-view:hover .app-maniphest-dark-large",
|
||||
"hash" : "619ff6fea2c90a8d70b000ed0ece6e4b"
|
||||
"hash" : "d667667cc5216ff510cb58c359ffc2a4"
|
||||
},
|
||||
"app-maniphest-dark-large" : {
|
||||
"name" : "app-maniphest-dark-large",
|
||||
"rule" : ".app-maniphest-dark-large",
|
||||
"hash" : "7a204fc2f4779eff27847bf799652140"
|
||||
"hash" : "acadb7737b24ecc23e892cdaab7c1fe2"
|
||||
},
|
||||
"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" : "2b67eff9fb01bdf0972749532301e038"
|
||||
"hash" : "8dccd7ba95ddffc4e071e42b69773f5c"
|
||||
},
|
||||
"app-maniphest-light-large" : {
|
||||
"name" : "app-maniphest-light-large",
|
||||
"rule" : ".app-maniphest-light-large",
|
||||
"hash" : "90ea395741410840b1b4a974f802b06c"
|
||||
"hash" : "0d2c71a1279686c3884c267d98bc36ba"
|
||||
},
|
||||
"app-metamta-blue-large" : {
|
||||
"name" : "app-metamta-blue-large",
|
||||
"rule" : ".app-metamta-blue-large, .phabricator-crumb-view:hover .app-metamta-dark-large",
|
||||
"hash" : "48af88efc2887cc985f09d5202922df0"
|
||||
"hash" : "1757d281dcdbdf221ca2b2e90993dba8"
|
||||
},
|
||||
"app-metamta-dark-large" : {
|
||||
"name" : "app-metamta-dark-large",
|
||||
"rule" : ".app-metamta-dark-large",
|
||||
"hash" : "bf18a2c7ef31e72dc9ce6695035baf60"
|
||||
"hash" : "c5f3a7468d98ebb977bfb0cc81abd5ee"
|
||||
},
|
||||
"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" : "74c00295bf0d394e6427593665a271f1"
|
||||
"hash" : "5f7b115d45e5d3a5a5a730173366f2e4"
|
||||
},
|
||||
"app-metamta-light-large" : {
|
||||
"name" : "app-metamta-light-large",
|
||||
"rule" : ".app-metamta-light-large",
|
||||
"hash" : "720cc7f66ab36770998aa4fe9ad22785"
|
||||
"hash" : "13ce4ca0f223cda37e3af39da8c6e564"
|
||||
},
|
||||
"app-owners-blue-large" : {
|
||||
"name" : "app-owners-blue-large",
|
||||
"rule" : ".app-owners-blue-large, .phabricator-crumb-view:hover .app-owners-dark-large",
|
||||
"hash" : "ee909b2d51a3c52b38c0cca3da8d861d"
|
||||
"hash" : "585c128af418f94b8fbf18206605ec84"
|
||||
},
|
||||
"app-owners-dark-large" : {
|
||||
"name" : "app-owners-dark-large",
|
||||
"rule" : ".app-owners-dark-large",
|
||||
"hash" : "05a6fcc603b5ee346d25b1fb25e7e695"
|
||||
"hash" : "b09a80f307491acbe56fb16e01956173"
|
||||
},
|
||||
"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" : "4bcba14ffcdf7ac3c1968ebcc34f7e37"
|
||||
"hash" : "a63816e6979ec6c222a086b5d72a0b86"
|
||||
},
|
||||
"app-owners-light-large" : {
|
||||
"name" : "app-owners-light-large",
|
||||
"rule" : ".app-owners-light-large",
|
||||
"hash" : "2d6b3f02f210c73242d91bdb9ef8456c"
|
||||
"hash" : "6b06493f46a91584e746e5034be15366"
|
||||
},
|
||||
"app-paste-blue-large" : {
|
||||
"name" : "app-paste-blue-large",
|
||||
"rule" : ".app-paste-blue-large, .phabricator-crumb-view:hover .app-paste-dark-large",
|
||||
"hash" : "2ce99237cc2f064f0aa48fb1d147c781"
|
||||
"hash" : "4a14c100c5b78282712dd2cc619d72b4"
|
||||
},
|
||||
"app-paste-dark-large" : {
|
||||
"name" : "app-paste-dark-large",
|
||||
"rule" : ".app-paste-dark-large",
|
||||
"hash" : "f566e3e0c8e6a17b7c2fc4168b079ede"
|
||||
"hash" : "03d3dded4964e60771c8a45549e13973"
|
||||
},
|
||||
"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" : "34333bbb31fb3909461cc064ea2f72e9"
|
||||
"hash" : "507192b6a41abdc1a886a144cc315326"
|
||||
},
|
||||
"app-paste-light-large" : {
|
||||
"name" : "app-paste-light-large",
|
||||
"rule" : ".app-paste-light-large",
|
||||
"hash" : "e77a206e1cbaf1417b4a0b9f3d67380a"
|
||||
"hash" : "66f1f8fe7acafaab5f608598589aaa5c"
|
||||
},
|
||||
"app-people-blue-large" : {
|
||||
"name" : "app-people-blue-large",
|
||||
"rule" : ".app-people-blue-large, .phabricator-crumb-view:hover .app-people-dark-large",
|
||||
"hash" : "37fcac5bc4ad63c37d68da2c77717301"
|
||||
"hash" : "ed242e94b2b5698fd90261ca63aef8a6"
|
||||
},
|
||||
"app-people-dark-large" : {
|
||||
"name" : "app-people-dark-large",
|
||||
"rule" : ".app-people-dark-large",
|
||||
"hash" : "01fb27eba95c01d1aadde04ea4513caa"
|
||||
"hash" : "b1748b3a5afacd4f8afcd5ea37352dc7"
|
||||
},
|
||||
"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" : "6d859c1505f5877b86faf34385bbcd59"
|
||||
"hash" : "ed1b2d2d27ae8fd07d0e5e1d4002625e"
|
||||
},
|
||||
"app-people-light-large" : {
|
||||
"name" : "app-people-light-large",
|
||||
"rule" : ".app-people-light-large",
|
||||
"hash" : "d1d80fddc9e6295494d12b72b4700dc5"
|
||||
"hash" : "f6efcbdbcee02f9f37f92774b4b0e4cf"
|
||||
},
|
||||
"app-phame-blue-large" : {
|
||||
"name" : "app-phame-blue-large",
|
||||
"rule" : ".app-phame-blue-large, .phabricator-crumb-view:hover .app-phame-dark-large",
|
||||
"hash" : "f72bd35227e9ba2157852377e2d87ec4"
|
||||
"hash" : "d448b392b7bc927b9b5522d525fa8c49"
|
||||
},
|
||||
"app-phame-dark-large" : {
|
||||
"name" : "app-phame-dark-large",
|
||||
"rule" : ".app-phame-dark-large",
|
||||
"hash" : "7bfe54cf7d885985fb7e06ad0abaf4e9"
|
||||
"hash" : "a7cf2f8ec22cdb675a3bc792c7c1edf6"
|
||||
},
|
||||
"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" : "60013586092f2c5eb5ed1f58c7f02a74"
|
||||
"hash" : "4587c25ff8a94fd48a1a0ca2e9fd9f42"
|
||||
},
|
||||
"app-phame-light-large" : {
|
||||
"name" : "app-phame-light-large",
|
||||
"rule" : ".app-phame-light-large",
|
||||
"hash" : "5266f8774d0470adc65f610c9175a251"
|
||||
"hash" : "265471ec8d3c7ddeb3c269384d22243d"
|
||||
},
|
||||
"app-phid-blue-large" : {
|
||||
"name" : "app-phid-blue-large",
|
||||
"rule" : ".app-phid-blue-large, .phabricator-crumb-view:hover .app-phid-dark-large",
|
||||
"hash" : "d726ca94608547ff3974a1d49e6b1012"
|
||||
"hash" : "b94bc233e1bcf520c65351b71794c228"
|
||||
},
|
||||
"app-phid-dark-large" : {
|
||||
"name" : "app-phid-dark-large",
|
||||
"rule" : ".app-phid-dark-large",
|
||||
"hash" : "04af0c932bea8b7c36f6dc954994ea11"
|
||||
"hash" : "f4dfdcc8e1fde50cfcb7e07376696964"
|
||||
},
|
||||
"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" : "b1e8a6e4ac9ad64d34fbc7560d507e5b"
|
||||
"hash" : "10ec316b409b385e19800048fcb1a79e"
|
||||
},
|
||||
"app-phid-light-large" : {
|
||||
"name" : "app-phid-light-large",
|
||||
"rule" : ".app-phid-light-large",
|
||||
"hash" : "0ba23a08c29e8064fdddee9112c638e3"
|
||||
"hash" : "0087c573b07d8badaeadcb8ad560ae9b"
|
||||
},
|
||||
"app-pholio-blue-large" : {
|
||||
"name" : "app-pholio-blue-large",
|
||||
"rule" : ".app-pholio-blue-large, .phabricator-crumb-view:hover .app-pholio-dark-large",
|
||||
"hash" : "08bfdf63411a09e6be88d99128c1e9f8"
|
||||
"hash" : "5b8e3f47a49a0dee84c1b7c228884f0c"
|
||||
},
|
||||
"app-pholio-dark-large" : {
|
||||
"name" : "app-pholio-dark-large",
|
||||
"rule" : ".app-pholio-dark-large",
|
||||
"hash" : "2a8bfa3870726691766fe3f6cb73df38"
|
||||
"hash" : "4a73276e5bcd9cfbb08435ed36051dff"
|
||||
},
|
||||
"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" : "499b68a80e78ab5f6ebe5ba7470fbb4a"
|
||||
"hash" : "aca383c3c4fcec4742a11702e3427221"
|
||||
},
|
||||
"app-pholio-light-large" : {
|
||||
"name" : "app-pholio-light-large",
|
||||
"rule" : ".app-pholio-light-large",
|
||||
"hash" : "9a4d4223e6e1d7a77c4545504ea0908c"
|
||||
"hash" : "1a3ace478c2b0f9b444005112e17c695"
|
||||
},
|
||||
"app-phpast-blue-large" : {
|
||||
"name" : "app-phpast-blue-large",
|
||||
"rule" : ".app-phpast-blue-large, .phabricator-crumb-view:hover .app-phpast-dark-large",
|
||||
"hash" : "a9f4f0a62e5841b2ed669dc02694419d"
|
||||
"hash" : "22ba8a058d6b920a909c5f6731f301a0"
|
||||
},
|
||||
"app-phpast-dark-large" : {
|
||||
"name" : "app-phpast-dark-large",
|
||||
"rule" : ".app-phpast-dark-large",
|
||||
"hash" : "1dbc83cc09d722253b634f3308608627"
|
||||
"hash" : "bdbfd96cb50a8b7450daf82576fcfe95"
|
||||
},
|
||||
"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" : "e98e4cdc93e51b0d7c1df25c01c75fac"
|
||||
"hash" : "ce7433350eeaee95ecf358905ad38029"
|
||||
},
|
||||
"app-phpast-light-large" : {
|
||||
"name" : "app-phpast-light-large",
|
||||
"rule" : ".app-phpast-light-large",
|
||||
"hash" : "c63fb0fe3cc326f1a19e4e59c42a73f7"
|
||||
"hash" : "5ebd26eb5e0bc0229db5696020dd9b4a"
|
||||
},
|
||||
"app-phriction-blue-large" : {
|
||||
"name" : "app-phriction-blue-large",
|
||||
"rule" : ".app-phriction-blue-large, .phabricator-crumb-view:hover .app-phriction-dark-large",
|
||||
"hash" : "55bbded073e078117369f42e05b5b5c4"
|
||||
"hash" : "0134e9d694ce72a6d9c554e639a6ed50"
|
||||
},
|
||||
"app-phriction-dark-large" : {
|
||||
"name" : "app-phriction-dark-large",
|
||||
"rule" : ".app-phriction-dark-large",
|
||||
"hash" : "944c3a520a484580895b287eaaa103b1"
|
||||
"hash" : "e4f3121261bc96e00bb6b94b467582f4"
|
||||
},
|
||||
"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" : "84639b5ccba94daf1850a9449131a078"
|
||||
"hash" : "27612f55aaa40c4178a3a5a46d225947"
|
||||
},
|
||||
"app-phriction-light-large" : {
|
||||
"name" : "app-phriction-light-large",
|
||||
"rule" : ".app-phriction-light-large",
|
||||
"hash" : "2ca79fdfd141b0fe00ff8b2e13df73bf"
|
||||
"hash" : "a56dcfca00861938d337cc2f217b33f6"
|
||||
},
|
||||
"app-ponder-blue-large" : {
|
||||
"name" : "app-ponder-blue-large",
|
||||
"rule" : ".app-ponder-blue-large, .phabricator-crumb-view:hover .app-ponder-dark-large",
|
||||
"hash" : "8018fe4ebc1e9af91a8a737e0505aa5d"
|
||||
"hash" : "1bfc2f6150bd67cc25cbe1fbc9283f9c"
|
||||
},
|
||||
"app-ponder-dark-large" : {
|
||||
"name" : "app-ponder-dark-large",
|
||||
"rule" : ".app-ponder-dark-large",
|
||||
"hash" : "1da67495789c69621f91800939ea9684"
|
||||
"hash" : "6efc0b3a74d2cc9eb5de96205613b640"
|
||||
},
|
||||
"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" : "f73a1b5a6b688c6d3feba14193357147"
|
||||
"hash" : "9c2a2506e53e6a902976d504dfe94b46"
|
||||
},
|
||||
"app-ponder-light-large" : {
|
||||
"name" : "app-ponder-light-large",
|
||||
"rule" : ".app-ponder-light-large",
|
||||
"hash" : "eb8b13c3bc35f36b14f33ef1158b71ab"
|
||||
"hash" : "595895068b10c68b0e05234570a6a268"
|
||||
},
|
||||
"app-power-blue-large" : {
|
||||
"name" : "app-power-blue-large",
|
||||
"rule" : ".app-power-blue-large, .phabricator-crumb-view:hover .app-power-dark-large",
|
||||
"hash" : "743499c84546b7b35139eec60bf74c34"
|
||||
"hash" : "c3e03022f162f986f784b2a43c8784c7"
|
||||
},
|
||||
"app-power-dark-large" : {
|
||||
"name" : "app-power-dark-large",
|
||||
"rule" : ".app-power-dark-large",
|
||||
"hash" : "1a3520a2ec255f5b7f1779ea66153ade"
|
||||
"hash" : "52d04564ca2cc7f3a96809e827162f3e"
|
||||
},
|
||||
"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" : "3951e012561a0d5d5d2b00711b13fa9c"
|
||||
"hash" : "3f7719f0299abef8ba900e79fb6b5015"
|
||||
},
|
||||
"app-power-light-large" : {
|
||||
"name" : "app-power-light-large",
|
||||
"rule" : ".app-power-light-large",
|
||||
"hash" : "52d04bd829dfe7477a9dc2ef916990ab"
|
||||
"hash" : "ffe9f181e6103eab9fc688ab84b07ad1"
|
||||
},
|
||||
"app-projects-blue-large" : {
|
||||
"name" : "app-projects-blue-large",
|
||||
"rule" : ".app-projects-blue-large, .phabricator-crumb-view:hover .app-projects-dark-large",
|
||||
"hash" : "278113829ca3543b9377030555e04edc"
|
||||
"hash" : "494ca64479f68588823e00609496414a"
|
||||
},
|
||||
"app-projects-dark-large" : {
|
||||
"name" : "app-projects-dark-large",
|
||||
"rule" : ".app-projects-dark-large",
|
||||
"hash" : "b6f043db039d4960397f76904a84e9fc"
|
||||
"hash" : "fa85ad644a2e289cb6bea2a67ab534f8"
|
||||
},
|
||||
"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" : "3d1bf3efdbd9ccdbb73fc3a11d5d1265"
|
||||
"hash" : "b28bf212416595b3ba4bfb528dfaf791"
|
||||
},
|
||||
"app-projects-light-large" : {
|
||||
"name" : "app-projects-light-large",
|
||||
"rule" : ".app-projects-light-large",
|
||||
"hash" : "88c73c7cb50ce7cf9cd8d33ec20c8245"
|
||||
"hash" : "228db63ac0e80b3cef46903a003a44df"
|
||||
},
|
||||
"app-repositories-blue-large" : {
|
||||
"name" : "app-repositories-blue-large",
|
||||
"rule" : ".app-repositories-blue-large, .phabricator-crumb-view:hover .app-repositories-dark-large",
|
||||
"hash" : "0642bf1118210cef9105cc463ec3d36f"
|
||||
"hash" : "a83dd2186f9d92949f19a97f8f777a9c"
|
||||
},
|
||||
"app-repositories-dark-large" : {
|
||||
"name" : "app-repositories-dark-large",
|
||||
"rule" : ".app-repositories-dark-large",
|
||||
"hash" : "c92eb4e857d74f1ef206ba5b184ad88c"
|
||||
"hash" : "30ead88c9f018797a8d5ef2f4e4221fe"
|
||||
},
|
||||
"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" : "7fe40fbb4150dfbc6133c79578fc1494"
|
||||
"hash" : "44b04cbf1652211fbc2046c7773b4cf2"
|
||||
},
|
||||
"app-repositories-light-large" : {
|
||||
"name" : "app-repositories-light-large",
|
||||
"rule" : ".app-repositories-light-large",
|
||||
"hash" : "446a7eab7b7fc07329bc21a77c438033"
|
||||
"hash" : "bcba180d121f9269787509ba7cdd3e48"
|
||||
},
|
||||
"app-settings-blue-large" : {
|
||||
"name" : "app-settings-blue-large",
|
||||
"rule" : ".app-settings-blue-large, .phabricator-crumb-view:hover .app-settings-dark-large",
|
||||
"hash" : "4d22a7f016509777bb5b55f39198d9d7"
|
||||
"hash" : "c615df792c7e81b35cfbb78ece39e796"
|
||||
},
|
||||
"app-settings-dark-large" : {
|
||||
"name" : "app-settings-dark-large",
|
||||
"rule" : ".app-settings-dark-large",
|
||||
"hash" : "55e0869a51f70cacdd72f2baad4b28ce"
|
||||
"hash" : "6c174857e23a9d169d0cb4079aa14637"
|
||||
},
|
||||
"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" : "314ab0f607baa65ff6a684b1ddd4861d"
|
||||
"hash" : "4d8c68dc709d99141a19aad5bc483971"
|
||||
},
|
||||
"app-settings-light-large" : {
|
||||
"name" : "app-settings-light-large",
|
||||
"rule" : ".app-settings-light-large",
|
||||
"hash" : "41da4708f38fae918af46505e566bd6a"
|
||||
"hash" : "e901b672f2a51ef286369bfea70a7e8d"
|
||||
},
|
||||
"app-setup-blue-large" : {
|
||||
"name" : "app-setup-blue-large",
|
||||
"rule" : ".app-setup-blue-large, .phabricator-crumb-view:hover .app-setup-dark-large",
|
||||
"hash" : "74d2ba681cdad54b31d53f7c174f5826"
|
||||
"hash" : "a2f8f470c3cd928e8c1a6959ff745789"
|
||||
},
|
||||
"app-setup-dark-large" : {
|
||||
"name" : "app-setup-dark-large",
|
||||
"rule" : ".app-setup-dark-large",
|
||||
"hash" : "89a94fe1ce36351d3ea81f1776fb061a"
|
||||
"hash" : "3183fafc1dc05b851ba902ace2dfa34d"
|
||||
},
|
||||
"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" : "53942c73b14210f5bf0bfad68bcb4431"
|
||||
"hash" : "d91b7e5480cb4296871b9f1c4c634256"
|
||||
},
|
||||
"app-setup-light-large" : {
|
||||
"name" : "app-setup-light-large",
|
||||
"rule" : ".app-setup-light-large",
|
||||
"hash" : "890dd2d7cb1e51992b202dd462d56ba6"
|
||||
"hash" : "419829d244a85f97d67fb45c6febd4e5"
|
||||
},
|
||||
"app-slowvote-blue-large" : {
|
||||
"name" : "app-slowvote-blue-large",
|
||||
"rule" : ".app-slowvote-blue-large, .phabricator-crumb-view:hover .app-slowvote-dark-large",
|
||||
"hash" : "12299956375e7f382217ebf8c1cb8203"
|
||||
"hash" : "941028e7abbe491e2911fb24c4a8edca"
|
||||
},
|
||||
"app-slowvote-dark-large" : {
|
||||
"name" : "app-slowvote-dark-large",
|
||||
"rule" : ".app-slowvote-dark-large",
|
||||
"hash" : "ce57e4a318e4e8d556f713b459e6d798"
|
||||
"hash" : "6197df3550b652011bc1a8da00005059"
|
||||
},
|
||||
"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" : "dcd5be64ded69e0fdfee5364367c9b55"
|
||||
"hash" : "43783af8df4f99e94f0989ca149264f2"
|
||||
},
|
||||
"app-slowvote-light-large" : {
|
||||
"name" : "app-slowvote-light-large",
|
||||
"rule" : ".app-slowvote-light-large",
|
||||
"hash" : "7ac2515f26b194a9fafaa6a27997be2a"
|
||||
"hash" : "23eb39153b5ac9b5bd91c8b800023d93"
|
||||
},
|
||||
"app-uiexamples-blue-large" : {
|
||||
"name" : "app-uiexamples-blue-large",
|
||||
"rule" : ".app-uiexamples-blue-large, .phabricator-crumb-view:hover .app-uiexamples-dark-large",
|
||||
"hash" : "7add7df6b621c4af5322160bc1cd31b2"
|
||||
"hash" : "eabac7f7b83c47618a5f72b6f30b6410"
|
||||
},
|
||||
"app-uiexamples-dark-large" : {
|
||||
"name" : "app-uiexamples-dark-large",
|
||||
"rule" : ".app-uiexamples-dark-large",
|
||||
"hash" : "d8563a5f06692a313a2eff11235d5d0d"
|
||||
"hash" : "31c9fb99289cc73aae73f3acad66b449"
|
||||
},
|
||||
"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" : "0532cdd91b6de17ab194bd29cacfc24f"
|
||||
"hash" : "069e59208dad509a6c3d74d102f08ae8"
|
||||
},
|
||||
"app-uiexamples-light-large" : {
|
||||
"name" : "app-uiexamples-light-large",
|
||||
"rule" : ".app-uiexamples-light-large",
|
||||
"hash" : "ee40dd0e3168f8e7fb520665a1d50f95"
|
||||
"hash" : "b384102bcee1b312b2e06abc5f4b27de"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
|
@ -4,197 +4,197 @@
|
|||
"app-application-dark" : {
|
||||
"name" : "app-application-dark",
|
||||
"rule" : ".app-application-dark",
|
||||
"hash" : "60e228106718bf6f3ee5024400d31f24"
|
||||
"hash" : "89f861c28e97878311885623cff3d314"
|
||||
},
|
||||
"app-audit-dark" : {
|
||||
"name" : "app-audit-dark",
|
||||
"rule" : ".app-audit-dark",
|
||||
"hash" : "38339b9cc4e39cbbbea36dcf039873bb"
|
||||
"hash" : "2c141bc445c4fe62986cd6cff0c29b36"
|
||||
},
|
||||
"app-calendar-dark" : {
|
||||
"name" : "app-calendar-dark",
|
||||
"rule" : ".app-calendar-dark",
|
||||
"hash" : "756d60566639ad1424444436a95c6a3f"
|
||||
"hash" : "04c61a081986f0d38cf27fc4e18bce40"
|
||||
},
|
||||
"app-conduit-dark" : {
|
||||
"name" : "app-conduit-dark",
|
||||
"rule" : ".app-conduit-dark",
|
||||
"hash" : "01fba8ca32f1cfefb3516b45c9d28b40"
|
||||
"hash" : "7b410e96c87e7818fb93bdfa2ed9368f"
|
||||
},
|
||||
"app-conpherence-dark" : {
|
||||
"name" : "app-conpherence-dark",
|
||||
"rule" : ".app-conpherence-dark",
|
||||
"hash" : "dbb6fdd5f082a604b4ef10b7eeedbfa2"
|
||||
"hash" : "6d65bc8da41c3a59822b31f68b9b883c"
|
||||
},
|
||||
"app-countdown-dark" : {
|
||||
"name" : "app-countdown-dark",
|
||||
"rule" : ".app-countdown-dark",
|
||||
"hash" : "625f2589ee491aead58aaa5b965a7451"
|
||||
"hash" : "8891502317896beea6a5f9ec87eb5e2e"
|
||||
},
|
||||
"app-daemon-dark" : {
|
||||
"name" : "app-daemon-dark",
|
||||
"rule" : ".app-daemon-dark",
|
||||
"hash" : "4472be3242150f06ea5bf7b45333c4c5"
|
||||
"hash" : "23a9a2927b368e2328dd70f95c5b1a07"
|
||||
},
|
||||
"app-differential-dark" : {
|
||||
"name" : "app-differential-dark",
|
||||
"rule" : ".app-differential-dark",
|
||||
"hash" : "508401fe36d9636bdcbdcbcae253c152"
|
||||
"hash" : "bb7032f3c17901f242f9bbbcdc9a721c"
|
||||
},
|
||||
"app-diffusion-dark" : {
|
||||
"name" : "app-diffusion-dark",
|
||||
"rule" : ".app-diffusion-dark",
|
||||
"hash" : "0a6f8c85079c4a325430197adb05967c"
|
||||
"hash" : "46ab6648a6ae04e4fd1a28a9afcc4996"
|
||||
},
|
||||
"app-diviner-dark" : {
|
||||
"name" : "app-diviner-dark",
|
||||
"rule" : ".app-diviner-dark",
|
||||
"hash" : "08872eb1c6bb51b9727290f6fa802633"
|
||||
"hash" : "e21a74e866a6fc22a991b8df6efc3ca7"
|
||||
},
|
||||
"app-drydock-dark" : {
|
||||
"name" : "app-drydock-dark",
|
||||
"rule" : ".app-drydock-dark",
|
||||
"hash" : "d50309da57021c676774f9bdc68c5fe7"
|
||||
"hash" : "ed44013d98257a23306bad9c6b24760d"
|
||||
},
|
||||
"app-fact-dark" : {
|
||||
"name" : "app-fact-dark",
|
||||
"rule" : ".app-fact-dark",
|
||||
"hash" : "0c1be568e1ac05fca814718600190369"
|
||||
"hash" : "f373f38e784289b866ab914471c342ec"
|
||||
},
|
||||
"app-feed-dark" : {
|
||||
"name" : "app-feed-dark",
|
||||
"rule" : ".app-feed-dark",
|
||||
"hash" : "830232709eedbe6ce7cdbcebf182c86c"
|
||||
"hash" : "c4f1765e70615c6ee4cae6e8135fb969"
|
||||
},
|
||||
"app-files-dark" : {
|
||||
"name" : "app-files-dark",
|
||||
"rule" : ".app-files-dark",
|
||||
"hash" : "00f5ab7ea3e9367e378cf9f395400ed4"
|
||||
"hash" : "7faf45efa5b9b97e571bc66636ca1a15"
|
||||
},
|
||||
"app-flags-dark" : {
|
||||
"name" : "app-flags-dark",
|
||||
"rule" : ".app-flags-dark",
|
||||
"hash" : "6382f373f7b0e70522d80ce06ef62813"
|
||||
"hash" : "10298f695592714e27f72ef746ffd8a9"
|
||||
},
|
||||
"app-help-dark" : {
|
||||
"name" : "app-help-dark",
|
||||
"rule" : ".app-help-dark",
|
||||
"hash" : "2299a14e27d76fdf66209ef0042cc84f"
|
||||
"hash" : "5cf715cc566b98c87958793eebea5f35"
|
||||
},
|
||||
"app-herald-dark" : {
|
||||
"name" : "app-herald-dark",
|
||||
"rule" : ".app-herald-dark",
|
||||
"hash" : "b2193b62df3bd4cf5c8de514a07fb6c3"
|
||||
"hash" : "e3bc39a3dd1d66a0abf4594c608a3846"
|
||||
},
|
||||
"app-home-dark" : {
|
||||
"name" : "app-home-dark",
|
||||
"rule" : ".app-home-dark",
|
||||
"hash" : "88f020497fcbcf43729aa817695b174f"
|
||||
"hash" : "7e01fbdfa526919a2d90d2c29a6c9fa0"
|
||||
},
|
||||
"app-logo-dark" : {
|
||||
"name" : "app-logo-dark",
|
||||
"rule" : ".app-logo-dark",
|
||||
"hash" : "02e71ae2421f1949f2ef075c27e052c9"
|
||||
"hash" : "39701e1282fd120e77b09ed9fcddc686"
|
||||
},
|
||||
"app-macro-dark" : {
|
||||
"name" : "app-macro-dark",
|
||||
"rule" : ".app-macro-dark",
|
||||
"hash" : "8e0e72847a8f70eb3f8e60e7fb681c06"
|
||||
"hash" : "ef89457bcee666ad265de1659b9b8a62"
|
||||
},
|
||||
"app-mail-dark" : {
|
||||
"name" : "app-mail-dark",
|
||||
"rule" : ".app-mail-dark",
|
||||
"hash" : "a2a792fddc44be4ae0f1a601380c8449"
|
||||
"hash" : "4d05a5cd4360052183e91f61967a6c57"
|
||||
},
|
||||
"app-maniphest-dark" : {
|
||||
"name" : "app-maniphest-dark",
|
||||
"rule" : ".app-maniphest-dark",
|
||||
"hash" : "ea94fc7dbb2267adc33513f78916fe90"
|
||||
"hash" : "320da127d7f887e09965a0416d5e44d3"
|
||||
},
|
||||
"app-metamta-dark" : {
|
||||
"name" : "app-metamta-dark",
|
||||
"rule" : ".app-metamta-dark",
|
||||
"hash" : "8abbb6e74d1697f950a01dcd6c8077be"
|
||||
"hash" : "51f100c2a7a80149404dbc8b27f595a9"
|
||||
},
|
||||
"app-owners-dark" : {
|
||||
"name" : "app-owners-dark",
|
||||
"rule" : ".app-owners-dark",
|
||||
"hash" : "23b948cc1d32a0968785fbfca749dcdf"
|
||||
"hash" : "33c064dd3b7fc3f9eb934d0cf84f3af5"
|
||||
},
|
||||
"app-paste-dark" : {
|
||||
"name" : "app-paste-dark",
|
||||
"rule" : ".app-paste-dark",
|
||||
"hash" : "9e0c1d1fe03aebcb55a4d19be051e255"
|
||||
"hash" : "9482649caa8e5a46d277271092517b12"
|
||||
},
|
||||
"app-people-dark" : {
|
||||
"name" : "app-people-dark",
|
||||
"rule" : ".app-people-dark",
|
||||
"hash" : "0b3995fcd043b506a408de6e25ad5292"
|
||||
"hash" : "67245eafa79367e4e07289549cf34deb"
|
||||
},
|
||||
"app-phame-dark" : {
|
||||
"name" : "app-phame-dark",
|
||||
"rule" : ".app-phame-dark",
|
||||
"hash" : "24ff4d322bce13f1c156ce5361a03a07"
|
||||
"hash" : "029d7d48523cc43b0404bf40ccf56f8b"
|
||||
},
|
||||
"app-phid-dark" : {
|
||||
"name" : "app-phid-dark",
|
||||
"rule" : ".app-phid-dark",
|
||||
"hash" : "5a0ac05bbf36a7aeb36753d093c3c9f8"
|
||||
"hash" : "2099c2987fe3929ce1d9dec470c7699d"
|
||||
},
|
||||
"app-pholio-dark" : {
|
||||
"name" : "app-pholio-dark",
|
||||
"rule" : ".app-pholio-dark",
|
||||
"hash" : "7d3befd1c12dd464a5f5edbef4574a5c"
|
||||
"hash" : "aab47c79d2e03fdcaffb6f41dc1e0f06"
|
||||
},
|
||||
"app-phpast-dark" : {
|
||||
"name" : "app-phpast-dark",
|
||||
"rule" : ".app-phpast-dark",
|
||||
"hash" : "de1ad812c7a177c844fcff626b1abebf"
|
||||
"hash" : "e6db72b398f57d03a400c9c18bd3c412"
|
||||
},
|
||||
"app-phriction-dark" : {
|
||||
"name" : "app-phriction-dark",
|
||||
"rule" : ".app-phriction-dark",
|
||||
"hash" : "8596da3f375087db6a163c98f0c968ae"
|
||||
"hash" : "8064272206874a324d20d956c8fb10da"
|
||||
},
|
||||
"app-ponder-dark" : {
|
||||
"name" : "app-ponder-dark",
|
||||
"rule" : ".app-ponder-dark",
|
||||
"hash" : "232577eb875f383f45cb9dbd9a4e3976"
|
||||
"hash" : "abdb353635bed5cfd48a176b4340022f"
|
||||
},
|
||||
"app-power-dark" : {
|
||||
"name" : "app-power-dark",
|
||||
"rule" : ".app-power-dark",
|
||||
"hash" : "e3708b1b4bfdfc614d9cf630943e5bef"
|
||||
"hash" : "d3e943d1267206963d8f9419629c5581"
|
||||
},
|
||||
"app-projects-dark" : {
|
||||
"name" : "app-projects-dark",
|
||||
"rule" : ".app-projects-dark",
|
||||
"hash" : "5e799f1e95ecfd33cb67b6e4ac992043"
|
||||
"hash" : "6bd7c598e2f2cf0b77918a7b0fa8bd19"
|
||||
},
|
||||
"app-repositories-dark" : {
|
||||
"name" : "app-repositories-dark",
|
||||
"rule" : ".app-repositories-dark",
|
||||
"hash" : "736066962e96df88eacc04d734613a0e"
|
||||
"hash" : "db2823a16dae198145f53e8021170740"
|
||||
},
|
||||
"app-settings-dark" : {
|
||||
"name" : "app-settings-dark",
|
||||
"rule" : ".app-settings-dark",
|
||||
"hash" : "2fadcf918fb084bd3452712f700ae1a0"
|
||||
"hash" : "1c84d22b769730d9e8b6fcd3414de72c"
|
||||
},
|
||||
"app-setup-dark" : {
|
||||
"name" : "app-setup-dark",
|
||||
"rule" : ".app-setup-dark",
|
||||
"hash" : "061b80f3555ade1c36934474b61fe76b"
|
||||
"hash" : "27db76695d99be0c25368dc9e0932b17"
|
||||
},
|
||||
"app-slowvote-dark" : {
|
||||
"name" : "app-slowvote-dark",
|
||||
"rule" : ".app-slowvote-dark",
|
||||
"hash" : "e51cc1e6887f2deaff02d9c60aae36e0"
|
||||
"hash" : "0d5861fab4562ad21242e34f9a29a33e"
|
||||
},
|
||||
"app-uiexamples-dark" : {
|
||||
"name" : "app-uiexamples-dark",
|
||||
"rule" : ".app-uiexamples-dark",
|
||||
"hash" : "dd919fd2c10e7d1e0915f523ac3922ce"
|
||||
"hash" : "6416a3d9d9007673ee558433b80692a1"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
|
@ -4,72 +4,72 @@
|
|||
"conpher_calendar_off" : {
|
||||
"name" : "conpher_calendar_off",
|
||||
"rule" : ".conpher_calendar_off",
|
||||
"hash" : "a8228ab90fd90f4c2500d9285179bf26"
|
||||
"hash" : "9ead08702b8028d28aedfa1a0dfbe43a"
|
||||
},
|
||||
"conpher_calendar_on" : {
|
||||
"name" : "conpher_calendar_on",
|
||||
"rule" : ".conpher_calendar_on, .device-desktop .conpher_calendar_off:hover ",
|
||||
"hash" : "931243bc3c414782ddb2d1d9607908ba"
|
||||
"hash" : "f00d0854260ab1bc1a9b4f7f21a64f56"
|
||||
},
|
||||
"conpher_conversation_off" : {
|
||||
"name" : "conpher_conversation_off",
|
||||
"rule" : ".conpher_conversation_off",
|
||||
"hash" : "931abb0377898297a9a603a6d280b977"
|
||||
"hash" : "97f9e8131c741dbba8091a92776036dd"
|
||||
},
|
||||
"conpher_conversation_on" : {
|
||||
"name" : "conpher_conversation_on",
|
||||
"rule" : ".conpher_conversation_on, .device-desktop .conpher_conversation_off:hover ",
|
||||
"hash" : "0b8a39dc5019dac1975b7be2ca0ccbfa"
|
||||
"hash" : "01d5bae305a37debbc44f4131f0863dc"
|
||||
},
|
||||
"conpher_files_off" : {
|
||||
"name" : "conpher_files_off",
|
||||
"rule" : ".conpher_files_off",
|
||||
"hash" : "de1aee01b9b47b354e6ac280ae68bae1"
|
||||
"hash" : "b6a89827978cf06618d4ba572953049a"
|
||||
},
|
||||
"conpher_files_on" : {
|
||||
"name" : "conpher_files_on",
|
||||
"rule" : ".conpher_files_on, .device-desktop .conpher_files_off:hover ",
|
||||
"hash" : "9ccbbd5e86fd4ec87a11aee0c9ec8c60"
|
||||
"hash" : "05f38d8b45077a8a9b5bd21ecc15f958"
|
||||
},
|
||||
"conpher_list_off" : {
|
||||
"name" : "conpher_list_off",
|
||||
"rule" : ".conpher_list_off",
|
||||
"hash" : "2611311d0c2aec04416433be74d3a30e"
|
||||
"hash" : "6f9b685a553e58aa67668494a88f864c"
|
||||
},
|
||||
"conpher_list_on" : {
|
||||
"name" : "conpher_list_on",
|
||||
"rule" : ".conpher_list_on, .device-desktop .conpher_list_off:hover ",
|
||||
"hash" : "cee6de0301c84b0d195282642642afa0"
|
||||
"hash" : "7d495ee16be1162affd3a480ee4b86d4"
|
||||
},
|
||||
"conpher_more_off" : {
|
||||
"name" : "conpher_more_off",
|
||||
"rule" : ".conpher_more_off",
|
||||
"hash" : "3b7099bdde20a13864b48552b11e92c3"
|
||||
"hash" : "c65da03207be1e69ceaa09f15a95d8f4"
|
||||
},
|
||||
"conpher_more_on" : {
|
||||
"name" : "conpher_more_on",
|
||||
"rule" : ".conpher_more_on, .device-desktop .conpher_more_off:hover ",
|
||||
"hash" : "b146f0cff9c2e5f0b57f7ebcfe0704d3"
|
||||
"hash" : "70464cdbd30a77cad597c593ca40ab1f"
|
||||
},
|
||||
"conpher_people_off" : {
|
||||
"name" : "conpher_people_off",
|
||||
"rule" : ".conpher_people_off",
|
||||
"hash" : "641a6a21aa32a12416e85caf8a22e340"
|
||||
"hash" : "a40f1f129d2e3c33134a4103161c0792"
|
||||
},
|
||||
"conpher_people_on" : {
|
||||
"name" : "conpher_people_on",
|
||||
"rule" : ".conpher_people_on, .device-desktop .conpher_people_off:hover ",
|
||||
"hash" : "f13745fd7036564eefb1c0ebc3502a92"
|
||||
"hash" : "fd99a5b329ebe0144acc8fe669f0d936"
|
||||
},
|
||||
"conpher_settings_off" : {
|
||||
"name" : "conpher_settings_off",
|
||||
"rule" : ".conpher_settings_off",
|
||||
"hash" : "aa9ab000d9e33e3c50c2fe70367f30b4"
|
||||
"hash" : "e4b389edbeb7825e4304faf7d20f7469"
|
||||
},
|
||||
"conpher_settings_on" : {
|
||||
"name" : "conpher_settings_on",
|
||||
"rule" : ".conpher_settings_on, .device-desktop .conpher_settings_off:hover ",
|
||||
"hash" : "a5fe22965997f9559800ca7db5ea32c8"
|
||||
"hash" : "8ad76234fffb3f4cc59238ec3b4a6999"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
|
@ -4,67 +4,67 @@
|
|||
"gradient-black-dark" : {
|
||||
"name" : "gradient-black-dark",
|
||||
"rule" : ".gradient-black-dark, button.black, a.black, a.black:visited",
|
||||
"hash" : "17425d8c9c53672ab2edbd236e6efd7a"
|
||||
"hash" : "b9faf8505427bb14a8c51324e13e2f81"
|
||||
},
|
||||
"gradient-black-light" : {
|
||||
"name" : "gradient-black-light",
|
||||
"rule" : ".gradient-black-light, button.black:active, a.black:active",
|
||||
"hash" : "c4fb2231553d2894fd2c97beaa8bfe39"
|
||||
"hash" : "812c3375d00ccc93c36c6df2eb565df4"
|
||||
},
|
||||
"gradient-blue-dark" : {
|
||||
"name" : "gradient-blue-dark",
|
||||
"rule" : ".gradient-blue-dark, button, a.button, a.button:visited, input.inputsubmit",
|
||||
"hash" : "f467612edcdbf984672287c6086492c4"
|
||||
"hash" : "adc2d0f7397374936384014c5d78550d"
|
||||
},
|
||||
"gradient-blue-light" : {
|
||||
"name" : "gradient-blue-light",
|
||||
"rule" : ".gradient-blue-light, button:active, a.button:active",
|
||||
"hash" : "471d47c102def6db46b345310aac5a03"
|
||||
"hash" : "91b841067a63e543a4dcd9d41e0a2e5c"
|
||||
},
|
||||
"gradient-breadcrumbs" : {
|
||||
"name" : "gradient-breadcrumbs",
|
||||
"rule" : ".gradient-breadcrumbs",
|
||||
"hash" : "3d0f8634df5bc29eaf2a5a01bae79cf1"
|
||||
"hash" : "688ab77f50cfbc17ec30d798efb1b39e"
|
||||
},
|
||||
"gradient-dark-menu-label" : {
|
||||
"name" : "gradient-dark-menu-label",
|
||||
"rule" : ".gradient-dark-menu-label, .phabricator-dark-menu .phabricator-menu-item-type-label",
|
||||
"hash" : "e0d4a455142f9c4745d36ad8b7dd3f78"
|
||||
"hash" : "89a908596142d38fbe61a706694cd321"
|
||||
},
|
||||
"gradient-green-dark" : {
|
||||
"name" : "gradient-green-dark",
|
||||
"rule" : ".gradient-green-dark, button.green, a.green, a.green:visited",
|
||||
"hash" : "a6719fe55b2b0e527ed32985691eab34"
|
||||
"hash" : "0d19ab593772b6b406c0db309b3a14fb"
|
||||
},
|
||||
"gradient-green-light" : {
|
||||
"name" : "gradient-green-light",
|
||||
"rule" : ".gradient-green-light, button.green:active, a.green:active",
|
||||
"hash" : "124969cc7805bbd754005bc702e24c54"
|
||||
"hash" : "71c67916327ec7fc65149ab72c3a2924"
|
||||
},
|
||||
"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" : "fac28a773098fc62bf571e12b843f71a"
|
||||
"hash" : "32651902d28d37dca01cf067072c39c0"
|
||||
},
|
||||
"gradient-grey-light" : {
|
||||
"name" : "gradient-grey-light",
|
||||
"rule" : ".gradient-grey-light, button.grey:active, a.grey:active, button.grey_active, a.dropdown-open",
|
||||
"hash" : "83c6128f59fc2e426c912c2f73f5b92b"
|
||||
"hash" : "c3c9ee1ed6f800a4ac86910b94687877"
|
||||
},
|
||||
"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" : "e6e064156d66952180e99b00996ffc38"
|
||||
"hash" : "856380207ac8c5cb6770d44dceb245a8"
|
||||
},
|
||||
"gradient-menu-label" : {
|
||||
"name" : "gradient-menu-label",
|
||||
"rule" : ".gradient-menu-label, .phabricator-side-menu .phabricator-menu-item-type-label",
|
||||
"hash" : "04b9943f5b06c8cb21fe6b96714e6662"
|
||||
"hash" : "8ad8352b077ae02820ebbbae26dc669b"
|
||||
},
|
||||
"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" : "9b4b039fba177b90bc26f0e6eece339d"
|
||||
"hash" : "815bafb94e11c23e1a419ea85dcae113"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
|
@ -4,52 +4,52 @@
|
|||
"app" : {
|
||||
"name" : "app",
|
||||
"rule" : ".menu-icon-app",
|
||||
"hash" : "fc525b5b3e3ecaeda3baccc18ace5a0a"
|
||||
"hash" : "a389f99d9c00f688e625da71579ee90a"
|
||||
},
|
||||
"arrow-right" : {
|
||||
"name" : "arrow-right",
|
||||
"rule" : ".phabricator-crumb-divider",
|
||||
"hash" : "50180da0aed206c9db2bc1547c1a158c"
|
||||
"hash" : "a994209450dc73a80841cdd66bb59925"
|
||||
},
|
||||
"conf-hover" : {
|
||||
"name" : "conf-hover",
|
||||
"rule" : ".alert-notifications:hover .phabricator-main-menu-message-icon",
|
||||
"hash" : "febc4135b2821ae2d3f0b06aa295ca0d"
|
||||
"hash" : "93d734a7e87293c4fcb24f7096ed79f9"
|
||||
},
|
||||
"conf-off" : {
|
||||
"name" : "conf-off",
|
||||
"rule" : ".alert-notifications .phabricator-main-menu-message-icon",
|
||||
"hash" : "dc1b05cb611eaef76a09e8cff698c99d"
|
||||
"hash" : "967b7aeaccc0ed5ffe9193f7c6c6f94d"
|
||||
},
|
||||
"conf-unseen" : {
|
||||
"name" : "conf-unseen",
|
||||
"rule" : ".alert-notifications.message-unread .phabricator-main-menu-message-icon",
|
||||
"hash" : "1f7d54b2b9781099f867b100ebdd6c6a"
|
||||
"hash" : "034860de0f2e4ed924384a019077a094"
|
||||
},
|
||||
"eye" : {
|
||||
"name" : "eye",
|
||||
"rule" : ".menu-icon-eye",
|
||||
"hash" : "553eb617c19b74b428558e606ff9b066"
|
||||
"hash" : "d598b1acb1933a86eaed3dea3347f7b0"
|
||||
},
|
||||
"logo" : {
|
||||
"name" : "logo",
|
||||
"rule" : ".phabricator-main-menu-logo-image",
|
||||
"hash" : "6eadea2c3dd2ada989eba22b6769b3eb"
|
||||
"hash" : "c6c7ab165dce13a51ef329928c7c4aba"
|
||||
},
|
||||
"seen_have_unread" : {
|
||||
"name" : "seen_have_unread",
|
||||
"rule" : ".alert-notifications:hover .phabricator-main-menu-alert-icon",
|
||||
"hash" : "03a02951857811c722732dcfff9d458e"
|
||||
"hash" : "a8a7f07caa726d7e61ef3d41f959d94d"
|
||||
},
|
||||
"seen_read_all" : {
|
||||
"name" : "seen_read_all",
|
||||
"rule" : ".alert-notifications .phabricator-main-menu-alert-icon",
|
||||
"hash" : "f166fc60ed7a7a8ec2f41ab1af2cb3ec"
|
||||
"hash" : "4fdd4807d0c41bd4179dd43150c7fc44"
|
||||
},
|
||||
"unseen_any" : {
|
||||
"name" : "unseen_any",
|
||||
"rule" : ".alert-notifications.alert-unread .phabricator-main-menu-alert-icon",
|
||||
"hash" : "a8643b150166a076e81a42e5893a899f"
|
||||
"hash" : "50d946952c73028b34e0c3378ca36b17"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
|
|
90
resources/sprite/manifest/tokens.json
Normal file
|
@ -0,0 +1,90 @@
|
|||
{
|
||||
"version" : 1,
|
||||
"sprites" : {
|
||||
"token-coin-1" : {
|
||||
"name" : "token-coin-1",
|
||||
"rule" : ".token-coin-1",
|
||||
"hash" : "124174168031b47dfd98273d2d6f369a"
|
||||
},
|
||||
"token-coin-2" : {
|
||||
"name" : "token-coin-2",
|
||||
"rule" : ".token-coin-2",
|
||||
"hash" : "a4811c8387caec31e4a313b32abe7026"
|
||||
},
|
||||
"token-coin-3" : {
|
||||
"name" : "token-coin-3",
|
||||
"rule" : ".token-coin-3",
|
||||
"hash" : "0ecd0e9e5cce27e059a68ceb80e57e3b"
|
||||
},
|
||||
"token-coin-4" : {
|
||||
"name" : "token-coin-4",
|
||||
"rule" : ".token-coin-4",
|
||||
"hash" : "d88e727312274f4bd534ee5314fba833"
|
||||
},
|
||||
"token-heart-1" : {
|
||||
"name" : "token-heart-1",
|
||||
"rule" : ".token-heart-1",
|
||||
"hash" : "433df7ae11d6651a1f5d6f1c94a85c98"
|
||||
},
|
||||
"token-heart-2" : {
|
||||
"name" : "token-heart-2",
|
||||
"rule" : ".token-heart-2",
|
||||
"hash" : "d582a288d9da8685f61a392aa2e288e5"
|
||||
},
|
||||
"token-like-1" : {
|
||||
"name" : "token-like-1",
|
||||
"rule" : ".token-like-1",
|
||||
"hash" : "1b1fd7b15d0ee5eb95371f7ff673025b"
|
||||
},
|
||||
"token-like-2" : {
|
||||
"name" : "token-like-2",
|
||||
"rule" : ".token-like-2",
|
||||
"hash" : "2ea96cf3f0f43c9efda61a3430a49d90"
|
||||
},
|
||||
"token-medal-1" : {
|
||||
"name" : "token-medal-1",
|
||||
"rule" : ".token-medal-1",
|
||||
"hash" : "081e1d0e2092b8035e6d1ba1181d000e"
|
||||
},
|
||||
"token-medal-2" : {
|
||||
"name" : "token-medal-2",
|
||||
"rule" : ".token-medal-2",
|
||||
"hash" : "958e386989d555a9a8b86bf16ce89cb6"
|
||||
},
|
||||
"token-medal-3" : {
|
||||
"name" : "token-medal-3",
|
||||
"rule" : ".token-medal-3",
|
||||
"hash" : "da3459e708a19b4ee8bc1464fb2b4423"
|
||||
},
|
||||
"token-medal-4" : {
|
||||
"name" : "token-medal-4",
|
||||
"rule" : ".token-medal-4",
|
||||
"hash" : "84ac1a2000629dd0399f8083c4fa882b"
|
||||
},
|
||||
"token-misc-1" : {
|
||||
"name" : "token-misc-1",
|
||||
"rule" : ".token-misc-1",
|
||||
"hash" : "fc021cdb987939a90c101691c9270736"
|
||||
},
|
||||
"token-misc-2" : {
|
||||
"name" : "token-misc-2",
|
||||
"rule" : ".token-misc-2",
|
||||
"hash" : "cdb68aa37c891238c083dab250ea40b7"
|
||||
},
|
||||
"token-misc-3" : {
|
||||
"name" : "token-misc-3",
|
||||
"rule" : ".token-misc-3",
|
||||
"hash" : "0596b11b19dcdf20e7fb2a38e9f6c704"
|
||||
},
|
||||
"token-misc-4" : {
|
||||
"name" : "token-misc-4",
|
||||
"rule" : ".token-misc-4",
|
||||
"hash" : "45f756d650ee729d3593b5afb3351611"
|
||||
}
|
||||
},
|
||||
"scales" : [
|
||||
1
|
||||
],
|
||||
"header" : "\/**\n * @provides sprite-tokens-css\n * @generated\n *\/\n\n.sprite-tokens {\n background-image: url(\/rsrc\/image\/sprite-tokens.png);\n background-repeat: no-repeat;\n}\n\n\n",
|
||||
"type" : "standard"
|
||||
}
|
BIN
resources/sprite/tokens_1x/coin-1.png
Normal file
After Width: | Height: | Size: 638 B |
BIN
resources/sprite/tokens_1x/coin-2.png
Normal file
After Width: | Height: | Size: 629 B |
BIN
resources/sprite/tokens_1x/coin-3.png
Normal file
After Width: | Height: | Size: 632 B |
BIN
resources/sprite/tokens_1x/coin-4.png
Normal file
After Width: | Height: | Size: 791 B |
BIN
resources/sprite/tokens_1x/heart-1.png
Normal file
After Width: | Height: | Size: 742 B |
BIN
resources/sprite/tokens_1x/heart-2.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
resources/sprite/tokens_1x/like-1.png
Normal file
After Width: | Height: | Size: 659 B |
BIN
resources/sprite/tokens_1x/like-2.png
Normal file
After Width: | Height: | Size: 719 B |
BIN
resources/sprite/tokens_1x/medal-1.png
Normal file
After Width: | Height: | Size: 657 B |
BIN
resources/sprite/tokens_1x/medal-2.png
Normal file
After Width: | Height: | Size: 657 B |
BIN
resources/sprite/tokens_1x/medal-3.png
Normal file
After Width: | Height: | Size: 653 B |
BIN
resources/sprite/tokens_1x/medal-4.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/sprite/tokens_1x/misc-1.png
Normal file
After Width: | Height: | Size: 683 B |
BIN
resources/sprite/tokens_1x/misc-2.png
Normal file
After Width: | Height: | Size: 716 B |
BIN
resources/sprite/tokens_1x/misc-3.png
Normal file
After Width: | Height: | Size: 692 B |
BIN
resources/sprite/tokens_1x/misc-4.png
Normal file
After Width: | Height: | Size: 826 B |
18
resources/sql/patches/20130214.token.sql
Normal file
|
@ -0,0 +1,18 @@
|
|||
CREATE TABLE {$NAMESPACE}_token.token_given (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
|
||||
authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
|
||||
tokenPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
|
||||
dateCreated INT UNSIGNED NOT NULL,
|
||||
dateModified INT UNSIGNED NOT NULL,
|
||||
UNIQUE KEY `key_all` (objectPHID, authorPHID),
|
||||
KEY `key_author` (authorPHID),
|
||||
KEY `key_token` (tokenPHID)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE {$NAMESPACE}_token.token_count (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
|
||||
tokenCount INT NOT NULL,
|
||||
UNIQUE KEY `key_objectPHID` (objectPHID)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
@ -32,6 +32,7 @@ $sheets = array(
|
|||
'apps' => $generator->buildAppsSheet(),
|
||||
'conph' => $generator->buildConpherenceSheet(),
|
||||
'apps-large' => $generator->buildAppsLargeSheet(),
|
||||
'tokens' => $generator->buildTokenSheet(),
|
||||
// TODO: @chad: should we actually remove this?
|
||||
// 'apps-xlarge' => $generator->buildAppsXLargeSheet(),
|
||||
'gradient' => $generator->buildGradientSheet(),
|
||||
|
|
|
@ -532,6 +532,13 @@ celerity_register_resource_map(array(
|
|||
'disk' => '/rsrc/image/sprite-menu.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
'/rsrc/image/sprite-tokens.png' =>
|
||||
array(
|
||||
'hash' => '67c46fd75c885b76ecbfe46e71a476cc',
|
||||
'uri' => '/res/67c46fd7/rsrc/image/sprite-tokens.png',
|
||||
'disk' => '/rsrc/image/sprite-tokens.png',
|
||||
'type' => 'png',
|
||||
),
|
||||
'/rsrc/image/texture/dark-menu-hover.png' =>
|
||||
array(
|
||||
'hash' => 'a214a732644be34872e895b338b5d639',
|
||||
|
@ -2861,7 +2868,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'phabricator-pinboard-view-css' =>
|
||||
array(
|
||||
'uri' => '/res/fdb2470f/rsrc/css/layout/phabricator-pinboard-view.css',
|
||||
'uri' => '/res/b954ccbf/rsrc/css/layout/phabricator-pinboard-view.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -3336,7 +3343,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'sprite-conpher-css' =>
|
||||
array(
|
||||
'uri' => '/res/89821322/rsrc/css/sprite-conph.css',
|
||||
'uri' => '/res/f640f0c5/rsrc/css/sprite-conph.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -3370,6 +3377,15 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'disk' => '/rsrc/css/sprite-menu.css',
|
||||
),
|
||||
'sprite-tokens-css' =>
|
||||
array(
|
||||
'uri' => '/res/9ae0de5b/rsrc/css/sprite-tokens.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
),
|
||||
'disk' => '/rsrc/css/sprite-tokens.css',
|
||||
),
|
||||
'stripe-core' =>
|
||||
array(
|
||||
'uri' => '/res/3b0f0ad4/rsrc/js/stripe/stripe_core.js',
|
||||
|
@ -3397,6 +3413,15 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'disk' => '/rsrc/css/core/syntax.css',
|
||||
),
|
||||
'tokens-css' =>
|
||||
array(
|
||||
'uri' => '/res/c1f6113c/rsrc/css/application/tokens/tokens.css',
|
||||
'type' => 'css',
|
||||
'requires' =>
|
||||
array(
|
||||
),
|
||||
'disk' => '/rsrc/css/application/tokens/tokens.css',
|
||||
),
|
||||
), array(
|
||||
'packages' =>
|
||||
array(
|
||||
|
|
|
@ -182,6 +182,10 @@ phutil_register_library_map(array(
|
|||
'ConduitAPI_repository_create_Method' => 'applications/repository/conduit/ConduitAPI_repository_create_Method.php',
|
||||
'ConduitAPI_repository_query_Method' => 'applications/repository/conduit/ConduitAPI_repository_query_Method.php',
|
||||
'ConduitAPI_slowvote_info_Method' => 'applications/slowvote/conduit/ConduitAPI_slowvote_info_Method.php',
|
||||
'ConduitAPI_token_Method' => 'applications/tokens/conduit/ConduitAPI_token_Method.php',
|
||||
'ConduitAPI_token_give_Method' => 'applications/tokens/conduit/ConduitAPI_token_give_Method.php',
|
||||
'ConduitAPI_token_given_Method' => 'applications/tokens/conduit/ConduitAPI_token_given_Method.php',
|
||||
'ConduitAPI_token_query_Method' => 'applications/tokens/conduit/ConduitAPI_token_query_Method.php',
|
||||
'ConduitAPI_user_Method' => 'applications/people/conduit/ConduitAPI_user_Method.php',
|
||||
'ConduitAPI_user_addstatus_Method' => 'applications/people/conduit/ConduitAPI_user_addstatus_Method.php',
|
||||
'ConduitAPI_user_disable_Method' => 'applications/people/conduit/ConduitAPI_user_disable_Method.php',
|
||||
|
@ -664,6 +668,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorApplicationSlowvote' => 'applications/slowvote/application/PhabricatorApplicationSlowvote.php',
|
||||
'PhabricatorApplicationStatusView' => 'applications/meta/view/PhabricatorApplicationStatusView.php',
|
||||
'PhabricatorApplicationSubscriptions' => 'applications/subscriptions/application/PhabricatorApplicationSubscriptions.php',
|
||||
'PhabricatorApplicationTokens' => 'applications/tokens/application/PhabricatorApplicationTokens.php',
|
||||
'PhabricatorApplicationTransaction' => 'applications/transactions/storage/PhabricatorApplicationTransaction.php',
|
||||
'PhabricatorApplicationTransactionComment' => 'applications/transactions/storage/PhabricatorApplicationTransactionComment.php',
|
||||
'PhabricatorApplicationTransactionCommentEditController' => 'applications/transactions/controller/PhabricatorApplicationTransactionCommentEditController.php',
|
||||
|
@ -1323,6 +1328,18 @@ phutil_register_library_map(array(
|
|||
'PhabricatorTimelineIterator' => 'infrastructure/daemon/timeline/cursor/PhabricatorTimelineIterator.php',
|
||||
'PhabricatorTimelineView' => 'view/layout/PhabricatorTimelineView.php',
|
||||
'PhabricatorTimer' => 'applications/countdown/storage/PhabricatorTimer.php',
|
||||
'PhabricatorToken' => 'applications/tokens/storage/PhabricatorToken.php',
|
||||
'PhabricatorTokenController' => 'applications/tokens/controller/PhabricatorTokenController.php',
|
||||
'PhabricatorTokenCount' => 'applications/tokens/storage/PhabricatorTokenCount.php',
|
||||
'PhabricatorTokenDAO' => 'applications/tokens/storage/PhabricatorTokenDAO.php',
|
||||
'PhabricatorTokenGiveController' => 'applications/tokens/controller/PhabricatorTokenGiveController.php',
|
||||
'PhabricatorTokenGiven' => 'applications/tokens/storage/PhabricatorTokenGiven.php',
|
||||
'PhabricatorTokenGivenController' => 'applications/tokens/controller/PhabricatorTokenGivenController.php',
|
||||
'PhabricatorTokenGivenEditor' => 'applications/tokens/editor/PhabricatorTokenGivenEditor.php',
|
||||
'PhabricatorTokenGivenQuery' => 'applications/tokens/query/PhabricatorTokenGivenQuery.php',
|
||||
'PhabricatorTokenQuery' => 'applications/tokens/query/PhabricatorTokenQuery.php',
|
||||
'PhabricatorTokenReceiverInterface' => 'applications/tokens/interface/PhabricatorTokenReceiverInterface.php',
|
||||
'PhabricatorTokenUIEventListener' => 'applications/tokens/event/PhabricatorTokenUIEventListener.php',
|
||||
'PhabricatorTransactionView' => 'view/layout/PhabricatorTransactionView.php',
|
||||
'PhabricatorTransactions' => 'applications/transactions/constants/PhabricatorTransactions.php',
|
||||
'PhabricatorTransformedFile' => 'applications/files/storage/PhabricatorTransformedFile.php',
|
||||
|
@ -1683,6 +1700,10 @@ phutil_register_library_map(array(
|
|||
'ConduitAPI_repository_create_Method' => 'ConduitAPI_repository_Method',
|
||||
'ConduitAPI_repository_query_Method' => 'ConduitAPI_repository_Method',
|
||||
'ConduitAPI_slowvote_info_Method' => 'ConduitAPIMethod',
|
||||
'ConduitAPI_token_Method' => 'ConduitAPIMethod',
|
||||
'ConduitAPI_token_give_Method' => 'ConduitAPI_token_Method',
|
||||
'ConduitAPI_token_given_Method' => 'ConduitAPI_token_Method',
|
||||
'ConduitAPI_token_query_Method' => 'ConduitAPI_token_Method',
|
||||
'ConduitAPI_user_Method' => 'ConduitAPIMethod',
|
||||
'ConduitAPI_user_addstatus_Method' => 'ConduitAPI_user_Method',
|
||||
'ConduitAPI_user_disable_Method' => 'ConduitAPI_user_Method',
|
||||
|
@ -1817,7 +1838,12 @@ phutil_register_library_map(array(
|
|||
'DifferentialReviewedByFieldSpecification' => 'DifferentialFieldSpecification',
|
||||
'DifferentialReviewerStatsTestCase' => 'PhabricatorTestCase',
|
||||
'DifferentialReviewersFieldSpecification' => 'DifferentialFieldSpecification',
|
||||
'DifferentialRevision' => 'DifferentialDAO',
|
||||
'DifferentialRevision' =>
|
||||
array(
|
||||
0 => 'DifferentialDAO',
|
||||
1 => 'PhabricatorTokenReceiverInterface',
|
||||
2 => 'PhabricatorPolicyInterface',
|
||||
),
|
||||
'DifferentialRevisionCommentListView' => 'AphrontView',
|
||||
'DifferentialRevisionCommentView' => 'AphrontView',
|
||||
'DifferentialRevisionDetailView' => 'AphrontView',
|
||||
|
@ -2112,6 +2138,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorApplicationSlowvote' => 'PhabricatorApplication',
|
||||
'PhabricatorApplicationStatusView' => 'AphrontView',
|
||||
'PhabricatorApplicationSubscriptions' => 'PhabricatorApplication',
|
||||
'PhabricatorApplicationTokens' => 'PhabricatorApplication',
|
||||
'PhabricatorApplicationTransaction' =>
|
||||
array(
|
||||
0 => 'PhabricatorLiskDAO',
|
||||
|
@ -2741,6 +2768,25 @@ phutil_register_library_map(array(
|
|||
'PhabricatorTimelineIterator' => 'Iterator',
|
||||
'PhabricatorTimelineView' => 'AphrontView',
|
||||
'PhabricatorTimer' => 'PhabricatorCountdownDAO',
|
||||
'PhabricatorToken' =>
|
||||
array(
|
||||
0 => 'PhabricatorTokenDAO',
|
||||
1 => 'PhabricatorPolicyInterface',
|
||||
),
|
||||
'PhabricatorTokenController' => 'PhabricatorController',
|
||||
'PhabricatorTokenCount' => 'PhabricatorTokenDAO',
|
||||
'PhabricatorTokenDAO' => 'PhabricatorLiskDAO',
|
||||
'PhabricatorTokenGiveController' => 'PhabricatorTokenController',
|
||||
'PhabricatorTokenGiven' =>
|
||||
array(
|
||||
0 => 'PhabricatorTokenDAO',
|
||||
1 => 'PhabricatorPolicyInterface',
|
||||
),
|
||||
'PhabricatorTokenGivenController' => 'PhabricatorTokenController',
|
||||
'PhabricatorTokenGivenEditor' => 'PhabricatorEditor',
|
||||
'PhabricatorTokenGivenQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||
'PhabricatorTokenQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||
'PhabricatorTokenUIEventListener' => 'PhutilEventListener',
|
||||
'PhabricatorTransactionView' => 'AphrontView',
|
||||
'PhabricatorTransformedFile' => 'PhabricatorFileDAO',
|
||||
'PhabricatorTranslationsConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||
|
@ -2853,6 +2899,7 @@ phutil_register_library_map(array(
|
|||
1 => 'PhabricatorMarkupInterface',
|
||||
2 => 'PhabricatorPolicyInterface',
|
||||
3 => 'PhabricatorSubscribableInterface',
|
||||
4 => 'PhabricatorTokenReceiverInterface',
|
||||
),
|
||||
'PholioMockCommentController' => 'PholioController',
|
||||
'PholioMockEditController' => 'PholioController',
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
final class DifferentialRevision extends DifferentialDAO {
|
||||
final class DifferentialRevision extends DifferentialDAO
|
||||
implements PhabricatorTokenReceiverInterface, PhabricatorPolicyInterface {
|
||||
|
||||
protected $title;
|
||||
protected $originalTitle;
|
||||
|
@ -311,4 +312,19 @@ final class DifferentialRevision extends DifferentialDAO {
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function getCapabilities() {
|
||||
return array(
|
||||
PhabricatorPolicyCapability::CAN_VIEW,
|
||||
PhabricatorPolicyCapability::CAN_EDIT,
|
||||
);
|
||||
}
|
||||
|
||||
public function getPolicy($capability) {
|
||||
return PhabricatorPolicies::POLICY_USER;
|
||||
}
|
||||
|
||||
public function hasAutomaticCapability($capability, PhabricatorUser $user) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -58,7 +58,10 @@ final class DifferentialRevisionDetailView extends AphrontView {
|
|||
$actions->addAction($obj);
|
||||
}
|
||||
|
||||
$properties = new PhabricatorPropertyListView();
|
||||
$properties = id(new PhabricatorPropertyListView())
|
||||
->setUser($user)
|
||||
->setObject($revision);
|
||||
|
||||
$status = $revision->getStatus();
|
||||
$local_vcs = $this->getDiff()->getSourceControlSystem();
|
||||
|
||||
|
|
|
@ -424,7 +424,9 @@ final class ManiphestTaskDetailController extends ManiphestController {
|
|||
|
||||
$viewer = $this->getRequest()->getUser();
|
||||
|
||||
$view = new PhabricatorPropertyListView();
|
||||
$view = id(new PhabricatorPropertyListView())
|
||||
->setUser($viewer)
|
||||
->setObject($task);
|
||||
|
||||
$view->addProperty(
|
||||
pht('Assigned To'),
|
||||
|
@ -511,6 +513,8 @@ final class ManiphestTaskDetailController extends ManiphestController {
|
|||
$file_view->render());
|
||||
}
|
||||
|
||||
$view->invokeWillRenderEvent();
|
||||
|
||||
if (strlen($task->getDescription())) {
|
||||
$view->addSectionHeader(pht('Description'));
|
||||
$view->addTextContent(
|
||||
|
|
|
@ -4,7 +4,10 @@
|
|||
* @group maniphest
|
||||
*/
|
||||
final class ManiphestTask extends ManiphestDAO
|
||||
implements PhabricatorMarkupInterface {
|
||||
implements
|
||||
PhabricatorMarkupInterface,
|
||||
PhabricatorPolicyInterface,
|
||||
PhabricatorTokenReceiverInterface {
|
||||
|
||||
const MARKUP_FIELD_DESCRIPTION = 'markup:desc';
|
||||
|
||||
|
@ -261,4 +264,23 @@ final class ManiphestTask extends ManiphestDAO
|
|||
return (bool)$this->getID();
|
||||
}
|
||||
|
||||
|
||||
/* -( Policy Interface )--------------------------------------------------- */
|
||||
|
||||
|
||||
public function getCapabilities() {
|
||||
return array(
|
||||
PhabricatorPolicyCapability::CAN_VIEW,
|
||||
PhabricatorPolicyCapability::CAN_EDIT,
|
||||
);
|
||||
}
|
||||
|
||||
public function getPolicy($capability) {
|
||||
return PhabricatorPolicies::POLICY_USER;
|
||||
}
|
||||
|
||||
public function hasAutomaticCapability($capability, PhabricatorUser $user) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -122,7 +122,9 @@ final class PholioMockViewController extends PholioController {
|
|||
|
||||
$user = $this->getRequest()->getUser();
|
||||
|
||||
$properties = new PhabricatorPropertyListView();
|
||||
$properties = id(new PhabricatorPropertyListView())
|
||||
->setUser($user)
|
||||
->setObject($mock);
|
||||
|
||||
$properties->addProperty(
|
||||
pht('Author'),
|
||||
|
@ -154,6 +156,8 @@ final class PholioMockViewController extends PholioController {
|
|||
pht('Subscribers'),
|
||||
$sub_view);
|
||||
|
||||
$properties->invokeWillRenderEvent();
|
||||
|
||||
$properties->addTextContent(
|
||||
$engine->getOutput($mock, PholioMock::MARKUP_FIELD_DESCRIPTION));
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@ final class PholioMock extends PholioDAO
|
|||
implements
|
||||
PhabricatorMarkupInterface,
|
||||
PhabricatorPolicyInterface,
|
||||
PhabricatorSubscribableInterface {
|
||||
PhabricatorSubscribableInterface,
|
||||
PhabricatorTokenReceiverInterface {
|
||||
|
||||
const MARKUP_FIELD_DESCRIPTION = 'markup:description';
|
||||
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorApplicationTokens extends PhabricatorApplication {
|
||||
|
||||
public function getName() {
|
||||
return pht('Tokens');
|
||||
}
|
||||
|
||||
public function isBeta() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getBaseURI() {
|
||||
return '/token/';
|
||||
}
|
||||
|
||||
public function getTitleGlyph() {
|
||||
return "\xE2\x99\xA6";
|
||||
}
|
||||
|
||||
public function getShortDescription() {
|
||||
return pht('Acquire Trinkets');
|
||||
}
|
||||
|
||||
public function getApplicationGroup() {
|
||||
return self::GROUP_UTILITIES;
|
||||
}
|
||||
|
||||
public function getRoutes() {
|
||||
return array(
|
||||
'/token/' => array(
|
||||
'' => 'PhabricatorTokenGivenController',
|
||||
'given/' => 'PhabricatorTokenGivenController',
|
||||
'give/(?<phid>[^/]+)/' => 'PhabricatorTokenGiveController',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public function getEventListeners() {
|
||||
return array(
|
||||
new PhabricatorTokenUIEventListener(),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
41
src/applications/tokens/conduit/ConduitAPI_token_Method.php
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
abstract class ConduitAPI_token_Method extends ConduitAPIMethod {
|
||||
|
||||
public function getMethodStatus() {
|
||||
return self::METHOD_STATUS_UNSTABLE;
|
||||
}
|
||||
|
||||
public function buildTokenDicts(array $tokens) {
|
||||
assert_instances_of($tokens, 'PhabricatorToken');
|
||||
|
||||
$list = array();
|
||||
foreach ($tokens as $token) {
|
||||
$list[] = array(
|
||||
'id' => $token->getID(),
|
||||
'name' => $token->getName(),
|
||||
'phid' => $token->getPHID(),
|
||||
);
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
public function buildTokenGivenDicts(array $tokens_given) {
|
||||
assert_instances_of($tokens_given, 'PhabricatorTokenGiven');
|
||||
|
||||
$list = array();
|
||||
foreach ($tokens_given as $given) {
|
||||
$list[] = array(
|
||||
'authorPHID' => $given->getAuthorPHID(),
|
||||
'objectPHID' => $given->getObjectPHID(),
|
||||
'tokenPHID' => $given->getTokenPHID(),
|
||||
'dateCreated' => $given->getDateCreated(),
|
||||
);
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
final class ConduitAPI_token_give_Method extends ConduitAPI_token_Method {
|
||||
|
||||
public function getMethodDescription() {
|
||||
return pht('Give or change a token.');
|
||||
}
|
||||
|
||||
public function defineParamTypes() {
|
||||
return array(
|
||||
'tokenPHID' => 'phid|null',
|
||||
'objectPHID' => 'phid',
|
||||
);
|
||||
}
|
||||
|
||||
public function defineErrorTypes() {
|
||||
return array();
|
||||
}
|
||||
|
||||
public function defineReturnType() {
|
||||
return 'void';
|
||||
}
|
||||
|
||||
public function execute(ConduitAPIRequest $request) {
|
||||
$editor = id(new PhabricatorTokenGivenEditor())
|
||||
->setActor($request->getUser());
|
||||
|
||||
if ($request->getValue('tokenPHID')) {
|
||||
$editor->addToken(
|
||||
$request->getValue('objectPHID'),
|
||||
$request->getValue('tokenPHID'));
|
||||
} else {
|
||||
$editor->deleteToken($request->getValue('objectPHID'));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
final class ConduitAPI_token_given_Method extends ConduitAPI_token_Method {
|
||||
|
||||
public function getMethodDescription() {
|
||||
return pht('Query tokens given to objects.');
|
||||
}
|
||||
|
||||
public function defineParamTypes() {
|
||||
return array(
|
||||
'authorPHIDs' => 'list<phid>',
|
||||
'objectPHIDs' => 'list<phid>',
|
||||
'tokenPHIDs' => 'list<phid>',
|
||||
);
|
||||
}
|
||||
|
||||
public function defineErrorTypes() {
|
||||
return array();
|
||||
}
|
||||
|
||||
public function defineReturnType() {
|
||||
return 'list<dict>';
|
||||
}
|
||||
|
||||
public function execute(ConduitAPIRequest $request) {
|
||||
$query = id(new PhabricatorTokenGivenQuery())
|
||||
->setViewer($request->getUser());
|
||||
|
||||
$author_phids = $request->getValue('authorPHIDs');
|
||||
if ($author_phids) {
|
||||
$query->withAuthorPHIDs($author_phids);
|
||||
}
|
||||
|
||||
$object_phids = $request->getValue('objectPHIDs');
|
||||
if ($object_phids) {
|
||||
$query->withObjectPHIDs($object_phids);
|
||||
}
|
||||
|
||||
$token_phids = $request->getValue('tokenPHIDs');
|
||||
if ($token_phids) {
|
||||
$query->withTokenPHIDs($token_phids);
|
||||
}
|
||||
|
||||
$given = $query->execute();
|
||||
|
||||
return $this->buildTokenGivenDicts($given);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
final class ConduitAPI_token_query_Method extends ConduitAPI_token_Method {
|
||||
|
||||
public function getMethodDescription() {
|
||||
return pht('Query tokens.');
|
||||
}
|
||||
|
||||
public function defineParamTypes() {
|
||||
return array();
|
||||
}
|
||||
|
||||
public function defineReturnType() {
|
||||
return 'list<dict>';
|
||||
}
|
||||
|
||||
public function defineErrorTypes() {
|
||||
return array();
|
||||
}
|
||||
|
||||
public function execute(ConduitAPIRequest $request) {
|
||||
$query = id(new PhabricatorTokenQuery())
|
||||
->setViewer($request->getUser());
|
||||
|
||||
$tokens = $query->execute();
|
||||
|
||||
return $this->buildTokenDicts($tokens);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
abstract class PhabricatorTokenController extends PhabricatorController {
|
||||
|
||||
|
||||
protected function buildSideNav() {
|
||||
$nav = new AphrontSideNavFilterView();
|
||||
$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
|
||||
|
||||
$nav->addFilter('given/', pht('Tokens Given'));
|
||||
|
||||
return $nav;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorTokenGiveController extends PhabricatorTokenController {
|
||||
|
||||
private $phid;
|
||||
|
||||
public function willProcessRequest(array $data) {
|
||||
$this->phid = $data['phid'];
|
||||
}
|
||||
|
||||
public function processRequest() {
|
||||
$request = $this->getRequest();
|
||||
$user = $request->getUser();
|
||||
|
||||
$handle = PhabricatorObjectHandleData::loadOneHandle($this->phid, $user);
|
||||
if (!$handle->isComplete()) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
$current = id(new PhabricatorTokenGivenQuery())
|
||||
->setViewer($user)
|
||||
->withAuthorPHIDs(array($user->getPHID()))
|
||||
->withObjectPHIDs(array($handle->getPHID()))
|
||||
->execute();
|
||||
|
||||
if ($current) {
|
||||
$is_give = false;
|
||||
$title = pht('Rescind Token');
|
||||
} else {
|
||||
$is_give = true;
|
||||
$title = pht('Give Token');
|
||||
}
|
||||
|
||||
$done_uri = $handle->getURI();
|
||||
if ($request->isDialogFormPost()) {
|
||||
if ($is_give) {
|
||||
$token_phid = $request->getStr('tokenPHID');
|
||||
$editor = id(new PhabricatorTokenGivenEditor())
|
||||
->setActor($user)
|
||||
->addToken($handle->getPHID(), $token_phid);
|
||||
} else {
|
||||
$editor = id(new PhabricatorTokenGivenEditor())
|
||||
->setActor($user)
|
||||
->deleteToken($handle->getPHID());
|
||||
}
|
||||
|
||||
return id(new AphrontReloadResponse())->setURI($done_uri);
|
||||
}
|
||||
|
||||
if ($is_give) {
|
||||
$dialog = $this->buildGiveTokenDialog();
|
||||
} else {
|
||||
$dialog = $this->buildRescindTokenDialog(head($current));
|
||||
}
|
||||
|
||||
$dialog->setUser($user);
|
||||
$dialog->addCancelButton($done_uri);
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
}
|
||||
|
||||
private function buildGiveTokenDialog() {
|
||||
$user = $this->getRequest()->getUser();
|
||||
|
||||
$tokens = id(new PhabricatorTokenQuery())
|
||||
->setViewer($user)
|
||||
->execute();
|
||||
|
||||
$buttons = array();
|
||||
$ii = 0;
|
||||
foreach ($tokens as $token) {
|
||||
$buttons[] = javelin_tag(
|
||||
'button',
|
||||
array(
|
||||
'class' => 'token-button',
|
||||
'name' => 'tokenPHID',
|
||||
'value' => $token->getPHID(),
|
||||
'type' => 'submit',
|
||||
'sigil' => 'has-tooltip',
|
||||
'meta' => array(
|
||||
'tip' => $token->getName(),
|
||||
)
|
||||
),
|
||||
$token->renderIcon());
|
||||
if ((++$ii % 4) == 0) {
|
||||
$buttons[] = phutil_tag('br');
|
||||
}
|
||||
}
|
||||
|
||||
$buttons = phutil_tag(
|
||||
'div',
|
||||
array(
|
||||
'class' => 'token-grid',
|
||||
),
|
||||
$buttons);
|
||||
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setTitle(pht('Give Token'));
|
||||
$dialog->appendChild($buttons);
|
||||
|
||||
return $dialog;
|
||||
}
|
||||
|
||||
private function buildRescindTokenDialog(PhabricatorTokenGiven $token_given) {
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setTitle(pht('Rescind Token'));
|
||||
|
||||
$dialog->appendChild(
|
||||
pht('Really rescind this lovely token?'));
|
||||
|
||||
$dialog->addSubmitButton(pht('Rescind Token'));
|
||||
|
||||
return $dialog;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorTokenGivenController extends PhabricatorTokenController {
|
||||
|
||||
public function processRequest() {
|
||||
$request = $this->getRequest();
|
||||
$user = $request->getUser();
|
||||
|
||||
$pager = id(new AphrontCursorPagerView())
|
||||
->setURI(new PhutilURI($this->getApplicationURI('/given/')));
|
||||
|
||||
$tokens_given = id(new PhabricatorTokenGivenQuery())
|
||||
->setViewer($user)
|
||||
->setLimit(100)
|
||||
->executeWithCursorPager($pager);
|
||||
|
||||
$handles = array();
|
||||
if ($tokens_given) {
|
||||
$object_phids = mpull($tokens_given, 'getObjectPHID');
|
||||
$user_phids = mpull($tokens_given, 'getAuthorPHID');
|
||||
$handle_phids = array_merge($object_phids, $user_phids);
|
||||
$handles = id(new PhabricatorObjectHandleData($handle_phids))
|
||||
->setViewer($user)
|
||||
->loadHandles();
|
||||
}
|
||||
|
||||
$tokens = array();
|
||||
if ($tokens_given) {
|
||||
$token_phids = mpull($tokens_given, 'getTokenPHID');
|
||||
$tokens = id(new PhabricatorTokenQuery())
|
||||
->setViewer($user)
|
||||
->withPHIDs($token_phids)
|
||||
->execute();
|
||||
$tokens = mpull($tokens, null, 'getPHID');
|
||||
}
|
||||
|
||||
$list = new PhabricatorObjectItemListView();
|
||||
foreach ($tokens_given as $token_given) {
|
||||
$handle = $handles[$token_given->getObjectPHID()];
|
||||
$token = idx($tokens, $token_given->getTokenPHID());
|
||||
|
||||
$item = id(new PhabricatorObjectItemView());
|
||||
$item->setHeader($handle->getFullName());
|
||||
$item->setHref($handle->getURI());
|
||||
|
||||
$item->addAttribute($token->renderIcon());
|
||||
|
||||
$item->addAttribute(
|
||||
pht(
|
||||
'Given by %s on %s',
|
||||
$handles[$token_given->getAuthorPHID()]->renderLink(),
|
||||
phabricator_date($token_given->getDateCreated(), $user)));
|
||||
|
||||
$list->addItem($item);
|
||||
}
|
||||
|
||||
$title = pht('Tokens Given');
|
||||
|
||||
$nav = $this->buildSideNav();
|
||||
$nav->setCrumbs(
|
||||
$this->buildApplicationCrumbs()
|
||||
->addCrumb(
|
||||
id(new PhabricatorCrumbView())
|
||||
->setName($title)));
|
||||
$nav->selectFilter('given/');
|
||||
|
||||
$nav->appendChild($list);
|
||||
$nav->appendChild($pager);
|
||||
|
||||
return $this->buildApplicationPage(
|
||||
$nav,
|
||||
array(
|
||||
'title' => $title,
|
||||
'device' => true,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorTokenGivenEditor
|
||||
extends PhabricatorEditor {
|
||||
|
||||
public function addToken($object_phid, $token_phid) {
|
||||
$token = $this->validateToken($token_phid);
|
||||
$handle = $this->validateObject($object_phid);
|
||||
|
||||
$actor = $this->requireActor();
|
||||
|
||||
$token_given = id(new PhabricatorTokenGiven())
|
||||
->setAuthorPHID($actor->getPHID())
|
||||
->setObjectPHID($handle->getPHID())
|
||||
->setTokenPHID($token->getPHID());
|
||||
|
||||
$token_given->openTransaction();
|
||||
|
||||
$this->executeDeleteToken($handle);
|
||||
|
||||
$token_given->save();
|
||||
|
||||
queryfx(
|
||||
$token_given->establishConnection('w'),
|
||||
'INSERT INTO %T (objectPHID, tokenCount) VALUES (%s, 1)
|
||||
ON DUPLICATE KEY UPDATE tokenCount = tokenCount + 1',
|
||||
id(new PhabricatorTokenCount())->getTableName(),
|
||||
$handle->getPHID());
|
||||
|
||||
$token_given->saveTransaction();
|
||||
|
||||
return $token_given;
|
||||
}
|
||||
|
||||
public function deleteToken($object_phid) {
|
||||
$handle = $this->validateObject($object_phid);
|
||||
|
||||
return $this->executeDeleteToken($handle);
|
||||
}
|
||||
|
||||
private function executeDeleteToken(PhabricatorObjectHandle $handle) {
|
||||
$actor = $this->requireActor();
|
||||
|
||||
$token_given = id(new PhabricatorTokenGiven())->loadOneWhere(
|
||||
'authorPHID = %s AND objectPHID = %s',
|
||||
$actor->getPHID(),
|
||||
$handle->getPHID());
|
||||
if (!$token_given) {
|
||||
return;
|
||||
}
|
||||
|
||||
$token_given->openTransaction();
|
||||
|
||||
$token_given->delete();
|
||||
|
||||
queryfx(
|
||||
$token_given->establishConnection('w'),
|
||||
'INSERT INTO %T (objectPHID, tokenCount) VALUES (%s, 0)
|
||||
ON DUPLICATE KEY UPDATE tokenCount = tokenCount - 1',
|
||||
id(new PhabricatorTokenCount())->getTableName(),
|
||||
$handle->getPHID());
|
||||
|
||||
$token_given->saveTransaction();
|
||||
}
|
||||
|
||||
private function validateToken($token_phid) {
|
||||
$tokens = id(new PhabricatorTokenQuery())
|
||||
->setViewer($this->requireActor())
|
||||
->withPHIDs(array($token_phid))
|
||||
->execute();
|
||||
|
||||
if (empty($tokens)) {
|
||||
throw new Exception("No such token!");
|
||||
}
|
||||
|
||||
return head($tokens);
|
||||
}
|
||||
|
||||
private function validateObject($object_phid) {
|
||||
$handle = PhabricatorObjectHandleData::loadOneHandle(
|
||||
$object_phid,
|
||||
$this->requireActor());
|
||||
|
||||
if (!$handle->isComplete()) {
|
||||
throw new Exception("No such object!");
|
||||
}
|
||||
|
||||
return $handle;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,121 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorTokenUIEventListener
|
||||
extends PhutilEventListener {
|
||||
|
||||
public function register() {
|
||||
$this->listen(PhabricatorEventType::TYPE_UI_DIDRENDERACTIONS);
|
||||
$this->listen(PhabricatorEventType::TYPE_UI_WILLRENDERPROPERTIES);
|
||||
}
|
||||
|
||||
public function handleEvent(PhutilEvent $event) {
|
||||
switch ($event->getType()) {
|
||||
case PhabricatorEventType::TYPE_UI_DIDRENDERACTIONS:
|
||||
$this->handleActionEvent($event);
|
||||
break;
|
||||
case PhabricatorEventType::TYPE_UI_WILLRENDERPROPERTIES:
|
||||
$this->handlePropertyEvent($event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private function handleActionEvent($event) {
|
||||
$user = $event->getUser();
|
||||
$object = $event->getValue('object');
|
||||
|
||||
if (!$object || !$object->getPHID()) {
|
||||
// No object, or the object has no PHID yet..
|
||||
return;
|
||||
}
|
||||
|
||||
if (!($object instanceof PhabricatorTokenReceiverInterface)) {
|
||||
// This object isn't a token receiver.
|
||||
return;
|
||||
}
|
||||
|
||||
$current = id(new PhabricatorTokenGivenQuery())
|
||||
->setViewer($user)
|
||||
->withAuthorPHIDs(array($user->getPHID()))
|
||||
->withObjectPHIDs(array($object->getPHID()))
|
||||
->execute();
|
||||
|
||||
if (!$current) {
|
||||
$token_action = id(new PhabricatorActionView())
|
||||
->setUser($user)
|
||||
->setWorkflow(true)
|
||||
->setHref('/token/give/'.$object->getPHID().'/')
|
||||
->setName(pht('Give Token'))
|
||||
->setIcon('like');
|
||||
} else {
|
||||
$token_action = id(new PhabricatorActionView())
|
||||
->setUser($user)
|
||||
->setWorkflow(true)
|
||||
->setHref('/token/give/'.$object->getPHID().'/')
|
||||
->setName(pht('Rescind Token'))
|
||||
->setIcon('dislike');
|
||||
}
|
||||
|
||||
$actions = $event->getValue('actions');
|
||||
$actions[] = $token_action;
|
||||
$event->setValue('actions', $actions);
|
||||
}
|
||||
|
||||
private function handlePropertyEvent($event) {
|
||||
$user = $event->getUser();
|
||||
$object = $event->getValue('object');
|
||||
|
||||
if (!$object || !$object->getPHID()) {
|
||||
// No object, or the object has no PHID yet..
|
||||
return;
|
||||
}
|
||||
|
||||
if (!($object instanceof PhabricatorTokenReceiverInterface)) {
|
||||
// This object isn't a token receiver.
|
||||
return;
|
||||
}
|
||||
|
||||
$limit = 1;
|
||||
|
||||
$tokens_given = id(new PhabricatorTokenGivenQuery())
|
||||
->setViewer($user)
|
||||
->withObjectPHIDs(array($object->getPHID()))
|
||||
->execute();
|
||||
|
||||
if (!$tokens_given) {
|
||||
return;
|
||||
}
|
||||
|
||||
$tokens = id(new PhabricatorTokenQuery())
|
||||
->setViewer($user)
|
||||
->withPHIDs(mpull($tokens_given, 'getTokenPHID'))
|
||||
->execute();
|
||||
$tokens = mpull($tokens, null, 'getPHID');
|
||||
|
||||
$author_phids = mpull($tokens_given, 'getAuthorPHID');
|
||||
$handles = id(new PhabricatorObjectHandleData($author_phids))
|
||||
->loadHandles();
|
||||
|
||||
$list = array();
|
||||
foreach ($tokens_given as $token_given) {
|
||||
if (!idx($tokens, $token_given->getTokenPHID())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$token = $tokens[$token_given->getTokenPHID()];
|
||||
|
||||
$list[] = javelin_tag(
|
||||
'span',
|
||||
array(
|
||||
'sigil' => 'has-tooltip',
|
||||
'meta' => array(
|
||||
'tip' => $handles[$token_given->getAuthorPHID()]->getName(),
|
||||
),
|
||||
),
|
||||
$token->renderIcon());
|
||||
}
|
||||
|
||||
$view = $event->getValue('view');
|
||||
$view->addProperty(pht('Tokens'), $list);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<?php
|
||||
|
||||
interface PhabricatorTokenReceiverInterface {
|
||||
|
||||
}
|
89
src/applications/tokens/query/PhabricatorTokenGivenQuery.php
Normal file
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorTokenGivenQuery
|
||||
extends PhabricatorCursorPagedPolicyAwareQuery {
|
||||
|
||||
private $authorPHIDs;
|
||||
private $objectPHIDs;
|
||||
private $tokenPHIDs;
|
||||
|
||||
public function withTokenPHIDs(array $token_phids) {
|
||||
$this->tokenPHIDs = $token_phids;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withObjectPHIDs(array $object_phids) {
|
||||
$this->objectPHIDs = $object_phids;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withAuthorPHIDs(array $author_phids) {
|
||||
$this->authorPHIDs = $author_phids;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function loadPage() {
|
||||
$table = new PhabricatorTokenGiven();
|
||||
$conn_r = $table->establishConnection('r');
|
||||
|
||||
$rows = queryfx_all(
|
||||
$conn_r,
|
||||
'SELECT * FROM %T %Q %Q %Q',
|
||||
$table->getTableName(),
|
||||
$this->buildWhereClause($conn_r),
|
||||
$this->buildOrderClause($conn_r),
|
||||
$this->buildLimitClause($conn_r));
|
||||
|
||||
return $table->loadAllFromArray($rows);
|
||||
}
|
||||
|
||||
private function buildWhereClause(AphrontDatabaseConnection $conn_r) {
|
||||
$where = array();
|
||||
|
||||
if ($this->authorPHIDs) {
|
||||
$where[] = qsprintf(
|
||||
$conn_r,
|
||||
'authorPHID IN (%Ls)',
|
||||
$this->authorPHIDs);
|
||||
}
|
||||
|
||||
if ($this->objectPHIDs) {
|
||||
$where[] = qsprintf(
|
||||
$conn_r,
|
||||
'objectPHID IN (%Ls)',
|
||||
$this->objectPHIDs);
|
||||
}
|
||||
|
||||
if ($this->tokenPHIDs) {
|
||||
$where[] = qsprintf(
|
||||
$conn_r,
|
||||
'tokenPHID IN (%Ls)',
|
||||
$this->tokenPHIDs);
|
||||
}
|
||||
|
||||
return $this->formatWhereClause($where);
|
||||
}
|
||||
|
||||
public function willFilterPage(array $results) {
|
||||
$object_phids = array_filter(mpull($results, 'getObjectPHID'));
|
||||
if (!$object_phids) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$objects = id(new PhabricatorObjectHandleData($object_phids))
|
||||
->setViewer($this->getViewer())
|
||||
->loadObjects();
|
||||
|
||||
foreach ($results as $key => $result) {
|
||||
$phid = $result->getObjectPHID();
|
||||
if (empty($objects[$phid])) {
|
||||
unset($results[$key]);
|
||||
} else {
|
||||
$result->attachObject($objects[$phid]);
|
||||
}
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
}
|
62
src/applications/tokens/query/PhabricatorTokenQuery.php
Normal file
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorTokenQuery
|
||||
extends PhabricatorCursorPagedPolicyAwareQuery {
|
||||
|
||||
private $phids;
|
||||
|
||||
public function withPHIDs(array $phids) {
|
||||
$this->phids = $phids;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function loadPage() {
|
||||
$tokens = $this->getBuiltinTokens();
|
||||
|
||||
if ($this->phids) {
|
||||
$map = array_fill_keys($this->phids, true);
|
||||
foreach ($tokens as $key => $token) {
|
||||
if (empty($map[$token->getPHID()])) {
|
||||
unset($tokens[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $tokens;
|
||||
}
|
||||
|
||||
private function getBuiltinTokens() {
|
||||
$specs = array(
|
||||
array('like-1', pht('Like')),
|
||||
array('like-2', pht('Dislike')),
|
||||
array('heart-1', pht('Love')),
|
||||
array('heart-2', pht('Heartbreak')),
|
||||
array('medal-1', pht('Orange Medal')),
|
||||
array('medal-2', pht('Grey Medal')),
|
||||
array('medal-3', pht('Yellow Medal')),
|
||||
array('medal-4', pht('Manufacturing Defect?')),
|
||||
array('coin-1', pht('Haypence')),
|
||||
array('coin-2', pht('Piece of Eight')),
|
||||
array('coin-3', pht('Doubloon')),
|
||||
array('coin-4', pht('Mountain of Wealth')),
|
||||
array('misc-1', pht('Pterodactyl')),
|
||||
array('misc-2', pht('Evil Spooky Haunted Tree')),
|
||||
array('misc-3', pht('Baby Tequila')),
|
||||
array('misc-4', pht('The World Burns')),
|
||||
);
|
||||
|
||||
$tokens = array();
|
||||
foreach ($specs as $id => $spec) {
|
||||
list($image, $name) = $spec;
|
||||
|
||||
$token = id(new PhabricatorToken())
|
||||
->setID($id)
|
||||
->setName($name)
|
||||
->setPHID('PHID-TOKN-'.$image);
|
||||
$tokens[] = $token;
|
||||
}
|
||||
|
||||
return $tokens;
|
||||
}
|
||||
|
||||
}
|
46
src/applications/tokens/storage/PhabricatorToken.php
Normal file
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorToken extends PhabricatorTokenDAO
|
||||
implements PhabricatorPolicyInterface {
|
||||
|
||||
protected $phid;
|
||||
protected $name;
|
||||
protected $filePHID;
|
||||
|
||||
public function getConfiguration() {
|
||||
return array(
|
||||
self::CONFIG_AUX_PHID => true,
|
||||
) + parent::getConfiguration();
|
||||
}
|
||||
|
||||
public function getCapabilities() {
|
||||
return array(
|
||||
PhabricatorPolicyCapability::CAN_VIEW,
|
||||
);
|
||||
}
|
||||
|
||||
public function getPolicy($capability) {
|
||||
return PhabricatorPolicies::POLICY_USER;
|
||||
}
|
||||
|
||||
public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public function renderIcon() {
|
||||
// TODO: Maybe move to a View class?
|
||||
|
||||
require_celerity_resource('sprite-tokens-css');
|
||||
require_celerity_resource('tokens-css');
|
||||
|
||||
$sprite = substr($this->getPHID(), 10);
|
||||
|
||||
return phutil_tag(
|
||||
'div',
|
||||
array(
|
||||
'class' => 'sprite-tokens token-icon token-'.$sprite,
|
||||
),
|
||||
'');
|
||||
}
|
||||
|
||||
}
|
15
src/applications/tokens/storage/PhabricatorTokenCount.php
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorTokenCount extends PhabricatorTokenDAO {
|
||||
|
||||
protected $objectPHID;
|
||||
protected $tokenCount;
|
||||
|
||||
public function getConfiguration() {
|
||||
return array(
|
||||
self::CONFIG_IDS => self::IDS_MANUAL,
|
||||
self::CONFIG_TIMESTAMPS => false,
|
||||
) + parent::getConfiguration();
|
||||
}
|
||||
|
||||
}
|
9
src/applications/tokens/storage/PhabricatorTokenDAO.php
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
abstract class PhabricatorTokenDAO extends PhabricatorLiskDAO {
|
||||
|
||||
public function getApplicationName() {
|
||||
return 'token';
|
||||
}
|
||||
|
||||
}
|
54
src/applications/tokens/storage/PhabricatorTokenGiven.php
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorTokenGiven extends PhabricatorTokenDAO
|
||||
implements PhabricatorPolicyInterface {
|
||||
|
||||
protected $authorPHID;
|
||||
protected $objectPHID;
|
||||
protected $tokenPHID;
|
||||
|
||||
private $object;
|
||||
|
||||
public function attachObject(PhabricatorTokenReceiverInterface $object) {
|
||||
$this->object = $object;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getObject() {
|
||||
if ($this->object === null) {
|
||||
throw new Exception("Call attachObject() before getObject()!");
|
||||
}
|
||||
return $this->object;
|
||||
}
|
||||
|
||||
public function getCapabilities() {
|
||||
return array(
|
||||
PhabricatorPolicyCapability::CAN_VIEW,
|
||||
PhabricatorPolicyCapability::CAN_EDIT,
|
||||
);
|
||||
}
|
||||
|
||||
public function getPolicy($capability) {
|
||||
switch ($capability) {
|
||||
case PhabricatorPolicyCapability::CAN_VIEW:
|
||||
return $this->getObject()->getPolicy($capability);
|
||||
default:
|
||||
return PhabricatorPolicies::POLICY_NOONE;
|
||||
}
|
||||
}
|
||||
|
||||
public function hasAutomaticCapability($capability, PhabricatorUser $user) {
|
||||
switch ($capability) {
|
||||
case PhabricatorPolicyCapability::CAN_VIEW:
|
||||
return $this->getObject()->hasAutomaticCapability(
|
||||
$capability,
|
||||
$user);
|
||||
default:
|
||||
if ($user->getPHID() == $this->authorPHID) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -176,6 +176,33 @@ final class CeleritySpriteGenerator {
|
|||
return $sheet;
|
||||
}
|
||||
|
||||
public function buildTokenSheet() {
|
||||
$tokens = $this->getDirectoryList('tokens_1x');
|
||||
|
||||
$template = id(new PhutilSprite())
|
||||
->setSourceSize(16, 16);
|
||||
|
||||
$sprites = array();
|
||||
foreach ($tokens as $token) {
|
||||
$path = $this->getPath('tokens_1x/'.$token.'.png');
|
||||
|
||||
$sprite = id(clone $template)
|
||||
->setName('token-'.$token)
|
||||
->setTargetCSS('.token-'.$token)
|
||||
->setSourceFile($path, 1);
|
||||
|
||||
$sprites[] = $sprite;
|
||||
}
|
||||
|
||||
$sheet = $this->buildSheet('tokens', false);
|
||||
foreach ($sprites as $sprite) {
|
||||
$sheet->addSprite($sprite);
|
||||
}
|
||||
|
||||
return $sheet;
|
||||
}
|
||||
|
||||
|
||||
public function buildConpherenceSheet() {
|
||||
$icons = $this->getDirectoryList('conpher_1x');
|
||||
$scales = array(
|
||||
|
@ -186,7 +213,7 @@ final class CeleritySpriteGenerator {
|
|||
->setSourceSize(32, 32);
|
||||
|
||||
$sprites = array();
|
||||
foreach ($icons as $icon) {
|
||||
foreach ($icons as $icon) {
|
||||
$color = preg_match('/_on/', $icon) ? 'on' : 'off';
|
||||
|
||||
$prefix = 'conpher_';
|
||||
|
|
|
@ -29,6 +29,7 @@ final class PhabricatorEventType extends PhutilEventType {
|
|||
const TYPE_UI_WILLRENDEROBJECTS = 'ui.willRenderObjects';
|
||||
const TYPE_UI_DDIDRENDEROBJECT = 'ui.didRenderObject';
|
||||
const TYPE_UI_DIDRENDEROBJECTS = 'ui.didRenderObjects';
|
||||
const TYPE_UI_WILLRENDERPROPERTIES = 'ui.willRenderProperties';
|
||||
|
||||
const TYPE_PEOPLE_DIDRENDERMENU = 'people.didRenderMenu';
|
||||
}
|
||||
|
|
|
@ -163,6 +163,14 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList {
|
|||
'type' => 'db',
|
||||
'name' => 'conpherence',
|
||||
),
|
||||
'db.config' => array(
|
||||
'type' => 'db',
|
||||
'name' => 'config',
|
||||
),
|
||||
'db.token' => array(
|
||||
'type' => 'db',
|
||||
'name' => 'token',
|
||||
),
|
||||
'0000.legacy.sql' => array(
|
||||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('0000.legacy.sql'),
|
||||
|
@ -1068,10 +1076,6 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList {
|
|||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20121220.generalcache.sql'),
|
||||
),
|
||||
'db.config' => array(
|
||||
'type' => 'db',
|
||||
'name' => 'config',
|
||||
),
|
||||
'20121226.config.sql' => array(
|
||||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20121226.config.sql'),
|
||||
|
@ -1117,6 +1121,10 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList {
|
|||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20130214.chatlogchannelid.sql'),
|
||||
),
|
||||
'20130214.token.sql' => array(
|
||||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20130214.token.sql'),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,11 +4,18 @@ final class PhabricatorPropertyListView extends AphrontView {
|
|||
|
||||
private $parts = array();
|
||||
private $hasKeyboardShortcuts;
|
||||
private $object;
|
||||
private $invokedWillRenderEvent;
|
||||
|
||||
protected function canAppendChild() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public function setObject($object) {
|
||||
$this->object = $object;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setHasKeyboardShortcuts($has_keyboard_shortcuts) {
|
||||
$this->hasKeyboardShortcuts = $has_keyboard_shortcuts;
|
||||
return $this;
|
||||
|
@ -52,7 +59,25 @@ final class PhabricatorPropertyListView extends AphrontView {
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function invokeWillRenderEvent() {
|
||||
if ($this->object && $this->getUser() && !$this->invokedWillRenderEvent) {
|
||||
$event = new PhabricatorEvent(
|
||||
PhabricatorEventType::TYPE_UI_WILLRENDERPROPERTIES,
|
||||
array(
|
||||
'object' => $this->object,
|
||||
'view' => $this,
|
||||
));
|
||||
$event->setUser($this->getUser());
|
||||
PhutilEventEngine::dispatchEvent($event);
|
||||
}
|
||||
$this->invokedWillRenderEvent = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function render() {
|
||||
$this->invokeWillRenderEvent();
|
||||
|
||||
require_celerity_resource('phabricator-property-list-view-css');
|
||||
|
||||
$items = array();
|
||||
|
|
27
webroot/rsrc/css/application/tokens/tokens.css
Normal file
|
@ -0,0 +1,27 @@
|
|||
/**
|
||||
* @provides tokens-css
|
||||
*/
|
||||
|
||||
.token-icon {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
button.token-button {
|
||||
background: #f6f6f6;
|
||||
border: 1px solid #333333;
|
||||
position: relative;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
padding: 16px;
|
||||
margin: 8px;
|
||||
text-shadow: none;
|
||||
box-shadow: none;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
.token-grid {
|
||||
text-align: center;
|
||||
}
|
|
@ -5,6 +5,7 @@
|
|||
.phabricator-pinboard-view {
|
||||
padding: 20px;
|
||||
overflow: hidden;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.phabricator-pinboard-item-view {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*/
|
||||
|
||||
.sprite-conpher {
|
||||
background-image: url(/rsrc/image/sprite-conph.png);
|
||||
background-image: url(/rsrc/image/sprite-conpher.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
|||
only screen and (min-device-pixel-ratio: 1.5),
|
||||
only screen and (-webkit-min-device-pixel-ratio: 1.5) {
|
||||
.sprite-conpher {
|
||||
background-image: url(/rsrc/image/sprite-conph-X2.png);
|
||||
background-image: url(/rsrc/image/sprite-conpher-X2.png);
|
||||
background-size: 132px 132px;
|
||||
}
|
||||
}
|
||||
|
|
76
webroot/rsrc/css/sprite-tokens.css
Normal file
|
@ -0,0 +1,76 @@
|
|||
/**
|
||||
* @provides sprite-tokens-css
|
||||
* @generated
|
||||
*/
|
||||
|
||||
.sprite-tokens {
|
||||
background-image: url(/rsrc/image/sprite-tokens.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.token-coin-1 {
|
||||
background-position: 0px 0px;
|
||||
}
|
||||
|
||||
.token-coin-2 {
|
||||
background-position: -17px 0px;
|
||||
}
|
||||
|
||||
.token-coin-3 {
|
||||
background-position: -34px 0px;
|
||||
}
|
||||
|
||||
.token-coin-4 {
|
||||
background-position: -51px 0px;
|
||||
}
|
||||
|
||||
.token-heart-1 {
|
||||
background-position: 0px -17px;
|
||||
}
|
||||
|
||||
.token-heart-2 {
|
||||
background-position: -17px -17px;
|
||||
}
|
||||
|
||||
.token-like-1 {
|
||||
background-position: -34px -17px;
|
||||
}
|
||||
|
||||
.token-like-2 {
|
||||
background-position: -51px -17px;
|
||||
}
|
||||
|
||||
.token-medal-1 {
|
||||
background-position: 0px -34px;
|
||||
}
|
||||
|
||||
.token-medal-2 {
|
||||
background-position: -17px -34px;
|
||||
}
|
||||
|
||||
.token-medal-3 {
|
||||
background-position: -34px -34px;
|
||||
}
|
||||
|
||||
.token-medal-4 {
|
||||
background-position: -51px -34px;
|
||||
}
|
||||
|
||||
.token-misc-1 {
|
||||
background-position: 0px -51px;
|
||||
}
|
||||
|
||||
.token-misc-2 {
|
||||
background-position: -17px -51px;
|
||||
}
|
||||
|
||||
.token-misc-3 {
|
||||
background-position: -34px -51px;
|
||||
}
|
||||
|
||||
.token-misc-4 {
|
||||
background-position: -51px -51px;
|
||||
}
|
BIN
webroot/rsrc/image/sprite-tokens.png
Normal file
After Width: | Height: | Size: 7.2 KiB |