Note: calling msg() with no parameter was never supported,
doing this on a RequestContext for example would result in:
PHP Warning: Missing argument 1 for wfMessage() ...followed
by a bunch of fallout.
So this patch only formally declares what was already a
requirement in reality.
Change-Id: I1864afb8bcc641698689828914949a06506d8f3a
We have several types of change lists (old RC/watchlist/related
changes, enhanced RC/watchlist, history) with slightly different
HTML, each with their own idiosyncracies. JavaScript code trying
to identify lines by log ID / revision ID has to jump through all
kinds of hoops to work with that.
To simplify the lives of frontend / gadget maintainers and provide
something approaching an API for these pages, we now expose the basic
attributes of each change line (revision ID for edits, log type/action
and ID for log events) as data attributes.
The OldChangesListRecentChangesLine, EnhancedChangesListModifyLineData,
EnhancedChangesListModifyBlockLineData, PageHistoryLine,
ContributionsLineEnding and DeletedContributionsLineEnding hooks
are updated accordingly. New hooks (LogEventsListLineEnding and
NewPagesLineEnding) are added for the change list pages which did
not yet have them.
Change-Id: I6dd006d0b1b0fd35c0020f0f9eea9113eca30b35
This reverts most of commit c84ba4d864.
The changes made there are no longer needed, and nothing in Gerrit seems
to have started using them since they were added.
The added constants in WikiPage, WikiPage::getLastPurgeTimestamp(), and
Article::getLastPurgeTimestamp() are deprecated, useless, and unused,
but not removed yet since they snuck into 1.28 so we can't revert them
without a deprecation period. Sigh.
Bug: T145649
Change-Id: I526fd4e004bee84c831a4cee71e44e92ee73480b
Support for OOUI is added to FormAction, and subclasses can enable it as
required.
PurgeAction, RevertAction, WatchAction and UnwatchAction are converted
to OOUI, with minor changes to the forms to give them a neater appearance.
Bug: T160236
Change-Id: I5294e5d886e8641e9b63eabc9d7fa8ea93e0df96
Change from linking of description to extra link behind the data. Also
reorder the code and language name to match the order on
Special:PageLanguage
Change-Id: I859df5d04c5d937fba55c309034a0350574b5af7
Just link the special page, when it is there, means checking
$wgContentHandlerUseDB
Change Title::quickUserCan to Title::userCan and pass a user object to
avoid a global..
Change some other places to use the local variable, instead of calling
the context source again.
Change-Id: I561899446235165fb77b626b55f35ce716d798c9
It looks like there is something missing after the last statement
Also remove some other empty lines at begin of functions, ifs or loops
while at these files
Change-Id: Ib00b5cfd31ca4dcd0c32ce33754d3c80bae70641
The main interface already has javascript enhancement to use
the API and mw.notify. This patch affects permalinks without
tokens, and opening the link without javascript.
This will match the current behaviour of action=watch.
Bug: T130946
Change-Id: I6be2c07824c17b165e068fc4ac36ab192e12bc9d
* Renamed mDoneWrites to be clearer at what type it is.
* Also cleaned up a few callers of this method
Change-Id: I45856b210c289c2e2f193cc4328a208e20b4e0a8
This will still clear the local DC parser cache and the CDN cache
in all DCs. Therefore, the next page views served by the local
DC will reflect the refreshed content, as will further GET/HEAD
requests by the client that issued the purge using GET/HEAD.
If the problem was imply a stale CDN cache entry, then all
DCs will be up-to-date. If the problem is stale parser cache,
then a proper POST purge request is required to refresh all DCs.
Bug: T92357
Change-Id: I9af12ca8cfff73298f404fd3e2dd4f546621c546
Linker::formatTemplates() was a static function that depended upon
global state like $wgLang (explicitly), $wgUser & $wgTitle (implicitly).
Moving it to a separate class allows us to clean it up a little bit and
use modern things like RequestContext and LinkRenderer.
Bug: T145177
Change-Id: Icdea8a2b299b4876feb3df3d66df3e4c104dd928
If the user is allowed to change the content model of the page,
then add a link to it on ?action=info, next to the localized content
model name.
Change-Id: I084e8f390f90d29ed2e2d0f8ab43bcdfe8538ad1
Fix regression from 9af38c046c, which made 'from' a required
non-empty parameter where previously an empty value was allowed.
The rollback links always include a 'from' parameter, but it is
set to an empty string by Revision::getUserText if the current
revision has its username hidden.
Test plan:
* Go to action=history, tick latest revision and "Change visibility".
* Tick "Editor's username" and apply the change.
* Hit "rollback" on the history page.
* Before: "missing parameter" error.
After: Success.
Bug: T141985
Change-Id: I20d23e2aeec858f82231910c030c14ffa3af656f
This is more consistent with LoadBalancer, modern, and inclusive
of master/master mysql, NDB cluster, and MariaDB galera cluster.
The old constant is an alias now.
Change-Id: I0b37299ecb439cc446ffbe8c341365d1eef45849
There are several reasons for this:
* The file thumbnail shown on the main file page is cached by the
browser, as images tend to be. This often confuses users into
thinking their revert did not work, and into attempting it again.
Recent examples:
* https://commons.wikimedia.org/wiki/Commons:Village_pump/Archive/2016/07#Wrong_SVG_rendering_on_File:DuckDuckGo_logo_and_wordmark.svg
* https://commons.wikimedia.org/w/index.php?title=Commons:Upload_help&oldid=205348523#Reversion_is_not_working_for_me.
Ideally we'd prevent the caching, but preventing repeated reverts
should also work.
* Refreshing the success page causes the revert to be attempted again
(T53383). The usual solution to this is the Post/Redirect/Get
pattern, but we want to show a success message so that would require
some more changes (something similar to the post-edit notification).
* It can serve as a "revert conflict" detection mechanism, crude but
better than none.
In the unlikely case that uploading an identical older version of
the file is necessary, it can still be done using Special:Upload.
Bug: T53383
Change-Id: I37e04a536c5c2fc6cdbe59f6f598bb0c7f25d7a7
* Follow-up to 8b141886ed
* The method is now called after the setCdnMaxage() call
in performAction.
* Allow any CDN urls for the title now, check $wgDebugToolbar,
and allows caching redirects. The multi-step redirect case does
not cache however, for simplicity.
* Removed now-unused code in Article that calculated $timestamp.
Change-Id: Ic4f4e3a79d7d386c2f15ca5b11dddf5c57ff9e9f
Ideally this never happens, but it can, so fail gracefully instead
of just throwing a 'call to a member function on non-object' message
Change-Id: Iac8be9c7994aa3e74ed3c0eecff211524037165e
For the index.php end point, POSTs do not need a token.
This avoids cross-DC writes in active/active DC setups and
avoids DB writes that can be caused by just accidentally
following a link.
There are no links to action=purge by default in MediaWiki.
User scripts that create purge links will continue to work.
However these links will now point to a confirmation form.
To preserve the immediate-purge-redirect effect, these
scripts should be updated to use the API instead.
Bug: T135170
Change-Id: I5749ff470d99c5e3f22e05ff6856394cc05a0f48
addedwatchtext and removedwatchtext uses the phrase "$1 and its discussion page".
As this is inaccurate on talk namespace pages, two new messages, addedwatchtext-talk
and removedwatchtext-talk, have been introduced for use in talk namespace pages.
Bug: T87856
Change-Id: Iafd86402d3a2a65ce2be007c87c981ac08f44e67
Since d629541076 the .updatedmarker element was styled via a JavaScript
module - which caused a flash of unstyled content on the history page
for most users, and was left unstyled for noscript users.
Bug: T137383
Change-Id: I362abacf51160a8305b2b0013f65e89deb2ffc93
Usernames are stored with spaces instead of underscores, so this was
causing exceptions later on when dbkeys were expected to be provided to
TitleValue.
Let Title take care of normalization from spaces format to underscores
in Title::makeTitle(), and pass that object onto LinkBatch instead.
Bug: T137147
Change-Id: Ia3606d30de61173e4d5526a9d7a77bd4b1710a05
This partially reverts commit 9af38c046c.
* The new JS modules continue to exist. While not used by default,
the mediawiki.api.rollback may be used elsewhere by now.
The mediawiki.page.rollback module may still be used on cached
pages and should continue to work.
* The new API behaviour remains.
* To avoid breaking mid-air rollbacks again, the token remains
the same (plain "rollback" salt). We're not re-introducing the
web-specific salt again.
Bug: T136375
Change-Id: Iba17ce55ff9506e838bfc6e70ca280e5a20b77b6