1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-28 09:42:41 +01:00
phorge-phorge/src/applications/paste
epriestley 33ec855449 Modularize application transactions in Paste, mostly
Summary:
Ref T9789. `Transaction` and `Editor` classes are the last major pieces of infrastructure that haven't been fully modularized.

Some of the specific issues are:

  - `Editor` classes rely on a bunch of `instanceof` stuff in the base class to pick up transaction types like "subscribe", "projects", etc. Instead, applications should be adding these, and third-party applications should be able to add them.
  - Code is spread across `Transaction` and `Editor` classes somewhat oddly. For example, generating old/new values would probably make more sense at the `Transaction` level, but it currently exists at the `Editor` level.
  - Both types of classes have a lot of functions based on `switch()` statements, which require a ton of boilerplate and are just generally kind of hard to work with.

This creates classes for each type of transaction, and moves almost all of the logic to them. These classes are simpler and more focused than the old stuff was, and can organize related code better.

This starts inching toward defining `CoreTransactions` for features shared across applications. It only defines the "Create" transaction so far, but at some point I plan to move all the other shared transactions to Core and let them control which objects they're available for.

Test Plan:
  - Created pastes with web UI and API.
  - Edited all paste properites.
  - Archived/activated.
  - Verified files got reasonable names.
  - Reviewed timeline and feed.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T9789

Differential Revision: https://secure.phabricator.com/D16111
2016-06-14 06:13:28 -07:00
..
application Fully modularize the "Quick Actions" menu 2016-06-05 10:32:01 -07:00
capability Paste: Add edit policy 2014-12-31 08:24:57 -08:00
conduit Modularize application transactions in Paste, mostly 2016-06-14 06:13:28 -07:00
config Move FontIcon calls to Icon 2016-01-28 08:48:45 -08:00
controller Modularize application transactions in Paste, mostly 2016-06-14 06:13:28 -07:00
editor Modularize application transactions in Paste, mostly 2016-06-14 06:13:28 -07:00
engineextension Give "owners.search" a "paths" attachment and a default "owners" value 2015-12-14 11:53:50 -08:00
lipsum Modularize application transactions in Paste, mostly 2016-06-14 06:13:28 -07:00
mail Modularize application transactions in Paste, mostly 2016-06-14 06:13:28 -07:00
phid Mark PhabricatorPHIDType::getPHIDTypeApplicationClass() as abstract 2015-11-03 06:47:12 +11:00
query Move FontIcon calls to Icon 2016-01-28 08:48:45 -08:00
remarkup Add some missing type hints 2015-05-05 07:33:00 +10:00
snippet Truncate long source lines in Paste search result list snippets 2015-10-20 19:07:04 +00:00
storage Modularize application transactions in Paste, mostly 2016-06-14 06:13:28 -07:00
view Return $this from setter methods 2015-07-06 22:53:43 +10:00
xaction Modularize application transactions in Paste, mostly 2016-06-14 06:13:28 -07:00