* Actions come in two flavours: the show-a-form-then-do-something-with-the-result (delete, protect, edit, etc) and the just-do-something (watch, rollback, patrol, etc). Create abstract base classes Action and FormlessAction to support these two cases. HTMLForm is an integral part of the form-based structure.
* Look mum, no globals! :D Fully context-based.
* Implement watch/unwatch, credits and delete actions in the new system as proof-of-concept. This also gives the delete frontend a much-needed overhaul.
* Stub out the newly-deprecated functions from Article.php. This already reduces its linecount by about 15%, and there are plenty more actions still to do.
* Centralising actions like this is going to render a lot of hooks type-incompatible. There's simply nowhere you can put the ArticleConfirmDelete hook, for instance, where it can be passed an OutputPage as the second parameter. On the other hand, we can implement new hooks like ActionModifyFormFields and ActionBeforeFormDisplay, which can do much prettier stuff to the forms, like adding extra fields the 'right' way. Update LiquidThreads to use these new hooks where appropriate.
Before this change, there were (? being regex 0 or 1)
"" ===? 1
'' ===? 24
"" !==? 8
'' !==? 32
== "" 14
== '' 344
!= "" 9
!== "" 4
!= '' 151
!== '' 85
Rhs was the much more common, and the preferred style by many developers.. (Was a similar discussion in #mediawiki recently.. After that lolbugreport i think)
Where there is a string (non empty) on the lhs, and variable/method call on the rhs still need normalising
Technically the onkeyup handler is redundant, but at least on Firefox, onchange doesn't run
until after the input loses focus, so its somewhat less intuitive, but necessary if the user
clicks an option from a browser's autosuggestion
* Add $wgRemoveGroups as a means of restricting a group's rights. The syntax is identical to $wgGroupPermissions, but users in these groups will have these rights stripped from them.
* Modify Special:ListGroupRights so that it displays revoked permissions as well (the display of assigned vs. revoked is changeable via css).
* Bump $wgStyleVersion
* Use fragments of English when naming things, instead of a jumble of words vaguely related to the topic
* Use verbs in function names that are related to what the functions do
* Move all functions into an object, to avoid prefixes that look like part of a nonsensical sentence
* Fixed a bug whereby the "move" controls would not be unlocked if the expiry times differed. Refactored the relevant code.
* When the user types something into the "other time" box, automatically select "other time" from the drop-down list.
In ProtectionForm:
* Use the new protect.js interface
* Use accessor instead of Title member variable mRestrictionsExpiry
* Added an "existing expiry" option to the expiry drop-down list, instead of putting the ISO 8601 time in the "other" box
* Formatting
* Fixed convoluted expiry time data flow, documented
* s/List/Selection, for variables containing a value that the user has selected from a list