Commit graph

405 commits

Author SHA1 Message Date
Brad Jorsch
d8b1b79ea4 Move redirect rendering into WikitextContent
There's no good reason for everything that wants to render a page to
have to test whether the page is a redirect and then call
Article::viewRedirect to get the fancy rendering instead of using the
ParserOutput. This logic can easily be moved into
WikitextContent::getParserOutput so callers can just use the
returned ParserOutput.

At the same time, we can handle "#REDIRECT [[File:Foo]]" and
"#REDIRECT [[Category:Foo]]" the way people expect, by recording the
link in pagelinks rather than imagelinks/categorylinks (although this
means fixing ImagePage's bug about assuming anything in imagelinks that
is a redirect is a redirect to the image too).

And we can finally fix bug 14323, too.

Bug: 14323
Bug: 17259
Bug: 27621
Bug: 42642
Bug: 50488
Change-Id: Id44d566a7ca35a1b9579d0c0e947877c980b0686
Followup: I1c7582d1bf7ec4184a45b00154e3dd5b39dd444b
Followup: I3653b608941813a73281f4f0545bea2487d43964
2014-01-07 09:18:22 -05:00
Max Semenik
44962de1a5 Allow customizing classes inside of diffs
Not every implementation might want them

Change-Id: Id186b71760d59be7e61458bf1f62965a0f2f826c
2013-12-11 23:07:04 +04:00
Siebrand Mazeland
9cd43cd01a Replace inline tab with space
Spotted by Umherirrender in
https://gerrit.wikimedia.org/r/#/c/96554/1/includes/diff/DifferenceEngine.php

Change-Id: I363a3299d61e2cfb7c31db9c293a2c7e73fcef44
2013-11-21 18:32:38 +00:00
jenkins-bot
debe941aa8 Merge "Initialise variables and update documentation" 2013-11-20 21:59:27 +00:00
jenkins-bot
424845ad11 Merge "Remove unused private method check()" 2013-11-20 21:56:57 +00:00
jenkins-bot
3edd3c4055 Merge "Abstract declaration must precede visibility declaration" 2013-11-20 21:52:09 +00:00
Siebrand Mazeland
84552a2dd4 Initialise variables and update documentation
Change-Id: Idb242f65801ee79531c2300cf9fcb5b3929f66ab
2013-11-20 20:57:52 +01:00
Siebrand Mazeland
dcb0471e19 Remove unused private method check()
Change-Id: I29381892be9966b92b99cb3b021cc5a9a4be8a80
2013-11-20 20:41:58 +01:00
Siebrand Mazeland
7b94b51088 Abstract declaration must precede visibility declaration
Change-Id: Ic13646c5a5c5b1f80db58740b207f853c7e25ceb
2013-11-20 20:32:53 +01:00
Siebrand Mazeland
f5003767a0 Rename classes DiffOp_* to DiffOp*
Part of program to remove underscores from class names. Checked core and
600+ extensions for occurrences. All uses are in core in core are updated
in this patch. No uses in extensions.

Change-Id: I86b8c6f8702e661554c7b794df09892db94a84d1
2013-11-20 20:28:14 +01:00
Siebrand Mazeland
4da81608c2 Rename class HWLDF_WordAccumulator to HWLDFWordAccumulator
Part of program to remove underscores from class names. Checked core and
600+ extensions for occurrences. All uses are in core in core are updated
in this patch.

Change-Id: Ib3094249ab192db80f1639c5e543ece84c688b9a
2013-11-20 20:24:48 +01:00
Siebrand Mazeland
c13d478e9b Break long lines in includes/diff/
Change-Id: I778079edb147623f54f6140e11e25120b04c382e
2013-11-20 20:22:36 +01:00
Siebrand Mazeland
27edd5708d Avoid function calls in a for loop test part
Change-Id: Ief0976e3d1cd1da7074b1ed6d427153ccc189f18
2013-11-20 20:22:26 +01:00
Siebrand Mazeland
abefd2c07e Update formatting for includes/diff
Change-Id: Id032a32ca6ebea3daf5313a05602c5e98603d983
2013-11-20 20:11:57 +01:00
jenkins-bot
10e909590a Merge "Revert "DifferenceEngine cleanup"" 2013-11-11 16:47:39 +00:00
Siebrand
60fa0e1c3b Revert "DifferenceEngine cleanup"
This reverts commit 1f423cc609.

Change-Id: I2254eb37376063a081ad89481654b735fb0360b1
2013-11-11 16:35:19 +00:00
jenkins-bot
ab187d369a Merge "DifferenceEngine cleanup" 2013-11-09 01:19:28 +00:00
jenkins-bot
6834ae7504 Merge "Refactor diffs" 2013-11-09 01:18:08 +00:00
Max Semenik
1f423cc609 DifferenceEngine cleanup
* Remove mPrefixes from variables
* Turn a define into class const

Change-Id: I80874627df9dffae596f8f7cb3ca28f19ba1f167
2013-11-09 04:21:32 +04:00
Max Semenik
651c43140f DifferenceEngine minor fixes
* Function docs
* Remove useless variable assignment

Change-Id: I292e1391e0c24399b2c203b9f7fe7c58df089ad0
2013-11-02 02:28:13 +04:00
Siebrand Mazeland
e61cb8218b Update docs and declare visibility on class props
Change-Id: Ib0f02202d075d4a56dc4e37b08d7ac9399e8c86c
2013-11-01 12:35:27 +01:00
aude
607bcd6c63 Put get diff body cache key into own function
This allows derivative DifferenceEngine classes to
generate cache keys in a different format, as appropriate.

(e.g. for Wikibase, allow diffs to be cached by language
and fully localized)

Bug: 55667
Change-Id: I22bf4e70f86da832a86baf6790ad4a403fce4bf1
2013-10-31 10:27:55 +00:00
Max Semenik
c37b4dc964 Refactor diffs
* Move some classes to separate files to avoid having a monstrous file with a
  dozen classes.
* Remove weird underscores from class names.
* Instead of prefixing members with underscores, specify visibility explicitly.
* Rename c_style -> camelCase per coding conventions.
* Throw exceptions instead of fataling out with trigger_error().
* Remove pointless constant used only once.

Change-Id: Icac23c0f6259c73f5fe07f201b83b9c332ba0469
2013-10-30 21:40:06 +04:00
Bartosz Dziewoński
dfc3e3df90 Correctly update wl_notificationtimestamp when viewing old revisions
== Prelude ==
wl_notificationtimestamp controls sending the user e-mail
notifications about changes to pages, as well as showing the "updated
since last visit" markers on history pages, recent changes and
watchlist.

== The bug ==
Previously, on every view of a page, the notification timestamp was
cleared, regardless of whether the user as actually viewing the latest
revision. When viewing a diff, however, the timestamp was cleared only
if one of the revisions being compared was the latest one of its page.

The same behavior applied to talk page message indicators (which are
actually stored sepately to cater to anonymous users).

This was inconsistent and surprising when one was attempting to, say,
go through the 50 new posts to a discussion page in a peacemeal
fashion.

== The fix ==
If the revision being viewed is the latest (or can't be determined),
the timestamp is cleared as previously, as this is necessary to
reenable e-mail notifications for given user and page.

If the revision isn't the latest, the timestamp is updated to
revision's timestamp plus one second. This uses up to two simple
(selectField) indexed queries per page view, only fired when we
do not already know we're looking at the latest version.

Talk page indicator is updated to point at the next revision after the
one being viewed, or cleared if viewing the latest revision. The
UserClearNewTalkNotification hook gained $oldid as the second argument
(a backwards-compatible change). In Skin, we no longer ignore the
indicator being present if we're viewing the talk page, as it might
still be valid.

== The bonus ==
Comments and formatting was updated in a few places, including
tables.sql and Wiki.php.

The following functions gained a second, optional $oldid parameter
(holy indirection, Batman!):
* WikiPage#doViewUpdates()
* User#clearNotification()
* WatchedItem#resetNotificationTimestamp()

DifferenceEngine gained a public method mapDiffPrevNext() used
to parse the ids from URL parameters like oldid=12345&diff=prev,
factored out of loadRevisionIds(). A bug where the NewDifferenceEngine
hook would not be called in some cases, dating back to its
introduction in r45518, was fixed in the process.

Bug: 41759
Change-Id: I4144ba1987b8d7a7e8b24f4f067eedac2ae44459
2013-10-27 17:47:53 +00:00
Tim Starling
d1bc243f65 Remove all instances of the word "iff"
It's elitist mathematical jargon. In all cases dealt with here, it adds
no additional meaning compared to "if", beyond what was already obvious
from context. Thus, its only purpose is to smugly demonstrate that the
author attended their second-year mathematics classes, at the expense of
causing confusion for everyone who doesn't have such a background.

If you really think you need to convey extra information beyond what
"if" gives you, the English language contains plenty of devices for doing
so, without resorting to neologisms.

Change-Id: Iae21095d02ec2935c10e94f532235c2671c115b1
2013-10-23 10:56:54 -07:00
Chad Horohoe
d0c8ba037c Remove wfDl() and cleanup everything it touched
wfDl() is a wrapper around dl(), which is an evil function and
basically only works from the command line of Zend. Luckily
no extension has ever used this thing, so let's just remove it
outright.

For comparison, here's a list of places it does not work:
- hhvm
- php as apache module
- php compiled with zts support
- safe_mode
- Basically any shared host that cares about security

Most callers are using it to check for extension support and are
actually failing gracefully when wfDl() returns false. In these
places we're just going to use extension_loaded().

While we're at it, clean up some of the test skip logic in the
media tests so we can bail as early as possible if we know we
can't complete the test.

This also immediately removes $wgLoadFileinfoExtension. It's been
enabled by default since 5.3 and falls back gracefully when the
support isn't available.

Change-Id: Ieb430dfc74483731dde51d6e20fa700d641ba1f4
2013-10-09 10:51:35 -07:00
jenkins-bot
3b6f122867 Merge "Show the revision ID on error message when content is missing on difference page" 2013-09-17 17:20:22 +00:00
Alexandre Emsenhuber
ea8ac38e45 Show the revision ID on error message when content is missing on difference page
Currently if the revision exists but its content is not found, it will make
loadText() return false; which in turn will make a call to showMissingRevision()
from showDiff(). However since the revision exists; it will not match the
condition in showMissingRevision() and thus an error message will appear without
any revision ID.

Change-Id: Idd8a5f20a3c082a3b02bd77557e0f4dc4c66e876
2013-09-17 06:52:14 +00:00
Alexandre Emsenhuber
17f2fe778f Removed unneeded else branches in DifferenceEngine
The "if" always exit, so there is no need to use else branches;
also added blank lines for better readability.

Change-Id: I7d8321652a90fbba99e53fa0c1fe018492883b8a
2013-09-17 06:51:05 +00:00
jenkins-bot
3884fa4e5f Merge "Don't ask users to mark own page creations as patrolled" 2013-09-16 19:22:29 +00:00
umherirrender
d50199ddce Add class around diff-empty and add it as notice
Add the moment the message is added within a class=diff-multi,
which is not true.

Bug: 53168
Follow-Up: I458fb688b0001fb674ece65b3fdabf56fc658a29
Change-Id: Ic3040ceca4ff1459181c84f041490e9e72b12802
2013-08-25 17:06:49 +02:00
jenkins-bot
ae1274fd28 Merge "DifferenceEngine: Remove broken comment" 2013-07-22 11:44:03 +00:00
Marius Hoch
038602f9bc Don't ask users to mark own page creations as patrolled
Bug: 51224
Change-Id: I2d38c25b547a8735da135955854584aa02b4394d
2013-07-20 21:31:59 +02:00
umherirrender
2bdb4895f9 diff: Display "(No difference)" instead of an empty diff
This makes it easier to see the fact, because without a hint, the user
can mean, that there is something missing, but here the missing is okay
and for that, the message is helpful.

Change-Id: I458fb688b0001fb674ece65b3fdabf56fc658a29
2013-07-17 20:40:35 +02:00
MatmaRex
cd5f0d63fa Show change tags on diffs
This adds two very simple queries for every diff page view.

It could be made to only add one (loading tags for both revisions at
once), but it would be a little ugly.

It could even be made to add zero, but this would require either
rewriting and duplicating a lot of code here and constructing
Revisions by hand or making the Revision itself know about its tags.

Bug: 25824
Bug: 49602
Change-Id: Ic2ae58c703db7ceee5de4b320229d8c93810a73b
2013-07-06 23:02:31 +02:00
jenkins-bot
7844c9a058 Merge "DifferenceEngine: Don't display empty header row" 2013-06-26 22:13:06 +00:00
MatmaRex
df98350345 DifferenceEngine: Remove broken comment
Added in r99038 (0b0705f3), seems to only include the beginning of
some sentence.

Change-Id: I5a62b178613b192ebe886637c358f8b1d4198bf9
2013-06-10 20:15:34 +02:00
MatmaRex
7599f1a49b DifferenceEngine: Don't display empty header row
This prevents a gap from appearing, and the resulting code will be
slightly cleaner as well.

Shouldn't matter in core, but does matter for extensions displaying
diffs like AbuseFilter.

Change-Id: I9e3e74226a23c0a18db091bc1550b694d9d08118
2013-06-10 19:43:47 +02:00
Marius Hoch
fc5bcf1147 Remove revision patrol links from normal page views
Users want and expect it this way, per bug 49123

Follow up to I1e24733c

Bug: 49123
Change-Id: Ib4d72179e4029f0c089c3147bdf4bd6daac0374e
2013-06-09 03:45:21 +02:00
Marius Hoch
aa0308e3b9 Fix edit patrolling in multi Diffs
In multi diffs we had a "wrong" value for rc_last_oldid
set (not the directly previous revision but the one
selected by the user). Due to that there weren't any
unpatrolled recentchanges rows found. As that is cached
in memcached these rows stay unpatrollable forever.

Bug: 49019
Change-Id: I5d6111032dba7d102e30d85718639697f44c036e
2013-06-02 15:23:09 +02:00
Kevin Israel
e3c3dfba85 Check if API enabled before loading dependent JS modules
Affects whether these modules are loaded:

* mediawiki.searchSuggest ($wgEnableAPI only)
* mediawiki.page.watch.ajax ($wgEnableAPI, $wgEnableWriteAPI,
  'writeapi' right)
* mediawiki.page.patrol.ajax (same as above)

Checking of $wgUseAjax has not been removed where it was
already present, in case some users have set the variable
to false to disable these specific features.

Bug: 30213
Change-Id: If2ec219cfbb94e7c9718c58b9b54a508d0e0c656
2013-05-28 20:30:11 -04:00
Marius Hoch
c451b320e3 Patrol overhaul phase 1: Remove rcid parameters
I've changed the logic in Article::showPatrolFooter to be able
to fetch the recent changes id and to only show the patrol link
in case the change hasn't yet been patrolled.

In case recentchanges patrolling is enabled this will try to
create a patrol link for the revision the user is currently
viewing. If only new page patrolling is enabled it tries to
create a patrol link for the first revision of the page.

Furthermore I've removed the passing around of &rcid parameters
within MediaWiki as those had several issues (some even security
related) and were only a workaround to protect the DB from some
queries, which is no longer needed.

This has already been partly implemented in a different manner in
r45778 but had to be reverted in r46542 due to performance issues.
This version shouldn't cause such issues as I'm only adding one or
two indexed database queries per page view.

I've written this new version of the patch with mostly
performance in mind and even tested the database queries it uses
against the replicated databases of enwiki on the toolserver. I'm
pretty sure this can't be implemented any faster without creating
a new index on the recentchanges table.

As I was on it I've implemented RecentChange::isInRCLifespan which
checks whether the given timestamp is new enough to may have a RC
row. That way we can avoid some DB queries for timestamps which are
older than the max RC age.

Fixes bugs:
(bug 15936) New page's patrol button should always be visible
(bug 35810) ! N pages non-patrol-able
(bug 36641) Patrol page link shows on non-existent revs

Change-Id: I1e24733cafbfdc51b7a5a9a1c1baf948e760fe1a
2013-05-25 12:04:01 +02:00
Boris Nagaev
c3a13553fa DairikiDiff: Optimise method WordLevelDiff._split()
_split() copied two arrays N times, where N is number of lines in diff.
This was done by $a = array_merge($a, ...);
Instead of doing this, new words are appended to the end of array
using []= syntax.

Bug: 47989
Change-Id: I41338a2a82fbc20d7511f4c79581880febeeeea5
2013-05-16 23:01:09 +00:00
Timo Tijhof
4bd5471ca3 docs: Remove odd colons after @todo
Most were this way already:
https://doc.wikimedia.org/mediawiki-core/master/php/html/todo.html

Ran a find/replace on the odd ones. Also made them all
lower case.

Change-Id: I70c6a69344ddebc603e9a1c1d87e3cc4f4f4c560
2013-05-15 06:23:40 +00:00
umherirrender
9f14ecf829 Added space after switch/Removed spaces after unset
While at it, added/removed some other spaces in the same files

Change-Id: I84d8001aa123a008807ad5eb76f396aed7c899a4
2013-04-26 16:42:31 +02:00
umherirrender
892ee7a4af Fixed spacing in db/debug/diff/externalstore/objectcache folder
Added spaces before if, foreach
Added some braces for one line statements

Change-Id: I32a43c547630ce31b6b25cc1bc9eedc50e67b2d7
2013-04-20 22:28:52 +02:00
umherirrender
dbd0b590e9 else if -> elseif
Also fixed some spacing while at it
Added some braces for one line statements

Change-Id: Iebfa2b17091509daabc76248121c7763e2295d20
2013-04-17 16:52:47 +02:00
Chad Horohoe
4be6236352 Remove externaledit/externaldiff preference
Change-Id: Ic3791d188688f556753ab5556a4d9733bbf2e85e
2013-04-11 09:20:36 -04:00
MatmaRex
a8fbbcf98d Remove the "Quickbar" feature and all things related to it
"Quickbar" was a feature of the Standard and CologneBlue skins that
allowed the sidebar to be displayed on left or right side of the page,
floated or fixed, and hidden on diff pages.

Standard was removed (Ia6d73c2d), and CologneBlue doesn't support this
anymore (bug 41246), so all things quickbar can now be safely removed.

* Removed user prefs option + interface
* Removed related messages
* Removed code for this in SkinLegacy
* Removed dead code in DifferenceEngine and Language

Change-Id: I5e6f7d48d6904a052a3a11547d3ebe6161463018
2013-04-07 04:08:05 +02:00
Alexandre Emsenhuber
df5265e14d Fix case of some Title methods
Change-Id: I37ce7fe392f4941c500fa0a88007664501d7e338
2013-03-27 14:36:05 +01:00
umherirrender
6c278b6d7e fix some spacing
* Removed spaces around array index
* Removed double spaces or added spaces to begin or end of function
  calls, method signature, conditions or foreachs
* Added braces to one-line ifs
* Changed multi line conditions to one line conditions
* Realigned some arrays

Change-Id: Ia04d2a99d663b07101013c2d53b3b2e872fd9cc3
2013-03-25 22:22:46 +00:00
umherirrender
8764b3aa7c Remove spaces in function signature
Change-Id: I45aea7a7af88cd913b2f485913620a8af0ab2fed
2013-03-18 20:44:43 +01:00
jenkins-bot
d7ac1a4e6a Merge "Fix Ifb93e49b" 2013-03-13 16:04:26 +00:00
Alex Monk
ddee066b41 Fix Ifb93e49b
This commit caused a PHP notice if you tried to use diff=prev with an
oldid which was the first revision of the page.

Change-Id: I4c4ccb9a0c8d82e104723a2e72f1c699e2fc249b
2013-03-13 15:43:27 +00:00
Yuri Astrakhan
9506e3d812 Spellchecked /includes directory
* Ran spell-checker over code comments in /includes/
* A few spellchecking fixes for wfDebug() calls

Found one very strange (NOOP?) line in Linker.php - see "TODO: BUG?"

Change-Id: Ibb86b51073b980eda9ecce2cf0b8dd33f058adbf
2013-03-13 03:42:41 -04:00
Kaldari
930955762a Adding hooks for thank you notification links
These will allow Echo to add a 'thank' link next to the 'undo' links

Change-Id: Ifb93e49b30bb325ecd17ece9f36bcd83c63a2563
2013-03-12 10:37:39 -07:00
Tyler Anthony Romeo
4dcc7961df Fixed @param tags to conform with Doxygen format.
Doxygen expects parameter types to come before the
parameter name in @param tags. Used a quick regex
to switch everything around where possible. This
only fixes cases where a primitve variable (or a
primitive followed by other types) is the variable
type. Other cases will need to be fixed manually.

Change-Id: Ic59fd20856eb0489d70f3469a56ebce0efb3db13
2013-03-11 13:15:01 -04:00
umherirrender
d63121016d fix some spacing
Added/removed spaces around logical/arithmetic operator
Reduced multiple empty lines to one empty line
Removed wrong tabs before comments at end of line
Removed too many spaces in assigments

Change-Id: I2bba4e72f9b5f88c53324d7b70e6042f1aad8f6b
2013-03-07 17:53:21 +01:00
Reedy
e028051140 Add a handful of missing @return
Change-Id: I21b218e6694600a2d2df4dd0a6b2b5cd2e10f1f9
2013-02-16 17:51:13 +01:00
umherirrender
f97a3a4027 fix some spacing
Change-Id: I670a7baf3ba1e70d18346bb00938d518ba2063bd
2013-02-04 19:59:14 +00:00
jenkins-bot
7fbc18e1ba Merge "fix some spacing" 2013-01-27 13:14:56 +00:00
umherirrender
25bc3a0727 The use of function sizeof() is forbidden; use count() instead
From phpcs

Change-Id: I919c8af46a722cd1c14bb8c134400e2ec51160d1
2013-01-26 22:20:04 +01:00
umherirrender
2e8da558ba fix some spacing
Change-Id: Id7eda67a43f9040117edd79fdbeb678f1c3a6da2
2013-01-26 22:11:09 +01:00
Marius Hoch
a53fe6f080 (bug 39397) Only show rollback links if they work
To only show rollback links if they work I had to patch Linker
to have a function (Linker::rollbackData) which can verify
that the editor isn't the only editor of the page. Furthermore
it is checked that the user name or the text of the revision
we might rollback to isn't deleted. Due to the fact that I've
altered the already existing method which showed how many edits
a rollback will revert for that, this wont affect the performance.

Change-Id: I5d1adec993370c39ae8c5c712edd919d456441c6
2013-01-09 17:04:44 +01:00
Siebrand Mazeland
c4e761089c Update docs for DifferenceEngine::getDiff()
Previous docs were incorrect and misleading.

Change-Id: I6403c7c7c3b9803cc7e10cc45999244ff78dc14d
2012-12-05 15:21:58 +01:00
Siebrand Mazeland
a2d605afc3 Add type hint
Change-Id: If529cfbf568a10e8cea184fa229959701268ebcb
2012-12-05 00:38:59 +01:00
Antoine Musso
42a8daaf5a (bug 26280) all files should have GPL header
MediaWiki is licensed under GPL so we should really add the header to
our PHP code unless reusing code licensed differently.

Tested using:
  ack-grep --php -L 'This program is free software' \
    includes/ maintenance/ mw-config/ resources/ skins/

Output the following files:
 includes/ExternalEdit.php (public domain)

Various other licenses:
 includes/json/Services_JSON.php
 includes/libs/CSSMin.php
 includes/libs/IEContentAnalyzer.php
 includes/libs/JavaScriptMinifier.php
 includes/libs/jsminplus.php
 includes/normal/Utf8Case.php
 includes/objectcache/MemcachedClient.php

File autogenerated from a GPL file and Unicode data:
 includes/ZhConversion.php

A few lines coming from stack overflow:
 maintenance/mwdoc-filter.php

Message files do not have any license :-/

Change-Id: I214a988edfa9e2dfcc762612a0f7d47eee8bcb74
2012-11-18 15:34:00 +01:00
Marius Hoch
d1debff476 (bug 7851) Implement mediawiki.page.patrol.ajax
Implement AJAX patrolling with the new mediawiki.page.patrol.ajax
module, which makes use of the API via mediawiki.api.

During the patrol process a spinner (created by jquery.spinner)
shows up and after it a suitable message gets shown via
mediawiki.notify.

Depending on whether we had success or not the link then turns up
again or the brackets completely disappear just like on a normal page view.

On top of adding the module, I've changed the following:
- Added the patrol token to the ResourceLoaderUserTokensModule.
- Registered messages 'markedaspatrollednotify' and
  'markedaspatrollederrornotify'.

Change-Id: I472357566dda0ab572c20e2e4b87508b0f2f4c73
2012-11-13 23:09:38 +01:00
daniel
c2172d45e4 Beware that getContent() may return null
Before the introduction of the content handler, missing content was
signified by getText() returning null instead of a string. null will
work much like an empty string in most contexts, so in many places,
it was not checked explcitely whether the conent was null.

Now, when getContent() returns null, this often caused a fatal error,
because the code would access whatever getContent() returned as an object,
without checking whether it was null (because no such check was performed
previously, when the content was represented as a string).

This check introduces explicite checks for getContent() returning null
in the most essential core classes.

Change-Id: I551a90b0b67b8edc7570ca5d252ecc1de903f097
2012-11-09 19:45:12 +01:00
umherirrender
82375631c2 Fix tabs inside/between statements/text
This tabs are strange and a space there is better

Change-Id: I0885dff575ee2fcd0668d08fef3226e132c5b319
2012-10-26 18:18:59 +02:00
Niklas Laxström
aeffc7979c Message documentation update for DifferenceEngine
Change-Id: I404cbf07238bbe532432bcb9dd573bdec2a95b5e
2012-10-15 13:51:37 +02:00
daniel
09c607f7b9 Silence warnings about deprecation by ContentHandler.
The introduction of the ContentHandler caused quite a few functions and hooks to
become deprecated. Usage of these has been removed in core, but is still present
in extensions. Extensions should be fixed after ContentHandler has settled in a
bit, but for now we need a way to silence the warnings.

Change-Id: Ia223243222675f778e8f8c32923f956790db0b4f
2012-10-12 14:56:02 +02:00
Liangent
15cd7d64f1 Show redirects correctly on diff pages.
Change-Id: Ic3c2d6cff016a8fecdde511e2d14b30426737c8a
2012-10-11 05:08:19 +00:00
daniel
bb51a58e57 Cleanup of Wikidata branch.
This cleans up several issues raised in comments to I3b2dad3a,
mostly style and merge artifacts.

Change-Id: I99f5e300a671db1353db151cd187ffd2e4478d03
2012-10-08 17:34:47 +02:00
daniel
c546fae8ed merge latest master into Wikidata branch
Change-Id: Id4e0f40c03679c13d8934a6add99b5cd86d0437d
2012-10-08 13:58:54 +02:00
umherirrender
20291cd166 Pass user object to some Revision::getText/Title::userCan calls
Also passed some $wgUser direct (when already there), so it is seen by
someone, that the user should be passed to that method.

Change-Id: Id4d5504a05ea34d80d59262ad3aef28f09c807a6
2012-10-05 16:25:01 +02:00
daniel
7db9491d89 set mediawiki version number
Change-Id: I3479776bd3bb25c4d75d07e62ede2ad989025c5b
2012-10-05 15:03:24 +02:00
daniel
c8c95a52f4 Fix JS and CSS diffs
Change-Id: I8801d49af258141ba97e88e719f87105fdc01a35
2012-10-04 12:11:56 +02:00
daniel
b6b686c13b merged master
Change-Id: I0ef7c7f33a5dc5855f38b20c03ddc5306f38ec66
2012-09-19 12:34:10 +02:00
Alexandre Emsenhuber
be0878fd3a Use WikiPage::makeParserOptions() where possible.
- This is needed to for I90965346 ((bug 37453) Move
  $wgDisable(Lang|Title)Conversion to ParserOptions)
  because that change sets an option based on the Title,
  and I don't want to duplicate that to all ParserOptions
  that need it.
- Refactored ApiParse to have a WikiPage object available
  and changed some part to take advantage of having this
  object available. Also used ApiBase::getTitleOrPageId()
  to reduce code duplication.

Change-Id: Iec98e472af9c43d940f77261367a796b0d7b4b54
2012-08-31 23:16:03 +02:00
daniel
72952a082c merged master some more
Change-Id: I53f349e42336ce0426ea1aff939853b3cd728aeb
2012-08-29 15:37:17 +02:00
daniel
07d71ed658 Merge "Revert all changes to DairikiDiff." into Wikidata 2012-08-28 11:44:22 +00:00
daniel
ee007485b8 Merge "cleaned up comments in DifferenceEngine" into Wikidata 2012-08-28 11:42:18 +00:00
Alex Monk
65150ca53e (bug 39680) Convert valign to CSS vertical-align
Also convert align to CSS text-align/float

Change-Id: Ia7da2b51b7fdeee443def8cb06c63a422d89f6f1
2012-08-27 21:36:01 +01:00
daniel
489234a248 Revert all changes to DairikiDiff.
Reverting unrelated changes to DairikiDiff. Slight refactoring would
make the diff classes much more reusable and flexible, but that needs
some more thought, and is unrelated to the task at hand.

Change-Id: I9f132985207096676cbb6139c7d37572a10b8806
2012-08-24 20:47:23 +02:00
daniel
a66eb27653 cleaned up comments in DifferenceEngine
Change-Id: I939fa563a66357efb8eae8d8f60bf0ba08cd05eb
2012-08-21 16:26:14 +02:00
daniel
74fe09ed4d Bug 39509: Function for running legacy hooks.
ContentHandler::runLegacyHooks can be used to run hooks that don't
supprot Content objects yet. runLegacyHooks will issue a warning and take
case of serialization/unserialization of the content as appropriate.

Changeset 2: rebased.

Change-Id: I31109061110f87c38bdeebf30d520c8e1241bb29
2012-08-20 22:00:52 +02:00
daniel
0139923580 fixing long lines
Change-Id: Iebcd40a1a37a3a93cc571fa2c2b0a87f53dc97a4
2012-08-20 21:33:07 +02:00
daniel
29719f846b merging latest master
Change-Id: I36b7f2f63ab8c08f8412d521dc68ea45c8b67711
2012-08-20 16:55:28 +02:00
Aaron Schulz
eb183bac87 Revision and WikiPage cleanup with IDBAccessObject interface.
* Replaced WikiPage::DATA_FROM_* constants with IDBAccessObject ones.
* Renamed IDBAccessObject constants a bit for visual consistency.
* Removed AVOID_MASTER parameter and replaced calling instances with READ_NORMAL.
  Instead of getting page_latest from the master and the revision from a
  slave, just get it all from the master in one RTT. Most callers used
  AVOID_MASTER (and now READ_NORMAL), so this case is barely hit anymore.

Change-Id: Ifbefdcd4490094b38e49bbb46c95fdb71b5c9e1a
2012-08-08 16:34:08 +00:00
Alexandre Emsenhuber
d24a4d7f10 Use a better message when a revision is not found.
This comes from
https://translatewiki.net/wiki/Thread:Support/MediaWiki:Missing-article
that asks for a link to the deletion log in the
'missing-article' message.

Instead of simply changing that message I replaced
it with two news messages 'missing-revision' when trying
to view an old revision and 'difference-missing-revision'
when showing a difference. This removes the "lego"
construction of 'missing-article' with 'missingarticle-rev'
and 'missingarticle-diff' submessages.

I had to keep current messages since they are still
used in extensions.

Change-Id: Ibe60c84cfea922a78b3ad22cc48185a109cd617d
2012-08-06 10:53:53 +02:00
daniel
c0b50eb47d merged master
Change-Id: I6afafe971afb3f38fc8f1e66ba409283b8a698f8
2012-08-02 11:01:22 +02:00
Liangent
4cb8033d79 Replace hard coded parentheses
Change-Id: I8ca697a3bdae4f693b626f2d2da15ad28dce937d
2012-07-27 22:57:34 +08:00
daniel
d87135d706 merged master
Change-Id: Iad12ee382d6aeb1fab6fefb611d290b74865ea4b
2012-07-23 22:07:18 +02:00
Alexandre Emsenhuber
026e8534c6 Add a context parameter to Liker::generateRollback() and Linker::buildRollbackLink() and updated callers.
This allows both methods to not always rely on global object, but also to use the local context when possible.

Change-Id: Id10f55ed9b18c889afd8d9937d9f35acb376cce4
2012-07-05 23:10:03 +02:00
Tim Starling
fcd74e5dd3 Merge "Reduced some master queries by adding flags to Revision functions." 2012-06-28 05:11:04 +00:00
Aaron
8288b34eae Reduced some master queries by adding flags to Revision functions.
* The main Revision functions now allow various QoS and locking flags.
* Added tiny DBAO interface add made Revision implement it.
  Since a lot of objects will need (or have) the same functionality.
* Use "self" keyword in Revision class consistently.
* Made Revisison::newFromConds() private.

Change-Id: I3139956999218a2bb44b5c845b8079e33b2328bb
2012-06-27 20:59:20 -07:00
daniel
237ee32ccc allow getParserOutput to be overwritten in DifferenceEngine
Change-Id: I66fbd42c2ada05d5891f2738139b80c0090ecb1b
2012-06-25 13:44:32 +02:00
daniel
4775a690b5 made DifferenceEngine::getRevisionHeader() protected, so we can override it.
Change-Id: Ic429cd0c039c0eb0487e149f9bb79c469b3635b3
2012-06-18 16:57:22 +02:00
daniel
a830943203 Merge branch 'master' of ssh://gerrit.wikimedia.org:29418/mediawiki/core into Wikidata 2012-06-14 12:43:43 +02:00
Mark A. Hershberger
99fdc6e838 Bug 24985 use $wgTmpDirectory when available
We had two way to get a temporary directory:

 - $wgTempDirectory: more or less stable accross sessions
 - wfTempDir(): set through environnement variable and could potentially
   vary from a session to another one thanks to tempnam()

This patch makes wfTempDir() to always use the global $wgTempDirectory
first when it is available. Thus explicitly overriding tempnam() or any
environnement variable such as TMP or TEMP.

Hence, people who don't have access to a system wide directory
specificed by their environnement (such as /tmp) can specify an
alternative straight from the MediaWiki configuration.

The patch remove references to $wgTmpDirectory and replace them with
calls to wfTempDir().  Make wfTempDir() use $wgTmpDirectory first.

The default setting of $wgTmpDirectory was removed in favor of having it
initialized through Setup.php by calling wfTempDir.

Note: this may also address Bug 36475 - Generating thumbnails does not
work when there is no access to /tmp

Change-Id: Ifdc79e9c5d95f978025b237a5eeb95fd75092f46
2012-06-13 21:30:22 +02:00
daniel
2757fc7b1c fix indent, cleanup comments 2012-06-12 11:12:19 +02:00
daniel
881793f84e content diff 2012-05-23 09:09:44 +02:00
daniel
01f36b721f merged latest master 2012-05-14 23:24:18 +02:00
Nikerabbit
03ecf97aec Merge "(bug 33928) make diff title page more relevant" 2012-05-11 09:05:44 +00:00
Alexandre Emsenhuber
4471b93253 Added missing GPLv2 headers in some places.
Also made file/class documentation more consistent.

Change-Id: I604ed8ddc572e89001e49df6740ab42307bc0330
2012-05-08 14:51:21 +02:00
Amir E. Aharoni
6564620d2a (bug 33928) make diff title page more relevant
Original patch by Nischay Nahata.

Patchset2: amended commit message to be shorter and clearer.
Patchset3: use wfMessage()->text() instead of default parse()
Patchset4: remove unneeded tabs.
Patchset5: added git difference-title to maintenance/language/messages.inc .
Patchset6: moved OutputPage::setPageTitle() calls to DifferenceEngine and added difference-title-multipage message
Patchset7: Fixed an error in messages.inc from the last changeset
Patchset8: Removed the diff page subtitle according to Brion's
           suggestions. Note: I am doing this almost a month since
           committing the original patch. Rebasing proved to be too
           tricky, so I tried to cherry-pick the original commit
           in a new branch. Apparently, Git identified it. If this
           works as planned, it must be a miracle.
Patchset9: removes unneeded changes to message files

Change-Id: I4e6363529a1e77a3f5267ec6871e8dea0354f043
2012-05-02 14:05:13 +02:00
daniel
cd5860da57 docu cleanup; marked contenthandler stuff as @since 1.WD 2012-04-26 13:24:13 +02:00
Jens Ohlig
10e91851b2 Merge branch 'master' into Wikidata
Conflicts:
	.gitreview
	includes/Article.php
	includes/AutoLoader.php
	includes/EditPage.php
	includes/LinksUpdate.php
	includes/WikiPage.php
	includes/installer/Ibm_db2Updater.php
	includes/installer/MysqlUpdater.php
	includes/installer/OracleUpdater.php
	includes/installer/SqliteUpdater.php
	maintenance/refreshLinks.php
2012-04-11 14:24:29 +02:00
Demon
12efc09bfd Fix tabbing
- As requested at <http://www.mediawiki.org/wiki/Special:Code/MediaWiki/114554>
- Also add some braces

Change-Id: I0c9cb7c50b9eb41f0a5cb6d2902e7b74cbe9d2bf
2012-04-09 19:06:46 -04:00
Daniel Kinzler
f3d41892fc mark _DiffOf_XXX etc for refactoring 2012-04-04 20:00:15 +02:00
Daniel Kinzler
61ce97e8c1 minimize use of textual page content, clean up hooks for custom page rendering 2012-04-04 19:59:51 +02:00
Daniel Kinzler
7648bb282a prepare DifferenceEngine for subclassing 2012-04-04 19:59:37 +02:00
Daniel Kinzler
aaadcd0eb3 EditPage to use Content objects 2012-04-04 19:58:20 +02:00
Daniel Kinzler
c6eaef6681 reworking EditPage to use the content object - work in horrible progress 2012-04-04 19:57:30 +02:00
Christian Aistleitner
0954fc366f Sanitizing already existing use of PHP's assert 2012-03-19 11:14:43 +00:00
Aaron Schulz
4630a07741 Reverted r113803: makes already messy class messier (a bit to much) 2012-03-14 17:55:59 +00:00
Alexandre Emsenhuber
f23a4e1f84 Be consistent in the interface and use Title::quickUserCan() instead of Title::userCan() to show items in the interface so that when the user is blocked or the page is cascade protected there is not a part of the interface saying you can edit the page and another part not. 2012-03-14 10:46:59 +00:00
Alexandre Emsenhuber
0d6b594bf2 Don't create new Revision and Title object if we can use the ones that we already have 2012-03-14 09:52:34 +00:00
Sam Reed
c052fc3b7b Documentation followups from lastnight 2012-02-10 15:37:33 +00:00
Sam Reed
76246b9bf5 More return documentation 2012-02-09 21:33:27 +00:00
Sam Reed
7b25f8231f Fixing some of the "@return true" or "@return false", need to be "@return bool" and then the metadata can say true if foo, false if bar
Other documentation improvements
2012-02-09 19:30:01 +00:00
Alexandre Emsenhuber
4ef1cc76ec Use the context's WikiPage object if the title of the new revision is the same as context's title; avoids a duplicated database query to load the WikiPage 2012-01-15 22:00:04 +00:00
Alexandre Emsenhuber
585141ece9 * Use Linker::getRevDeleteLink() where possible to remove code duplication
* Pass the User object to Revision::userCan() in Linker::getRevDeleteLink()
* Return the result Linker::revDeleteLinkDisabled() in Linker::getRevDeleteLink() instead of storing it in a variable that will not be used
2011-12-28 18:41:36 +00:00
Alexandre Emsenhuber
2629c3649f * Added revision's timestamp to OutputPage along with revision ID; avoid a DB hit in Skin::lastModified() when showing parser cache's content. This changed with the removal of $wgArticle in Skin since now it's a different WikiPage object and thus WikiPage::setTimetstamp() call is useless (but still kept).
* Added ParserOutput::(get|set)Timestamp() and the $mTimestamp member; avoid messing with isset()
2011-12-10 16:30:40 +00:00
John Du Hart
216d661d3b Bug 29524 - Rename RequestContext::getLang to getLanguage
I'll be amazed if this doens't break any tests.
2011-11-21 16:13:21 +00:00
Alexandre Emsenhuber
dd58309f1a * Added WikiPage::getParserOutput() and changed Article::getParserOutput() to use it
* WikiPage::getParserOutput() requires a ParserOptions object (and optionally the revision ID) instead of an User object, removes an hidden dependency on $wgLang. For this reason, WikiPage::isParserCacheUsed() now also uses a ParserOptions object instead of an User object (doesn't change anything in the code except the variable name and it's not called in extensions)
* Moved PoolWorkArticleView to WikiPage.php and added an entry in the AutoLoader and moved output-related stuff directly in Article::view() so that in can be shared with WikiPage::getParserOutput() (removes code duplication, etc.)
* Added the revision ID to the PoolCounter key so that it knows which revision is being parsed and doesn't wait for another parse operation with same options but different revisions
* Removed Article::doViewParse(), Article::tryDirtyCache() and Article::getOutputFromWikitext() since they are now integrated in PoolWorkArticleView and Article::view() and there are no callers in extensions. This also fixes a bug since Article::doViewParse() will get another ParserOptions instance with special options set in Article::view() not be repercuted.
* Updated DifferenceEngine to use the new system
* Updated docs/memcached.txt to correct method names
2011-11-17 20:21:54 +00:00
John Du Hart
93e50f7eed Following r100264, update usages in core 2011-11-16 04:37:17 +00:00
Alexandre Emsenhuber
d3fdaac14b Fix for r103001: using the object is actually a good idea 2011-11-14 18:31:44 +00:00
Alexandre Emsenhuber
4124539a4d Update DifferenceEngine::renderNewRevision() to run the 'ArticleViewCustom' hook and create a WikiPage object and do "normal wikitext" processing only when really needed 2011-11-14 18:28:01 +00:00
Alexandre Emsenhuber
2b78de3f02 Made DifferenceEngine use a context instead of global variables and updaters calls to constructor in core 2011-11-10 13:06:52 +00:00
Platonides
9b283db803 Follow-up r102521
Remove $wgUseExternalEditor globals.
2011-11-09 23:35:30 +00:00
Aaron Schulz
fe728c8b92 Reverted r101244 changes - these are not equivalent and may have been causing the assertion failures people (timo, myself) were getting. 2011-11-09 22:59:09 +00:00
Alexandre Emsenhuber
588539858c Some updates to EditPage and ExternalEdit:
* Made ExternalEdit use a context
* Updated DifferenceEngine to use ExternalEdit to send the diff stuff to reduce code duplication
* Introduced ExternalEdit::useExternalEngine() to check whether to use the external edit or diff (except for the action, section and oldid which are still checked in Wiki.php) to remove code duplication; external diff can now also be controlled with externaledit or internaledit URL parameters
* Use $wgContLang to get the name of the "Special" namespace instead of user's language
* Modified the line breaks in the comment on the top of the control file so that the URL is on its own line
* Updated extension to call EditPage::edit() instead of EditPage::submit(), the latter will just call the former
* Updated extension to let core handle itself the ExternalEdit mode instead of doing this themself
2011-11-09 15:31:55 +00:00
Alexandre Emsenhuber
f8e2b347a5 * Changed OutputPage's handling of subtitles to use an array and implode it with "<br />" so that callers don't have to bother whether there's already a subtitle when adding new ones
* Make OutputPage::setSubtitle(), OutputPage::addSubtitle() and OutputPage::appendSubtitle() accept a Message object in addition to a string
* Added new method OutputPage::addSubtitle() to replace appendSubtitle() and marked it as deprecated
* Clear the subtitles when showing an error page
* Always show the subtitle from Article::viewRedirect() when showing a page; left the parameter for use in EditPage
* Make Article::setOldSubtitle() add two subtitles and has to set "display:inline;" for the three possible divs to avoid too many spacing
* Removed the six different backlink subtitles and added one new message 'backlinksubtitle' to replace them and added OutputPage::addBacklinkSubtitle() to factorise common code
* Changed EditPage's view source to show "View source for <Page>" with the same backlink in subtitle for consistency with other back links and page titles
2011-11-08 18:01:22 +00:00
Alexandre Emsenhuber
381309f474 * Merged Title::userCanRead() check in Title::getUserPermissionsErrors()
* (bug 26020) Setting $wgEmailConfirmToEdit to true no longer removes diffs from recent changes feeds
* Added second parameter to Title::userCan() and Title::quickUserCan() to allow callers to pass the User object to use for checks; this changes Title::userCan()'s second parameter from "do expensive queries" flag to User, but all callers should have been updated in r102183
* Updated callers that might throw a PermissionsError to use getUserPermissionsErrors() instead and pass the error array to the exception
* Refactored duplicate code in missingPermissionError()
* Moved Title::isNamespaceProtected() a bit upper and Title::userCanRead() near Title::userCan() to have related functions in the same location
* Some minor refactoring in permission-related functions in Title
2011-11-06 19:59:46 +00:00
Alexandre Emsenhuber
3801a3cd28 * Made OuputPage::showPermissionsErrorPage() show a different messages for 'read', 'edit', 'create' and 'upload' actions to saying "You need to log in to do this action" when 1) The user is not logged in 2) The only error is a permissions error (no block or something else) and 3) The error can simply be avoided by logging in
* This replaces OuputPage::loginToUse() functionnality, made it simply throw a PermissionsEror exception and updated all calls in core
* Same for the check in SpecialUpload::execute(), EditPage::userNotLoggedInPage() and EditPage::noCreatePermission()
* Throw the same exception in EditPage::attemptSave() whether the user is logged in or not and let OuputPage::showPermissionsErrorPage() decide which message to display
* Replaced call to deprecated OutputPage::blockedPage() in SpecialUpload
* Displayed messages are the same as now, except the title is always "loginreqtitle"
* 'nocreatetitle' and 'uploadnologin' messages are still used by extensions, so I kept them, but the message 'whitelistedittitle' is not used anymore and has been removed
2011-11-05 19:51:05 +00:00
Sam Reed
c8e89896f7 Remove more assignments in conditionals (while each to foreach) 2011-10-29 02:04:27 +00:00
Sam Reed
9d41b95053 Kill various unused variables
Comment some out also

Add some bits of documentation
2011-10-29 01:17:26 +00:00
Platonides
d581e9dd5a Removal of unused globals 2011-10-27 20:48:09 +00:00
Alexandre Emsenhuber
b212bace90 Per Nikerabbit's comment on r100621:
* Removed OutputPage::setPageTitleMsg() and OutputPage::setHTMLTitleMsg() and make OutputPage::setPageTitle() and OutputPage::setHTMLTitle() accept a Message object
* Updated core calls (including some that I missed last time because of non-matching case)
* Added Message::setContext() and use it in RequestContext so that I don't need to duplicate the call in OutputPage
* Yes, I'm calling $this->msg() on places and then setting the context one more time in OutputPage::setPageTitle() or OutputPage::setHTMLTitle(), but at least I won't be confused about which objects $
2011-10-27 20:23:16 +00:00
Sam Reed
4622da783c More documentation! 2011-10-26 04:15:09 +00:00
Max Semenik
95ec650786 Revert r93246: besides the problems pointed out at CR, it also causes bug 31403, wreaking havoc on large wikis 2011-10-07 13:58:16 +00:00
Alexandre Emsenhuber
a2b914d852 Fix for r99038: this was in the wrong part of the if statement 2011-10-05 19:59:39 +00:00
Alexandre Emsenhuber
0b0705f370 Big cleanup to DifferenceEngine:
* Call Linker methods statically
* Factorised a lot of duplicate code, such as "Mark patrolled" links, revisions headers, etc.
* Removed showFirstRevision() and made that case be handled through the normal showDiffPage(). In such case, the header will look like a normal diff page, except it is centred. For this, addHeader() will now center the "new revision" header if the string passed to the "old revision" header and the diff is empty. getDiffBody() will also return an empty string if $mOldRev is false.
* Showing only one revision when the previous was not found will also ask to unhide the revision is deleted as in normal case
* Backed out code that generates the revision header from loadRevisionData() so that this function does not make a mix of backend and UI stuff. Factorised the code in getRevisionHeader().
* Lazy-load page's language and revisions IDs (in case of "prev", "next", etc. are passed) instead of doing that in constructor.
* Made a good part of links compatible with Special:ComparePages, such as navigation links, "undo", etc. that links to the title corresponding to the revision and not the given title in the constuctor.
* "Current revision as of" can also be displayed on the old revision, useful when comparing two current revisions in Special:ComparePages
* Removed navigation, undo and rollback links when comparing two different pages, this can confuses users thinking they are comparing two revisions of the same page. Also clicking on a "undo" link in such case will give "revision not found".
* Check if the user can read the revisions before sending a external editor file
2011-10-05 19:55:04 +00:00
Robin Pepermans
b926eb0074 Mark $mDiffLang protected, and rename function to setTextLanguage per Nikerabbit on r92956 2011-09-04 16:09:58 +00:00
Roan Kattouw
24f6e5f721 Use canonical URLs in sitemaps, diff stuff and external edit stuff 2011-08-19 17:33:41 +00:00
Alexandre Emsenhuber
ba84011526 * Changed OutputPage::$mIsArticle flag to be false by default. A lot of actions don't change that flag when they should, since about only action=view should have it to true.
* Put OutputPage::$mIsArticleRelated declaration just below $mIsArticle's one since they are related
* Made DifferenceEngine consistent with action=view, i.e. setting that flag to true when displaying any version of the page, current or not
* Made Skin::getCopyright() always use history_copyright when displaying an old version, regardless to the diff parameter
* Changed some checks from namespace != NS_SPECIAL && action=view to isArticle() so that they don't get executed when e.g. throwing an Exception (or similar things)
2011-07-27 13:14:28 +00:00
Happy-melon
c3e096c6e5 (bug 15641) prevent blocked administrators from accessing deleted revisions. 2011-07-26 20:54:41 +00:00
Robin Pepermans
8fc646cf08 DifferenceEngine: introduce setDiffLang() to change the language in which the diff text is written.
Translate: set the the diff text according to the source language, on Special:PageTranslation and the translation messages. (Also fix direction of CSS class mw-translate-fuzzy).
2011-07-23 19:03:54 +00:00