Fixes#3269
In the HTML4 days, fragments weren't allowed to have `%` signs, so
mediawiki generated fragments with `%` replaced with a `.`
In HTML5, fragments can have % encoded characters, and so in 2017
wikipedia switched over to this for their automatically generated
fragments, while keeping the "dot" versions available as a fallback.
However, we have been automatically converting all fragments,
including manually specified anchors that do not have "dot"-encoded
versions available. So we can now simplify everything by just using
the HTML5 percent-encoded fragments.
The easiest way to do this is to make the text a child of the div
with the background image. The change to min-size is so that if
the text wraps often enough on narrow screens, the header expands
vertically rather than the text spilling over.
Fixes#3259
This fixes a glitch highlighted in #3259, where the css class stopped applying
when the view was moved to a different controller.
We're moving to having each view responsible for their layout, and commonly having
override classes explicitly in the relevant views. So we can follow that pattern here.
This was originally introduced since we saved the user and showed
the result on the same action. Now that the preferences controller
saves and redirects, the user model and associated language preferences
are reloaded between requests, and this code is no longer required.
This allows us to include a link in the flash message, without having
to use html_safe. Also refactor to avoid having html angle brackets in
the translation strings, while still allowing locale-specific urls.
In certain circumstance, due to either extreme narrow screen widths,
or due to padding on floating elements exceeding the header height,
some things could appear outwith the header. This clearfix avoids
this from happening.
Since flash objects can only be String, Hash or Array (notably excluding SafeBuffers), then this approach is necessary to render complex html in a safe manner.
Each local can be treated as an (unsafe) string, and therefore escaped normally when rendered into the template. The template (and translation strings) can
contain html since they are no longer stored in the flash as a plain string.
Fixes#3215