2011-01-16 22:51:39 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This file is automatically generated. Use 'phutil_mapper.php' to rebuild it.
|
|
|
|
* @generated
|
|
|
|
*/
|
|
|
|
|
|
|
|
phutil_register_library_map(array(
|
|
|
|
'class' =>
|
|
|
|
array(
|
2011-05-09 10:10:40 +02:00
|
|
|
'Aphront304Response' => 'aphront/response/304',
|
2011-01-30 21:08:40 +01:00
|
|
|
'Aphront400Response' => 'aphront/response/400',
|
2011-01-16 22:51:39 +01:00
|
|
|
'Aphront404Response' => 'aphront/response/404',
|
2011-01-25 20:57:47 +01:00
|
|
|
'AphrontAjaxResponse' => 'aphront/response/ajax',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontApplicationConfiguration' => 'aphront/applicationconfiguration',
|
Improve drag-and-drop uploader
Summary:
Make it discoverable, show uploading progress, show file thumbnails, allow you
to remove files, make it a generic form component.
Test Plan:
Uploaded ducks
Reviewed By: tomo
Reviewers: aran, tomo, jungejason, tuomaspelkonen
CC: anjali, aran, epriestley, tomo
Differential Revision: 334
2011-05-23 01:11:41 +02:00
|
|
|
'AphrontAttachedFileView' => 'view/control/attachedfile',
|
Fix conservative CSRF token cycling limit
Summary:
We currently cycle CSRF tokens every hour and check for the last two valid ones.
This means that a form could go stale in as little as an hour, and is certainly
stale after two.
When a stale form is submitted, you basically get a terrible heisen-state where
some of your data might persist if you're lucky but more likely it all just
vanishes. The .js file below outlines some more details.
This is a pretty terrible UX and we don't need to be as conservative about CSRF
validation as we're being. Remedy this problem by:
- Accepting the last 6 CSRF tokens instead of the last 1 (i.e., pages are
valid for at least 6 hours, and for as long as 7).
- Using JS to refresh the CSRF token every 55 minutes (i.e., pages connected
to the internet are valid indefinitely).
- Showing the user an explicit message about what went wrong when CSRF
validation fails so the experience is less bewildering.
They should now only be able to submit with a bad CSRF token if:
- They load a page, disconnect from the internet for 7 hours, reconnect, and
submit the form within 55 minutes; or
- They are actually the victim of a CSRF attack.
We could eventually fix the first one by tracking reconnects, which might be
"free" once the notification server gets built. It will probably never be an
issue in practice.
Test Plan:
- Reduced CSRF cycle frequency to 2 seconds, submitted a form after 15
seconds, got the CSRF exception.
- Reduced csrf-refresh cycle frequency to 3 seconds, submitted a form after 15
seconds, got a clean form post.
- Added debugging code the the csrf refresh to make sure it was doing sensible
things (pulling different tokens, finding all the inputs).
Reviewed By: aran
Reviewers: tuomaspelkonen, jungejason, aran
CC: aran, epriestley
Differential Revision: 660
2011-07-13 23:05:18 +02:00
|
|
|
'AphrontCSRFException' => 'aphront/exception/csrf',
|
Build a basic calendar view
Summary:
This is a very small step toward building a Status and possibly an Oncall tool.
Build a calendar view which renders months.
Much of my hesitance to bang these tools out is that dealing with
dates/calendaring is basically horrible, so I'm trying to ease into it.
This calendar is locale-aware and all that jazz.
Test Plan:
- See:
https://secure.phabricator.com/file/view/PHID-FILE-c07a9c663a7d040d2529/
- Verified that months have the right number of days, today is the right day
of the week, months begin on the day after previous months end on, etc.
Reviewed By: aran
Reviewers: jungejason, tuomaspelkonen, aran
Commenters: cwbeck, jungejason
CC: blair, aran, epriestley, cwbeck, jungejason
Differential Revision: 791
2011-08-08 03:26:31 +02:00
|
|
|
'AphrontCalendarMonthView' => 'applications/calendar/view/month',
|
Tweak style on "Create Another Task" button
Summary:
Not totally sure I'm in love with this but I think it's somewhat non-terrible,
despite the lack of lens flare.
Also made "Cancel" take you back to the task if you got to "Create" from "Create
Another Task".
Test Plan:
- Style:
https://secure.phabricator.com/file/view/PHID-FILE-ad37d3c1f3b2c7a7a7d1/
- Hit "Cancel" from "Create Another", got sent back to task.
- Hit "Cancel" from normal create, got sent back to list.
- Tried to save an invalid task after making changes to CC/Projects, changes
were preserved.
Reviewed By: codeblock
Reviewers: hunterbridges, jungejason, tuomaspelkonen, aran, codeblock
CC: aran, epriestley, codeblock
Differential Revision: 736
2011-07-27 19:46:22 +02:00
|
|
|
'AphrontContextBarView' => 'view/layout/contextbar',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontController' => 'aphront/controller',
|
2011-03-13 01:17:34 +01:00
|
|
|
'AphrontCrumbsView' => 'view/layout/crumbs',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontDatabaseConnection' => 'storage/connection/base',
|
|
|
|
'AphrontDefaultApplicationConfiguration' => 'aphront/default/configuration',
|
|
|
|
'AphrontDefaultApplicationController' => 'aphront/default/controller',
|
|
|
|
'AphrontDialogResponse' => 'aphront/response/dialog',
|
|
|
|
'AphrontDialogView' => 'view/dialog',
|
|
|
|
'AphrontErrorView' => 'view/form/error',
|
2011-01-26 22:21:12 +01:00
|
|
|
'AphrontException' => 'aphront/exception/base',
|
2011-05-23 02:06:42 +02:00
|
|
|
'AphrontFilePreviewView' => 'view/layout/filepreview',
|
2011-01-23 03:33:00 +01:00
|
|
|
'AphrontFileResponse' => 'aphront/response/file',
|
2011-01-26 02:40:21 +01:00
|
|
|
'AphrontFormCheckboxControl' => 'view/form/control/checkbox',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontFormControl' => 'view/form/control/base',
|
2011-02-05 02:53:14 +01:00
|
|
|
'AphrontFormDividerControl' => 'view/form/control/divider',
|
Improve drag-and-drop uploader
Summary:
Make it discoverable, show uploading progress, show file thumbnails, allow you
to remove files, make it a generic form component.
Test Plan:
Uploaded ducks
Reviewed By: tomo
Reviewers: aran, tomo, jungejason, tuomaspelkonen
CC: anjali, aran, epriestley, tomo
Differential Revision: 334
2011-05-23 01:11:41 +02:00
|
|
|
'AphrontFormDragAndDropUploadControl' => 'view/form/control/draganddropupload',
|
2011-01-23 03:33:00 +01:00
|
|
|
'AphrontFormFileControl' => 'view/form/control/file',
|
2011-06-10 00:28:29 +02:00
|
|
|
'AphrontFormLayoutView' => 'view/form/layout',
|
2011-01-24 20:36:53 +01:00
|
|
|
'AphrontFormMarkupControl' => 'view/form/control/markup',
|
2011-01-31 20:55:26 +01:00
|
|
|
'AphrontFormPasswordControl' => 'view/form/control/password',
|
|
|
|
'AphrontFormRecaptchaControl' => 'view/form/control/recaptcha',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontFormSelectControl' => 'view/form/control/select',
|
2011-01-23 03:33:00 +01:00
|
|
|
'AphrontFormStaticControl' => 'view/form/control/static',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontFormSubmitControl' => 'view/form/control/submit',
|
|
|
|
'AphrontFormTextAreaControl' => 'view/form/control/textarea',
|
|
|
|
'AphrontFormTextControl' => 'view/form/control/text',
|
2011-04-04 00:50:06 +02:00
|
|
|
'AphrontFormToggleButtonsControl' => 'view/form/control/togglebuttons',
|
2011-01-25 22:48:05 +01:00
|
|
|
'AphrontFormTokenizerControl' => 'view/form/control/tokenizer',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontFormView' => 'view/form/base',
|
2011-02-20 21:50:28 +01:00
|
|
|
'AphrontHeadsupActionListView' => 'view/layout/headsup/actionlist',
|
|
|
|
'AphrontHeadsupActionView' => 'view/layout/headsup/action',
|
2011-04-30 19:11:41 +02:00
|
|
|
'AphrontIsolatedDatabaseConnection' => 'storage/connection/isolated',
|
|
|
|
'AphrontIsolatedDatabaseConnectionTestCase' => 'storage/connection/isolated/__tests__',
|
2011-09-07 23:01:13 +02:00
|
|
|
'AphrontJavelinView' => 'view/javelin-view',
|
2011-06-08 20:53:10 +02:00
|
|
|
'AphrontKeyboardShortcutsAvailableView' => 'view/widget/keyboardshortcuts',
|
2011-04-04 00:50:06 +02:00
|
|
|
'AphrontListFilterView' => 'view/layout/listfilter',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontMySQLDatabaseConnection' => 'storage/connection/mysql',
|
|
|
|
'AphrontNullView' => 'view/null',
|
|
|
|
'AphrontPageView' => 'view/page/base',
|
2011-04-01 02:06:33 +02:00
|
|
|
'AphrontPagerView' => 'view/control/pager',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontPanelView' => 'view/layout/panel',
|
2011-04-30 09:18:13 +02:00
|
|
|
'AphrontQueryAccessDeniedException' => 'storage/exception/accessdenied',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontQueryConnectionException' => 'storage/exception/connection',
|
|
|
|
'AphrontQueryConnectionLostException' => 'storage/exception/connectionlost',
|
|
|
|
'AphrontQueryCountException' => 'storage/exception/count',
|
2011-01-31 06:28:45 +01:00
|
|
|
'AphrontQueryDuplicateKeyException' => 'storage/exception/duplicatekey',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontQueryException' => 'storage/exception/base',
|
|
|
|
'AphrontQueryObjectMissingException' => 'storage/exception/objectmissing',
|
|
|
|
'AphrontQueryParameterException' => 'storage/exception/parameter',
|
|
|
|
'AphrontQueryRecoverableException' => 'storage/exception/recoverable',
|
2011-01-26 22:21:12 +01:00
|
|
|
'AphrontRedirectException' => 'aphront/exception/redirect',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontRedirectResponse' => 'aphront/response/redirect',
|
2011-05-16 20:43:39 +02:00
|
|
|
'AphrontReloadResponse' => 'aphront/response/reload',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontRequest' => 'aphront/request',
|
2011-01-30 18:15:01 +01:00
|
|
|
'AphrontRequestFailureView' => 'view/page/failure',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontResponse' => 'aphront/response/base',
|
Create AphrontWriteGuard, a backup mechanism for CSRF validation
Summary:
Provide a catchall mechanism to find unprotected writes.
- Depends on D758.
- Similar to WriteOnHTTPGet stuff from Facebook's stack.
- Since we have a small number of storage mechanisms and highly structured
read/write pathways, we can explicitly answer the question "is this page
performing a write?".
- Never allow writes without CSRF checks.
- This will probably break some things. That's fine: they're CSRF
vulnerabilities or weird edge cases that we can fix. But don't push to Facebook
for a few days unless you're prepared to deal with this.
- **>>> MEGADERP: All Conduit write APIs are currently vulnerable to CSRF!
<<<**
Test Plan:
- Ran some scripts that perform writes (scripts/search indexers), no issues.
- Performed normal CSRF submits.
- Added writes to an un-CSRF'd page, got an exception.
- Executed conduit methods.
- Did login/logout (this works because the logged-out user validates the
logged-out csrf "token").
- Did OAuth login.
- Did OAuth registration.
Reviewers: pedram, andrewjcg, erling, jungejason, tuomaspelkonen, aran,
codeblock
Commenters: pedram
CC: aran, epriestley, pedram
Differential Revision: 777
2011-08-03 20:49:27 +02:00
|
|
|
'AphrontScopedUnguardedWriteCapability' => 'aphront/writeguard/scopeguard',
|
2011-01-24 18:00:29 +01:00
|
|
|
'AphrontSideNavView' => 'view/layout/sidenav',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontTableView' => 'view/control/table',
|
2011-03-23 04:41:02 +01:00
|
|
|
'AphrontTokenizerTemplateView' => 'view/control/tokenizer',
|
2011-04-04 04:20:47 +02:00
|
|
|
'AphrontTypeaheadTemplateView' => 'view/control/typeahead',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontURIMapper' => 'aphront/mapper',
|
|
|
|
'AphrontView' => 'view/base',
|
|
|
|
'AphrontWebpageResponse' => 'aphront/response/webpage',
|
Create AphrontWriteGuard, a backup mechanism for CSRF validation
Summary:
Provide a catchall mechanism to find unprotected writes.
- Depends on D758.
- Similar to WriteOnHTTPGet stuff from Facebook's stack.
- Since we have a small number of storage mechanisms and highly structured
read/write pathways, we can explicitly answer the question "is this page
performing a write?".
- Never allow writes without CSRF checks.
- This will probably break some things. That's fine: they're CSRF
vulnerabilities or weird edge cases that we can fix. But don't push to Facebook
for a few days unless you're prepared to deal with this.
- **>>> MEGADERP: All Conduit write APIs are currently vulnerable to CSRF!
<<<**
Test Plan:
- Ran some scripts that perform writes (scripts/search indexers), no issues.
- Performed normal CSRF submits.
- Added writes to an un-CSRF'd page, got an exception.
- Executed conduit methods.
- Did login/logout (this works because the logged-out user validates the
logged-out csrf "token").
- Did OAuth login.
- Did OAuth registration.
Reviewers: pedram, andrewjcg, erling, jungejason, tuomaspelkonen, aran,
codeblock
Commenters: pedram
CC: aran, epriestley, pedram
Differential Revision: 777
2011-08-03 20:49:27 +02:00
|
|
|
'AphrontWriteGuard' => 'aphront/writeguard',
|
2011-01-31 20:55:26 +01:00
|
|
|
'CelerityAPI' => 'infrastructure/celerity/api',
|
|
|
|
'CelerityResourceController' => 'infrastructure/celerity/controller',
|
|
|
|
'CelerityResourceMap' => 'infrastructure/celerity/map',
|
|
|
|
'CelerityStaticResourceResponse' => 'infrastructure/celerity/response',
|
2011-01-24 18:00:29 +01:00
|
|
|
'ConduitAPIMethod' => 'applications/conduit/method/base',
|
|
|
|
'ConduitAPIRequest' => 'applications/conduit/protocol/request',
|
2011-09-16 20:42:45 +02:00
|
|
|
'ConduitAPI_arcanist_Method' => 'applications/conduit/method/arcanist/base',
|
|
|
|
'ConduitAPI_arcanist_projectinfo_Method' => 'applications/conduit/method/arcanist/projectinfo',
|
2011-01-24 20:30:10 +01:00
|
|
|
'ConduitAPI_conduit_connect_Method' => 'applications/conduit/method/conduit/connect',
|
2011-06-14 21:17:14 +02:00
|
|
|
'ConduitAPI_conduit_getcertificate_Method' => 'applications/conduit/method/conduit/getcertificate',
|
2011-02-19 07:36:32 +01:00
|
|
|
'ConduitAPI_conduit_ping_Method' => 'applications/conduit/method/conduit/ping',
|
2011-03-15 21:38:14 +01:00
|
|
|
'ConduitAPI_daemon_launched_Method' => 'applications/conduit/method/daemon/launched',
|
|
|
|
'ConduitAPI_daemon_log_Method' => 'applications/conduit/method/daemon/log',
|
2011-01-24 20:01:53 +01:00
|
|
|
'ConduitAPI_differential_creatediff_Method' => 'applications/conduit/method/differential/creatediff',
|
2011-02-06 22:49:23 +01:00
|
|
|
'ConduitAPI_differential_createrevision_Method' => 'applications/conduit/method/differential/createrevision',
|
2011-02-06 23:43:06 +01:00
|
|
|
'ConduitAPI_differential_find_Method' => 'applications/conduit/method/differential/find',
|
2011-04-21 00:29:02 +02:00
|
|
|
'ConduitAPI_differential_getalldiffs_Method' => 'applications/conduit/method/differential/getalldiffs',
|
2011-02-09 18:41:26 +01:00
|
|
|
'ConduitAPI_differential_getcommitmessage_Method' => 'applications/conduit/method/differential/getcommitmessage',
|
2011-02-19 07:28:03 +01:00
|
|
|
'ConduitAPI_differential_getcommitpaths_Method' => 'applications/conduit/method/differential/getcommitpaths',
|
2011-02-19 07:15:28 +01:00
|
|
|
'ConduitAPI_differential_getdiff_Method' => 'applications/conduit/method/differential/getdiff',
|
2011-04-21 01:38:16 +02:00
|
|
|
'ConduitAPI_differential_getrevision_Method' => 'applications/conduit/method/differential/getrevision',
|
2011-04-20 01:24:45 +02:00
|
|
|
'ConduitAPI_differential_getrevisionfeedback_Method' => 'applications/conduit/method/differential/getrevisionfeedback',
|
2011-02-09 18:48:26 +01:00
|
|
|
'ConduitAPI_differential_markcommitted_Method' => 'applications/conduit/method/differential/markcommitted',
|
2011-02-06 22:42:00 +01:00
|
|
|
'ConduitAPI_differential_parsecommitmessage_Method' => 'applications/conduit/method/differential/parsecommitmessage',
|
2011-01-24 21:07:34 +01:00
|
|
|
'ConduitAPI_differential_setdiffproperty_Method' => 'applications/conduit/method/differential/setdiffproperty',
|
2011-02-06 23:00:32 +01:00
|
|
|
'ConduitAPI_differential_updaterevision_Method' => 'applications/conduit/method/differential/updaterevision',
|
2011-04-22 03:47:04 +02:00
|
|
|
'ConduitAPI_differential_updatetaskrevisionassoc_Method' => 'applications/conduit/method/differential/updatetaskrevisionassoc',
|
2011-06-09 01:16:59 +02:00
|
|
|
'ConduitAPI_differential_updateunitresults_Method' => 'applications/conduit/method/differential/updateunitresults',
|
2011-04-14 01:39:08 +02:00
|
|
|
'ConduitAPI_diffusion_getcommits_Method' => 'applications/conduit/method/diffusion/getcommits',
|
2011-05-20 00:36:17 +02:00
|
|
|
'ConduitAPI_diffusion_getrecentcommitsbypath_Method' => 'applications/conduit/method/diffusion/getrecentcommitsbypath',
|
2011-07-05 17:35:18 +02:00
|
|
|
'ConduitAPI_feed_publish_Method' => 'applications/conduit/method/feed/publish',
|
2011-05-21 18:53:50 +02:00
|
|
|
'ConduitAPI_file_download_Method' => 'applications/conduit/method/file/download',
|
2011-07-29 19:00:16 +02:00
|
|
|
'ConduitAPI_file_info_Method' => 'applications/conduit/method/file/info',
|
2011-01-24 18:00:29 +01:00
|
|
|
'ConduitAPI_file_upload_Method' => 'applications/conduit/method/file/upload',
|
2011-08-18 00:19:48 +02:00
|
|
|
'ConduitAPI_maniphest_Method' => 'applications/conduit/method/maniphest/base',
|
|
|
|
'ConduitAPI_maniphest_createtask_Method' => 'applications/conduit/method/maniphest/createtask',
|
2011-08-27 01:52:57 +02:00
|
|
|
'ConduitAPI_maniphest_find_Method' => 'applications/conduit/method/maniphest/find',
|
2011-06-27 10:00:28 +02:00
|
|
|
'ConduitAPI_maniphest_info_Method' => 'applications/conduit/method/maniphest/info',
|
2011-07-30 03:31:14 +02:00
|
|
|
'ConduitAPI_paste_Method' => 'applications/conduit/method/paste/base',
|
|
|
|
'ConduitAPI_paste_create_Method' => 'applications/conduit/method/paste/create',
|
2011-06-14 07:21:30 +02:00
|
|
|
'ConduitAPI_paste_info_Method' => 'applications/conduit/method/paste/info',
|
2011-04-12 06:51:36 +02:00
|
|
|
'ConduitAPI_path_getowners_Method' => 'applications/conduit/method/path/getowners',
|
2011-08-30 21:03:58 +02:00
|
|
|
'ConduitAPI_phid_Method' => 'applications/conduit/method/phid/base',
|
|
|
|
'ConduitAPI_phid_info_Method' => 'applications/conduit/method/phid/info',
|
2011-08-26 21:50:28 +02:00
|
|
|
'ConduitAPI_phriction_Method' => 'applications/conduit/method/phriction/base',
|
|
|
|
'ConduitAPI_phriction_edit_Method' => 'applications/conduit/method/phriction/edit',
|
|
|
|
'ConduitAPI_phriction_history_Method' => 'applications/conduit/method/phriction/history',
|
|
|
|
'ConduitAPI_phriction_info_Method' => 'applications/conduit/method/phriction/info',
|
2011-07-13 04:18:20 +02:00
|
|
|
'ConduitAPI_slowvote_info_Method' => 'applications/conduit/method/slowvote/info',
|
2011-08-30 21:03:58 +02:00
|
|
|
'ConduitAPI_user_Method' => 'applications/conduit/method/user/base',
|
2011-01-24 20:36:53 +01:00
|
|
|
'ConduitAPI_user_find_Method' => 'applications/conduit/method/user/find',
|
2011-08-30 21:03:58 +02:00
|
|
|
'ConduitAPI_user_info_Method' => 'applications/conduit/method/user/info',
|
2011-04-08 03:27:39 +02:00
|
|
|
'ConduitAPI_user_whoami_Method' => 'applications/conduit/method/user/whoami',
|
2011-01-24 18:00:29 +01:00
|
|
|
'ConduitException' => 'applications/conduit/protocol/exception',
|
2011-02-02 22:48:52 +01:00
|
|
|
'DarkConsole' => 'aphront/console/api',
|
2011-02-12 01:48:43 +01:00
|
|
|
'DarkConsoleConfigPlugin' => 'aphront/console/plugin/config',
|
2011-02-02 22:48:52 +01:00
|
|
|
'DarkConsoleController' => 'aphront/console/controller',
|
|
|
|
'DarkConsoleCore' => 'aphront/console/core',
|
|
|
|
'DarkConsoleErrorLogPlugin' => 'aphront/console/plugin/errorlog',
|
2011-02-03 07:38:42 +01:00
|
|
|
'DarkConsoleErrorLogPluginAPI' => 'aphront/console/plugin/errorlog/api',
|
2011-09-30 21:54:17 +02:00
|
|
|
'DarkConsoleEventPlugin' => 'aphront/console/plugin/event',
|
|
|
|
'DarkConsoleEventPluginAPI' => 'aphront/console/plugin/event/api',
|
2011-02-02 22:48:52 +01:00
|
|
|
'DarkConsolePlugin' => 'aphront/console/plugin/base',
|
|
|
|
'DarkConsoleRequestPlugin' => 'aphront/console/plugin/request',
|
|
|
|
'DarkConsoleServicesPlugin' => 'aphront/console/plugin/services',
|
|
|
|
'DarkConsoleXHProfPlugin' => 'aphront/console/plugin/xhprof',
|
|
|
|
'DarkConsoleXHProfPluginAPI' => 'aphront/console/plugin/xhprof/api',
|
2011-04-30 02:23:25 +02:00
|
|
|
'DatabaseConfigurationProvider' => 'applications/base/storage/configuration',
|
2011-01-24 03:10:20 +01:00
|
|
|
'DifferentialAction' => 'applications/differential/constants/action',
|
2011-01-30 20:02:22 +01:00
|
|
|
'DifferentialAddCommentView' => 'applications/differential/view/addcomment',
|
2011-09-14 19:59:52 +02:00
|
|
|
'DifferentialAffectedPath' => 'applications/differential/storage/affectedpath',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialApplyPatchFieldSpecification' => 'applications/differential/field/specification/applypatch',
|
2011-08-14 21:33:54 +02:00
|
|
|
'DifferentialArcanistProjectFieldSpecification' => 'applications/differential/field/specification/arcanistproject',
|
|
|
|
'DifferentialAuthorFieldSpecification' => 'applications/differential/field/specification/author',
|
2011-08-10 20:29:08 +02:00
|
|
|
'DifferentialAuxiliaryField' => 'applications/differential/storage/auxiliaryfield',
|
2011-08-11 00:36:18 +02:00
|
|
|
'DifferentialBlameRevisionFieldSpecification' => 'applications/differential/field/specification/blamerev',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialCCWelcomeMail' => 'applications/differential/mail/ccwelcome',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialCCsFieldSpecification' => 'applications/differential/field/specification/ccs',
|
2011-01-24 03:10:20 +01:00
|
|
|
'DifferentialChangeType' => 'applications/differential/constants/changetype',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialChangeset' => 'applications/differential/storage/changeset',
|
2011-01-24 22:18:41 +01:00
|
|
|
'DifferentialChangesetDetailView' => 'applications/differential/view/changesetdetailview',
|
2011-01-25 20:57:47 +01:00
|
|
|
'DifferentialChangesetListView' => 'applications/differential/view/changesetlistview',
|
2011-01-25 00:52:35 +01:00
|
|
|
'DifferentialChangesetParser' => 'applications/differential/parser/changeset',
|
|
|
|
'DifferentialChangesetViewController' => 'applications/differential/controller/changesetview',
|
2011-01-30 19:37:36 +01:00
|
|
|
'DifferentialComment' => 'applications/differential/storage/comment',
|
2011-01-30 21:08:40 +01:00
|
|
|
'DifferentialCommentEditor' => 'applications/differential/editor/comment',
|
|
|
|
'DifferentialCommentMail' => 'applications/differential/mail/comment',
|
2011-02-01 03:05:20 +01:00
|
|
|
'DifferentialCommentPreviewController' => 'applications/differential/controller/commentpreview',
|
2011-01-30 21:08:40 +01:00
|
|
|
'DifferentialCommentSaveController' => 'applications/differential/controller/commentsave',
|
2011-08-14 21:33:54 +02:00
|
|
|
'DifferentialCommitsFieldSpecification' => 'applications/differential/field/specification/commits',
|
2011-01-24 22:18:41 +01:00
|
|
|
'DifferentialController' => 'applications/differential/controller/base',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialDAO' => 'applications/differential/storage/base',
|
2011-08-10 20:29:08 +02:00
|
|
|
'DifferentialDefaultFieldSelector' => 'applications/differential/field/selector/default',
|
2011-08-14 21:33:54 +02:00
|
|
|
'DifferentialDependenciesFieldSpecification' => 'applications/differential/field/specification/dependencies',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialDiff' => 'applications/differential/storage/diff',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialDiffContentMail' => 'applications/differential/mail/diffcontent',
|
2011-02-05 21:20:18 +01:00
|
|
|
'DifferentialDiffCreateController' => 'applications/differential/controller/diffcreate',
|
2011-01-24 21:07:34 +01:00
|
|
|
'DifferentialDiffProperty' => 'applications/differential/storage/diffproperty',
|
2011-01-24 22:18:41 +01:00
|
|
|
'DifferentialDiffTableOfContentsView' => 'applications/differential/view/difftableofcontents',
|
|
|
|
'DifferentialDiffViewController' => 'applications/differential/controller/diffview',
|
2011-05-01 04:40:05 +02:00
|
|
|
'DifferentialExceptionMail' => 'applications/differential/mail/exception',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialExportPatchFieldSpecification' => 'applications/differential/field/specification/exportpatch',
|
|
|
|
'DifferentialFieldDataNotAvailableException' => 'applications/differential/field/exception/notavailable',
|
Drive Differential commit message parsing through extensible fields
Summary:
I think this is the last major step -- use the fields to parse commit messages,
not a hard-coded list of stuff. This adds two primary methods to fields, one to
get all the labels they'll parse (so we can do "CC" and "CCs" and treat them as
the same field) and one to parse the string into a canonical representation
(e.g., lookup reviewers and such).
You'll need to impelement the one block of task-specific stuff I removed in
Facebook's task field:
list($pre_comment) = split(' -- ', $data);
$data = array_filter(preg_split('/[^\d]+/', $pre_comment));
foreach ($data as $k => $v) {
$data[$k] = (int)$v;
}
$data = array_unique($data);
break;
Otherwise I think this is clean.
Test Plan:
- Called the conduit method with various commit messages, parsed fields/errors
seemed correct.
- "arc diff"'d this diff onto localhost, then updated it.
- "arc amend"'d this diff.
Reviewers: jungejason, tuomaspelkonen, aran
Reviewed By: jungejason
CC: aran, jungejason, epriestley
Differential Revision: 829
2011-08-18 21:08:18 +02:00
|
|
|
'DifferentialFieldParseException' => 'applications/differential/field/exception/parse',
|
2011-08-10 20:29:08 +02:00
|
|
|
'DifferentialFieldSelector' => 'applications/differential/field/selector/base',
|
|
|
|
'DifferentialFieldSpecification' => 'applications/differential/field/specification/base',
|
2011-08-10 22:46:01 +02:00
|
|
|
'DifferentialFieldSpecificationIncompleteException' => 'applications/differential/field/exception/incomplete',
|
|
|
|
'DifferentialFieldValidationException' => 'applications/differential/field/exception/validation',
|
2011-08-15 03:52:09 +02:00
|
|
|
'DifferentialGitSVNIDFieldSpecification' => 'applications/differential/field/specification/gitsvnid',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialHostFieldSpecification' => 'applications/differential/field/specification/host',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialHunk' => 'applications/differential/storage/hunk',
|
2011-02-02 00:52:04 +01:00
|
|
|
'DifferentialInlineComment' => 'applications/differential/storage/inlinecomment',
|
2011-02-02 01:42:36 +01:00
|
|
|
'DifferentialInlineCommentEditController' => 'applications/differential/controller/inlinecommentedit',
|
2011-02-03 04:38:43 +01:00
|
|
|
'DifferentialInlineCommentPreviewController' => 'applications/differential/controller/inlinecommentpreview',
|
2011-02-02 01:42:36 +01:00
|
|
|
'DifferentialInlineCommentView' => 'applications/differential/view/inlinecomment',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialLinesFieldSpecification' => 'applications/differential/field/specification/lines',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialLintFieldSpecification' => 'applications/differential/field/specification/lint',
|
2011-01-24 03:10:20 +01:00
|
|
|
'DifferentialLintStatus' => 'applications/differential/constants/lintstatus',
|
2011-08-30 20:34:07 +02:00
|
|
|
'DifferentialLocalCommitsView' => 'applications/differential/view/localcommits',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialMail' => 'applications/differential/mail/base',
|
2011-08-14 21:33:54 +02:00
|
|
|
'DifferentialManiphestTasksFieldSpecification' => 'applications/differential/field/specification/maniphesttasks',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialNewDiffMail' => 'applications/differential/mail/newdiff',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialPathFieldSpecification' => 'applications/differential/field/specification/path',
|
2011-06-08 21:39:03 +02:00
|
|
|
'DifferentialPrimaryPaneView' => 'applications/differential/view/primarypane',
|
2011-05-01 04:40:05 +02:00
|
|
|
'DifferentialReplyHandler' => 'applications/differential/replyhandler',
|
2011-08-11 00:36:18 +02:00
|
|
|
'DifferentialRevertPlanFieldSpecification' => 'applications/differential/field/specification/revertplan',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialReviewRequestMail' => 'applications/differential/mail/reviewrequest',
|
2011-08-15 03:52:09 +02:00
|
|
|
'DifferentialReviewedByFieldSpecification' => 'applications/differential/field/specification/reviewedby',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialReviewersFieldSpecification' => 'applications/differential/field/specification/reviewers',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialRevision' => 'applications/differential/storage/revision',
|
2011-01-30 19:37:36 +01:00
|
|
|
'DifferentialRevisionCommentListView' => 'applications/differential/view/revisioncommentlist',
|
|
|
|
'DifferentialRevisionCommentView' => 'applications/differential/view/revisioncomment',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialRevisionControlSystem' => 'applications/differential/constants/revisioncontrolsystem',
|
2011-04-13 00:57:29 +02:00
|
|
|
'DifferentialRevisionDetailRenderer' => 'applications/differential/controller/customrenderer',
|
2011-01-27 23:55:52 +01:00
|
|
|
'DifferentialRevisionDetailView' => 'applications/differential/view/revisiondetail',
|
2011-01-25 22:26:09 +01:00
|
|
|
'DifferentialRevisionEditController' => 'applications/differential/controller/revisionedit',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialRevisionEditor' => 'applications/differential/editor/revision',
|
2011-09-26 23:20:31 +02:00
|
|
|
'DifferentialRevisionHash' => 'applications/differential/constants/revisionhash',
|
2011-08-15 03:52:09 +02:00
|
|
|
'DifferentialRevisionIDFieldSpecification' => 'applications/differential/field/specification/revisionid',
|
2011-01-26 00:19:06 +01:00
|
|
|
'DifferentialRevisionListController' => 'applications/differential/controller/revisionlist',
|
2011-01-27 20:35:04 +01:00
|
|
|
'DifferentialRevisionListData' => 'applications/differential/data/revisionlist',
|
2011-10-02 20:42:41 +02:00
|
|
|
'DifferentialRevisionListView' => 'applications/differential/view/revisionlist',
|
2011-10-02 21:03:16 +02:00
|
|
|
'DifferentialRevisionQuery' => 'applications/differential/query/revision',
|
2011-01-24 03:10:20 +01:00
|
|
|
'DifferentialRevisionStatus' => 'applications/differential/constants/revisionstatus',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialRevisionStatusFieldSpecification' => 'applications/differential/field/specification/revisionstatus',
|
2011-01-27 23:55:52 +01:00
|
|
|
'DifferentialRevisionUpdateHistoryView' => 'applications/differential/view/revisionupdatehistory',
|
|
|
|
'DifferentialRevisionViewController' => 'applications/differential/controller/revisionview',
|
2011-02-19 23:36:13 +01:00
|
|
|
'DifferentialSubscribeController' => 'applications/differential/controller/subscribe',
|
2011-08-14 23:28:08 +02:00
|
|
|
'DifferentialSummaryFieldSpecification' => 'applications/differential/field/specification/summary',
|
2011-04-22 02:53:18 +02:00
|
|
|
'DifferentialTasksAttacher' => 'applications/differential/tasks',
|
2011-08-14 23:28:08 +02:00
|
|
|
'DifferentialTestPlanFieldSpecification' => 'applications/differential/field/specification/testplan',
|
|
|
|
'DifferentialTitleFieldSpecification' => 'applications/differential/field/specification/title',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialUnitFieldSpecification' => 'applications/differential/field/specification/unit',
|
2011-01-24 03:10:20 +01:00
|
|
|
'DifferentialUnitStatus' => 'applications/differential/constants/unitstatus',
|
2011-06-09 01:16:59 +02:00
|
|
|
'DifferentialUnitTestResult' => 'applications/differential/constants/unittestresult',
|
Differential Updates View
Summary:
This adds a new view to differential called Updates.
The high-level goal of Updates is to enabled differential to be
effectively used without email notifications. I've tried doing things
like automatically deleting differential emails where I'm in the 'to'
line since they show up on the main diffential page but then there's
always the chance an important diff flies by without me seeing it. Also,
sometimes someone comments on a diff post-commit but differential
doesn't surface those diffs.
I re-created a test db on my devserver using mysqldump to get data on
revs > 230000 so I would have some test data. We need to add a simple
viewtime table but I didn't want to do that in production. Here's the
table:
CREATE TABLE differential_viewtime (
viewerPHID varchar(64) not null,
objectPHID varchar(64) not null,
viewTime int unsigned not null,
PRIMARY KEY (viewerPHID, objectPHID)
);
Issues:
-Once we turn this on, all diffs will be 'unviewed'. What do you think
about a 'Clear All' button or something?
-Maybe we should add a pager
This feature would be insanely useful, let me know what you think.
Test Plan:
Loaded Updates in my sandbox
http://phabricator.dev1577.snc6.facebook.com/differential/filter/updates/
Clicked a diff, then went back, made sure diff disappeared from Updates
list
Reviewed By: tuomaspelkonen
Reviewers: epriestley, jungejason, tuomaspelkonen
Commenters: epriestley
CC: epriestley, elynde, tuomaspelkonen
Differential Revision: 169
2011-04-27 10:27:06 +02:00
|
|
|
'DifferentialViewTime' => 'applications/differential/storage/viewtime',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionBranchInformation' => 'applications/diffusion/data/branch',
|
|
|
|
'DiffusionBranchQuery' => 'applications/diffusion/query/branch/base',
|
|
|
|
'DiffusionBranchTableView' => 'applications/diffusion/view/branchtable',
|
2011-03-08 02:25:47 +01:00
|
|
|
'DiffusionBrowseController' => 'applications/diffusion/controller/browse',
|
2011-03-08 18:54:55 +01:00
|
|
|
'DiffusionBrowseFileController' => 'applications/diffusion/controller/file',
|
2011-03-08 02:25:47 +01:00
|
|
|
'DiffusionBrowseQuery' => 'applications/diffusion/query/browse/base',
|
|
|
|
'DiffusionBrowseTableView' => 'applications/diffusion/view/browsetable',
|
2011-03-14 06:03:30 +01:00
|
|
|
'DiffusionChangeController' => 'applications/diffusion/controller/change',
|
2011-03-11 18:34:22 +01:00
|
|
|
'DiffusionCommitChangeTableView' => 'applications/diffusion/view/commitchangetable',
|
|
|
|
'DiffusionCommitController' => 'applications/diffusion/controller/commit',
|
2011-07-24 02:09:03 +02:00
|
|
|
'DiffusionCommitListController' => 'applications/diffusion/controller/commitlist',
|
2011-03-08 00:13:36 +01:00
|
|
|
'DiffusionController' => 'applications/diffusion/controller/base',
|
2011-03-31 02:36:16 +02:00
|
|
|
'DiffusionDiffController' => 'applications/diffusion/controller/diff',
|
|
|
|
'DiffusionDiffQuery' => 'applications/diffusion/query/diff/base',
|
2011-03-08 18:54:55 +01:00
|
|
|
'DiffusionFileContent' => 'applications/diffusion/data/filecontent',
|
|
|
|
'DiffusionFileContentQuery' => 'applications/diffusion/query/filecontent/base',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionGitBranchQuery' => 'applications/diffusion/query/branch/git',
|
2011-03-08 02:25:47 +01:00
|
|
|
'DiffusionGitBrowseQuery' => 'applications/diffusion/query/browse/git',
|
2011-03-31 03:17:36 +02:00
|
|
|
'DiffusionGitDiffQuery' => 'applications/diffusion/query/diff/git',
|
2011-03-08 18:54:55 +01:00
|
|
|
'DiffusionGitFileContentQuery' => 'applications/diffusion/query/filecontent/git',
|
2011-03-09 02:31:44 +01:00
|
|
|
'DiffusionGitHistoryQuery' => 'applications/diffusion/query/history/git',
|
2011-03-31 08:27:06 +02:00
|
|
|
'DiffusionGitLastModifiedQuery' => 'applications/diffusion/query/lastmodified/git',
|
2011-03-08 23:29:02 +01:00
|
|
|
'DiffusionGitRequest' => 'applications/diffusion/request/git',
|
2011-03-09 02:31:44 +01:00
|
|
|
'DiffusionHistoryController' => 'applications/diffusion/controller/history',
|
|
|
|
'DiffusionHistoryQuery' => 'applications/diffusion/query/history/base',
|
|
|
|
'DiffusionHistoryTableView' => 'applications/diffusion/view/historytable',
|
2011-03-08 00:13:36 +01:00
|
|
|
'DiffusionHomeController' => 'applications/diffusion/controller/home',
|
2011-03-31 08:27:06 +02:00
|
|
|
'DiffusionLastModifiedController' => 'applications/diffusion/controller/lastmodified',
|
|
|
|
'DiffusionLastModifiedQuery' => 'applications/diffusion/query/lastmodified/base',
|
Basic support for Mercurial in Diffusion
Summary: Change import script plus almost all the view stuff. Still some rough
edges but this seems to mostly work. Blame is currently unsupported but I think
everything else works properly.
Test Plan:
Imported the hg repository itself. It doesn't immediately seem completely
broken. Here are some screens:
https://secure.phabricator.com/file/view/PHID-FILE-1438b71cc7c4a2eb4569/
https://secure.phabricator.com/file/view/PHID-FILE-3cec4f72f39e7de2d041/
https://secure.phabricator.com/file/view/PHID-FILE-2ea4883f160e8e5098f9/
https://secure.phabricator.com/file/view/PHID-FILE-35f751a36ebf65399ade/
All the parsers were able to churn through it without errors.
Ran the new "reparse.php" script in various one-commit and repository modes.
Browsed/imported some git repos for good measure.
NOTE: The hg repository is only 15,000 commits and around 1,000 files.
Performance is okay but hg doesn't provide performant, native APIs to get some
data efficiently so we have to do some dumb stuff. If some of these interfaces
are cripplingly slow or whatever, let me know and we can start bundling some
Mercurial extensions with Arcanist.
Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran
Reviewed By: Makinde
CC: aran, Makinde, epriestley
Differential Revision: 960
2011-09-26 20:07:38 +02:00
|
|
|
'DiffusionMercurialBranchQuery' => 'applications/diffusion/query/branch/mercurial',
|
|
|
|
'DiffusionMercurialBrowseQuery' => 'applications/diffusion/query/browse/mercurial',
|
|
|
|
'DiffusionMercurialDiffQuery' => 'applications/diffusion/query/diff/mercurial',
|
|
|
|
'DiffusionMercurialFileContentQuery' => 'applications/diffusion/query/filecontent/mercurial',
|
|
|
|
'DiffusionMercurialHistoryQuery' => 'applications/diffusion/query/history/mercurial',
|
|
|
|
'DiffusionMercurialLastModifiedQuery' => 'applications/diffusion/query/lastmodified/mercurial',
|
|
|
|
'DiffusionMercurialRequest' => 'applications/diffusion/request/mercurial',
|
2011-03-09 02:31:44 +01:00
|
|
|
'DiffusionPathChange' => 'applications/diffusion/data/pathchange',
|
2011-03-14 00:19:39 +01:00
|
|
|
'DiffusionPathChangeQuery' => 'applications/diffusion/query/pathchange/base',
|
2011-04-04 04:20:47 +02:00
|
|
|
'DiffusionPathCompleteController' => 'applications/diffusion/controller/pathcomplete',
|
2011-09-14 19:59:52 +02:00
|
|
|
'DiffusionPathIDQuery' => 'applications/diffusion/query/pathid/base',
|
2011-09-14 20:23:39 +02:00
|
|
|
'DiffusionPathQueryTestCase' => 'applications/diffusion/query/pathid/base/__tests__',
|
2011-04-04 04:20:47 +02:00
|
|
|
'DiffusionPathValidateController' => 'applications/diffusion/controller/pathvalidate',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionRepositoryController' => 'applications/diffusion/controller/repository',
|
2011-03-08 02:25:47 +01:00
|
|
|
'DiffusionRepositoryPath' => 'applications/diffusion/data/repositorypath',
|
2011-03-08 23:29:02 +01:00
|
|
|
'DiffusionRequest' => 'applications/diffusion/request/base',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionSvnBrowseQuery' => 'applications/diffusion/query/browse/svn',
|
2011-03-31 02:36:16 +02:00
|
|
|
'DiffusionSvnDiffQuery' => 'applications/diffusion/query/diff/svn',
|
2011-03-14 06:03:30 +01:00
|
|
|
'DiffusionSvnFileContentQuery' => 'applications/diffusion/query/filecontent/svn',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionSvnHistoryQuery' => 'applications/diffusion/query/history/svn',
|
2011-03-31 08:27:06 +02:00
|
|
|
'DiffusionSvnLastModifiedQuery' => 'applications/diffusion/query/lastmodified/svn',
|
2011-03-23 03:34:47 +01:00
|
|
|
'DiffusionSvnRequest' => 'applications/diffusion/request/svn',
|
2011-09-05 19:43:24 +02:00
|
|
|
'DiffusionSymbolController' => 'applications/diffusion/controller/symbol',
|
|
|
|
'DiffusionSymbolQuery' => 'applications/diffusion/query/symbol',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionView' => 'applications/diffusion/view/base',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldAction' => 'applications/herald/storage/action',
|
|
|
|
'HeraldActionConfig' => 'applications/herald/config/action',
|
|
|
|
'HeraldApplyTranscript' => 'applications/herald/storage/transcript/apply',
|
2011-04-04 08:23:36 +02:00
|
|
|
'HeraldCommitAdapter' => 'applications/herald/adapter/commit',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldCondition' => 'applications/herald/storage/condition',
|
|
|
|
'HeraldConditionConfig' => 'applications/herald/config/condition',
|
|
|
|
'HeraldConditionTranscript' => 'applications/herald/storage/transcript/condition',
|
|
|
|
'HeraldContentTypeConfig' => 'applications/herald/config/contenttype',
|
2011-03-22 21:49:46 +01:00
|
|
|
'HeraldController' => 'applications/herald/controller/base',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldDAO' => 'applications/herald/storage/base',
|
2011-03-24 19:07:36 +01:00
|
|
|
'HeraldDeleteController' => 'applications/herald/controller/delete',
|
2011-03-25 05:32:26 +01:00
|
|
|
'HeraldDifferentialRevisionAdapter' => 'applications/herald/adapter/differential',
|
2011-03-24 21:49:21 +01:00
|
|
|
'HeraldDryRunAdapter' => 'applications/herald/adapter/dryrun',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldEffect' => 'applications/herald/engine/effect',
|
|
|
|
'HeraldEngine' => 'applications/herald/engine/engine',
|
|
|
|
'HeraldFieldConfig' => 'applications/herald/config/field',
|
2011-03-22 21:49:46 +01:00
|
|
|
'HeraldHomeController' => 'applications/herald/controller/home',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldInvalidConditionException' => 'applications/herald/engine/engine/exception',
|
|
|
|
'HeraldInvalidFieldException' => 'applications/herald/engine/engine/exception',
|
2011-03-22 22:34:38 +01:00
|
|
|
'HeraldNewController' => 'applications/herald/controller/new',
|
2011-03-24 21:49:21 +01:00
|
|
|
'HeraldObjectAdapter' => 'applications/herald/adapter/base',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldObjectTranscript' => 'applications/herald/storage/transcript/object',
|
|
|
|
'HeraldRecursiveConditionsException' => 'applications/herald/engine/engine/exception',
|
2011-05-28 00:52:26 +02:00
|
|
|
'HeraldRepetitionPolicyConfig' => 'applications/herald/config/repetitionpolicy',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldRule' => 'applications/herald/storage/rule',
|
2011-03-22 23:27:52 +01:00
|
|
|
'HeraldRuleController' => 'applications/herald/controller/rule',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldRuleTranscript' => 'applications/herald/storage/transcript/rule',
|
2011-03-24 21:49:21 +01:00
|
|
|
'HeraldTestConsoleController' => 'applications/herald/controller/test',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldTranscript' => 'applications/herald/storage/transcript/base',
|
2011-03-25 05:32:26 +01:00
|
|
|
'HeraldTranscriptController' => 'applications/herald/controller/transcript',
|
|
|
|
'HeraldTranscriptListController' => 'applications/herald/controller/transcriptlist',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldValueTypeConfig' => 'applications/herald/config/valuetype',
|
2011-01-31 20:55:26 +01:00
|
|
|
'Javelin' => 'infrastructure/javelin/api',
|
2011-09-07 23:01:13 +02:00
|
|
|
'JavelinReactorExample' => 'applications/uiexample/examples/reactor',
|
|
|
|
'JavelinViewExample' => 'applications/uiexample/examples/client',
|
|
|
|
'JavelinViewExampleServerView' => 'applications/uiexample/examples/client',
|
2011-01-16 22:51:39 +01:00
|
|
|
'LiskDAO' => 'storage/lisk/dao',
|
2011-04-30 19:11:59 +02:00
|
|
|
'LiskIsolationTestCase' => 'storage/lisk/dao/__tests__',
|
|
|
|
'LiskIsolationTestDAO' => 'storage/lisk/dao/__tests__',
|
|
|
|
'LiskIsolationTestDAOException' => 'storage/lisk/dao/__tests__',
|
2011-07-27 18:49:50 +02:00
|
|
|
'ManiphestAuxiliaryFieldDefaultSpecification' => 'applications/maniphest/auxiliaryfield/default',
|
|
|
|
'ManiphestAuxiliaryFieldSpecification' => 'applications/maniphest/auxiliaryfield/base',
|
|
|
|
'ManiphestAuxiliaryFieldTypeException' => 'applications/maniphest/auxiliaryfield/typeexception',
|
|
|
|
'ManiphestAuxiliaryFieldValidationException' => 'applications/maniphest/auxiliaryfield/validationexception',
|
2011-07-04 22:04:22 +02:00
|
|
|
'ManiphestConstants' => 'applications/maniphest/constants/base',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestController' => 'applications/maniphest/controller/base',
|
|
|
|
'ManiphestDAO' => 'applications/maniphest/storage/base',
|
2011-07-27 18:49:50 +02:00
|
|
|
'ManiphestDefaultTaskExtensions' => 'applications/maniphest/extensions/task',
|
2011-05-10 01:31:26 +02:00
|
|
|
'ManiphestReplyHandler' => 'applications/maniphest/replyhandler',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTask' => 'applications/maniphest/storage/task',
|
2011-07-26 00:34:56 +02:00
|
|
|
'ManiphestTaskAuxiliaryStorage' => 'applications/maniphest/storage/auxiliary',
|
2011-05-21 03:56:18 +02:00
|
|
|
'ManiphestTaskDescriptionChangeController' => 'applications/maniphest/controller/descriptionchange',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTaskDetailController' => 'applications/maniphest/controller/taskdetail',
|
2011-02-20 23:15:53 +01:00
|
|
|
'ManiphestTaskEditController' => 'applications/maniphest/controller/taskedit',
|
2011-08-05 18:44:43 +02:00
|
|
|
'ManiphestTaskExtensions' => 'applications/maniphest/extensions/base',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTaskListController' => 'applications/maniphest/controller/tasklist',
|
|
|
|
'ManiphestTaskListView' => 'applications/maniphest/view/tasklist',
|
2011-05-28 23:13:12 +02:00
|
|
|
'ManiphestTaskOwner' => 'applications/maniphest/constants/owner',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTaskPriority' => 'applications/maniphest/constants/priority',
|
2011-06-30 01:16:33 +02:00
|
|
|
'ManiphestTaskProject' => 'applications/maniphest/storage/taskproject',
|
|
|
|
'ManiphestTaskQuery' => 'applications/maniphest/query',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTaskStatus' => 'applications/maniphest/constants/status',
|
2011-07-07 19:24:49 +02:00
|
|
|
'ManiphestTaskSubscriber' => 'applications/maniphest/storage/subscriber',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTaskSummaryView' => 'applications/maniphest/view/tasksummary',
|
|
|
|
'ManiphestTransaction' => 'applications/maniphest/storage/transaction',
|
|
|
|
'ManiphestTransactionDetailView' => 'applications/maniphest/view/transactiondetail',
|
|
|
|
'ManiphestTransactionEditor' => 'applications/maniphest/editor/transaction',
|
|
|
|
'ManiphestTransactionListView' => 'applications/maniphest/view/transactionlist',
|
2011-05-10 17:29:28 +02:00
|
|
|
'ManiphestTransactionPreviewController' => 'applications/maniphest/controller/transactionpreview',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTransactionSaveController' => 'applications/maniphest/controller/transactionsave',
|
|
|
|
'ManiphestTransactionType' => 'applications/maniphest/constants/transactiontype',
|
2011-07-04 22:04:22 +02:00
|
|
|
'ManiphestView' => 'applications/maniphest/view/base',
|
2011-01-30 01:16:09 +01:00
|
|
|
'Phabricator404Controller' => 'applications/base/controller/404',
|
2011-01-31 06:28:45 +01:00
|
|
|
'PhabricatorAuthController' => 'applications/auth/controller/base',
|
Build a basic calendar view
Summary:
This is a very small step toward building a Status and possibly an Oncall tool.
Build a calendar view which renders months.
Much of my hesitance to bang these tools out is that dealing with
dates/calendaring is basically horrible, so I'm trying to ease into it.
This calendar is locale-aware and all that jazz.
Test Plan:
- See:
https://secure.phabricator.com/file/view/PHID-FILE-c07a9c663a7d040d2529/
- Verified that months have the right number of days, today is the right day
of the week, months begin on the day after previous months end on, etc.
Reviewed By: aran
Reviewers: jungejason, tuomaspelkonen, aran
Commenters: cwbeck, jungejason
CC: blair, aran, epriestley, cwbeck, jungejason
Differential Revision: 791
2011-08-08 03:26:31 +02:00
|
|
|
'PhabricatorCalendarBrowseController' => 'applications/calendar/controller/browse',
|
|
|
|
'PhabricatorCalendarController' => 'applications/calendar/controller/base',
|
2011-01-24 18:00:29 +01:00
|
|
|
'PhabricatorConduitAPIController' => 'applications/conduit/controller/api',
|
2011-06-14 21:17:14 +02:00
|
|
|
'PhabricatorConduitCertificateToken' => 'applications/conduit/storage/token',
|
2011-01-24 18:00:29 +01:00
|
|
|
'PhabricatorConduitConnectionLog' => 'applications/conduit/storage/connectionlog',
|
|
|
|
'PhabricatorConduitConsoleController' => 'applications/conduit/controller/console',
|
|
|
|
'PhabricatorConduitController' => 'applications/conduit/controller/base',
|
|
|
|
'PhabricatorConduitDAO' => 'applications/conduit/storage/base',
|
|
|
|
'PhabricatorConduitLogController' => 'applications/conduit/controller/log',
|
|
|
|
'PhabricatorConduitMethodCallLog' => 'applications/conduit/storage/methodcalllog',
|
2011-06-14 21:17:14 +02:00
|
|
|
'PhabricatorConduitTokenController' => 'applications/conduit/controller/token',
|
Track content sources (email, web, conduit, mobile) for replies
Summary:
When an object is updated, record the content source for the update. This mostly
isn't terribly useful but one concrete thing I want to do with it is let admins
audit via-email replies more easily since there are a bunch of options which let
you do hyjinx if you intentionally configure them insecurely. I think having a
little more auditability around this feature is generally good. At some point
I'm going to turn this into a link admins can click to see details.
It also allows us to see how frequently different mechanisms are used, and lets
you see if someone is at their desk or on a mobile or whatever, at least
indirectly.
The "tablet" and "mobile" sources are currently unused but I figured I'd throw
them in anyway. SMS support should definitely happen at some point.
Not 100% sure about the design for this, I might change it to plain text at some
point.
Test Plan: Updated objects and saw update sources rendered.
Reviewers: jungejason, tuomaspelkonen, aran
Reviewed By: jungejason
CC: aran, epriestley, jungejason
Differential Revision: 844
2011-08-22 19:25:45 +02:00
|
|
|
'PhabricatorContentSource' => 'applications/metamta/contentsource/source',
|
|
|
|
'PhabricatorContentSourceView' => 'applications/metamta/contentsource/view',
|
2011-01-23 02:48:55 +01:00
|
|
|
'PhabricatorController' => 'applications/base/controller/base',
|
2011-06-13 01:06:17 +02:00
|
|
|
'PhabricatorCountdownController' => 'applications/countdown/controller/base',
|
|
|
|
'PhabricatorCountdownDAO' => 'applications/countdown/storage/base',
|
|
|
|
'PhabricatorCountdownDeleteController' => 'applications/countdown/controller/delete',
|
|
|
|
'PhabricatorCountdownEditController' => 'applications/countdown/controller/edit',
|
|
|
|
'PhabricatorCountdownListController' => 'applications/countdown/controller/list',
|
|
|
|
'PhabricatorCountdownViewController' => 'applications/countdown/controller/view',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorDaemon' => 'infrastructure/daemon/base',
|
2011-05-03 02:05:22 +02:00
|
|
|
'PhabricatorDaemonCombinedLogController' => 'applications/daemon/controller/combined',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorDaemonConsoleController' => 'applications/daemon/controller/console',
|
2011-03-14 23:43:56 +01:00
|
|
|
'PhabricatorDaemonControl' => 'infrastructure/daemon/control',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorDaemonController' => 'applications/daemon/controller/base',
|
2011-03-15 21:38:14 +01:00
|
|
|
'PhabricatorDaemonDAO' => 'infrastructure/daemon/storage/base',
|
|
|
|
'PhabricatorDaemonLog' => 'infrastructure/daemon/storage/log',
|
|
|
|
'PhabricatorDaemonLogEvent' => 'infrastructure/daemon/storage/event',
|
2011-05-03 02:05:22 +02:00
|
|
|
'PhabricatorDaemonLogEventsView' => 'applications/daemon/view/daemonlogevents',
|
|
|
|
'PhabricatorDaemonLogListController' => 'applications/daemon/controller/loglist',
|
|
|
|
'PhabricatorDaemonLogListView' => 'applications/daemon/view/daemonloglist',
|
2011-03-15 21:38:14 +01:00
|
|
|
'PhabricatorDaemonLogViewController' => 'applications/daemon/controller/logview',
|
2011-03-14 23:43:56 +01:00
|
|
|
'PhabricatorDaemonReference' => 'infrastructure/daemon/control/reference',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorDaemonTimelineConsoleController' => 'applications/daemon/controller/timeline',
|
|
|
|
'PhabricatorDaemonTimelineEventController' => 'applications/daemon/controller/timelineevent',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorDefaultFileStorageEngineSelector' => 'applications/files/engineselector/default',
|
2011-08-08 00:14:23 +02:00
|
|
|
'PhabricatorDefaultSearchEngineSelector' => 'applications/search/selector/default',
|
2011-07-17 20:06:02 +02:00
|
|
|
'PhabricatorDifferenceEngine' => 'infrastructure/diff/engine',
|
2011-01-23 02:48:55 +01:00
|
|
|
'PhabricatorDirectoryCategory' => 'applications/directory/storage/category',
|
|
|
|
'PhabricatorDirectoryCategoryDeleteController' => 'applications/directory/controller/categorydelete',
|
|
|
|
'PhabricatorDirectoryCategoryEditController' => 'applications/directory/controller/categoryedit',
|
|
|
|
'PhabricatorDirectoryCategoryListController' => 'applications/directory/controller/categorylist',
|
|
|
|
'PhabricatorDirectoryController' => 'applications/directory/controller/base',
|
|
|
|
'PhabricatorDirectoryDAO' => 'applications/directory/storage/base',
|
|
|
|
'PhabricatorDirectoryItem' => 'applications/directory/storage/item',
|
|
|
|
'PhabricatorDirectoryItemDeleteController' => 'applications/directory/controller/itemdelete',
|
|
|
|
'PhabricatorDirectoryItemEditController' => 'applications/directory/controller/itemedit',
|
|
|
|
'PhabricatorDirectoryItemListController' => 'applications/directory/controller/itemlist',
|
|
|
|
'PhabricatorDirectoryMainController' => 'applications/directory/controller/main',
|
2011-05-12 19:06:54 +02:00
|
|
|
'PhabricatorDisabledUserController' => 'applications/auth/controller/disabled',
|
2011-02-06 01:57:21 +01:00
|
|
|
'PhabricatorDraft' => 'applications/draft/storage/draft',
|
|
|
|
'PhabricatorDraftDAO' => 'applications/draft/storage/base',
|
2011-01-31 20:55:26 +01:00
|
|
|
'PhabricatorEmailLoginController' => 'applications/auth/controller/email',
|
|
|
|
'PhabricatorEmailTokenController' => 'applications/auth/controller/emailtoken',
|
|
|
|
'PhabricatorEnv' => 'infrastructure/env',
|
2011-08-31 22:25:13 +02:00
|
|
|
'PhabricatorEvent' => 'infrastructure/events/event',
|
|
|
|
'PhabricatorEventConstants' => 'infrastructure/events/constant/base',
|
|
|
|
'PhabricatorEventEngine' => 'infrastructure/events/engine',
|
|
|
|
'PhabricatorEventListener' => 'infrastructure/events/listener',
|
|
|
|
'PhabricatorEventType' => 'infrastructure/events/constant/type',
|
2011-07-10 00:44:49 +02:00
|
|
|
'PhabricatorFeedConstants' => 'applications/feed/constants/base',
|
2011-07-05 17:35:18 +02:00
|
|
|
'PhabricatorFeedController' => 'applications/feed/controller/base',
|
|
|
|
'PhabricatorFeedDAO' => 'applications/feed/storage/base',
|
2011-07-10 03:03:59 +02:00
|
|
|
'PhabricatorFeedPublicStreamController' => 'applications/feed/controller/publicstream',
|
2011-07-05 17:35:18 +02:00
|
|
|
'PhabricatorFeedQuery' => 'applications/feed/query',
|
|
|
|
'PhabricatorFeedStory' => 'applications/feed/story/base',
|
|
|
|
'PhabricatorFeedStoryData' => 'applications/feed/storage/story',
|
2011-07-10 00:44:49 +02:00
|
|
|
'PhabricatorFeedStoryDifferential' => 'applications/feed/story/differential',
|
2011-07-12 16:23:04 +02:00
|
|
|
'PhabricatorFeedStoryPhriction' => 'applications/feed/story/phriction',
|
2011-07-05 17:35:18 +02:00
|
|
|
'PhabricatorFeedStoryPublisher' => 'applications/feed/publisher',
|
|
|
|
'PhabricatorFeedStoryReference' => 'applications/feed/storage/storyreference',
|
2011-07-09 22:28:09 +02:00
|
|
|
'PhabricatorFeedStoryStatus' => 'applications/feed/story/status',
|
2011-07-10 00:44:49 +02:00
|
|
|
'PhabricatorFeedStoryTypeConstants' => 'applications/feed/constants/story',
|
2011-07-05 17:35:18 +02:00
|
|
|
'PhabricatorFeedStoryUnknown' => 'applications/feed/story/unknown',
|
|
|
|
'PhabricatorFeedStoryView' => 'applications/feed/view/story',
|
|
|
|
'PhabricatorFeedStreamController' => 'applications/feed/controller/stream',
|
|
|
|
'PhabricatorFeedView' => 'applications/feed/view/base',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFile' => 'applications/files/storage/file',
|
Provide a setting which forces all file views to be served from an alternate
domain
Summary:
See D758, D759.
- Provide a strongly recommended setting which permits configuration of an
alternate domain.
- Lock cookies down better: set them on the exact domain, and use SSL-only if
the configuration is HTTPS.
- Prevent Phabriator from setting cookies on other domains.
This assumes D759 will land, it is not effective without that change.
Test Plan:
- Attempted to login from a different domain and was rejected.
- Logged out, logged back in normally.
- Put install in setup mode and verified it revealed a warning.
- Configured an alterate domain.
- Tried to view an image with an old URI, got a 400.
- Went to /files/ and verified links rendered to the alternate domain.
- Viewed an alternate domain file.
- Tried to view an alternate domain file without the secret key, got a 404.
Reviewers: andrewjcg, erling, aran, tuomaspelkonen, jungejason, codeblock
CC: aran
Differential Revision: 760
2011-08-02 07:24:00 +02:00
|
|
|
'PhabricatorFileAltViewController' => 'applications/files/controller/altview',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileController' => 'applications/files/controller/base',
|
|
|
|
'PhabricatorFileDAO' => 'applications/files/storage/base',
|
2011-05-22 20:55:10 +02:00
|
|
|
'PhabricatorFileDropUploadController' => 'applications/files/controller/dropupload',
|
2011-04-14 00:15:48 +02:00
|
|
|
'PhabricatorFileImageMacro' => 'applications/files/storage/imagemacro',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileListController' => 'applications/files/controller/list',
|
2011-05-03 19:45:45 +02:00
|
|
|
'PhabricatorFileMacroDeleteController' => 'applications/files/controller/macrodelete',
|
|
|
|
'PhabricatorFileMacroEditController' => 'applications/files/controller/macroedit',
|
|
|
|
'PhabricatorFileMacroListController' => 'applications/files/controller/macrolist',
|
2011-05-02 23:20:24 +02:00
|
|
|
'PhabricatorFileProxyController' => 'applications/files/controller/proxy',
|
|
|
|
'PhabricatorFileProxyImage' => 'applications/files/storage/proxyimage',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileStorageBlob' => 'applications/files/storage/storageblob',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorFileStorageEngine' => 'applications/files/engine/base',
|
|
|
|
'PhabricatorFileStorageEngineSelector' => 'applications/files/engineselector/base',
|
2011-05-22 23:40:51 +02:00
|
|
|
'PhabricatorFileTransformController' => 'applications/files/controller/transform',
|
2011-01-25 00:52:35 +01:00
|
|
|
'PhabricatorFileURI' => 'applications/files/uri',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileUploadController' => 'applications/files/controller/upload',
|
2011-08-16 21:37:50 +02:00
|
|
|
'PhabricatorFileUploadException' => 'applications/files/exception/upload',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileViewController' => 'applications/files/controller/view',
|
2011-07-03 18:47:31 +02:00
|
|
|
'PhabricatorGarbageCollectorDaemon' => 'infrastructure/daemon/garbagecollector',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorGoodForNothingWorker' => 'infrastructure/daemon/workers/worker/goodfornothing',
|
2011-02-17 23:32:01 +01:00
|
|
|
'PhabricatorHandleObjectSelectorDataView' => 'applications/phid/handle/view/selector',
|
2011-05-28 20:36:00 +02:00
|
|
|
'PhabricatorHelpController' => 'applications/help/controller/base',
|
|
|
|
'PhabricatorHelpKeyboardShortcutController' => 'applications/help/controller/keyboardshortcut',
|
2011-05-15 18:29:48 +02:00
|
|
|
'PhabricatorIRCBot' => 'infrastructure/daemon/irc/bot',
|
|
|
|
'PhabricatorIRCHandler' => 'infrastructure/daemon/irc/handler/base',
|
|
|
|
'PhabricatorIRCMessage' => 'infrastructure/daemon/irc/message',
|
2011-05-17 23:40:25 +02:00
|
|
|
'PhabricatorIRCObjectNameHandler' => 'infrastructure/daemon/irc/handler/objectname',
|
2011-05-15 18:29:48 +02:00
|
|
|
'PhabricatorIRCProtocolHandler' => 'infrastructure/daemon/irc/handler/protocol',
|
2011-06-26 17:37:47 +02:00
|
|
|
'PhabricatorImageTransformer' => 'applications/files/transform',
|
2011-10-20 03:26:21 +02:00
|
|
|
'PhabricatorInfrastructureTestCase' => 'infrastructure/__tests__',
|
Bring Javelin into Phabricator via git submodule, not copy-and-paste
Summary:
Javelin is currently embedded in Phabricator via copy-and-paste of prebuilt
packages. This is not so great.
Pull it in as a submodule instead and make all the Phabriator resources declare
proper dependency trees. Add Javelin linting.
Test Plan:
I tried to run through pretty much all the JS functionality on the site. This is
still a high-risk change, but I did a pretty thorough test
Differential: inline comments, revealing diffs, list tokenizers, comment
preview, editing/deleting comments, add review action.
Maniphest: list tokenizer, comment actions
Herald: rule editing, tokenizers, add/remove rows
Reviewed By: tomo
Reviewers: aran, tomo, mroch, jungejason, tuomaspelkonen
CC: aran, tomo, epriestley
Differential Revision: 223
2011-05-04 00:11:55 +02:00
|
|
|
'PhabricatorJavelinLinter' => 'infrastructure/lint/linter/javelin',
|
|
|
|
'PhabricatorLintEngine' => 'infrastructure/lint/engine',
|
2011-01-23 02:48:55 +01:00
|
|
|
'PhabricatorLiskDAO' => 'applications/base/storage/lisk',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorLocalDiskFileStorageEngine' => 'applications/files/engine/localdisk',
|
Improve time localization code
Summary:
- We throw on a missing date right now, in the DateTime constructor. This can
happen in reasonable cases and this is display code, so handle it more
gracefully (see T520).
- This stuff is a little slow and we sometimes render many hundreds of dates
per page. I've been seeing it in profiles on and off. Memoize timezones to
improve performance.
- Some minor code duplication that would have become less-minor with the
constructor change, consolidate the logic.
- Add some unit tests and a little documentation.
Test Plan:
- Ran unit tests.
- Profiled 1,000 calls to phabricator_datetime(), cost dropped from ~49ms to
~19ms with addition of memoization. This is still slower than I'd like but I
don't think there's an easy way to squeeze it down further.
Reviewers: ajtrichards, jungejason, nh, tuomaspelkonen, aran
Reviewed By: ajtrichards
CC: aran, ajtrichards, epriestley
Differential Revision: 966
2011-09-27 18:03:55 +02:00
|
|
|
'PhabricatorLocalTimeTestCase' => 'view/utils/__tests__',
|
2011-01-31 06:28:45 +01:00
|
|
|
'PhabricatorLoginController' => 'applications/auth/controller/login',
|
|
|
|
'PhabricatorLogoutController' => 'applications/auth/controller/logout',
|
2011-01-26 18:33:31 +01:00
|
|
|
'PhabricatorMailImplementationAdapter' => 'applications/metamta/adapter/base',
|
2011-02-08 06:08:32 +01:00
|
|
|
'PhabricatorMailImplementationAmazonSESAdapter' => 'applications/metamta/adapter/amazonses',
|
2011-01-26 18:33:31 +01:00
|
|
|
'PhabricatorMailImplementationPHPMailerLiteAdapter' => 'applications/metamta/adapter/phpmailerlite',
|
2011-05-26 19:00:26 +02:00
|
|
|
'PhabricatorMailImplementationSendGridAdapter' => 'applications/metamta/adapter/sendgrid',
|
Fix a threading issue with Amazon SES
Summary:
Amazon SES does not allow us to set a Message-ID header, which means
that threads are incorrect in Mail.app (and presumably other applications
which respect In-Reply-To and References) because the initial email does not
have anything which attaches it to the rest of the thread. To fix this, never
rely on Message-ID if the mailer doesn't support Message-ID.
(In the Amazon SES case, Amazon generates its own Message-ID which we can't
know ahead of time).
I additionally used all the Lisk isolation from the other tests to make this
testable and wrote tests for it.
I also moved the idea of a thread ID lower in the stack and out of
DifferentialMail, which should not be responsible for implementation details.
NOTE: If you push this, it will cause a one-time break of threading for
everyone using Outlook since I've changed the seed for generating Thread-Index.
I feel like this is okay to avoid introducing more complexity here.
Test Plan:
Created and then updated a revision, messages delivered over Amazon
SES threaded correctly in Mail.app. Verified headers. Unit tests.
Reviewed By: rm
Reviewers: aran, tuomaspelkonen, jungejason, rm
Commenters: aran
CC: aran, rm, epriestley
Differential Revision: 195
2011-04-30 20:47:00 +02:00
|
|
|
'PhabricatorMailImplementationTestAdapter' => 'applications/metamta/adapter/test',
|
2011-05-10 01:31:26 +02:00
|
|
|
'PhabricatorMailReplyHandler' => 'applications/metamta/replyhandler/base',
|
Generalize the markup engine factory
Summary:
This thing services every app but it lives inside Differential right now. Pull
it out, and separate the factory interfaces per-application.
This will let us accommodate changes we need to make for Phriction to support
wiki linking.
Test Plan: Tested remarkup in differential, diffusion, maniphest, people,
slowvote.
Reviewed By: hsb
Reviewers: hsb, codeblock, jungejason, tuomaspelkonen, aran
CC: aran, hsb
Differential Revision: 646
2011-07-12 00:58:32 +02:00
|
|
|
'PhabricatorMarkupEngine' => 'applications/markup/engine',
|
2011-01-26 02:40:21 +01:00
|
|
|
'PhabricatorMetaMTAController' => 'applications/metamta/controller/base',
|
|
|
|
'PhabricatorMetaMTADAO' => 'applications/metamta/storage/base',
|
2011-02-10 02:39:55 +01:00
|
|
|
'PhabricatorMetaMTADaemon' => 'applications/metamta/daemon/mta',
|
2011-06-01 17:33:14 +02:00
|
|
|
'PhabricatorMetaMTAEmailBodyParser' => 'applications/metamta/parser',
|
|
|
|
'PhabricatorMetaMTAEmailBodyParserTestCase' => 'applications/metamta/parser/__tests__',
|
2011-01-26 02:40:21 +01:00
|
|
|
'PhabricatorMetaMTAListController' => 'applications/metamta/controller/list',
|
|
|
|
'PhabricatorMetaMTAMail' => 'applications/metamta/storage/mail',
|
Fix a threading issue with Amazon SES
Summary:
Amazon SES does not allow us to set a Message-ID header, which means
that threads are incorrect in Mail.app (and presumably other applications
which respect In-Reply-To and References) because the initial email does not
have anything which attaches it to the rest of the thread. To fix this, never
rely on Message-ID if the mailer doesn't support Message-ID.
(In the Amazon SES case, Amazon generates its own Message-ID which we can't
know ahead of time).
I additionally used all the Lisk isolation from the other tests to make this
testable and wrote tests for it.
I also moved the idea of a thread ID lower in the stack and out of
DifferentialMail, which should not be responsible for implementation details.
NOTE: If you push this, it will cause a one-time break of threading for
everyone using Outlook since I've changed the seed for generating Thread-Index.
I feel like this is okay to avoid introducing more complexity here.
Test Plan:
Created and then updated a revision, messages delivered over Amazon
SES threaded correctly in Mail.app. Verified headers. Unit tests.
Reviewed By: rm
Reviewers: aran, tuomaspelkonen, jungejason, rm
Commenters: aran
CC: aran, rm, epriestley
Differential Revision: 195
2011-04-30 20:47:00 +02:00
|
|
|
'PhabricatorMetaMTAMailTestCase' => 'applications/metamta/storage/mail/__tests__',
|
2011-01-26 19:40:38 +01:00
|
|
|
'PhabricatorMetaMTAMailingList' => 'applications/metamta/storage/mailinglist',
|
|
|
|
'PhabricatorMetaMTAMailingListEditController' => 'applications/metamta/controller/mailinglistedit',
|
|
|
|
'PhabricatorMetaMTAMailingListsController' => 'applications/metamta/controller/mailinglists',
|
2011-05-05 08:09:42 +02:00
|
|
|
'PhabricatorMetaMTAReceiveController' => 'applications/metamta/controller/receive',
|
|
|
|
'PhabricatorMetaMTAReceivedListController' => 'applications/metamta/controller/receivedlist',
|
|
|
|
'PhabricatorMetaMTAReceivedMail' => 'applications/metamta/storage/receivedmail',
|
2011-01-26 02:40:21 +01:00
|
|
|
'PhabricatorMetaMTASendController' => 'applications/metamta/controller/send',
|
2011-05-30 20:07:05 +02:00
|
|
|
'PhabricatorMetaMTASendGridReceiveController' => 'applications/metamta/controller/sendgridreceive',
|
2011-01-26 18:08:26 +01:00
|
|
|
'PhabricatorMetaMTAViewController' => 'applications/metamta/controller/view',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorMySQLFileStorageEngine' => 'applications/files/engine/mysql',
|
2011-02-28 04:47:22 +01:00
|
|
|
'PhabricatorOAuthDefaultRegistrationController' => 'applications/auth/controller/oauthregistration/default',
|
2011-02-21 07:47:56 +01:00
|
|
|
'PhabricatorOAuthDiagnosticsController' => 'applications/auth/controller/oauthdiagnostics',
|
|
|
|
'PhabricatorOAuthFailureView' => 'applications/auth/view/oauthfailure',
|
|
|
|
'PhabricatorOAuthLoginController' => 'applications/auth/controller/oauth',
|
|
|
|
'PhabricatorOAuthProvider' => 'applications/auth/oauth/provider/base',
|
|
|
|
'PhabricatorOAuthProviderFacebook' => 'applications/auth/oauth/provider/facebook',
|
|
|
|
'PhabricatorOAuthProviderGithub' => 'applications/auth/oauth/provider/github',
|
Add Google as an OAuth2 provider (BETA)
Summary:
This is pretty straightforward, except:
- We need to request read/write access to the address book to get the account
ID (which we MUST have) and real name, email and account name (which we'd like
to have). This is way more access than we should need, but there's apparently no
"get_loggedin_user_basic_information" type of call in the Google API suite (or,
at least, I couldn't find one).
- We can't get the profile picture or profile URI since there's no Plus API
access and Google users don't have meaningful public pages otherwise.
- Google doesn't save the fact that you've authorized the app, so every time
you want to login you need to reaffirm that you want to give us silly amounts of
access. Phabricator sessions are pretty long-duration though so this shouldn't
be a major issue.
Test Plan:
- Registered, logged out, and logged in with Google.
- Registered, logged out, and logged in with Facebook / Github to make sure I
didn't break anything.
- Linked / unlinked Google accounts.
Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran
Reviewed By: aran
CC: aran, epriestley, Makinde
Differential Revision: 916
2011-09-09 01:37:22 +02:00
|
|
|
'PhabricatorOAuthProviderGoogle' => 'applications/auth/oauth/provider/google',
|
2011-02-28 04:47:22 +01:00
|
|
|
'PhabricatorOAuthRegistrationController' => 'applications/auth/controller/oauthregistration/base',
|
2011-02-22 07:51:34 +01:00
|
|
|
'PhabricatorOAuthUnlinkController' => 'applications/auth/controller/unlink',
|
2011-07-05 22:18:47 +02:00
|
|
|
'PhabricatorObjectGraph' => 'applications/phid/graph',
|
2011-01-26 18:02:09 +01:00
|
|
|
'PhabricatorObjectHandle' => 'applications/phid/handle',
|
Add object status to Handles
Summary:
We use ObjectHandles as proxy objects which can refer to any other object in the
system. Add the concept of the underlying object's "status" (e.g., open, closed
or busy).
This allows us to render completed tasks and revisions with strikethrough. In
the future, if we implement OOO or something, we could render users with a
"busy" status if they're on vacation, etc.
Test Plan: Viewed a task with closed revisions and dependencies:
https://secure.phabricator.com/file/view/PHID-FILE-6183e81286fa3288d33d/
Reviewed By: codeblock
Reviewers: codeblock, hunterbridges, jungejason, tuomaspelkonen, aran
CC: aran, codeblock
Differential Revision: 772
2011-08-03 15:37:18 +02:00
|
|
|
'PhabricatorObjectHandleConstants' => 'applications/phid/handle/const/base',
|
2011-01-26 18:02:09 +01:00
|
|
|
'PhabricatorObjectHandleData' => 'applications/phid/handle/data',
|
Add object status to Handles
Summary:
We use ObjectHandles as proxy objects which can refer to any other object in the
system. Add the concept of the underlying object's "status" (e.g., open, closed
or busy).
This allows us to render completed tasks and revisions with strikethrough. In
the future, if we implement OOO or something, we could render users with a
"busy" status if they're on vacation, etc.
Test Plan: Viewed a task with closed revisions and dependencies:
https://secure.phabricator.com/file/view/PHID-FILE-6183e81286fa3288d33d/
Reviewed By: codeblock
Reviewers: codeblock, hunterbridges, jungejason, tuomaspelkonen, aran
CC: aran, codeblock
Differential Revision: 772
2011-08-03 15:37:18 +02:00
|
|
|
'PhabricatorObjectHandleStatus' => 'applications/phid/handle/const/status',
|
2011-02-17 07:14:09 +01:00
|
|
|
'PhabricatorObjectSelectorDialog' => 'view/control/objectselector',
|
2011-04-03 23:48:36 +02:00
|
|
|
'PhabricatorOwnersController' => 'applications/owners/controller/base',
|
|
|
|
'PhabricatorOwnersDAO' => 'applications/owners/storage/base',
|
2011-04-04 07:03:27 +02:00
|
|
|
'PhabricatorOwnersDeleteController' => 'applications/owners/controller/delete',
|
2011-04-03 23:48:36 +02:00
|
|
|
'PhabricatorOwnersDetailController' => 'applications/owners/controller/detail',
|
2011-04-04 07:03:27 +02:00
|
|
|
'PhabricatorOwnersEditController' => 'applications/owners/controller/edit',
|
2011-04-03 23:48:36 +02:00
|
|
|
'PhabricatorOwnersListController' => 'applications/owners/controller/list',
|
|
|
|
'PhabricatorOwnersOwner' => 'applications/owners/storage/owner',
|
|
|
|
'PhabricatorOwnersPackage' => 'applications/owners/storage/package',
|
|
|
|
'PhabricatorOwnersPath' => 'applications/owners/storage/path',
|
2011-01-23 06:09:13 +01:00
|
|
|
'PhabricatorPHID' => 'applications/phid/storage/phid',
|
2011-03-03 03:58:21 +01:00
|
|
|
'PhabricatorPHIDConstants' => 'applications/phid/constants',
|
2011-01-23 06:09:13 +01:00
|
|
|
'PhabricatorPHIDController' => 'applications/phid/controller/base',
|
|
|
|
'PhabricatorPHIDDAO' => 'applications/phid/storage/base',
|
|
|
|
'PhabricatorPHIDListController' => 'applications/phid/controller/list',
|
2011-01-26 18:02:09 +01:00
|
|
|
'PhabricatorPHIDLookupController' => 'applications/phid/controller/lookup',
|
2011-06-10 08:53:53 +02:00
|
|
|
'PhabricatorPaste' => 'applications/paste/storage/paste',
|
|
|
|
'PhabricatorPasteController' => 'applications/paste/controller/base',
|
|
|
|
'PhabricatorPasteCreateController' => 'applications/paste/controller/create',
|
|
|
|
'PhabricatorPasteDAO' => 'applications/paste/storage/base',
|
2011-06-14 04:12:30 +02:00
|
|
|
'PhabricatorPasteListController' => 'applications/paste/controller/list',
|
2011-06-10 08:53:53 +02:00
|
|
|
'PhabricatorPasteViewController' => 'applications/paste/controller/view',
|
2011-01-24 03:09:16 +01:00
|
|
|
'PhabricatorPeopleController' => 'applications/people/controller/base',
|
|
|
|
'PhabricatorPeopleEditController' => 'applications/people/controller/edit',
|
|
|
|
'PhabricatorPeopleListController' => 'applications/people/controller/list',
|
Provide an activity log for login and administrative actions
Summary: This isn't complete, but I figured I'd ship it for review while it's still smallish.
Provide an activity log for high-level system actions (logins, admin actions). This basically allows two things to happen:
- The log itself is useful if there are shenanigans.
- Password login can check it and start CAPTCHA'ing users after a few failed attempts.
I'm going to change how the admin stuff works a little bit too, since right now you can make someone an agent, grab their certificate, revert them back to a normal user, and then act on their behalf over Conduit. This is a little silly, I'm going to move "agent" to the create workflow instead. I'll also add a confirm/email step to the administrative password reset flow.
Test Plan: Took various administrative and non-administrative actions, they appeared in the logs. Filtered the logs in a bunch of different ways.
Reviewers: jungejason, tuomaspelkonen, aran
CC:
Differential Revision: 302
2011-05-18 03:42:21 +02:00
|
|
|
'PhabricatorPeopleLogsController' => 'applications/people/controller/logs',
|
2011-01-24 03:09:16 +01:00
|
|
|
'PhabricatorPeopleProfileController' => 'applications/people/controller/profile',
|
2011-06-18 10:13:56 +02:00
|
|
|
'PhabricatorProfileView' => 'view/layout/profile',
|
2011-02-21 03:41:23 +01:00
|
|
|
'PhabricatorProject' => 'applications/project/storage/project',
|
|
|
|
'PhabricatorProjectAffiliation' => 'applications/project/storage/affiliation',
|
|
|
|
'PhabricatorProjectAffiliationEditController' => 'applications/project/controller/editaffiliation',
|
|
|
|
'PhabricatorProjectController' => 'applications/project/controller/base',
|
2011-06-26 17:37:47 +02:00
|
|
|
'PhabricatorProjectCreateController' => 'applications/project/controller/create',
|
2011-02-21 03:41:23 +01:00
|
|
|
'PhabricatorProjectDAO' => 'applications/project/storage/base',
|
|
|
|
'PhabricatorProjectListController' => 'applications/project/controller/list',
|
|
|
|
'PhabricatorProjectProfile' => 'applications/project/storage/profile',
|
|
|
|
'PhabricatorProjectProfileController' => 'applications/project/controller/profile',
|
2011-06-18 10:13:56 +02:00
|
|
|
'PhabricatorProjectProfileEditController' => 'applications/project/controller/profileedit',
|
|
|
|
'PhabricatorProjectStatus' => 'applications/project/constants/status',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorProjectSubproject' => 'applications/project/storage/subproject',
|
2011-04-04 19:29:46 +02:00
|
|
|
'PhabricatorRedirectController' => 'applications/base/controller/redirect',
|
Fix conservative CSRF token cycling limit
Summary:
We currently cycle CSRF tokens every hour and check for the last two valid ones.
This means that a form could go stale in as little as an hour, and is certainly
stale after two.
When a stale form is submitted, you basically get a terrible heisen-state where
some of your data might persist if you're lucky but more likely it all just
vanishes. The .js file below outlines some more details.
This is a pretty terrible UX and we don't need to be as conservative about CSRF
validation as we're being. Remedy this problem by:
- Accepting the last 6 CSRF tokens instead of the last 1 (i.e., pages are
valid for at least 6 hours, and for as long as 7).
- Using JS to refresh the CSRF token every 55 minutes (i.e., pages connected
to the internet are valid indefinitely).
- Showing the user an explicit message about what went wrong when CSRF
validation fails so the experience is less bewildering.
They should now only be able to submit with a bad CSRF token if:
- They load a page, disconnect from the internet for 7 hours, reconnect, and
submit the form within 55 minutes; or
- They are actually the victim of a CSRF attack.
We could eventually fix the first one by tracking reconnects, which might be
"free" once the notification server gets built. It will probably never be an
issue in practice.
Test Plan:
- Reduced CSRF cycle frequency to 2 seconds, submitted a form after 15
seconds, got the CSRF exception.
- Reduced csrf-refresh cycle frequency to 3 seconds, submitted a form after 15
seconds, got a clean form post.
- Added debugging code the the csrf refresh to make sure it was doing sensible
things (pulling different tokens, finding all the inputs).
Reviewed By: aran
Reviewers: tuomaspelkonen, jungejason, aran
CC: aran, epriestley
Differential Revision: 660
2011-07-13 23:05:18 +02:00
|
|
|
'PhabricatorRefreshCSRFController' => 'applications/auth/controller/refresh',
|
2011-02-12 03:06:43 +01:00
|
|
|
'PhabricatorRemarkupRuleDifferential' => 'infrastructure/markup/remarkup/markuprule/differential',
|
Provide a "reference-with-full-name" syntax for Remarkup
Summary:
Provide a {T123} syntax which pulls in the entire name of an object, not just a
link to it. A major use for this is organizing projects using wiki pages. Since
handle links show object status now, this lets you organize stuff in an ad-hoc
way and get a reasonable overview of it. We can make handles richer in the
future, too.
The performance on this isn't perfect (it adds some potential single gets) but I
think it's okay for now and I don't want to make remarkup engine even more
complex until the preprocess/postprocess stuff has had a chance to settle and
I'm more confident it works.
In Differential and Maniphest we'll also incorrectly cache the object
state/name, but that'll fix itself once I move the cache code to use
preprocess/postprocess correctly.
Test Plan:
- See https://secure.phabricator.com/file/view/PHID-FILE-5f9ca32407bec20899b9/
for an example.
- Generated and looked over the documentation.
Reviewed By: jungejason
Reviewers: jungejason, tuomaspelkonen, aran, hunterbridges
CC: skrul, aran, jungejason, epriestley
Differential Revision: 784
2011-08-05 17:50:26 +02:00
|
|
|
'PhabricatorRemarkupRuleDifferentialHandle' => 'infrastructure/markup/remarkup/markuprule/handle/differential',
|
2011-04-11 12:02:19 +02:00
|
|
|
'PhabricatorRemarkupRuleDiffusion' => 'infrastructure/markup/remarkup/markuprule/diffusion',
|
2011-07-15 23:17:55 +02:00
|
|
|
'PhabricatorRemarkupRuleEmbedFile' => 'infrastructure/markup/remarkup/markuprule/embedobject',
|
2011-04-14 00:15:48 +02:00
|
|
|
'PhabricatorRemarkupRuleImageMacro' => 'infrastructure/markup/remarkup/markuprule/imagemacro',
|
2011-02-12 03:06:43 +01:00
|
|
|
'PhabricatorRemarkupRuleManiphest' => 'infrastructure/markup/remarkup/markuprule/maniphest',
|
Provide a "reference-with-full-name" syntax for Remarkup
Summary:
Provide a {T123} syntax which pulls in the entire name of an object, not just a
link to it. A major use for this is organizing projects using wiki pages. Since
handle links show object status now, this lets you organize stuff in an ad-hoc
way and get a reasonable overview of it. We can make handles richer in the
future, too.
The performance on this isn't perfect (it adds some potential single gets) but I
think it's okay for now and I don't want to make remarkup engine even more
complex until the preprocess/postprocess stuff has had a chance to settle and
I'm more confident it works.
In Differential and Maniphest we'll also incorrectly cache the object
state/name, but that'll fix itself once I move the cache code to use
preprocess/postprocess correctly.
Test Plan:
- See https://secure.phabricator.com/file/view/PHID-FILE-5f9ca32407bec20899b9/
for an example.
- Generated and looked over the documentation.
Reviewed By: jungejason
Reviewers: jungejason, tuomaspelkonen, aran, hunterbridges
CC: skrul, aran, jungejason, epriestley
Differential Revision: 784
2011-08-05 17:50:26 +02:00
|
|
|
'PhabricatorRemarkupRuleManiphestHandle' => 'infrastructure/markup/remarkup/markuprule/handle/maniphest',
|
2011-06-24 19:59:57 +02:00
|
|
|
'PhabricatorRemarkupRuleMention' => 'infrastructure/markup/remarkup/markuprule/mention',
|
Provide a "reference-with-full-name" syntax for Remarkup
Summary:
Provide a {T123} syntax which pulls in the entire name of an object, not just a
link to it. A major use for this is organizing projects using wiki pages. Since
handle links show object status now, this lets you organize stuff in an ad-hoc
way and get a reasonable overview of it. We can make handles richer in the
future, too.
The performance on this isn't perfect (it adds some potential single gets) but I
think it's okay for now and I don't want to make remarkup engine even more
complex until the preprocess/postprocess stuff has had a chance to settle and
I'm more confident it works.
In Differential and Maniphest we'll also incorrectly cache the object
state/name, but that'll fix itself once I move the cache code to use
preprocess/postprocess correctly.
Test Plan:
- See https://secure.phabricator.com/file/view/PHID-FILE-5f9ca32407bec20899b9/
for an example.
- Generated and looked over the documentation.
Reviewed By: jungejason
Reviewers: jungejason, tuomaspelkonen, aran, hunterbridges
CC: skrul, aran, jungejason, epriestley
Differential Revision: 784
2011-08-05 17:50:26 +02:00
|
|
|
'PhabricatorRemarkupRuleObjectHandle' => 'infrastructure/markup/remarkup/markuprule/handle',
|
2011-05-31 19:23:31 +02:00
|
|
|
'PhabricatorRemarkupRuleObjectName' => 'infrastructure/markup/remarkup/markuprule/objectname',
|
2011-06-27 08:57:43 +02:00
|
|
|
'PhabricatorRemarkupRulePaste' => 'infrastructure/markup/remarkup/markuprule/paste',
|
2011-07-12 05:14:46 +02:00
|
|
|
'PhabricatorRemarkupRulePhriction' => 'infrastructure/markup/remarkup/markuprule/phriction',
|
2011-05-02 23:20:24 +02:00
|
|
|
'PhabricatorRemarkupRuleProxyImage' => 'infrastructure/markup/remarkup/markuprule/proxyimage',
|
2011-05-27 21:50:02 +02:00
|
|
|
'PhabricatorRemarkupRuleYoutube' => 'infrastructure/markup/remarkup/markuprule/youtube',
|
2011-02-13 03:26:15 +01:00
|
|
|
'PhabricatorRepository' => 'applications/repository/storage/repository',
|
2011-04-06 05:49:31 +02:00
|
|
|
'PhabricatorRepositoryArcanistProject' => 'applications/repository/storage/arcanistproject',
|
|
|
|
'PhabricatorRepositoryArcanistProjectEditController' => 'applications/repository/controller/arcansistprojectedit',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryCommit' => 'applications/repository/storage/commit',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositoryCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/base',
|
|
|
|
'PhabricatorRepositoryCommitData' => 'applications/repository/storage/commitdata',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryCommitDiscoveryDaemon' => 'applications/repository/daemon/commitdiscovery/base',
|
2011-04-04 08:23:36 +02:00
|
|
|
'PhabricatorRepositoryCommitHeraldWorker' => 'applications/repository/worker/herald',
|
2011-04-02 02:11:05 +02:00
|
|
|
'PhabricatorRepositoryCommitMessageDetailParser' => 'applications/repository/parser/base',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositoryCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/base',
|
|
|
|
'PhabricatorRepositoryCommitParserWorker' => 'applications/repository/worker/base',
|
|
|
|
'PhabricatorRepositoryCommitTaskDaemon' => 'applications/repository/daemon/committask',
|
2011-02-13 03:26:15 +01:00
|
|
|
'PhabricatorRepositoryController' => 'applications/repository/controller/base',
|
|
|
|
'PhabricatorRepositoryCreateController' => 'applications/repository/controller/create',
|
|
|
|
'PhabricatorRepositoryDAO' => 'applications/repository/storage/base',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryDaemon' => 'applications/repository/daemon/base',
|
2011-04-02 02:11:05 +02:00
|
|
|
'PhabricatorRepositoryDefaultCommitMessageDetailParser' => 'applications/repository/parser/default',
|
2011-05-05 21:53:39 +02:00
|
|
|
'PhabricatorRepositoryDeleteController' => 'applications/repository/controller/delete',
|
2011-02-13 03:26:15 +01:00
|
|
|
'PhabricatorRepositoryEditController' => 'applications/repository/controller/edit',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositoryGitCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/git',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryGitCommitDiscoveryDaemon' => 'applications/repository/daemon/commitdiscovery/git',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositoryGitCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/git',
|
2011-03-21 01:46:02 +01:00
|
|
|
'PhabricatorRepositoryGitFetchDaemon' => 'applications/repository/daemon/gitfetch',
|
2011-02-13 03:26:15 +01:00
|
|
|
'PhabricatorRepositoryGitHubNotification' => 'applications/repository/storage/githubnotification',
|
|
|
|
'PhabricatorRepositoryGitHubPostReceiveController' => 'applications/repository/controller/github-post-receive',
|
|
|
|
'PhabricatorRepositoryListController' => 'applications/repository/controller/list',
|
Basic support for Mercurial in Diffusion
Summary: Change import script plus almost all the view stuff. Still some rough
edges but this seems to mostly work. Blame is currently unsupported but I think
everything else works properly.
Test Plan:
Imported the hg repository itself. It doesn't immediately seem completely
broken. Here are some screens:
https://secure.phabricator.com/file/view/PHID-FILE-1438b71cc7c4a2eb4569/
https://secure.phabricator.com/file/view/PHID-FILE-3cec4f72f39e7de2d041/
https://secure.phabricator.com/file/view/PHID-FILE-2ea4883f160e8e5098f9/
https://secure.phabricator.com/file/view/PHID-FILE-35f751a36ebf65399ade/
All the parsers were able to churn through it without errors.
Ran the new "reparse.php" script in various one-commit and repository modes.
Browsed/imported some git repos for good measure.
NOTE: The hg repository is only 15,000 commits and around 1,000 files.
Performance is okay but hg doesn't provide performant, native APIs to get some
data efficiently so we have to do some dumb stuff. If some of these interfaces
are cripplingly slow or whatever, let me know and we can start bundling some
Mercurial extensions with Arcanist.
Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran
Reviewed By: Makinde
CC: aran, Makinde, epriestley
Differential Revision: 960
2011-09-26 20:07:38 +02:00
|
|
|
'PhabricatorRepositoryMercurialCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/mercurial',
|
Add a Mercurial commit discovery daemon
Summary:
Repository import has three major steps:
- Commit discovery (serial)
- Message parsing (parallel, mostly VCS independent)
- Change parsing (parallel, highly VCS dependent)
This implements commit discovery for Mercurial, similar to git's parsing:
- List the heads of all the branches.
- If we haven't already discovered them, follow them back to their roots (or
the first commit we have discovered).
- Import all the newly discovered commits, oldest first.
This is a little complicated but it ensures we discover commits in depth order,
so the discovery process is robust against interruption/failure. If we just
inserted commits as we went, we might read the tip, insert it, and then crash.
When we ran again, we'd think we had already discovered commits older than HEAD.
This also allows later stages to rely on being able to find Phabricator commit
IDs which correspond to parent commits.
NOTE: This importer is fairly slow because "hg" has a large startup time
(compare "hg --version" to "git --version" and "svn --version"; on my machine,
hg has 60ms of overhead for any command) and we need to run many commands (see
the whole "hg id" mess). You can expect something like 10,000 per hour, which
means you may need to run overnight to discover a large repository (IIRC, the
svn/git discovery processes are both about an order of magnitude faster). We
could improve this with batching, but I want to keep it as simple as possible
for now.
Test Plan: Discovered all the commits in the main Mercurial repository,
http://selenic.com/repo/hg.
Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran
Reviewed By: Makinde
CC: aran, Makinde
Differential Revision: 943
2011-09-16 12:56:23 +02:00
|
|
|
'PhabricatorRepositoryMercurialCommitDiscoveryDaemon' => 'applications/repository/daemon/commitdiscovery/mercurial',
|
2011-09-16 18:37:15 +02:00
|
|
|
'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/mercurial',
|
2011-08-09 21:47:46 +02:00
|
|
|
'PhabricatorRepositoryMercurialPullDaemon' => 'applications/repository/daemon/mercurialpull',
|
|
|
|
'PhabricatorRepositoryPullLocalDaemon' => 'applications/repository/daemon/pulllocal',
|
2011-03-31 09:33:44 +02:00
|
|
|
'PhabricatorRepositoryShortcut' => 'applications/repository/storage/shortcut',
|
2011-03-11 23:13:23 +01:00
|
|
|
'PhabricatorRepositorySvnCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/svn',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositorySvnCommitDiscoveryDaemon' => 'applications/repository/daemon/commitdiscovery/svn',
|
|
|
|
'PhabricatorRepositorySvnCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/svn',
|
2011-09-05 02:31:16 +02:00
|
|
|
'PhabricatorRepositorySymbol' => 'applications/repository/storage/symbol',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryType' => 'applications/repository/constants/repositorytype',
|
2011-07-31 22:54:58 +02:00
|
|
|
'PhabricatorS3FileStorageEngine' => 'applications/files/engine/s3',
|
2011-05-05 20:00:05 +02:00
|
|
|
'PhabricatorSQLPatchList' => 'infrastructure/setup/sql',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchAbstractDocument' => 'applications/search/index/abstractdocument',
|
2011-05-16 20:43:39 +02:00
|
|
|
'PhabricatorSearchAttachController' => 'applications/search/controller/attach',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchBaseController' => 'applications/search/controller/base',
|
2011-06-20 06:02:48 +02:00
|
|
|
'PhabricatorSearchCommitIndexer' => 'applications/search/index/indexer/repository',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchController' => 'applications/search/controller/search',
|
|
|
|
'PhabricatorSearchDAO' => 'applications/search/storage/base',
|
|
|
|
'PhabricatorSearchDifferentialIndexer' => 'applications/search/index/indexer/differential',
|
|
|
|
'PhabricatorSearchDocument' => 'applications/search/storage/document/document',
|
|
|
|
'PhabricatorSearchDocumentField' => 'applications/search/storage/document/field',
|
|
|
|
'PhabricatorSearchDocumentIndexer' => 'applications/search/index/indexer/base',
|
|
|
|
'PhabricatorSearchDocumentRelationship' => 'applications/search/storage/document/relationship',
|
2011-08-08 00:14:23 +02:00
|
|
|
'PhabricatorSearchEngine' => 'applications/search/engine/base',
|
|
|
|
'PhabricatorSearchEngineMySQL' => 'applications/search/engine/mysql',
|
|
|
|
'PhabricatorSearchEngineSelector' => 'applications/search/selector/base',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchField' => 'applications/search/constants/field',
|
2011-06-15 16:43:43 +02:00
|
|
|
'PhabricatorSearchIndexController' => 'applications/search/controller/index',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchManiphestIndexer' => 'applications/search/index/indexer/maniphest',
|
2011-07-12 02:29:08 +02:00
|
|
|
'PhabricatorSearchPhrictionIndexer' => 'applications/search/index/indexer/phriction',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchQuery' => 'applications/search/storage/query',
|
|
|
|
'PhabricatorSearchRelationship' => 'applications/search/constants/relationship',
|
Improve search result listing
Summary:
Make it prettier, paginate, add user pictures, show document types, clean some
stuff up a little. Plenty of room for improvement but this should make it a lot
more useful.
Test Plan:
Here's what the new one looks like:
https://secure.phabricator.com/file/view/PHID-FILE-edce2b83c2e3a121c2b7/
Reviewed By: jungejason
Reviewers: tomo, jungejason, aran, tuomaspelkonen, mroch
Commenters: tomo
CC: aran, tomo, jungejason, epriestley
Differential Revision: 545
2011-06-28 23:35:02 +02:00
|
|
|
'PhabricatorSearchResultView' => 'applications/search/view/searchresult',
|
2011-05-16 20:43:39 +02:00
|
|
|
'PhabricatorSearchSelectController' => 'applications/search/controller/select',
|
2011-06-23 22:31:20 +02:00
|
|
|
'PhabricatorSearchUserIndexer' => 'applications/search/index/indexer/user',
|
2011-05-05 20:00:05 +02:00
|
|
|
'PhabricatorSetup' => 'infrastructure/setup',
|
2011-07-08 20:13:11 +02:00
|
|
|
'PhabricatorSlowvoteChoice' => 'applications/slowvote/storage/choice',
|
|
|
|
'PhabricatorSlowvoteComment' => 'applications/slowvote/storage/comment',
|
|
|
|
'PhabricatorSlowvoteController' => 'applications/slowvote/controller/base',
|
|
|
|
'PhabricatorSlowvoteCreateController' => 'applications/slowvote/controller/create',
|
|
|
|
'PhabricatorSlowvoteDAO' => 'applications/slowvote/storage/base',
|
|
|
|
'PhabricatorSlowvoteListController' => 'applications/slowvote/controller/list',
|
|
|
|
'PhabricatorSlowvoteOption' => 'applications/slowvote/storage/option',
|
|
|
|
'PhabricatorSlowvotePoll' => 'applications/slowvote/storage/poll',
|
|
|
|
'PhabricatorSlowvotePollController' => 'applications/slowvote/controller/poll',
|
2011-01-23 02:48:55 +01:00
|
|
|
'PhabricatorStandardPageView' => 'view/page/standard',
|
2011-04-08 20:13:29 +02:00
|
|
|
'PhabricatorStatusController' => 'applications/status/base',
|
2011-08-30 22:12:20 +02:00
|
|
|
'PhabricatorSymbolNameLinter' => 'infrastructure/lint/hook/xhpastsymbolname',
|
2011-07-06 21:12:17 +02:00
|
|
|
'PhabricatorSyntaxHighlighter' => 'applications/markup/syntax',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorTaskmasterDaemon' => 'infrastructure/daemon/workers/taskmaster',
|
2011-04-30 19:11:41 +02:00
|
|
|
'PhabricatorTestCase' => 'infrastructure/testing/testcase',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorTimelineCursor' => 'infrastructure/daemon/timeline/storage/cursor',
|
|
|
|
'PhabricatorTimelineDAO' => 'infrastructure/daemon/timeline/storage/base',
|
|
|
|
'PhabricatorTimelineEvent' => 'infrastructure/daemon/timeline/storage/event',
|
|
|
|
'PhabricatorTimelineEventData' => 'infrastructure/daemon/timeline/storage/eventdata',
|
|
|
|
'PhabricatorTimelineIterator' => 'infrastructure/daemon/timeline/cursor/iterator',
|
2011-06-13 01:06:17 +02:00
|
|
|
'PhabricatorTimer' => 'applications/countdown/storage/timer',
|
2011-05-22 23:40:51 +02:00
|
|
|
'PhabricatorTransformedFile' => 'applications/files/storage/transformed',
|
2011-08-03 17:17:53 +02:00
|
|
|
'PhabricatorTrivialTestCase' => 'infrastructure/testing/testcase/__tests__',
|
2011-01-25 22:48:05 +01:00
|
|
|
'PhabricatorTypeaheadCommonDatasourceController' => 'applications/typeahead/controller/common',
|
|
|
|
'PhabricatorTypeaheadDatasourceController' => 'applications/typeahead/controller/base',
|
2011-04-01 02:06:33 +02:00
|
|
|
'PhabricatorUIExample' => 'applications/uiexample/examples/base',
|
|
|
|
'PhabricatorUIExampleController' => 'applications/uiexample/controller/base',
|
|
|
|
'PhabricatorUIExampleRenderController' => 'applications/uiexample/controller/render',
|
2011-04-04 00:50:06 +02:00
|
|
|
'PhabricatorUIListFilterExample' => 'applications/uiexample/examples/listfilter',
|
2011-04-01 02:06:33 +02:00
|
|
|
'PhabricatorUIPagerExample' => 'applications/uiexample/examples/pager',
|
2011-01-24 03:09:16 +01:00
|
|
|
'PhabricatorUser' => 'applications/people/storage/user',
|
2011-07-18 17:02:00 +02:00
|
|
|
'PhabricatorUserAccountSettingsPanelController' => 'applications/people/controller/settings/panels/account',
|
|
|
|
'PhabricatorUserConduitSettingsPanelController' => 'applications/people/controller/settings/panels/conduit',
|
2011-01-24 03:09:16 +01:00
|
|
|
'PhabricatorUserDAO' => 'applications/people/storage/base',
|
2011-07-18 17:02:00 +02:00
|
|
|
'PhabricatorUserEmailSettingsPanelController' => 'applications/people/controller/settings/panels/email',
|
Provide an activity log for login and administrative actions
Summary: This isn't complete, but I figured I'd ship it for review while it's still smallish.
Provide an activity log for high-level system actions (logins, admin actions). This basically allows two things to happen:
- The log itself is useful if there are shenanigans.
- Password login can check it and start CAPTCHA'ing users after a few failed attempts.
I'm going to change how the admin stuff works a little bit too, since right now you can make someone an agent, grab their certificate, revert them back to a normal user, and then act on their behalf over Conduit. This is a little silly, I'm going to move "agent" to the create workflow instead. I'll also add a confirm/email step to the administrative password reset flow.
Test Plan: Took various administrative and non-administrative actions, they appeared in the logs. Filtered the logs in a bunch of different ways.
Reviewers: jungejason, tuomaspelkonen, aran
CC:
Differential Revision: 302
2011-05-18 03:42:21 +02:00
|
|
|
'PhabricatorUserLog' => 'applications/people/storage/log',
|
2011-02-21 07:47:56 +01:00
|
|
|
'PhabricatorUserOAuthInfo' => 'applications/people/storage/useroauthinfo',
|
2011-07-18 17:02:00 +02:00
|
|
|
'PhabricatorUserOAuthSettingsPanelController' => 'applications/people/controller/settings/panels/oauth',
|
Add change password settings panel
Summary:
In password-based auth environments, there is now a user settings
panel to allow them to change their password.
Test Plan:
Click settings, choose password from the left:
* enter current password, new password (twice), log out, and log in with
new password
* enter current password, non-matching passwords, and get error
* enter invalid old password, and get error
* use firebug to change csrf token and verify that it does not save with
and invalid token
Changed config to disable password auth, loaded settings panel and saw
that password was no longer visible. Tried loading the panel anyway and
got redirected.
Reviewers: epriestley
Reviewed By: epriestley
CC: aran, epriestley
Differential Revision: 890
2011-09-04 10:53:58 +02:00
|
|
|
'PhabricatorUserPasswordSettingsPanelController' => 'applications/people/controller/settings/panels/password',
|
2011-07-24 20:02:08 +02:00
|
|
|
'PhabricatorUserPreferenceSettingsPanelController' => 'applications/people/controller/settings/panels/preferences',
|
2011-03-31 04:21:09 +02:00
|
|
|
'PhabricatorUserPreferences' => 'applications/people/storage/preferences',
|
2011-02-20 03:28:41 +01:00
|
|
|
'PhabricatorUserProfile' => 'applications/people/storage/profile',
|
2011-07-25 00:03:59 +02:00
|
|
|
'PhabricatorUserProfileSettingsPanelController' => 'applications/people/controller/settings/panels/profile',
|
2011-07-22 19:17:57 +02:00
|
|
|
'PhabricatorUserSSHKey' => 'applications/people/storage/usersshkey',
|
|
|
|
'PhabricatorUserSSHKeysSettingsPanelController' => 'applications/people/controller/settings/panels/sshkeys',
|
2011-02-06 07:36:21 +01:00
|
|
|
'PhabricatorUserSettingsController' => 'applications/people/controller/settings',
|
2011-07-18 17:02:00 +02:00
|
|
|
'PhabricatorUserSettingsPanelController' => 'applications/people/controller/settings/panels/base',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorWorker' => 'infrastructure/daemon/workers/worker',
|
|
|
|
'PhabricatorWorkerDAO' => 'infrastructure/daemon/workers/storage/base',
|
|
|
|
'PhabricatorWorkerTask' => 'infrastructure/daemon/workers/storage/task',
|
|
|
|
'PhabricatorWorkerTaskData' => 'infrastructure/daemon/workers/storage/taskdata',
|
2011-03-27 07:55:18 +02:00
|
|
|
'PhabricatorWorkerTaskDetailController' => 'applications/daemon/controller/workertaskdetail',
|
2011-04-07 04:17:05 +02:00
|
|
|
'PhabricatorXHPASTViewController' => 'applications/xhpastview/controller/base',
|
|
|
|
'PhabricatorXHPASTViewDAO' => 'applications/xhpastview/storage/base',
|
|
|
|
'PhabricatorXHPASTViewFrameController' => 'applications/xhpastview/controller/viewframe',
|
|
|
|
'PhabricatorXHPASTViewFramesetController' => 'applications/xhpastview/controller/viewframeset',
|
|
|
|
'PhabricatorXHPASTViewInputController' => 'applications/xhpastview/controller/viewinput',
|
|
|
|
'PhabricatorXHPASTViewPanelController' => 'applications/xhpastview/controller/viewpanel',
|
|
|
|
'PhabricatorXHPASTViewParseTree' => 'applications/xhpastview/storage/parsetree',
|
|
|
|
'PhabricatorXHPASTViewRunController' => 'applications/xhpastview/controller/run',
|
|
|
|
'PhabricatorXHPASTViewStreamController' => 'applications/xhpastview/controller/viewstream',
|
|
|
|
'PhabricatorXHPASTViewTreeController' => 'applications/xhpastview/controller/viewtree',
|
2011-02-02 22:48:52 +01:00
|
|
|
'PhabricatorXHProfController' => 'applications/xhprof/controller/base',
|
|
|
|
'PhabricatorXHProfProfileController' => 'applications/xhprof/controller/profile',
|
|
|
|
'PhabricatorXHProfProfileSymbolView' => 'applications/xhprof/view/symbol',
|
|
|
|
'PhabricatorXHProfProfileTopLevelView' => 'applications/xhprof/view/toplevel',
|
2011-07-12 16:23:04 +02:00
|
|
|
'PhrictionActionConstants' => 'applications/phriction/constants/action',
|
|
|
|
'PhrictionConstants' => 'applications/phriction/constants/base',
|
2011-07-11 21:34:53 +02:00
|
|
|
'PhrictionContent' => 'applications/phriction/storage/content',
|
2011-07-11 17:54:22 +02:00
|
|
|
'PhrictionController' => 'applications/phriction/controller/base',
|
|
|
|
'PhrictionDAO' => 'applications/phriction/storage/base',
|
2011-07-17 20:06:02 +02:00
|
|
|
'PhrictionDiffController' => 'applications/phriction/controller/diff',
|
2011-07-11 17:54:22 +02:00
|
|
|
'PhrictionDocument' => 'applications/phriction/storage/document',
|
|
|
|
'PhrictionDocumentController' => 'applications/phriction/controller/document',
|
2011-08-26 21:50:28 +02:00
|
|
|
'PhrictionDocumentEditor' => 'applications/phriction/editor/document',
|
2011-07-17 03:25:45 +02:00
|
|
|
'PhrictionDocumentPreviewController' => 'applications/phriction/controller/documentpreview',
|
2011-07-12 17:08:03 +02:00
|
|
|
'PhrictionDocumentTestCase' => 'applications/phriction/storage/document/__tests__',
|
2011-07-11 21:34:53 +02:00
|
|
|
'PhrictionEditController' => 'applications/phriction/controller/edit',
|
2011-07-12 00:06:19 +02:00
|
|
|
'PhrictionHistoryController' => 'applications/phriction/controller/history',
|
2011-07-12 00:42:12 +02:00
|
|
|
'PhrictionListController' => 'applications/phriction/controller/list',
|
2011-01-16 22:51:39 +01:00
|
|
|
),
|
|
|
|
'function' =>
|
|
|
|
array(
|
Improve time localization code
Summary:
- We throw on a missing date right now, in the DateTime constructor. This can
happen in reasonable cases and this is display code, so handle it more
gracefully (see T520).
- This stuff is a little slow and we sometimes render many hundreds of dates
per page. I've been seeing it in profiles on and off. Memoize timezones to
improve performance.
- Some minor code duplication that would have become less-minor with the
constructor change, consolidate the logic.
- Add some unit tests and a little documentation.
Test Plan:
- Ran unit tests.
- Profiled 1,000 calls to phabricator_datetime(), cost dropped from ~49ms to
~19ms with addition of memoization. This is still slower than I'd like but I
don't think there's an easy way to squeeze it down further.
Reviewers: ajtrichards, jungejason, nh, tuomaspelkonen, aran
Reviewed By: ajtrichards
CC: aran, ajtrichards, epriestley
Differential Revision: 966
2011-09-27 18:03:55 +02:00
|
|
|
'__phabricator_format_local_time' => 'view/utils',
|
2011-01-16 22:51:39 +01:00
|
|
|
'_qsprintf_check_scalar_type' => 'storage/qsprintf',
|
|
|
|
'_qsprintf_check_type' => 'storage/qsprintf',
|
2011-01-31 20:55:26 +01:00
|
|
|
'celerity_generate_unique_node_id' => 'infrastructure/celerity/api',
|
|
|
|
'celerity_register_resource_map' => 'infrastructure/celerity/map',
|
|
|
|
'javelin_render_tag' => 'infrastructure/javelin/markup',
|
2011-06-18 22:07:02 +02:00
|
|
|
'phabricator_date' => 'view/utils',
|
|
|
|
'phabricator_datetime' => 'view/utils',
|
2011-01-31 03:24:57 +01:00
|
|
|
'phabricator_format_relative_time' => 'view/utils',
|
|
|
|
'phabricator_format_timestamp' => 'view/utils',
|
|
|
|
'phabricator_format_units_generic' => 'view/utils',
|
2011-02-15 00:34:20 +01:00
|
|
|
'phabricator_render_form' => 'infrastructure/javelin/markup',
|
2011-06-18 22:07:02 +02:00
|
|
|
'phabricator_time' => 'view/utils',
|
2011-01-16 22:51:39 +01:00
|
|
|
'qsprintf' => 'storage/qsprintf',
|
|
|
|
'queryfx' => 'storage/queryfx',
|
|
|
|
'queryfx_all' => 'storage/queryfx',
|
|
|
|
'queryfx_one' => 'storage/queryfx',
|
2011-01-31 20:55:26 +01:00
|
|
|
'require_celerity_resource' => 'infrastructure/celerity/api',
|
2011-01-16 22:51:39 +01:00
|
|
|
'vqsprintf' => 'storage/qsprintf',
|
|
|
|
'vqueryfx' => 'storage/queryfx',
|
2011-01-27 20:35:04 +01:00
|
|
|
'vqueryfx_all' => 'storage/queryfx',
|
2011-01-16 22:51:39 +01:00
|
|
|
'xsprintf_query' => 'storage/qsprintf',
|
|
|
|
),
|
|
|
|
'requires_class' =>
|
|
|
|
array(
|
2011-05-09 10:10:40 +02:00
|
|
|
'Aphront304Response' => 'AphrontResponse',
|
2011-01-30 21:08:40 +01:00
|
|
|
'Aphront400Response' => 'AphrontResponse',
|
2011-01-16 22:51:39 +01:00
|
|
|
'Aphront404Response' => 'AphrontResponse',
|
2011-01-25 20:57:47 +01:00
|
|
|
'AphrontAjaxResponse' => 'AphrontResponse',
|
Improve drag-and-drop uploader
Summary:
Make it discoverable, show uploading progress, show file thumbnails, allow you
to remove files, make it a generic form component.
Test Plan:
Uploaded ducks
Reviewed By: tomo
Reviewers: aran, tomo, jungejason, tuomaspelkonen
CC: anjali, aran, epriestley, tomo
Differential Revision: 334
2011-05-23 01:11:41 +02:00
|
|
|
'AphrontAttachedFileView' => 'AphrontView',
|
Fix conservative CSRF token cycling limit
Summary:
We currently cycle CSRF tokens every hour and check for the last two valid ones.
This means that a form could go stale in as little as an hour, and is certainly
stale after two.
When a stale form is submitted, you basically get a terrible heisen-state where
some of your data might persist if you're lucky but more likely it all just
vanishes. The .js file below outlines some more details.
This is a pretty terrible UX and we don't need to be as conservative about CSRF
validation as we're being. Remedy this problem by:
- Accepting the last 6 CSRF tokens instead of the last 1 (i.e., pages are
valid for at least 6 hours, and for as long as 7).
- Using JS to refresh the CSRF token every 55 minutes (i.e., pages connected
to the internet are valid indefinitely).
- Showing the user an explicit message about what went wrong when CSRF
validation fails so the experience is less bewildering.
They should now only be able to submit with a bad CSRF token if:
- They load a page, disconnect from the internet for 7 hours, reconnect, and
submit the form within 55 minutes; or
- They are actually the victim of a CSRF attack.
We could eventually fix the first one by tracking reconnects, which might be
"free" once the notification server gets built. It will probably never be an
issue in practice.
Test Plan:
- Reduced CSRF cycle frequency to 2 seconds, submitted a form after 15
seconds, got the CSRF exception.
- Reduced csrf-refresh cycle frequency to 3 seconds, submitted a form after 15
seconds, got a clean form post.
- Added debugging code the the csrf refresh to make sure it was doing sensible
things (pulling different tokens, finding all the inputs).
Reviewed By: aran
Reviewers: tuomaspelkonen, jungejason, aran
CC: aran, epriestley
Differential Revision: 660
2011-07-13 23:05:18 +02:00
|
|
|
'AphrontCSRFException' => 'AphrontException',
|
Build a basic calendar view
Summary:
This is a very small step toward building a Status and possibly an Oncall tool.
Build a calendar view which renders months.
Much of my hesitance to bang these tools out is that dealing with
dates/calendaring is basically horrible, so I'm trying to ease into it.
This calendar is locale-aware and all that jazz.
Test Plan:
- See:
https://secure.phabricator.com/file/view/PHID-FILE-c07a9c663a7d040d2529/
- Verified that months have the right number of days, today is the right day
of the week, months begin on the day after previous months end on, etc.
Reviewed By: aran
Reviewers: jungejason, tuomaspelkonen, aran
Commenters: cwbeck, jungejason
CC: blair, aran, epriestley, cwbeck, jungejason
Differential Revision: 791
2011-08-08 03:26:31 +02:00
|
|
|
'AphrontCalendarMonthView' => 'AphrontView',
|
Tweak style on "Create Another Task" button
Summary:
Not totally sure I'm in love with this but I think it's somewhat non-terrible,
despite the lack of lens flare.
Also made "Cancel" take you back to the task if you got to "Create" from "Create
Another Task".
Test Plan:
- Style:
https://secure.phabricator.com/file/view/PHID-FILE-ad37d3c1f3b2c7a7a7d1/
- Hit "Cancel" from "Create Another", got sent back to task.
- Hit "Cancel" from normal create, got sent back to list.
- Tried to save an invalid task after making changes to CC/Projects, changes
were preserved.
Reviewed By: codeblock
Reviewers: hunterbridges, jungejason, tuomaspelkonen, aran, codeblock
CC: aran, epriestley, codeblock
Differential Revision: 736
2011-07-27 19:46:22 +02:00
|
|
|
'AphrontContextBarView' => 'AphrontView',
|
2011-03-13 01:17:34 +01:00
|
|
|
'AphrontCrumbsView' => 'AphrontView',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontDefaultApplicationConfiguration' => 'AphrontApplicationConfiguration',
|
|
|
|
'AphrontDefaultApplicationController' => 'AphrontController',
|
|
|
|
'AphrontDialogResponse' => 'AphrontResponse',
|
|
|
|
'AphrontDialogView' => 'AphrontView',
|
|
|
|
'AphrontErrorView' => 'AphrontView',
|
2011-05-23 02:06:42 +02:00
|
|
|
'AphrontFilePreviewView' => 'AphrontView',
|
2011-01-23 03:33:00 +01:00
|
|
|
'AphrontFileResponse' => 'AphrontResponse',
|
2011-01-26 02:40:21 +01:00
|
|
|
'AphrontFormCheckboxControl' => 'AphrontFormControl',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontFormControl' => 'AphrontView',
|
2011-02-05 02:53:14 +01:00
|
|
|
'AphrontFormDividerControl' => 'AphrontFormControl',
|
Improve drag-and-drop uploader
Summary:
Make it discoverable, show uploading progress, show file thumbnails, allow you
to remove files, make it a generic form component.
Test Plan:
Uploaded ducks
Reviewed By: tomo
Reviewers: aran, tomo, jungejason, tuomaspelkonen
CC: anjali, aran, epriestley, tomo
Differential Revision: 334
2011-05-23 01:11:41 +02:00
|
|
|
'AphrontFormDragAndDropUploadControl' => 'AphrontFormControl',
|
2011-01-23 03:33:00 +01:00
|
|
|
'AphrontFormFileControl' => 'AphrontFormControl',
|
2011-06-10 00:28:29 +02:00
|
|
|
'AphrontFormLayoutView' => 'AphrontView',
|
2011-01-24 20:36:53 +01:00
|
|
|
'AphrontFormMarkupControl' => 'AphrontFormControl',
|
2011-01-31 20:55:26 +01:00
|
|
|
'AphrontFormPasswordControl' => 'AphrontFormControl',
|
|
|
|
'AphrontFormRecaptchaControl' => 'AphrontFormControl',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontFormSelectControl' => 'AphrontFormControl',
|
2011-01-23 03:33:00 +01:00
|
|
|
'AphrontFormStaticControl' => 'AphrontFormControl',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontFormSubmitControl' => 'AphrontFormControl',
|
|
|
|
'AphrontFormTextAreaControl' => 'AphrontFormControl',
|
|
|
|
'AphrontFormTextControl' => 'AphrontFormControl',
|
2011-04-04 00:50:06 +02:00
|
|
|
'AphrontFormToggleButtonsControl' => 'AphrontFormControl',
|
2011-01-25 22:48:05 +01:00
|
|
|
'AphrontFormTokenizerControl' => 'AphrontFormControl',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontFormView' => 'AphrontView',
|
2011-02-20 21:50:28 +01:00
|
|
|
'AphrontHeadsupActionListView' => 'AphrontView',
|
|
|
|
'AphrontHeadsupActionView' => 'AphrontView',
|
2011-04-30 19:11:41 +02:00
|
|
|
'AphrontIsolatedDatabaseConnection' => 'AphrontDatabaseConnection',
|
|
|
|
'AphrontIsolatedDatabaseConnectionTestCase' => 'PhabricatorTestCase',
|
2011-09-07 23:01:13 +02:00
|
|
|
'AphrontJavelinView' => 'AphrontView',
|
2011-06-08 20:53:10 +02:00
|
|
|
'AphrontKeyboardShortcutsAvailableView' => 'AphrontView',
|
2011-04-04 00:50:06 +02:00
|
|
|
'AphrontListFilterView' => 'AphrontView',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontMySQLDatabaseConnection' => 'AphrontDatabaseConnection',
|
|
|
|
'AphrontNullView' => 'AphrontView',
|
|
|
|
'AphrontPageView' => 'AphrontView',
|
2011-04-01 02:06:33 +02:00
|
|
|
'AphrontPagerView' => 'AphrontView',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontPanelView' => 'AphrontView',
|
2011-04-30 09:18:13 +02:00
|
|
|
'AphrontQueryAccessDeniedException' => 'AphrontQueryRecoverableException',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontQueryConnectionException' => 'AphrontQueryException',
|
|
|
|
'AphrontQueryConnectionLostException' => 'AphrontQueryRecoverableException',
|
|
|
|
'AphrontQueryCountException' => 'AphrontQueryException',
|
2011-01-31 06:28:45 +01:00
|
|
|
'AphrontQueryDuplicateKeyException' => 'AphrontQueryException',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontQueryObjectMissingException' => 'AphrontQueryException',
|
|
|
|
'AphrontQueryParameterException' => 'AphrontQueryException',
|
|
|
|
'AphrontQueryRecoverableException' => 'AphrontQueryException',
|
2011-01-26 22:21:12 +01:00
|
|
|
'AphrontRedirectException' => 'AphrontException',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontRedirectResponse' => 'AphrontResponse',
|
2011-05-16 20:43:39 +02:00
|
|
|
'AphrontReloadResponse' => 'AphrontRedirectResponse',
|
2011-01-30 18:15:01 +01:00
|
|
|
'AphrontRequestFailureView' => 'AphrontView',
|
2011-01-24 18:00:29 +01:00
|
|
|
'AphrontSideNavView' => 'AphrontView',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontTableView' => 'AphrontView',
|
2011-03-23 04:41:02 +01:00
|
|
|
'AphrontTokenizerTemplateView' => 'AphrontView',
|
2011-04-04 04:20:47 +02:00
|
|
|
'AphrontTypeaheadTemplateView' => 'AphrontView',
|
2011-01-16 22:51:39 +01:00
|
|
|
'AphrontWebpageResponse' => 'AphrontResponse',
|
2011-01-25 18:59:31 +01:00
|
|
|
'CelerityResourceController' => 'AphrontController',
|
2011-09-16 20:42:45 +02:00
|
|
|
'ConduitAPI_arcanist_Method' => 'ConduitAPIMethod',
|
|
|
|
'ConduitAPI_arcanist_projectinfo_Method' => 'ConduitAPI_arcanist_Method',
|
2011-01-24 20:30:10 +01:00
|
|
|
'ConduitAPI_conduit_connect_Method' => 'ConduitAPIMethod',
|
2011-06-14 21:17:14 +02:00
|
|
|
'ConduitAPI_conduit_getcertificate_Method' => 'ConduitAPIMethod',
|
2011-02-19 07:36:32 +01:00
|
|
|
'ConduitAPI_conduit_ping_Method' => 'ConduitAPIMethod',
|
2011-03-15 21:38:14 +01:00
|
|
|
'ConduitAPI_daemon_launched_Method' => 'ConduitAPIMethod',
|
|
|
|
'ConduitAPI_daemon_log_Method' => 'ConduitAPIMethod',
|
2011-01-24 20:01:53 +01:00
|
|
|
'ConduitAPI_differential_creatediff_Method' => 'ConduitAPIMethod',
|
2011-02-06 22:49:23 +01:00
|
|
|
'ConduitAPI_differential_createrevision_Method' => 'ConduitAPIMethod',
|
2011-02-06 23:43:06 +01:00
|
|
|
'ConduitAPI_differential_find_Method' => 'ConduitAPIMethod',
|
2011-04-21 00:29:02 +02:00
|
|
|
'ConduitAPI_differential_getalldiffs_Method' => 'ConduitAPIMethod',
|
2011-02-09 18:41:26 +01:00
|
|
|
'ConduitAPI_differential_getcommitmessage_Method' => 'ConduitAPIMethod',
|
2011-02-19 07:28:03 +01:00
|
|
|
'ConduitAPI_differential_getcommitpaths_Method' => 'ConduitAPIMethod',
|
2011-02-19 07:15:28 +01:00
|
|
|
'ConduitAPI_differential_getdiff_Method' => 'ConduitAPIMethod',
|
2011-04-21 01:38:16 +02:00
|
|
|
'ConduitAPI_differential_getrevision_Method' => 'ConduitAPIMethod',
|
2011-04-20 01:24:45 +02:00
|
|
|
'ConduitAPI_differential_getrevisionfeedback_Method' => 'ConduitAPIMethod',
|
2011-02-09 18:48:26 +01:00
|
|
|
'ConduitAPI_differential_markcommitted_Method' => 'ConduitAPIMethod',
|
2011-02-06 22:42:00 +01:00
|
|
|
'ConduitAPI_differential_parsecommitmessage_Method' => 'ConduitAPIMethod',
|
2011-01-24 21:07:34 +01:00
|
|
|
'ConduitAPI_differential_setdiffproperty_Method' => 'ConduitAPIMethod',
|
2011-02-06 23:00:32 +01:00
|
|
|
'ConduitAPI_differential_updaterevision_Method' => 'ConduitAPIMethod',
|
2011-04-22 03:47:04 +02:00
|
|
|
'ConduitAPI_differential_updatetaskrevisionassoc_Method' => 'ConduitAPIMethod',
|
2011-06-09 01:16:59 +02:00
|
|
|
'ConduitAPI_differential_updateunitresults_Method' => 'ConduitAPIMethod',
|
2011-04-14 01:39:08 +02:00
|
|
|
'ConduitAPI_diffusion_getcommits_Method' => 'ConduitAPIMethod',
|
2011-05-20 00:36:17 +02:00
|
|
|
'ConduitAPI_diffusion_getrecentcommitsbypath_Method' => 'ConduitAPIMethod',
|
2011-07-05 17:35:18 +02:00
|
|
|
'ConduitAPI_feed_publish_Method' => 'ConduitAPIMethod',
|
2011-05-21 18:53:50 +02:00
|
|
|
'ConduitAPI_file_download_Method' => 'ConduitAPIMethod',
|
2011-07-29 19:00:16 +02:00
|
|
|
'ConduitAPI_file_info_Method' => 'ConduitAPIMethod',
|
2011-01-24 18:00:29 +01:00
|
|
|
'ConduitAPI_file_upload_Method' => 'ConduitAPIMethod',
|
2011-08-18 00:19:48 +02:00
|
|
|
'ConduitAPI_maniphest_Method' => 'ConduitAPIMethod',
|
|
|
|
'ConduitAPI_maniphest_createtask_Method' => 'ConduitAPI_maniphest_Method',
|
2011-08-27 01:52:57 +02:00
|
|
|
'ConduitAPI_maniphest_find_Method' => 'ConduitAPI_maniphest_Method',
|
2011-08-18 00:19:48 +02:00
|
|
|
'ConduitAPI_maniphest_info_Method' => 'ConduitAPI_maniphest_Method',
|
2011-07-30 03:31:14 +02:00
|
|
|
'ConduitAPI_paste_Method' => 'ConduitAPIMethod',
|
|
|
|
'ConduitAPI_paste_create_Method' => 'ConduitAPI_paste_Method',
|
|
|
|
'ConduitAPI_paste_info_Method' => 'ConduitAPI_paste_Method',
|
2011-04-12 06:51:36 +02:00
|
|
|
'ConduitAPI_path_getowners_Method' => 'ConduitAPIMethod',
|
2011-08-30 21:03:58 +02:00
|
|
|
'ConduitAPI_phid_Method' => 'ConduitAPIMethod',
|
|
|
|
'ConduitAPI_phid_info_Method' => 'ConduitAPI_phid_Method',
|
2011-08-26 21:50:28 +02:00
|
|
|
'ConduitAPI_phriction_Method' => 'ConduitAPIMethod',
|
|
|
|
'ConduitAPI_phriction_edit_Method' => 'ConduitAPI_phriction_Method',
|
|
|
|
'ConduitAPI_phriction_history_Method' => 'ConduitAPI_phriction_Method',
|
|
|
|
'ConduitAPI_phriction_info_Method' => 'ConduitAPI_phriction_Method',
|
2011-07-13 04:18:20 +02:00
|
|
|
'ConduitAPI_slowvote_info_Method' => 'ConduitAPIMethod',
|
2011-08-30 21:03:58 +02:00
|
|
|
'ConduitAPI_user_Method' => 'ConduitAPIMethod',
|
|
|
|
'ConduitAPI_user_find_Method' => 'ConduitAPI_user_Method',
|
|
|
|
'ConduitAPI_user_info_Method' => 'ConduitAPI_user_Method',
|
|
|
|
'ConduitAPI_user_whoami_Method' => 'ConduitAPI_user_Method',
|
2011-02-12 01:48:43 +01:00
|
|
|
'DarkConsoleConfigPlugin' => 'DarkConsolePlugin',
|
2011-02-03 07:38:42 +01:00
|
|
|
'DarkConsoleController' => 'PhabricatorController',
|
2011-02-02 22:48:52 +01:00
|
|
|
'DarkConsoleErrorLogPlugin' => 'DarkConsolePlugin',
|
2011-09-30 21:54:17 +02:00
|
|
|
'DarkConsoleEventPlugin' => 'DarkConsolePlugin',
|
|
|
|
'DarkConsoleEventPluginAPI' => 'PhabricatorEventListener',
|
2011-02-02 22:48:52 +01:00
|
|
|
'DarkConsoleRequestPlugin' => 'DarkConsolePlugin',
|
|
|
|
'DarkConsoleServicesPlugin' => 'DarkConsolePlugin',
|
|
|
|
'DarkConsoleXHProfPlugin' => 'DarkConsolePlugin',
|
2011-01-30 20:02:22 +01:00
|
|
|
'DifferentialAddCommentView' => 'AphrontView',
|
2011-09-14 19:59:52 +02:00
|
|
|
'DifferentialAffectedPath' => 'DifferentialDAO',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialApplyPatchFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-08-14 21:33:54 +02:00
|
|
|
'DifferentialArcanistProjectFieldSpecification' => 'DifferentialFieldSpecification',
|
|
|
|
'DifferentialAuthorFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-08-10 20:29:08 +02:00
|
|
|
'DifferentialAuxiliaryField' => 'DifferentialDAO',
|
2011-08-11 00:36:18 +02:00
|
|
|
'DifferentialBlameRevisionFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialCCWelcomeMail' => 'DifferentialReviewRequestMail',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialCCsFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialChangeset' => 'DifferentialDAO',
|
2011-01-24 22:18:41 +01:00
|
|
|
'DifferentialChangesetDetailView' => 'AphrontView',
|
2011-01-25 20:57:47 +01:00
|
|
|
'DifferentialChangesetListView' => 'AphrontView',
|
2011-01-25 00:52:35 +01:00
|
|
|
'DifferentialChangesetViewController' => 'DifferentialController',
|
2011-01-30 19:37:36 +01:00
|
|
|
'DifferentialComment' => 'DifferentialDAO',
|
2011-01-30 21:08:40 +01:00
|
|
|
'DifferentialCommentMail' => 'DifferentialMail',
|
2011-02-01 03:05:20 +01:00
|
|
|
'DifferentialCommentPreviewController' => 'DifferentialController',
|
2011-01-30 21:08:40 +01:00
|
|
|
'DifferentialCommentSaveController' => 'DifferentialController',
|
2011-08-14 21:33:54 +02:00
|
|
|
'DifferentialCommitsFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-24 22:18:41 +01:00
|
|
|
'DifferentialController' => 'PhabricatorController',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialDAO' => 'PhabricatorLiskDAO',
|
2011-08-10 20:29:08 +02:00
|
|
|
'DifferentialDefaultFieldSelector' => 'DifferentialFieldSelector',
|
2011-08-14 21:33:54 +02:00
|
|
|
'DifferentialDependenciesFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialDiff' => 'DifferentialDAO',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialDiffContentMail' => 'DifferentialMail',
|
2011-02-05 21:20:18 +01:00
|
|
|
'DifferentialDiffCreateController' => 'DifferentialController',
|
2011-01-24 21:07:34 +01:00
|
|
|
'DifferentialDiffProperty' => 'DifferentialDAO',
|
2011-01-24 22:18:41 +01:00
|
|
|
'DifferentialDiffTableOfContentsView' => 'AphrontView',
|
|
|
|
'DifferentialDiffViewController' => 'DifferentialController',
|
2011-05-01 04:40:05 +02:00
|
|
|
'DifferentialExceptionMail' => 'DifferentialMail',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialExportPatchFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-08-15 03:52:09 +02:00
|
|
|
'DifferentialGitSVNIDFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialHostFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialHunk' => 'DifferentialDAO',
|
2011-02-02 00:52:04 +01:00
|
|
|
'DifferentialInlineComment' => 'DifferentialDAO',
|
2011-02-02 01:42:36 +01:00
|
|
|
'DifferentialInlineCommentEditController' => 'DifferentialController',
|
2011-02-03 04:38:43 +01:00
|
|
|
'DifferentialInlineCommentPreviewController' => 'DifferentialController',
|
2011-02-02 01:42:36 +01:00
|
|
|
'DifferentialInlineCommentView' => 'AphrontView',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialLinesFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialLintFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-08-30 20:34:07 +02:00
|
|
|
'DifferentialLocalCommitsView' => 'AphrontView',
|
2011-08-14 21:33:54 +02:00
|
|
|
'DifferentialManiphestTasksFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialNewDiffMail' => 'DifferentialReviewRequestMail',
|
2011-08-14 20:29:56 +02:00
|
|
|
'DifferentialPathFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-06-08 21:39:03 +02:00
|
|
|
'DifferentialPrimaryPaneView' => 'AphrontView',
|
2011-05-10 01:31:26 +02:00
|
|
|
'DifferentialReplyHandler' => 'PhabricatorMailReplyHandler',
|
2011-08-11 00:36:18 +02:00
|
|
|
'DifferentialRevertPlanFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-26 02:17:19 +01:00
|
|
|
'DifferentialReviewRequestMail' => 'DifferentialMail',
|
2011-08-15 03:52:09 +02:00
|
|
|
'DifferentialReviewedByFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialReviewersFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-24 20:01:53 +01:00
|
|
|
'DifferentialRevision' => 'DifferentialDAO',
|
2011-01-30 19:37:36 +01:00
|
|
|
'DifferentialRevisionCommentListView' => 'AphrontView',
|
|
|
|
'DifferentialRevisionCommentView' => 'AphrontView',
|
2011-01-27 23:55:52 +01:00
|
|
|
'DifferentialRevisionDetailView' => 'AphrontView',
|
2011-01-25 22:26:09 +01:00
|
|
|
'DifferentialRevisionEditController' => 'DifferentialController',
|
2011-08-15 03:52:09 +02:00
|
|
|
'DifferentialRevisionIDFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-26 00:19:06 +01:00
|
|
|
'DifferentialRevisionListController' => 'DifferentialController',
|
2011-10-02 20:42:41 +02:00
|
|
|
'DifferentialRevisionListView' => 'AphrontView',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialRevisionStatusFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-01-27 23:55:52 +01:00
|
|
|
'DifferentialRevisionUpdateHistoryView' => 'AphrontView',
|
|
|
|
'DifferentialRevisionViewController' => 'DifferentialController',
|
2011-02-19 23:36:13 +01:00
|
|
|
'DifferentialSubscribeController' => 'DifferentialController',
|
2011-08-14 23:28:08 +02:00
|
|
|
'DifferentialSummaryFieldSpecification' => 'DifferentialFieldSpecification',
|
|
|
|
'DifferentialTestPlanFieldSpecification' => 'DifferentialFieldSpecification',
|
|
|
|
'DifferentialTitleFieldSpecification' => 'DifferentialFieldSpecification',
|
2011-08-14 22:55:30 +02:00
|
|
|
'DifferentialUnitFieldSpecification' => 'DifferentialFieldSpecification',
|
Differential Updates View
Summary:
This adds a new view to differential called Updates.
The high-level goal of Updates is to enabled differential to be
effectively used without email notifications. I've tried doing things
like automatically deleting differential emails where I'm in the 'to'
line since they show up on the main diffential page but then there's
always the chance an important diff flies by without me seeing it. Also,
sometimes someone comments on a diff post-commit but differential
doesn't surface those diffs.
I re-created a test db on my devserver using mysqldump to get data on
revs > 230000 so I would have some test data. We need to add a simple
viewtime table but I didn't want to do that in production. Here's the
table:
CREATE TABLE differential_viewtime (
viewerPHID varchar(64) not null,
objectPHID varchar(64) not null,
viewTime int unsigned not null,
PRIMARY KEY (viewerPHID, objectPHID)
);
Issues:
-Once we turn this on, all diffs will be 'unviewed'. What do you think
about a 'Clear All' button or something?
-Maybe we should add a pager
This feature would be insanely useful, let me know what you think.
Test Plan:
Loaded Updates in my sandbox
http://phabricator.dev1577.snc6.facebook.com/differential/filter/updates/
Clicked a diff, then went back, made sure diff disappeared from Updates
list
Reviewed By: tuomaspelkonen
Reviewers: epriestley, jungejason, tuomaspelkonen
Commenters: epriestley
CC: epriestley, elynde, tuomaspelkonen
Differential Revision: 169
2011-04-27 10:27:06 +02:00
|
|
|
'DifferentialViewTime' => 'DifferentialDAO',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionBranchTableView' => 'DiffusionView',
|
2011-03-08 02:25:47 +01:00
|
|
|
'DiffusionBrowseController' => 'DiffusionController',
|
2011-03-08 18:54:55 +01:00
|
|
|
'DiffusionBrowseFileController' => 'DiffusionController',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionBrowseTableView' => 'DiffusionView',
|
2011-03-14 06:03:30 +01:00
|
|
|
'DiffusionChangeController' => 'DiffusionController',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionCommitChangeTableView' => 'DiffusionView',
|
2011-03-11 18:34:22 +01:00
|
|
|
'DiffusionCommitController' => 'DiffusionController',
|
2011-07-24 02:09:03 +02:00
|
|
|
'DiffusionCommitListController' => 'DiffusionController',
|
2011-03-08 00:13:36 +01:00
|
|
|
'DiffusionController' => 'PhabricatorController',
|
2011-03-31 02:36:16 +02:00
|
|
|
'DiffusionDiffController' => 'DiffusionController',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionGitBranchQuery' => 'DiffusionBranchQuery',
|
2011-03-08 02:25:47 +01:00
|
|
|
'DiffusionGitBrowseQuery' => 'DiffusionBrowseQuery',
|
2011-03-31 03:17:36 +02:00
|
|
|
'DiffusionGitDiffQuery' => 'DiffusionDiffQuery',
|
2011-03-08 18:54:55 +01:00
|
|
|
'DiffusionGitFileContentQuery' => 'DiffusionFileContentQuery',
|
2011-03-09 02:31:44 +01:00
|
|
|
'DiffusionGitHistoryQuery' => 'DiffusionHistoryQuery',
|
2011-03-31 08:27:06 +02:00
|
|
|
'DiffusionGitLastModifiedQuery' => 'DiffusionLastModifiedQuery',
|
2011-03-08 23:29:02 +01:00
|
|
|
'DiffusionGitRequest' => 'DiffusionRequest',
|
2011-03-09 02:31:44 +01:00
|
|
|
'DiffusionHistoryController' => 'DiffusionController',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionHistoryTableView' => 'DiffusionView',
|
2011-03-08 00:13:36 +01:00
|
|
|
'DiffusionHomeController' => 'DiffusionController',
|
2011-03-31 08:27:06 +02:00
|
|
|
'DiffusionLastModifiedController' => 'DiffusionController',
|
Basic support for Mercurial in Diffusion
Summary: Change import script plus almost all the view stuff. Still some rough
edges but this seems to mostly work. Blame is currently unsupported but I think
everything else works properly.
Test Plan:
Imported the hg repository itself. It doesn't immediately seem completely
broken. Here are some screens:
https://secure.phabricator.com/file/view/PHID-FILE-1438b71cc7c4a2eb4569/
https://secure.phabricator.com/file/view/PHID-FILE-3cec4f72f39e7de2d041/
https://secure.phabricator.com/file/view/PHID-FILE-2ea4883f160e8e5098f9/
https://secure.phabricator.com/file/view/PHID-FILE-35f751a36ebf65399ade/
All the parsers were able to churn through it without errors.
Ran the new "reparse.php" script in various one-commit and repository modes.
Browsed/imported some git repos for good measure.
NOTE: The hg repository is only 15,000 commits and around 1,000 files.
Performance is okay but hg doesn't provide performant, native APIs to get some
data efficiently so we have to do some dumb stuff. If some of these interfaces
are cripplingly slow or whatever, let me know and we can start bundling some
Mercurial extensions with Arcanist.
Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran
Reviewed By: Makinde
CC: aran, Makinde, epriestley
Differential Revision: 960
2011-09-26 20:07:38 +02:00
|
|
|
'DiffusionMercurialBranchQuery' => 'DiffusionBranchQuery',
|
|
|
|
'DiffusionMercurialBrowseQuery' => 'DiffusionBrowseQuery',
|
|
|
|
'DiffusionMercurialDiffQuery' => 'DiffusionDiffQuery',
|
|
|
|
'DiffusionMercurialFileContentQuery' => 'DiffusionFileContentQuery',
|
|
|
|
'DiffusionMercurialHistoryQuery' => 'DiffusionHistoryQuery',
|
|
|
|
'DiffusionMercurialLastModifiedQuery' => 'DiffusionLastModifiedQuery',
|
|
|
|
'DiffusionMercurialRequest' => 'DiffusionRequest',
|
2011-04-04 04:20:47 +02:00
|
|
|
'DiffusionPathCompleteController' => 'DiffusionController',
|
2011-09-14 20:23:39 +02:00
|
|
|
'DiffusionPathQueryTestCase' => 'PhabricatorTestCase',
|
2011-04-04 04:20:47 +02:00
|
|
|
'DiffusionPathValidateController' => 'DiffusionController',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionRepositoryController' => 'DiffusionController',
|
|
|
|
'DiffusionSvnBrowseQuery' => 'DiffusionBrowseQuery',
|
2011-03-31 02:36:16 +02:00
|
|
|
'DiffusionSvnDiffQuery' => 'DiffusionDiffQuery',
|
2011-03-14 06:03:30 +01:00
|
|
|
'DiffusionSvnFileContentQuery' => 'DiffusionFileContentQuery',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionSvnHistoryQuery' => 'DiffusionHistoryQuery',
|
2011-03-31 08:27:06 +02:00
|
|
|
'DiffusionSvnLastModifiedQuery' => 'DiffusionLastModifiedQuery',
|
2011-03-23 03:34:47 +01:00
|
|
|
'DiffusionSvnRequest' => 'DiffusionRequest',
|
2011-09-05 19:43:24 +02:00
|
|
|
'DiffusionSymbolController' => 'DiffusionController',
|
2011-03-13 01:17:34 +01:00
|
|
|
'DiffusionView' => 'AphrontView',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldAction' => 'HeraldDAO',
|
|
|
|
'HeraldApplyTranscript' => 'HeraldDAO',
|
2011-04-04 08:23:36 +02:00
|
|
|
'HeraldCommitAdapter' => 'HeraldObjectAdapter',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldCondition' => 'HeraldDAO',
|
2011-03-22 21:49:46 +01:00
|
|
|
'HeraldController' => 'PhabricatorController',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldDAO' => 'PhabricatorLiskDAO',
|
2011-03-24 19:07:36 +01:00
|
|
|
'HeraldDeleteController' => 'HeraldController',
|
2011-03-25 05:32:26 +01:00
|
|
|
'HeraldDifferentialRevisionAdapter' => 'HeraldObjectAdapter',
|
2011-03-24 21:49:21 +01:00
|
|
|
'HeraldDryRunAdapter' => 'HeraldObjectAdapter',
|
2011-03-22 21:49:46 +01:00
|
|
|
'HeraldHomeController' => 'HeraldController',
|
2011-03-22 22:34:38 +01:00
|
|
|
'HeraldNewController' => 'HeraldController',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldRule' => 'HeraldDAO',
|
2011-03-22 23:27:52 +01:00
|
|
|
'HeraldRuleController' => 'HeraldController',
|
2011-03-24 21:49:21 +01:00
|
|
|
'HeraldTestConsoleController' => 'HeraldController',
|
2011-03-22 21:22:40 +01:00
|
|
|
'HeraldTranscript' => 'HeraldDAO',
|
2011-03-25 05:32:26 +01:00
|
|
|
'HeraldTranscriptController' => 'HeraldController',
|
|
|
|
'HeraldTranscriptListController' => 'HeraldController',
|
2011-09-07 23:01:13 +02:00
|
|
|
'JavelinReactorExample' => 'PhabricatorUIExample',
|
|
|
|
'JavelinViewExample' => 'PhabricatorUIExample',
|
|
|
|
'JavelinViewExampleServerView' => 'AphrontView',
|
2011-04-30 19:11:59 +02:00
|
|
|
'LiskIsolationTestCase' => 'PhabricatorTestCase',
|
|
|
|
'LiskIsolationTestDAO' => 'LiskDAO',
|
2011-07-27 18:49:50 +02:00
|
|
|
'ManiphestAuxiliaryFieldDefaultSpecification' => 'ManiphestAuxiliaryFieldSpecification',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestController' => 'PhabricatorController',
|
|
|
|
'ManiphestDAO' => 'PhabricatorLiskDAO',
|
2011-08-05 18:44:43 +02:00
|
|
|
'ManiphestDefaultTaskExtensions' => 'ManiphestTaskExtensions',
|
2011-05-10 01:31:26 +02:00
|
|
|
'ManiphestReplyHandler' => 'PhabricatorMailReplyHandler',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTask' => 'ManiphestDAO',
|
2011-07-26 00:34:56 +02:00
|
|
|
'ManiphestTaskAuxiliaryStorage' => 'ManiphestDAO',
|
2011-05-21 03:56:18 +02:00
|
|
|
'ManiphestTaskDescriptionChangeController' => 'ManiphestController',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTaskDetailController' => 'ManiphestController',
|
2011-02-20 23:15:53 +01:00
|
|
|
'ManiphestTaskEditController' => 'ManiphestController',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTaskListController' => 'ManiphestController',
|
2011-07-04 22:04:22 +02:00
|
|
|
'ManiphestTaskListView' => 'ManiphestView',
|
|
|
|
'ManiphestTaskOwner' => 'ManiphestConstants',
|
|
|
|
'ManiphestTaskPriority' => 'ManiphestConstants',
|
2011-06-30 01:16:33 +02:00
|
|
|
'ManiphestTaskProject' => 'ManiphestDAO',
|
2011-07-04 22:04:22 +02:00
|
|
|
'ManiphestTaskStatus' => 'ManiphestConstants',
|
2011-07-07 19:24:49 +02:00
|
|
|
'ManiphestTaskSubscriber' => 'ManiphestDAO',
|
2011-07-04 22:04:22 +02:00
|
|
|
'ManiphestTaskSummaryView' => 'ManiphestView',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTransaction' => 'ManiphestDAO',
|
2011-07-04 22:04:22 +02:00
|
|
|
'ManiphestTransactionDetailView' => 'ManiphestView',
|
|
|
|
'ManiphestTransactionListView' => 'ManiphestView',
|
2011-05-10 17:29:28 +02:00
|
|
|
'ManiphestTransactionPreviewController' => 'ManiphestController',
|
2011-02-08 19:53:59 +01:00
|
|
|
'ManiphestTransactionSaveController' => 'ManiphestController',
|
2011-07-04 22:04:22 +02:00
|
|
|
'ManiphestTransactionType' => 'ManiphestConstants',
|
|
|
|
'ManiphestView' => 'AphrontView',
|
2011-01-30 01:16:09 +01:00
|
|
|
'Phabricator404Controller' => 'PhabricatorController',
|
2011-01-26 22:21:12 +01:00
|
|
|
'PhabricatorAuthController' => 'PhabricatorController',
|
Build a basic calendar view
Summary:
This is a very small step toward building a Status and possibly an Oncall tool.
Build a calendar view which renders months.
Much of my hesitance to bang these tools out is that dealing with
dates/calendaring is basically horrible, so I'm trying to ease into it.
This calendar is locale-aware and all that jazz.
Test Plan:
- See:
https://secure.phabricator.com/file/view/PHID-FILE-c07a9c663a7d040d2529/
- Verified that months have the right number of days, today is the right day
of the week, months begin on the day after previous months end on, etc.
Reviewed By: aran
Reviewers: jungejason, tuomaspelkonen, aran
Commenters: cwbeck, jungejason
CC: blair, aran, epriestley, cwbeck, jungejason
Differential Revision: 791
2011-08-08 03:26:31 +02:00
|
|
|
'PhabricatorCalendarBrowseController' => 'PhabricatorCalendarController',
|
|
|
|
'PhabricatorCalendarController' => 'PhabricatorController',
|
2011-01-24 18:00:29 +01:00
|
|
|
'PhabricatorConduitAPIController' => 'PhabricatorConduitController',
|
2011-06-14 21:17:14 +02:00
|
|
|
'PhabricatorConduitCertificateToken' => 'PhabricatorConduitDAO',
|
2011-01-24 18:00:29 +01:00
|
|
|
'PhabricatorConduitConnectionLog' => 'PhabricatorConduitDAO',
|
|
|
|
'PhabricatorConduitConsoleController' => 'PhabricatorConduitController',
|
|
|
|
'PhabricatorConduitController' => 'PhabricatorController',
|
|
|
|
'PhabricatorConduitDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorConduitLogController' => 'PhabricatorConduitController',
|
|
|
|
'PhabricatorConduitMethodCallLog' => 'PhabricatorConduitDAO',
|
2011-06-14 21:17:14 +02:00
|
|
|
'PhabricatorConduitTokenController' => 'PhabricatorConduitController',
|
Track content sources (email, web, conduit, mobile) for replies
Summary:
When an object is updated, record the content source for the update. This mostly
isn't terribly useful but one concrete thing I want to do with it is let admins
audit via-email replies more easily since there are a bunch of options which let
you do hyjinx if you intentionally configure them insecurely. I think having a
little more auditability around this feature is generally good. At some point
I'm going to turn this into a link admins can click to see details.
It also allows us to see how frequently different mechanisms are used, and lets
you see if someone is at their desk or on a mobile or whatever, at least
indirectly.
The "tablet" and "mobile" sources are currently unused but I figured I'd throw
them in anyway. SMS support should definitely happen at some point.
Not 100% sure about the design for this, I might change it to plain text at some
point.
Test Plan: Updated objects and saw update sources rendered.
Reviewers: jungejason, tuomaspelkonen, aran
Reviewed By: jungejason
CC: aran, epriestley, jungejason
Differential Revision: 844
2011-08-22 19:25:45 +02:00
|
|
|
'PhabricatorContentSourceView' => 'AphrontView',
|
2011-01-23 02:48:55 +01:00
|
|
|
'PhabricatorController' => 'AphrontController',
|
2011-06-13 01:06:17 +02:00
|
|
|
'PhabricatorCountdownController' => 'PhabricatorController',
|
|
|
|
'PhabricatorCountdownDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorCountdownDeleteController' => 'PhabricatorCountdownController',
|
|
|
|
'PhabricatorCountdownEditController' => 'PhabricatorCountdownController',
|
|
|
|
'PhabricatorCountdownListController' => 'PhabricatorCountdownController',
|
|
|
|
'PhabricatorCountdownViewController' => 'PhabricatorCountdownController',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorDaemon' => 'PhutilDaemon',
|
2011-05-03 02:05:22 +02:00
|
|
|
'PhabricatorDaemonCombinedLogController' => 'PhabricatorDaemonController',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorDaemonConsoleController' => 'PhabricatorDaemonController',
|
|
|
|
'PhabricatorDaemonController' => 'PhabricatorController',
|
2011-03-15 21:38:14 +01:00
|
|
|
'PhabricatorDaemonDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorDaemonLog' => 'PhabricatorDaemonDAO',
|
|
|
|
'PhabricatorDaemonLogEvent' => 'PhabricatorDaemonDAO',
|
2011-05-03 02:05:22 +02:00
|
|
|
'PhabricatorDaemonLogEventsView' => 'AphrontView',
|
|
|
|
'PhabricatorDaemonLogListController' => 'PhabricatorDaemonController',
|
|
|
|
'PhabricatorDaemonLogListView' => 'AphrontView',
|
2011-03-15 21:38:14 +01:00
|
|
|
'PhabricatorDaemonLogViewController' => 'PhabricatorDaemonController',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorDaemonTimelineConsoleController' => 'PhabricatorDaemonController',
|
|
|
|
'PhabricatorDaemonTimelineEventController' => 'PhabricatorDaemonController',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorDefaultFileStorageEngineSelector' => 'PhabricatorFileStorageEngineSelector',
|
2011-08-08 00:14:23 +02:00
|
|
|
'PhabricatorDefaultSearchEngineSelector' => 'PhabricatorSearchEngineSelector',
|
2011-01-23 02:48:55 +01:00
|
|
|
'PhabricatorDirectoryCategory' => 'PhabricatorDirectoryDAO',
|
|
|
|
'PhabricatorDirectoryCategoryDeleteController' => 'PhabricatorDirectoryController',
|
|
|
|
'PhabricatorDirectoryCategoryEditController' => 'PhabricatorDirectoryController',
|
|
|
|
'PhabricatorDirectoryCategoryListController' => 'PhabricatorDirectoryController',
|
|
|
|
'PhabricatorDirectoryController' => 'PhabricatorController',
|
|
|
|
'PhabricatorDirectoryDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorDirectoryItem' => 'PhabricatorDirectoryDAO',
|
|
|
|
'PhabricatorDirectoryItemDeleteController' => 'PhabricatorDirectoryController',
|
|
|
|
'PhabricatorDirectoryItemEditController' => 'PhabricatorDirectoryController',
|
|
|
|
'PhabricatorDirectoryItemListController' => 'PhabricatorDirectoryController',
|
|
|
|
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
|
2011-05-12 19:06:54 +02:00
|
|
|
'PhabricatorDisabledUserController' => 'PhabricatorAuthController',
|
2011-02-06 01:57:21 +01:00
|
|
|
'PhabricatorDraft' => 'PhabricatorDraftDAO',
|
|
|
|
'PhabricatorDraftDAO' => 'PhabricatorLiskDAO',
|
2011-01-31 20:55:26 +01:00
|
|
|
'PhabricatorEmailLoginController' => 'PhabricatorAuthController',
|
|
|
|
'PhabricatorEmailTokenController' => 'PhabricatorAuthController',
|
2011-08-31 22:25:13 +02:00
|
|
|
'PhabricatorEventType' => 'PhabricatorEventConstants',
|
2011-07-05 17:35:18 +02:00
|
|
|
'PhabricatorFeedController' => 'PhabricatorController',
|
|
|
|
'PhabricatorFeedDAO' => 'PhabricatorLiskDAO',
|
2011-07-10 03:03:59 +02:00
|
|
|
'PhabricatorFeedPublicStreamController' => 'PhabricatorFeedController',
|
2011-07-05 17:35:18 +02:00
|
|
|
'PhabricatorFeedStoryData' => 'PhabricatorFeedDAO',
|
2011-07-10 00:44:49 +02:00
|
|
|
'PhabricatorFeedStoryDifferential' => 'PhabricatorFeedStory',
|
2011-07-12 16:23:04 +02:00
|
|
|
'PhabricatorFeedStoryPhriction' => 'PhabricatorFeedStory',
|
2011-07-05 17:35:18 +02:00
|
|
|
'PhabricatorFeedStoryReference' => 'PhabricatorFeedDAO',
|
2011-07-09 22:28:09 +02:00
|
|
|
'PhabricatorFeedStoryStatus' => 'PhabricatorFeedStory',
|
2011-07-10 00:44:49 +02:00
|
|
|
'PhabricatorFeedStoryTypeConstants' => 'PhabricatorFeedConstants',
|
2011-07-05 17:35:18 +02:00
|
|
|
'PhabricatorFeedStoryUnknown' => 'PhabricatorFeedStory',
|
|
|
|
'PhabricatorFeedStoryView' => 'PhabricatorFeedView',
|
|
|
|
'PhabricatorFeedStreamController' => 'PhabricatorFeedController',
|
|
|
|
'PhabricatorFeedView' => 'AphrontView',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFile' => 'PhabricatorFileDAO',
|
Provide a setting which forces all file views to be served from an alternate
domain
Summary:
See D758, D759.
- Provide a strongly recommended setting which permits configuration of an
alternate domain.
- Lock cookies down better: set them on the exact domain, and use SSL-only if
the configuration is HTTPS.
- Prevent Phabriator from setting cookies on other domains.
This assumes D759 will land, it is not effective without that change.
Test Plan:
- Attempted to login from a different domain and was rejected.
- Logged out, logged back in normally.
- Put install in setup mode and verified it revealed a warning.
- Configured an alterate domain.
- Tried to view an image with an old URI, got a 400.
- Went to /files/ and verified links rendered to the alternate domain.
- Viewed an alternate domain file.
- Tried to view an alternate domain file without the secret key, got a 404.
Reviewers: andrewjcg, erling, aran, tuomaspelkonen, jungejason, codeblock
CC: aran
Differential Revision: 760
2011-08-02 07:24:00 +02:00
|
|
|
'PhabricatorFileAltViewController' => 'PhabricatorFileController',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileController' => 'PhabricatorController',
|
|
|
|
'PhabricatorFileDAO' => 'PhabricatorLiskDAO',
|
2011-05-22 20:55:10 +02:00
|
|
|
'PhabricatorFileDropUploadController' => 'PhabricatorFileController',
|
2011-04-14 00:15:48 +02:00
|
|
|
'PhabricatorFileImageMacro' => 'PhabricatorFileDAO',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileListController' => 'PhabricatorFileController',
|
2011-05-03 19:45:45 +02:00
|
|
|
'PhabricatorFileMacroDeleteController' => 'PhabricatorFileController',
|
|
|
|
'PhabricatorFileMacroEditController' => 'PhabricatorFileController',
|
|
|
|
'PhabricatorFileMacroListController' => 'PhabricatorFileController',
|
2011-05-02 23:20:24 +02:00
|
|
|
'PhabricatorFileProxyController' => 'PhabricatorFileController',
|
|
|
|
'PhabricatorFileProxyImage' => 'PhabricatorFileDAO',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileStorageBlob' => 'PhabricatorFileDAO',
|
2011-05-22 23:40:51 +02:00
|
|
|
'PhabricatorFileTransformController' => 'PhabricatorFileController',
|
2011-01-23 03:33:00 +01:00
|
|
|
'PhabricatorFileUploadController' => 'PhabricatorFileController',
|
|
|
|
'PhabricatorFileViewController' => 'PhabricatorFileController',
|
2011-07-03 18:47:31 +02:00
|
|
|
'PhabricatorGarbageCollectorDaemon' => 'PhabricatorDaemon',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorGoodForNothingWorker' => 'PhabricatorWorker',
|
2011-05-28 20:36:00 +02:00
|
|
|
'PhabricatorHelpController' => 'PhabricatorController',
|
|
|
|
'PhabricatorHelpKeyboardShortcutController' => 'PhabricatorHelpController',
|
2011-05-15 18:29:48 +02:00
|
|
|
'PhabricatorIRCBot' => 'PhabricatorDaemon',
|
2011-05-17 23:40:25 +02:00
|
|
|
'PhabricatorIRCObjectNameHandler' => 'PhabricatorIRCHandler',
|
2011-05-15 18:29:48 +02:00
|
|
|
'PhabricatorIRCProtocolHandler' => 'PhabricatorIRCHandler',
|
2011-10-20 03:26:21 +02:00
|
|
|
'PhabricatorInfrastructureTestCase' => 'PhabricatorTestCase',
|
Bring Javelin into Phabricator via git submodule, not copy-and-paste
Summary:
Javelin is currently embedded in Phabricator via copy-and-paste of prebuilt
packages. This is not so great.
Pull it in as a submodule instead and make all the Phabriator resources declare
proper dependency trees. Add Javelin linting.
Test Plan:
I tried to run through pretty much all the JS functionality on the site. This is
still a high-risk change, but I did a pretty thorough test
Differential: inline comments, revealing diffs, list tokenizers, comment
preview, editing/deleting comments, add review action.
Maniphest: list tokenizer, comment actions
Herald: rule editing, tokenizers, add/remove rows
Reviewed By: tomo
Reviewers: aran, tomo, mroch, jungejason, tuomaspelkonen
CC: aran, tomo, epriestley
Differential Revision: 223
2011-05-04 00:11:55 +02:00
|
|
|
'PhabricatorJavelinLinter' => 'ArcanistLinter',
|
|
|
|
'PhabricatorLintEngine' => 'PhutilLintEngine',
|
2011-01-23 02:48:55 +01:00
|
|
|
'PhabricatorLiskDAO' => 'LiskDAO',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorLocalDiskFileStorageEngine' => 'PhabricatorFileStorageEngine',
|
Improve time localization code
Summary:
- We throw on a missing date right now, in the DateTime constructor. This can
happen in reasonable cases and this is display code, so handle it more
gracefully (see T520).
- This stuff is a little slow and we sometimes render many hundreds of dates
per page. I've been seeing it in profiles on and off. Memoize timezones to
improve performance.
- Some minor code duplication that would have become less-minor with the
constructor change, consolidate the logic.
- Add some unit tests and a little documentation.
Test Plan:
- Ran unit tests.
- Profiled 1,000 calls to phabricator_datetime(), cost dropped from ~49ms to
~19ms with addition of memoization. This is still slower than I'd like but I
don't think there's an easy way to squeeze it down further.
Reviewers: ajtrichards, jungejason, nh, tuomaspelkonen, aran
Reviewed By: ajtrichards
CC: aran, ajtrichards, epriestley
Differential Revision: 966
2011-09-27 18:03:55 +02:00
|
|
|
'PhabricatorLocalTimeTestCase' => 'PhabricatorTestCase',
|
2011-01-26 22:21:12 +01:00
|
|
|
'PhabricatorLoginController' => 'PhabricatorAuthController',
|
2011-01-31 03:52:29 +01:00
|
|
|
'PhabricatorLogoutController' => 'PhabricatorAuthController',
|
2011-02-10 02:39:55 +01:00
|
|
|
'PhabricatorMailImplementationAmazonSESAdapter' => 'PhabricatorMailImplementationPHPMailerLiteAdapter',
|
2011-01-26 18:33:31 +01:00
|
|
|
'PhabricatorMailImplementationPHPMailerLiteAdapter' => 'PhabricatorMailImplementationAdapter',
|
2011-05-26 19:00:26 +02:00
|
|
|
'PhabricatorMailImplementationSendGridAdapter' => 'PhabricatorMailImplementationAdapter',
|
Fix a threading issue with Amazon SES
Summary:
Amazon SES does not allow us to set a Message-ID header, which means
that threads are incorrect in Mail.app (and presumably other applications
which respect In-Reply-To and References) because the initial email does not
have anything which attaches it to the rest of the thread. To fix this, never
rely on Message-ID if the mailer doesn't support Message-ID.
(In the Amazon SES case, Amazon generates its own Message-ID which we can't
know ahead of time).
I additionally used all the Lisk isolation from the other tests to make this
testable and wrote tests for it.
I also moved the idea of a thread ID lower in the stack and out of
DifferentialMail, which should not be responsible for implementation details.
NOTE: If you push this, it will cause a one-time break of threading for
everyone using Outlook since I've changed the seed for generating Thread-Index.
I feel like this is okay to avoid introducing more complexity here.
Test Plan:
Created and then updated a revision, messages delivered over Amazon
SES threaded correctly in Mail.app. Verified headers. Unit tests.
Reviewed By: rm
Reviewers: aran, tuomaspelkonen, jungejason, rm
Commenters: aran
CC: aran, rm, epriestley
Differential Revision: 195
2011-04-30 20:47:00 +02:00
|
|
|
'PhabricatorMailImplementationTestAdapter' => 'PhabricatorMailImplementationAdapter',
|
2011-01-26 02:40:21 +01:00
|
|
|
'PhabricatorMetaMTAController' => 'PhabricatorController',
|
|
|
|
'PhabricatorMetaMTADAO' => 'PhabricatorLiskDAO',
|
2011-03-17 01:46:29 +01:00
|
|
|
'PhabricatorMetaMTADaemon' => 'PhabricatorDaemon',
|
2011-06-01 17:33:14 +02:00
|
|
|
'PhabricatorMetaMTAEmailBodyParserTestCase' => 'PhabricatorTestCase',
|
2011-01-26 02:40:21 +01:00
|
|
|
'PhabricatorMetaMTAListController' => 'PhabricatorMetaMTAController',
|
|
|
|
'PhabricatorMetaMTAMail' => 'PhabricatorMetaMTADAO',
|
Fix a threading issue with Amazon SES
Summary:
Amazon SES does not allow us to set a Message-ID header, which means
that threads are incorrect in Mail.app (and presumably other applications
which respect In-Reply-To and References) because the initial email does not
have anything which attaches it to the rest of the thread. To fix this, never
rely on Message-ID if the mailer doesn't support Message-ID.
(In the Amazon SES case, Amazon generates its own Message-ID which we can't
know ahead of time).
I additionally used all the Lisk isolation from the other tests to make this
testable and wrote tests for it.
I also moved the idea of a thread ID lower in the stack and out of
DifferentialMail, which should not be responsible for implementation details.
NOTE: If you push this, it will cause a one-time break of threading for
everyone using Outlook since I've changed the seed for generating Thread-Index.
I feel like this is okay to avoid introducing more complexity here.
Test Plan:
Created and then updated a revision, messages delivered over Amazon
SES threaded correctly in Mail.app. Verified headers. Unit tests.
Reviewed By: rm
Reviewers: aran, tuomaspelkonen, jungejason, rm
Commenters: aran
CC: aran, rm, epriestley
Differential Revision: 195
2011-04-30 20:47:00 +02:00
|
|
|
'PhabricatorMetaMTAMailTestCase' => 'PhabricatorTestCase',
|
2011-01-26 19:40:38 +01:00
|
|
|
'PhabricatorMetaMTAMailingList' => 'PhabricatorMetaMTADAO',
|
|
|
|
'PhabricatorMetaMTAMailingListEditController' => 'PhabricatorMetaMTAController',
|
|
|
|
'PhabricatorMetaMTAMailingListsController' => 'PhabricatorMetaMTAController',
|
2011-05-05 08:09:42 +02:00
|
|
|
'PhabricatorMetaMTAReceiveController' => 'PhabricatorMetaMTAController',
|
|
|
|
'PhabricatorMetaMTAReceivedListController' => 'PhabricatorMetaMTAController',
|
|
|
|
'PhabricatorMetaMTAReceivedMail' => 'PhabricatorMetaMTADAO',
|
2011-01-26 02:40:21 +01:00
|
|
|
'PhabricatorMetaMTASendController' => 'PhabricatorMetaMTAController',
|
2011-05-30 20:07:05 +02:00
|
|
|
'PhabricatorMetaMTASendGridReceiveController' => 'PhabricatorMetaMTAController',
|
2011-01-26 18:08:26 +01:00
|
|
|
'PhabricatorMetaMTAViewController' => 'PhabricatorMetaMTAController',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorMySQLFileStorageEngine' => 'PhabricatorFileStorageEngine',
|
2011-02-28 04:47:22 +01:00
|
|
|
'PhabricatorOAuthDefaultRegistrationController' => 'PhabricatorOAuthRegistrationController',
|
2011-02-21 07:47:56 +01:00
|
|
|
'PhabricatorOAuthDiagnosticsController' => 'PhabricatorAuthController',
|
|
|
|
'PhabricatorOAuthFailureView' => 'AphrontView',
|
|
|
|
'PhabricatorOAuthLoginController' => 'PhabricatorAuthController',
|
|
|
|
'PhabricatorOAuthProviderFacebook' => 'PhabricatorOAuthProvider',
|
|
|
|
'PhabricatorOAuthProviderGithub' => 'PhabricatorOAuthProvider',
|
Add Google as an OAuth2 provider (BETA)
Summary:
This is pretty straightforward, except:
- We need to request read/write access to the address book to get the account
ID (which we MUST have) and real name, email and account name (which we'd like
to have). This is way more access than we should need, but there's apparently no
"get_loggedin_user_basic_information" type of call in the Google API suite (or,
at least, I couldn't find one).
- We can't get the profile picture or profile URI since there's no Plus API
access and Google users don't have meaningful public pages otherwise.
- Google doesn't save the fact that you've authorized the app, so every time
you want to login you need to reaffirm that you want to give us silly amounts of
access. Phabricator sessions are pretty long-duration though so this shouldn't
be a major issue.
Test Plan:
- Registered, logged out, and logged in with Google.
- Registered, logged out, and logged in with Facebook / Github to make sure I
didn't break anything.
- Linked / unlinked Google accounts.
Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran
Reviewed By: aran
CC: aran, epriestley, Makinde
Differential Revision: 916
2011-09-09 01:37:22 +02:00
|
|
|
'PhabricatorOAuthProviderGoogle' => 'PhabricatorOAuthProvider',
|
2011-02-28 04:47:22 +01:00
|
|
|
'PhabricatorOAuthRegistrationController' => 'PhabricatorAuthController',
|
2011-02-22 07:51:34 +01:00
|
|
|
'PhabricatorOAuthUnlinkController' => 'PhabricatorAuthController',
|
2011-07-05 22:18:47 +02:00
|
|
|
'PhabricatorObjectGraph' => 'AbstractDirectedGraph',
|
Add object status to Handles
Summary:
We use ObjectHandles as proxy objects which can refer to any other object in the
system. Add the concept of the underlying object's "status" (e.g., open, closed
or busy).
This allows us to render completed tasks and revisions with strikethrough. In
the future, if we implement OOO or something, we could render users with a
"busy" status if they're on vacation, etc.
Test Plan: Viewed a task with closed revisions and dependencies:
https://secure.phabricator.com/file/view/PHID-FILE-6183e81286fa3288d33d/
Reviewed By: codeblock
Reviewers: codeblock, hunterbridges, jungejason, tuomaspelkonen, aran
CC: aran, codeblock
Differential Revision: 772
2011-08-03 15:37:18 +02:00
|
|
|
'PhabricatorObjectHandleStatus' => 'PhabricatorObjectHandleConstants',
|
2011-04-03 23:48:36 +02:00
|
|
|
'PhabricatorOwnersController' => 'PhabricatorController',
|
|
|
|
'PhabricatorOwnersDAO' => 'PhabricatorLiskDAO',
|
2011-04-04 07:03:27 +02:00
|
|
|
'PhabricatorOwnersDeleteController' => 'PhabricatorOwnersController',
|
2011-04-03 23:48:36 +02:00
|
|
|
'PhabricatorOwnersDetailController' => 'PhabricatorOwnersController',
|
2011-04-04 07:03:27 +02:00
|
|
|
'PhabricatorOwnersEditController' => 'PhabricatorOwnersController',
|
2011-04-03 23:48:36 +02:00
|
|
|
'PhabricatorOwnersListController' => 'PhabricatorOwnersController',
|
|
|
|
'PhabricatorOwnersOwner' => 'PhabricatorOwnersDAO',
|
|
|
|
'PhabricatorOwnersPackage' => 'PhabricatorOwnersDAO',
|
|
|
|
'PhabricatorOwnersPath' => 'PhabricatorOwnersDAO',
|
2011-01-23 06:09:13 +01:00
|
|
|
'PhabricatorPHID' => 'PhabricatorPHIDDAO',
|
|
|
|
'PhabricatorPHIDController' => 'PhabricatorController',
|
|
|
|
'PhabricatorPHIDDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorPHIDListController' => 'PhabricatorPHIDController',
|
2011-01-26 18:02:09 +01:00
|
|
|
'PhabricatorPHIDLookupController' => 'PhabricatorPHIDController',
|
2011-06-10 08:53:53 +02:00
|
|
|
'PhabricatorPaste' => 'PhabricatorPasteDAO',
|
|
|
|
'PhabricatorPasteController' => 'PhabricatorController',
|
|
|
|
'PhabricatorPasteCreateController' => 'PhabricatorPasteController',
|
|
|
|
'PhabricatorPasteDAO' => 'PhabricatorLiskDAO',
|
2011-06-14 04:12:30 +02:00
|
|
|
'PhabricatorPasteListController' => 'PhabricatorPasteController',
|
2011-06-10 08:53:53 +02:00
|
|
|
'PhabricatorPasteViewController' => 'PhabricatorPasteController',
|
2011-01-24 03:09:16 +01:00
|
|
|
'PhabricatorPeopleController' => 'PhabricatorController',
|
|
|
|
'PhabricatorPeopleEditController' => 'PhabricatorPeopleController',
|
|
|
|
'PhabricatorPeopleListController' => 'PhabricatorPeopleController',
|
Provide an activity log for login and administrative actions
Summary: This isn't complete, but I figured I'd ship it for review while it's still smallish.
Provide an activity log for high-level system actions (logins, admin actions). This basically allows two things to happen:
- The log itself is useful if there are shenanigans.
- Password login can check it and start CAPTCHA'ing users after a few failed attempts.
I'm going to change how the admin stuff works a little bit too, since right now you can make someone an agent, grab their certificate, revert them back to a normal user, and then act on their behalf over Conduit. This is a little silly, I'm going to move "agent" to the create workflow instead. I'll also add a confirm/email step to the administrative password reset flow.
Test Plan: Took various administrative and non-administrative actions, they appeared in the logs. Filtered the logs in a bunch of different ways.
Reviewers: jungejason, tuomaspelkonen, aran
CC:
Differential Revision: 302
2011-05-18 03:42:21 +02:00
|
|
|
'PhabricatorPeopleLogsController' => 'PhabricatorPeopleController',
|
2011-01-24 03:09:16 +01:00
|
|
|
'PhabricatorPeopleProfileController' => 'PhabricatorPeopleController',
|
2011-06-18 10:13:56 +02:00
|
|
|
'PhabricatorProfileView' => 'AphrontView',
|
2011-02-21 03:41:23 +01:00
|
|
|
'PhabricatorProject' => 'PhabricatorProjectDAO',
|
|
|
|
'PhabricatorProjectAffiliation' => 'PhabricatorProjectDAO',
|
|
|
|
'PhabricatorProjectAffiliationEditController' => 'PhabricatorProjectController',
|
|
|
|
'PhabricatorProjectController' => 'PhabricatorController',
|
2011-06-26 17:37:47 +02:00
|
|
|
'PhabricatorProjectCreateController' => 'PhabricatorProjectController',
|
2011-02-21 03:41:23 +01:00
|
|
|
'PhabricatorProjectDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorProjectListController' => 'PhabricatorProjectController',
|
|
|
|
'PhabricatorProjectProfile' => 'PhabricatorProjectDAO',
|
|
|
|
'PhabricatorProjectProfileController' => 'PhabricatorProjectController',
|
2011-06-18 10:13:56 +02:00
|
|
|
'PhabricatorProjectProfileEditController' => 'PhabricatorProjectController',
|
2011-07-20 07:48:38 +02:00
|
|
|
'PhabricatorProjectSubproject' => 'PhabricatorProjectDAO',
|
2011-04-04 19:29:46 +02:00
|
|
|
'PhabricatorRedirectController' => 'PhabricatorController',
|
Fix conservative CSRF token cycling limit
Summary:
We currently cycle CSRF tokens every hour and check for the last two valid ones.
This means that a form could go stale in as little as an hour, and is certainly
stale after two.
When a stale form is submitted, you basically get a terrible heisen-state where
some of your data might persist if you're lucky but more likely it all just
vanishes. The .js file below outlines some more details.
This is a pretty terrible UX and we don't need to be as conservative about CSRF
validation as we're being. Remedy this problem by:
- Accepting the last 6 CSRF tokens instead of the last 1 (i.e., pages are
valid for at least 6 hours, and for as long as 7).
- Using JS to refresh the CSRF token every 55 minutes (i.e., pages connected
to the internet are valid indefinitely).
- Showing the user an explicit message about what went wrong when CSRF
validation fails so the experience is less bewildering.
They should now only be able to submit with a bad CSRF token if:
- They load a page, disconnect from the internet for 7 hours, reconnect, and
submit the form within 55 minutes; or
- They are actually the victim of a CSRF attack.
We could eventually fix the first one by tracking reconnects, which might be
"free" once the notification server gets built. It will probably never be an
issue in practice.
Test Plan:
- Reduced CSRF cycle frequency to 2 seconds, submitted a form after 15
seconds, got the CSRF exception.
- Reduced csrf-refresh cycle frequency to 3 seconds, submitted a form after 15
seconds, got a clean form post.
- Added debugging code the the csrf refresh to make sure it was doing sensible
things (pulling different tokens, finding all the inputs).
Reviewed By: aran
Reviewers: tuomaspelkonen, jungejason, aran
CC: aran, epriestley
Differential Revision: 660
2011-07-13 23:05:18 +02:00
|
|
|
'PhabricatorRefreshCSRFController' => 'PhabricatorAuthController',
|
2011-05-31 19:23:31 +02:00
|
|
|
'PhabricatorRemarkupRuleDifferential' => 'PhabricatorRemarkupRuleObjectName',
|
Provide a "reference-with-full-name" syntax for Remarkup
Summary:
Provide a {T123} syntax which pulls in the entire name of an object, not just a
link to it. A major use for this is organizing projects using wiki pages. Since
handle links show object status now, this lets you organize stuff in an ad-hoc
way and get a reasonable overview of it. We can make handles richer in the
future, too.
The performance on this isn't perfect (it adds some potential single gets) but I
think it's okay for now and I don't want to make remarkup engine even more
complex until the preprocess/postprocess stuff has had a chance to settle and
I'm more confident it works.
In Differential and Maniphest we'll also incorrectly cache the object
state/name, but that'll fix itself once I move the cache code to use
preprocess/postprocess correctly.
Test Plan:
- See https://secure.phabricator.com/file/view/PHID-FILE-5f9ca32407bec20899b9/
for an example.
- Generated and looked over the documentation.
Reviewed By: jungejason
Reviewers: jungejason, tuomaspelkonen, aran, hunterbridges
CC: skrul, aran, jungejason, epriestley
Differential Revision: 784
2011-08-05 17:50:26 +02:00
|
|
|
'PhabricatorRemarkupRuleDifferentialHandle' => 'PhabricatorRemarkupRuleObjectHandle',
|
2011-04-11 12:02:19 +02:00
|
|
|
'PhabricatorRemarkupRuleDiffusion' => 'PhutilRemarkupRule',
|
2011-07-15 23:17:55 +02:00
|
|
|
'PhabricatorRemarkupRuleEmbedFile' => 'PhutilRemarkupRule',
|
2011-04-14 00:15:48 +02:00
|
|
|
'PhabricatorRemarkupRuleImageMacro' => 'PhutilRemarkupRule',
|
2011-05-31 19:23:31 +02:00
|
|
|
'PhabricatorRemarkupRuleManiphest' => 'PhabricatorRemarkupRuleObjectName',
|
Provide a "reference-with-full-name" syntax for Remarkup
Summary:
Provide a {T123} syntax which pulls in the entire name of an object, not just a
link to it. A major use for this is organizing projects using wiki pages. Since
handle links show object status now, this lets you organize stuff in an ad-hoc
way and get a reasonable overview of it. We can make handles richer in the
future, too.
The performance on this isn't perfect (it adds some potential single gets) but I
think it's okay for now and I don't want to make remarkup engine even more
complex until the preprocess/postprocess stuff has had a chance to settle and
I'm more confident it works.
In Differential and Maniphest we'll also incorrectly cache the object
state/name, but that'll fix itself once I move the cache code to use
preprocess/postprocess correctly.
Test Plan:
- See https://secure.phabricator.com/file/view/PHID-FILE-5f9ca32407bec20899b9/
for an example.
- Generated and looked over the documentation.
Reviewed By: jungejason
Reviewers: jungejason, tuomaspelkonen, aran, hunterbridges
CC: skrul, aran, jungejason, epriestley
Differential Revision: 784
2011-08-05 17:50:26 +02:00
|
|
|
'PhabricatorRemarkupRuleManiphestHandle' => 'PhabricatorRemarkupRuleObjectHandle',
|
2011-06-24 19:59:57 +02:00
|
|
|
'PhabricatorRemarkupRuleMention' => 'PhutilRemarkupRule',
|
Provide a "reference-with-full-name" syntax for Remarkup
Summary:
Provide a {T123} syntax which pulls in the entire name of an object, not just a
link to it. A major use for this is organizing projects using wiki pages. Since
handle links show object status now, this lets you organize stuff in an ad-hoc
way and get a reasonable overview of it. We can make handles richer in the
future, too.
The performance on this isn't perfect (it adds some potential single gets) but I
think it's okay for now and I don't want to make remarkup engine even more
complex until the preprocess/postprocess stuff has had a chance to settle and
I'm more confident it works.
In Differential and Maniphest we'll also incorrectly cache the object
state/name, but that'll fix itself once I move the cache code to use
preprocess/postprocess correctly.
Test Plan:
- See https://secure.phabricator.com/file/view/PHID-FILE-5f9ca32407bec20899b9/
for an example.
- Generated and looked over the documentation.
Reviewed By: jungejason
Reviewers: jungejason, tuomaspelkonen, aran, hunterbridges
CC: skrul, aran, jungejason, epriestley
Differential Revision: 784
2011-08-05 17:50:26 +02:00
|
|
|
'PhabricatorRemarkupRuleObjectHandle' => 'PhutilRemarkupRule',
|
2011-05-31 19:23:31 +02:00
|
|
|
'PhabricatorRemarkupRuleObjectName' => 'PhutilRemarkupRule',
|
2011-06-27 08:57:43 +02:00
|
|
|
'PhabricatorRemarkupRulePaste' => 'PhabricatorRemarkupRuleObjectName',
|
2011-07-12 05:14:46 +02:00
|
|
|
'PhabricatorRemarkupRulePhriction' => 'PhutilRemarkupRule',
|
2011-05-02 23:20:24 +02:00
|
|
|
'PhabricatorRemarkupRuleProxyImage' => 'PhutilRemarkupRule',
|
2011-05-27 21:50:02 +02:00
|
|
|
'PhabricatorRemarkupRuleYoutube' => 'PhutilRemarkupRule',
|
2011-02-13 03:26:15 +01:00
|
|
|
'PhabricatorRepository' => 'PhabricatorRepositoryDAO',
|
2011-04-06 05:49:31 +02:00
|
|
|
'PhabricatorRepositoryArcanistProject' => 'PhabricatorRepositoryDAO',
|
|
|
|
'PhabricatorRepositoryArcanistProjectEditController' => 'PhabricatorRepositoryController',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryCommit' => 'PhabricatorRepositoryDAO',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositoryCommitChangeParserWorker' => 'PhabricatorRepositoryCommitParserWorker',
|
|
|
|
'PhabricatorRepositoryCommitData' => 'PhabricatorRepositoryDAO',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryCommitDiscoveryDaemon' => 'PhabricatorRepositoryDaemon',
|
2011-04-04 08:23:36 +02:00
|
|
|
'PhabricatorRepositoryCommitHeraldWorker' => 'PhabricatorRepositoryCommitParserWorker',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositoryCommitMessageParserWorker' => 'PhabricatorRepositoryCommitParserWorker',
|
|
|
|
'PhabricatorRepositoryCommitParserWorker' => 'PhabricatorWorker',
|
|
|
|
'PhabricatorRepositoryCommitTaskDaemon' => 'PhabricatorRepositoryDaemon',
|
2011-02-13 03:26:15 +01:00
|
|
|
'PhabricatorRepositoryController' => 'PhabricatorController',
|
2011-03-11 23:13:23 +01:00
|
|
|
'PhabricatorRepositoryCreateController' => 'PhabricatorRepositoryController',
|
2011-02-13 03:26:15 +01:00
|
|
|
'PhabricatorRepositoryDAO' => 'PhabricatorLiskDAO',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryDaemon' => 'PhabricatorDaemon',
|
2011-04-02 02:11:05 +02:00
|
|
|
'PhabricatorRepositoryDefaultCommitMessageDetailParser' => 'PhabricatorRepositoryCommitMessageDetailParser',
|
2011-05-05 21:53:39 +02:00
|
|
|
'PhabricatorRepositoryDeleteController' => 'PhabricatorRepositoryController',
|
2011-03-11 23:13:23 +01:00
|
|
|
'PhabricatorRepositoryEditController' => 'PhabricatorRepositoryController',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositoryGitCommitChangeParserWorker' => 'PhabricatorRepositoryCommitChangeParserWorker',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorRepositoryGitCommitDiscoveryDaemon' => 'PhabricatorRepositoryCommitDiscoveryDaemon',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositoryGitCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker',
|
2011-08-09 21:47:46 +02:00
|
|
|
'PhabricatorRepositoryGitFetchDaemon' => 'PhabricatorRepositoryPullLocalDaemon',
|
2011-02-13 03:26:15 +01:00
|
|
|
'PhabricatorRepositoryGitHubNotification' => 'PhabricatorRepositoryDAO',
|
|
|
|
'PhabricatorRepositoryGitHubPostReceiveController' => 'PhabricatorRepositoryController',
|
2011-03-11 23:13:23 +01:00
|
|
|
'PhabricatorRepositoryListController' => 'PhabricatorRepositoryController',
|
Basic support for Mercurial in Diffusion
Summary: Change import script plus almost all the view stuff. Still some rough
edges but this seems to mostly work. Blame is currently unsupported but I think
everything else works properly.
Test Plan:
Imported the hg repository itself. It doesn't immediately seem completely
broken. Here are some screens:
https://secure.phabricator.com/file/view/PHID-FILE-1438b71cc7c4a2eb4569/
https://secure.phabricator.com/file/view/PHID-FILE-3cec4f72f39e7de2d041/
https://secure.phabricator.com/file/view/PHID-FILE-2ea4883f160e8e5098f9/
https://secure.phabricator.com/file/view/PHID-FILE-35f751a36ebf65399ade/
All the parsers were able to churn through it without errors.
Ran the new "reparse.php" script in various one-commit and repository modes.
Browsed/imported some git repos for good measure.
NOTE: The hg repository is only 15,000 commits and around 1,000 files.
Performance is okay but hg doesn't provide performant, native APIs to get some
data efficiently so we have to do some dumb stuff. If some of these interfaces
are cripplingly slow or whatever, let me know and we can start bundling some
Mercurial extensions with Arcanist.
Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran
Reviewed By: Makinde
CC: aran, Makinde, epriestley
Differential Revision: 960
2011-09-26 20:07:38 +02:00
|
|
|
'PhabricatorRepositoryMercurialCommitChangeParserWorker' => 'PhabricatorRepositoryCommitChangeParserWorker',
|
Add a Mercurial commit discovery daemon
Summary:
Repository import has three major steps:
- Commit discovery (serial)
- Message parsing (parallel, mostly VCS independent)
- Change parsing (parallel, highly VCS dependent)
This implements commit discovery for Mercurial, similar to git's parsing:
- List the heads of all the branches.
- If we haven't already discovered them, follow them back to their roots (or
the first commit we have discovered).
- Import all the newly discovered commits, oldest first.
This is a little complicated but it ensures we discover commits in depth order,
so the discovery process is robust against interruption/failure. If we just
inserted commits as we went, we might read the tip, insert it, and then crash.
When we ran again, we'd think we had already discovered commits older than HEAD.
This also allows later stages to rely on being able to find Phabricator commit
IDs which correspond to parent commits.
NOTE: This importer is fairly slow because "hg" has a large startup time
(compare "hg --version" to "git --version" and "svn --version"; on my machine,
hg has 60ms of overhead for any command) and we need to run many commands (see
the whole "hg id" mess). You can expect something like 10,000 per hour, which
means you may need to run overnight to discover a large repository (IIRC, the
svn/git discovery processes are both about an order of magnitude faster). We
could improve this with batching, but I want to keep it as simple as possible
for now.
Test Plan: Discovered all the commits in the main Mercurial repository,
http://selenic.com/repo/hg.
Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran
Reviewed By: Makinde
CC: aran, Makinde
Differential Revision: 943
2011-09-16 12:56:23 +02:00
|
|
|
'PhabricatorRepositoryMercurialCommitDiscoveryDaemon' => 'PhabricatorRepositoryCommitDiscoveryDaemon',
|
2011-09-16 18:37:15 +02:00
|
|
|
'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker',
|
2011-08-09 21:47:46 +02:00
|
|
|
'PhabricatorRepositoryMercurialPullDaemon' => 'PhabricatorRepositoryPullLocalDaemon',
|
|
|
|
'PhabricatorRepositoryPullLocalDaemon' => 'PhabricatorRepositoryDaemon',
|
2011-03-31 09:33:44 +02:00
|
|
|
'PhabricatorRepositoryShortcut' => 'PhabricatorRepositoryDAO',
|
2011-03-11 23:13:23 +01:00
|
|
|
'PhabricatorRepositorySvnCommitChangeParserWorker' => 'PhabricatorRepositoryCommitChangeParserWorker',
|
2011-03-11 18:34:22 +01:00
|
|
|
'PhabricatorRepositorySvnCommitDiscoveryDaemon' => 'PhabricatorRepositoryCommitDiscoveryDaemon',
|
|
|
|
'PhabricatorRepositorySvnCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker',
|
2011-09-05 02:31:16 +02:00
|
|
|
'PhabricatorRepositorySymbol' => 'PhabricatorRepositoryDAO',
|
2011-07-31 22:54:58 +02:00
|
|
|
'PhabricatorS3FileStorageEngine' => 'PhabricatorFileStorageEngine',
|
2011-05-16 20:43:39 +02:00
|
|
|
'PhabricatorSearchAttachController' => 'PhabricatorSearchController',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchBaseController' => 'PhabricatorController',
|
2011-06-20 06:02:48 +02:00
|
|
|
'PhabricatorSearchCommitIndexer' => 'PhabricatorSearchDocumentIndexer',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchController' => 'PhabricatorSearchBaseController',
|
|
|
|
'PhabricatorSearchDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorSearchDifferentialIndexer' => 'PhabricatorSearchDocumentIndexer',
|
|
|
|
'PhabricatorSearchDocument' => 'PhabricatorSearchDAO',
|
|
|
|
'PhabricatorSearchDocumentField' => 'PhabricatorSearchDAO',
|
|
|
|
'PhabricatorSearchDocumentRelationship' => 'PhabricatorSearchDAO',
|
2011-08-08 00:14:23 +02:00
|
|
|
'PhabricatorSearchEngineMySQL' => 'PhabricatorSearchEngine',
|
2011-06-15 16:43:43 +02:00
|
|
|
'PhabricatorSearchIndexController' => 'PhabricatorSearchBaseController',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchManiphestIndexer' => 'PhabricatorSearchDocumentIndexer',
|
2011-07-12 02:29:08 +02:00
|
|
|
'PhabricatorSearchPhrictionIndexer' => 'PhabricatorSearchDocumentIndexer',
|
2011-02-15 00:34:20 +01:00
|
|
|
'PhabricatorSearchQuery' => 'PhabricatorSearchDAO',
|
Improve search result listing
Summary:
Make it prettier, paginate, add user pictures, show document types, clean some
stuff up a little. Plenty of room for improvement but this should make it a lot
more useful.
Test Plan:
Here's what the new one looks like:
https://secure.phabricator.com/file/view/PHID-FILE-edce2b83c2e3a121c2b7/
Reviewed By: jungejason
Reviewers: tomo, jungejason, aran, tuomaspelkonen, mroch
Commenters: tomo
CC: aran, tomo, jungejason, epriestley
Differential Revision: 545
2011-06-28 23:35:02 +02:00
|
|
|
'PhabricatorSearchResultView' => 'AphrontView',
|
2011-05-16 20:43:39 +02:00
|
|
|
'PhabricatorSearchSelectController' => 'PhabricatorSearchController',
|
2011-06-23 22:31:20 +02:00
|
|
|
'PhabricatorSearchUserIndexer' => 'PhabricatorSearchDocumentIndexer',
|
2011-07-08 20:13:11 +02:00
|
|
|
'PhabricatorSlowvoteChoice' => 'PhabricatorSlowvoteDAO',
|
|
|
|
'PhabricatorSlowvoteComment' => 'PhabricatorSlowvoteDAO',
|
|
|
|
'PhabricatorSlowvoteController' => 'PhabricatorController',
|
|
|
|
'PhabricatorSlowvoteCreateController' => 'PhabricatorSlowvoteController',
|
|
|
|
'PhabricatorSlowvoteDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorSlowvoteListController' => 'PhabricatorSlowvoteController',
|
|
|
|
'PhabricatorSlowvoteOption' => 'PhabricatorSlowvoteDAO',
|
|
|
|
'PhabricatorSlowvotePoll' => 'PhabricatorSlowvoteDAO',
|
|
|
|
'PhabricatorSlowvotePollController' => 'PhabricatorSlowvoteController',
|
2011-01-23 02:48:55 +01:00
|
|
|
'PhabricatorStandardPageView' => 'AphrontPageView',
|
2011-04-08 20:13:29 +02:00
|
|
|
'PhabricatorStatusController' => 'PhabricatorController',
|
2011-08-30 22:12:20 +02:00
|
|
|
'PhabricatorSymbolNameLinter' => 'ArcanistXHPASTLintNamingHook',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorTaskmasterDaemon' => 'PhabricatorDaemon',
|
2011-04-30 19:11:41 +02:00
|
|
|
'PhabricatorTestCase' => 'ArcanistPhutilTestCase',
|
2011-03-07 07:29:22 +01:00
|
|
|
'PhabricatorTimelineCursor' => 'PhabricatorTimelineDAO',
|
|
|
|
'PhabricatorTimelineDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorTimelineEvent' => 'PhabricatorTimelineDAO',
|
|
|
|
'PhabricatorTimelineEventData' => 'PhabricatorTimelineDAO',
|
2011-06-13 01:06:17 +02:00
|
|
|
'PhabricatorTimer' => 'PhabricatorCountdownDAO',
|
2011-05-22 23:40:51 +02:00
|
|
|
'PhabricatorTransformedFile' => 'PhabricatorFileDAO',
|
2011-08-03 17:17:53 +02:00
|
|
|
'PhabricatorTrivialTestCase' => 'PhabricatorTestCase',
|
2011-01-25 22:48:05 +01:00
|
|
|
'PhabricatorTypeaheadCommonDatasourceController' => 'PhabricatorTypeaheadDatasourceController',
|
|
|
|
'PhabricatorTypeaheadDatasourceController' => 'PhabricatorController',
|
2011-04-01 02:06:33 +02:00
|
|
|
'PhabricatorUIExampleController' => 'PhabricatorController',
|
|
|
|
'PhabricatorUIExampleRenderController' => 'PhabricatorUIExampleController',
|
2011-04-04 00:50:06 +02:00
|
|
|
'PhabricatorUIListFilterExample' => 'PhabricatorUIExample',
|
2011-04-01 02:06:33 +02:00
|
|
|
'PhabricatorUIPagerExample' => 'PhabricatorUIExample',
|
2011-01-24 03:09:16 +01:00
|
|
|
'PhabricatorUser' => 'PhabricatorUserDAO',
|
2011-07-18 17:02:00 +02:00
|
|
|
'PhabricatorUserAccountSettingsPanelController' => 'PhabricatorUserSettingsPanelController',
|
|
|
|
'PhabricatorUserConduitSettingsPanelController' => 'PhabricatorUserSettingsPanelController',
|
2011-01-24 03:09:16 +01:00
|
|
|
'PhabricatorUserDAO' => 'PhabricatorLiskDAO',
|
2011-07-18 17:02:00 +02:00
|
|
|
'PhabricatorUserEmailSettingsPanelController' => 'PhabricatorUserSettingsPanelController',
|
Provide an activity log for login and administrative actions
Summary: This isn't complete, but I figured I'd ship it for review while it's still smallish.
Provide an activity log for high-level system actions (logins, admin actions). This basically allows two things to happen:
- The log itself is useful if there are shenanigans.
- Password login can check it and start CAPTCHA'ing users after a few failed attempts.
I'm going to change how the admin stuff works a little bit too, since right now you can make someone an agent, grab their certificate, revert them back to a normal user, and then act on their behalf over Conduit. This is a little silly, I'm going to move "agent" to the create workflow instead. I'll also add a confirm/email step to the administrative password reset flow.
Test Plan: Took various administrative and non-administrative actions, they appeared in the logs. Filtered the logs in a bunch of different ways.
Reviewers: jungejason, tuomaspelkonen, aran
CC:
Differential Revision: 302
2011-05-18 03:42:21 +02:00
|
|
|
'PhabricatorUserLog' => 'PhabricatorUserDAO',
|
2011-02-21 07:47:56 +01:00
|
|
|
'PhabricatorUserOAuthInfo' => 'PhabricatorUserDAO',
|
2011-07-18 17:02:00 +02:00
|
|
|
'PhabricatorUserOAuthSettingsPanelController' => 'PhabricatorUserSettingsPanelController',
|
Add change password settings panel
Summary:
In password-based auth environments, there is now a user settings
panel to allow them to change their password.
Test Plan:
Click settings, choose password from the left:
* enter current password, new password (twice), log out, and log in with
new password
* enter current password, non-matching passwords, and get error
* enter invalid old password, and get error
* use firebug to change csrf token and verify that it does not save with
and invalid token
Changed config to disable password auth, loaded settings panel and saw
that password was no longer visible. Tried loading the panel anyway and
got redirected.
Reviewers: epriestley
Reviewed By: epriestley
CC: aran, epriestley
Differential Revision: 890
2011-09-04 10:53:58 +02:00
|
|
|
'PhabricatorUserPasswordSettingsPanelController' => 'PhabricatorUserSettingsPanelController',
|
2011-07-24 20:02:08 +02:00
|
|
|
'PhabricatorUserPreferenceSettingsPanelController' => 'PhabricatorUserSettingsPanelController',
|
2011-03-31 04:21:09 +02:00
|
|
|
'PhabricatorUserPreferences' => 'PhabricatorUserDAO',
|
2011-02-20 03:28:41 +01:00
|
|
|
'PhabricatorUserProfile' => 'PhabricatorUserDAO',
|
2011-07-25 00:03:59 +02:00
|
|
|
'PhabricatorUserProfileSettingsPanelController' => 'PhabricatorUserSettingsPanelController',
|
2011-07-22 19:17:57 +02:00
|
|
|
'PhabricatorUserSSHKey' => 'PhabricatorUserDAO',
|
|
|
|
'PhabricatorUserSSHKeysSettingsPanelController' => 'PhabricatorUserSettingsPanelController',
|
2011-02-06 07:36:21 +01:00
|
|
|
'PhabricatorUserSettingsController' => 'PhabricatorPeopleController',
|
2011-07-18 17:02:00 +02:00
|
|
|
'PhabricatorUserSettingsPanelController' => 'PhabricatorPeopleController',
|
2011-03-10 22:48:29 +01:00
|
|
|
'PhabricatorWorkerDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorWorkerTask' => 'PhabricatorWorkerDAO',
|
|
|
|
'PhabricatorWorkerTaskData' => 'PhabricatorWorkerDAO',
|
2011-03-27 07:55:18 +02:00
|
|
|
'PhabricatorWorkerTaskDetailController' => 'PhabricatorDaemonController',
|
2011-04-07 04:17:05 +02:00
|
|
|
'PhabricatorXHPASTViewController' => 'PhabricatorController',
|
|
|
|
'PhabricatorXHPASTViewDAO' => 'PhabricatorLiskDAO',
|
|
|
|
'PhabricatorXHPASTViewFrameController' => 'PhabricatorXHPASTViewController',
|
|
|
|
'PhabricatorXHPASTViewFramesetController' => 'PhabricatorXHPASTViewController',
|
|
|
|
'PhabricatorXHPASTViewInputController' => 'PhabricatorXHPASTViewPanelController',
|
|
|
|
'PhabricatorXHPASTViewPanelController' => 'PhabricatorXHPASTViewController',
|
|
|
|
'PhabricatorXHPASTViewParseTree' => 'PhabricatorXHPASTViewDAO',
|
|
|
|
'PhabricatorXHPASTViewRunController' => 'PhabricatorXHPASTViewController',
|
|
|
|
'PhabricatorXHPASTViewStreamController' => 'PhabricatorXHPASTViewPanelController',
|
|
|
|
'PhabricatorXHPASTViewTreeController' => 'PhabricatorXHPASTViewPanelController',
|
2011-02-02 22:48:52 +01:00
|
|
|
'PhabricatorXHProfController' => 'PhabricatorController',
|
|
|
|
'PhabricatorXHProfProfileController' => 'PhabricatorXHProfController',
|
|
|
|
'PhabricatorXHProfProfileSymbolView' => 'AphrontView',
|
|
|
|
'PhabricatorXHProfProfileTopLevelView' => 'AphrontView',
|
2011-07-12 16:23:04 +02:00
|
|
|
'PhrictionActionConstants' => 'PhrictionConstants',
|
2011-07-11 21:34:53 +02:00
|
|
|
'PhrictionContent' => 'PhrictionDAO',
|
2011-07-11 17:54:22 +02:00
|
|
|
'PhrictionController' => 'PhabricatorController',
|
|
|
|
'PhrictionDAO' => 'PhabricatorLiskDAO',
|
2011-07-17 20:06:02 +02:00
|
|
|
'PhrictionDiffController' => 'PhrictionController',
|
2011-07-11 17:54:22 +02:00
|
|
|
'PhrictionDocument' => 'PhrictionDAO',
|
|
|
|
'PhrictionDocumentController' => 'PhrictionController',
|
2011-07-17 03:25:45 +02:00
|
|
|
'PhrictionDocumentPreviewController' => 'PhrictionController',
|
2011-07-12 17:08:03 +02:00
|
|
|
'PhrictionDocumentTestCase' => 'PhabricatorTestCase',
|
2011-07-11 21:34:53 +02:00
|
|
|
'PhrictionEditController' => 'PhrictionController',
|
2011-07-12 00:06:19 +02:00
|
|
|
'PhrictionHistoryController' => 'PhrictionController',
|
2011-07-12 00:42:12 +02:00
|
|
|
'PhrictionListController' => 'PhrictionController',
|
2011-01-16 22:51:39 +01:00
|
|
|
),
|
|
|
|
'requires_interface' =>
|
|
|
|
array(
|
|
|
|
),
|
|
|
|
));
|