- Maniphest Tasks
- T12524: Modernize Countdown
- rP9d56a3d86ec7: Reimplement Countdown transactions using Modular Transaction framework
Couple of really minor inlines but this all looks great to me.
You should be able to throw these away -- modular transactions figure these out automatically.
Just put an (int)$object->... cast here...
...and then you should be able to get rid of this.
This one should be newRequiredError() I think.
The difference between "required" and "invalid" is that some edits are allowed to go through even if required fields are missing. For example, you can award a token or subscribe to a countdown even if it somehow has missing information.
So generally if a field is empty, but shouldn't be empty, use newRequiredError(). If it has an improper value, use newInvalidError().
You can omit quotes in ModularTransactions -- we used to have to quote everything, but renderOldValue() and renderNewValue() now give these a nice italic style. This also disambiguates cases where someone renames something to "quote quote '" quotes " double quote because they are oh-so-clever.
(These are right.)
Test plan could use slightly fewer owls but this looks good to me and I couldn't figure out any way to break it locally. 🐦
I think you can get rid of this -- this kind of transaction will never generate a separate mail section because it doesn't implement newChangeDetailView(), since it isn't a big block of text that needs a complictated diff to show changes.