Update defaultbranch to point at REL1_20

Change-Id: I57301a100aa7073857d69fbebf9b7bf5d5bc0ddf
(bug 40306) Only convert align to float for table.

Align should be converted to text-align for all the elements specified
in $presentationalAttribs mapping. Table however is an exception, it
applies to alignment of the block (instead of the content).

Follow up I108cbd10 / 27a4d74bd7.

Change-Id: Iee17d4ef1a6a9b46d88a330cfc9179bccfe93247
(bug 39975) Fixed thumb_handler.php handling of /temp thumb urls.

This basically makes the 'rel404' param for temp thumbanils not
start with "/temp" anymore so that they don't count as bogus.

Change-Id: I88c2c50b5372c7b95108d26ba16ddcd91fdb1154
(cherry picked from commit e456ef4a0eabb8707de5c0031b64a043bf064a86)
Worked around hash path inconsistency to unbreak stash file thumbs.

Change-Id: I567467b75a600841440b36352d5675866d3fca2b
(cherry picked from commit 3bbb73468a83aa0aa014c1eed1827ce9a43aed04)
[FileBackend] Fallback to $wgMemc for swift auth caching in cli mode.

Change-Id: I4338c68a18f1424b0d0ec4fe3fcf77c79ba774c8
(cherry picked from commit c5e336c9adfae898c7224e3180e4e3c59108f14d)
LivePreview: bind a delegated click event for #wpPreview/Diff

This makes it work with edit forms added to the page after it is loaded,
e.g. by an extension (like LiquidThreads).

Change-Id: Ia9673a754c871baea82bb28ded7b19e2608d9d03
Add $wgCopyUploadProxy to be used for copy uploads only.

Means we don't break stuff on the cluster such as search by setting $wgHTTPProxy

Change-Id: I094b2bfd097e7e5c1c45b6332357d959ed95ac99
Add RELEASE-NOTES for g25605

Change-Id: Ibd09a52e98ea2e8fcdf0291b4a586870cb128007
Remove all custom plural rules and use CLDR plural rule system

We have a data driven plural rule evaluation system in core now.
See I1aa3b081

Added more tests

(This was I4451fc7d and reverted because javascript references
 were not removed from Resources.php)

Change-Id: I57c3c238c0717664384da50aa2cbfa74369d7a55
Merge "Add RELEASE-NOTES for g25605" into REL1_20
Merge "(bug 39975) Fixed thumb_handler.php handling of /temp thumb urls." into REL1_20
Merge "Worked around hash path inconsistency to unbreak stash file thumbs." into REL1_20
Merge "[FileBackend] Fallback to $wgMemc for swift auth caching in cli mode." into REL1_20
(bug 36151) mw.Title: Don't limit extension in title parsing.

This allows for e.g. "*.properties" files.

Previously, the extension could be no more than 5 characters. If
it was, it was considered as not having any extension (part of
the main title text).

Change-Id: Ib27792b661666ac5f704eeaaadcdd9668dd81b56
Merge "(bug 40306) Only convert align to float for table." into REL1_20
Merge "LivePreview: bind a delegated click event for #wpPreview/Diff" into REL1_20
Merge "Remove all custom plural rules and use CLDR plural rule system" into REL1_20
Bug 38955 - Don't include job_timestamp in checks for duplicate jobs

Change-Id: I28bffdd8612b7a87cb35983c3a0db89eaa018262
jquery.byteLimit: Rewrite (fix bug 38158, bug 38163)

It used to be fairly simply and that seemed good enough. Listen
on keypress, get current value, add character from key code in
event object, and calculate the byteLength. If it is too long,
preventDefault().

However there were so many edge cases (too many of them to be
considered edge cases) where this failed whereas the native
maxLength handling was fine.

For example:
 - Cut and paste
 - Selecting text and replacing or removing it (by any of the
   methods on this list)
 - Custom javascript input methods (e.g. Narayam)
 - Spelling suggestions and corrections
 - Drag and drop
 - etc.

Now it acts on changes after the fact.

I considered building in a timeout loop in addition to this so
that when javascript gadgets change the input value it would
detect it, however I'd like to hold that off for now. We can
add that later if needed. For now scripts are expected to fire
the 'change' event if they change it, which seems reasonable.

The only challenge that it creates, however, is the need for
basic history reconstruction. Figure out what was already there
and what is new, and cut down the new part until the total sum
satisfies the limit.

This is the same behavior that WebKit browsers (and others) have.
e.g. of "barbaz" is pasted between "f" and "o" in "foo" with a
maxLength of 5, then the resulting string will be "fbaoo".

Also fixed bug 38158 while at it. Filed an upstream bug against
webkit/Chrome but was wont fixed. Either way, we'd have to be
compatible for a little while with old WebKit builds out there
(iOS 3, Safari 5, etc.).
http://code.google.com/p/chromium/issues/detail?id=136004

Use removeAttribute('maxlength') to let the browser internally
reset the maxLength property. Resetting it directly (to undefined
or with `delete el.maxLength') does not work and casts it to 0,
which blocks the input field entirely.

Updated unit tests, and also removed the "type=text" code
afterwards which that doesn't work in IE (Internet Explorer does
not support dynamic changing of input types), needs to be in the
HTML directly. So far it was passing in IE because 'text' is the
default. Tests now use attr('maxlength') everywhere for
consistency, though properties work the same. Browsers
synchronize these things (just like the "class" attribute and
"className" property).

References:
* Fixes bug 38158: Unexpected 0 maxLength.
* Fixes bug 38163: Incorrect limiting of input when using input
  methods other than basic per-char typing.
* Follows-up: 39cb0c19
* Supersedes: I70d09aae

Change-Id: I9c204243d0bdf7158aa86a62b591ce717a36fe27
mediawiki.action.edit.preview: New module replacing preview.js

With all the recent improvements, it's time this module got
promoted away from legacy. Its no longer just an old script to
that provides preview functionality and is minimally
maintained within "legacy", its reborn!

Minor clean up follows-up:
* e75054174c944d8a78a2c2822abe2fe161f7d6ad
* b12dc64a1198f6b094a5a60307412ff91f0bbf49

Change-Id: I85ca97a1d8df25a09baad78030d6da379a06c0f1