Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php
index 5a0c1c88e2..b5cd31bcf7 100644
--- a/src/__celerity_resource_map__.php
+++ b/src/__celerity_resource_map__.php
@@ -1,4068 +1,4069 @@
<?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/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/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/search.png' =>
array(
'hash' => 'ff7da044e6f923b8f569dec11f97e5e5',
'uri' => '/res/ff7da044/rsrc/image/search.png',
'disk' => '/rsrc/image/search.png',
'type' => 'png',
),
'/rsrc/image/sprite-apps-X2.png' =>
array(
'hash' => '4a7fde0d0f51d467d746b508e0d5271b',
'uri' => '/res/4a7fde0d/rsrc/image/sprite-apps-X2.png',
'disk' => '/rsrc/image/sprite-apps-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-apps-large-X2.png' =>
array(
'hash' => '812fdcb558340bc5d72a3b54a7342695',
'uri' => '/res/812fdcb5/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' => '656659e72beb2dab0a40b141f21ada4b',
'uri' => '/res/656659e7/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' => '5642e38420b304e08d3d07e9e7bb965f',
'uri' => '/res/5642e384/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' => '92aebaab67dcc6baf2ea99294368d895',
'uri' => '/res/92aebaab/rsrc/image/sprite-gradient.png',
'disk' => '/rsrc/image/sprite-gradient.png',
'type' => 'png',
),
'/rsrc/image/sprite-icon-X2.png' =>
array(
'hash' => 'c9fae25bc6221922ce26517e654a18e4',
'uri' => '/res/c9fae25b/rsrc/image/sprite-icon-X2.png',
'disk' => '/rsrc/image/sprite-icon-X2.png',
'type' => 'png',
),
'/rsrc/image/sprite-icon.png' =>
array(
'hash' => 'b690ea69bf5f2abe84d0a6e9ef64b03d',
'uri' => '/res/b690ea69/rsrc/image/sprite-icon.png',
'disk' => '/rsrc/image/sprite-icon.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-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' => '97c0f92caca26643af1bc372bb499ed4',
'uri' => '/res/97c0f92c/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/dust_background.jpg' =>
array(
'hash' => '1ff330c03712e08ca2eed006ccc6c1e7',
'uri' => '/res/1ff330c0/rsrc/image/texture/dust_background.jpg',
'disk' => '/rsrc/image/texture/dust_background.jpg',
'type' => 'jpg',
),
'/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/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/d7bd9032/rsrc/css/core/aphront-bars.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/aphront-bars.css',
),
'aphront-calendar-view-css' =>
array(
'uri' => '/res/73061a31/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/215b3ab1/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/ed8c70fa/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/b4b7589b/rsrc/css/aphront/list-filter-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/list-filter-view.css',
),
'aphront-notes' =>
array(
'uri' => '/res/f8f3dcfa/rsrc/css/core/aphront-notes.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/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/3d1420b3/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/fd33a0f0/rsrc/css/aphront/table-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/table-view.css',
),
'aphront-tokenizer-control-css' =>
array(
'uri' => '/res/207105f0/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/7afa129f/rsrc/css/aphront/two-column.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/two-column.css',
),
'aphront-typeahead-control-css' =>
array(
'uri' => '/res/ef59c20c/rsrc/css/aphront/typeahead.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/typeahead.css',
),
'config-options-css' =>
array(
'uri' => '/res/e6c21f2f/rsrc/css/application/config/config-options.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/config/config-options.css',
),
'conpherence-header-pane-css' =>
array(
'uri' => '/res/11c32adc/rsrc/css/application/conpherence/header-pane.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/conpherence/header-pane.css',
),
'conpherence-menu-css' =>
array(
'uri' => '/res/0dc6b412/rsrc/css/application/conpherence/menu.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/conpherence/menu.css',
),
'conpherence-message-pane-css' =>
array(
'uri' => '/res/3aa15b9e/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/1c43dda4/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/ea694162/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/e0ad34ac/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/f35d7e23/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/ef4eda09/rsrc/js/javelin/lib/behavior.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-magical-init',
),
'disk' => '/rsrc/js/javelin/lib/behavior.js',
),
'javelin-behavior-aphlict-dropdown' =>
array(
'uri' => '/res/2418f448/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/6dde3f43/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/cf049052/rsrc/js/application/core/behavior-tokenizer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'phabricator-prefab',
),
'disk' => '/rsrc/js/application/core/behavior-tokenizer.js',
),
'javelin-behavior-aphront-crop' =>
array(
'uri' => '/res/cda1eace/rsrc/js/application/core/behavior-crop.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-vector',
3 => 'javelin-magical-init',
),
'disk' => '/rsrc/js/application/core/behavior-crop.js',
),
'javelin-behavior-aphront-drag-and-drop' =>
array(
'uri' => '/res/8dd5fd78/rsrc/js/application/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/application/core/behavior-drag-and-drop.js',
),
'javelin-behavior-aphront-drag-and-drop-textarea' =>
array(
'uri' => '/res/853e33b9/rsrc/js/application/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-paste-file-upload',
4 => 'phabricator-textareautils',
),
'disk' => '/rsrc/js/application/core/behavior-drag-and-drop-textarea.js',
),
'javelin-behavior-aphront-form-disable-on-submit' =>
array(
'uri' => '/res/b5052cd0/rsrc/js/application/core/behavior-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/behavior-form.js',
),
'javelin-behavior-aphront-more' =>
array(
'uri' => '/res/9ad83c3c/rsrc/js/application/core/behavior-more.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/behavior-more.js',
),
'javelin-behavior-audit-preview' =>
array(
'uri' => '/res/3048b073/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-conpherence-drag-and-drop-photo' =>
array(
'uri' => '/res/9e3eb1cd/rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-workflow',
3 => 'phabricator-drag-and-drop-file-upload',
),
'disk' => '/rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js',
),
'javelin-behavior-conpherence-menu' =>
array(
'uri' => '/res/bcd715e1/rsrc/js/application/conpherence/behavior-menu.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-request',
3 => 'javelin-stratcom',
4 => 'javelin-uri',
5 => 'javelin-util',
6 => 'javelin-workflow',
),
'disk' => '/rsrc/js/application/conpherence/behavior-menu.js',
),
'javelin-behavior-conpherence-pontificate' =>
array(
'uri' => '/res/15263692/rsrc/js/application/conpherence/behavior-pontificate.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
3 => 'javelin-workflow',
),
'disk' => '/rsrc/js/application/conpherence/behavior-pontificate.js',
),
'javelin-behavior-conpherence-widget-pane' =>
array(
'uri' => '/res/43a0fe1b/rsrc/js/application/conpherence/behavior-widget-pane.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/conpherence/behavior-widget-pane.js',
),
'javelin-behavior-countdown-timer' =>
array(
'uri' => '/res/7468acb7/rsrc/js/application/countdown/timer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-util',
),
'disk' => '/rsrc/js/application/countdown/timer.js',
),
'javelin-behavior-dark-console' =>
array(
'uri' => '/res/89aeb6c0/rsrc/js/application/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/application/core/behavior-dark-console.js',
),
'javelin-behavior-device' =>
array(
'uri' => '/res/a10b851b/rsrc/js/application/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/application/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/b580229b/rsrc/js/application/differential/behavior-comment-jump.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-util',
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/752f5dfc/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',
),
'disk' => '/rsrc/js/application/differential/behavior-dropdown-menus.js',
),
'javelin-behavior-differential-edit-inline-comments' =>
array(
'uri' => '/res/70c1f3a3/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/5fbce8db/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/89e93cc9/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/526c2615/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/eaa12efc/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/62bd2035/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/7c42e1ba/rsrc/js/application/diffusion/behavior-jump-to.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-util',
2 => 'javelin-vector',
3 => '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/f46289e9/rsrc/js/application/core/behavior-error-log.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/behavior-error-log.js',
),
'javelin-behavior-fancy-datepicker' =>
array(
'uri' => '/res/0a1bc610/rsrc/js/application/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/application/core/behavior-fancy-datepicker.js',
),
'javelin-behavior-global-drag-and-drop' =>
array(
'uri' => '/res/73ae3fd1/rsrc/js/application/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/application/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/e146a99b/rsrc/js/application/core/behavior-history-install.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-history',
),
'disk' => '/rsrc/js/application/core/behavior-history-install.js',
),
'javelin-behavior-konami' =>
array(
'uri' => '/res/2199602f/rsrc/js/application/core/behavior-konami.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/core/behavior-konami.js',
),
'javelin-behavior-lightbox-attachments' =>
array(
'uri' => '/res/08f5e202/rsrc/js/application/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/application/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/d22661be/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/398cf8d7/rsrc/js/application/maniphest/behavior-batch-selector.js',
+ 'uri' => '/res/f8cf3b84/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/8acd6f07/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/5e02f19a/rsrc/js/application/maniphest/behavior-subpriorityeditor.js',
+ '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/62465554/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/855c9f0c/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/f879d4dd/rsrc/js/application/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/application/core/behavior-active-nav.js',
),
'javelin-behavior-phabricator-autofocus' =>
array(
'uri' => '/res/2946bb89/rsrc/js/application/core/behavior-autofocus.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/behavior-autofocus.js',
),
'javelin-behavior-phabricator-file-tree' =>
array(
'uri' => '/res/e9c96597/rsrc/js/application/core/behavior-file-tree.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'phabricator-keyboard-shortcut',
2 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/application/core/behavior-file-tree.js',
),
'javelin-behavior-phabricator-gesture' =>
array(
'uri' => '/res/f186161c/rsrc/js/application/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/application/core/behavior-gesture.js',
),
'javelin-behavior-phabricator-gesture-example' =>
array(
'uri' => '/res/da636e19/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-keyboard-pager' =>
array(
'uri' => '/res/56d64eff/rsrc/js/application/core/behavior-keyboard-pager.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-uri',
2 => 'phabricator-keyboard-shortcut',
),
'disk' => '/rsrc/js/application/core/behavior-keyboard-pager.js',
),
'javelin-behavior-phabricator-keyboard-shortcuts' =>
array(
'uri' => '/res/c5eb65cd/rsrc/js/application/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/application/core/behavior-keyboard-shortcuts.js',
),
'javelin-behavior-phabricator-nav' =>
array(
'uri' => '/res/222b9329/rsrc/js/application/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',
),
'disk' => '/rsrc/js/application/core/behavior-phabricator-nav.js',
),
'javelin-behavior-phabricator-notification-example' =>
array(
'uri' => '/res/a6d51998/rsrc/js/application/uiexample/notification-example.js',
'type' => 'js',
'requires' =>
array(
0 => 'phabricator-notification',
1 => 'javelin-stratcom',
2 => 'javelin-behavior',
3 => 'javelin-uri',
),
'disk' => '/rsrc/js/application/uiexample/notification-example.js',
),
'javelin-behavior-phabricator-object-selector' =>
array(
'uri' => '/res/0c4b0d82/rsrc/js/application/core/behavior-object-selector.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-request',
3 => 'javelin-util',
),
'disk' => '/rsrc/js/application/core/behavior-object-selector.js',
),
'javelin-behavior-phabricator-oncopy' =>
array(
'uri' => '/res/f490b8d1/rsrc/js/application/core/behavior-oncopy.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/behavior-oncopy.js',
),
'javelin-behavior-phabricator-remarkup-assist' =>
array(
'uri' => '/res/07406487/rsrc/js/application/core/behavior-phabricator-remarkup-assist.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'phabricator-textareautils',
),
'disk' => '/rsrc/js/application/core/behavior-phabricator-remarkup-assist.js',
),
'javelin-behavior-phabricator-reveal-content' =>
array(
'uri' => '/res/a4fae14a/rsrc/js/application/core/behavior-reveal-content.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/behavior-reveal-content.js',
),
'javelin-behavior-phabricator-search-typeahead' =>
array(
'uri' => '/res/046ab274/rsrc/js/application/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/application/core/behavior-search-typeahead.js',
),
'javelin-behavior-phabricator-tooltips' =>
array(
'uri' => '/res/e0b344c6/rsrc/js/application/core/behavior-tooltip.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-behavior-device',
2 => 'javelin-stratcom',
3 => 'phabricator-tooltip',
),
'disk' => '/rsrc/js/application/core/behavior-tooltip.js',
),
'javelin-behavior-phabricator-transaction-comment-form' =>
array(
'uri' => '/res/acc3ada1/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/b20b1cc2/rsrc/js/application/core/behavior-watch-anchor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-vector',
),
'disk' => '/rsrc/js/application/core/behavior-watch-anchor.js',
),
'javelin-behavior-phame-post-preview' =>
array(
'uri' => '/res/ac4c503a/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/ecf5f969/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/f1665ecd/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/9d091af3/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/6fd76d0f/rsrc/js/application/core/behavior-refresh-csrf.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-request',
1 => 'javelin-behavior',
2 => 'javelin-dom',
3 => 'phabricator-busy',
),
'disk' => '/rsrc/js/application/core/behavior-refresh-csrf.js',
),
'javelin-behavior-releeph-preview-branch' =>
array(
'uri' => '/res/a77ebc86/rsrc/js/application/releeph/releeph-preview-branch.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'javelin-uri',
4 => 'javelin-util',
),
'disk' => '/rsrc/js/application/releeph/releeph-preview-branch.js',
),
'javelin-behavior-releeph-request-state-change' =>
array(
'uri' => '/res/38f96ba8/rsrc/js/application/releeph/releeph-request-state-change.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-stratcom',
3 => 'javelin-util',
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/b52096e2/rsrc/js/application/releeph/releeph-request-typeahead.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
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/application/releeph/releeph-request-typeahead.js',
),
'javelin-behavior-repository-crossreference' =>
array(
'uri' => '/res/4b5fab1c/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-stripe-payment-form' =>
array(
'uri' => '/res/87c7b043/rsrc/js/application/phortune/behavior-stripe-payment-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-json',
3 => 'stripe-core',
),
'disk' => '/rsrc/js/application/phortune/behavior-stripe-payment-form.js',
),
'javelin-behavior-toggle-class' =>
array(
'uri' => '/res/fa818e0f/rsrc/js/application/core/behavior-toggle-class.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/behavior-toggle-class.js',
),
'javelin-behavior-view-placeholder' =>
array(
'uri' => '/res/5b89bdf5/rsrc/js/javelin/ext/view/ViewPlaceholder.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'javelin-view-renderer',
),
'disk' => '/rsrc/js/javelin/ext/view/ViewPlaceholder.js',
),
'javelin-behavior-workflow' =>
array(
'uri' => '/res/2c99beaf/rsrc/js/application/core/behavior-workflow.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-stratcom',
2 => 'javelin-workflow',
3 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/behavior-workflow.js',
),
'javelin-color' =>
array(
'uri' => '/res/b0439fc9/rsrc/js/javelin/ext/fx/Color.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/js/javelin/ext/fx/Color.js',
),
'javelin-cookie' =>
array(
'uri' => '/res/a9cddab0/rsrc/js/javelin/lib/Cookie.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/lib/Cookie.js',
),
'javelin-dom' =>
array(
'uri' => '/res/459f3c08/rsrc/js/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/js/javelin/lib/DOM.js',
),
'javelin-dynval' =>
array(
'uri' => '/res/d89c6f88/rsrc/js/javelin/ext/reactor/core/DynVal.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-reactornode',
2 => 'javelin-util',
3 => 'javelin-reactor',
),
'disk' => '/rsrc/js/javelin/ext/reactor/core/DynVal.js',
),
'javelin-event' =>
array(
'uri' => '/res/73201bd3/rsrc/js/javelin/core/Event.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/js/javelin/core/Event.js',
),
'javelin-fx' =>
array(
'uri' => '/res/30ef0914/rsrc/js/javelin/ext/fx/FX.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-color',
1 => 'javelin-install',
2 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/ext/fx/FX.js',
),
'javelin-history' =>
array(
'uri' => '/res/9bb36651/rsrc/js/javelin/lib/History.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-stratcom',
1 => 'javelin-install',
2 => 'javelin-uri',
3 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/lib/History.js',
),
'javelin-install' =>
array(
'uri' => '/res/cab679ff/rsrc/js/javelin/core/install.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-util',
1 => 'javelin-magical-init',
),
'disk' => '/rsrc/js/javelin/core/install.js',
),
'javelin-json' =>
array(
'uri' => '/res/561b8056/rsrc/js/javelin/lib/JSON.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/js/javelin/lib/JSON.js',
),
'javelin-magical-init' =>
array(
'uri' => '/res/2f1554da/rsrc/js/javelin/core/init.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/js/javelin/core/init.js',
),
'javelin-mask' =>
array(
'uri' => '/res/d2a35fff/rsrc/js/javelin/lib/Mask.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/javelin/lib/Mask.js',
),
'javelin-reactor' =>
array(
'uri' => '/res/dfd87f3c/rsrc/js/javelin/ext/reactor/core/Reactor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/ext/reactor/core/Reactor.js',
),
'javelin-reactor-dom' =>
array(
'uri' => '/res/701b6f39/rsrc/js/javelin/ext/reactor/dom/RDOM.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-dom',
1 => 'javelin-dynval',
2 => 'javelin-reactornode',
3 => 'javelin-install',
4 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/ext/reactor/dom/RDOM.js',
),
'javelin-reactor-node-calmer' =>
array(
'uri' => '/res/5a35920a/rsrc/js/javelin/ext/reactor/core/ReactorNodeCalmer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-reactor',
2 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/ext/reactor/core/ReactorNodeCalmer.js',
),
'javelin-reactornode' =>
array(
'uri' => '/res/f278cc27/rsrc/js/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/js/javelin/ext/reactor/core/ReactorNode.js',
),
'javelin-request' =>
array(
'uri' => '/res/e25d75b3/rsrc/js/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/js/javelin/lib/Request.js',
),
'javelin-resource' =>
array(
'uri' => '/res/d5a3f835/rsrc/js/javelin/lib/Resource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-magical-init',
1 => 'javelin-stratcom',
2 => 'javelin-util',
3 => 'javelin-uri',
),
'disk' => '/rsrc/js/javelin/lib/Resource.js',
),
'javelin-stratcom' =>
array(
'uri' => '/res/c81f64eb/rsrc/js/javelin/core/Stratcom.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-event',
2 => 'javelin-util',
3 => 'javelin-magical-init',
),
'disk' => '/rsrc/js/javelin/core/Stratcom.js',
),
'javelin-tokenizer' =>
array(
'uri' => '/res/c75c9e12/rsrc/js/javelin/lib/control/tokenizer/Tokenizer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-dom',
1 => 'javelin-util',
2 => 'javelin-stratcom',
3 => 'javelin-install',
),
'disk' => '/rsrc/js/javelin/lib/control/tokenizer/Tokenizer.js',
),
'javelin-typeahead' =>
array(
'uri' => '/res/dccb789e/rsrc/js/javelin/lib/control/typeahead/Typeahead.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'javelin-vector',
3 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/lib/control/typeahead/Typeahead.js',
),
'javelin-typeahead-composite-source' =>
array(
'uri' => '/res/99705f64/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-typeahead-source',
2 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js',
),
'javelin-typeahead-normalizer' =>
array(
'uri' => '/res/a9e97c0d/rsrc/js/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/js/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js',
),
'javelin-typeahead-ondemand-source' =>
array(
'uri' => '/res/81e531aa/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-stratcom',
3 => 'javelin-request',
4 => 'javelin-typeahead-source',
),
'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js',
),
'javelin-typeahead-preloaded-source' =>
array(
'uri' => '/res/d464efd2/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-stratcom',
3 => 'javelin-request',
4 => 'javelin-typeahead-source',
),
'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js',
),
'javelin-typeahead-source' =>
array(
'uri' => '/res/74b1f091/rsrc/js/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/js/javelin/lib/control/typeahead/source/TypeaheadSource.js',
),
'javelin-typeahead-static-source' =>
array(
'uri' => '/res/c8e247fc/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-typeahead-source',
),
'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js',
),
'javelin-uri' =>
array(
'uri' => '/res/c107d858/rsrc/js/javelin/lib/URI.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-stratcom',
),
'disk' => '/rsrc/js/javelin/lib/URI.js',
),
'javelin-util' =>
array(
'uri' => '/res/25786b6c/rsrc/js/javelin/core/util.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/js/javelin/core/util.js',
),
'javelin-vector' =>
array(
'uri' => '/res/f240bdb3/rsrc/js/javelin/lib/Vector.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-event',
),
'disk' => '/rsrc/js/javelin/lib/Vector.js',
),
'javelin-view' =>
array(
'uri' => '/res/b98657a7/rsrc/js/javelin/ext/view/View.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/ext/view/View.js',
),
'javelin-view-html' =>
array(
'uri' => '/res/7e5a2122/rsrc/js/javelin/ext/view/HTMLView.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
),
'disk' => '/rsrc/js/javelin/ext/view/HTMLView.js',
),
'javelin-view-interpreter' =>
array(
'uri' => '/res/17e911ca/rsrc/js/javelin/ext/view/ViewInterpreter.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-view',
1 => 'javelin-install',
),
'disk' => '/rsrc/js/javelin/ext/view/ViewInterpreter.js',
),
'javelin-view-renderer' =>
array(
'uri' => '/res/db4ed5a2/rsrc/js/javelin/ext/view/ViewRenderer.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/js/javelin/ext/view/ViewRenderer.js',
),
'javelin-view-visitor' =>
array(
'uri' => '/res/0ef9dc43/rsrc/js/javelin/ext/view/ViewVisitor.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
),
'disk' => '/rsrc/js/javelin/ext/view/ViewVisitor.js',
),
'javelin-workflow' =>
array(
'uri' => '/res/1535e366/rsrc/js/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/js/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/68c7863e/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/b3930263/rsrc/css/application/maniphest/task-summary.css',
+ '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/0a9b3dee/rsrc/js/application/core/MultirowRowManager.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-stratcom',
2 => 'javelin-dom',
3 => 'javelin-util',
),
'disk' => '/rsrc/js/application/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/4fcaabf6/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-list-view-css' =>
array(
'uri' => '/res/7a67c3b9/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/b04e66e6/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/6ec372e1/rsrc/js/application/core/Busy.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/Busy.js',
),
'phabricator-chatlog-css' =>
array(
'uri' => '/res/f6631adc/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/4e6b94c8/rsrc/css/core/buttons.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/buttons.css',
),
'phabricator-core-css' =>
array(
'uri' => '/res/9df0488c/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/4f15b2ae/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/ce71f19a/rsrc/js/application/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/application/core/DragAndDropFileUpload.js',
),
'phabricator-dropdown-menu' =>
array(
'uri' => '/res/2b4aa4d8/rsrc/js/application/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/application/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/94a04b24/rsrc/css/application/feed/feed.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/feed/feed.css',
),
'phabricator-file-upload' =>
array(
'uri' => '/res/2de10295/rsrc/js/application/core/FileUpload.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
2 => 'phabricator-notification',
),
'disk' => '/rsrc/js/application/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/2eee890a/rsrc/css/application/flag/flag.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/flag/flag.css',
),
'phabricator-form-view-css' =>
array(
'uri' => '/res/676b1ad2/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-jump-nav' =>
array(
'uri' => '/res/2e0e2211/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/beed38cd/rsrc/js/application/core/KeyboardShortcut.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'phabricator-keyboard-shortcut-manager',
),
'disk' => '/rsrc/js/application/core/KeyboardShortcut.js',
),
'phabricator-keyboard-shortcut-manager' =>
array(
'uri' => '/res/d0bee7c7/rsrc/js/application/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/application/core/KeyboardShortcutManager.js',
),
'phabricator-main-menu-view' =>
array(
'uri' => '/res/401e9389/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/32fc2325/rsrc/js/application/core/DropdownMenuItem.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/core/DropdownMenuItem.js',
),
'phabricator-nav-view-css' =>
array(
'uri' => '/res/fb026f2e/rsrc/css/aphront/phabricator-nav-view.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/aphront/phabricator-nav-view.css',
),
'phabricator-notification' =>
array(
'uri' => '/res/ad727561/rsrc/js/application/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/application/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/aa09c531/rsrc/css/layout/phabricator-object-item-list-view.css',
+ 'uri' => '/res/7d35d590/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/7eb4c705/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-paste-file-upload' =>
array(
'uri' => '/res/b0b8afd8/rsrc/js/application/core/PasteFileUpload.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-request',
3 => 'javelin-dom',
4 => 'javelin-uri',
),
'disk' => '/rsrc/js/application/core/PasteFileUpload.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/2734e45f/rsrc/js/application/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/application/core/Prefab.js',
),
'phabricator-profile-css' =>
array(
'uri' => '/res/9869d10b/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/4b1cb23b/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/a53fa430/rsrc/css/core/remarkup.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/remarkup.css',
),
'phabricator-search-results-css' =>
array(
'uri' => '/res/f8a86e27/rsrc/css/application/search/search-results.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/search/search-results.css',
),
'phabricator-shaped-request' =>
array(
'uri' => '/res/fbdb92db/rsrc/js/application/core/ShapedRequest.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-request',
),
'disk' => '/rsrc/js/application/core/ShapedRequest.js',
),
'phabricator-side-menu-view-css' =>
array(
'uri' => '/res/28a1e092/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/94d20443/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/703614ea/rsrc/js/application/core/TextAreaUtils.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
),
'disk' => '/rsrc/js/application/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/55d76b9b/rsrc/js/application/core/ToolTip.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-util',
2 => 'javelin-dom',
3 => 'javelin-vector',
),
'disk' => '/rsrc/js/application/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/a2ce2cfc/rsrc/js/application/uiexample/JavelinViewExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
),
'disk' => '/rsrc/js/application/uiexample/JavelinViewExample.js',
),
'phabricator-uiexample-reactor-button' =>
array(
'uri' => '/res/142127f6/rsrc/js/application/uiexample/ReactorButtonExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorButtonExample.js',
),
'phabricator-uiexample-reactor-checkbox' =>
array(
'uri' => '/res/c75cb9e9/rsrc/js/application/uiexample/ReactorCheckboxExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorCheckboxExample.js',
),
'phabricator-uiexample-reactor-focus' =>
array(
'uri' => '/res/3cc992eb/rsrc/js/application/uiexample/ReactorFocusExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorFocusExample.js',
),
'phabricator-uiexample-reactor-input' =>
array(
'uri' => '/res/4953da16/rsrc/js/application/uiexample/ReactorInputExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
5 => 'javelin-view-html',
6 => 'javelin-view-interpreter',
7 => 'javelin-view-renderer',
),
'disk' => '/rsrc/js/application/uiexample/ReactorInputExample.js',
),
'phabricator-uiexample-reactor-mouseover' =>
array(
'uri' => '/res/52a355b6/rsrc/js/application/uiexample/ReactorMouseoverExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorMouseoverExample.js',
),
'phabricator-uiexample-reactor-radio' =>
array(
'uri' => '/res/ae87f3af/rsrc/js/application/uiexample/ReactorRadioExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorRadioExample.js',
),
'phabricator-uiexample-reactor-select' =>
array(
'uri' => '/res/23cb448a/rsrc/js/application/uiexample/ReactorSelectExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorSelectExample.js',
),
'phabricator-uiexample-reactor-sendclass' =>
array(
'uri' => '/res/8cd34264/rsrc/js/application/uiexample/ReactorSendClassExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorSendClassExample.js',
),
'phabricator-uiexample-reactor-sendproperties' =>
array(
'uri' => '/res/18af54aa/rsrc/js/application/uiexample/ReactorSendPropertiesExample.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-install',
1 => 'javelin-view',
2 => 'javelin-util',
3 => 'javelin-dom',
4 => 'javelin-reactor-dom',
),
'disk' => '/rsrc/js/application/uiexample/ReactorSendPropertiesExample.js',
),
'phabricator-zindex-css' =>
array(
'uri' => '/res/fcbf82ad/rsrc/css/core/z-index.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/core/z-index.css',
),
'phame-css' =>
array(
'uri' => '/res/8e3edb71/rsrc/css/application/phame/phame.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/phame/phame.css',
),
'pholio-css' =>
array(
'uri' => '/res/b03fae38/rsrc/css/application/pholio/pholio.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/pholio/pholio.css',
),
'pholio-inline-comments-css' =>
array(
'uri' => '/res/8fe0edc7/rsrc/css/application/pholio/pholio-inline-comments.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/pholio/pholio-inline-comments.css',
),
'phriction-document-css' =>
array(
'uri' => '/res/e71e4a67/rsrc/css/application/phriction/phriction-document-css.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/phriction/phriction-document-css.css',
),
'ponder-comment-table-css' =>
array(
'uri' => '/res/a1bb9056/rsrc/css/application/ponder/comments.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/ponder/comments.css',
),
'ponder-core-view-css' =>
array(
'uri' => '/res/3a2d5e18/rsrc/css/application/ponder/core.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/ponder/core.css',
),
'ponder-feed-view-css' =>
array(
'uri' => '/res/df22bd20/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/ea8316c2/rsrc/css/application/ponder/vote.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/ponder/vote.css',
),
'raphael-core' =>
array(
'uri' => '/res/3f48575a/rsrc/js/raphael/raphael.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/js/raphael/raphael.js',
),
'raphael-g' =>
array(
'uri' => '/res/b07e5245/rsrc/js/raphael/g.raphael.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/js/raphael/g.raphael.js',
),
'raphael-g-line' =>
array(
'uri' => '/res/a59c8556/rsrc/js/raphael/g.raphael.line.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/js/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',
),
'sprite-apps-css' =>
array(
'uri' => '/res/c53973fc/rsrc/css/sprite-apps.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-apps.css',
),
'sprite-apps-large-css' =>
array(
'uri' => '/res/c3a8c579/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/e62e7a0f/rsrc/css/sprite-gradient.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-gradient.css',
),
'sprite-icon-css' =>
array(
'uri' => '/res/e7d63fcf/rsrc/css/sprite-icon.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-icon.css',
),
'sprite-menu-css' =>
array(
'uri' => '/res/e4e428f9/rsrc/css/sprite-menu.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-menu.css',
),
'sprite-tokens-css' =>
array(
'uri' => '/res/9ae0de5b/rsrc/css/sprite-tokens.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/sprite-tokens.css',
),
'stripe-core' =>
array(
'uri' => '/res/3b0f0ad4/rsrc/js/stripe/stripe_core.js',
'type' => 'js',
'requires' =>
array(
),
'disk' => '/rsrc/js/stripe/stripe_core.js',
),
'stripe-payment-form-css' =>
array(
'uri' => '/res/634a6371/rsrc/css/application/phortune/stripe-payment-form.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/phortune/stripe-payment-form.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/6b3c65c7/rsrc/css/application/tokens/tokens.css',
'type' => 'css',
'requires' =>
array(
),
'disk' => '/rsrc/css/application/tokens/tokens.css',
),
), array(
'packages' =>
array(
- '6c294512' =>
+ 'a56848af' =>
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-icon-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',
),
- 'uri' => '/res/pkg/6c294512/core.pkg.css',
+ 'uri' => '/res/pkg/a56848af/core.pkg.css',
'type' => 'css',
),
'95ceba95' =>
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-paste-file-upload',
10 => 'phabricator-menu-item',
11 => 'phabricator-dropdown-menu',
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',
),
'uri' => '/res/pkg/95ceba95/core.pkg.js',
'type' => 'js',
),
'dca4a03d' =>
array(
'name' => 'darkconsole.pkg.js',
'symbols' =>
array(
0 => 'javelin-behavior-dark-console',
1 => 'javelin-behavior-error-log',
),
'uri' => '/res/pkg/dca4a03d/darkconsole.pkg.js',
'type' => 'js',
),
'8aaacd1b' =>
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/8aaacd1b/differential.pkg.css',
'type' => 'css',
),
'322728f3' =>
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/322728f3/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',
),
'f96657b8' =>
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/f96657b8/diffusion.pkg.js',
'type' => 'js',
),
'fe22443b' =>
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',
),
'uri' => '/res/pkg/fe22443b/javelin.pkg.js',
'type' => 'js',
),
- 'c41b4907' =>
+ '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/c41b4907/maniphest.pkg.css',
+ 'uri' => '/res/pkg/6b1fccc6/maniphest.pkg.css',
'type' => 'css',
),
- '7707de41' =>
+ 'f85eb6d8' =>
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/7707de41/maniphest.pkg.js',
+ 'uri' => '/res/pkg/f85eb6d8/maniphest.pkg.js',
'type' => 'js',
),
),
'reverse' =>
array(
- 'aphront-attached-file-view-css' => 'c41b4907',
- 'aphront-dialog-view-css' => '6c294512',
- 'aphront-error-view-css' => '6c294512',
- 'aphront-form-view-css' => '6c294512',
- 'aphront-list-filter-view-css' => '6c294512',
- 'aphront-pager-view-css' => '6c294512',
- 'aphront-panel-view-css' => '6c294512',
- 'aphront-table-view-css' => '6c294512',
- 'aphront-tokenizer-control-css' => '6c294512',
- 'aphront-tooltip-css' => '6c294512',
- 'aphront-typeahead-control-css' => '6c294512',
+ 'aphront-attached-file-view-css' => '6b1fccc6',
+ 'aphront-dialog-view-css' => 'a56848af',
+ 'aphront-error-view-css' => 'a56848af',
+ 'aphront-form-view-css' => 'a56848af',
+ 'aphront-list-filter-view-css' => 'a56848af',
+ 'aphront-pager-view-css' => 'a56848af',
+ 'aphront-panel-view-css' => 'a56848af',
+ 'aphront-table-view-css' => 'a56848af',
+ 'aphront-tokenizer-control-css' => 'a56848af',
+ 'aphront-tooltip-css' => 'a56848af',
+ 'aphront-typeahead-control-css' => 'a56848af',
'differential-changeset-view-css' => '8aaacd1b',
'differential-core-view-css' => '8aaacd1b',
'differential-inline-comment-editor' => '322728f3',
'differential-local-commits-view-css' => '8aaacd1b',
'differential-results-table-css' => '8aaacd1b',
'differential-revision-add-comment-css' => '8aaacd1b',
'differential-revision-comment-css' => '8aaacd1b',
'differential-revision-comment-list-css' => '8aaacd1b',
'differential-revision-history-css' => '8aaacd1b',
'differential-revision-list-css' => '8aaacd1b',
'differential-table-of-contents-css' => '8aaacd1b',
'diffusion-commit-view-css' => 'c8ce2d88',
'diffusion-icons-css' => 'c8ce2d88',
- 'global-drag-and-drop-css' => '6c294512',
+ 'global-drag-and-drop-css' => 'a56848af',
'inline-comment-summary-css' => '8aaacd1b',
'javelin-aphlict' => '95ceba95',
'javelin-behavior' => 'fe22443b',
'javelin-behavior-aphlict-dropdown' => '95ceba95',
'javelin-behavior-aphlict-listen' => '95ceba95',
'javelin-behavior-aphront-basic-tokenizer' => '95ceba95',
'javelin-behavior-aphront-drag-and-drop' => '322728f3',
'javelin-behavior-aphront-drag-and-drop-textarea' => '322728f3',
'javelin-behavior-aphront-form-disable-on-submit' => '95ceba95',
'javelin-behavior-audit-preview' => 'f96657b8',
'javelin-behavior-dark-console' => 'dca4a03d',
'javelin-behavior-device' => '95ceba95',
'javelin-behavior-differential-accept-with-errors' => '322728f3',
'javelin-behavior-differential-add-reviewers-and-ccs' => '322728f3',
'javelin-behavior-differential-comment-jump' => '322728f3',
'javelin-behavior-differential-diff-radios' => '322728f3',
'javelin-behavior-differential-dropdown-menus' => '322728f3',
'javelin-behavior-differential-edit-inline-comments' => '322728f3',
'javelin-behavior-differential-feedback-preview' => '322728f3',
'javelin-behavior-differential-keyboard-navigation' => '322728f3',
'javelin-behavior-differential-populate' => '322728f3',
'javelin-behavior-differential-show-more' => '322728f3',
'javelin-behavior-differential-toggle-files' => '322728f3',
'javelin-behavior-differential-user-select' => '322728f3',
'javelin-behavior-diffusion-commit-graph' => 'f96657b8',
'javelin-behavior-diffusion-pull-lastmodified' => 'f96657b8',
'javelin-behavior-error-log' => 'dca4a03d',
'javelin-behavior-global-drag-and-drop' => '95ceba95',
'javelin-behavior-history-install' => '95ceba95',
'javelin-behavior-konami' => '95ceba95',
'javelin-behavior-lightbox-attachments' => '95ceba95',
'javelin-behavior-load-blame' => '322728f3',
- 'javelin-behavior-maniphest-batch-selector' => '7707de41',
- 'javelin-behavior-maniphest-subpriority-editor' => '7707de41',
- 'javelin-behavior-maniphest-transaction-controls' => '7707de41',
- 'javelin-behavior-maniphest-transaction-expand' => '7707de41',
- 'javelin-behavior-maniphest-transaction-preview' => '7707de41',
+ 'javelin-behavior-maniphest-batch-selector' => 'f85eb6d8',
+ 'javelin-behavior-maniphest-subpriority-editor' => 'f85eb6d8',
+ 'javelin-behavior-maniphest-transaction-controls' => 'f85eb6d8',
+ 'javelin-behavior-maniphest-transaction-expand' => 'f85eb6d8',
+ 'javelin-behavior-maniphest-transaction-preview' => 'f85eb6d8',
'javelin-behavior-phabricator-active-nav' => '95ceba95',
'javelin-behavior-phabricator-autofocus' => '95ceba95',
'javelin-behavior-phabricator-gesture' => '95ceba95',
'javelin-behavior-phabricator-keyboard-shortcuts' => '95ceba95',
'javelin-behavior-phabricator-nav' => '95ceba95',
'javelin-behavior-phabricator-object-selector' => '322728f3',
'javelin-behavior-phabricator-oncopy' => '95ceba95',
'javelin-behavior-phabricator-remarkup-assist' => '95ceba95',
'javelin-behavior-phabricator-reveal-content' => '95ceba95',
'javelin-behavior-phabricator-search-typeahead' => '95ceba95',
'javelin-behavior-phabricator-tooltips' => '95ceba95',
'javelin-behavior-phabricator-watch-anchor' => '95ceba95',
'javelin-behavior-refresh-csrf' => '95ceba95',
'javelin-behavior-repository-crossreference' => '322728f3',
'javelin-behavior-toggle-class' => '95ceba95',
'javelin-behavior-workflow' => '95ceba95',
'javelin-dom' => 'fe22443b',
'javelin-event' => 'fe22443b',
'javelin-install' => 'fe22443b',
'javelin-json' => 'fe22443b',
'javelin-mask' => 'fe22443b',
'javelin-request' => 'fe22443b',
'javelin-resource' => 'fe22443b',
'javelin-stratcom' => 'fe22443b',
'javelin-tokenizer' => 'fe22443b',
'javelin-typeahead' => 'fe22443b',
'javelin-typeahead-normalizer' => 'fe22443b',
'javelin-typeahead-ondemand-source' => 'fe22443b',
'javelin-typeahead-preloaded-source' => 'fe22443b',
'javelin-typeahead-source' => 'fe22443b',
'javelin-uri' => 'fe22443b',
'javelin-util' => 'fe22443b',
'javelin-vector' => 'fe22443b',
'javelin-workflow' => 'fe22443b',
- 'lightbox-attachment-css' => '6c294512',
- 'maniphest-task-summary-css' => 'c41b4907',
- 'maniphest-transaction-detail-css' => 'c41b4907',
+ 'lightbox-attachment-css' => 'a56848af',
+ 'maniphest-task-summary-css' => '6b1fccc6',
+ 'maniphest-transaction-detail-css' => '6b1fccc6',
'phabricator-busy' => '95ceba95',
'phabricator-content-source-view-css' => '8aaacd1b',
- 'phabricator-core-buttons-css' => '6c294512',
- 'phabricator-core-css' => '6c294512',
- 'phabricator-crumbs-view-css' => '6c294512',
- 'phabricator-directory-css' => '6c294512',
+ 'phabricator-core-buttons-css' => 'a56848af',
+ 'phabricator-core-css' => 'a56848af',
+ 'phabricator-crumbs-view-css' => 'a56848af',
+ 'phabricator-directory-css' => 'a56848af',
'phabricator-drag-and-drop-file-upload' => '322728f3',
'phabricator-dropdown-menu' => '95ceba95',
'phabricator-file-upload' => '95ceba95',
- 'phabricator-filetree-view-css' => '6c294512',
- 'phabricator-flag-css' => '6c294512',
- 'phabricator-form-view-css' => '6c294512',
- 'phabricator-header-view-css' => '6c294512',
- 'phabricator-jump-nav' => '6c294512',
+ 'phabricator-filetree-view-css' => 'a56848af',
+ 'phabricator-flag-css' => 'a56848af',
+ 'phabricator-form-view-css' => 'a56848af',
+ 'phabricator-header-view-css' => 'a56848af',
+ 'phabricator-jump-nav' => 'a56848af',
'phabricator-keyboard-shortcut' => '95ceba95',
'phabricator-keyboard-shortcut-manager' => '95ceba95',
- 'phabricator-main-menu-view' => '6c294512',
+ 'phabricator-main-menu-view' => 'a56848af',
'phabricator-menu-item' => '95ceba95',
- 'phabricator-nav-view-css' => '6c294512',
+ 'phabricator-nav-view-css' => 'a56848af',
'phabricator-notification' => '95ceba95',
- 'phabricator-notification-css' => '6c294512',
- 'phabricator-notification-menu-css' => '6c294512',
- 'phabricator-object-item-list-view-css' => '6c294512',
+ 'phabricator-notification-css' => 'a56848af',
+ 'phabricator-notification-menu-css' => 'a56848af',
+ 'phabricator-object-item-list-view-css' => 'a56848af',
'phabricator-object-selector-css' => '8aaacd1b',
'phabricator-paste-file-upload' => '95ceba95',
'phabricator-prefab' => '95ceba95',
- 'phabricator-project-tag-css' => 'c41b4907',
- 'phabricator-remarkup-css' => '6c294512',
+ 'phabricator-project-tag-css' => '6b1fccc6',
+ 'phabricator-remarkup-css' => 'a56848af',
'phabricator-shaped-request' => '322728f3',
- 'phabricator-side-menu-view-css' => '6c294512',
- 'phabricator-standard-page-view' => '6c294512',
+ 'phabricator-side-menu-view-css' => 'a56848af',
+ 'phabricator-standard-page-view' => 'a56848af',
'phabricator-textareautils' => '95ceba95',
'phabricator-tooltip' => '95ceba95',
- 'phabricator-transaction-view-css' => '6c294512',
- 'phabricator-zindex-css' => '6c294512',
- 'sprite-apps-large-css' => '6c294512',
- 'sprite-gradient-css' => '6c294512',
- 'sprite-icon-css' => '6c294512',
- 'sprite-menu-css' => '6c294512',
- 'syntax-highlighting-css' => '6c294512',
+ 'phabricator-transaction-view-css' => 'a56848af',
+ 'phabricator-zindex-css' => 'a56848af',
+ 'sprite-apps-large-css' => 'a56848af',
+ 'sprite-gradient-css' => 'a56848af',
+ 'sprite-icon-css' => 'a56848af',
+ 'sprite-menu-css' => 'a56848af',
+ 'syntax-highlighting-css' => 'a56848af',
),
));
diff --git a/src/applications/maniphest/controller/ManiphestSubpriorityController.php b/src/applications/maniphest/controller/ManiphestSubpriorityController.php
index 07fa1e174d..4cbeb661c6 100644
--- a/src/applications/maniphest/controller/ManiphestSubpriorityController.php
+++ b/src/applications/maniphest/controller/ManiphestSubpriorityController.php
@@ -1,64 +1,76 @@
<?php
/**
* @group maniphest
*/
final class ManiphestSubpriorityController extends ManiphestController {
public function processRequest() {
$request = $this->getRequest();
+ $user = $request->getUser();
if (!$request->validateCSRF()) {
return new Aphront403Response();
}
$task = id(new ManiphestTask())->load($request->getInt('task'));
if (!$task) {
return new Aphront404Response();
}
if ($request->getInt('after')) {
$after_task = id(new ManiphestTask())->load($request->getInt('after'));
if (!$after_task) {
return new Aphront404Response();
}
$after_pri = $after_task->getPriority();
$after_sub = $after_task->getSubpriority();
} else {
$after_pri = $request->getInt('priority');
$after_sub = null;
}
$new_sub = ManiphestTransactionEditor::getNextSubpriority(
$after_pri,
$after_sub);
if ($after_pri != $task->getPriority()) {
$xaction = new ManiphestTransaction();
$xaction->setAuthorPHID($request->getUser()->getPHID());
// TODO: Content source?
$xaction->setTransactionType(ManiphestTransactionType::TYPE_PRIORITY);
$xaction->setNewValue($after_pri);
$editor = new ManiphestTransactionEditor();
$editor->setActor($request->getUser());
$editor->applyTransactions($task, array($xaction));
}
$task->setSubpriority($new_sub);
$task->save();
- $pri_class = ManiphestTaskSummaryView::getPriorityClass(
- $task->getPriority());
- $class = 'maniphest-task-handle maniphest-active-handle '.$pri_class;
+ $phids = $task->getProjectPHIDs();
+ if ($task->getOwnerPHID()) {
+ $phids[] = $task->getOwnerPHID();
+ }
+
+ $handles = id(new PhabricatorObjectHandleData($phids))
+ ->setViewer($user)
+ ->loadHandles();
- $response = array(
- 'className' => $class,
- );
+ $view = id(new ManiphestTaskListView())
+ ->setUser($user)
+ ->setShowSubpriorityControls(true)
+ ->setShowBatchControls(true)
+ ->setHandles($handles)
+ ->setTasks(array($task));
- return id(new AphrontAjaxResponse())->setContent($response);
+ return id(new AphrontAjaxResponse())->setContent(
+ array(
+ 'tasks' => $view,
+ ));
}
}
diff --git a/src/applications/maniphest/controller/ManiphestTaskListController.php b/src/applications/maniphest/controller/ManiphestTaskListController.php
index abceea780f..7fbb2bf339 100644
--- a/src/applications/maniphest/controller/ManiphestTaskListController.php
+++ b/src/applications/maniphest/controller/ManiphestTaskListController.php
@@ -1,937 +1,949 @@
<?php
/**
* @group maniphest
*/
final class ManiphestTaskListController extends ManiphestController {
const DEFAULT_PAGE_SIZE = 1000;
private $view;
public function willProcessRequest(array $data) {
$this->view = idx($data, 'view');
}
private function getArrToStrList($key) {
$arr = $this->getRequest()->getArr($key);
$arr = implode(',', $arr);
return nonempty($arr, null);
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
if ($request->isFormPost()) {
// Redirect to GET so URIs can be copy/pasted.
$task_ids = $request->getStr('set_tasks');
$task_ids = nonempty($task_ids, null);
$search_text = $request->getStr('set_search');
$min_priority = $request->getInt('set_lpriority');
$max_priority = $request->getInt('set_hpriority');
$uri = $request->getRequestURI()
->alter('users', $this->getArrToStrList('set_users'))
->alter('projects', $this->getArrToStrList('set_projects'))
->alter('aprojects', $this->getArrToStrList('set_aprojects'))
->alter('xprojects', $this->getArrToStrList('set_xprojects'))
->alter('owners', $this->getArrToStrList('set_owners'))
->alter('authors', $this->getArrToStrList('set_authors'))
->alter('lpriority', $min_priority)
->alter('hpriority', $max_priority)
->alter('tasks', $task_ids)
->alter('search', $search_text);
return id(new AphrontRedirectResponse())->setURI($uri);
}
$nav = $this->buildBaseSideNav();
$has_filter = array(
'action' => true,
'created' => true,
'subscribed' => true,
'triage' => true,
'projecttriage' => true,
'projectall' => true,
);
$query = null;
$key = $request->getStr('key');
if (!$key && !$this->view) {
if ($this->getDefaultQuery()) {
$key = $this->getDefaultQuery()->getQueryKey();
}
}
if ($key) {
$query = id(new PhabricatorSearchQuery())->loadOneWhere(
'queryKey = %s',
$key);
}
// If the user is running a saved query, load query parameters from that
// query. Otherwise, build a new query object from the HTTP request.
if ($query) {
$nav->selectFilter('Q:'.$query->getQueryKey(), 'custom');
$this->view = 'custom';
} else {
$this->view = $nav->selectFilter($this->view, 'action');
$query = $this->buildQueryFromRequest();
}
// Execute the query.
list($tasks, $handles, $total_count) = self::loadTasks(
$query,
$user);
// Extract information we need to render the filters from the query.
$search_text = $query->getParameter('fullTextSearch');
$user_phids = $query->getParameter('userPHIDs', array());
$task_ids = $query->getParameter('taskIDs', array());
$owner_phids = $query->getParameter('ownerPHIDs', array());
$author_phids = $query->getParameter('authorPHIDs', array());
$project_phids = $query->getParameter('projectPHIDs', array());
$any_project_phids = $query->getParameter(
'anyProjectPHIDs',
array());
$exclude_project_phids = $query->getParameter(
'excludeProjectPHIDs',
array());
$low_priority = $query->getParameter('lowPriority');
$high_priority = $query->getParameter('highPriority');
$page_size = $query->getParameter('limit');
$page = $query->getParameter('offset');
$q_status = $query->getParameter('status');
$q_group = $query->getParameter('group');
$q_order = $query->getParameter('order');
$form = id(new AphrontFormView())
->setUser($user)
->setNoShading(true)
->setAction(
$request->getRequestURI()
->alter('key', null)
->alter(
$this->getStatusRequestKey(),
$this->getStatusRequestValue($q_status))
->alter(
$this->getOrderRequestKey(),
$this->getOrderRequestValue($q_order))
->alter(
$this->getGroupRequestKey(),
$this->getGroupRequestValue($q_group)));
if (isset($has_filter[$this->view])) {
$tokens = array();
foreach ($user_phids as $phid) {
$tokens[$phid] = $handles[$phid]->getFullName();
}
$form->appendChild(
id(new AphrontFormTokenizerControl())
->setDatasource('/typeahead/common/searchowner/')
->setName('set_users')
->setLabel(pht('Users'))
->setValue($tokens));
}
if ($this->view == 'custom') {
$form->appendChild(
id(new AphrontFormTextControl())
->setName('set_search')
->setLabel(pht('Search'))
->setValue($search_text));
$form->appendChild(
id(new AphrontFormTextControl())
->setName('set_tasks')
->setLabel(pht('Task IDs'))
->setValue(join(',', $task_ids)));
$tokens = array();
foreach ($owner_phids as $phid) {
$tokens[$phid] = $handles[$phid]->getFullName();
}
$form->appendChild(
id(new AphrontFormTokenizerControl())
->setDatasource('/typeahead/common/searchowner/')
->setName('set_owners')
->setLabel(pht('Owners'))
->setValue($tokens));
$tokens = array();
foreach ($author_phids as $phid) {
$tokens[$phid] = $handles[$phid]->getFullName();
}
$form->appendChild(
id(new AphrontFormTokenizerControl())
->setDatasource('/typeahead/common/users/')
->setName('set_authors')
->setLabel(pht('Authors'))
->setValue($tokens));
}
$tokens = array();
foreach ($project_phids as $phid) {
$tokens[$phid] = $handles[$phid]->getFullName();
}
if ($this->view != 'projectall' && $this->view != 'projecttriage') {
$caption = null;
if ($this->view == 'custom') {
$caption = pht('Find tasks in ALL of these projects ("AND" query).');
}
$form->appendChild(
id(new AphrontFormTokenizerControl())
->setDatasource('/typeahead/common/searchproject/')
->setName('set_projects')
->setLabel(pht('Projects'))
->setCaption($caption)
->setValue($tokens));
}
if ($this->view == 'custom') {
$atokens = array();
foreach ($any_project_phids as $phid) {
$atokens[$phid] = $handles[$phid]->getFullName();
}
$form->appendChild(
id(new AphrontFormTokenizerControl())
->setDatasource('/typeahead/common/projects/')
->setName('set_aprojects')
->setLabel(pht('Any Projects'))
->setCaption(pht('Find tasks in ANY of these projects ("OR" query).'))
->setValue($atokens));
$tokens = array();
foreach ($exclude_project_phids as $phid) {
$tokens[$phid] = $handles[$phid]->getFullName();
}
$form->appendChild(
id(new AphrontFormTokenizerControl())
->setDatasource('/typeahead/common/projects/')
->setName('set_xprojects')
->setLabel(pht('Exclude Projects'))
->setCaption(pht('Find tasks NOT in any of these projects.'))
->setValue($tokens));
$priority = ManiphestTaskPriority::getLowestPriority();
if ($low_priority !== null) {
$priority = $low_priority;
}
$form->appendChild(
id(new AphrontFormSelectControl())
->setLabel(pht('Min Priority'))
->setName('set_lpriority')
->setValue($priority)
->setOptions(array_reverse(
ManiphestTaskPriority::getTaskPriorityMap(), true)));
$priority = ManiphestTaskPriority::getHighestPriority();
if ($high_priority !== null) {
$priority = $high_priority;
}
$form->appendChild(
id(new AphrontFormSelectControl())
->setLabel(pht('Max Priority'))
->setName('set_hpriority')
->setValue($priority)
->setOptions(ManiphestTaskPriority::getTaskPriorityMap()));
}
$form
->appendChild($this->renderStatusControl($q_status))
->appendChild($this->renderGroupControl($q_group))
->appendChild($this->renderOrderControl($q_order));
$submit = id(new AphrontFormSubmitControl())
->setValue(pht('Filter Tasks'));
// Only show "Save..." for novel queries which have some kind of query
// parameters set.
if ($this->view === 'custom'
&& empty($key)
&& $request->getRequestURI()->getQueryParams()) {
$submit->addCancelButton(
'/maniphest/custom/edit/?key='.$query->getQueryKey(),
pht('Save Custom Query...'));
}
$form->appendChild($submit);
$create_uri = new PhutilURI('/maniphest/task/create/');
if ($project_phids) {
// If we have project filters selected, use them as defaults for task
// creation.
$create_uri->setQueryParam('projects', implode(';', $project_phids));
}
$filter = new AphrontListFilterView();
if (empty($key)) {
$filter->appendChild($form);
}
$have_tasks = false;
foreach ($tasks as $group => $list) {
if (count($list)) {
$have_tasks = true;
break;
}
}
require_celerity_resource('maniphest-task-summary-css');
$list_container = new AphrontNullView();
$list_container->appendChild(hsprintf(
'<div class="maniphest-list-container">'));
if (!$have_tasks) {
$no_tasks = pht('No matching tasks.');
$list_container->appendChild(hsprintf(
'<h1 class="maniphest-task-group-header">'.
'%s'.
'</h1>',
$no_tasks));
$result_count = null;
} else {
$pager = new AphrontPagerView();
$pager->setURI($request->getRequestURI(), 'offset');
$pager->setPageSize($page_size);
$pager->setOffset($page);
$pager->setCount($total_count);
$cur = ($pager->getOffset() + 1);
$max = min($pager->getOffset() + $page_size, $total_count);
$tot = $total_count;
$results = pht('Displaying tasks %s - %s of %s.',
number_format($cur),
number_format($max),
number_format($tot));
$result_count = phutil_tag(
'div',
array(
'class' => 'maniphest-total-result-count'
),
$results);
$selector = new AphrontNullView();
$group = $query->getParameter('group');
$order = $query->getParameter('order');
$is_draggable =
($order == 'priority') &&
($group == 'none' || $group == 'priority');
$lists = array();
foreach ($tasks as $group => $list) {
$task_list = new ManiphestTaskListView();
$task_list->setShowBatchControls(true);
if ($is_draggable) {
$task_list->setShowSubpriorityControls(true);
}
$task_list->setUser($user);
$task_list->setTasks($list);
$task_list->setHandles($handles);
$count = number_format(count($list));
$header =
javelin_tag(
'h1',
array(
'class' => 'maniphest-task-group-header',
'sigil' => 'task-group',
'meta' => array(
'priority' => head($list)->getPriority(),
),
),
$group.' ('.$count.')');
$lists[] =
phutil_tag(
'div',
array(
'class' => 'maniphest-task-group'
),
array(
$header,
$task_list,
));
}
$selector->appendChild($lists);
$selector->appendChild($this->renderBatchEditor($query));
- $form_id = celerity_generate_unique_node_id();
- $selector = phabricator_form(
- $user,
- array(
- 'method' => 'POST',
- 'action' => '/maniphest/batch/',
- 'id' => $form_id,
- ),
- $selector->render());
-
$list_container->appendChild($selector);
$list_container->appendChild($pager);
Javelin::initBehavior(
'maniphest-subpriority-editor',
array(
- 'root' => $form_id,
'uri' => '/maniphest/subpriority/',
));
}
$nav->appendChild($filter);
$nav->appendChild($result_count);
$nav->appendChild($list_container);
$title = pht('Task List');
$crumbs = $this->buildApplicationCrumbs()
->addCrumb(
id(new PhabricatorCrumbView())
->setName($title))
->addAction(
id(new PhabricatorMenuItemView())
->setHref($this->getApplicationURI('/task/create/'))
->setName(pht('Create Task'))
->setIcon('create'));
$nav->setCrumbs($crumbs);
return $this->buildApplicationPage(
$nav,
array(
'title' => $title,
'device' => true,
'dust' => true,
));
}
public static function loadTasks(
PhabricatorSearchQuery $search_query,
PhabricatorUser $viewer) {
$any_project = false;
$search_text = $search_query->getParameter('fullTextSearch');
$user_phids = $search_query->getParameter('userPHIDs', array());
$task_ids = $search_query->getParameter('taskIDs', array());
$project_phids = $search_query->getParameter('projectPHIDs', array());
$any_project_phids = $search_query->getParameter(
'anyProjectPHIDs',
array());
$xproject_phids = $search_query->getParameter(
'excludeProjectPHIDs',
array());
$owner_phids = $search_query->getParameter('ownerPHIDs', array());
$author_phids = $search_query->getParameter('authorPHIDs', array());
$low_priority = $search_query->getParameter('lowPriority');
$low_priority = coalesce($low_priority,
ManiphestTaskPriority::getLowestPriority());
$high_priority = $search_query->getParameter('highPriority');
$high_priority = coalesce($high_priority,
ManiphestTaskPriority::getHighestPriority());
$query = new ManiphestTaskQuery();
$query->withTaskIDs($task_ids);
if ($project_phids) {
$query->withAllProjects($project_phids);
}
if ($xproject_phids) {
$query->withoutProjects($xproject_phids);
}
if ($any_project_phids) {
$query->withAnyProjects($any_project_phids);
}
if ($owner_phids) {
$query->withOwners($owner_phids);
}
if ($author_phids) {
$query->withAuthors($author_phids);
}
$status = $search_query->getParameter('status', 'all');
if (!empty($status['open']) && !empty($status['closed'])) {
$query->withStatus(ManiphestTaskQuery::STATUS_ANY);
} else if (!empty($status['open'])) {
$query->withStatus(ManiphestTaskQuery::STATUS_OPEN);
} else {
$query->withStatus(ManiphestTaskQuery::STATUS_CLOSED);
}
switch ($search_query->getParameter('view')) {
case 'action':
$query->withOwners($user_phids);
break;
case 'created':
$query->withAuthors($user_phids);
break;
case 'subscribed':
$query->withSubscribers($user_phids);
break;
case 'triage':
$query->withOwners($user_phids);
$query->withPriority(ManiphestTaskPriority::PRIORITY_TRIAGE);
break;
case 'alltriage':
$query->withPriority(ManiphestTaskPriority::PRIORITY_TRIAGE);
break;
case 'all':
break;
case 'projecttriage':
$query->withPriority(ManiphestTaskPriority::PRIORITY_TRIAGE);
break;
case 'projectall':
break;
case 'custom':
$query->withPrioritiesBetween($low_priority, $high_priority);
break;
}
$query->withFullTextSearch($search_text);
$order_map = array(
'priority' => ManiphestTaskQuery::ORDER_PRIORITY,
'created' => ManiphestTaskQuery::ORDER_CREATED,
'title' => ManiphestTaskQuery::ORDER_TITLE,
);
$query->setOrderBy(
idx(
$order_map,
$search_query->getParameter('order'),
ManiphestTaskQuery::ORDER_MODIFIED));
$group_map = array(
'priority' => ManiphestTaskQuery::GROUP_PRIORITY,
'owner' => ManiphestTaskQuery::GROUP_OWNER,
'status' => ManiphestTaskQuery::GROUP_STATUS,
'project' => ManiphestTaskQuery::GROUP_PROJECT,
);
$query->setGroupBy(
idx(
$group_map,
$search_query->getParameter('group'),
ManiphestTaskQuery::GROUP_NONE));
$query->setCalculateRows(true);
$query->setLimit($search_query->getParameter('limit'));
$query->setOffset($search_query->getParameter('offset'));
$data = $query->execute();
$total_row_count = $query->getRowCount();
$project_group_phids = array();
if ($search_query->getParameter('group') == 'project') {
foreach ($data as $task) {
foreach ($task->getProjectPHIDs() as $phid) {
$project_group_phids[] = $phid;
}
}
}
$handle_phids = mpull($data, 'getOwnerPHID');
$handle_phids = array_merge(
$handle_phids,
$project_phids,
$user_phids,
$xproject_phids,
$owner_phids,
$author_phids,
$project_group_phids,
$any_project_phids,
array_mergev(mpull($data, 'getProjectPHIDs')));
$handles = id(new PhabricatorObjectHandleData($handle_phids))
->setViewer($viewer)
->loadHandles();
switch ($search_query->getParameter('group')) {
case 'priority':
$data = mgroup($data, 'getPriority');
// If we have invalid priorities, they'll all map to "???". Merge
// arrays to prevent them from overwriting each other.
$out = array();
foreach ($data as $pri => $tasks) {
$out[ManiphestTaskPriority::getTaskPriorityName($pri)][] = $tasks;
}
foreach ($out as $pri => $tasks) {
$out[$pri] = array_mergev($tasks);
}
$data = $out;
break;
case 'status':
$data = mgroup($data, 'getStatus');
$out = array();
foreach ($data as $status => $tasks) {
$out[ManiphestTaskStatus::getTaskStatusFullName($status)] = $tasks;
}
$data = $out;
break;
case 'owner':
$data = mgroup($data, 'getOwnerPHID');
$out = array();
foreach ($data as $phid => $tasks) {
if ($phid) {
$out[$handles[$phid]->getFullName()] = $tasks;
} else {
$out['Unassigned'] = $tasks;
}
}
$data = $out;
ksort($data);
// Move "Unassigned" to the top of the list.
if (isset($data['Unassigned'])) {
$data = array('Unassigned' => $out['Unassigned']) + $out;
}
break;
case 'project':
$grouped = array();
foreach ($query->getGroupByProjectResults() as $project => $tasks) {
foreach ($tasks as $task) {
$group = $project ? $handles[$project]->getName() : 'No Project';
$grouped[$group][$task->getID()] = $task;
}
}
$data = $grouped;
ksort($data);
// Move "No Project" to the end of the list.
if (isset($data['No Project'])) {
$noproject = $data['No Project'];
unset($data['No Project']);
$data += array('No Project' => $noproject);
}
break;
default:
$data = array(
'Tasks' => $data,
);
break;
}
return array($data, $handles, $total_row_count);
}
private function renderBatchEditor(PhabricatorSearchQuery $search_query) {
+ $user = $this->getRequest()->getUser();
+
Javelin::initBehavior(
'maniphest-batch-selector',
array(
'selectAll' => 'batch-select-all',
'selectNone' => 'batch-select-none',
'submit' => 'batch-select-submit',
'status' => 'batch-select-status-cell',
+ 'idContainer' => 'batch-select-id-container',
+ 'formID' => 'batch-select-form',
));
$select_all = javelin_tag(
'a',
array(
'href' => '#',
'mustcapture' => true,
'class' => 'grey button',
'id' => 'batch-select-all',
),
pht('Select All'));
$select_none = javelin_tag(
'a',
array(
'href' => '#',
'mustcapture' => true,
'class' => 'grey button',
'id' => 'batch-select-none',
),
pht('Clear Selection'));
$submit = phutil_tag(
'button',
array(
'id' => 'batch-select-submit',
'disabled' => 'disabled',
'class' => 'disabled',
),
pht("Batch Edit Selected \xC2\xBB"));
$export = javelin_tag(
'a',
array(
'href' => '/maniphest/export/'.$search_query->getQueryKey().'/',
'class' => 'grey button',
),
pht('Export to Excel'));
- return hsprintf(
+ $hidden = phutil_tag(
+ 'div',
+ array(
+ 'id' => 'batch-select-id-container',
+ ),
+ '');
+
+ $editor = hsprintf(
'<div class="maniphest-batch-editor">'.
'<div class="batch-editor-header">%s</div>'.
'<table class="maniphest-batch-editor-layout">'.
'<tr>'.
'<td>%s%s</td>'.
'<td>%s</td>'.
'<td id="batch-select-status-cell">%s</td>'.
- '<td class="batch-select-submit-cell">%s</td>'.
+ '<td class="batch-select-submit-cell">%s%s</td>'.
'</tr>'.
'</table>'.
- '</table>',
+ '</div>',
pht('Batch Task Editor'),
$select_all,
$select_none,
$export,
- pht('0 Selected'),
- $submit);
+ '',
+ $submit,
+ $hidden);
+
+ $editor = phabricator_form(
+ $user,
+ array(
+ 'method' => 'POST',
+ 'action' => '/maniphest/batch/',
+ 'id' => 'batch-select-form',
+ ),
+ $editor);
+
+ return $editor;
}
private function buildQueryFromRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$status = $this->getStatusValueFromRequest();
$group = $this->getGroupValueFromRequest();
$order = $this->getOrderValueFromRequest();
$user_phids = $request->getStrList(
'users',
array($user->getPHID()));
if ($this->view == 'projecttriage' || $this->view == 'projectall') {
$projects = id(new PhabricatorProjectQuery())
->setViewer($user)
->withMemberPHIDs($user_phids)
->execute();
$any_project_phids = mpull($projects, 'getPHID');
} else {
$any_project_phids = $request->getStrList('aprojects');
}
$project_phids = $request->getStrList('projects');
$exclude_project_phids = $request->getStrList('xprojects');
$task_ids = $request->getStrList('tasks');
if ($task_ids) {
// We only need the integer portion of each task ID, so get rid of any
// non-numeric elements
$numeric_task_ids = array();
foreach ($task_ids as $task_id) {
$task_id = preg_replace('/\D+/', '', $task_id);
if (!empty($task_id)) {
$numeric_task_ids[] = $task_id;
}
}
if (empty($numeric_task_ids)) {
$numeric_task_ids = array(null);
}
$task_ids = $numeric_task_ids;
}
$owner_phids = $request->getStrList('owners');
$author_phids = $request->getStrList('authors');
$search_string = $request->getStr('search');
$low_priority = $request->getInt('lpriority');
$high_priority = $request->getInt('hpriority');
$page = $request->getInt('offset');
$page_size = self::DEFAULT_PAGE_SIZE;
$query = new PhabricatorSearchQuery();
$query->setQuery('<<maniphest>>');
$query->setParameters(
array(
'fullTextSearch' => $search_string,
'view' => $this->view,
'userPHIDs' => $user_phids,
'projectPHIDs' => $project_phids,
'anyProjectPHIDs' => $any_project_phids,
'excludeProjectPHIDs' => $exclude_project_phids,
'ownerPHIDs' => $owner_phids,
'authorPHIDs' => $author_phids,
'taskIDs' => $task_ids,
'lowPriority' => $low_priority,
'highPriority' => $high_priority,
'group' => $group,
'order' => $order,
'offset' => $page,
'limit' => $page_size,
'status' => $status,
));
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
$query->save();
unset($unguarded);
return $query;
}
/* -( Toggle Button Controls )---------------------------------------------
These are a giant mess since we have several different values: the request
key (GET param used in requests), the request value (short names used in
requests to keep URIs readable), and the query value (complex value stored in
the query).
*/
private function getStatusValueFromRequest() {
$map = $this->getStatusMap();
$val = $this->getRequest()->getStr($this->getStatusRequestKey());
return idx($map, $val, head($map));
}
private function getGroupValueFromRequest() {
$map = $this->getGroupMap();
$val = $this->getRequest()->getStr($this->getGroupRequestKey());
return idx($map, $val, head($map));
}
private function getOrderValueFromRequest() {
$map = $this->getOrderMap();
$val = $this->getRequest()->getStr($this->getOrderRequestKey());
return idx($map, $val, head($map));
}
private function getStatusRequestKey() {
return 's';
}
private function getGroupRequestKey() {
return 'g';
}
private function getOrderRequestKey() {
return 'o';
}
private function getStatusRequestValue($value) {
return array_search($value, $this->getStatusMap());
}
private function getGroupRequestValue($value) {
return array_search($value, $this->getGroupMap());
}
private function getOrderRequestValue($value) {
return array_search($value, $this->getOrderMap());
}
private function getStatusMap() {
return array(
'o' => array(
'open' => true,
),
'c' => array(
'closed' => true,
),
'oc' => array(
'open' => true,
'closed' => true,
),
);
}
private function getGroupMap() {
return array(
'p' => 'priority',
'o' => 'owner',
's' => 'status',
'j' => 'project',
'n' => 'none',
);
}
private function getOrderMap() {
return array(
'p' => 'priority',
'u' => 'updated',
'c' => 'created',
't' => 'title',
);
}
private function getStatusButtonMap() {
return array(
'o' => pht('Open'),
'c' => pht('Closed'),
'oc' => pht('All'),
);
}
private function getGroupButtonMap() {
return array(
'p' => pht('Priority'),
'o' => pht('Owner'),
's' => pht('Status'),
'j' => pht('Project'),
'n' => pht('None'),
);
}
private function getOrderButtonMap() {
return array(
'p' => pht('Priority'),
'u' => pht('Updated'),
'c' => pht('Created'),
't' => pht('Title'),
);
}
public function renderStatusControl($value) {
$request = $this->getRequest();
return id(new AphrontFormToggleButtonsControl())
->setLabel(pht('Status'))
->setValue($this->getStatusRequestValue($value))
->setBaseURI($request->getRequestURI(), $this->getStatusRequestKey())
->setButtons($this->getStatusButtonMap());
}
public function renderOrderControl($value) {
$request = $this->getRequest();
return id(new AphrontFormToggleButtonsControl())
->setLabel(pht('Order'))
->setValue($this->getOrderRequestValue($value))
->setBaseURI($request->getRequestURI(), $this->getOrderRequestKey())
->setButtons($this->getOrderButtonMap());
}
public function renderGroupControl($value) {
$request = $this->getRequest();
return id(new AphrontFormToggleButtonsControl())
->setLabel(pht('Group'))
->setValue($this->getGroupRequestValue($value))
->setBaseURI($request->getRequestURI(), $this->getGroupRequestKey())
->setButtons($this->getGroupButtonMap());
}
}
diff --git a/src/applications/maniphest/view/ManiphestTaskListView.php b/src/applications/maniphest/view/ManiphestTaskListView.php
index 556d460753..3862913d40 100644
--- a/src/applications/maniphest/view/ManiphestTaskListView.php
+++ b/src/applications/maniphest/view/ManiphestTaskListView.php
@@ -1,51 +1,106 @@
<?php
/**
* @group maniphest
*/
final class ManiphestTaskListView extends ManiphestView {
private $tasks;
private $handles;
private $showBatchControls;
private $showSubpriorityControls;
public function setTasks(array $tasks) {
assert_instances_of($tasks, 'ManiphestTask');
$this->tasks = $tasks;
return $this;
}
public function setHandles(array $handles) {
assert_instances_of($handles, 'PhabricatorObjectHandle');
$this->handles = $handles;
return $this;
}
public function setShowBatchControls($show_batch_controls) {
$this->showBatchControls = $show_batch_controls;
return $this;
}
public function setShowSubpriorityControls($show_subpriority_controls) {
$this->showSubpriorityControls = $show_subpriority_controls;
return $this;
}
public function render() {
+ $handles = $this->handles;
+
+ $list = new PhabricatorObjectItemListView();
+ $list->setCards(true);
+ $list->setFlush(true);
+
+ $status_map = ManiphestTaskStatus::getTaskStatusMap();
+ $color_map = array(
+ ManiphestTaskPriority::PRIORITY_UNBREAK_NOW => 'magenta',
+ ManiphestTaskPriority::PRIORITY_TRIAGE => 'violet',
+ ManiphestTaskPriority::PRIORITY_HIGH => 'red',
+ ManiphestTaskPriority::PRIORITY_NORMAL => 'orange',
+ ManiphestTaskPriority::PRIORITY_LOW => 'yellow',
+ ManiphestTaskPriority::PRIORITY_WISH => 'sky',
+ );
- $views = array();
foreach ($this->tasks as $task) {
- $view = new ManiphestTaskSummaryView();
- $view->setTask($task);
- $view->setShowBatchControls($this->showBatchControls);
- $view->setShowSubpriorityControls($this->showSubpriorityControls);
- $view->setUser($this->user);
- $view->setHandles($this->handles);
- $views[] = $view->render();
+ $item = new PhabricatorObjectItemView();
+ $item->setObjectName('T'.$task->getID());
+ $item->setHeader($task->getTitle());
+ $item->setHref('/T'.$task->getID());
+
+ if ($task->getOwnerPHID()) {
+ $owner = $handles[$task->getOwnerPHID()];
+ $item->addHandleIcon(
+ $owner,
+ pht('Assigned: %s', $owner->getName()));
+ }
+
+ $status = $task->getStatus();
+ if ($status != ManiphestTaskStatus::STATUS_OPEN) {
+ $item->addFootIcon(
+ ($status == ManiphestTaskStatus::STATUS_CLOSED_RESOLVED)
+ ? 'enable-white'
+ : 'delete-white',
+ idx($status_map, $status, 'Unknown'));
+ }
+
+ $item->setBarColor(idx($color_map, $task->getPriority(), 'grey'));
+
+ $item->addIcon(
+ 'none',
+ phabricator_datetime($task->getDateModified(), $this->getUser()));
+
+ if ($this->showSubpriorityControls) {
+ $item->setGrippable(true);
+ $item->addSigil('maniphest-task');
+ }
+
+ if ($task->getProjectPHIDs()) {
+ $projects_view = new ManiphestTaskProjectsView();
+ $projects_view->setHandles(
+ array_select_keys(
+ $handles,
+ $task->getProjectPHIDs()));
+
+ $item->addAttribute($projects_view);
+ }
+
+ $item->setMetadata(
+ array(
+ 'taskID' => $task->getID(),
+ ));
+
+ $list->addItem($item);
}
- return $views;
+ return $list;
}
}
diff --git a/src/applications/maniphest/view/ManiphestTaskSummaryView.php b/src/applications/maniphest/view/ManiphestTaskSummaryView.php
deleted file mode 100644
index bf0de2a01f..0000000000
--- a/src/applications/maniphest/view/ManiphestTaskSummaryView.php
+++ /dev/null
@@ -1,196 +0,0 @@
-<?php
-
-/**
- * @group maniphest
- */
-final class ManiphestTaskSummaryView extends ManiphestView {
-
- private $task;
- private $handles;
- private $showBatchControls;
- private $showSubpriorityControls;
-
- public function setTask(ManiphestTask $task) {
- $this->task = $task;
- return $this;
- }
-
- public function setHandles(array $handles) {
- assert_instances_of($handles, 'PhabricatorObjectHandle');
- $this->handles = $handles;
- return $this;
- }
-
- public function setShowBatchControls($show_batch_controls) {
- $this->showBatchControls = $show_batch_controls;
- return $this;
- }
-
- public function setShowSubpriorityControls($show_subpriority_controls) {
- $this->showSubpriorityControls = $show_subpriority_controls;
- return $this;
- }
-
- public static function getPriorityClass($priority) {
- $classes = array(
- ManiphestTaskPriority::PRIORITY_UNBREAK_NOW => 'pri-unbreak',
- ManiphestTaskPriority::PRIORITY_TRIAGE => 'pri-triage',
- ManiphestTaskPriority::PRIORITY_HIGH => 'pri-high',
- ManiphestTaskPriority::PRIORITY_NORMAL => 'pri-normal',
- ManiphestTaskPriority::PRIORITY_LOW => 'pri-low',
- ManiphestTaskPriority::PRIORITY_WISH => 'pri-wish',
- );
-
- return idx($classes, $priority);
- }
-
- public function render() {
-
- if (!$this->user) {
- throw new Exception("Call setUser() before rendering!");
- }
-
- $task = $this->task;
- $handles = $this->handles;
-
- require_celerity_resource('maniphest-task-summary-css');
-
- $pri_class = self::getPriorityClass($task->getPriority());
- $status_map = ManiphestTaskStatus::getTaskStatusMap();
-
- $batch = null;
- if ($this->showBatchControls) {
- $batch = phutil_tag(
- 'td',
- array(
- 'rowspan' => 2,
- 'class' => 'maniphest-task-batch',
- ),
- javelin_tag(
- 'input',
- array(
- 'type' => 'checkbox',
- 'name' => 'batch[]',
- 'value' => $task->getID(),
- 'sigil' => 'maniphest-batch',
- )));
- }
-
- $projects_view = new ManiphestTaskProjectsView();
- $projects_view->setHandles(
- array_select_keys(
- $this->handles,
- $task->getProjectPHIDs()));
-
- $control_class = null;
- $control_sigil = null;
- if ($this->showSubpriorityControls) {
- $control_class = 'maniphest-active-handle';
- $control_sigil = 'maniphest-task-handle';
- }
-
- $handle = javelin_tag(
- 'td',
- array(
- 'rowspan' => 2,
- 'class' => 'maniphest-task-handle '.$pri_class.' '.$control_class,
- 'sigil' => $control_sigil,
- ),
- '');
-
- $task_name = phutil_tag(
- 'span',
- array(
- 'class' => 'maniphest-task-name',
- ),
- phutil_tag(
- 'a',
- array(
- 'href' => '/T'.$task->getID(),
- ),
- $task->getTitle()));
-
- $task_updated = phutil_tag(
- 'span',
- array(
- 'class' => 'maniphest-task-updated',
- ),
- phabricator_date($task->getDateModified(), $this->user));
-
- $task_info = phutil_tag(
- 'td',
- array(
- 'colspan' => 2,
- 'class' => 'maniphest-task-number',
- ),
- array(
- 'T'.$task->getID(),
- $task_name,
- $task_updated,
- ));
-
- $owner = '';
- if ($task->getOwnerPHID()) {
- $owner = pht('Assigned to %s',
- $handles[$task->getOwnerPHID()]->renderLink());
- }
-
- $task_owner = phutil_tag(
- 'span',
- array(
- 'class' => 'maniphest-task-owner',
- ),
- $task->getOwnerPHID()
- ? $owner
- : phutil_tag('em', array(), pht('None')));
-
- $task_status = phutil_tag(
- 'td',
- array(
- 'class' => 'maniphest-task-status',
- ),
- array(
- idx($status_map, $task->getStatus(), pht('Unknown')),
- $task_owner,
- ));
-
- $task_projects = phutil_tag(
- 'td',
- array(
- 'class' => 'maniphest-task-projects',
- ),
- $projects_view->render());
-
- $row1 = phutil_tag(
- 'tr',
- array(),
- array(
- $handle,
- $batch,
- $task_info,
- ));
-
- $row2 = phutil_tag(
- 'tr',
- array(),
- array(
- $task_status,
- $task_projects,
- ));
-
- return javelin_tag(
- 'table',
- array(
- 'class' => 'maniphest-task-summary',
- 'sigil' => 'maniphest-task',
- 'meta' => array(
- 'taskID' => $task->getID(),
- ),
- ),
- array(
- $row1,
- $row2,
- ));
- }
-
-}
diff --git a/src/applications/project/controller/PhabricatorProjectProfileController.php b/src/applications/project/controller/PhabricatorProjectProfileController.php
index a4b22e6fdf..4c85607be2 100644
--- a/src/applications/project/controller/PhabricatorProjectProfileController.php
+++ b/src/applications/project/controller/PhabricatorProjectProfileController.php
@@ -1,295 +1,290 @@
<?php
final class PhabricatorProjectProfileController
extends PhabricatorProjectController {
private $id;
private $page;
private $project;
public function willProcessRequest(array $data) {
$this->id = idx($data, 'id');
$this->page = idx($data, 'page');
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$query = id(new PhabricatorProjectQuery())
->setViewer($user)
->withIDs(array($this->id));
if ($this->page == 'people') {
$query->needMembers(true);
}
$project = $query->executeOne();
$this->project = $project;
if (!$project) {
return new Aphront404Response();
}
$profile = $project->loadProfile();
if (!$profile) {
$profile = new PhabricatorProjectProfile();
}
$picture = $profile->loadProfileImageURI();
$nav_view = $this->buildLocalNavigation($project);
$this->page = $nav_view->selectFilter($this->page, 'dashboard');
require_celerity_resource('phabricator-profile-css');
switch ($this->page) {
case 'dashboard':
$content = $this->renderTasksPage($project, $profile);
$query = new PhabricatorFeedQuery();
$query->setFilterPHIDs(
array(
$project->getPHID(),
));
$query->setLimit(50);
$query->setViewer($this->getRequest()->getUser());
$stories = $query->execute();
$content = hsprintf('%s%s', $content, $this->renderStories($stories));
break;
case 'about':
$content = $this->renderAboutPage($project, $profile);
break;
case 'people':
$content = $this->renderPeoplePage($project, $profile);
break;
case 'feed':
$content = $this->renderFeedPage($project, $profile);
break;
default:
throw new Exception("Unimplemented filter '{$this->page}'.");
}
$header = new PhabricatorProfileHeaderView();
$header->setName($project->getName());
$header->setDescription(
phutil_utf8_shorten($profile->getBlurb(), 1024));
$header->setProfilePicture($picture);
$action = null;
if (!$project->isUserMember($user->getPHID())) {
$can_join = PhabricatorPolicyCapability::CAN_JOIN;
if (PhabricatorPolicyFilter::hasCapability($user, $project, $can_join)) {
$class = 'green';
} else {
$class = 'grey disabled';
}
$action = phabricator_form(
$user,
array(
'action' => '/project/update/'.$project->getID().'/join/',
'method' => 'post',
),
phutil_tag(
'button',
array(
'class' => $class,
),
pht('Join Project')));
} else {
$action = javelin_tag(
'a',
array(
'href' => '/project/update/'.$project->getID().'/leave/',
'sigil' => 'workflow',
'class' => 'grey button',
),
pht('Leave Project...'));
}
$header->addAction($action);
$nav_view->appendChild($header);
$content = hsprintf('<div style="padding: 1em;">%s</div>', $content);
$header->appendChild($content);
return $this->buildApplicationPage(
$nav_view,
array(
'title' => pht('%s Project', $project->getName()),
));
}
private function renderAboutPage(
PhabricatorProject $project,
PhabricatorProjectProfile $profile) {
$viewer = $this->getRequest()->getUser();
$blurb = $profile->getBlurb();
$blurb = phutil_escape_html_newlines($blurb);
$phids = array($project->getAuthorPHID());
$phids = array_unique($phids);
$handles = $this->loadViewerHandles($phids);
$timestamp = phabricator_datetime($project->getDateCreated(), $viewer);
$about = hsprintf(
'<div class="phabricator-profile-info-group">
<h1 class="phabricator-profile-info-header">About</h1>
<div class="phabricator-profile-info-pane">
<table class="phabricator-profile-info-table">
<tr>
<th>%s</th>
<td>%s</td>
</tr>
<tr>
<th>%s</th>
<td>%s</td>
</tr>
<tr>
<th>PHID</th>
<td>%s</td>
</tr>
<tr>
<th>%s</th>
<td>%s</td>
</tr>
</table>
</div>
</div>',
pht('Creator'),
$handles[$project->getAuthorPHID()]->renderLink(),
pht('Created'),
$timestamp,
$project->getPHID(),
pht('Blurb'),
$blurb);
return $about;
}
private function renderPeoplePage(
PhabricatorProject $project,
PhabricatorProjectProfile $profile) {
$member_phids = $project->getMemberPHIDs();
$handles = $this->loadViewerHandles($member_phids);
$affiliated = array();
foreach ($handles as $phids => $handle) {
$affiliated[] = phutil_tag('li', array(), $handle->renderLink());
}
if ($affiliated) {
$affiliated = phutil_tag('ul', array(), $affiliated);
} else {
$affiliated = hsprintf('<p><em>%s</em></p>', pht(
'No one is affiliated with this project.'));
}
return hsprintf(
'<div class="phabricator-profile-info-group">'.
'<h1 class="phabricator-profile-info-header">%s</h1>'.
'<div class="phabricator-profile-info-pane">%s</div>'.
'</div>',
pht('People'),
$affiliated);
}
private function renderFeedPage(
PhabricatorProject $project,
PhabricatorProjectProfile $profile) {
$query = new PhabricatorFeedQuery();
$query->setFilterPHIDs(array($project->getPHID()));
$query->setViewer($this->getRequest()->getUser());
$query->setLimit(100);
$stories = $query->execute();
if (!$stories) {
return pht('There are no stories about this project.');
}
return $this->renderStories($stories);
}
private function renderStories(array $stories) {
assert_instances_of($stories, 'PhabricatorFeedStory');
$builder = new PhabricatorFeedBuilder($stories);
$builder->setUser($this->getRequest()->getUser());
$view = $builder->buildView();
return hsprintf(
'<div class="phabricator-profile-info-group">'.
'<h1 class="phabricator-profile-info-header">%s</h1>'.
'<div class="phabricator-profile-info-pane">%s</div>'.
'</div>',
pht('Activity Feed'),
$view->render());
}
private function renderTasksPage(
PhabricatorProject $project,
PhabricatorProjectProfile $profile) {
+ $user = $this->getRequest()->getUser();
+
$query = id(new ManiphestTaskQuery())
->withAnyProjects(array($project->getPHID()))
->withStatus(ManiphestTaskQuery::STATUS_OPEN)
->setOrderBy(ManiphestTaskQuery::ORDER_PRIORITY)
->setLimit(10)
->setCalculateRows(true);
$tasks = $query->execute();
$count = $query->getRowCount();
$phids = mpull($tasks, 'getOwnerPHID');
+ $phids = array_merge(
+ $phids,
+ array_mergev(mpull($tasks, 'getProjectPHIDs')));
$phids = array_filter($phids);
$handles = $this->loadViewerHandles($phids);
- $task_views = array();
- foreach ($tasks as $task) {
- $view = id(new ManiphestTaskSummaryView())
- ->setTask($task)
- ->setHandles($handles)
- ->setUser($this->getRequest()->getUser());
- $task_views[] = $view->render();
- }
-
- if (empty($tasks)) {
- $task_views = phutil_tag('em', array(), pht('No open tasks.'));
- } else {
- $task_views = phutil_implode_html('', $task_views);
- }
+ $task_list = new ManiphestTaskListView();
+ $task_list->setUser($user);
+ $task_list->setTasks($tasks);
+ $task_list->setHandles($handles);
$open = number_format($count);
$more_link = phutil_tag(
'a',
array(
'href' => '/maniphest/view/all/?projects='.$project->getPHID(),
),
pht("View All Open Tasks \xC2\xBB"));
$content = hsprintf(
'<div class="phabricator-profile-info-group">
<h1 class="phabricator-profile-info-header">%s</h1>'.
'<div class="phabricator-profile-info-pane">'.
'%s'.
'<div class="phabricator-profile-info-pane-more-link">%s</div>'.
'</div>
</div>',
pht('Open Tasks (%s)', $open),
- $task_views,
+ $task_list,
$more_link);
return $content;
}
}
diff --git a/src/view/layout/PhabricatorObjectItemListView.php b/src/view/layout/PhabricatorObjectItemListView.php
index a88d46af2c..74b0dc233f 100644
--- a/src/view/layout/PhabricatorObjectItemListView.php
+++ b/src/view/layout/PhabricatorObjectItemListView.php
@@ -1,90 +1,99 @@
<?php
final class PhabricatorObjectItemListView extends AphrontView {
private $header;
private $items;
private $pager;
private $stackable;
private $cards;
private $noDataString;
+ private $flush;
+
+ public function setFlush($flush) {
+ $this->flush = $flush;
+ return $this;
+ }
public function setHeader($header) {
$this->header = $header;
return $this;
}
public function setPager($pager) {
$this->pager = $pager;
return $this;
}
public function setNoDataString($no_data_string) {
$this->noDataString = $no_data_string;
return $this;
}
public function addItem(PhabricatorObjectItemView $item) {
$this->items[] = $item;
return $this;
}
public function setStackable($stackable) {
$this->stackable = $stackable;
return $this;
}
public function setCards($cards) {
$this->cards = $cards;
return $this;
}
public function render() {
require_celerity_resource('phabricator-object-item-list-view-css');
$classes = array();
$header = null;
if (strlen($this->header)) {
$header = phutil_tag(
'h1',
array(
'class' => 'phabricator-object-item-list-header',
),
$this->header);
}
if ($this->items) {
$items = $this->items;
} else {
$string = nonempty($this->noDataString, pht('No data.'));
$items = id(new AphrontErrorView())
->setSeverity(AphrontErrorView::SEVERITY_NODATA)
->appendChild($string);
}
$pager = null;
if ($this->pager) {
$pager = $this->pager;
}
$classes[] = 'phabricator-object-item-list-view';
if ($this->stackable) {
$classes[] = 'phabricator-object-list-stackable';
}
if ($this->cards) {
$classes[] = 'phabricator-object-list-cards';
}
+ if ($this->flush) {
+ $classes[] = 'phabricator-object-list-flush';
+ }
return phutil_tag(
'ul',
array(
'class' => implode(' ', $classes),
),
array(
$header,
$items,
$pager,
));
}
}
diff --git a/src/view/layout/PhabricatorObjectItemView.php b/src/view/layout/PhabricatorObjectItemView.php
index 6423b10867..df5dfa1a70 100644
--- a/src/view/layout/PhabricatorObjectItemView.php
+++ b/src/view/layout/PhabricatorObjectItemView.php
@@ -1,365 +1,392 @@
<?php
-final class PhabricatorObjectItemView extends AphrontView {
+final class PhabricatorObjectItemView extends AphrontTagView {
private $objectName;
private $header;
private $href;
private $attributes = array();
private $icons = array();
private $barColor;
private $object;
private $effect;
private $footIcons = array();
private $handleIcons = array();
private $grippable;
public function setObjectName($name) {
$this->objectName = $name;
return $this;
}
public function setGrippable($grippable) {
$this->grippable = $grippable;
return $this;
}
public function getGrippable() {
return $this->grippable;
}
public function setEffect($effect) {
$this->effect = $effect;
return $this;
}
public function getEffect() {
return $this->effect;
}
public function setObject($object) {
$this->object = $object;
return $this;
}
public function getObject() {
return $this->object;
}
public function setHref($href) {
$this->href = $href;
return $this;
}
public function getHref() {
return $this->href;
}
public function setHeader($header) {
$this->header = $header;
return $this;
}
public function getHeader() {
return $this->header;
}
public function addIcon($icon, $label = null, $href = null) {
$this->icons[] = array(
'icon' => $icon,
'label' => $label,
'href' => $href,
);
return $this;
}
public function addFootIcon($icon, $label = null) {
$this->footIcons[] = array(
'icon' => $icon,
'label' => $label,
);
return $this;
}
public function addHandleIcon(
PhabricatorObjectHandle $handle,
$label = null) {
$this->handleIcons[] = array(
'icon' => $handle,
'label' => $label,
);
return $this;
}
public function setBarColor($bar_color) {
$this->barColor = $bar_color;
return $this;
}
public function getBarColor() {
return $this->barColor;
}
public function addAttribute($attribute) {
$this->attributes[] = $attribute;
return $this;
}
- public function render() {
- $content_classes = array();
+ protected function getTagName() {
+ return 'li';
+ }
+
+ protected function getTagAttributes() {
$item_classes = array();
+ $item_classes[] = 'phabricator-object-item';
+
+ if ($this->icons) {
+ $item_classes[] = 'phabricator-object-item-with-icons';
+ }
+
+ if ($this->attributes) {
+ $item_classes[] = 'phabricator-object-item-with-attrs';
+ }
+
+ if ($this->handleIcons) {
+ $item_classes[] = 'phabricator-object-item-with-handle-icons';
+ }
+
+ if ($this->barColor) {
+ $item_classes[] = 'phabricator-object-item-bar-color-'.$this->barColor;
+ }
+
+ if ($this->footIcons) {
+ $item_classes[] = 'phabricator-object-item-with-foot-icons';
+ }
+
+ switch ($this->effect) {
+ case 'highlighted':
+ $item_classes[] = 'phabricator-object-item-highlighted';
+ break;
+ case 'selected':
+ $item_classes[] = 'phabricator-object-item-selected';
+ break;
+ case null:
+ break;
+ default:
+ throw new Exception(pht("Invalid effect!"));
+ }
+
+ if ($this->getGrippable()) {
+ $item_classes[] = 'phabricator-object-item-grippable';
+ }
+
+ return array(
+ 'class' => $item_classes,
+ );
+ }
+
+ public function getTagContent() {
+ $content_classes = array();
$content_classes[] = 'phabricator-object-item-content';
$header_name = null;
if ($this->objectName) {
$header_name = array(
phutil_tag(
'span',
array(
'class' => 'phabricator-object-item-objname',
),
$this->objectName),
' ',
);
}
$header_link = phutil_tag(
$this->href ? 'a' : 'div',
array(
'href' => $this->href,
'class' => 'phabricator-object-item-link',
),
$this->header);
- $header = phutil_tag(
+ $header = javelin_tag(
'div',
array(
'class' => 'phabricator-object-item-name',
+ 'sigil' => 'slippery',
),
array(
$header_name,
$header_link,
));
$icons = array();
if ($this->icons) {
$icon_list = array();
foreach ($this->icons as $spec) {
$icon = $spec['icon'];
$icon = phutil_tag(
'span',
array(
'class' => 'phabricator-object-item-icon-image '.
'sprite-icon action-'.$icon,
),
'');
$label = phutil_tag(
'span',
array(
'class' => 'phabricator-object-item-icon-label',
),
$spec['label']);
-
if ($spec['href']) {
$icon_href = phutil_tag(
'a',
array('href' => $spec['href']),
array($label, $icon));
} else {
$icon_href = array($label, $icon);
}
+ $classes = array();
+ $classes[] = 'phabricator-object-item-icon';
+ if ($spec['icon'] == 'none') {
+ $classes[] = 'phabricator-object-item-icon-none';
+ }
+
$icon_list[] = phutil_tag(
'li',
array(
- 'class' => 'phabricator-object-item-icon',
+ 'class' => implode(' ', $classes),
),
$icon_href);
}
$icons[] = phutil_tag(
'ul',
array(
'class' => 'phabricator-object-item-icons',
),
$icon_list);
- $item_classes[] = 'phabricator-object-item-with-icons';
}
if ($this->handleIcons) {
$handle_bar = array();
foreach ($this->handleIcons as $icon) {
$handle_bar[] = $this->renderHandleIcon($icon['icon'], $icon['label']);
}
$icons[] = phutil_tag(
'div',
array(
'class' => 'phabricator-object-item-handle-icons',
),
$handle_bar);
- $item_classes[] = 'phabricator-object-item-with-handle-icons';
}
if ($icons) {
$icons = phutil_tag(
'div',
array(
'class' => 'phabricator-object-icon-pane',
),
$icons);
}
$attrs = null;
if ($this->attributes) {
$attrs = array();
$spacer = phutil_tag(
'span',
array(
'class' => 'phabricator-object-item-attribute-spacer',
),
"\xC2\xB7");
$first = true;
foreach ($this->attributes as $attribute) {
$attrs[] = phutil_tag(
'li',
array(
'class' => 'phabricator-object-item-attribute',
),
array(
($first ? null : $spacer),
$attribute,
));
$first = false;
}
$attrs = phutil_tag(
'ul',
array(
'class' => 'phabricator-object-item-attributes',
),
$attrs);
- $item_classes[] = 'phabricator-object-item-with-attrs';
}
$foot = null;
if ($this->footIcons) {
$foot_bar = array();
foreach ($this->footIcons as $icon) {
$foot_bar[] = $this->renderFootIcon($icon['icon'], $icon['label']);
}
$foot = phutil_tag(
'div',
array(
'class' => 'phabricator-object-item-foot-icons',
),
$foot_bar);
- $item_classes[] = 'phabricator-object-item-with-foot-icons';
- }
-
- $item_classes[] = 'phabricator-object-item';
- if ($this->barColor) {
- $item_classes[] = 'phabricator-object-item-bar-color-'.$this->barColor;
- }
-
- switch ($this->effect) {
- case 'highlighted':
- $item_classes[] = 'phabricator-object-item-highlighted';
- break;
- case 'selected':
- $item_classes[] = 'phabricator-object-item-selected';
- break;
- case null:
- break;
- default:
- throw new Exception(pht("Invalid effect!"));
}
$grippable = null;
if ($this->getGrippable()) {
- $item_classes[] = 'phabricator-object-item-grippable';
$grippable = phutil_tag(
'div',
array(
'class' => 'phabricator-object-item-grip',
),
'');
}
$content = phutil_tag(
'div',
array(
'class' => implode(' ', $content_classes),
),
array(
$header,
$attrs,
$this->renderChildren(),
$foot,
));
return phutil_tag(
- 'li',
+ 'div',
array(
- 'class' => implode(' ', $item_classes),
+ 'class' => 'phabricator-object-item-frame',
),
- phutil_tag(
- 'div',
- array(
- 'class' => 'phabricator-object-item-frame',
- ),
- array(
- $grippable,
- $icons,
- $content,
- )));
+ array(
+ $grippable,
+ $icons,
+ $content,
+ ));
}
private function renderFootIcon($icon, $label) {
require_celerity_resource('sprite-icon-css');
$icon = phutil_tag(
'span',
array(
'class' => 'sprite-icon action-'.$icon,
),
'');
$label = phutil_tag(
'span',
array(
),
$label);
return phutil_tag(
'span',
array(
'class' => 'phabricator-object-item-foot-icon',
),
array($icon, $label));
}
private function renderHandleIcon(PhabricatorObjectHandle $handle, $label) {
Javelin::initBehavior('phabricator-tooltips');
$options = array(
'class' => 'phabricator-object-item-handle-icon',
'style' => 'background: url('.$handle->getImageURI().')',
);
if (strlen($label)) {
$options['sigil'] = 'has-tooltip';
$options['meta'] = array('tip' => $label);
}
return javelin_tag(
'span',
$options,
'');
}
}
diff --git a/webroot/rsrc/css/application/maniphest/task-summary.css b/webroot/rsrc/css/application/maniphest/task-summary.css
index 4d0609d2c6..ddc881844e 100644
--- a/webroot/rsrc/css/application/maniphest/task-summary.css
+++ b/webroot/rsrc/css/application/maniphest/task-summary.css
@@ -1,210 +1,100 @@
/**
* @provides maniphest-task-summary-css
*/
-.maniphest-task-summary {
- width: 100%;
- margin: 0 0 -1px 0;
- border-collapse: separate;
- color: #333;
- border: 1px solid #c0c5d1;
-}
-
.maniphest-task-group {
padding-bottom: 30px;
}
-.maniphest-task-summary td {
- padding: 0 10px;
- background: #fff;
-}
-
-.maniphest-task-summary td em {
- color: #888888;
-}
-
.maniphest-batch-selected td {
background: #fff;
}
-.maniphest-task-summary .maniphest-task-handle {
- padding: 0 4px 0 0;
- width: 5px;
-}
-
-.maniphest-task-summary td.maniphest-task-batch {
- padding: 15px 4px 0 10px;
- width: 8px;
- text-align: center;
- overflow: hidden;
-}
-
.device-phone .maniphest-task-batch,
.device-phone .maniphest-task-updated {
display: none;
}
-.maniphest-task-summary td.maniphest-task-batch,
-.maniphest-task-summary td.maniphest-task-batch input {
- cursor: pointer;
-}
-
-.maniphest-task-summary td.maniphest-task-batch input {
- margin: 0;
-}
-
-.maniphest-task-summary td.maniphest-task-number {
- padding: 6px 0 2px 10px;
- font-weight: bold;
- color: #333;
-}
-
-.maniphest-task-summary td.maniphest-task-status {
- padding: 2px 10px 6px 10px;
- text-align: left;
- color: #777;
- font-size: 12px;
-}
-
-.maniphest-task-summary .maniphest-task-owner {
- padding-left: 20px;
-}
-
-.maniphest-task-summary .maniphest-task-name {
- font-weight: bold;
- overflow: hidden;
- margin-left: 5px;
-}
-
-.maniphest-task-summary td.maniphest-task-projects {
- text-align: right;
- padding: 0px 8px;
-}
-
-.maniphest-task-summary .maniphest-task-updated {
- float: right;
- padding: 0 8px;
- color: #777;
- font-size: 11px;
- font-weight: normal;
-}
-
-.maniphest-task-summary .pri-unbreak {
- border-color: #ff0000;
- background-color: #ff0000;
-}
-
-.maniphest-task-summary .pri-triage {
- border-color: #ee00ee;
- background-color: #ee00ee;
-}
-
-.maniphest-task-summary .pri-high {
- border-color: #ff6622;
- background-color: #ff6622;
-}
-
-.maniphest-task-summary .pri-normal {
- border-color: #ffaa66;
- background-color: #ffaa66;
-}
-
-.maniphest-task-summary .pri-low {
- border-color: #eecc66;
- background-color: #eecc66;
-}
-
-.maniphest-task-summary .pri-wish {
- border-color: #0099ff;
- background-color: #0099ff;
-}
-
.maniphest-task-group-header {
font-size: 16px;
font-weight: bold;
color: #555;
padding: 0 0 8px 0;
}
.maniphest-total-result-count {
text-align: right;
padding: 5px 20px 0 0;
font-size: 11px;
color: #777;
}
.device-phone .maniphest-total-result-count {
padding-right: 5px;
}
.batch-editor-header {
font-size: 16px;
color: #555;
padding: 8px 0px;
font-weight: bold;
}
/* TODO: Implement */
.device-phone .maniphest-batch-editor {
display: none;
}
.maniphest-batch-editor-layout {
width: 100%;
border-left: 1px solid #e7e7e7;
border-right: 1px solid #e7e7e7;
border-bottom: 1px solid #c0c5d1;
background: #fff;
}
.maniphest-batch-editor-layout td {
padding: 10px 8px;
white-space: nowrap;
}
.maniphest-batch-editor-layout a.button,
.maniphest-batch-editor-layout button {
margin: 0px 4px;
}
.maniphest-batch-editor-layout .batch-select-submit-cell {
text-align: right;
}
#batch-select-status-cell {
text-align: right;
color: #666666;
font-size: 11px;
vertical-align: middle;
width: 100%;
}
-td.maniphest-active-handle {
- cursor: move;
- background-image: url('/rsrc/image/grippy_texture.png');
- background-position: 3px 0px;
- background-repeat: repeat-y;
-}
-
.maniphest-subpriority-target {
position: relative;
border: 1px dashed #aaaaaa;
background: #f9f9f9;
+ margin: 4px;
}
.maniphest-task-loading {
- opacity: 0.5;
+ opacity: 0.75;
}
.maniphest-task-dragging {
position: relative;
- opacity: 0.5;
+ opacity: 0.90;
}
.maniphest-list-container {
padding: 20px;
}
.device-phone .maniphest-list-container {
padding: 20px 5px;
}
diff --git a/webroot/rsrc/css/layout/phabricator-object-item-list-view.css b/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
index f58329f84b..ca07e242b3 100644
--- a/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
+++ b/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
@@ -1,373 +1,373 @@
/**
* @provides phabricator-object-item-list-view-css
*/
.phabricator-object-item-list-view {
padding: 8px 6px;
}
.device-desktop .phabricator-object-item-list-view {
padding: 20px;
}
.device-desktop .phabricator-object-list-flush {
padding: 0;
}
.phabricator-object-item {
background: #ffffff;
border-style: solid;
border-color: #c0c5d1;
border-width: 0 0 0 3px;
margin: 5px 0;
overflow: hidden;
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.10);
}
.phabricator-object-item-frame {
border-style: solid;
border-color: #c0c5d1;
border-width: 1px 1px 1px 0;
overflow: hidden;
position: relative;
}
.device-desktop .phabricator-object-item {
margin: 0 0 5px 0;
}
.phabricator-object-item-name {
- display: block;
+ display: inline-block;
font-weight: bold;
font-size: 14px;
padding: 0 10px;
}
.phabricator-object-item-link {
display: inline-block;
padding: 8px 0;
}
-
.phabricator-object-item-objname {
color: #222222;
+ cursor: text;
}
.phabricator-object-item-with-attrs .phabricator-object-item-name {
padding-bottom: 2px;
}
.phabricator-object-item-content {
overflow: hidden;
}
.phabricator-object-item-grippable {
cursor: move;
}
.phabricator-object-item-grip {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 15px;
background: url(/rsrc/image/texture/grip.png) center center no-repeat;
}
.phabricator-object-item-grippable .phabricator-object-item-frame {
padding-left: 9px;
}
/* - Stackable List ------------------------------------------------------------
Tighter, stacking list.
*/
.phabricator-object-item-list-view.phabricator-object-list-stackable
.phabricator-object-item {
margin: -1px 0 0 0;
}
.phabricator-object-list-stackable .phabricator-object-item {
border-left-width: 1px;
}
.device-desktop .phabricator-object-list-stackable
.phabricator-object-item:hover {
background: #e9ecf5;
}
/* - Attribute List ------------------------------------------------------------
Object attributes, commonly used to render created date, etc.
*/
.phabricator-object-item-attributes {
padding: 0px 10px 8px;
}
.phabricator-object-item-attribute {
display: inline;
color: #777;
font-size: 13px;
}
.phabricator-object-item-attribute-spacer {
padding: 0 4px;
}
/* - Icons ---------------------------------------------------------------------
Icons, which show object state. On mobile, they are rendered without labels
to save space.
*/
.phabricator-object-icon-pane {
float: right;
}
.phabricator-object-item-with-handle-icons .phabricator-object-item-icons {
padding-bottom: 34px;
}
.phabricator-object-item-icons {
float: right;
padding: 6px 10px 0;
}
/* NOTE: The main content is an "overflow: hidden" div which we give a right
margin so it doesn't overlap the icons. The margin is slightly larger than
the width + padding of the icon div, so the icons have some space even if
the content is wider than available space. */
.device-desktop .phabricator-object-icon-pane {
width: 120px;
}
.device-desktop .phabricator-object-item-with-icons
.phabricator-object-item-content,
.device-desktop .phabricator-object-item-with-handle-icons
.phabricator-object-item-content {
margin-right: 132px;
}
.device .phabricator-object-item-icons {
width: 18px;
}
.device .phabricator-object-item-with-icons .phabricator-object-item-content,
.device .phabricator-object-item-with-handle-icons
.phabricator-object-item-content {
margin-right: 30px;
}
.device .phabricator-object-item-icon-label {
display: none;
}
.phabricator-object-item-icon {
vertical-align: middle;
position: relative;
font-size: 11px;
color: #666666;
text-align: right;
white-space: nowrap;
overflow: hidden;
min-height: 18px;
line-height: 18px;
}
.device-desktop .phabricator-object-item-icon {
padding-right: 22px;
}
.device-desktop .phabricator-object-item-icon-none {
padding-right: 0;
}
.phabricator-object-item-icon-image {
position: absolute;
right: 2px;
top: 2px;
width: 14px;
height: 14px;
}
/* - Bar Colors ----------------------------------------------------------------
Colors for the left-hand border bars, used to indicate object status or other
attributes.
*/
.phabricator-object-item-bar-color-red {
border-left-color: #cc0000;
}
.phabricator-object-item-bar-color-orange {
border-left-color: #cc7300;
}
.phabricator-object-item-bar-color-yellow {
border-left-color: #ccc000;
}
.phabricator-object-item-bar-color-green {
border-left-color: #009b2d;
}
.phabricator-object-item-bar-color-sky {
border-left-color: #6498cf;
}
.phabricator-object-item-bar-color-blue {
border-left-color: #00659a;
}
.phabricator-object-item-bar-color-indigo {
border-left-color: #3a00cc;
}
.phabricator-object-item-bar-color-violet {
border-left-color: #67009b;
}
.phabricator-object-item-bar-color-magenta {
border-left-color: #cc00c0;
}
.phabricator-object-item-bar-color-grey {
border-left-color: #999999;
}
.phabricator-object-item-bar-color-black {
border-left-color: #333333;
}
/* - Effects -------------------------------------------------------------------
Effects like highlighted items.
*/
.phabricator-object-item-highlighted {
background: #ffffb2;
}
.phabricator-object-item-selected {
background: #bfdcff;
}
/* - Foot Icons ----------------------------------------------------------------
Object counts shown in the footer.
*/
.phabricator-object-item-foot-icons {
margin-left: 10px;
bottom: 0;
position: absolute;
}
.phabricator-object-item-with-foot-icons .phabricator-object-item-content {
padding-bottom: 22px;
}
.phabricator-object-item-foot-icon {
display: inline-block;
background: #909090;
color: #ffffff;
font-weight: bold;
margin-right: 3px;
padding: 1px 4px 0 22px;
height: 19px;
vertical-align: middle;
position: relative;
}
.phabricator-object-item-foot-icon .sprite-icon {
width: 14px;
height: 14px;
position: absolute;
left: 4px;
top: 3px;
}
/* - Handle Icons --------------------------------------------------------------
Shows owners, reviewers, etc.
*/
.phabricator-object-item-handle-icons {
height: 28px;
margin-right: 10px;
bottom: 0;
right: 0;
text-align: right;
position: absolute;
}
.phabricator-object-item-handle-icon {
margin-left: 3px;
width: 28px;
height: 28px;
display: inline-block;
background: #f3f3f3;
background-size: 28px 28px;
background-repeat: no-repeat;
}
/* - Card List -----------------------------------------------------------------
Rounded card list.
*/
/* Hard to sprite since we can't have other sprites appearing in tall cells */
.phabricator-object-list-cards .phabricator-object-item {
border-radius: 3px;
border-left-width: 4px;
background: #e8e8e8 url('/rsrc/image/texture/card-gradient.png') repeat-x;
}
.phabricator-object-list-cards .phabricator-object-item-name {
font-size: 13px;
}
.phabricator-object-list-cards .phabricator-object-item-link {
white-space: nowrap;
padding: 6px 0;
}
.phabricator-object-list-cards .phabricator-object-item-with-attrs
.phabricator-object-item-name {
padding: 4px 10px 4px;
}
.phabricator-object-list-cards .phabricator-object-item-selected {
background: #bfdcff;
}
.phabricator-object-list-cards .phabricator-object-item-selected
.phabricator-object-item-frame {
border-color: #99ccff;
}
.phabricator-object-list-cards .phabricator-object-item-attributes {
padding-bottom: 4px;
}
diff --git a/webroot/rsrc/js/application/maniphest/behavior-batch-selector.js b/webroot/rsrc/js/application/maniphest/behavior-batch-selector.js
index 0e37e80a32..d5aaa60d98 100644
--- a/webroot/rsrc/js/application/maniphest/behavior-batch-selector.js
+++ b/webroot/rsrc/js/application/maniphest/behavior-batch-selector.js
@@ -1,154 +1,158 @@
/**
* @provides javelin-behavior-maniphest-batch-selector
* @requires javelin-behavior
* javelin-dom
* javelin-stratcom
+ * javelin-util
*/
JX.behavior('maniphest-batch-selector', function(config) {
- // When a task row's selection state is changed, this issues updates to other
- // parts of the application.
-
- var onchange = function(task) {
- var input = JX.DOM.find(task, 'input', 'maniphest-batch');
- var state = input.checked;
+ var selected = {};
- JX.DOM.alterClass(task, 'maniphest-batch-selected', state);
+ // Test if a task node is selected.
- JX.Stratcom.invoke(
- (state ? 'maniphest-batch-task-add' : 'maniphest-batch-task-rem'),
- null,
- {id: input.value})
- };
+ var get_id = function(task) {
+ return JX.Stratcom.getData(task).taskID;
+ }
+ var is_selected = function(task) {
+ return (get_id(task) in selected);
+ }
// Change the selected state of a task.
- // If 'to' is undefined, toggle. Otherwise, set to true or false.
var change = function(task, to) {
-
- var input = JX.DOM.find(task, 'input', 'maniphest-batch');
- var state = input.checked;
if (to === undefined) {
- input.checked = !input.checked;
+ to = !is_selected(task);
+ }
+
+ if (to) {
+ selected[get_id(task)] = true;
} else {
- input.checked = to;
+ delete selected[get_id(task)];
}
- onchange(task);
+
+ JX.DOM.alterClass(
+ task,
+ 'phabricator-object-item-selected',
+ is_selected(task));
+
+ update();
};
// Change all tasks to some state (used by "select all" / "clear selection"
// buttons).
var changeall = function(to) {
- var inputs = JX.DOM.scry(document.body, 'table', 'maniphest-task');
+ var inputs = JX.DOM.scry(document.body, 'li', 'maniphest-task');
for (var ii = 0; ii < inputs.length; ii++) {
change(inputs[ii], to);
}
}
+ // Clear any document text selection after toggling a task via shift click,
+ // since errant clicks tend to start selecting various ranges otherwise.
+
+ var clear_selection = function() {
+ if (window.getSelection) {
+ if (window.getSelection().empty) {
+ window.getSelection().empty();
+ } else if (window.getSelection().removeAllRanges) {
+ window.getSelection().removeAllRanges();
+ }
+ } else if (document.selection) {
+ document.selection.empty();
+ }
+ }
// Update the status text showing how many tasks are selected, and the button
// state.
- var selected = {};
- var selected_count = 0;
-
var update = function() {
- var status = (selected_count == 1)
- ? '1 Selected Task'
- : selected_count + ' Selected Tasks';
+ var count = JX.keys(selected).length;
+ var status;
+ if (count == 0) {
+ status = 'Shift-Click to Select Tasks';
+ } else if (status == 1) {
+ status = '1 Selected Task';
+ } else {
+ status = count + ' Selected Tasks';
+ }
JX.DOM.setContent(JX.$(config.status), status);
var submit = JX.$(config.submit);
- var disable = (selected_count == 0);
+ var disable = (count == 0);
submit.disabled = disable;
JX.DOM.alterClass(submit, 'disabled', disable);
};
-
- // When the user clicks the entire <td /> surrounding the checkbox, count it
- // as a checkbox click.
+ // When he user shift-clicks the task, update the rest of the application
+ // state.
JX.Stratcom.listen(
'click',
'maniphest-task',
function(e) {
- if (!JX.DOM.isNode(e.getTarget(), 'td')) {
- // Only count clicks in the <td />, not (e.g.) the table border.
+ var raw = e.getRawEvent();
+ if (!raw.shiftKey) {
return;
}
- // Check if the clicked <td /> contains a checkbox.
- var inputs = JX.DOM.scry(e.getTarget(), 'input', 'maniphest-batch');
- if (!inputs.length) {
+ if (raw.ctrlKey || raw.altKey || raw.metaKey || e.isRightButton()) {
return;
}
- change(e.getNode('maniphest-task'));
- });
-
+ if (JX.Stratcom.pass(e)) {
+ return;
+ }
- // When he user clicks the <input />, update the rest of the application
- // state.
+ e.kill();
+ change(e.getNode('maniphest-task'));
- JX.Stratcom.listen(
- ['click', 'onchange'],
- 'maniphest-batch',
- function(e) {
- onchange(e.getNode('maniphest-task'));
+ clear_selection();
});
// When the user clicks "Select All", select all tasks.
JX.DOM.listen(
JX.$(config.selectNone),
'click',
null,
function(e) {
changeall(false);
e.kill();
});
// When the user clicks "Clear Selection", clear the selection.
JX.DOM.listen(
JX.$(config.selectAll),
'click',
null,
function(e) {
changeall(true);
e.kill();
});
+ // When the user submits the form, dump selected state into it.
- JX.Stratcom.listen(
- 'maniphest-batch-task-add',
+ JX.DOM.listen(
+ JX.$(config.formID),
+ 'submit',
null,
function(e) {
- var id = e.getData().id;
- if (!(id in selected)) {
- selected[id] = true;
- selected_count++;
- update();
+ var inputs = [];
+ for (var k in selected) {
+ inputs.push(
+ JX.$N('input', {type: 'hidden', name: 'batch[]', value: k}));
}
+ JX.DOM.setContent(JX.$(config.idContainer), inputs);
});
-
- JX.Stratcom.listen(
- 'maniphest-batch-task-rem',
- null,
- function(e) {
- var id = e.getData().id;
- if (id in selected) {
- delete selected[id];
- selected_count--;
- update();
- }
- });
+ update();
});
diff --git a/webroot/rsrc/js/application/maniphest/behavior-subpriorityeditor.js b/webroot/rsrc/js/application/maniphest/behavior-subpriorityeditor.js
index 7674f1b43f..242a8dd684 100644
--- a/webroot/rsrc/js/application/maniphest/behavior-subpriorityeditor.js
+++ b/webroot/rsrc/js/application/maniphest/behavior-subpriorityeditor.js
@@ -1,203 +1,222 @@
/**
* @provides javelin-behavior-maniphest-subpriority-editor
* @requires javelin-behavior
* javelin-magical-init
* javelin-dom
* javelin-vector
* javelin-stratcom
* javelin-workflow
*/
JX.behavior('maniphest-subpriority-editor', function(config) {
var dragging = null;
var sending = null;
var origin = null;
var targets = null;
var target = null;
- var droptarget = JX.$N('div', {className: 'maniphest-subpriority-target'});
+ var droptarget = JX.$N('li', {className: 'maniphest-subpriority-target'});
var ondrag = function(e) {
if (dragging || sending) {
return;
}
+ if (!e.isNormalMouseEvent()) {
+ return;
+ }
+
+ // Can't grab onto slippery nodes.
+ if (e.getNode('slippery')) {
+ return;
+ }
+
dragging = e.getNode('maniphest-task');
origin = JX.$V(e);
- var tasks = JX.DOM.scry(JX.$(config.root), 'table', 'maniphest-task');
- var heads = JX.DOM.scry(JX.$(config.root), 'h1', 'task-group');
+ var tasks = JX.DOM.scry(document.body, 'li', 'maniphest-task');
+ var heads = JX.DOM.scry(document.body, 'h1', 'task-group');
var nodes = tasks.concat(heads);
targets = [];
for (var ii = 0; ii < nodes.length; ii++) {
targets.push({
node: nodes[ii],
y: JX.$V(nodes[ii]).y + (JX.Vector.getDim(nodes[ii]).y / 2)
});
}
targets.sort(function(u, v) { return v.y - u.y; });
JX.DOM.alterClass(dragging, 'maniphest-task-dragging', true);
droptarget.style.height = JX.Vector.getDim(dragging).y + 'px';
e.kill();
};
var onmove = function(e) {
if (!dragging) {
return;
}
var p = JX.$V(e);
// Compute the size and position of the drop target indicator, because we
// need to update our static position computations to account for it.
var adjust_h = JX.Vector.getDim(droptarget).y;
var adjust_y = JX.$V(droptarget).y;
// Find the node we're dragging the task underneath. This is the first
// node in the list that's above the cursor. If that node is the node
// we're dragging or its predecessor, don't select a target, because the
// operation would be a no-op.
var cur_target = null;
for (var ii = 0; ii < targets.length; ii++) {
// If the drop target indicator is above the target, we need to adjust
// the target's trigger height down accordingly. This makes dragging
// items down the list smoother, because the target doesn't jump to the
// next item while the cursor is over it.
var trigger = targets[ii].y;
if (adjust_y <= trigger) {
trigger += adjust_h;
}
// If the cursor is above this target, we aren't dropping underneath it.
if (trigger >= p.y) {
continue;
}
// Don't choose the dragged row or its predecessor as targets.
cur_target = targets[ii].node;
if (cur_target == dragging) {
cur_target = null;
}
if (targets[ii - 1] && targets[ii - 1].node == dragging) {
cur_target = null;
}
break;
}
// If we've selected a new target, update the UI to show where we're
// going to drop the row.
if (cur_target != target) {
if (target) {
JX.DOM.remove(droptarget);
}
if (cur_target) {
if (cur_target.nextSibling) {
- cur_target.parentNode.insertBefore(
- droptarget,
- cur_target.nextSibling);
+ if (JX.DOM.isType(cur_target, 'h1')) {
+ // Dropping at the beginning of a priority list.
+ cur_target.nextSibling.insertBefore(
+ droptarget,
+ cur_target.nextSibling.firstChild);
+ } else {
+ // Dropping in the middle of a priority list.
+ cur_target.parentNode.insertBefore(
+ droptarget,
+ cur_target.nextSibling);
+ }
} else {
+ // Dropping at the end of a priority list.
cur_target.parentNode.appendChild(droptarget);
}
}
target = cur_target;
if (target) {
// If we've changed where the droptarget is, update the adjustments
// so we accurately reflect document state when we tweak things below.
// This avoids a flash of bad state as the mouse is dragged upward
// across the document.
adjust_h = JX.Vector.getDim(droptarget).y;
adjust_y = JX.$V(droptarget).y;
}
}
// If the drop target indicator is above the cursor in the document, adjust
// the cursor position for the change in node document position. Do this
// before choosing a new target to avoid a flash of nonsense.
if (target) {
if (adjust_y <= origin.y) {
p.y -= adjust_h;
}
}
p.x = 0;
p.y -= origin.y;
p.setPos(dragging);
e.kill();
};
var ondrop = function(e) {
if (!dragging) {
return;
}
JX.DOM.alterClass(dragging, 'maniphest-task-dragging', false);
JX.$V(0, 0).setPos(dragging);
if (!target) {
dragging = null;
return;
}
var data = {
task: JX.Stratcom.getData(dragging).taskID
};
if (JX.DOM.isType(target, 'h1')) {
data.priority = JX.Stratcom.getData(target).priority;
} else {
data.after = JX.Stratcom.getData(target).taskID;
}
target = null;
JX.DOM.remove(dragging);
JX.DOM.replace(droptarget, dragging);
sending = dragging;
dragging = null;
JX.DOM.alterClass(sending, 'maniphest-task-loading', true);
var onresponse = function(r) {
- JX.DOM.alterClass(sending, 'maniphest-task-loading', false);
- var handle = JX.DOM.find(sending, 'td', 'maniphest-task-handle');
- handle.className = r.className;
+ var nodes = JX.$H(r.tasks).getFragment().firstChild;
+ var task = JX.DOM.find(nodes, 'li', 'maniphest-task');
+ JX.DOM.replace(sending, task);
+
sending = null;
};
new JX.Workflow(config.uri, data)
.setHandler(onresponse)
.start();
e.kill();
};
// NOTE: Javelin does not dispatch mousemove by default.
JX.enableDispatch(document.body, 'mousemove');
- JX.Stratcom.listen('mousedown', 'maniphest-task-handle', ondrag);
- JX.Stratcom.listen('mousemove', null, onmove);
- JX.Stratcom.listen('mouseup', null, ondrop);
+ JX.Stratcom.listen('mousedown', 'maniphest-task', ondrag);
+ JX.Stratcom.listen('mousemove', null, onmove);
+ JX.Stratcom.listen('mouseup', null, ondrop);
});

File Metadata

Mime Type
text/x-diff
Expires
Mon, Jul 28, 6:15 PM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
187279
Default Alt Text
(214 KB)

Event Timeline