Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php
index d2f4de11ca..ed720acaf4 100644
--- a/src/__celerity_resource_map__.php
+++ b/src/__celerity_resource_map__.php
@@ -1,4369 +1,4368 @@
<?php
/**
* This file is automatically generated. Use 'celerity_mapper.php' to rebuild
* it.
* @generated
*/
celerity_register_resource_map(array(
'/rsrc/image/actions/edit.png' =>
array(
'hash' => 'ae90914d120ac3838ddc633b480343f3',
'uri' => '/res/ae90914d/rsrc/image/actions/edit.png',
'disk' => '/rsrc/image/actions/edit.png',
'type' => 'png',
),
'/rsrc/image/apple-touch-icon.png' =>
array(
'hash' => '3380adf2dd4a5efa0885618bc5943640',
'uri' => '/res/3380adf2/rsrc/image/apple-touch-icon.png',
'disk' => '/rsrc/image/apple-touch-icon.png',
'type' => 'png',
),
'/rsrc/image/avatar.png' =>
array(
'hash' => '1c5f255071537f05406adee86717ff27',
'uri' => '/res/1c5f2550/rsrc/image/avatar.png',
'disk' => '/rsrc/image/avatar.png',
'type' => 'png',
),
'/rsrc/image/checker_dark.png' =>
array(
'hash' => '640f795343df76ebe5409aae6187e57f',
'uri' => '/res/640f7953/rsrc/image/checker_dark.png',
'disk' => '/rsrc/image/checker_dark.png',
'type' => 'png',
),
'/rsrc/image/checker_light.png' =>
array(
'hash' => '7f8f3ef8beb0f2cc4cc69efb9e1c3308',
'uri' => '/res/7f8f3ef8/rsrc/image/checker_light.png',
'disk' => '/rsrc/image/checker_light.png',
'type' => 'png',
),
'/rsrc/image/credit_cards.png' =>
array(
'hash' => '681448de424ea159b6ea68af04c046ae',
'uri' => '/res/681448de/rsrc/image/credit_cards.png',
'disk' => '/rsrc/image/credit_cards.png',
'type' => 'png',
),
'/rsrc/image/darkload.gif' =>
array(
'hash' => '3a52cb7145d6e70f461fed21273117f2',
'uri' => '/res/3a52cb71/rsrc/image/darkload.gif',
'disk' => '/rsrc/image/darkload.gif',
'type' => 'gif',
),
'/rsrc/image/divot.png' =>
array(
'hash' => '3be267bd11ea375bf68e808893718e0e',
'uri' => '/res/3be267bd/rsrc/image/divot.png',
'disk' => '/rsrc/image/divot.png',
'type' => 'png',
),
'/rsrc/image/grippy_texture.png' =>
array(
'hash' => 'a8945e12ceeaddd5b491a8d81cfa19c1',
'uri' => '/res/a8945e12/rsrc/image/grippy_texture.png',
'disk' => '/rsrc/image/grippy_texture.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/arrow_branch.png' =>
array(
'hash' => 'f27b67520766e3d971722bcff703f3a8',
'uri' => '/res/f27b6752/rsrc/image/icon/fatcow/arrow_branch.png',
'disk' => '/rsrc/image/icon/fatcow/arrow_branch.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/arrow_merge.png' =>
array(
'hash' => 'c4bd97f3b1257439e2123ef69d2194d0',
'uri' => '/res/c4bd97f3/rsrc/image/icon/fatcow/arrow_merge.png',
'disk' => '/rsrc/image/icon/fatcow/arrow_merge.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/bullet_black.png' =>
array(
'hash' => '718f9c560a13766796f1be7dfaadeeab',
'uri' => '/res/718f9c56/rsrc/image/icon/fatcow/bullet_black.png',
'disk' => '/rsrc/image/icon/fatcow/bullet_black.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/bullet_orange.png' =>
array(
'hash' => 'c3bf91b65baacb27f2af143ab9180119',
'uri' => '/res/c3bf91b6/rsrc/image/icon/fatcow/bullet_orange.png',
'disk' => '/rsrc/image/icon/fatcow/bullet_orange.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/bullet_red.png' =>
array(
'hash' => '00273e4aa6ea3de630295610d6c9560c',
'uri' => '/res/00273e4a/rsrc/image/icon/fatcow/bullet_red.png',
'disk' => '/rsrc/image/icon/fatcow/bullet_red.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/calendar_edit.png' =>
array(
'hash' => 'de249c0f4f37bf5b2c69ff39ec5573fb',
'uri' => '/res/de249c0f/rsrc/image/icon/fatcow/calendar_edit.png',
'disk' => '/rsrc/image/icon/fatcow/calendar_edit.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/document_black.png' =>
array(
'hash' => '44d65a7f05a9c921719deedc160d68f7',
'uri' => '/res/44d65a7f/rsrc/image/icon/fatcow/document_black.png',
'disk' => '/rsrc/image/icon/fatcow/document_black.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_blue.png' =>
array(
'hash' => '75a080492f900fbe489e4b27e403962b',
'uri' => '/res/75a08049/rsrc/image/icon/fatcow/flag_blue.png',
'disk' => '/rsrc/image/icon/fatcow/flag_blue.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_finish.png' =>
array(
'hash' => '4af11fc7fab8e4610cbc3c88a02d4f78',
'uri' => '/res/4af11fc7/rsrc/image/icon/fatcow/flag_finish.png',
'disk' => '/rsrc/image/icon/fatcow/flag_finish.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_ghost.png' =>
array(
'hash' => '14c9f30a37b43f276f27a27a924bf02d',
'uri' => '/res/14c9f30a/rsrc/image/icon/fatcow/flag_ghost.png',
'disk' => '/rsrc/image/icon/fatcow/flag_ghost.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_green.png' =>
array(
'hash' => 'fed01374cd396cb774872762dcc447e1',
'uri' => '/res/fed01374/rsrc/image/icon/fatcow/flag_green.png',
'disk' => '/rsrc/image/icon/fatcow/flag_green.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_orange.png' =>
array(
'hash' => '88008cb8bb99761a37e5a743e2455aeb',
'uri' => '/res/88008cb8/rsrc/image/icon/fatcow/flag_orange.png',
'disk' => '/rsrc/image/icon/fatcow/flag_orange.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_pink.png' =>
array(
'hash' => '2f199f06ffc3dfc81b7561a057e0bc33',
'uri' => '/res/2f199f06/rsrc/image/icon/fatcow/flag_pink.png',
'disk' => '/rsrc/image/icon/fatcow/flag_pink.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_purple.png' =>
array(
'hash' => '16358629dc86c39550b575586eb5df80',
'uri' => '/res/16358629/rsrc/image/icon/fatcow/flag_purple.png',
'disk' => '/rsrc/image/icon/fatcow/flag_purple.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_red.png' =>
array(
'hash' => '210c28b4d93c439a499f5814f5e05772',
'uri' => '/res/210c28b4/rsrc/image/icon/fatcow/flag_red.png',
'disk' => '/rsrc/image/icon/fatcow/flag_red.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/flag_yellow.png' =>
array(
'hash' => 'bdfd73744a80bb80329ae50bc8a5f962',
'uri' => '/res/bdfd7374/rsrc/image/icon/fatcow/flag_yellow.png',
'disk' => '/rsrc/image/icon/fatcow/flag_yellow.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/folder.png' =>
array(
'hash' => '25e46cf9d210dde2242332296f79938c',
'uri' => '/res/25e46cf9/rsrc/image/icon/fatcow/folder.png',
'disk' => '/rsrc/image/icon/fatcow/folder.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/folder_go.png' =>
array(
'hash' => 'ba922ff7959309f51a14cb7ed5124d8b',
'uri' => '/res/ba922ff7/rsrc/image/icon/fatcow/folder_go.png',
'disk' => '/rsrc/image/icon/fatcow/folder_go.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/key_question.png' =>
array(
'hash' => '530a6448a4b91edec091a9292ccfd3d9',
'uri' => '/res/530a6448/rsrc/image/icon/fatcow/key_question.png',
'disk' => '/rsrc/image/icon/fatcow/key_question.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/link.png' =>
array(
'hash' => 'be1bea49b216548433014f3324902928',
'uri' => '/res/be1bea49/rsrc/image/icon/fatcow/link.png',
'disk' => '/rsrc/image/icon/fatcow/link.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/page_white_edit.png' =>
array(
'hash' => 'e7b7e7f2d9730bc80bc5c9eac1f3e36d',
'uri' => '/res/e7b7e7f2/rsrc/image/icon/fatcow/page_white_edit.png',
'disk' => '/rsrc/image/icon/fatcow/page_white_edit.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/page_white_link.png' =>
array(
'hash' => '1cfbad14412bda6c6f132dcc7c8725fd',
'uri' => '/res/1cfbad14/rsrc/image/icon/fatcow/page_white_link.png',
'disk' => '/rsrc/image/icon/fatcow/page_white_link.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/page_white_put.png' =>
array(
'hash' => 'bb7308aa5ac40137a8262da395a267fd',
'uri' => '/res/bb7308aa/rsrc/image/icon/fatcow/page_white_put.png',
'disk' => '/rsrc/image/icon/fatcow/page_white_put.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/page_white_text.png' =>
array(
'hash' => 'e47d590b626f617fb7d1d44e96e8fd11',
'uri' => '/res/e47d590b/rsrc/image/icon/fatcow/page_white_text.png',
'disk' => '/rsrc/image/icon/fatcow/page_white_text.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/source/conduit.png' =>
array(
'hash' => '1cae0656580aa3cd0b54b9d98306b1b9',
'uri' => '/res/1cae0656/rsrc/image/icon/fatcow/source/conduit.png',
'disk' => '/rsrc/image/icon/fatcow/source/conduit.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/source/email.png' =>
array(
'hash' => '93bdb3e168da1ed68f50c42125729d4e',
'uri' => '/res/93bdb3e1/rsrc/image/icon/fatcow/source/email.png',
'disk' => '/rsrc/image/icon/fatcow/source/email.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/source/fax.png' =>
array(
'hash' => 'd7dedf229841f2d041b347afd881596f',
'uri' => '/res/d7dedf22/rsrc/image/icon/fatcow/source/fax.png',
'disk' => '/rsrc/image/icon/fatcow/source/fax.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/source/mobile.png' =>
array(
'hash' => '786e7146d1e7d7318baf76c9d2baad97',
'uri' => '/res/786e7146/rsrc/image/icon/fatcow/source/mobile.png',
'disk' => '/rsrc/image/icon/fatcow/source/mobile.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/source/tablet.png' =>
array(
'hash' => '374cd40e4965be6b2fbdef4059d0ca05',
'uri' => '/res/374cd40e/rsrc/image/icon/fatcow/source/tablet.png',
'disk' => '/rsrc/image/icon/fatcow/source/tablet.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/source/web.png' =>
array(
'hash' => 'f4882a8f5619ba505ca033f72a340635',
'uri' => '/res/f4882a8f/rsrc/image/icon/fatcow/source/web.png',
'disk' => '/rsrc/image/icon/fatcow/source/web.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/thumbnails/default160x120.png' =>
array(
'hash' => '1b52ebd1fe0eee3ed0abfc382991b265',
'uri' => '/res/1b52ebd1/rsrc/image/icon/fatcow/thumbnails/default160x120.png',
'disk' => '/rsrc/image/icon/fatcow/thumbnails/default160x120.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/thumbnails/default60x45.png' =>
array(
'hash' => '048d851d8d1daad4754e891e734c1899',
'uri' => '/res/048d851d/rsrc/image/icon/fatcow/thumbnails/default60x45.png',
'disk' => '/rsrc/image/icon/fatcow/thumbnails/default60x45.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/thumbnails/image160x120.png' =>
array(
'hash' => '434acbd8dbbc2da9f09f6205a396eba1',
'uri' => '/res/434acbd8/rsrc/image/icon/fatcow/thumbnails/image160x120.png',
'disk' => '/rsrc/image/icon/fatcow/thumbnails/image160x120.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/thumbnails/image60x45.png' =>
array(
'hash' => '29f7872dc53588fe0b8f0b330c7ee23a',
'uri' => '/res/29f7872d/rsrc/image/icon/fatcow/thumbnails/image60x45.png',
'disk' => '/rsrc/image/icon/fatcow/thumbnails/image60x45.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png' =>
array(
'hash' => '39d2e22541658a3472ba41ae2fa548e5',
'uri' => '/res/39d2e225/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png',
'disk' => '/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png' =>
array(
'hash' => 'b3572e9317cbed5184d12bdfabed2727',
'uri' => '/res/b3572e93/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png',
'disk' => '/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/thumbnails/zip160x120.png' =>
array(
'hash' => 'e505108688a903b5cfb674707a289bcc',
'uri' => '/res/e5051086/rsrc/image/icon/fatcow/thumbnails/zip160x120.png',
'disk' => '/rsrc/image/icon/fatcow/thumbnails/zip160x120.png',
'type' => 'png',
),
'/rsrc/image/icon/fatcow/thumbnails/zip60x45.png' =>
array(
'hash' => 'f00716f4e8f7a95e70d43504f06be0a6',
'uri' => '/res/f00716f4/rsrc/image/icon/fatcow/thumbnails/zip60x45.png',
'disk' => '/rsrc/image/icon/fatcow/thumbnails/zip60x45.png',
'type' => 'png',
),
'/rsrc/image/icon/lightbox/close-2.png' =>
array(
'hash' => '72ff3ddcc1ed5d19a715ed6242114b53',
'uri' => '/res/72ff3ddc/rsrc/image/icon/lightbox/close-2.png',
'disk' => '/rsrc/image/icon/lightbox/close-2.png',
'type' => 'png',
),
'/rsrc/image/icon/lightbox/close-hover-2.png' =>
array(
'hash' => '6ad4bd4a7820547a1d9041752546ba16',
'uri' => '/res/6ad4bd4a/rsrc/image/icon/lightbox/close-hover-2.png',
'disk' => '/rsrc/image/icon/lightbox/close-hover-2.png',
'type' => 'png',
),
'/rsrc/image/icon/lightbox/left-arrow-2.png' =>
array(
'hash' => 'd84cbb0d42739f87b8f25b2f1d2f1153',
'uri' => '/res/d84cbb0d/rsrc/image/icon/lightbox/left-arrow-2.png',
'disk' => '/rsrc/image/icon/lightbox/left-arrow-2.png',
'type' => 'png',
),
'/rsrc/image/icon/lightbox/left-arrow-hover-2.png' =>
array(
'hash' => 'cdf05f98fff3f390cd8df0c89894a3e1',
'uri' => '/res/cdf05f98/rsrc/image/icon/lightbox/left-arrow-hover-2.png',
'disk' => '/rsrc/image/icon/lightbox/left-arrow-hover-2.png',
'type' => 'png',
),
'/rsrc/image/icon/lightbox/right-arrow-2.png' =>
array(
'hash' => '52021038cb6995c71f62a804bc2d420d',
'uri' => '/res/52021038/rsrc/image/icon/lightbox/right-arrow-2.png',
'disk' => '/rsrc/image/icon/lightbox/right-arrow-2.png',
'type' => 'png',
),
'/rsrc/image/icon/lightbox/right-arrow-hover-2.png' =>
array(
'hash' => '65d5756b7b9cfcdeb2eb197a9aa6bbd2',
'uri' => '/res/65d5756b/rsrc/image/icon/lightbox/right-arrow-hover-2.png',
'disk' => '/rsrc/image/icon/lightbox/right-arrow-hover-2.png',
'type' => 'png',
),
'/rsrc/image/icon/subscribe.png' =>
array(
'hash' => '5f47a4b17de245af39a4e7a097e40623',
'uri' => '/res/5f47a4b1/rsrc/image/icon/subscribe.png',
'disk' => '/rsrc/image/icon/subscribe.png',
'type' => 'png',
),
'/rsrc/image/icon/tango/attachment.png' =>
array(
'hash' => '776fed2de89803fd8a0ba4b9deede230',
'uri' => '/res/776fed2d/rsrc/image/icon/tango/attachment.png',
'disk' => '/rsrc/image/icon/tango/attachment.png',
'type' => 'png',
),
'/rsrc/image/icon/tango/edit.png' =>
array(
'hash' => 'c0028d99dcf4e9559bbf3c88ce2d8a8d',
'uri' => '/res/c0028d99/rsrc/image/icon/tango/edit.png',
'disk' => '/rsrc/image/icon/tango/edit.png',
'type' => 'png',
),
'/rsrc/image/icon/tango/go-down.png' =>
array(
'hash' => '96862812cbb0445573c264dc057b8300',
'uri' => '/res/96862812/rsrc/image/icon/tango/go-down.png',
'disk' => '/rsrc/image/icon/tango/go-down.png',
'type' => 'png',
),
'/rsrc/image/icon/tango/log.png' =>
array(
'hash' => 'a6f72499bef279ff6807a7dbc5148f1e',
'uri' => '/res/a6f72499/rsrc/image/icon/tango/log.png',
'disk' => '/rsrc/image/icon/tango/log.png',
'type' => 'png',
),
'/rsrc/image/icon/tango/upload.png' =>
array(
'hash' => '8c11b63d6d99db3d7159c5d9a94e3062',
'uri' => '/res/8c11b63d/rsrc/image/icon/tango/upload.png',
'disk' => '/rsrc/image/icon/tango/upload.png',
'type' => 'png',
),
'/rsrc/image/icon/unsubscribe.png' =>
array(
'hash' => '29429ad65aa3af50b072b32087057361',
'uri' => '/res/29429ad6/rsrc/image/icon/unsubscribe.png',
'disk' => '/rsrc/image/icon/unsubscribe.png',
'type' => 'png',
),
'/rsrc/image/loading.gif' =>
array(
'hash' => '664297671941142f37d8c89e717ff2ce',
'uri' => '/res/66429767/rsrc/image/loading.gif',
'disk' => '/rsrc/image/loading.gif',
'type' => 'gif',
),
'/rsrc/image/loading/loading_24.gif' =>
array(
'hash' => 'd6dcc5e6111a44fb9a160fc27b19d85c',
'uri' => '/res/d6dcc5e6/rsrc/image/loading/loading_24.gif',
'disk' => '/rsrc/image/loading/loading_24.gif',
'type' => 'gif',
),
'/rsrc/image/loading/loading_48.gif' =>
array(
'hash' => 'cb6fc6eb9c0a0efaf589978029080c58',
'uri' => '/res/cb6fc6eb/rsrc/image/loading/loading_48.gif',
'disk' => '/rsrc/image/loading/loading_48.gif',
'type' => 'gif',
),
'/rsrc/image/main_texture.png' =>
array(
'hash' => 'e34d8143384721be73ec9b7532a977ab',
'uri' => '/res/e34d8143/rsrc/image/main_texture.png',
'disk' => '/rsrc/image/main_texture.png',
'type' => 'png',
),
'/rsrc/image/menu_texture.png' =>
array(
'hash' => 'ad020b1529b3a3b3480ca9de1d5f1e40',
'uri' => '/res/ad020b15/rsrc/image/menu_texture.png',
'disk' => '/rsrc/image/menu_texture.png',
'type' => 'png',
),
'/rsrc/image/people/harding.png' =>
array(
'hash' => '818b035ace2c480aa8df7b7f11cef58b',
'uri' => '/res/818b035a/rsrc/image/people/harding.png',
'disk' => '/rsrc/image/people/harding.png',
'type' => 'png',
),
'/rsrc/image/people/jefferson.png' =>
array(
'hash' => '55fe807ff02f9320e595fb59442e2038',
'uri' => '/res/55fe807f/rsrc/image/people/jefferson.png',
'disk' => '/rsrc/image/people/jefferson.png',
'type' => 'png',
),
'/rsrc/image/people/lincoln.png' =>
array(
'hash' => '2363337947ab52fd5fda79e4a004e930',
'uri' => '/res/23633379/rsrc/image/people/lincoln.png',
'disk' => '/rsrc/image/people/lincoln.png',
'type' => 'png',
),
'/rsrc/image/people/mckinley.png' =>
array(
'hash' => '0b7b05dd47c49a0874670e5e8200bba8',
'uri' => '/res/0b7b05dd/rsrc/image/people/mckinley.png',
'disk' => '/rsrc/image/people/mckinley.png',
'type' => 'png',
),
'/rsrc/image/people/taft.png' =>
array(
'hash' => 'f3e47d45b59b0b009fd536dabae9a151',
'uri' => '/res/f3e47d45/rsrc/image/people/taft.png',
'disk' => '/rsrc/image/people/taft.png',
'type' => 'png',
),
'/rsrc/image/people/washington.png' =>
array(
'hash' => '01412761cab769f7993d69eba986d949',
'uri' => '/res/01412761/rsrc/image/people/washington.png',
'disk' => '/rsrc/image/people/washington.png',
'type' => 'png',
),
'/rsrc/image/phrequent_active.png' =>
array(
'hash' => '716cddc08630eaa33934b2008723cac0',
'uri' => '/res/716cddc0/rsrc/image/phrequent_active.png',
'disk' => '/rsrc/image/phrequent_active.png',
'type' => 'png',
),
'/rsrc/image/phrequent_inactive.png' =>
array(
'hash' => 'f9099683873c01c5de1dc6650bd668fe',
'uri' => '/res/f9099683/rsrc/image/phrequent_inactive.png',
'disk' => '/rsrc/image/phrequent_inactive.png',
'type' => 'png',
),
'/rsrc/image/search.png' =>
array(
'hash' => 'ff7da044e6f923b8f569dec11f97e5e5',
'uri' => '/res/ff7da044/rsrc/image/search.png',
'disk' => '/rsrc/image/search.png',
'type' => 'png',
),
'/rsrc/image/sprite-actions-X2.png' =>
array(
'hash' => '06962a5e8bea98ba7418d1d6cabcd7dc',
'uri' => '/res/06962a5e/rsrc/image/sprite-actions-X2.png',
'disk' => '/rsrc/image/sprite-actions-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-actions.png' =>
array(
'hash' => 'd5dda5fab1e61b00538c9a4fa1ee94c8',
'uri' => '/res/d5dda5fa/rsrc/image/sprite-actions.png',
'disk' => '/rsrc/image/sprite-actions.png',
'type' => 'png',
),
'/rsrc/image/sprite-apps-X2.png' =>
array(
'hash' => '35a4b5c92f0b05a6a06c8a8e2f409d9e',
'uri' => '/res/35a4b5c9/rsrc/image/sprite-apps-X2.png',
'disk' => '/rsrc/image/sprite-apps-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-apps-large-X2.png' =>
array(
'hash' => '6295f60df446103f0de702f25bc502e1',
'uri' => '/res/6295f60d/rsrc/image/sprite-apps-large-X2.png',
'disk' => '/rsrc/image/sprite-apps-large-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-apps-large.png' =>
array(
'hash' => '734d9268dd3a69102b194a7461c68631',
'uri' => '/res/734d9268/rsrc/image/sprite-apps-large.png',
'disk' => '/rsrc/image/sprite-apps-large.png',
'type' => 'png',
),
'/rsrc/image/sprite-apps-xlarge.png' =>
array(
'hash' => '992d2c278b6a22c0fa874d457a252fbd',
'uri' => '/res/992d2c27/rsrc/image/sprite-apps-xlarge.png',
'disk' => '/rsrc/image/sprite-apps-xlarge.png',
'type' => 'png',
),
'/rsrc/image/sprite-apps.png' =>
array(
'hash' => 'eed2e0e322821e1c0836fc62639c1af1',
'uri' => '/res/eed2e0e3/rsrc/image/sprite-apps.png',
'disk' => '/rsrc/image/sprite-apps.png',
'type' => 'png',
),
'/rsrc/image/sprite-conpherence-X2.png' =>
array(
'hash' => '5e47868b00933a9afb6c844e464e6b23',
'uri' => '/res/5e47868b/rsrc/image/sprite-conpherence-X2.png',
'disk' => '/rsrc/image/sprite-conpherence-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-conpherence.png' =>
array(
'hash' => 'ca51f1be25213262d68e626e4cab7f0f',
'uri' => '/res/ca51f1be/rsrc/image/sprite-conpherence.png',
'disk' => '/rsrc/image/sprite-conpherence.png',
'type' => 'png',
),
'/rsrc/image/sprite-docs-X2.png' =>
array(
'hash' => '57d3286ce88133f3ec9240e35f6bb897',
'uri' => '/res/57d3286c/rsrc/image/sprite-docs-X2.png',
'disk' => '/rsrc/image/sprite-docs-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-docs.png' =>
array(
'hash' => 'b2b089072d6eddd831402a77c02b5736',
'uri' => '/res/b2b08907/rsrc/image/sprite-docs.png',
'disk' => '/rsrc/image/sprite-docs.png',
'type' => 'png',
),
'/rsrc/image/sprite-gradient.png' =>
array(
'hash' => 'a49d2e493dba4bea85bb202af528106a',
'uri' => '/res/a49d2e49/rsrc/image/sprite-gradient.png',
'disk' => '/rsrc/image/sprite-gradient.png',
'type' => 'png',
),
'/rsrc/image/sprite-icons-X2.png' =>
array(
'hash' => '74551ad4423b882608a7325febe96a87',
'uri' => '/res/74551ad4/rsrc/image/sprite-icons-X2.png',
'disk' => '/rsrc/image/sprite-icons-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-icons.png' =>
array(
'hash' => '04e38e15232e1e0dee5acb9ae9b5ac72',
'uri' => '/res/04e38e15/rsrc/image/sprite-icons.png',
'disk' => '/rsrc/image/sprite-icons.png',
'type' => 'png',
),
'/rsrc/image/sprite-menu-X2.png' =>
array(
'hash' => '867092041ce0a62b7e50136213ca7be1',
'uri' => '/res/86709204/rsrc/image/sprite-menu-X2.png',
'disk' => '/rsrc/image/sprite-menu-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-menu.png' =>
array(
'hash' => '21508eebdf582d7251d62bb2cd09f66d',
'uri' => '/res/21508eeb/rsrc/image/sprite-menu.png',
'disk' => '/rsrc/image/sprite-menu.png',
'type' => 'png',
),
'/rsrc/image/sprite-minicons-X2.png' =>
array(
'hash' => 'c420c6462f7e50ca9941ccc5dd9e3dec',
'uri' => '/res/c420c646/rsrc/image/sprite-minicons-X2.png',
'disk' => '/rsrc/image/sprite-minicons-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-minicons.png' =>
array(
'hash' => '168bb875933624b3080a1cc134e5b4ed',
'uri' => '/res/168bb875/rsrc/image/sprite-minicons.png',
'disk' => '/rsrc/image/sprite-minicons.png',
'type' => 'png',
),
'/rsrc/image/sprite-payments.png' =>
array(
'hash' => '5ce73fb580609e7cda16832e3577b147',
'uri' => '/res/5ce73fb5/rsrc/image/sprite-payments.png',
'disk' => '/rsrc/image/sprite-payments.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/card-gradient.png' =>
array(
'hash' => '268b7fdd758d4bf99db8de6770aae8af',
'uri' => '/res/268b7fdd/rsrc/image/texture/card-gradient.png',
'disk' => '/rsrc/image/texture/card-gradient.png',
'type' => 'png',
),
'/rsrc/image/texture/dark-menu-hover.png' =>
array(
'hash' => 'a214a732644be34872e895b338b5d639',
'uri' => '/res/a214a732/rsrc/image/texture/dark-menu-hover.png',
'disk' => '/rsrc/image/texture/dark-menu-hover.png',
'type' => 'png',
),
'/rsrc/image/texture/dark-menu.png' =>
array(
'hash' => '41ee673a762cec48a154b456ad5ac204',
'uri' => '/res/41ee673a/rsrc/image/texture/dark-menu.png',
'disk' => '/rsrc/image/texture/dark-menu.png',
'type' => 'png',
),
'/rsrc/image/texture/grip.png' =>
array(
'hash' => 'f11bc231d241f1335cfca2933ad234e0',
'uri' => '/res/f11bc231/rsrc/image/texture/grip.png',
'disk' => '/rsrc/image/texture/grip.png',
'type' => 'png',
),
'/rsrc/image/texture/panel-header-gradient.png' =>
array(
'hash' => 'ad9204dd3ef5b12b645d80677d8ccead',
'uri' => '/res/ad9204dd/rsrc/image/texture/panel-header-gradient.png',
'disk' => '/rsrc/image/texture/panel-header-gradient.png',
'type' => 'png',
),
'/rsrc/image/texture/pholio-background.gif' =>
array(
'hash' => 'cf4561af116edf393dc583e5119fb412',
'uri' => '/res/cf4561af/rsrc/image/texture/pholio-background.gif',
'disk' => '/rsrc/image/texture/pholio-background.gif',
'type' => 'gif',
),
'/rsrc/image/texture/table_header.png' =>
array(
'hash' => '4ed3f56a30d3749e8f62052b9735a316',
'uri' => '/res/4ed3f56a/rsrc/image/texture/table_header.png',
'disk' => '/rsrc/image/texture/table_header.png',
'type' => 'png',
),
'/rsrc/image/texture/table_header_hover.png' =>
array(
'hash' => 'ea1f71a604e9b4859de1e25751540437',
'uri' => '/res/ea1f71a6/rsrc/image/texture/table_header_hover.png',
'disk' => '/rsrc/image/texture/table_header_hover.png',
'type' => 'png',
),
'/rsrc/image/texture/table_header_tall.png' =>
array(
'hash' => 'b05525601f78d759f1c5e47fd9c1a8aa',
'uri' => '/res/b0552560/rsrc/image/texture/table_header_tall.png',
'disk' => '/rsrc/image/texture/table_header_tall.png',
'type' => 'png',
),
'/rsrc/swf/aphlict.swf' =>
array(
'hash' => '4b9a9d83bebaf254f3790e87b45c1f92',
'uri' => '/res/4b9a9d83/rsrc/swf/aphlict.swf',
'disk' => '/rsrc/swf/aphlict.swf',
'type' => 'swf',
),
'aphront-attached-file-view-css' =>
array(
'uri' => '/res/a6ca5487/rsrc/css/aphront/attached-file-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/attached-file-view.css',
),
'aphront-bars' =>
array(
'uri' => '/res/95a907d6/rsrc/css/aphront/aphront-bars.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/aphront-bars.css',
),
'aphront-calendar-view-css' =>
array(
'uri' => '/res/ae6f5b54/rsrc/css/aphront/calendar-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/calendar-view.css',
),
'aphront-contextbar-view-css' =>
array(
'uri' => '/res/ecfd5ba9/rsrc/css/aphront/context-bar.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/context-bar.css',
),
'aphront-dark-console-css' =>
array(
'uri' => '/res/0d316573/rsrc/css/aphront/dark-console.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/dark-console.css',
),
'aphront-dialog-view-css' =>
array(
'uri' => '/res/7060a2fe/rsrc/css/aphront/dialog-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/dialog-view.css',
),
'aphront-error-view-css' =>
array(
'uri' => '/res/5f43a7c5/rsrc/css/aphront/error-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/error-view.css',
),
'aphront-form-view-css' =>
array(
'uri' => '/res/656ca1a3/rsrc/css/aphront/form-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/form-view.css',
),
'aphront-list-filter-view-css' =>
array(
'uri' => '/res/639ea9e9/rsrc/css/aphront/list-filter-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/list-filter-view.css',
),
'aphront-multi-column-view-css' =>
array(
'uri' => '/res/e01f5f0e/rsrc/css/aphront/multi-column.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/multi-column.css',
),
'aphront-notes' =>
array(
'uri' => '/res/5b8ebfa0/rsrc/css/aphront/aphront-notes.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/aphront-notes.css',
),
'aphront-pager-view-css' =>
array(
'uri' => '/res/43fb79f0/rsrc/css/aphront/pager-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/pager-view.css',
),
'aphront-panel-view-css' =>
array(
'uri' => '/res/4031ea99/rsrc/css/aphront/panel-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/panel-view.css',
),
'aphront-request-failure-view-css' =>
array(
'uri' => '/res/c9a43002/rsrc/css/aphront/request-failure-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/request-failure-view.css',
),
'aphront-table-view-css' =>
array(
'uri' => '/res/d3c44c69/rsrc/css/aphront/table-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/table-view.css',
),
'aphront-tokenizer-control-css' =>
array(
'uri' => '/res/793c5f36/rsrc/css/aphront/tokenizer.css',
'type' => 'css',
'requires' =>
array(
0 => 'aphront-typeahead-control-css',
),
'disk' => '/rsrc/css/aphront/tokenizer.css',
),
'aphront-tooltip-css' =>
array(
'uri' => '/res/3a7d8e07/rsrc/css/aphront/tooltip.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/tooltip.css',
),
'aphront-two-column-view-css' =>
array(
'uri' => '/res/4263aa98/rsrc/css/aphront/two-column.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/two-column.css',
),
'aphront-typeahead-control-css' =>
array(
'uri' => '/res/e4a4cd4b/rsrc/css/aphront/typeahead.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/typeahead.css',
),
'config-options-css' =>
array(
'uri' => '/res/be77d5a6/rsrc/css/application/config/config-options.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/config/config-options.css',
),
'conpherence-menu-css' =>
array(
- 'uri' => '/res/c955650e/rsrc/css/application/conpherence/menu.css',
+ 'uri' => '/res/60f38fbd/rsrc/css/application/conpherence/menu.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/conpherence/menu.css',
),
'conpherence-message-pane-css' =>
array(
- 'uri' => '/res/383af93e/rsrc/css/application/conpherence/message-pane.css',
+ 'uri' => '/res/d9e90066/rsrc/css/application/conpherence/message-pane.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/conpherence/message-pane.css',
),
'conpherence-update-css' =>
array(
'uri' => '/res/92094ed7/rsrc/css/application/conpherence/update.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/conpherence/update.css',
),
'conpherence-widget-pane-css' =>
array(
- 'uri' => '/res/6f836b19/rsrc/css/application/conpherence/widget-pane.css',
+ 'uri' => '/res/b218398a/rsrc/css/application/conpherence/widget-pane.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/conpherence/widget-pane.css',
),
'differential-changeset-view-css' =>
array(
'uri' => '/res/8ee213f4/rsrc/css/application/differential/changeset-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/changeset-view.css',
),
'differential-core-view-css' =>
array(
'uri' => '/res/85fe5117/rsrc/css/application/differential/core.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/core.css',
),
'differential-inline-comment-editor' =>
array(
'uri' => '/res/37e0564f/rsrc/js/application/differential/DifferentialInlineCommentEditor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-dom',
1 => 'javelin-util',
2 => 'javelin-stratcom',
3 => 'javelin-install',
4 => 'javelin-request',
5 => 'javelin-workflow',
),
'disk' => '/rsrc/js/application/differential/DifferentialInlineCommentEditor.js',
),
'differential-local-commits-view-css' =>
array(
'uri' => '/res/224f3703/rsrc/css/application/differential/local-commits-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/local-commits-view.css',
),
'differential-results-table-css' =>
array(
'uri' => '/res/aab3123c/rsrc/css/application/differential/results-table.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/results-table.css',
),
'differential-revision-add-comment-css' =>
array(
'uri' => '/res/849748d3/rsrc/css/application/differential/add-comment.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/add-comment.css',
),
'differential-revision-comment-css' =>
array(
'uri' => '/res/42c222f4/rsrc/css/application/differential/revision-comment.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/revision-comment.css',
),
'differential-revision-comment-list-css' =>
array(
'uri' => '/res/3b31faa3/rsrc/css/application/differential/revision-comment-list.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/revision-comment-list.css',
),
'differential-revision-history-css' =>
array(
'uri' => '/res/d41bc64c/rsrc/css/application/differential/revision-history.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/revision-history.css',
),
'differential-revision-list-css' =>
array(
'uri' => '/res/fe6c4721/rsrc/css/application/differential/revision-list.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/revision-list.css',
),
'differential-table-of-contents-css' =>
array(
'uri' => '/res/4fde8bfc/rsrc/css/application/differential/table-of-contents.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/differential/table-of-contents.css',
),
'diffusion-commit-view-css' =>
array(
'uri' => '/res/b445944e/rsrc/css/application/diffusion/commit-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/diffusion/commit-view.css',
),
'diffusion-icons-css' =>
array(
'uri' => '/res/b93e32c9/rsrc/css/application/diffusion/diffusion-icons.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/diffusion/diffusion-icons.css',
),
'diffusion-source-css' =>
array(
'uri' => '/res/e76bcd50/rsrc/css/application/diffusion/diffusion-source.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/diffusion/diffusion-source.css',
),
'global-drag-and-drop-css' =>
array(
'uri' => '/res/4e24cb65/rsrc/css/application/files/global-drag-and-drop.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/files/global-drag-and-drop.css',
),
'herald-css' =>
array(
'uri' => '/res/2150a55d/rsrc/css/application/herald/herald.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/herald/herald.css',
),
'herald-rule-editor' =>
array(
'uri' => '/res/f8ee0e9c/rsrc/js/application/herald/HeraldRuleEditor.js',
'type' => 'js',
'requires' =>
array(
0 => 'multirow-row-manager',
1 => 'javelin-install',
2 => 'javelin-typeahead',
3 => 'javelin-util',
4 => 'javelin-dom',
5 => 'javelin-tokenizer',
6 => 'javelin-typeahead-preloaded-source',
7 => 'javelin-stratcom',
8 => 'javelin-json',
9 => 'phabricator-prefab',
),
'disk' => '/rsrc/js/application/herald/HeraldRuleEditor.js',
),
'herald-test-css' =>
array(
'uri' => '/res/c0cd6bdb/rsrc/css/application/herald/herald-test.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/herald/herald-test.css',
),
'inline-comment-summary-css' =>
array(
'uri' => '/res/338704f7/rsrc/css/application/diff/inline-comment-summary.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/diff/inline-comment-summary.css',
),
'javelin-aphlict' =>
array(
'uri' => '/res/c0b9e53f/rsrc/js/application/aphlict/Aphlict.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/js/application/aphlict/Aphlict.js',
),
'javelin-behavior' =>
array(
'uri' => '/res/15482715/rsrc/externals/javelin/lib/behavior.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-magical-init',
1 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/lib/behavior.js',
),
'javelin-behavior-aphlict-dropdown' =>
array(
'uri' => '/res/b3be58e8/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-request',
2 => 'javelin-stratcom',
3 => 'javelin-vector',
4 => 'javelin-dom',
5 => 'javelin-uri',
),
'disk' => '/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js',
),
'javelin-behavior-aphlict-listen' =>
array(
'uri' => '/res/7487f207/rsrc/js/application/aphlict/behavior-aphlict-listen.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-aphlict',
2 => 'javelin-stratcom',
3 => 'javelin-request',
4 => 'javelin-uri',
5 => 'javelin-dom',
6 => 'javelin-json',
7 => 'phabricator-notification',
),
'disk' => '/rsrc/js/application/aphlict/behavior-aphlict-listen.js',
),
'javelin-behavior-aphront-basic-tokenizer' =>
array(
'uri' => '/res/c7fd9a7b/rsrc/js/core/behavior-tokenizer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'phabricator-prefab',
),
'disk' => '/rsrc/js/core/behavior-tokenizer.js',
),
'javelin-behavior-aphront-crop' =>
array(
'uri' => '/res/8c800f36/rsrc/js/core/behavior-crop.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-vector',
3 => 'javelin-magical-init',
),
'disk' => '/rsrc/js/core/behavior-crop.js',
),
'javelin-behavior-aphront-drag-and-drop' =>
array(
'uri' => '/res/36335362/rsrc/js/core/behavior-drag-and-drop.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'phabricator-file-upload',
3 => 'phabricator-drag-and-drop-file-upload',
),
'disk' => '/rsrc/js/core/behavior-drag-and-drop.js',
),
'javelin-behavior-aphront-drag-and-drop-textarea' =>
array(
'uri' => '/res/a261f6e6/rsrc/js/core/behavior-drag-and-drop-textarea.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'phabricator-drag-and-drop-file-upload',
3 => 'phabricator-textareautils',
),
'disk' => '/rsrc/js/core/behavior-drag-and-drop-textarea.js',
),
'javelin-behavior-aphront-form-disable-on-submit' =>
array(
'uri' => '/res/a4a4ff07/rsrc/js/core/behavior-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/behavior-form.js',
),
'javelin-behavior-aphront-more' =>
array(
'uri' => '/res/fae13324/rsrc/js/core/behavior-more.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/behavior-more.js',
),
'javelin-behavior-audit-preview' =>
array(
'uri' => '/res/d8f31e46/rsrc/js/application/diffusion/behavior-audit-preview.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'phabricator-shaped-request',
),
'disk' => '/rsrc/js/application/diffusion/behavior-audit-preview.js',
),
'javelin-behavior-balanced-payment-form' =>
array(
'uri' => '/res/6876492d/rsrc/js/application/phortune/behavior-balanced-payment-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'phortune-credit-card-form',
),
'disk' => '/rsrc/js/application/phortune/behavior-balanced-payment-form.js',
),
'javelin-behavior-conpherence-menu' =>
array(
- 'uri' => '/res/7181099a/rsrc/js/application/conpherence/behavior-menu.js',
+ 'uri' => '/res/478fc4f3/rsrc/js/application/conpherence/behavior-menu.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
- 3 => 'javelin-request',
- 4 => 'javelin-stratcom',
- 5 => 'javelin-workflow',
- 6 => 'javelin-behavior-device',
- 7 => 'javelin-history',
- 8 => 'javelin-vector',
+ 3 => 'javelin-stratcom',
+ 4 => 'javelin-workflow',
+ 5 => 'javelin-behavior-device',
+ 6 => 'javelin-history',
+ 7 => 'javelin-vector',
),
'disk' => '/rsrc/js/application/conpherence/behavior-menu.js',
),
'javelin-behavior-conpherence-pontificate' =>
array(
- 'uri' => '/res/88ac3361/rsrc/js/application/conpherence/behavior-pontificate.js',
+ 'uri' => '/res/d6c5860f/rsrc/js/application/conpherence/behavior-pontificate.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'javelin-workflow',
4 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/conpherence/behavior-pontificate.js',
),
'javelin-behavior-conpherence-widget-pane' =>
array(
- 'uri' => '/res/3d426c01/rsrc/js/application/conpherence/behavior-widget-pane.js',
+ 'uri' => '/res/232893cf/rsrc/js/application/conpherence/behavior-widget-pane.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'javelin-workflow',
4 => 'javelin-util',
5 => 'phabricator-notification',
6 => 'javelin-behavior-device',
7 => 'phabricator-dropdown-menu',
8 => 'phabricator-menu-item',
),
'disk' => '/rsrc/js/application/conpherence/behavior-widget-pane.js',
),
'javelin-behavior-countdown-timer' =>
array(
'uri' => '/res/3c52aac2/rsrc/js/application/countdown/timer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/countdown/timer.js',
),
'javelin-behavior-dark-console' =>
array(
'uri' => '/res/1e2c7a5e/rsrc/js/core/behavior-dark-console.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-request',
5 => 'phabricator-keyboard-shortcut',
),
'disk' => '/rsrc/js/core/behavior-dark-console.js',
),
'javelin-behavior-device' =>
array(
'uri' => '/res/12e43f5a/rsrc/js/core/behavior-device.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-vector',
4 => 'javelin-install',
),
'disk' => '/rsrc/js/core/behavior-device.js',
),
'javelin-behavior-differential-accept-with-errors' =>
array(
'uri' => '/res/8fea67b3/rsrc/js/application/differential/behavior-accept-with-errors.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/differential/behavior-accept-with-errors.js',
),
'javelin-behavior-differential-add-reviewers-and-ccs' =>
array(
'uri' => '/res/27be3f81/rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'phabricator-prefab',
),
'disk' => '/rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js',
),
'javelin-behavior-differential-comment-jump' =>
array(
'uri' => '/res/8ffb4222/rsrc/js/application/differential/behavior-comment-jump.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/differential/behavior-comment-jump.js',
),
'javelin-behavior-differential-diff-radios' =>
array(
'uri' => '/res/004cb66f/rsrc/js/application/differential/behavior-diff-radios.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/differential/behavior-diff-radios.js',
),
'javelin-behavior-differential-dropdown-menus' =>
array(
'uri' => '/res/f04cf682/rsrc/js/application/differential/behavior-dropdown-menus.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'javelin-stratcom',
4 => 'phabricator-dropdown-menu',
5 => 'phabricator-menu-item',
6 => 'phabricator-phtize',
),
'disk' => '/rsrc/js/application/differential/behavior-dropdown-menus.js',
),
'javelin-behavior-differential-edit-inline-comments' =>
array(
'uri' => '/res/86f459a4/rsrc/js/application/differential/behavior-edit-inline-comments.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-util',
4 => 'javelin-vector',
5 => 'differential-inline-comment-editor',
),
'disk' => '/rsrc/js/application/differential/behavior-edit-inline-comments.js',
),
'javelin-behavior-differential-feedback-preview' =>
array(
'uri' => '/res/4421fac6/rsrc/js/application/differential/behavior-comment-preview.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-request',
4 => 'javelin-util',
5 => 'phabricator-shaped-request',
),
'disk' => '/rsrc/js/application/differential/behavior-comment-preview.js',
),
'javelin-behavior-differential-keyboard-navigation' =>
array(
'uri' => '/res/22ed93ba/rsrc/js/application/differential/behavior-keyboard-nav.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'phabricator-keyboard-shortcut',
),
'disk' => '/rsrc/js/application/differential/behavior-keyboard-nav.js',
),
'javelin-behavior-differential-populate' =>
array(
'uri' => '/res/bb9a29f4/rsrc/js/application/differential/behavior-populate.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-workflow',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-stratcom',
5 => 'javelin-behavior-device',
6 => 'javelin-vector',
7 => 'phabricator-tooltip',
),
'disk' => '/rsrc/js/application/differential/behavior-populate.js',
),
'javelin-behavior-differential-show-all-comments' =>
array(
'uri' => '/res/8801848d/rsrc/js/application/differential/behavior-show-all-comments.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/differential/behavior-show-all-comments.js',
),
'javelin-behavior-differential-show-field-details' =>
array(
'uri' => '/res/8d57f459/rsrc/js/application/differential/behavior-show-field-details.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/differential/behavior-show-field-details.js',
),
'javelin-behavior-differential-show-more' =>
array(
'uri' => '/res/b9f93090/rsrc/js/application/differential/behavior-show-more.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-workflow',
3 => 'javelin-util',
4 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/differential/behavior-show-more.js',
),
'javelin-behavior-differential-toggle-files' =>
array(
'uri' => '/res/ae937207/rsrc/js/application/differential/behavior-toggle-files.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/differential/behavior-toggle-files.js',
),
'javelin-behavior-differential-user-select' =>
array(
'uri' => '/res/23c51a5d/rsrc/js/application/differential/behavior-user-select.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/differential/behavior-user-select.js',
),
'javelin-behavior-diffusion-commit-branches' =>
array(
'uri' => '/res/1ede335a/rsrc/js/application/diffusion/behavior-commit-branches.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'javelin-request',
),
'disk' => '/rsrc/js/application/diffusion/behavior-commit-branches.js',
),
'javelin-behavior-diffusion-commit-graph' =>
array(
'uri' => '/res/536b8483/rsrc/js/application/diffusion/behavior-commit-graph.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/diffusion/behavior-commit-graph.js',
),
'javelin-behavior-diffusion-jump-to' =>
array(
'uri' => '/res/bade44bd/rsrc/js/application/diffusion/behavior-jump-to.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-vector',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/diffusion/behavior-jump-to.js',
),
'javelin-behavior-diffusion-line-linker' =>
array(
'uri' => '/res/12866f13/rsrc/js/application/diffusion/behavior-line-linker.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-history',
),
'disk' => '/rsrc/js/application/diffusion/behavior-line-linker.js',
),
'javelin-behavior-diffusion-pull-lastmodified' =>
array(
'uri' => '/res/29fe2790/rsrc/js/application/diffusion/behavior-pull-lastmodified.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'javelin-request',
),
'disk' => '/rsrc/js/application/diffusion/behavior-pull-lastmodified.js',
),
'javelin-behavior-error-log' =>
array(
'uri' => '/res/acefdea7/rsrc/js/core/behavior-error-log.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/behavior-error-log.js',
),
'javelin-behavior-fancy-datepicker' =>
array(
'uri' => '/res/f5c13e07/rsrc/js/core/behavior-fancy-datepicker.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-util',
2 => 'javelin-dom',
3 => 'javelin-stratcom',
4 => 'javelin-vector',
),
'disk' => '/rsrc/js/core/behavior-fancy-datepicker.js',
),
'javelin-behavior-global-drag-and-drop' =>
array(
'uri' => '/res/ee8e9c39/rsrc/js/core/behavior-global-drag-and-drop.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-uri',
3 => 'javelin-mask',
4 => 'phabricator-drag-and-drop-file-upload',
),
'disk' => '/rsrc/js/core/behavior-global-drag-and-drop.js',
),
'javelin-behavior-herald-rule-editor' =>
array(
'uri' => '/res/77a0c945/rsrc/js/application/herald/herald-rule-editor.js',
'type' => 'js',
'requires' =>
array(
0 => 'herald-rule-editor',
1 => 'javelin-behavior',
),
'disk' => '/rsrc/js/application/herald/herald-rule-editor.js',
),
'javelin-behavior-history-install' =>
array(
'uri' => '/res/9099a161/rsrc/js/core/behavior-history-install.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-history',
),
'disk' => '/rsrc/js/core/behavior-history-install.js',
),
'javelin-behavior-konami' =>
array(
'uri' => '/res/b7bb7c24/rsrc/js/core/behavior-konami.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/core/behavior-konami.js',
),
'javelin-behavior-lightbox-attachments' =>
array(
'uri' => '/res/72b4d3a8/rsrc/js/core/behavior-lightbox-attachments.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-mask',
4 => 'javelin-util',
5 => 'phabricator-busy',
),
'disk' => '/rsrc/js/core/behavior-lightbox-attachments.js',
),
'javelin-behavior-line-chart' =>
array(
'uri' => '/res/1aa5ac88/rsrc/js/application/maniphest/behavior-line-chart.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-vector',
),
'disk' => '/rsrc/js/application/maniphest/behavior-line-chart.js',
),
'javelin-behavior-load-blame' =>
array(
'uri' => '/res/138e2961/rsrc/js/application/diffusion/behavior-load-blame.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-request',
),
'disk' => '/rsrc/js/application/diffusion/behavior-load-blame.js',
),
'javelin-behavior-maniphest-batch-editor' =>
array(
'uri' => '/res/81b2b86f/rsrc/js/application/maniphest/behavior-batch-editor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'phabricator-prefab',
4 => 'multirow-row-manager',
5 => 'javelin-json',
),
'disk' => '/rsrc/js/application/maniphest/behavior-batch-editor.js',
),
'javelin-behavior-maniphest-batch-selector' =>
array(
'uri' => '/res/c33cb5e3/rsrc/js/application/maniphest/behavior-batch-selector.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'javelin-util',
),
'disk' => '/rsrc/js/application/maniphest/behavior-batch-selector.js',
),
'javelin-behavior-maniphest-description-preview' =>
array(
'uri' => '/res/58ba0ec2/rsrc/js/application/maniphest/behavior-task-preview.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'phabricator-shaped-request',
),
'disk' => '/rsrc/js/application/maniphest/behavior-task-preview.js',
),
'javelin-behavior-maniphest-subpriority-editor' =>
array(
'uri' => '/res/21b73c2a/rsrc/js/application/maniphest/behavior-subpriorityeditor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-magical-init',
2 => 'javelin-dom',
3 => 'javelin-vector',
4 => 'javelin-stratcom',
5 => 'javelin-workflow',
),
'disk' => '/rsrc/js/application/maniphest/behavior-subpriorityeditor.js',
),
'javelin-behavior-maniphest-transaction-controls' =>
array(
'uri' => '/res/e8498688/rsrc/js/application/maniphest/behavior-transaction-controls.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'phabricator-prefab',
),
'disk' => '/rsrc/js/application/maniphest/behavior-transaction-controls.js',
),
'javelin-behavior-maniphest-transaction-expand' =>
array(
'uri' => '/res/966410de/rsrc/js/application/maniphest/behavior-transaction-expand.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-workflow',
3 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/maniphest/behavior-transaction-expand.js',
),
'javelin-behavior-maniphest-transaction-preview' =>
array(
'uri' => '/res/9447a3f9/rsrc/js/application/maniphest/behavior-transaction-preview.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'javelin-json',
4 => 'javelin-stratcom',
5 => 'phabricator-shaped-request',
),
'disk' => '/rsrc/js/application/maniphest/behavior-transaction-preview.js',
),
'javelin-behavior-owners-path-editor' =>
array(
'uri' => '/res/9cf78ffc/rsrc/js/application/owners/owners-path-editor.js',
'type' => 'js',
'requires' =>
array(
0 => 'owners-path-editor',
1 => 'javelin-behavior',
),
'disk' => '/rsrc/js/application/owners/owners-path-editor.js',
),
'javelin-behavior-phabricator-active-nav' =>
array(
'uri' => '/res/9c8d3df8/rsrc/js/core/behavior-active-nav.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-vector',
3 => 'javelin-dom',
4 => 'javelin-uri',
),
'disk' => '/rsrc/js/core/behavior-active-nav.js',
),
'javelin-behavior-phabricator-autofocus' =>
array(
'uri' => '/res/bf92b8d6/rsrc/js/core/behavior-autofocus.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/behavior-autofocus.js',
),
'javelin-behavior-phabricator-file-tree' =>
array(
'uri' => '/res/e5bf93df/rsrc/js/core/behavior-file-tree.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'phabricator-keyboard-shortcut',
2 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/core/behavior-file-tree.js',
),
'javelin-behavior-phabricator-gesture' =>
array(
'uri' => '/res/16e1e77c/rsrc/js/core/behavior-gesture.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-behavior-device',
2 => 'javelin-stratcom',
3 => 'javelin-vector',
4 => 'javelin-dom',
5 => 'javelin-magical-init',
),
'disk' => '/rsrc/js/core/behavior-gesture.js',
),
'javelin-behavior-phabricator-gesture-example' =>
array(
'uri' => '/res/91d1e7f2/rsrc/js/application/uiexample/gesture-example.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-stratcom',
1 => 'javelin-behavior',
2 => 'javelin-vector',
3 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/uiexample/gesture-example.js',
),
'javelin-behavior-phabricator-hovercards' =>
array(
'uri' => '/res/4fe6b436/rsrc/js/core/behavior-hovercard.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-behavior-device',
2 => 'javelin-stratcom',
3 => 'javelin-vector',
4 => 'phabricator-hovercard',
),
'disk' => '/rsrc/js/core/behavior-hovercard.js',
),
'javelin-behavior-phabricator-keyboard-pager' =>
array(
'uri' => '/res/6a5445b8/rsrc/js/core/behavior-keyboard-pager.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-uri',
2 => 'phabricator-keyboard-shortcut',
),
'disk' => '/rsrc/js/core/behavior-keyboard-pager.js',
),
'javelin-behavior-phabricator-keyboard-shortcuts' =>
array(
'uri' => '/res/b971e713/rsrc/js/core/behavior-keyboard-shortcuts.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-workflow',
2 => 'javelin-json',
3 => 'javelin-dom',
4 => 'phabricator-keyboard-shortcut',
),
'disk' => '/rsrc/js/core/behavior-keyboard-shortcuts.js',
),
'javelin-behavior-phabricator-nav' =>
array(
'uri' => '/res/afabcf16/rsrc/js/core/behavior-phabricator-nav.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-behavior-device',
2 => 'javelin-stratcom',
3 => 'javelin-dom',
4 => 'javelin-magical-init',
5 => 'javelin-vector',
6 => 'javelin-request',
7 => 'javelin-util',
),
'disk' => '/rsrc/js/core/behavior-phabricator-nav.js',
),
'javelin-behavior-phabricator-notification-example' =>
array(
'uri' => '/res/7c50cefd/rsrc/js/application/uiexample/notification-example.js',
'type' => 'js',
'requires' =>
array(
0 => 'phabricator-notification',
1 => 'javelin-stratcom',
2 => 'javelin-behavior',
),
'disk' => '/rsrc/js/application/uiexample/notification-example.js',
),
'javelin-behavior-phabricator-object-selector' =>
array(
'uri' => '/res/461f95f7/rsrc/js/core/behavior-object-selector.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-request',
3 => 'javelin-util',
),
'disk' => '/rsrc/js/core/behavior-object-selector.js',
),
'javelin-behavior-phabricator-oncopy' =>
array(
'uri' => '/res/cd3a9345/rsrc/js/core/behavior-oncopy.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/behavior-oncopy.js',
),
'javelin-behavior-phabricator-remarkup-assist' =>
array(
'uri' => '/res/6d254602/rsrc/js/core/behavior-phabricator-remarkup-assist.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'phabricator-textareautils',
4 => 'javelin-workflow',
5 => 'phabricator-notification',
6 => 'javelin-vector',
),
'disk' => '/rsrc/js/core/behavior-phabricator-remarkup-assist.js',
),
'javelin-behavior-phabricator-reveal-content' =>
array(
'uri' => '/res/fef525ef/rsrc/js/core/behavior-reveal-content.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/behavior-reveal-content.js',
),
'javelin-behavior-phabricator-search-typeahead' =>
array(
'uri' => '/res/b39896d5/rsrc/js/core/behavior-search-typeahead.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-typeahead-ondemand-source',
2 => 'javelin-typeahead',
3 => 'javelin-dom',
4 => 'javelin-uri',
5 => 'javelin-util',
6 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/core/behavior-search-typeahead.js',
),
'javelin-behavior-phabricator-tooltips' =>
array(
'uri' => '/res/a0ac5320/rsrc/js/core/behavior-tooltip.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-behavior-device',
2 => 'javelin-stratcom',
3 => 'phabricator-tooltip',
),
'disk' => '/rsrc/js/core/behavior-tooltip.js',
),
'javelin-behavior-phabricator-transaction-comment-form' =>
array(
'uri' => '/res/7591a57f/rsrc/js/application/transactions/behavior-transaction-comment-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'phabricator-shaped-request',
),
'disk' => '/rsrc/js/application/transactions/behavior-transaction-comment-form.js',
),
'javelin-behavior-phabricator-transaction-list' =>
array(
'uri' => '/res/f1fbb474/rsrc/js/application/transactions/behavior-transaction-list.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-workflow',
3 => 'javelin-dom',
4 => 'javelin-fx',
),
'disk' => '/rsrc/js/application/transactions/behavior-transaction-list.js',
),
'javelin-behavior-phabricator-watch-anchor' =>
array(
'uri' => '/res/69a90817/rsrc/js/core/behavior-watch-anchor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-vector',
),
'disk' => '/rsrc/js/core/behavior-watch-anchor.js',
),
'javelin-behavior-phame-post-preview' =>
array(
'uri' => '/res/181d1cbe/rsrc/js/application/phame/phame-post-preview.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'phabricator-shaped-request',
),
'disk' => '/rsrc/js/application/phame/phame-post-preview.js',
),
'javelin-behavior-pholio-mock-view' =>
array(
'uri' => '/res/0632e7d9/rsrc/js/application/pholio/behavior-pholio-mock-view.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-util',
2 => 'javelin-stratcom',
3 => 'javelin-dom',
4 => 'javelin-vector',
5 => 'javelin-magical-init',
6 => 'javelin-request',
7 => 'javelin-history',
8 => 'javelin-workflow',
9 => 'javelin-mask',
10 => 'javelin-behavior-device',
11 => 'phabricator-keyboard-shortcut',
),
'disk' => '/rsrc/js/application/pholio/behavior-pholio-mock-view.js',
),
'javelin-behavior-phriction-document-preview' =>
array(
'uri' => '/res/e2fe02de/rsrc/js/application/phriction/phriction-document-preview.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'phabricator-shaped-request',
),
'disk' => '/rsrc/js/application/phriction/phriction-document-preview.js',
),
'javelin-behavior-ponder-feedback-preview' =>
array(
'uri' => '/res/2e802dd9/rsrc/js/application/ponder/behavior-comment-preview.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'phabricator-shaped-request',
),
'disk' => '/rsrc/js/application/ponder/behavior-comment-preview.js',
),
'javelin-behavior-ponder-votebox' =>
array(
'uri' => '/res/d8c973a2/rsrc/js/application/ponder/behavior-votebox.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'javelin-stratcom',
4 => 'javelin-request',
),
'disk' => '/rsrc/js/application/ponder/behavior-votebox.js',
),
'javelin-behavior-project-create' =>
array(
'uri' => '/res/e91f3f8f/rsrc/js/application/projects/behavior-project-create.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'javelin-workflow',
),
'disk' => '/rsrc/js/application/projects/behavior-project-create.js',
),
'javelin-behavior-refresh-csrf' =>
array(
'uri' => '/res/6c54100f/rsrc/js/core/behavior-refresh-csrf.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-request',
1 => 'javelin-behavior',
2 => 'javelin-dom',
3 => 'phabricator-busy',
),
'disk' => '/rsrc/js/core/behavior-refresh-csrf.js',
),
'javelin-behavior-releeph-preview-branch' =>
array(
'uri' => '/res/f694854d/rsrc/js/application/releeph/releeph-preview-branch.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-uri',
3 => 'javelin-request',
),
'disk' => '/rsrc/js/application/releeph/releeph-preview-branch.js',
),
'javelin-behavior-releeph-request-state-change' =>
array(
'uri' => '/res/07ecde0c/rsrc/js/application/releeph/releeph-request-state-change.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'javelin-request',
4 => 'phabricator-keyboard-shortcut',
5 => 'phabricator-notification',
),
'disk' => '/rsrc/js/application/releeph/releeph-request-state-change.js',
),
'javelin-behavior-releeph-request-typeahead' =>
array(
'uri' => '/res/2c2350a0/rsrc/js/application/releeph/releeph-request-typeahead.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-typeahead',
3 => 'javelin-typeahead-ondemand-source',
4 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/releeph/releeph-request-typeahead.js',
),
'javelin-behavior-repository-crossreference' =>
array(
'uri' => '/res/d3f9d50b/rsrc/js/application/repository/repository-crossreference.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'javelin-uri',
),
'disk' => '/rsrc/js/application/repository/repository-crossreference.js',
),
'javelin-behavior-slowvote-embed' =>
array(
'uri' => '/res/8e85e20d/rsrc/js/application/slowvote/behavior-slowvote-embed.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-request',
2 => 'javelin-stratcom',
3 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/slowvote/behavior-slowvote-embed.js',
),
'javelin-behavior-stripe-payment-form' =>
array(
'uri' => '/res/c1a12d77/rsrc/js/application/phortune/behavior-stripe-payment-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'phortune-credit-card-form',
),
'disk' => '/rsrc/js/application/phortune/behavior-stripe-payment-form.js',
),
'javelin-behavior-test-payment-form' =>
array(
'uri' => '/res/a8fe8616/rsrc/js/application/phortune/behavior-test-payment-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'phortune-credit-card-form',
),
'disk' => '/rsrc/js/application/phortune/behavior-test-payment-form.js',
),
'javelin-behavior-toggle-class' =>
array(
'uri' => '/res/79921b7f/rsrc/js/core/behavior-toggle-class.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/behavior-toggle-class.js',
),
'javelin-behavior-view-placeholder' =>
array(
'uri' => '/res/6abdb85b/rsrc/externals/javelin/ext/view/ViewPlaceholder.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-view-renderer',
3 => 'javelin-install',
),
'disk' => '/rsrc/externals/javelin/ext/view/ViewPlaceholder.js',
),
'javelin-behavior-workflow' =>
array(
'uri' => '/res/425777cc/rsrc/js/core/behavior-workflow.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-workflow',
3 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/behavior-workflow.js',
),
'javelin-color' =>
array(
'uri' => '/res/f17034de/rsrc/externals/javelin/ext/fx/Color.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/externals/javelin/ext/fx/Color.js',
),
'javelin-cookie' =>
array(
'uri' => '/res/ee0d399f/rsrc/externals/javelin/lib/Cookie.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/lib/Cookie.js',
),
'javelin-dom' =>
array(
'uri' => '/res/175211d6/rsrc/externals/javelin/lib/DOM.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-magical-init',
1 => 'javelin-install',
2 => 'javelin-util',
3 => 'javelin-vector',
4 => 'javelin-stratcom',
),
'disk' => '/rsrc/externals/javelin/lib/DOM.js',
),
'javelin-dynval' =>
array(
'uri' => '/res/ea6f2a9d/rsrc/externals/javelin/ext/reactor/core/DynVal.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-reactornode',
2 => 'javelin-util',
3 => 'javelin-reactor',
),
'disk' => '/rsrc/externals/javelin/ext/reactor/core/DynVal.js',
),
'javelin-event' =>
array(
'uri' => '/res/5f70f4d0/rsrc/externals/javelin/core/Event.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/externals/javelin/core/Event.js',
),
'javelin-fx' =>
array(
'uri' => '/res/c7cefec3/rsrc/externals/javelin/ext/fx/FX.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-color',
1 => 'javelin-install',
2 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/ext/fx/FX.js',
),
'javelin-history' =>
array(
'uri' => '/res/6c084b09/rsrc/externals/javelin/lib/History.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-stratcom',
1 => 'javelin-install',
2 => 'javelin-uri',
3 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/lib/History.js',
),
'javelin-install' =>
array(
'uri' => '/res/904356c0/rsrc/externals/javelin/core/install.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-util',
1 => 'javelin-magical-init',
),
'disk' => '/rsrc/externals/javelin/core/install.js',
),
'javelin-json' =>
array(
'uri' => '/res/cf83e72c/rsrc/externals/javelin/lib/JSON.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/externals/javelin/lib/JSON.js',
),
'javelin-magical-init' =>
array(
'uri' => '/res/7c6c8d5a/rsrc/externals/javelin/core/init.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/externals/javelin/core/init.js',
),
'javelin-mask' =>
array(
'uri' => '/res/465cf513/rsrc/externals/javelin/lib/Mask.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
),
'disk' => '/rsrc/externals/javelin/lib/Mask.js',
),
'javelin-reactor' =>
array(
'uri' => '/res/c05f2658/rsrc/externals/javelin/ext/reactor/core/Reactor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/ext/reactor/core/Reactor.js',
),
'javelin-reactor-dom' =>
array(
'uri' => '/res/5e03117e/rsrc/externals/javelin/ext/reactor/dom/RDOM.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-dom',
1 => 'javelin-dynval',
2 => 'javelin-reactor',
3 => 'javelin-reactornode',
4 => 'javelin-install',
5 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/ext/reactor/dom/RDOM.js',
),
'javelin-reactor-node-calmer' =>
array(
'uri' => '/res/a93dd6b6/rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-reactor',
2 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js',
),
'javelin-reactornode' =>
array(
'uri' => '/res/4eac475b/rsrc/externals/javelin/ext/reactor/core/ReactorNode.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-reactor',
2 => 'javelin-util',
3 => 'javelin-reactor-node-calmer',
),
'disk' => '/rsrc/externals/javelin/ext/reactor/core/ReactorNode.js',
),
'javelin-request' =>
array(
'uri' => '/res/687bdcfc/rsrc/externals/javelin/lib/Request.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-stratcom',
2 => 'javelin-util',
3 => 'javelin-behavior',
4 => 'javelin-json',
5 => 'javelin-dom',
6 => 'javelin-resource',
),
'disk' => '/rsrc/externals/javelin/lib/Request.js',
),
'javelin-resource' =>
array(
'uri' => '/res/33a3bb57/rsrc/externals/javelin/lib/Resource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-util',
1 => 'javelin-uri',
2 => 'javelin-install',
),
'disk' => '/rsrc/externals/javelin/lib/Resource.js',
),
'javelin-stratcom' =>
array(
'uri' => '/res/714946e7/rsrc/externals/javelin/core/Stratcom.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-event',
2 => 'javelin-util',
3 => 'javelin-magical-init',
),
'disk' => '/rsrc/externals/javelin/core/Stratcom.js',
),
'javelin-tokenizer' =>
array(
'uri' => '/res/7c117141/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-dom',
1 => 'javelin-util',
2 => 'javelin-stratcom',
3 => 'javelin-install',
),
'disk' => '/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js',
),
'javelin-typeahead' =>
array(
'uri' => '/res/fd79f758/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-vector',
3 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js',
),
'javelin-typeahead-composite-source' =>
array(
'uri' => '/res/487b3da2/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-typeahead-source',
2 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js',
),
'javelin-typeahead-normalizer' =>
array(
'uri' => '/res/5a4bd979/rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js',
),
'javelin-typeahead-ondemand-source' =>
array(
'uri' => '/res/4e5add88/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-request',
3 => 'javelin-typeahead-source',
),
'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js',
),
'javelin-typeahead-preloaded-source' =>
array(
'uri' => '/res/147900c7/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-request',
3 => 'javelin-typeahead-source',
),
'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js',
),
'javelin-typeahead-source' =>
array(
'uri' => '/res/13289259/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-dom',
3 => 'javelin-typeahead-normalizer',
),
'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js',
),
'javelin-typeahead-static-source' =>
array(
'uri' => '/res/bb0a5173/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-typeahead-source',
),
'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js',
),
'javelin-uri' =>
array(
'uri' => '/res/75aa4597/rsrc/externals/javelin/lib/URI.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-stratcom',
),
'disk' => '/rsrc/externals/javelin/lib/URI.js',
),
'javelin-util' =>
array(
'uri' => '/res/90222113/rsrc/externals/javelin/core/util.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/externals/javelin/core/util.js',
),
'javelin-vector' =>
array(
'uri' => '/res/58ea3dd7/rsrc/externals/javelin/lib/Vector.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-event',
),
'disk' => '/rsrc/externals/javelin/lib/Vector.js',
),
'javelin-view' =>
array(
'uri' => '/res/38daaec0/rsrc/externals/javelin/ext/view/View.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/ext/view/View.js',
),
'javelin-view-html' =>
array(
'uri' => '/res/0d225e8c/rsrc/externals/javelin/ext/view/HTMLView.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-view-visitor',
3 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/ext/view/HTMLView.js',
),
'javelin-view-interpreter' =>
array(
'uri' => '/res/b0c07f96/rsrc/externals/javelin/ext/view/ViewInterpreter.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-view',
1 => 'javelin-install',
2 => 'javelin-dom',
),
'disk' => '/rsrc/externals/javelin/ext/view/ViewInterpreter.js',
),
'javelin-view-renderer' =>
array(
'uri' => '/res/fe0d2f60/rsrc/externals/javelin/ext/view/ViewRenderer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/ext/view/ViewRenderer.js',
),
'javelin-view-visitor' =>
array(
'uri' => '/res/b1606cec/rsrc/externals/javelin/ext/view/ViewVisitor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/externals/javelin/ext/view/ViewVisitor.js',
),
'javelin-workflow' =>
array(
'uri' => '/res/8274d65f/rsrc/externals/javelin/lib/Workflow.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-stratcom',
1 => 'javelin-request',
2 => 'javelin-dom',
3 => 'javelin-vector',
4 => 'javelin-install',
5 => 'javelin-util',
6 => 'javelin-mask',
7 => 'javelin-uri',
),
'disk' => '/rsrc/externals/javelin/lib/Workflow.js',
),
'lightbox-attachment-css' =>
array(
'uri' => '/res/4657e15d/rsrc/css/aphront/lightbox-attachment.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/lightbox-attachment.css',
),
'maniphest-batch-editor' =>
array(
'uri' => '/res/fb15d744/rsrc/css/application/maniphest/batch-editor.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/maniphest/batch-editor.css',
),
'maniphest-report-css' =>
array(
'uri' => '/res/2e633fcf/rsrc/css/application/maniphest/report.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/maniphest/report.css',
),
'maniphest-task-edit-css' =>
array(
'uri' => '/res/0760f768/rsrc/css/application/maniphest/task-edit.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/maniphest/task-edit.css',
),
'maniphest-task-summary-css' =>
array(
'uri' => '/res/7aa9e2eb/rsrc/css/application/maniphest/task-summary.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/maniphest/task-summary.css',
),
'maniphest-transaction-detail-css' =>
array(
'uri' => '/res/fb430d3e/rsrc/css/application/maniphest/transaction-detail.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/maniphest/transaction-detail.css',
),
'multirow-row-manager' =>
array(
'uri' => '/res/408fae4f/rsrc/js/core/MultirowRowManager.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-util',
),
'disk' => '/rsrc/js/core/MultirowRowManager.js',
),
'owners-path-editor' =>
array(
'uri' => '/res/29b68354/rsrc/js/application/owners/OwnersPathEditor.js',
'type' => 'js',
'requires' =>
array(
0 => 'multirow-row-manager',
1 => 'javelin-install',
2 => 'path-typeahead',
3 => 'javelin-dom',
4 => 'javelin-util',
5 => 'phabricator-prefab',
),
'disk' => '/rsrc/js/application/owners/OwnersPathEditor.js',
),
'owners-path-editor-css' =>
array(
'uri' => '/res/1b9b5456/rsrc/css/application/owners/owners-path-editor.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/owners/owners-path-editor.css',
),
'paste-css' =>
array(
'uri' => '/res/216fbfe9/rsrc/css/application/paste/paste.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/paste/paste.css',
),
'path-typeahead' =>
array(
'uri' => '/res/50246fb6/rsrc/js/application/herald/PathTypeahead.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-typeahead',
2 => 'javelin-dom',
3 => 'javelin-request',
4 => 'javelin-typeahead-ondemand-source',
5 => 'javelin-util',
),
'disk' => '/rsrc/js/application/herald/PathTypeahead.js',
),
'phabricator-action-header-view-css' =>
array(
'uri' => '/res/3b701648/rsrc/css/layout/phabricator-action-header-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-action-header-view.css',
),
'phabricator-action-list-view-css' =>
array(
'uri' => '/res/f63afae7/rsrc/css/layout/phabricator-action-list-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-action-list-view.css',
),
'phabricator-application-launch-view-css' =>
array(
'uri' => '/res/dffb18f3/rsrc/css/application/base/phabricator-application-launch-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/base/phabricator-application-launch-view.css',
),
'phabricator-busy' =>
array(
'uri' => '/res/8e3f036d/rsrc/js/core/Busy.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/Busy.js',
),
'phabricator-chatlog-css' =>
array(
'uri' => '/res/5542e247/rsrc/css/application/chatlog/chatlog.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/chatlog/chatlog.css',
),
'phabricator-content-source-view-css' =>
array(
'uri' => '/res/8c738a93/rsrc/css/application/contentsource/content-source-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/contentsource/content-source-view.css',
),
'phabricator-core-buttons-css' =>
array(
'uri' => '/res/073fc5eb/rsrc/css/core/buttons.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/buttons.css',
),
'phabricator-core-css' =>
array(
'uri' => '/res/dc204369/rsrc/css/core/core.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/core.css',
),
'phabricator-countdown-css' =>
array(
'uri' => '/res/0f646281/rsrc/css/application/countdown/timer.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/countdown/timer.css',
),
'phabricator-crumbs-view-css' =>
array(
'uri' => '/res/feeb02f0/rsrc/css/layout/phabricator-crumbs-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-crumbs-view.css',
),
'phabricator-directory-css' =>
array(
'uri' => '/res/61afca2b/rsrc/css/application/directory/phabricator-directory.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/directory/phabricator-directory.css',
),
'phabricator-drag-and-drop-file-upload' =>
array(
'uri' => '/res/396d3b3b/rsrc/js/core/DragAndDropFileUpload.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-request',
3 => 'javelin-dom',
4 => 'javelin-uri',
5 => 'phabricator-file-upload',
),
'disk' => '/rsrc/js/core/DragAndDropFileUpload.js',
),
'phabricator-dropdown-menu' =>
array(
'uri' => '/res/a248b7f4/rsrc/js/core/DropdownMenu.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-dom',
3 => 'javelin-vector',
4 => 'javelin-stratcom',
5 => 'phabricator-menu-item',
),
'disk' => '/rsrc/js/core/DropdownMenu.js',
),
'phabricator-fatal-config-template-css' =>
array(
'uri' => '/res/6e1a8d22/rsrc/css/application/config/config-template.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/config/config-template.css',
),
'phabricator-feed-css' =>
array(
'uri' => '/res/e19633ed/rsrc/css/application/feed/feed.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/feed/feed.css',
),
'phabricator-file-upload' =>
array(
'uri' => '/res/c9605008/rsrc/js/core/FileUpload.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'phabricator-notification',
),
'disk' => '/rsrc/js/core/FileUpload.js',
),
'phabricator-filetree-view-css' =>
array(
'uri' => '/res/c912ed91/rsrc/css/layout/phabricator-filetree-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-filetree-view.css',
),
'phabricator-flag-css' =>
array(
'uri' => '/res/237234d7/rsrc/css/application/flag/flag.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/flag/flag.css',
),
'phabricator-form-view-css' =>
array(
'uri' => '/res/ba05f8ba/rsrc/css/layout/phabricator-form-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-form-view.css',
),
'phabricator-header-view-css' =>
array(
'uri' => '/res/585b771c/rsrc/css/layout/phabricator-header-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-header-view.css',
),
'phabricator-hovercard' =>
array(
'uri' => '/res/7fb94260/rsrc/js/core/Hovercard.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-vector',
3 => 'javelin-request',
4 => 'javelin-uri',
),
'disk' => '/rsrc/js/core/Hovercard.js',
),
'phabricator-hovercard-view-css' =>
array(
'uri' => '/res/80683f88/rsrc/css/layout/phabricator-hovercard-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-hovercard-view.css',
),
'phabricator-jump-nav' =>
array(
'uri' => '/res/37ab43b8/rsrc/css/application/directory/phabricator-jump-nav.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/directory/phabricator-jump-nav.css',
),
'phabricator-keyboard-shortcut' =>
array(
'uri' => '/res/44747afd/rsrc/js/core/KeyboardShortcut.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'phabricator-keyboard-shortcut-manager',
),
'disk' => '/rsrc/js/core/KeyboardShortcut.js',
),
'phabricator-keyboard-shortcut-manager' =>
array(
'uri' => '/res/bf9bc02a/rsrc/js/core/KeyboardShortcutManager.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-stratcom',
3 => 'javelin-dom',
4 => 'javelin-vector',
),
'disk' => '/rsrc/js/core/KeyboardShortcutManager.js',
),
'phabricator-main-menu-view' =>
array(
'uri' => '/res/50479234/rsrc/css/application/base/main-menu-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/base/main-menu-view.css',
),
'phabricator-menu-item' =>
array(
'uri' => '/res/2add4594/rsrc/js/core/DropdownMenuItem.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/core/DropdownMenuItem.js',
),
'phabricator-nav-view-css' =>
array(
'uri' => '/res/37955b6a/rsrc/css/aphront/phabricator-nav-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/phabricator-nav-view.css',
),
'phabricator-notification' =>
array(
'uri' => '/res/0764da14/rsrc/js/core/Notification.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'javelin-util',
4 => 'phabricator-notification-css',
),
'disk' => '/rsrc/js/core/Notification.js',
),
'phabricator-notification-css' =>
array(
'uri' => '/res/664b9bec/rsrc/css/aphront/notification.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/notification.css',
),
'phabricator-notification-menu-css' =>
array(
'uri' => '/res/bc245b67/rsrc/css/application/base/notification-menu.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/base/notification-menu.css',
),
'phabricator-object-item-list-view-css' =>
array(
'uri' => '/res/96dce9f3/rsrc/css/layout/phabricator-object-item-list-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-object-item-list-view.css',
),
'phabricator-object-list-view-css' =>
array(
'uri' => '/res/4f183668/rsrc/css/application/projects/phabricator-object-list-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/projects/phabricator-object-list-view.css',
),
'phabricator-object-selector-css' =>
array(
'uri' => '/res/502f1bb9/rsrc/css/application/objectselector/object-selector.css',
'type' => 'css',
'requires' =>
array(
0 => 'aphront-dialog-view-css',
),
'disk' => '/rsrc/css/application/objectselector/object-selector.css',
),
'phabricator-phtize' =>
array(
'uri' => '/res/dc655a81/rsrc/js/core/phtize.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-util',
),
'disk' => '/rsrc/js/core/phtize.js',
),
'phabricator-pinboard-view-css' =>
array(
'uri' => '/res/61ecd7cf/rsrc/css/layout/phabricator-pinboard-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-pinboard-view.css',
),
'phabricator-prefab' =>
array(
'uri' => '/res/511859ca/rsrc/js/core/Prefab.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-dom',
3 => 'javelin-typeahead',
4 => 'javelin-tokenizer',
5 => 'javelin-typeahead-preloaded-source',
6 => 'javelin-typeahead-ondemand-source',
7 => 'javelin-dom',
8 => 'javelin-stratcom',
9 => 'javelin-util',
),
'disk' => '/rsrc/js/core/Prefab.js',
),
'phabricator-profile-css' =>
array(
'uri' => '/res/87229261/rsrc/css/application/profile/profile-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/profile/profile-view.css',
),
'phabricator-profile-header-css' =>
array(
'uri' => '/res/a03c1e20/rsrc/css/application/profile/profile-header-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/profile/profile-header-view.css',
),
'phabricator-project-tag-css' =>
array(
'uri' => '/res/1b5efcb2/rsrc/css/application/projects/project-tag.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/projects/project-tag.css',
),
'phabricator-property-list-view-css' =>
array(
'uri' => '/res/a04cc81d/rsrc/css/layout/phabricator-property-list-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-property-list-view.css',
),
'phabricator-remarkup-css' =>
array(
'uri' => '/res/07cab525/rsrc/css/core/remarkup.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/remarkup.css',
),
'phabricator-search-results-css' =>
array(
'uri' => '/res/9b749d7d/rsrc/css/application/search/search-results.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/search/search-results.css',
),
'phabricator-settings-css' =>
array(
'uri' => '/res/fb9d017f/rsrc/css/application/settings/settings.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/settings/settings.css',
),
'phabricator-shaped-request' =>
array(
'uri' => '/res/d173af85/rsrc/js/core/ShapedRequest.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-request',
),
'disk' => '/rsrc/js/core/ShapedRequest.js',
),
'phabricator-side-menu-view-css' =>
array(
'uri' => '/res/2a1ac469/rsrc/css/layout/phabricator-side-menu-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-side-menu-view.css',
),
'phabricator-slowvote-css' =>
array(
'uri' => '/res/d1c2e05a/rsrc/css/application/slowvote/slowvote.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/slowvote/slowvote.css',
),
'phabricator-source-code-view-css' =>
array(
'uri' => '/res/979d5280/rsrc/css/layout/phabricator-source-code-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-source-code-view.css',
),
'phabricator-standard-page-view' =>
array(
'uri' => '/res/70fa2da4/rsrc/css/application/base/standard-page-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/base/standard-page-view.css',
),
'phabricator-tag-view-css' =>
array(
'uri' => '/res/e10bf844/rsrc/css/layout/phabricator-tag-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-tag-view.css',
),
'phabricator-textareautils' =>
array(
'uri' => '/res/03c03e8b/rsrc/js/core/TextAreaUtils.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/js/core/TextAreaUtils.js',
),
'phabricator-timeline-view-css' =>
array(
'uri' => '/res/5517bf1a/rsrc/css/layout/phabricator-timeline-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-timeline-view.css',
),
'phabricator-tooltip' =>
array(
'uri' => '/res/a23bc887/rsrc/js/core/ToolTip.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-dom',
3 => 'javelin-vector',
),
'disk' => '/rsrc/js/core/ToolTip.js',
),
'phabricator-transaction-view-css' =>
array(
'uri' => '/res/00be4b1a/rsrc/css/aphront/transaction.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/transaction.css',
),
'phabricator-ui-example-css' =>
array(
'uri' => '/res/376ab671/rsrc/css/application/uiexample/example.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/uiexample/example.css',
),
'phabricator-uiexample-javelin-view' =>
array(
'uri' => '/res/2da87384/rsrc/js/application/uiexample/JavelinViewExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/uiexample/JavelinViewExample.js',
),
'phabricator-uiexample-reactor-button' =>
array(
'uri' => '/res/6bfe4f05/rsrc/js/application/uiexample/ReactorButtonExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'javelin-dynval',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorButtonExample.js',
),
'phabricator-uiexample-reactor-checkbox' =>
array(
'uri' => '/res/3e8b30ac/rsrc/js/application/uiexample/ReactorCheckboxExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorCheckboxExample.js',
),
'phabricator-uiexample-reactor-focus' =>
array(
'uri' => '/res/d8f3b56e/rsrc/js/application/uiexample/ReactorFocusExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorFocusExample.js',
),
'phabricator-uiexample-reactor-input' =>
array(
'uri' => '/res/936352d9/rsrc/js/application/uiexample/ReactorInputExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-reactor-dom',
2 => 'javelin-view-html',
3 => 'javelin-view-interpreter',
4 => 'javelin-view-renderer',
),
'disk' => '/rsrc/js/application/uiexample/ReactorInputExample.js',
),
'phabricator-uiexample-reactor-mouseover' =>
array(
'uri' => '/res/031a9f4f/rsrc/js/application/uiexample/ReactorMouseoverExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorMouseoverExample.js',
),
'phabricator-uiexample-reactor-radio' =>
array(
'uri' => '/res/208c58e3/rsrc/js/application/uiexample/ReactorRadioExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorRadioExample.js',
),
'phabricator-uiexample-reactor-select' =>
array(
'uri' => '/res/1b68a6db/rsrc/js/application/uiexample/ReactorSelectExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorSelectExample.js',
),
'phabricator-uiexample-reactor-sendclass' =>
array(
'uri' => '/res/00cb3131/rsrc/js/application/uiexample/ReactorSendClassExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorSendClassExample.js',
),
'phabricator-uiexample-reactor-sendproperties' =>
array(
'uri' => '/res/392f1e02/rsrc/js/application/uiexample/ReactorSendPropertiesExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorSendPropertiesExample.js',
),
'phabricator-workboard-view-css' =>
array(
'uri' => '/res/f598d215/rsrc/css/layout/phabricator-workboard-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-workboard-view.css',
),
'phabricator-workpanel-view-css' =>
array(
'uri' => '/res/ff5d5b26/rsrc/css/layout/phabricator-workpanel-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/layout/phabricator-workpanel-view.css',
),
'phabricator-zindex-css' =>
array(
'uri' => '/res/d4048e34/rsrc/css/core/z-index.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/z-index.css',
),
'phame-css' =>
array(
'uri' => '/res/ba5a8cd8/rsrc/css/application/phame/phame.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/phame/phame.css',
),
'pholio-css' =>
array(
'uri' => '/res/73796b1e/rsrc/css/application/pholio/pholio.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/pholio/pholio.css',
),
'pholio-inline-comments-css' =>
array(
'uri' => '/res/006fc575/rsrc/css/application/pholio/pholio-inline-comments.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/pholio/pholio-inline-comments.css',
),
'phortune-credit-card-form' =>
array(
'uri' => '/res/bc948778/rsrc/js/application/phortune/phortune-credit-card-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-json',
3 => 'javelin-workflow',
4 => 'javelin-util',
),
'disk' => '/rsrc/js/application/phortune/phortune-credit-card-form.js',
),
'phortune-credit-card-form-css' =>
array(
'uri' => '/res/563c8c6d/rsrc/css/application/phortune/phortune-credit-card-form.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/phortune/phortune-credit-card-form.css',
),
'phrequent-css' =>
array(
'uri' => '/res/9d6f3eb7/rsrc/css/application/phrequent/phrequent.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/phrequent/phrequent.css',
),
'phriction-document-css' =>
array(
'uri' => '/res/14e08350/rsrc/css/application/phriction/phriction-document-css.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/phriction/phriction-document-css.css',
),
'phui-box-css' =>
array(
'uri' => '/res/1b741073/rsrc/css/phui/phui-box.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/phui/phui-box.css',
),
'phui-feed-story-css' =>
array(
'uri' => '/res/253ac568/rsrc/css/phui/phui-feed-story.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/phui/phui-feed-story.css',
),
'phui-form-css' =>
array(
'uri' => '/res/ba4d7995/rsrc/css/phui/phui-form.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/phui/phui-form.css',
),
'phui-icon-view-css' =>
array(
'uri' => '/res/1b1a37b5/rsrc/css/phui/phui-icon.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/phui/phui-icon.css',
),
'phui-text-css' =>
array(
'uri' => '/res/ca884ca6/rsrc/css/phui/phui-text.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/phui/phui-text.css',
),
'ponder-comment-table-css' =>
array(
'uri' => '/res/15cb54fb/rsrc/css/application/ponder/comments.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/ponder/comments.css',
),
'ponder-feed-view-css' =>
array(
'uri' => '/res/cab09075/rsrc/css/application/ponder/feed.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/ponder/feed.css',
),
'ponder-post-css' =>
array(
'uri' => '/res/013b9e2c/rsrc/css/application/ponder/post.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/ponder/post.css',
),
'ponder-vote-css' =>
array(
'uri' => '/res/26945177/rsrc/css/application/ponder/vote.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/ponder/vote.css',
),
'raphael-core' =>
array(
'uri' => '/res/5dc5e17c/rsrc/externals/raphael/raphael.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/externals/raphael/raphael.js',
),
'raphael-g' =>
array(
'uri' => '/res/229b89a1/rsrc/externals/raphael/g.raphael.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/externals/raphael/g.raphael.js',
),
'raphael-g-line' =>
array(
'uri' => '/res/96da30f7/rsrc/externals/raphael/g.raphael.line.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/externals/raphael/g.raphael.line.js',
),
'releeph-branch' =>
array(
'uri' => '/res/6ad6420d/rsrc/css/application/releeph/releeph-branch.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-branch.css',
),
'releeph-colors' =>
array(
'uri' => '/res/dff4b26a/rsrc/css/application/releeph/releeph-colors.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-colors.css',
),
'releeph-core' =>
array(
'uri' => '/res/853f4a73/rsrc/css/application/releeph/releeph-core.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-core.css',
),
'releeph-intents' =>
array(
'uri' => '/res/4e73e9dd/rsrc/css/application/releeph/releeph-intents.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-intents.css',
),
'releeph-preview-branch' =>
array(
'uri' => '/res/65e5dece/rsrc/css/application/releeph/releeph-preview-branch.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-preview-branch.css',
),
'releeph-project' =>
array(
'uri' => '/res/b9376e59/rsrc/css/application/releeph/releeph-project.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-project.css',
),
'releeph-request-differential-create-dialog' =>
array(
'uri' => '/res/4df30ce1/rsrc/css/application/releeph/releeph-request-differential-create-dialog.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-request-differential-create-dialog.css',
),
'releeph-request-typeahead-css' =>
array(
'uri' => '/res/9c9a1acf/rsrc/css/application/releeph/releeph-request-typeahead.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-request-typeahead.css',
),
'releeph-status' =>
array(
'uri' => '/res/588529df/rsrc/css/application/releeph/releeph-status.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/releeph/releeph-status.css',
),
'setup-issue-css' =>
array(
'uri' => '/res/efbb3673/rsrc/css/application/config/setup-issue.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/config/setup-issue.css',
),
'spacing-css' =>
array(
'uri' => '/res/59e4c9b1/rsrc/css/core/spacing.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/spacing.css',
),
'sprite-actions-css' =>
array(
'uri' => '/res/bd43efa8/rsrc/css/sprite-actions.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-actions.css',
),
'sprite-apps-css' =>
array(
'uri' => '/res/edc99ce1/rsrc/css/sprite-apps.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-apps.css',
),
'sprite-apps-large-css' =>
array(
'uri' => '/res/40397d93/rsrc/css/sprite-apps-large.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-apps-large.css',
),
'sprite-apps-xlarge-css' =>
array(
'uri' => '/res/33a8e644/rsrc/css/sprite-apps-xlarge.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-apps-xlarge.css',
),
'sprite-conpherence-css' =>
array(
'uri' => '/res/f6793453/rsrc/css/sprite-conpherence.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-conpherence.css',
),
'sprite-docs-css' =>
array(
'uri' => '/res/b32f93bc/rsrc/css/sprite-docs.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-docs.css',
),
'sprite-gradient-css' =>
array(
'uri' => '/res/ca88b981/rsrc/css/sprite-gradient.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-gradient.css',
),
'sprite-icons-css' =>
array(
'uri' => '/res/cc45e87c/rsrc/css/sprite-icons.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-icons.css',
),
'sprite-menu-css' =>
array(
'uri' => '/res/e4e428f9/rsrc/css/sprite-menu.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-menu.css',
),
'sprite-minicons-css' =>
array(
'uri' => '/res/2dba70cd/rsrc/css/sprite-minicons.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-minicons.css',
),
'sprite-payments-css' =>
array(
'uri' => '/res/876697b6/rsrc/css/sprite-payments.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-payments.css',
),
'sprite-tokens-css' =>
array(
'uri' => '/res/edb4e341/rsrc/css/sprite-tokens.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-tokens.css',
),
'syntax-highlighting-css' =>
array(
'uri' => '/res/cb3b9dc0/rsrc/css/core/syntax.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/syntax.css',
),
'tokens-css' =>
array(
'uri' => '/res/dae13a94/rsrc/css/application/tokens/tokens.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/tokens/tokens.css',
),
), array(
'packages' =>
array(
'c3ade478' =>
array(
'name' => 'core.pkg.css',
'symbols' =>
array(
0 => 'phabricator-core-css',
1 => 'phabricator-zindex-css',
2 => 'phabricator-core-buttons-css',
3 => 'phabricator-standard-page-view',
4 => 'aphront-dialog-view-css',
5 => 'aphront-form-view-css',
6 => 'aphront-panel-view-css',
7 => 'aphront-table-view-css',
8 => 'aphront-tokenizer-control-css',
9 => 'aphront-typeahead-control-css',
10 => 'aphront-list-filter-view-css',
11 => 'phabricator-directory-css',
12 => 'phabricator-jump-nav',
13 => 'phabricator-remarkup-css',
14 => 'syntax-highlighting-css',
15 => 'aphront-pager-view-css',
16 => 'phabricator-transaction-view-css',
17 => 'aphront-tooltip-css',
18 => 'phabricator-flag-css',
19 => 'aphront-error-view-css',
20 => 'sprite-icons-css',
21 => 'sprite-gradient-css',
22 => 'sprite-menu-css',
23 => 'sprite-apps-large-css',
24 => 'phabricator-main-menu-view',
25 => 'phabricator-notification-css',
26 => 'phabricator-notification-menu-css',
27 => 'lightbox-attachment-css',
28 => 'phabricator-header-view-css',
29 => 'phabricator-form-view-css',
30 => 'phabricator-filetree-view-css',
31 => 'phabricator-nav-view-css',
32 => 'phabricator-side-menu-view-css',
33 => 'phabricator-crumbs-view-css',
34 => 'phabricator-object-item-list-view-css',
35 => 'global-drag-and-drop-css',
36 => 'spacing-css',
37 => 'phui-form-css',
38 => 'phui-icon-view-css',
39 => 'phabricator-application-launch-view-css',
40 => 'phabricator-action-list-view-css',
41 => 'phabricator-property-list-view-css',
42 => 'phabricator-tag-view-css',
),
'uri' => '/res/pkg/c3ade478/core.pkg.css',
'type' => 'css',
),
'98f60e3f' =>
array(
'name' => 'core.pkg.js',
'symbols' =>
array(
0 => 'javelin-behavior-aphront-basic-tokenizer',
1 => 'javelin-behavior-workflow',
2 => 'javelin-behavior-aphront-form-disable-on-submit',
3 => 'phabricator-keyboard-shortcut-manager',
4 => 'phabricator-keyboard-shortcut',
5 => 'javelin-behavior-phabricator-keyboard-shortcuts',
6 => 'javelin-behavior-refresh-csrf',
7 => 'javelin-behavior-phabricator-watch-anchor',
8 => 'javelin-behavior-phabricator-autofocus',
9 => 'phabricator-menu-item',
10 => 'phabricator-dropdown-menu',
11 => 'phabricator-phtize',
12 => 'javelin-behavior-phabricator-oncopy',
13 => 'phabricator-tooltip',
14 => 'javelin-behavior-phabricator-tooltips',
15 => 'phabricator-prefab',
16 => 'javelin-behavior-device',
17 => 'javelin-behavior-toggle-class',
18 => 'javelin-behavior-lightbox-attachments',
19 => 'phabricator-busy',
20 => 'javelin-aphlict',
21 => 'phabricator-notification',
22 => 'javelin-behavior-aphlict-listen',
23 => 'javelin-behavior-phabricator-search-typeahead',
24 => 'javelin-behavior-konami',
25 => 'javelin-behavior-aphlict-dropdown',
26 => 'javelin-behavior-history-install',
27 => 'javelin-behavior-phabricator-gesture',
28 => 'javelin-behavior-phabricator-active-nav',
29 => 'javelin-behavior-phabricator-nav',
30 => 'javelin-behavior-phabricator-remarkup-assist',
31 => 'phabricator-textareautils',
32 => 'phabricator-file-upload',
33 => 'javelin-behavior-global-drag-and-drop',
34 => 'javelin-behavior-phabricator-reveal-content',
35 => 'phabricator-hovercard',
36 => 'javelin-behavior-phabricator-hovercards',
),
'uri' => '/res/pkg/98f60e3f/core.pkg.js',
'type' => 'js',
),
'4ccfeb47' =>
array(
'name' => 'darkconsole.pkg.js',
'symbols' =>
array(
0 => 'javelin-behavior-dark-console',
1 => 'javelin-behavior-error-log',
),
'uri' => '/res/pkg/4ccfeb47/darkconsole.pkg.js',
'type' => 'js',
),
'dd27a69b' =>
array(
'name' => 'differential.pkg.css',
'symbols' =>
array(
0 => 'differential-core-view-css',
1 => 'differential-changeset-view-css',
2 => 'differential-results-table-css',
3 => 'differential-revision-history-css',
4 => 'differential-revision-list-css',
5 => 'differential-table-of-contents-css',
6 => 'differential-revision-comment-css',
7 => 'differential-revision-add-comment-css',
8 => 'differential-revision-comment-list-css',
9 => 'phabricator-object-selector-css',
10 => 'phabricator-content-source-view-css',
11 => 'differential-local-commits-view-css',
12 => 'inline-comment-summary-css',
),
'uri' => '/res/pkg/dd27a69b/differential.pkg.css',
'type' => 'css',
),
'9488bb69' =>
array(
'name' => 'differential.pkg.js',
'symbols' =>
array(
0 => 'phabricator-drag-and-drop-file-upload',
1 => 'phabricator-shaped-request',
2 => 'javelin-behavior-differential-feedback-preview',
3 => 'javelin-behavior-differential-edit-inline-comments',
4 => 'javelin-behavior-differential-populate',
5 => 'javelin-behavior-differential-show-more',
6 => 'javelin-behavior-differential-diff-radios',
7 => 'javelin-behavior-differential-accept-with-errors',
8 => 'javelin-behavior-differential-comment-jump',
9 => 'javelin-behavior-differential-add-reviewers-and-ccs',
10 => 'javelin-behavior-differential-keyboard-navigation',
11 => 'javelin-behavior-aphront-drag-and-drop',
12 => 'javelin-behavior-aphront-drag-and-drop-textarea',
13 => 'javelin-behavior-phabricator-object-selector',
14 => 'javelin-behavior-repository-crossreference',
15 => 'javelin-behavior-load-blame',
16 => 'differential-inline-comment-editor',
17 => 'javelin-behavior-differential-dropdown-menus',
18 => 'javelin-behavior-differential-toggle-files',
19 => 'javelin-behavior-differential-user-select',
),
'uri' => '/res/pkg/9488bb69/differential.pkg.js',
'type' => 'js',
),
'c8ce2d88' =>
array(
'name' => 'diffusion.pkg.css',
'symbols' =>
array(
0 => 'diffusion-commit-view-css',
1 => 'diffusion-icons-css',
),
'uri' => '/res/pkg/c8ce2d88/diffusion.pkg.css',
'type' => 'css',
),
96909266 =>
array(
'name' => 'diffusion.pkg.js',
'symbols' =>
array(
0 => 'javelin-behavior-diffusion-pull-lastmodified',
1 => 'javelin-behavior-diffusion-commit-graph',
2 => 'javelin-behavior-audit-preview',
),
'uri' => '/res/pkg/96909266/diffusion.pkg.js',
'type' => 'js',
),
'c1359b5d' =>
array(
'name' => 'javelin.pkg.js',
'symbols' =>
array(
0 => 'javelin-util',
1 => 'javelin-install',
2 => 'javelin-event',
3 => 'javelin-stratcom',
4 => 'javelin-behavior',
5 => 'javelin-resource',
6 => 'javelin-request',
7 => 'javelin-vector',
8 => 'javelin-dom',
9 => 'javelin-json',
10 => 'javelin-uri',
11 => 'javelin-workflow',
12 => 'javelin-mask',
13 => 'javelin-typeahead',
14 => 'javelin-typeahead-normalizer',
15 => 'javelin-typeahead-source',
16 => 'javelin-typeahead-preloaded-source',
17 => 'javelin-typeahead-ondemand-source',
18 => 'javelin-tokenizer',
19 => 'javelin-history',
),
'uri' => '/res/pkg/c1359b5d/javelin.pkg.js',
'type' => 'js',
),
'6b1fccc6' =>
array(
'name' => 'maniphest.pkg.css',
'symbols' =>
array(
0 => 'maniphest-task-summary-css',
1 => 'maniphest-transaction-detail-css',
2 => 'aphront-attached-file-view-css',
3 => 'phabricator-project-tag-css',
),
'uri' => '/res/pkg/6b1fccc6/maniphest.pkg.css',
'type' => 'css',
),
'1621e522' =>
array(
'name' => 'maniphest.pkg.js',
'symbols' =>
array(
0 => 'javelin-behavior-maniphest-batch-selector',
1 => 'javelin-behavior-maniphest-transaction-controls',
2 => 'javelin-behavior-maniphest-transaction-preview',
3 => 'javelin-behavior-maniphest-transaction-expand',
4 => 'javelin-behavior-maniphest-subpriority-editor',
),
'uri' => '/res/pkg/1621e522/maniphest.pkg.js',
'type' => 'js',
),
),
'reverse' =>
array(
'aphront-attached-file-view-css' => '6b1fccc6',
'aphront-dialog-view-css' => 'c3ade478',
'aphront-error-view-css' => 'c3ade478',
'aphront-form-view-css' => 'c3ade478',
'aphront-list-filter-view-css' => 'c3ade478',
'aphront-pager-view-css' => 'c3ade478',
'aphront-panel-view-css' => 'c3ade478',
'aphront-table-view-css' => 'c3ade478',
'aphront-tokenizer-control-css' => 'c3ade478',
'aphront-tooltip-css' => 'c3ade478',
'aphront-typeahead-control-css' => 'c3ade478',
'differential-changeset-view-css' => 'dd27a69b',
'differential-core-view-css' => 'dd27a69b',
'differential-inline-comment-editor' => '9488bb69',
'differential-local-commits-view-css' => 'dd27a69b',
'differential-results-table-css' => 'dd27a69b',
'differential-revision-add-comment-css' => 'dd27a69b',
'differential-revision-comment-css' => 'dd27a69b',
'differential-revision-comment-list-css' => 'dd27a69b',
'differential-revision-history-css' => 'dd27a69b',
'differential-revision-list-css' => 'dd27a69b',
'differential-table-of-contents-css' => 'dd27a69b',
'diffusion-commit-view-css' => 'c8ce2d88',
'diffusion-icons-css' => 'c8ce2d88',
'global-drag-and-drop-css' => 'c3ade478',
'inline-comment-summary-css' => 'dd27a69b',
'javelin-aphlict' => '98f60e3f',
'javelin-behavior' => 'c1359b5d',
'javelin-behavior-aphlict-dropdown' => '98f60e3f',
'javelin-behavior-aphlict-listen' => '98f60e3f',
'javelin-behavior-aphront-basic-tokenizer' => '98f60e3f',
'javelin-behavior-aphront-drag-and-drop' => '9488bb69',
'javelin-behavior-aphront-drag-and-drop-textarea' => '9488bb69',
'javelin-behavior-aphront-form-disable-on-submit' => '98f60e3f',
'javelin-behavior-audit-preview' => '96909266',
'javelin-behavior-dark-console' => '4ccfeb47',
'javelin-behavior-device' => '98f60e3f',
'javelin-behavior-differential-accept-with-errors' => '9488bb69',
'javelin-behavior-differential-add-reviewers-and-ccs' => '9488bb69',
'javelin-behavior-differential-comment-jump' => '9488bb69',
'javelin-behavior-differential-diff-radios' => '9488bb69',
'javelin-behavior-differential-dropdown-menus' => '9488bb69',
'javelin-behavior-differential-edit-inline-comments' => '9488bb69',
'javelin-behavior-differential-feedback-preview' => '9488bb69',
'javelin-behavior-differential-keyboard-navigation' => '9488bb69',
'javelin-behavior-differential-populate' => '9488bb69',
'javelin-behavior-differential-show-more' => '9488bb69',
'javelin-behavior-differential-toggle-files' => '9488bb69',
'javelin-behavior-differential-user-select' => '9488bb69',
'javelin-behavior-diffusion-commit-graph' => '96909266',
'javelin-behavior-diffusion-pull-lastmodified' => '96909266',
'javelin-behavior-error-log' => '4ccfeb47',
'javelin-behavior-global-drag-and-drop' => '98f60e3f',
'javelin-behavior-history-install' => '98f60e3f',
'javelin-behavior-konami' => '98f60e3f',
'javelin-behavior-lightbox-attachments' => '98f60e3f',
'javelin-behavior-load-blame' => '9488bb69',
'javelin-behavior-maniphest-batch-selector' => '1621e522',
'javelin-behavior-maniphest-subpriority-editor' => '1621e522',
'javelin-behavior-maniphest-transaction-controls' => '1621e522',
'javelin-behavior-maniphest-transaction-expand' => '1621e522',
'javelin-behavior-maniphest-transaction-preview' => '1621e522',
'javelin-behavior-phabricator-active-nav' => '98f60e3f',
'javelin-behavior-phabricator-autofocus' => '98f60e3f',
'javelin-behavior-phabricator-gesture' => '98f60e3f',
'javelin-behavior-phabricator-hovercards' => '98f60e3f',
'javelin-behavior-phabricator-keyboard-shortcuts' => '98f60e3f',
'javelin-behavior-phabricator-nav' => '98f60e3f',
'javelin-behavior-phabricator-object-selector' => '9488bb69',
'javelin-behavior-phabricator-oncopy' => '98f60e3f',
'javelin-behavior-phabricator-remarkup-assist' => '98f60e3f',
'javelin-behavior-phabricator-reveal-content' => '98f60e3f',
'javelin-behavior-phabricator-search-typeahead' => '98f60e3f',
'javelin-behavior-phabricator-tooltips' => '98f60e3f',
'javelin-behavior-phabricator-watch-anchor' => '98f60e3f',
'javelin-behavior-refresh-csrf' => '98f60e3f',
'javelin-behavior-repository-crossreference' => '9488bb69',
'javelin-behavior-toggle-class' => '98f60e3f',
'javelin-behavior-workflow' => '98f60e3f',
'javelin-dom' => 'c1359b5d',
'javelin-event' => 'c1359b5d',
'javelin-history' => 'c1359b5d',
'javelin-install' => 'c1359b5d',
'javelin-json' => 'c1359b5d',
'javelin-mask' => 'c1359b5d',
'javelin-request' => 'c1359b5d',
'javelin-resource' => 'c1359b5d',
'javelin-stratcom' => 'c1359b5d',
'javelin-tokenizer' => 'c1359b5d',
'javelin-typeahead' => 'c1359b5d',
'javelin-typeahead-normalizer' => 'c1359b5d',
'javelin-typeahead-ondemand-source' => 'c1359b5d',
'javelin-typeahead-preloaded-source' => 'c1359b5d',
'javelin-typeahead-source' => 'c1359b5d',
'javelin-uri' => 'c1359b5d',
'javelin-util' => 'c1359b5d',
'javelin-vector' => 'c1359b5d',
'javelin-workflow' => 'c1359b5d',
'lightbox-attachment-css' => 'c3ade478',
'maniphest-task-summary-css' => '6b1fccc6',
'maniphest-transaction-detail-css' => '6b1fccc6',
'phabricator-action-list-view-css' => 'c3ade478',
'phabricator-application-launch-view-css' => 'c3ade478',
'phabricator-busy' => '98f60e3f',
'phabricator-content-source-view-css' => 'dd27a69b',
'phabricator-core-buttons-css' => 'c3ade478',
'phabricator-core-css' => 'c3ade478',
'phabricator-crumbs-view-css' => 'c3ade478',
'phabricator-directory-css' => 'c3ade478',
'phabricator-drag-and-drop-file-upload' => '9488bb69',
'phabricator-dropdown-menu' => '98f60e3f',
'phabricator-file-upload' => '98f60e3f',
'phabricator-filetree-view-css' => 'c3ade478',
'phabricator-flag-css' => 'c3ade478',
'phabricator-form-view-css' => 'c3ade478',
'phabricator-header-view-css' => 'c3ade478',
'phabricator-hovercard' => '98f60e3f',
'phabricator-jump-nav' => 'c3ade478',
'phabricator-keyboard-shortcut' => '98f60e3f',
'phabricator-keyboard-shortcut-manager' => '98f60e3f',
'phabricator-main-menu-view' => 'c3ade478',
'phabricator-menu-item' => '98f60e3f',
'phabricator-nav-view-css' => 'c3ade478',
'phabricator-notification' => '98f60e3f',
'phabricator-notification-css' => 'c3ade478',
'phabricator-notification-menu-css' => 'c3ade478',
'phabricator-object-item-list-view-css' => 'c3ade478',
'phabricator-object-selector-css' => 'dd27a69b',
'phabricator-phtize' => '98f60e3f',
'phabricator-prefab' => '98f60e3f',
'phabricator-project-tag-css' => '6b1fccc6',
'phabricator-property-list-view-css' => 'c3ade478',
'phabricator-remarkup-css' => 'c3ade478',
'phabricator-shaped-request' => '9488bb69',
'phabricator-side-menu-view-css' => 'c3ade478',
'phabricator-standard-page-view' => 'c3ade478',
'phabricator-tag-view-css' => 'c3ade478',
'phabricator-textareautils' => '98f60e3f',
'phabricator-tooltip' => '98f60e3f',
'phabricator-transaction-view-css' => 'c3ade478',
'phabricator-zindex-css' => 'c3ade478',
'phui-form-css' => 'c3ade478',
'phui-icon-view-css' => 'c3ade478',
'spacing-css' => 'c3ade478',
'sprite-apps-large-css' => 'c3ade478',
'sprite-gradient-css' => 'c3ade478',
'sprite-icons-css' => 'c3ade478',
'sprite-menu-css' => 'c3ade478',
'syntax-highlighting-css' => 'c3ade478',
),
));
diff --git a/src/applications/conpherence/controller/ConpherenceController.php b/src/applications/conpherence/controller/ConpherenceController.php
index 95bf05f613..348507011b 100644
--- a/src/applications/conpherence/controller/ConpherenceController.php
+++ b/src/applications/conpherence/controller/ConpherenceController.php
@@ -1,103 +1,112 @@
<?php
/**
* @group conpherence
*/
abstract class ConpherenceController extends PhabricatorController {
private $conpherences;
public function buildApplicationMenu() {
$nav = new PhabricatorMenuView();
$nav->newLink(
pht('New Message'),
$this->getApplicationURI('new/'));
return $nav;
}
public function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
$crumbs
->addAction(
id(new PhabricatorMenuItemView())
->setName(pht('New Message'))
->setHref($this->getApplicationURI('new/'))
->setIcon('create')
->setWorkflow(true))
->addAction(
id(new PhabricatorMenuItemView())
->setName(pht('Thread'))
->setHref('#')
->setIcon('action-menu')
->setStyle('display: none;')
->addClass('device-widgets-selector')
->addSigil('device-widgets-selector'));
return $crumbs;
}
protected function buildHeaderPaneContent(ConpherenceThread $conpherence) {
$crumbs = $this->buildApplicationCrumbs();
if ($conpherence->getTitle()) {
$title = $conpherence->getTitle();
} else {
$title = pht('Conpherence');
}
$crumbs->addCrumb(
id(new PhabricatorCrumbView())
->setName($title)
->setHref($this->getApplicationURI('update/'.$conpherence->getID().'/'))
->setWorkflow(true));
- return $crumbs;
+ return hsprintf(
+ '%s',
+ array(
+ phutil_tag(
+ 'div',
+ array(
+ 'class' => 'header-loading-mask'
+ ),
+ ''),
+ $crumbs));
}
protected function renderConpherenceTransactions(
ConpherenceThread $conpherence) {
$user = $this->getRequest()->getUser();
$transactions = $conpherence->getTransactions();
$oldest_transaction_id = 0;
$too_many = ConpherenceThreadQuery::TRANSACTION_LIMIT + 1;
if (count($transactions) == $too_many) {
$last_transaction = end($transactions);
unset($transactions[$last_transaction->getID()]);
$oldest_transaction = end($transactions);
$oldest_transaction_id = $oldest_transaction->getID();
}
$transactions = array_reverse($transactions);
$handles = $conpherence->getHandles();
$rendered_transactions = array();
$engine = id(new PhabricatorMarkupEngine())
->setViewer($user);
foreach ($transactions as $key => $transaction) {
if ($transaction->shouldHide()) {
unset($transactions[$key]);
continue;
}
if ($transaction->getComment()) {
$engine->addObject(
$transaction->getComment(),
PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
}
}
$engine->process();
foreach ($transactions as $transaction) {
$rendered_transactions[] = id(new ConpherenceTransactionView())
->setUser($user)
->setConpherenceTransaction($transaction)
->setHandles($handles)
->setMarkupEngine($engine)
->render();
}
$latest_transaction_id = $transaction->getID();
return array(
'transactions' => $rendered_transactions,
'latest_transaction_id' => $latest_transaction_id,
'oldest_transaction_id' => $oldest_transaction_id
);
}
}
diff --git a/src/applications/conpherence/controller/ConpherenceListController.php b/src/applications/conpherence/controller/ConpherenceListController.php
index 9ff71e83f9..1116ac332d 100644
--- a/src/applications/conpherence/controller/ConpherenceListController.php
+++ b/src/applications/conpherence/controller/ConpherenceListController.php
@@ -1,251 +1,257 @@
<?php
/**
* @group conpherence
*/
final class ConpherenceListController
extends ConpherenceController {
const SELECTED_MODE = 'selected';
const UNSELECTED_MODE = 'unselected';
const PAGING_MODE = 'paging';
private $conpherenceID;
public function setConpherenceID($conpherence_id) {
$this->conpherenceID = $conpherence_id;
return $this;
}
public function getConpherenceID() {
return $this->conpherenceID;
}
public function willProcessRequest(array $data) {
$this->setConpherenceID(idx($data, 'id'));
}
/**
* Three main modes of operation...
*
* 1 - /conpherence/ - UNSELECTED_MODE
* 2 - /conpherence/<id>/ - SELECTED_MODE
* 3 - /conpherence/?direction='up'&... - PAGING_MODE
*
* UNSELECTED_MODE is not an Ajax request while the other two are Ajax
* requests.
*/
private function determineMode() {
$request = $this->getRequest();
$mode = self::UNSELECTED_MODE;
if ($request->isAjax()) {
if ($request->getStr('direction')) {
$mode = self::PAGING_MODE;
} else {
$mode = self::SELECTED_MODE;
}
}
return $mode;
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$title = pht('Conpherence');
$conpherence = null;
$scroll_up_participant = $this->getEmptyParticipant();
$scroll_down_participant = $this->getEmptyParticipant();
$too_many = ConpherenceParticipantQuery::LIMIT + 1;
$all_participation = array();
$mode = $this->determineMode();
switch ($mode) {
case self::SELECTED_MODE:
$conpherence_id = $this->getConpherenceID();
$conpherence = id(new ConpherenceThreadQuery())
->setViewer($user)
->withIDs(array($conpherence_id))
->executeOne();
if (!$conpherence) {
return new Aphront404Response();
}
if ($conpherence->getTitle()) {
$title = $conpherence->getTitle();
}
$cursor = $conpherence->getParticipant($user->getPHID());
$data = $this->loadParticipationWithMidCursor($cursor);
$all_participation = $data['participation'];
$scroll_up_participant = $data['scroll_up_participant'];
$scroll_down_participant = $data['scroll_down_participant'];
break;
case self::PAGING_MODE:
$direction = $request->getStr('direction');
$id = $request->getInt('participant_id');
$date_touched = $request->getInt('date_touched');
$conpherence_phid = $request->getStr('conpherence_phid');
if ($direction == 'up') {
$order = ConpherenceParticipantQuery::ORDER_NEWER;
} else {
$order = ConpherenceParticipantQuery::ORDER_OLDER;
}
$scroller_participant = id(new ConpherenceParticipant())
->makeEphemeral()
->setID($id)
->setDateTouched($date_touched)
->setConpherencePHID($conpherence_phid);
$participation = id(new ConpherenceParticipantQuery())
->withParticipantPHIDs(array($user->getPHID()))
->withParticipantCursor($scroller_participant)
->setOrder($order)
->setLimit($too_many)
->execute();
if (count($participation) == $too_many) {
if ($direction == 'up') {
$node = $scroll_up_participant = reset($participation);
} else {
$node = $scroll_down_participant = end($participation);
}
unset($participation[$node->getConpherencePHID()]);
}
$all_participation = $participation;
break;
case self::UNSELECTED_MODE:
default:
$too_many = ConpherenceParticipantQuery::LIMIT + 1;
$all_participation = id(new ConpherenceParticipantQuery())
->withParticipantPHIDs(array($user->getPHID()))
->setLimit($too_many)
->execute();
if (count($all_participation) == $too_many) {
$node = end($participation);
unset($all_participation[$node->getConpherencePHID()]);
$scroll_down_participant = $node;
}
break;
}
$threads = $this->loadConpherenceThreadData(
$all_participation);
$thread_view = id(new ConpherenceThreadListView())
->setUser($user)
->setBaseURI($this->getApplicationURI())
->setThreads($threads)
->setScrollUpParticipant($scroll_up_participant)
->setScrollDownParticipant($scroll_down_participant);
switch ($mode) {
case self::SELECTED_MODE:
$response = id(new AphrontAjaxResponse())->setContent($thread_view);
break;
case self::PAGING_MODE:
$thread_html = $thread_view->renderThreadsHTML();
$phids = array_keys($participation);
$content = array(
'html' => $thread_html,
'phids' => $phids);
$response = id(new AphrontAjaxResponse())->setContent($content);
break;
case self::UNSELECTED_MODE:
default:
$layout = id(new ConpherenceLayoutView())
->setBaseURI($this->getApplicationURI())
->setThreadView($thread_view)
->setRole('list');
if ($conpherence) {
+ $layout->setHeader($this->buildHeaderPaneContent($conpherence));
$layout->setThread($conpherence);
+ } else {
+ $layout->setHeader(
+ $this->buildHeaderPaneContent(
+ id(new ConpherenceThread())
+ ->makeEphemeral()));
}
$response = $this->buildApplicationPage(
$layout,
array(
'title' => $title,
'device' => true,
));
break;
}
return $response;
}
/**
* Handles the curious case when we are visiting a conpherence directly
* by issuing two separate queries. Otherwise, additional conpherences
* are fetched asynchronously. Note these can be earlier or later
* (up or down), depending on what conpherence was selected on initial
* load.
*/
private function loadParticipationWithMidCursor(
ConpherenceParticipant $cursor) {
$user = $this->getRequest()->getUser();
$scroll_up_participant = $this->getEmptyParticipant();
$scroll_down_participant = $this->getEmptyParticipant();
// Note this is a bit dodgy since there may be less than this
// amount in either the up or down direction, thus having us fail
// to fetch LIMIT in total. Whatevs for now and re-visit if we're
// fine-tuning this loading process.
$too_many = ceil(ConpherenceParticipantQuery::LIMIT / 2) + 1;
$participant_query = id(new ConpherenceParticipantQuery())
->withParticipantPHIDs(array($user->getPHID()))
->setLimit($too_many);
$current_selection_epoch = $cursor->getDateTouched();
$set_one = $participant_query
->withParticipantCursor($cursor)
->setOrder(ConpherenceParticipantQuery::ORDER_NEWER)
->execute();
if (count($set_one) == $too_many) {
$node = reset($set_one);
unset($set_one[$node->getConpherencePHID()]);
$scroll_up_participant = $node;
}
$set_two = $participant_query
->withParticipantCursor($cursor)
->setOrder(ConpherenceParticipantQuery::ORDER_OLDER)
->execute();
if (count($set_two) == $too_many) {
$node = end($set_two);
unset($set_two[$node->getConpherencePHID()]);
$scroll_down_participant = $node;
}
$participation = array_merge(
$set_one,
$set_two);
return array(
'scroll_up_participant' => $scroll_up_participant,
'scroll_down_participant' => $scroll_down_participant,
'participation' => $participation);
}
private function loadConpherenceThreadData($participation) {
$user = $this->getRequest()->getUser();
$conpherence_phids = array_keys($participation);
$conpherences = array();
if ($conpherence_phids) {
$conpherences = id(new ConpherenceThreadQuery())
->setViewer($user)
->withPHIDs($conpherence_phids)
->needParticipantCache(true)
->execute();
// this will re-sort by participation data
$conpherences = array_select_keys($conpherences, $conpherence_phids);
}
return $conpherences;
}
private function getEmptyParticipant() {
return id(new ConpherenceParticipant())
->makeEphemeral();
}
}
diff --git a/src/applications/conpherence/controller/ConpherenceViewController.php b/src/applications/conpherence/controller/ConpherenceViewController.php
index 347445d4bc..3d5d9b2f50 100644
--- a/src/applications/conpherence/controller/ConpherenceViewController.php
+++ b/src/applications/conpherence/controller/ConpherenceViewController.php
@@ -1,179 +1,170 @@
<?php
/**
* @group conpherence
*/
final class ConpherenceViewController extends
ConpherenceController {
private $conpherenceID;
private $conpherence;
public function setConpherence(ConpherenceThread $conpherence) {
$this->conpherence = $conpherence;
return $this;
}
public function getConpherence() {
return $this->conpherence;
}
public function setConpherenceID($conpherence_id) {
$this->conpherenceID = $conpherence_id;
return $this;
}
public function getConpherenceID() {
return $this->conpherenceID;
}
public function willProcessRequest(array $data) {
$this->setConpherenceID(idx($data, 'id'));
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$conpherence_id = $this->getConpherenceID();
if (!$conpherence_id) {
return new Aphront404Response();
}
$query = id(new ConpherenceThreadQuery())
->setViewer($user)
->withIDs(array($conpherence_id))
->needParticipantCache(true)
->needTransactions(true)
->setTransactionLimit(ConpherenceThreadQuery::TRANSACTION_LIMIT);
$before_transaction_id = $request->getInt('oldest_transaction_id');
if ($before_transaction_id) {
$query
->setBeforeTransactionID($before_transaction_id);
}
$conpherence = $query->executeOne();
if (!$conpherence) {
return new Aphront404Response();
}
$this->setConpherence($conpherence);
$participant = $conpherence->getParticipant($user->getPHID());
$transactions = $conpherence->getTransactions();
$latest_transaction = end($transactions);
$write_guard = AphrontWriteGuard::beginScopedUnguardedWrites();
$participant->markUpToDate($conpherence, $latest_transaction);
unset($write_guard);
$data = $this->renderConpherenceTransactions($conpherence);
$messages = $this->renderMessagePaneContent(
$data['transactions'],
$data['oldest_transaction_id']);
if ($before_transaction_id) {
$header = null;
$form = null;
$content = array('messages' => $messages);
} else {
- $header = $this->renderHeaderPaneContent();
+ $header = $this->buildHeaderPaneContent($conpherence);
$form = $this->renderFormContent($data['latest_transaction_id']);
$content = array(
'header' => $header,
'messages' => $messages,
'form' => $form
);
}
if ($request->isAjax()) {
return id(new AphrontAjaxResponse())->setContent($content);
}
$layout = id(new ConpherenceLayoutView())
->setBaseURI($this->getApplicationURI())
->setThread($conpherence)
->setHeader($header)
->setMessages($messages)
->setReplyForm($form)
->setRole('thread');
$title = $conpherence->getTitle();
if (!$title) {
$title = pht('Conpherence');
}
return $this->buildApplicationPage(
$layout,
array(
'title' => $title,
'device' => true,
));
}
- private function renderHeaderPaneContent() {
- $conpherence = $this->getConpherence();
- $header = $this->buildHeaderPaneContent($conpherence);
- return hsprintf('%s', $header);
- }
-
-
private function renderMessagePaneContent(
array $transactions,
$oldest_transaction_id) {
- require_celerity_resource('conpherence-message-pane-css');
-
$scrollbutton = '';
if ($oldest_transaction_id) {
$scrollbutton = javelin_tag(
'a',
array(
'href' => '#',
'mustcapture' => true,
'sigil' => 'show-older-messages',
'class' => 'conpherence-show-older-messages',
'meta' => array(
'oldest_transaction_id' => $oldest_transaction_id
)
),
pht('Show Older Messages'));
}
return hsprintf('%s%s', $scrollbutton, $transactions);
}
private function renderFormContent($latest_transaction_id) {
$conpherence = $this->getConpherence();
$user = $this->getRequest()->getUser();
$update_uri = $this->getApplicationURI('update/'.$conpherence->getID().'/');
Javelin::initBehavior('conpherence-pontificate');
$form =
id(new AphrontFormView())
->setAction($update_uri)
->setFlexible(true)
->addSigil('conpherence-pontificate')
->setWorkflow(true)
->setUser($user)
->addHiddenInput('action', 'message')
->appendChild(
id(new PhabricatorRemarkupControl())
->setUser($user)
->setName('text'))
->appendChild(
id(new AphrontFormSubmitControl())
->setValue(pht('Pontificate')))
->appendChild(
javelin_tag(
'input',
array(
'type' => 'hidden',
'name' => 'latest_transaction_id',
'value' => $latest_transaction_id,
'sigil' => 'latest-transaction-id',
'meta' => array(
'id' => $latest_transaction_id
)
),
''))
->render();
return $form;
}
}
diff --git a/src/applications/conpherence/controller/ConpherenceWidgetController.php b/src/applications/conpherence/controller/ConpherenceWidgetController.php
index 7415cb8407..764088bac1 100644
--- a/src/applications/conpherence/controller/ConpherenceWidgetController.php
+++ b/src/applications/conpherence/controller/ConpherenceWidgetController.php
@@ -1,401 +1,400 @@
<?php
/**
* @group conpherence
*/
final class ConpherenceWidgetController extends
ConpherenceController {
private $conpherenceID;
private $conpherence;
private $userPreferences;
public function setUserPreferences(PhabricatorUserPreferences $pref) {
$this->userPreferences = $pref;
return $this;
}
public function getUserPreferences() {
return $this->userPreferences;
}
public function setConpherence(ConpherenceThread $conpherence) {
$this->conpherence = $conpherence;
return $this;
}
public function getConpherence() {
return $this->conpherence;
}
public function setConpherenceID($conpherence_id) {
$this->conpherenceID = $conpherence_id;
return $this;
}
public function getConpherenceID() {
return $this->conpherenceID;
}
public function willProcessRequest(array $data) {
$this->setConpherenceID(idx($data, 'id'));
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$conpherence_id = $this->getConpherenceID();
if (!$conpherence_id) {
return new Aphront404Response();
}
$conpherence = id(new ConpherenceThreadQuery())
->setViewer($user)
->withIDs(array($conpherence_id))
->needWidgetData(true)
->executeOne();
$this->setConpherence($conpherence);
$this->setUserPreferences($user->loadPreferences());
$widgets = $this->renderWidgetPaneContent();
$content = $widgets;
return id(new AphrontAjaxResponse())->setContent($content);
}
private function renderWidgetPaneContent() {
- require_celerity_resource('conpherence-widget-pane-css');
require_celerity_resource('sprite-conpherence-css');
$conpherence = $this->getConpherence();
$widgets = array();
$widgets[] = phutil_tag(
'div',
array(
'class' => 'widgets-header',
),
id(new PhabricatorActionHeaderView())
->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREY)
- ->setHeaderTitle('')
+ ->setHeaderTitle(pht('Participants'))
->setHeaderHref('#')
->setDropdown(true)
->addHeaderSigil('widgets-selector'));
$user = $this->getRequest()->getUser();
// now the widget bodies
$widgets[] = javelin_tag(
'div',
array(
'class' => 'widgets-body',
'id' => 'widgets-people',
'sigil' => 'widgets-people',
),
id(new ConpherencePeopleWidgetView())
->setUser($user)
->setConpherence($conpherence)
->setUpdateURI($this->getWidgetURI()));
$widgets[] = javelin_tag(
'div',
array(
'class' => 'widgets-body',
'id' => 'widgets-files',
'sigil' => 'widgets-files',
'style' => 'display: none;'
),
id(new ConpherenceFileWidgetView())
->setUser($user)
->setConpherence($conpherence)
->setUpdateURI($this->getWidgetURI()));
$widgets[] = phutil_tag(
'div',
array(
'class' => 'widgets-body',
'id' => 'widgets-calendar',
'style' => 'display: none;'
),
$this->renderCalendarWidgetPaneContent());
$widgets[] = phutil_tag(
'div',
array(
'class' => 'widgets-body',
'id' => 'widgets-settings',
'style' => 'display: none'
),
$this->renderSettingsWidgetPaneContent());
// without this implosion we get "," between each element in our widgets
// array
return array('widgets' => phutil_implode_html('', $widgets));
}
private function renderSettingsWidgetPaneContent() {
$user = $this->getRequest()->getUser();
$conpherence = $this->getConpherence();
$participants = $conpherence->getParticipants();
$participant = $participants[$user->getPHID()];
$default = ConpherenceSettings::EMAIL_ALWAYS;
$preference = $this->getUserPreferences();
if ($preference) {
$default = $preference->getPreference(
PhabricatorUserPreferences::PREFERENCE_CONPH_NOTIFICATIONS,
ConpherenceSettings::EMAIL_ALWAYS);
}
$settings = $participant->getSettings();
$notifications = idx(
$settings,
'notifications',
$default);
$options = id(new AphrontFormRadioButtonControl())
->addButton(
ConpherenceSettings::EMAIL_ALWAYS,
ConpherenceSettings::getHumanString(
ConpherenceSettings::EMAIL_ALWAYS),
'')
->addButton(
ConpherenceSettings::NOTIFICATIONS_ONLY,
ConpherenceSettings::getHumanString(
ConpherenceSettings::NOTIFICATIONS_ONLY),
'')
->setName('notifications')
->setValue($notifications);
$layout = array(
$options,
phutil_tag(
'input',
array(
'type' => 'hidden',
'name' => 'action',
'value' => 'notifications'
)),
phutil_tag(
'button',
array(
'type' => 'submit',
'class' => 'notifications-update',
),
pht('Save'))
);
return phabricator_form(
$user,
array(
'method' => 'POST',
'action' => $this->getWidgetURI(),
'sigil' => 'notifications-update',
),
$layout);
}
private function renderCalendarWidgetPaneContent() {
$user = $this->getRequest()->getUser();
$conpherence = $this->getConpherence();
$participants = $conpherence->getParticipants();
$widget_data = $conpherence->getWidgetData();
$statuses = $widget_data['statuses'];
$handles = $conpherence->getHandles();
$content = array();
$layout = id(new AphrontMultiColumnView())
->setFluidLayout(true);
$timestamps = $this->getCalendarWidgetWeekTimestamps();
$today = $timestamps['today'];
$weekstamps = $timestamps['weekstamps'];
$one_day = 24 * 60 * 60;
foreach ($weekstamps as $time => $day) {
// build a header for the new day
if ($day->format('w') == $today->format('w')) {
$active_class = 'today';
} else {
$active_class = '';
}
$content[] = phutil_tag(
'div',
array(
'class' => 'day-header '.$active_class
),
array(
phutil_tag(
'div',
array(
'class' => 'day-name'
),
$day->format('l')),
phutil_tag(
'div',
array(
'class' => 'day-date'
),
$day->format('m/d/y'))
));
$week_day_number = $day->format('w');
$day->setTime(0, 0, 0);
$epoch_start = $day->format('U');
$next_day = clone $day;
$next_day->modify('+1 day');
$epoch_end = $next_day->format('U');
$first_status_of_the_day = true;
$statuses_of_the_day = array();
// keep looking through statuses where we last left off
foreach ($statuses as $status) {
if ($status->getDateFrom() >= $epoch_end) {
// This list is sorted, so we can stop looking.
break;
}
if ($status->getDateFrom() < $epoch_end &&
$status->getDateTo() > $epoch_start) {
if (!$first_status_of_the_day) {
$content[] = phutil_tag(
'div',
array(
'class' => 'divider'
),
'');
}
$statuses_of_the_day[$status->getUserPHID()] = $status;
$timespan = $status->getDateTo() - $status->getDateFrom();
if ($timespan > $one_day) {
$time_str = 'm/d';
} else {
$time_str = 'h:i A';
}
$epoch_range = phabricator_format_local_time(
$status->getDateFrom(),
$user,
$time_str) . ' - ' . phabricator_format_local_time(
$status->getDateTo(),
$user,
$time_str);
$secondary_info = pht('%s, %s',
$handles[$status->getUserPHID()]->getName(), $epoch_range);
$content[] = phutil_tag(
'div',
array(
'class' => 'pm user-status '.$status->getTextStatus(),
),
array(
phutil_tag(
'div',
array(
'class' => 'icon',
),
''),
phutil_tag(
'div',
array(
'class' => 'description'
),
array(
$status->getTerseSummary($user),
phutil_tag(
'div',
array(
'class' => 'participant'
),
$secondary_info)))
));
$first_status_of_the_day = false;
} else {
$content[] = phutil_tag(
'div',
array('class' => 'no-events pmt pml'),
pht('No Events Scheduled.'));
}
}
// we didn't get a status on this day so add a spacer
if ($first_status_of_the_day) {
$content[] = phutil_tag(
'div',
array(
'class' => 'spacer'
),
'');
}
if ($week_day_number > 0 && $week_day_number < 6) {
if ($week_day_number == $today->format('w')) {
$active_class = '-active';
} else {
$active_class = '';
}
$inner_layout = array();
foreach ($participants as $phid => $participant) {
$status = idx($statuses_of_the_day, $phid, false);
if ($status) {
$inner_layout[] = phutil_tag(
'div',
array(
'class' => $status->getTextStatus()
),
'');
} else {
$inner_layout[] = phutil_tag(
'div',
array(
'class' => 'present'
),
'');
}
}
$layout->addColumn(
phutil_tag(
'div',
array(
'class' => 'day-column'.$active_class
),
array(
phutil_tag(
'div',
array(
'class' => 'day-name'
),
$day->format('D')),
phutil_tag(
'div',
array(
'class' => 'day-number',
),
$day->format('j')),
$inner_layout
)));
}
}
return
array(
$layout,
$content
);
}
private function getCalendarWidgetWeekTimestamps() {
$user = $this->getRequest()->getUser();
$timezone = new DateTimeZone($user->getTimezoneIdentifier());
$today = id(new DateTime('now', $timezone));
$monday = clone $today;
$monday
->modify('+1 day')
->modify('last monday');
$timestamps = array();
for ($day = 0; $day < 7; $day++) {
$timestamp = clone $monday;
$timestamps[] = $timestamp->modify(sprintf('+%d days', $day));
}
return array(
'today' => $today,
'weekstamps' => $timestamps
);
}
private function getWidgetURI() {
$conpherence = $this->getConpherence();
return $this->getApplicationURI('update/'.$conpherence->getID().'/');
}
}
diff --git a/src/applications/conpherence/view/ConpherenceLayoutView.php b/src/applications/conpherence/view/ConpherenceLayoutView.php
index d6d31bf820..7509295402 100644
--- a/src/applications/conpherence/view/ConpherenceLayoutView.php
+++ b/src/applications/conpherence/view/ConpherenceLayoutView.php
@@ -1,190 +1,241 @@
<?php
final class ConpherenceLayoutView extends AphrontView {
private $thread;
private $baseURI;
private $threadView;
private $role;
private $header;
private $messages;
private $replyForm;
public function setMessages($messages) {
$this->messages = $messages;
return $this;
}
public function setReplyForm($reply_form) {
$this->replyForm = $reply_form;
return $this;
}
public function setHeader($header) {
$this->header = $header;
return $this;
}
public function setRole($role) {
$this->role = $role;
return $this;
}
public function getThreadView() {
return $this->threadView;
}
public function setBaseURI($base_uri) {
$this->baseURI = $base_uri;
return $this;
}
public function setThread(ConpherenceThread $thread) {
$this->thread = $thread;
return $this;
}
public function setThreadView(ConpherenceThreadListView $thead_view) {
$this->threadView = $thead_view;
return $this;
}
public function render() {
require_celerity_resource('conpherence-menu-css');
+ require_celerity_resource('conpherence-message-pane-css');
+ require_celerity_resource('conpherence-widget-pane-css');
$layout_id = celerity_generate_unique_node_id();
+ $selected_id = null;
+ $selected_thread_id = null;
+ if ($this->thread) {
+ $selected_id = $this->thread->getPHID() . '-nav-item';
+ $selected_thread_id = $this->thread->getID();
+ }
Javelin::initBehavior('conpherence-menu',
array(
- 'base_uri' => $this->baseURI,
+ 'baseURI' => $this->baseURI,
'layoutID' => $layout_id,
- 'selectedID' => ($this->thread ? $this->thread->getID() : null),
+ 'selectedID' => $selected_id,
+ 'selectedThreadID' => $selected_thread_id,
'role' => $this->role,
'hasThreadList' => (bool)$this->threadView,
'hasThread' => (bool)$this->messages,
'hasWidgets' => false,
));
Javelin::initBehavior(
'conpherence-widget-pane',
array(
'selectChar' => "\xE2\x96\xBC",
'widgetRegistry' => array(
'conpherence-message-pane' => array(
'name' => pht('Thread'),
'deviceOnly' => true,
),
'widgets-people' => array(
'name' => pht('Participants'),
'deviceOnly' => false,
),
'widgets-files' => array(
'name' => pht('Files'),
'deviceOnly' => false,
),
'widgets-calendar' => array(
'name' => pht('Calendar'),
'deviceOnly' => false,
),
'widgets-settings' => array(
'name' => pht('Settings'),
'deviceOnly' => false,
),
)));
+
+ $icon_48 = celerity_get_resource_uri('/rsrc/image/loading/loading_48.gif');
+ $loading_style = 'background-image: url('.$icon_48.');';
return javelin_tag(
'div',
array(
'id' => $layout_id,
'sigil' => 'conpherence-layout',
'class' => 'conpherence-layout conpherence-role-'.$this->role,
),
array(
javelin_tag(
'div',
array(
'class' => 'phabricator-nav-column-background',
'sigil' => 'phabricator-nav-column-background',
),
''),
javelin_tag(
'div',
array(
'id' => 'conpherence-menu-pane',
'class' => 'conpherence-menu-pane phabricator-side-menu',
'sigil' => 'conpherence-menu-pane',
),
- nonempty($this->threadView, '')),
+ nonempty(
+ $this->threadView,
+ phutil_tag(
+ 'div',
+ array(
+ 'class' => 'menu-loading-icon',
+ 'style' => $loading_style),
+ ''))),
javelin_tag(
'div',
array(
'class' => 'conpherence-content-pane',
),
array(
javelin_tag(
'div',
array(
'class' => 'conpherence-no-threads',
'sigil' => 'conpherence-no-threads',
'style' => 'display: none;',
),
array(
phutil_tag(
'div',
array(
'class' => 'text'
),
pht('You do not have any messages yet.')),
javelin_tag(
'a',
array(
'href' => '/conpherence/new/',
'class' => 'button',
'sigil' => 'workflow',
),
pht('Send a Message'))
)),
javelin_tag(
'div',
array(
'class' => 'conpherence-header-pane',
'id' => 'conpherence-header-pane',
'sigil' => 'conpherence-header-pane',
),
nonempty($this->header, '')),
javelin_tag(
'div',
array(
'class' => 'conpherence-widget-pane',
'id' => 'conpherence-widget-pane',
'sigil' => 'conpherence-widget-pane',
),
- ''),
+ array(
+ phutil_tag(
+ 'div',
+ array(
+ 'class' => 'widgets-loading-mask'
+ ),
+ ''),
+ phutil_tag(
+ 'div',
+ array(
+ 'class' => 'widgets-loading-icon',
+ 'style' => $loading_style,
+ ),
+ ''),
+ javelin_tag(
+ 'div',
+ array(
+ 'sigil' => 'conpherence-widgets-holder'
+ ),
+ ''))),
javelin_tag(
'div',
array(
'class' => 'conpherence-message-pane',
- 'id' => 'conpherence-message-pane'
+ 'id' => 'conpherence-message-pane',
+ 'sigil' => 'conpherence-message-pane'
),
array(
javelin_tag(
'div',
array(
'class' => 'conpherence-messages',
'id' => 'conpherence-messages',
'sigil' => 'conpherence-messages',
),
nonempty($this->messages, '')),
+ phutil_tag(
+ 'div',
+ array(
+ 'class' => 'messages-loading-mask',
+ ),
+ ''),
+ phutil_tag(
+ 'div',
+ array(
+ 'class' => 'messages-loading-icon',
+ 'style' => $loading_style,
+ )),
javelin_tag(
'div',
array(
'id' => 'conpherence-form',
'sigil' => 'conpherence-form'
),
nonempty($this->replyForm, ''))
)),
)),
));
}
}
diff --git a/src/applications/conpherence/view/ConpherenceThreadListView.php b/src/applications/conpherence/view/ConpherenceThreadListView.php
index abe66876d4..37bc55124a 100644
--- a/src/applications/conpherence/view/ConpherenceThreadListView.php
+++ b/src/applications/conpherence/view/ConpherenceThreadListView.php
@@ -1,166 +1,168 @@
<?php
final class ConpherenceThreadListView extends AphrontView {
private $baseURI;
private $threads;
private $scrollUpParticipant;
private $scrollDownParticipant;
public function setThreads(array $threads) {
assert_instances_of($threads, 'ConpherenceThread');
$this->threads = $threads;
return $this;
}
public function setScrollUpParticipant(
ConpherenceParticipant $participant) {
$this->scrollUpParticipant = $participant;
return $this;
}
public function setScrollDownParticipant(
ConpherenceParticipant $participant) {
$this->scrollDownParticipant = $participant;
return $this;
}
public function setBaseURI($base_uri) {
$this->baseURI = $base_uri;
return $this;
}
public function render() {
require_celerity_resource('conpherence-menu-css');
$menu = id(new PhabricatorMenuView())
->addClass('conpherence-menu')
->setID('conpherence-menu');
$this->addThreadsToMenu($menu, $this->threads);
return $menu;
}
public function renderSingleThread(ConpherenceThread $thread) {
return $this->renderThread($thread);
}
public function renderThreadsHTML() {
$thread_html = array();
if ($this->scrollUpParticipant->getID()) {
$thread_html[] = $this->getScrollMenuItem(
$this->scrollUpParticipant,
'up');
}
foreach ($this->threads as $thread) {
$thread_html[] = $this->renderSingleThread($thread);
}
if ($this->scrollDownParticipant->getID()) {
$thread_html[] = $this->getScrollMenuItem(
$this->scrollDownParticipant,
'down');
}
return phutil_implode_html('', $thread_html);
}
private function renderThreadItem(ConpherenceThread $thread) {
return id(new PhabricatorMenuItemView())
->setType(PhabricatorMenuItemView::TYPE_CUSTOM)
->setName($this->renderThread($thread));
}
private function renderThread(ConpherenceThread $thread) {
$user = $this->getUser();
$uri = $this->baseURI.$thread->getID().'/';
$data = $thread->getDisplayData($user, null);
$title = $data['title'];
$subtitle = $data['subtitle'];
$unread_count = $data['unread_count'];
$epoch = $data['epoch'];
$image = $data['image'];
+ $dom_id = $thread->getPHID().'-nav-item';
return id(new ConpherenceMenuItemView())
->setUser($user)
->setTitle($title)
->setSubtitle($subtitle)
->setHref($uri)
->setEpoch($epoch)
->setImageURI($image)
->setUnreadCount($unread_count)
->setID($thread->getPHID().'-nav-item')
->addSigil('conpherence-menu-click')
->setMetadata(
array(
'title' => $data['js_title'],
- 'id' => $thread->getID(),
+ 'id' => $dom_id,
+ 'threadID' => $thread->getID(),
));
}
private function addThreadsToMenu(
PhabricatorMenuView $menu,
array $conpherences) {
if ($this->scrollUpParticipant->getID()) {
$item = $this->getScrollMenuItem($this->scrollUpParticipant, 'up');
$menu->addMenuItem($item);
}
foreach ($conpherences as $conpherence) {
$item = $this->renderThreadItem($conpherence);
$menu->addMenuItem($item);
}
if (empty($conpherences)) {
$menu->addMenuItem($this->getNoConpherencesMenuItem());
}
if ($this->scrollDownParticipant->getID()) {
$item = $this->getScrollMenuItem($this->scrollDownParticipant, 'down');
$menu->addMenuItem($item);
}
return $menu;
}
public function getScrollMenuItem(
ConpherenceParticipant $participant,
$direction) {
if ($direction == 'up') {
$name = pht('Load Newer Threads');
} else {
$name = pht('Load Older Threads');
}
$item = id(new PhabricatorMenuItemView())
->addSigil('conpherence-menu-scroller')
->setName($name)
->setHref($this->baseURI)
->setType(PhabricatorMenuItemView::TYPE_BUTTON)
->setMetadata(array(
'participant_id' => $participant->getID(),
'conpherence_phid' => $participant->getConpherencePHID(),
'date_touched' => $participant->getDateTouched(),
'direction' => $direction));
return $item;
}
private function getNoConpherencesMenuItem() {
$message = phutil_tag(
'div',
array(
'class' => 'no-conpherences-menu-item'
),
pht('No conpherences.'));
return id(new PhabricatorMenuItemView())
->setType(PhabricatorMenuItemView::TYPE_CUSTOM)
->setName($message);
}
}
diff --git a/webroot/rsrc/css/application/conpherence/menu.css b/webroot/rsrc/css/application/conpherence/menu.css
index 4501e56727..96841a14bb 100644
--- a/webroot/rsrc/css/application/conpherence/menu.css
+++ b/webroot/rsrc/css/application/conpherence/menu.css
@@ -1,161 +1,178 @@
/**
* @provides conpherence-menu-css
*/
.conpherence-layout {
position: fixed;
bottom: 0;
left: 0;
right: 0;
top: 44px;
}
.conpherence-layout .conpherence-no-threads {
height 80%;
width: 80%;
padding: 10%;
text-align: center;
}
.conpherence-layout .conpherence-no-threads .text {
margin: 0px 0px 16px 0px;
}
-.conpherence-menu-pane {
+.conpherence-menu-pane .menu-loading-icon {
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+
+.conpherence-menu-pane,
+.loading .menu-loading-icon {
width: 100%;
position: absolute;
overflow-x: hidden;
overflow-y: auto;
top: 0;
bottom: 0;
}
.device-desktop .conpherence-layout .conpherence-menu-pane,
-.device-desktop .conpherence-layout .phabricator-nav-column-background {
+.device-desktop .conpherence-layout .phabricator-nav-column-background,
+.device-desktop .loading .menu-loading-icon {
width: 280px;
}
.device .conpherence-menu-pane {
top: 41px;
}
.device .conpherence-role-list .conpherence-menu-pane {
top: 0px;
}
.device-phone .conpherence-menu-pane {
-webkit-overflow-scrolling: touch;
}
.conpherence-layout .phabricator-nav-column-background {
display: block;
width: 100%;
}
.device .phabricator-nav-column-background {
top: 44px;
}
.device .conpherence-role-thread .conpherence-menu-pane,
.device .conpherence-role-thread .phabricator-nav-column-background {
display: none;
}
.device-desktop .conpherence-content-pane {
margin-left: 280px;
}
.conpherence-content-pane {
+ display: none;
margin-left: 0px;
position: relative;
}
+.device-desktop .conpherence-content-pane,
+.device .conpherence-role-thread .conpherence-content-pane {
+ display: block;
+}
+
.conpherence-menu .conpherence-menu-item-view {
display: block;
height: 55px;
width: 100%;
overflow: hidden;
position: relative;
text-decoration: none;
border-top: solid 1px #3B3D3E;
border-bottom: solid 1px #1C1F21;
border-right: 0;
border-left: 2px solid transparent;
}
.conpherence-menu .conpherence-selected {
background: rgba(0, 0, 0, .6);
border-left: 2px solid #66CCFF;
}
+.conpherence-menu .loading {
+ font-style: italic;
+}
+
.device-desktop .conpherence-menu .conpherence-menu-item-view:hover {
background-image: url('/rsrc/image/texture/dark-menu-hover.png');
}
.conpherence-menu .conpherence-menu-item-view .conpherence-menu-item-image {
top: 6px;
left: 6px;
display: block;
position: absolute;
width: 35px;
height: 35px;
background-size: 35px;
border: 4px solid rgb(29, 32, 34);
border-radius: 3px;
}
.conpherence-menu .conpherence-menu-item-view .conpherence-menu-item-title {
display: block;
margin-top: 12px;
margin-left: 58px;
text-align: left;
font-weight: bold;
font-size: 13px;
color: #ffffff;
text-shadow: 0px 1px 1px #000000;
overflow: hidden;
width: 140px;
text-overflow: ellipsis;
}
.conpherence-menu .conpherence-menu-item-view .conpherence-menu-item-subtitle {
display: block;
color: #a1a5a9;
font-size: 11px;
margin-top: 2px;
margin-left: 58px;
font-style: italic;
}
.conpherence-menu .conpherence-menu-item-view
.conpherence-menu-item-unread-count {
position: absolute;
left: 35px;
top: 3px;
background: #f00;
border-radius: 10px;
color: white;
font-weight: bold;
padding: 1px 6px 2px;
border: 1px solid #a00;
font-size: 12px;
}
.conpherence-menu .hide-unread-count .conpherence-menu-item-unread-count,
.conpherence-menu .conpherence-selected .conpherence-menu-item-unread-count {
display: none;
}
.conpherence-menu .conpherence-menu-item-view .conpherence-menu-item-date {
position: absolute;
top: 15px;
right: 16px;
color: #a1a5a9;
font-size: 11px;
}
.no-conpherences-menu-item {
color: #a1a5a9;
border-top: solid 1px #3B3D3E;
padding: 20px 0;
margin: 0px auto;
width: 280px;
text-align: center;
}
diff --git a/webroot/rsrc/css/application/conpherence/message-pane.css b/webroot/rsrc/css/application/conpherence/message-pane.css
index 821151c51e..ff39a8cb08 100644
--- a/webroot/rsrc/css/application/conpherence/message-pane.css
+++ b/webroot/rsrc/css/application/conpherence/message-pane.css
@@ -1,183 +1,215 @@
/**
* @provides conpherence-message-pane-css
*/
-.conpherence-message-pane {
+.conpherence-message-pane,
+.loading .messages-loading-mask,
+.loading .messages-loading-icon {
position: fixed;
left: 280px;
right: 241px;
top: 76px;
+ bottom: 0px;
min-width: 300px;
width: auto;
- height: 100%;
}
-.device .conpherence-message-pane {
+.device .conpherence-message-pane,
+.device .loading .messages-loading-mask,
+.device .loading .messages-loading-icon {
left: 0;
right: 0;
width: 100%;
}
-
.conpherence-show-older-messages {
display: block;
background: #e0e3ec;
margin: 10px;
text-align: center;
padding: 10px;
color: #18559D;
}
+.conpherence-show-older-messages-loading {
+ font-style: italic;
+}
+
.conpherence-message-pane .conpherence-messages {
position: fixed;
left: 280px;
right: 241px;
top: 76px;
bottom: 190px;
overflow-y: auto;
box-shadow: inset 1px 4px 5px rgba(0,0,0,0.1);
-webkit-overflow-scrolling: touch;
}
.device .conpherence-message-pane .conpherence-messages {
left: 0;
right: 0;
bottom: 3em;
width: 100%;
box-shadow: none;
}
+.conpherence-message-pane .messages-loading-mask {
+ opacity: .22;
+ background: #222;
+ display: none;
+}
+.conpherence-message-pane .messages-loading-icon {
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+
+.loading .messages-loading-mask,
+.loading .messages-loading-icon {
+ display: block;
+ z-index: 500;
+}
+
+.loading .header-loading-mask {
+ height: 31px;
+ position: absolute;
+ width: 100%;
+ z-index: 5;
+ background: #222;
+ opacity: .22;
+}
+
.conpherence-message-pane .phabricator-form-view {
border-width: 0;
background: none;
height: 190px;
padding: 0;
position: fixed;
bottom: 0;
left: 280px;
right: 241px;
}
.device .conpherence-message-pane .remarkup-assist-bar {
height: 0px;
}
.device .conpherence-message-pane .phabricator-form-view {
left: 0;
right: 0;
background-color: #d8dce2;
height: 3em;
width: 100%;
}
.conpherence-layout .conpherence-message-pane .phabricator-form-view
div.aphront-form-input {
margin: 0;
width: 100%;
}
.conpherence-message-pane .phabricator-transaction-view {
margin: 5px 15px;
background-size: 35px;
min-height: auto;
}
.device-phone .conpherence-message-pane .phabricator-transaction-view {
margin: 0 10px 0 0;
}
.conpherence-message-pane .phabricator-transaction-detail {
border-width: 0;
margin-left: 45px;
}
.device-phone .conpherence-message-pane .phabricator-transaction-detail {
min-height: auto;
}
.conpherence-message-pane .conpherence-edited {
color: #888;
margin: 0;
}
.device-phone .conpherence-message-pane .conpherence-edited {
color: #888;
margin: 0 10px;
}
.conpherence-message-pane .conpherence-edited .phabricator-transaction-content {
padding: 0 0 5px 45px;
font-style: italic;
}
.device-phone .conpherence-message-pane .conpherence-edited .phabricator-transaction-content {
padding: 0 0 5px 35px;
}
.conpherence-message-pane .phabricator-transaction-info,
.conpherence-message-pane .phabricator-content-source-view {
color: #b7b7b7;
line-height: 16px;
}
.conpherence-message-pane .phabricator-transaction-header,
.conpherence-message-pane .phabricator-transaction-info,
.conpherence-message-pane .phabricator-transaction-content {
background: none;
padding: 0;
}
.conpherence-message-pane .phabricator-transaction-content {
padding: 2px 0 8px 0;
}
.conpherence-message-pane .aphront-form-control {
padding: 0;
}
.conpherence-message-pane .aphront-form-control-submit {
margin-right: 8px;
}
.conpherence-message-pane .remarkup-assist-bar {
border-width: 1px 0 0;
border-color: #CCC;
border-bottom: transparent;
}
.conpherence-message-pane .remarkup-assist-textarea {
height: 124px;
padding: 6px;
border-width: 0 0 1px 0;
border-color: #e7e7e7;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
resize: none;
}
.device .conpherence-message-pane .remarkup-assist-textarea {
margin: 0.5em 0em 0em 2%;
padding: 6px 1%;
width: 98%;
height: 2em;
resize: none;
}
.conpherence-message-pane .remarkup-assist-textarea:focus {
outline: none;
}
.device .conpherence-message-pane .aphront-form-control-textarea {
float: left;
height: 2em;
}
.device-tablet .conpherence-message-pane .aphront-form-control-textarea {
width: 76%;
}
.device-phone .conpherence-message-pane .aphront-form-control-textarea {
width: 63%;
}
.device .conpherence-message-pane .aphront-form-control-submit button {
margin: 0.6em 0 0 2%;
}
diff --git a/webroot/rsrc/css/application/conpherence/widget-pane.css b/webroot/rsrc/css/application/conpherence/widget-pane.css
index 2862828a3b..4f755efab7 100644
--- a/webroot/rsrc/css/application/conpherence/widget-pane.css
+++ b/webroot/rsrc/css/application/conpherence/widget-pane.css
@@ -1,373 +1,397 @@
/**
* @provides conpherence-widget-pane-css
*/
-.conpherence-widget-pane {
+.conpherence-widget-pane,
+.loading .widgets-loading-mask,
+.loading .widgets-loading-icon {
position: fixed;
right: 0px;
top: 74px;
+ bottom: 0px;
width: 240px;
- height: 100%;
border-width: 0 0 0 1px;
border-color: #CCC;
border-style: solid;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
-.device .conpherence-widget-pane {
+.device .conpherence-widget-pane,
+.device .loading .widgets-loading-mask,
+.device .loading .widgets-loading-icon {
top: 44px;
width: 100%;
}
+.conpherence-widget-pane .widgets-loading-mask {
+ opacity: .22;
+ background: #222;
+ display: none;
+}
+.conpherence-widget-pane .widgets-loading-icon {
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+
+.loading .widgets-loading-mask,
+.loading .widgets-loading-icon {
+ display: block;
+ z-index: 500;
+}
+
.conpherence-widget-pane .aphront-form-input {
margin: 0;
width: 100%;
}
.conpherence-widget-pane .aphront-form-inset {
border: 0;
}
.conpherence-widget-pane .widgets-header {
background: #F5F5F5;
border-bottom: 1px solid #ccc;
}
.device .conpherence-widget-pane .widgets-header {
display: none;
}
.conpherence-widget-pane .widgets-header .caret {
float: none;
height: 0px;
width: 0px;
margin-right: 0px;
border-top-color: #000;
}
.device-desktop .conpherence-layout .device-widgets-selector {
display: none;
}
.dropdown-menu-frame {
width: 200px !important;
margin-top: 4px;
}
.conpherence-widget-pane .widgets-body {
position: fixed;
overflow-y: auto;
bottom: 0px;
width: 100%;
top: 74px;
}
#widgets-settings {
padding: 3px 6px;
}
.device-desktop .conpherence-widget-pane .widgets-body {
top: 106px;
width: 240px;
}
/* files widget */
.conpherence-widget-pane #widgets-files .no-files {
width: 200px;
padding: 20px;
text-align: center;
color: #555;
}
+.device .conpherence-widget-pane #widgets-files .no-files {
+ width: 60px;
+ margin: 0px auto 0px auto;
+}
.conpherence-widget-pane #widgets-files .file-entry {
padding: 10px 0;
margin: 0 5px 0 10px;
border-bottom: 1px solid #e7e7e7;
}
.conpherence-widget-pane #widgets-files .file-icon {
width: 32px;
height: 32px;
float: left;
}
.conpherence-widget-pane #widgets-files .file-title {
display: block;
position: relative;
top: -4px;
left: 10px;
overflow-x: hidden;
width: 165px;
font-weight: bold;
text-overflow: ellipsis;
}
.conpherence-widget-pane #widgets-files .file-uploaded-by {
color: #a1a5a9;
position: relative;
top: 0px;
left: 10px;
width: 170px;
font-size: 11px;
}
.device .conpherence-widget-pane #widgets-files .file-title,
.device .conpherence-widget-pane #widgets-files .file-uploaded-by {
width: 82%;
}
.device .conpherence-widget-pane #widgets-files .divider {
width: 80%;
margin: 8px 0px 0px 10%;
}
/* calendar widget */
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view {
margin: 2px 0px 0px 0px;
width: 240px;
}
.device .conpherence-widget-pane #widgets-calendar .aphront-multi-column-view {
width: 100%;
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column {
background: white;
border-right: 1px solid #bfbfbf;
text-align: center;
}
.device-phone .conpherence-widget-pane #widgets-calendar
.aphront-multi-column-fluid .aphront-multi-column-5-up
.aphront-multi-column-column-outer {
width: 20%;
margin-bottom: 0px;
float: left;
clear: none;
}
.conpherence-widget-pane .no-events {
color: #999;
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column-last {
border-right: 0;
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .day-column,
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .day-column-active {
color: #bfbfbf;
background-color: white;
font-weight: bold;
padding: 0px 0px 10px 0px;
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .day-column-active {
color: black;
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .present ,
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .sporadic ,
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .away {
height: 10px;
margin: 5px 0px 5px 0px;
width: 100%;
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .present {
background-color: white;
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .sporadic {
background-color: rgb(222, 226, 232);
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.aphront-multi-column-column .away {
background-color: rgb(102, 204, 255);
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.day-name {
padding: 5px 0px 0px 0px;
font-size: 12px;
}
.conpherence-widget-pane #widgets-calendar .aphront-multi-column-view
.day-number {
font-size: 16px;
padding: 0 0 5px 0;
}
.conpherence-widget-pane #widgets-calendar .day-header {
overflow: hidden;
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
border-top: 1px solid #e7e7e7;
border-bottom: 1px solid #d7d7d7;
padding: 5px 10px 5px 10px;
}
.conpherence-widget-pane #widgets-calendar .day-header.today {
background-image: linear-gradient(to bottom, #3b86c4, #2b628f);
background-image: -webkit-linear-gradient(top, #3b86c4, #2b628f);
border-top: none;
border-bottom: none;
}
.conpherence-widget-pane #widgets-calendar .day-header.today .day-name,
.conpherence-widget-pane #widgets-calendar .day-header.today .day-date {
color: #fff;
}
.conpherence-widget-pane #widgets-calendar .day-header .day-name {
float: left;
color: #555759;
font-weight: bold;
text-transform: uppercase;
font-size: 11px;
}
.conpherence-widget-pane #widgets-calendar .day-header .day-date {
float: right;
color: #555759;
font-size: 11px;
}
.conpherence-widget-pane #widgets-calendar .divider {
float: left;
clear: both;
width: 220px;
margin: 0px 0px 0px 10px;
border: 1px dashed #bfbfbf;
}
.conpherence-widget-pane #widgets-calendar .divider {
width: 96%;
margin: 0px 0px 0px 2%;
}
.conpherence-widget-pane #widgets-calendar .spacer {
float: left;
clear: both;
height: 10px;
width: 100%;
}
.conpherence-widget-pane #widgets-calendar .user-status .icon {
border-radius: 8px;
height: 14px;
width: 14px;
margin-top: 7px;
float: left;
}
.conpherence-widget-pane #widgets-calendar .sporadic .icon {
background-color: rgb(222, 226, 232);
}
.conpherence-widget-pane #widgets-calendar .away .icon {
background-color: rgb(102, 204, 255);
}
.conpherence-widget-pane #widgets-calendar .user-status .description {
width: 195px;
float: left;
text-overflow: ellipsis;
margin: 0 0 10px 10px;
}
.conpherence-widget-pane #widgets-calendar .user-status .participant {
font-size: 11px;
color: #888;
padding-top: 2px;
}
.device .conpherence-widget-pane #widgets-calendar .user-status .description,
.device .conpherence-widget-pane #widgets-calendar .user-status .participant {
/* we keep these short so no need to change the width */
}
.conpherence-widget-pane .widget-icon {
display: block;
height: 14px;
width: 14px;
}
.conpherence-widget-pane .phabricator-remarkup-embed-layout-link {
padding-bottom: 1px;
}
/* people widget */
.conpherence-widget-pane .people-widget-header .add-people-widget {
padding: 10px 0 5px 0;
overflow: hidden;
}
.conpherence-widget-pane .people-widget-header .add-people-widget
.aphront-form-control-tokenizer {
float: left;
width: 150px;
padding: 0px 0px 0px 10px
}
.device .conpherence-widget-pane .people-widget-header .add-people-widget
.aphront-form-control-tokenizer {
width: 70%;
}
.conpherence-widget-pane .people-widget-header .add-people-widget
.people-add-button {
float: right;
margin: 2px 8px 0px 0px;
padding: 3px 16px 4px 16px;
}
.conpherence-widget-pane .person-entry {
clear: both;
padding: 5px 0 0 10px;
}
.conpherence-widget-pane .person-entry a {
float: left;
font-weight: bold;
line-height: 20px;
}
.conpherence-widget-pane .person-entry a img {
height: 35px;
width: 35px;
}
.conpherence-widget-pane .person-entry .pic {
float: left;
clear: left;
margin: 0 8px 0 0;
width: 35px;
padding: 0;
}
.conpherence-widget-pane .person-entry .remove {
float: right;
clear: right;
margin: 0;
width: 20px;
height: 20px;
text-align: center;
font-size: 22px;
font-weight: bold;
padding: 8px 0 8px 0p
}
.conpherence-widget-pane .person-entry .remove:hover {
text-decoration: none;
}
.conpherence-widget-pane .person-entry .remove .icon {
color: #bfbfbf;
}
.conpherence-widget-pane .person-entry .remove:hover .icon {
color: #18559d;
}
/* settings widget */
.conpherence-widget-pane .title-update,
.conpherence-widget-pane .notifications-update {
margin: 3px 0px 0px 4px;
}
diff --git a/webroot/rsrc/js/application/conpherence/behavior-menu.js b/webroot/rsrc/js/application/conpherence/behavior-menu.js
index 3bbdc2b2bf..b24dd683cf 100644
--- a/webroot/rsrc/js/application/conpherence/behavior-menu.js
+++ b/webroot/rsrc/js/application/conpherence/behavior-menu.js
@@ -1,405 +1,510 @@
/**
* @provides javelin-behavior-conpherence-menu
* @requires javelin-behavior
* javelin-dom
* javelin-util
- * javelin-request
* javelin-stratcom
* javelin-workflow
* javelin-behavior-device
* javelin-history
* javelin-vector
*/
JX.behavior('conpherence-menu', function(config) {
- var thread = {
+ /**
+ * State for displayed thread.
+ */
+ var _thread = {
selected: null,
- node: null,
- visible: null
+ visible: null,
+ node: null
};
- function selectthreadid(id, updatePageData) {
- var threads = JX.DOM.scry(document.body, 'a', 'conpherence-menu-click');
- for (var ii = 0; ii < threads.length; ii++) {
- var data = JX.Stratcom.getData(threads[ii]);
- if (data.id == id) {
- selectthread(threads[ii], updatePageData);
- return;
- }
+ /**
+ * Current role of this behavior. The two possible roles are to show a 'list'
+ * of threads or a specific 'thread'. On devices, this behavior stays in the
+ * 'list' role indefinitely, treating clicks normally and the next page
+ * loads the behavior with role = 'thread'. On desktop, this behavior
+ * auto-loads a thread as part of the 'list' role. As the thread loads the
+ * role is changed to 'thread'.
+ */
+ var _currentRole = null;
+
+ /**
+ * When _oldDevice is null the code is executing for the first time.
+ */
+ var _oldDevice = null;
+
+ /**
+ * Initializes this behavior based on all the configuraton jonx and the
+ * result of JX.Device.getDevice();
+ */
+ function init() {
+ _currentRole = config.role;
+
+ if (_currentRole == 'thread') {
+ markThreadsLoading(true);
+ } else {
+ markThreadLoading(true);
}
+ markWidgetLoading(true);
+ onDeviceChange();
}
+ init();
- function selectthread(node, updatePageData) {
+ /**
+ * Selecting threads
+ */
+ JX.Stratcom.listen(
+ 'conpherence-selectthread',
+ null,
+ function (e) {
+ selectThreadByID(e.getData().id);
+ }
+ );
+
+ function selectThreadByID(id, update_page_data) {
+ var thread = JX.$(id);
+ selectThread(thread, update_page_data);
+ }
- if (thread.node) {
- JX.DOM.alterClass(thread.node, 'conpherence-selected', false);
+ function selectThread(node, update_page_data) {
+ if (_thread.node) {
+ JX.DOM.alterClass(_thread.node, 'conpherence-selected', false);
// keep the unread-count hidden still. big TODO once we ajax in updates
// to threads to make this work right and move threads between read /
// unread
}
JX.DOM.alterClass(node, 'conpherence-selected', true);
JX.DOM.alterClass(node, 'hide-unread-count', true);
- thread.node = node;
+ _thread.node = node;
var data = JX.Stratcom.getData(node);
- thread.selected = data.id;
+ _thread.selected = data.threadID;
- if (updatePageData) {
- updatepagedata(data);
+ if (update_page_data) {
+ updatePageData(data);
}
- redrawthread();
+ redrawThread();
}
- JX.Stratcom.listen(
- 'conpherence-selectthread',
- null,
- function (e) {
- var node = JX.$(e.getData().id);
- selectthread(node);
- }
- );
-
- function updatepagedata(data) {
- var uri_suffix = thread.selected + '/';
+ function updatePageData(data) {
+ var uri_suffix = _thread.selected + '/';
if (data.use_base_uri) {
uri_suffix = '';
}
- JX.History.replace(config.base_uri + uri_suffix);
+ JX.History.replace(config.baseURI + uri_suffix);
if (data.title) {
document.title = data.title;
- } else if (thread.node) {
- var threadData = JX.Stratcom.getData(thread.node);
+ } else if (_thread.node) {
+ var threadData = JX.Stratcom.getData(_thread.node);
document.title = threadData.title;
}
}
JX.Stratcom.listen(
'conpherence-update-page-data',
null,
function (e) {
- updatepagedata(e.getData());
+ updatePageData(e.getData());
}
);
- function redrawthread() {
- if (!thread.node) {
+ function redrawThread() {
+ if (!_thread.node) {
return;
}
- if (thread.visible == thread.selected) {
+ if (_thread.visible == _thread.selected) {
return;
}
- var data = JX.Stratcom.getData(thread.node);
+ var data = JX.Stratcom.getData(_thread.node);
- if (thread.visible !== null || !config.hasThread) {
- var uri = config.base_uri + data.id + '/';
+ if (_thread.visible !== null || !config.hasThread) {
+ markThreadLoading(true);
+ var uri = config.baseURI + data.threadID + '/';
new JX.Workflow(uri, {})
- .setHandler(onloadthreadresponse)
+ .setHandler(JX.bind(null, onLoadThreadResponse, data.threadID))
.start();
+ } else if (config.hasThread) {
+ _scrollMessageWindow();
} else {
- didredrawthread();
+ didRedrawThread();
}
- if (thread.visible !== null || !config.hasWidgets) {
- var widget_uri = config.base_uri + 'widget/' + data.id + '/';
+ if (_thread.visible !== null || !config.hasWidgets) {
+ markWidgetLoading(true);
+ var widget_uri = config.baseURI + 'widget/' + data.threadID + '/';
new JX.Workflow(widget_uri, {})
- .setHandler(onwidgetresponse)
+ .setHandler(JX.bind(null, onWidgetResponse, data.threadID))
.start();
} else {
- updatetoggledwidget();
+ JX.Stratcom.invoke(
+ 'conpherence-update-widgets',
+ null,
+ {
+ widget : getDefaultWidget(),
+ buildSelectors : false,
+ toggleWidget : true,
+ threadID : _thread.selected
+ });
}
- thread.visible = thread.selected;
+ _thread.visible = _thread.selected;
}
- function onwidgetresponse(response) {
+ function markThreadsLoading(loading) {
var root = JX.DOM.find(document, 'div', 'conpherence-layout');
- var widgetsRoot = JX.DOM.find(root, 'div', 'conpherence-widget-pane');
- JX.DOM.setContent(widgetsRoot, JX.$H(response.widgets));
- updatetoggledwidget();
+ var menu = JX.DOM.find(root, 'div', 'conpherence-menu-pane');
+ JX.DOM.alterClass(menu, 'loading', loading);
}
- function updatetoggledwidget(no_toggle) {
+ function markThreadLoading(loading) {
+ var root = JX.DOM.find(document, 'div', 'conpherence-layout');
+ var header_root = JX.DOM.find(root, 'div', 'conpherence-header-pane');
+ var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane');
+ var form_root = JX.DOM.find(root, 'div', 'conpherence-form');
+
+ JX.DOM.alterClass(header_root, 'loading', loading);
+ JX.DOM.alterClass(messages_root, 'loading', loading);
+ JX.DOM.alterClass(form_root, 'loading', loading);
+
+ try {
+ var textarea = JX.DOM.find(form, 'textarea');
+ textarea.disabled = loading;
+ var button = JX.DOM.find(form, 'button');
+ button.disabled = loading;
+ } catch (ex) {
+ // haven't loaded it yet!
+ }
+ }
+
+ function markWidgetLoading(loading) {
+ var root = JX.DOM.find(document, 'div', 'conpherence-layout');
+ var widgets_root = JX.DOM.find(root, 'div', 'conpherence-widget-pane');
+
+ JX.DOM.alterClass(widgets_root, 'loading', loading);
+ }
+
+ function onWidgetResponse(thread_id, response) {
+ // we got impatient and this is no longer the right answer :/
+ if (_thread.selected != thread_id) {
+ return;
+ }
+ var root = JX.DOM.find(document, 'div', 'conpherence-layout');
+ var widgets_root = JX.DOM.find(root, 'div', 'conpherence-widgets-holder');
+ JX.DOM.setContent(widgets_root, JX.$H(response.widgets));
+
JX.Stratcom.invoke(
- 'conpherence-toggle-widget',
+ 'conpherence-update-widgets',
null,
{
- widget : getdefaultwidget(),
- no_toggle : no_toggle
+ widget : getDefaultWidget(),
+ buildSelectors : true,
+ toggleWidget : true,
+ threadID : _thread.selected
});
+
+ markWidgetLoading(false);
}
- function getdefaultwidget() {
+ function getDefaultWidget() {
var device = JX.Device.getDevice();
var widget = 'conpherence-message-pane';
if (device == 'desktop') {
widget = 'widgets-people';
}
return widget;
}
- function onloadthreadresponse(response) {
+ function onLoadThreadResponse(thread_id, response) {
+ // we got impatient and this is no longer the right answer :/
+ if (_thread.selected != thread_id) {
+ return;
+ }
var header = JX.$H(response.header);
var messages = JX.$H(response.messages);
var form = JX.$H(response.form);
var root = JX.DOM.find(document, 'div', 'conpherence-layout');
- var headerRoot = JX.DOM.find(root, 'div', 'conpherence-header-pane');
- var messagesRoot = JX.DOM.find(root, 'div', 'conpherence-messages');
- var formRoot = JX.DOM.find(root, 'div', 'conpherence-form');
- JX.DOM.setContent(headerRoot, header);
- JX.DOM.setContent(messagesRoot, messages);
- JX.DOM.setContent(formRoot, form);
-
- didredrawthread();
- }
+ var header_root = JX.DOM.find(root, 'div', 'conpherence-header-pane');
+ var messages_root = JX.DOM.find(root, 'div', 'conpherence-messages');
+ var form_root = JX.DOM.find(root, 'div', 'conpherence-form');
+ JX.DOM.setContent(header_root, header);
+ JX.DOM.setContent(messages_root, messages);
+ JX.DOM.setContent(form_root, form);
- function didredrawthread() {
- var root = JX.DOM.find(document, 'div', 'conpherence-layout');
- var messagesRoot = JX.DOM.find(root, 'div', 'conpherence-messages');
- messagesRoot.scrollTop = messagesRoot.scrollHeight;
+ markThreadLoading(false);
- try {
- var device = JX.Device.getDevice();
- var deviceWidgetSelector = JX.DOM.find(
- root,
- 'a',
- 'device-widgets-selector');
- if (device != 'desktop') {
- JX.DOM.show(deviceWidgetSelector);
- updatetoggledwidget(true);
- } else {
- JX.DOM.hide(deviceWidgetSelector);
- }
- } catch (ex) {
- // not here yet
- }
+ didRedrawThread(true);
}
+ /**
+ * This function is a wee bit tricky. Internally, we want to scroll the
+ * message window and let other stuff - notably widgets - redraw / build if
+ * necessary. Externally, we want a hook to scroll the message window
+ * - notably when the widget selector is used to invoke the message pane.
+ * The following three functions get 'er done.
+ */
+ function didRedrawThread(build_device_widget_selector) {
+ _scrollMessageWindow();
+ JX.Stratcom.invoke(
+ 'conpherence-did-redraw-thread',
+ null,
+ {
+ widget : getDefaultWidget(),
+ threadID : _thread.selected,
+ buildDeviceWidgetSelector : build_device_widget_selector
+ });
+ }
+ function _scrollMessageWindow() {
+ var root = JX.DOM.find(document, 'div', 'conpherence-layout');
+ var messages_root = JX.DOM.find(root, 'div', 'conpherence-messages');
+ messages_root.scrollTop = messages_root.scrollHeight;
+ }
JX.Stratcom.listen(
'conpherence-redraw-thread',
null,
function (e) {
- didredrawthread();
+ _scrollMessageWindow();
}
);
JX.Stratcom.listen(
'click',
'conpherence-menu-click',
function(e) {
if (!e.isNormalClick()) {
return;
}
// On devices, just follow the link normally.
if (JX.Device.getDevice() != 'desktop') {
return;
}
e.kill();
- selectthread(e.getNode('conpherence-menu-click'), true);
+ selectThread(e.getNode('conpherence-menu-click'), true);
});
JX.Stratcom.listen('click', 'conpherence-edit-metadata', function (e) {
e.kill();
var root = e.getNode('conpherence-layout');
var form = JX.DOM.find(root, 'form', 'conpherence-pontificate');
var data = e.getNodeData('conpherence-edit-metadata');
var header = JX.DOM.find(root, 'div', 'conpherence-header-pane');
var messages = JX.DOM.find(root, 'div', 'conpherence-messages');
new JX.Workflow.newFromForm(form, data)
.setHandler(JX.bind(this, function(r) {
JX.DOM.appendContent(messages, JX.$H(r.transactions));
messages.scrollTop = messages.scrollHeight;
JX.DOM.setContent(
header,
JX.$H(r.header)
);
try {
// update the menu entry
JX.DOM.replace(
JX.$(r.conpherence_phid + '-nav-item'),
JX.$H(r.nav_item)
);
JX.Stratcom.invoke(
'conpherence-selectthread',
null,
{ id : r.conpherence_phid + '-nav-item' }
);
} catch (ex) {
// Ignore; this view may not have a menu.
}
}))
.start();
});
+ var _loadingTransactionID = null;
JX.Stratcom.listen('click', 'show-older-messages', function(e) {
e.kill();
var data = e.getNodeData('show-older-messages');
- var oldest_transaction_id = data.oldest_transaction_id;
- var conf_id = thread.selected;
- JX.DOM.remove(e.getNode('show-older-messages'));
+ if (data.oldest_transaction_id == _loadingTransactionID) {
+ return;
+ }
+ _loadingTransactionID = data.oldest_transaction_id;
+ var node = e.getNode('show-older-messages');
+ JX.DOM.setContent(node, 'Loading...');
+ JX.DOM.alterClass(node, 'conpherence-show-older-messages-loading', true);
+
+ var conf_id = _thread.selected;
var root = JX.DOM.find(document, 'div', 'conpherence-layout');
var messages_root = JX.DOM.find(root, 'div', 'conpherence-messages');
- new JX.Request(config.base_uri + conf_id + '/', function(r) {
+ new JX.Workflow(config.baseURI + conf_id + '/', data)
+ .setHandler(function(r) {
+ JX.DOM.remove(node);
var messages = JX.$H(r.messages);
JX.DOM.prependContent(
messages_root,
JX.$H(messages));
- }).setData({ oldest_transaction_id : oldest_transaction_id }).send();
+ }).start();
});
- // On mobile, we just show a thread list, so we don't want to automatically
- // select or load any threads. On Desktop, we automatically select the first
- // thread.
- var old_device = null;
- function ondevicechange() {
+ /**
+ * On devices, we just show a thread list, so we don't want to automatically
+ * select or load any threads. On desktop, we automatically select the first
+ * thread, changing the _currentRole from list to thread.
+ */
+ function onDeviceChange() {
var new_device = JX.Device.getDevice();
- if (new_device === old_device) {
+ if (new_device === _oldDevice) {
return;
}
- if (old_device === null) {
- old_device = new_device;
- if (config.role == 'list') {
+ if (_oldDevice === null) {
+ _oldDevice = new_device;
+ if (_currentRole == 'list') {
if (new_device != 'desktop') {
return;
}
} else {
- loadthreads();
+ loadThreads();
return;
}
}
var update_toggled_widget =
- new_device == 'desktop' || old_device == 'desktop';
- old_device = new_device;
+ new_device == 'desktop' || _oldDevice == 'desktop';
+ _oldDevice = new_device;
- if (thread.visible !== null && update_toggled_widget) {
- updatetoggledwidget();
+ if (_thread.visible !== null && update_toggled_widget) {
+ JX.Stratcom.invoke(
+ 'conpherence-did-redraw-thread',
+ null,
+ {
+ widget : getDefaultWidget(),
+ threadID : _thread.selected
+ });
}
- if (config.role == 'list') {
- didloadthreads();
- config.role = 'thread';
+ if (_currentRole == 'list' && new_device == 'desktop') {
+ // this selects a thread and loads it
+ didLoadThreads();
+ _currentRole = 'thread';
var root = JX.DOM.find(document, 'div', 'conpherence-layout');
JX.DOM.alterClass(root, 'conpherence-role-list', false);
JX.DOM.alterClass(root, 'conpherence-role-thread', true);
}
}
+ JX.Stratcom.listen('phabricator-device-change', null, onDeviceChange);
- JX.Stratcom.listen('phabricator-device-change', null, ondevicechange);
- ondevicechange();
-
- function loadthreads() {
- var uri = config.base_uri + 'thread/' + config.selectedID + '/';
+ function loadThreads() {
+ markThreadsLoading(true);
+ var uri = config.baseURI + 'thread/' + config.selectedThreadID + '/';
new JX.Workflow(uri)
- .setHandler(onloadthreadsresponse)
+ .setHandler(onLoadThreadsResponse)
.start();
}
- function onloadthreadsresponse(r) {
+ function onLoadThreadsResponse(r) {
var layout = JX.$(config.layoutID);
var menu = JX.DOM.find(layout, 'div', 'conpherence-menu-pane');
JX.DOM.setContent(menu, JX.$H(r));
- config.selectedID && selectthreadid(config.selectedID);
+ config.selectedID && selectThreadByID(config.selectedID);
+
+ _thread.node.scrollIntoView();
- thread.node.scrollIntoView();
+ markThreadsLoading(false);
}
- function didloadthreads() {
+ function didLoadThreads() {
// If there's no thread selected yet, select the current thread or the
// first thread.
- if (!thread.selected) {
+ if (!_thread.selected) {
if (config.selectedID) {
- selectthreadid(config.selectedID, true);
+ selectThreadByID(config.selectedID, true);
} else {
var layout = JX.$(config.layoutID);
var threads = JX.DOM.scry(layout, 'a', 'conpherence-menu-click');
if (threads.length) {
- selectthread(threads[0]);
+ selectThread(threads[0]);
} else {
var nothreads = JX.DOM.find(layout, 'div', 'conpherence-no-threads');
nothreads.style.display = 'block';
}
}
}
- redrawthread();
}
- var handlethreadscrollers = function (e) {
+ var handleThreadScrollers = function (e) {
e.kill();
var data = e.getNodeData('conpherence-menu-scroller');
var scroller = e.getNode('conpherence-menu-scroller');
+ JX.DOM.alterClass(scroller, 'loading', true);
+ JX.DOM.setContent(scroller.firstChild, 'Loading...');
new JX.Workflow(scroller.href, data)
.setHandler(
- JX.bind(null, threadscrollerresponse, scroller, data.direction))
+ JX.bind(null, threadScrollerResponse, scroller, data.direction))
.start();
};
- var threadscrollerresponse = function (scroller, direction, r) {
+ var threadScrollerResponse = function (scroller, direction, r) {
var html = JX.$H(r.html);
- var threadPhids = r.phids;
- var reselectId = null;
+ var thread_phids = r.phids;
+ var reselect_id = null;
// remove any threads that are in the list that we just got back
// in the result set; things have changed and they'll be in the
// right place soon
- for (var ii = 0; ii < threadPhids.length; ii++) {
+ for (var ii = 0; ii < thread_phids.length; ii++) {
try {
- var nodeId = threadPhids[ii] + '-nav-item';
- var node = JX.$(nodeId);
- var nodeData = JX.Stratcom.getData(node);
- if (nodeData.id == thread.selected) {
- reselectId = nodeId;
+ var node_id = thread_phids[ii] + '-nav-item';
+ var node = JX.$(node_id);
+ var node_data = JX.Stratcom.getData(node);
+ if (node_data.id == _thread.selected) {
+ reselect_id = node_id;
}
JX.DOM.remove(node);
} catch (ex) {
// ignore , just haven't seen this thread yet
}
}
var root = JX.DOM.find(document, 'div', 'conpherence-layout');
- var menuRoot = JX.DOM.find(root, 'div', 'conpherence-menu-pane');
- var scrollY = 0;
+ var menu_root = JX.DOM.find(root, 'div', 'conpherence-menu-pane');
+ var scroll_y = 0;
// we have to do some hyjinx in the up case to make the menu scroll to
// where it should
if (direction == 'up') {
var style = {
position: 'absolute',
left: '-10000px'
};
var test_size = JX.$N('div', {style: style}, html);
document.body.appendChild(test_size);
var html_size = JX.Vector.getDim(test_size);
JX.DOM.remove(test_size);
- scrollY = html_size.y;
+ scroll_y = html_size.y;
}
JX.DOM.replace(scroller, html);
- menuRoot.scrollTop += scrollY;
+ menu_root.scrollTop += scroll_y;
- if (reselectId) {
+ if (reselect_id) {
JX.Stratcom.invoke(
'conpherence-selectthread',
null,
- { id : reselectId }
+ { id : reselect_id }
);
}
};
JX.Stratcom.listen(
['click'],
'conpherence-menu-scroller',
- handlethreadscrollers
+ handleThreadScrollers
);
});
diff --git a/webroot/rsrc/js/application/conpherence/behavior-pontificate.js b/webroot/rsrc/js/application/conpherence/behavior-pontificate.js
index e39251f403..f8068679e5 100644
--- a/webroot/rsrc/js/application/conpherence/behavior-pontificate.js
+++ b/webroot/rsrc/js/application/conpherence/behavior-pontificate.js
@@ -1,62 +1,72 @@
/**
* @provides javelin-behavior-conpherence-pontificate
* @requires javelin-behavior
* javelin-dom
* javelin-util
* javelin-workflow
* javelin-stratcom
*/
JX.behavior('conpherence-pontificate', function(config) {
var onsubmit = function(e) {
e.kill();
var form = e.getNode('tag:form');
var root = e.getNode('conpherence-layout');
- var messages = JX.DOM.find(root, 'div', 'conpherence-messages');
+ var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane');
+ var header_root = JX.DOM.find(root, 'div', 'conpherence-header-pane');
+ var form_root = JX.DOM.find(root, 'div', 'conpherence-form');
+ var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages');
var fileWidget = null;
try {
fileWidget = JX.DOM.find(root, 'div', 'widgets-files');
} catch (ex) {
// Ignore; maybe no files widget
}
+ JX.DOM.alterClass(header_root, 'loading', true);
+ JX.DOM.alterClass(messages_root, 'loading', true);
+ JX.DOM.alterClass(form_root, 'loading', true);
JX.Workflow.newFromForm(form)
.setHandler(JX.bind(this, function(r) {
JX.DOM.appendContent(messages, JX.$H(r.transactions));
messages.scrollTop = messages.scrollHeight;
if (fileWidget) {
JX.DOM.setContent(
fileWidget,
JX.$H(r.file_widget)
);
}
var inputs = JX.DOM.scry(form, 'input');
for (var ii = 0; ii < inputs.length; ii++) {
if (inputs[ii].name == 'latest_transaction_id') {
inputs[ii].value = r.latest_transaction_id;
break;
}
}
var textarea = JX.DOM.find(form, 'textarea');
textarea.value = '';
JX.Stratcom.invoke(
'conpherence-selectthread',
null,
{ id : r.conpherence_phid + '-nav-item' }
- );
+ );
+
+ JX.DOM.alterClass(header_root, 'loading', false);
+ JX.DOM.alterClass(messages_root, 'loading', false);
+ JX.DOM.alterClass(form_root, 'loading', false);
}))
.start();
};
JX.Stratcom.listen(
['submit', 'didSyntheticSubmit'],
'conpherence-pontificate',
onsubmit);
});
diff --git a/webroot/rsrc/js/application/conpherence/behavior-widget-pane.js b/webroot/rsrc/js/application/conpherence/behavior-widget-pane.js
index a273dc2fa4..d9ea8afa30 100644
--- a/webroot/rsrc/js/application/conpherence/behavior-widget-pane.js
+++ b/webroot/rsrc/js/application/conpherence/behavior-widget-pane.js
@@ -1,195 +1,293 @@
/**
* @requires javelin-behavior
* javelin-dom
* javelin-stratcom
* javelin-workflow
* javelin-util
* phabricator-notification
* javelin-behavior-device
* phabricator-dropdown-menu
* phabricator-menu-item
* @provides javelin-behavior-conpherence-widget-pane
*/
JX.behavior('conpherence-widget-pane', function(config) {
- var build_widget_selector = function (data) {
- var widgets = config.widgetRegistry;
- var root = JX.DOM.find(document, 'div', 'conpherence-layout');
- var widgetPane = JX.DOM.find(root, 'div', 'conpherence-widget-pane');
- var widgetHeader = JX.DOM.find(widgetPane, 'a', 'widgets-selector');
- var mobileWidgetHeader = null;
- try {
- mobileWidgetHeader = JX.DOM.find(
- root,
- 'a',
- 'device-widgets-selector');
- } catch (ex) {
- // is okay - no mobileWidgetHeader yet...
- }
- var widgetData = widgets[data.widget];
- JX.DOM.setContent(
- widgetHeader,
- widgetData.name);
- JX.DOM.appendContent(
- widgetHeader,
- JX.$N('span', { className : 'caret' }));
- if (mobileWidgetHeader) {
- // this is fragile but adding a sigil to this element is awkward
- var mobileWidgetHeaderSpans = JX.DOM.scry(mobileWidgetHeader, 'span');
- var mobileWidgetHeaderSpan = mobileWidgetHeaderSpans[1];
- JX.DOM.setContent(
- mobileWidgetHeaderSpan,
- widgetData.name);
+ /**
+ * There can be race conditions around loading the messages or the widgets
+ * first. Keep track of what widgets we've loaded with this variable.
+ */
+ var _loadedWidgetsID = null;
+
+ /**
+ * At any given time there can be only one selected widget. Keep track of
+ * which one it is by the user-facing name for ease of use with
+ * PhabricatorDropdownMenuItems.
+ */
+ var _selectedWidgetName = null;
+
+ /**
+ * This is potentially built each time the user switches conpherence threads
+ * or when the result JX.Device.getDevice() changes from desktop to some
+ * other value.
+ */
+ var buildDeviceWidgetSelector = function (data) {
+ var device_header = _getDeviceWidgetHeader();
+ if (!device_header) {
+ return;
}
+ JX.DOM.show(device_header);
+ var device_menu = new JX.PhabricatorDropdownMenu(device_header);
+ data.deviceMenu = true;
+ _buildWidgetSelector(device_menu, data);
+ };
- var menu = new JX.PhabricatorDropdownMenu(widgetHeader);
+ /**
+ * This is potentially built each time the user switches conpherence threads
+ * or when the result JX.Device.getDevice() changes from mobile or tablet to
+ * desktop.
+ */
+ var buildDesktopWidgetSelector = function (data) {
+ var root = JX.DOM.find(document, 'div', 'conpherence-layout');
+ var widget_pane = JX.DOM.find(root, 'div', 'conpherence-widget-pane');
+ var widget_header = JX.DOM.find(widget_pane, 'a', 'widgets-selector');
+ var menu = new JX.PhabricatorDropdownMenu(widget_header);
menu.toggleAlignDropdownRight(false);
- var deviceMenu = null;
- if (mobileWidgetHeader) {
- deviceMenu = new JX.PhabricatorDropdownMenu(mobileWidgetHeader);
- }
+ data.deviceMenu = false;
+ _buildWidgetSelector(menu, data);
+ };
+ /**
+ * Workhorse that actually builds the widget selector. Note some fancy bits
+ * where we listen for the "open" event and enable / disable widgets as
+ * appropos.
+ */
+ var _buildWidgetSelector = function (menu, data) {
+ _loadedWidgetsID = data.threadID;
+ var widgets = config.widgetRegistry;
for (var widget in widgets) {
- widgetData = widgets[widget];
- if (mobileWidgetHeader) {
- deviceMenu.addItem(new JX.PhabricatorMenuItem(
- widgetData.name,
- JX.bind(null, build_widget_selector, { widget : widget }),
- '#'
- ).setDisabled(widget == data.widget));
- }
- if (widgetData.deviceOnly) {
+ var widget_data = widgets[widget];
+ if (widget_data.deviceOnly && data.deviceMenu === false) {
continue;
}
menu.addItem(new JX.PhabricatorMenuItem(
- widgetData.name,
- JX.bind(null, build_widget_selector, { widget : widget }),
+ widget_data.name,
+ JX.bind(null, toggleWidget, { widget : widget }),
'#'
).setDisabled(widget == data.widget));
}
- if (data.no_toggle) {
+
+ menu.listen(
+ 'open',
+ JX.bind(menu, function () {
+ for (var ii = 0; ii < this._items.length; ii++) {
+ var item = this._items[ii];
+ var name = item.getName();
+ if (name == _selectedWidgetName) {
+ item.setDisabled(true);
+ } else {
+ item.setDisabled(false);
+ }
+ }
+ }));
+ };
+
+ /**
+ * Since this is not always on the page, avoid having a repeat
+ * try / catch block and consolidate into this helper function.
+ */
+ var _getDeviceWidgetHeader = function () {
+ var root = JX.DOM.find(document, 'div', 'conpherence-layout');
+ var device_header = null;
+ try {
+ device_header = JX.DOM.find(
+ root,
+ 'a',
+ 'device-widgets-selector');
+ } catch (ex) {
+ // is okay - no deviceWidgetHeader yet... but bail time
+ }
+ return device_header;
+ };
+
+ /**
+ * Responder to the 'conpherence-did-redraw-thread' event, this bad boy
+ * hides or shows the device widget selector as appropros.
+ */
+ var _didRedrawThread = function (data) {
+ if (_loadedWidgetsID === null || _loadedWidgetsID != data.threadID) {
return;
}
- toggle_widget(data);
+ var device = JX.Device.getDevice();
+ var device_selector = _getDeviceWidgetHeader();
+ if (device == 'desktop') {
+ JX.DOM.hide(device_selector);
+ } else {
+ JX.DOM.show(device_selector);
+ }
+ if (data.buildDeviceWidgetSelector) {
+ buildDeviceWidgetSelector(data);
+ }
+ toggleWidget(data);
};
+ JX.Stratcom.listen(
+ 'conpherence-did-redraw-thread',
+ null,
+ function (e) {
+ _didRedrawThread(e.getData());
+ }
+ );
- var toggle_widget = function (data) {
+ /**
+ * Toggling a widget involves showing / hiding the appropriate widget
+ * bodies as well as updating the selectors to have the label on the
+ * newly selected widget.
+ */
+ var toggleWidget = function (data) {
var widgets = config.widgetRegistry;
- var widgetData = widgets[data.widget];
+ var widget_data = widgets[data.widget];
var device = JX.Device.getDevice();
var is_desktop = device == 'desktop';
- if (widgetData.deviceOnly && is_desktop) {
+ if (widget_data.deviceOnly && is_desktop) {
return;
}
+ _selectedWidgetName = widget_data.name;
+
+ var device_header = _getDeviceWidgetHeader();
+ if (device_header) {
+ // this is fragile but adding a sigil to this element is awkward
+ var device_header_spans = JX.DOM.scry(device_header, 'span');
+ var device_header_span = device_header_spans[1];
+ JX.DOM.setContent(
+ device_header_span,
+ widget_data.name);
+ }
+
+ // don't update the non-device selector with device only widget stuff
+ if (!widget_data.deviceOnly) {
+ var root = JX.DOM.find(document, 'div', 'conpherence-layout');
+ var widget_pane = JX.DOM.find(root, 'div', 'conpherence-widget-pane');
+ var widget_header = JX.DOM.find(widget_pane, 'a', 'widgets-selector');
+ JX.DOM.setContent(
+ widget_header,
+ widget_data.name);
+ JX.DOM.appendContent(
+ widget_header,
+ JX.$N('span', { className : 'caret' }));
+ }
for (var widget in config.widgetRegistry) {
- widgetData = widgets[widget];
- if (widgetData.deviceOnly && is_desktop) {
+ widget_data = widgets[widget];
+ if (widget_data.deviceOnly && is_desktop) {
// some one off code for conpherence messages which are device-only
// as a widget, but shown always on the desktop
if (widget == 'conpherence-message-pane') {
JX.$(widget).style.display = 'block';
JX.Stratcom.invoke('conpherence-redraw-thread', null, {});
}
continue;
}
if (widget == data.widget) {
JX.$(widget).style.display = 'block';
// some one off code for conpherence messages - fancier refresh tech
if (widget == 'conpherence-message-pane') {
JX.Stratcom.invoke('conpherence-redraw-thread', null, {});
JX.Stratcom.invoke('conpherence-update-page-data', null, {});
}
} else {
JX.$(widget).style.display = 'none';
}
}
};
JX.Stratcom.listen(
- 'conpherence-toggle-widget',
+ 'conpherence-update-widgets',
null,
function (e) {
- build_widget_selector(e.getData());
- }
- );
-
+ var data = e.getData();
+ if (data.buildSelectors) {
+ buildDesktopWidgetSelector(data);
+ buildDeviceWidgetSelector(data);
+ }
+ if (data.toggleWidget) {
+ toggleWidget(data);
+ }
+ });
/* people widget */
JX.Stratcom.listen(
['submit', 'didSyntheticSubmit'],
'add-person',
function (e) {
e.kill();
var root = e.getNode('conpherence-layout');
var form = e.getNode('tag:form');
var data = e.getNodeData('add-person');
- var peopleRoot = e.getNode('widgets-people');
+ var people_root = e.getNode('widgets-people');
var messages = null;
try {
messages = JX.DOM.find(root, 'div', 'conpherence-messages');
} catch (ex) {
}
- var latestTransactionData = JX.Stratcom.getData(
+ var latest_transaction_data = JX.Stratcom.getData(
JX.DOM.find(
root,
'input',
'latest-transaction-id'
));
- data.latest_transaction_id = latestTransactionData.id;
+ data.latest_transaction_id = latest_transaction_data.id;
JX.Workflow.newFromForm(form, data)
.setHandler(JX.bind(this, function (r) {
if (messages) {
JX.DOM.appendContent(messages, JX.$H(r.transactions));
messages.scrollTop = messages.scrollHeight;
}
// update the people widget
JX.DOM.setContent(
- peopleRoot,
+ people_root,
JX.$H(r.people_widget)
);
}))
.start();
}
);
JX.Stratcom.listen(
['touchstart', 'mousedown'],
'remove-person',
function (e) {
- var peopleRoot = e.getNode('widgets-people');
+ var people_root = e.getNode('widgets-people');
var form = JX.DOM.find(peopleRoot, 'form');
var data = e.getNodeData('remove-person');
// we end up re-directing to conpherence home
JX.Workflow.newFromForm(form, data)
.start();
}
);
/* settings widget */
var onsubmitSettings = function (e) {
e.kill();
var form = e.getNode('tag:form');
var button = JX.DOM.find(form, 'button');
JX.Workflow.newFromForm(form)
.setHandler(JX.bind(this, function (r) {
new JX.Notification()
.setDuration(6000)
.setContent(r)
.show();
button.disabled = '';
JX.DOM.alterClass(button, 'disabled', false);
}))
.start();
};
JX.Stratcom.listen(
['submit', 'didSyntheticSubmit'],
'notifications-update',
onsubmitSettings
);
});

File Metadata

Mime Type
text/x-diff
Expires
Mon, Jul 28, 12:20 PM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
186787
Default Alt Text
(230 KB)

Event Timeline