Commit graph

11 commits

Author SHA1 Message Date
Timo Tijhof 04c3ad0107 Implement responsive columns for reference lists
This is based on the popular 'count' parameter from Template:Reflist on
English Wikipedia, which has also been adopted by many other wikis.

That template's 'count' parameter allows maximum flexibility on a per-
page basis. This was important because the template can't know how many
references the list will contain. Users typically manually add (and
later, increment) the 'count' parameter when the list exceeds a certain
threshold.

The template currently sets an exact column count (via the CSS3
property `column-count`).

This patch improves on that by instead using the closely related CSS3
`column-width` property. This automatically derives the column count
based on the available space in the browser window. It will thus create
two or three columns on a typical desktop screen, and two or no columns
on a mobile device.

The specified width is the minimum width of a column. This ensures that
the list is not split when rendered on a narrow screen or mobile device.

It also hooks into the raw list before parsing and adds the class only
when the list will contain more than a certain number of items. This
prevents very short lists from being split into multiple columns.

Templates like Template:Reflist on English Wikipedia currently are not
able to set inline styles on the list element directly, which is why
they set it on a `<div>` wrapping the `<references />` output. Because
of this, the feature of the Cite extension must not be enabled at the
same time, as that would result in both the template's wrapper and the
references list being split. The end result would involve sitations with
three columns split in four sub-columns, creating a complicated mess of
nine intermixed columns.

To provide a smooth migration for wikis, this feature can be disabled by
default using `$wgCiteResponsiveReferences = false`. Each individual
template createing reference list can then be migrated, by removing the
wrapper column styles and instead settting the new "responsive"
attribute, like so: `<references responsive />`.

Once any conflicting templates have been migrated, the default for the
wiki can be swapped by setting `$wgCiteResponsiveReferences = true`.

If wikis wish for some templates to keep their custom column splitting
behaviour, templates can also opt-out by setting `responsive="0"`, which
will make sure that it will keep behaving the current way even after the
feature becomes enabled by default for the wiki.

In summary, when disabled by default, pages can opt into this system
with `<references responsive />`. When enabled by default, pages can opt
out of the system with `<references responsive=0 />`.

* Deprecate cite_references_prefix/cite_references_suffix.

  This message is rarely used and opens up compatibility hazards.
  It was already removed by Parsoid, but the PHP implementation
  still had it. It's typically used to add inline styles to the
  wrapper which is more appropiately done in Common.css (or
  obsoleted as part of the skin or Cite extenion itself nowadays
  depending on what style in question).

  It was also a HTML-style message with separated open and close
  segments, which is an anti-pattern in itself.

* Declare module target explicitly and include mobile. The absence of
  this stylesheet caused subtle BiDi/RTL bugs on mobile.

Bug: T33597
Change-Id: Ia535f9b722e825e71e792b36356febc3bd444387
2017-03-07 22:42:47 +00:00
Fomafix b63685468b Update PHP syntax from array(...) to [...] in comment
In 4bbd2277 only the syntax in the code is updated.

Change-Id: Ib69c913cacef0c90c4766ddbefd0a0b1b38972ee
2017-01-07 10:08:35 +01:00
Thiemo Mättig d6b1bdeff5 Make properties/methods in Cite private
Change-Id: I4be69a09125a898f7367fa08aa0c7f1a95324b3b
2016-12-15 13:01:03 +00:00
jenkins-bot 4b97528610 Merge "Update for API error i18n" 2016-12-07 07:15:48 +00:00
Brad Jorsch d51d8b304f Update for API error i18n
See Iae0e2ce3.

Change-Id: I8f214dd95876e1eadc4a0463cba3d5a13d783014
2016-11-14 12:48:23 -05:00
Antoine Musso 5fcecf9e5f Skip registering RL modules depending on VisualEditor
When VisualEditor is not installed, there is no point in registered
resource loader modules that depends on it.  A use case is trying to run
tests for the MediaWiki tarball. It comes with Cite but without
VisualEditor.

The patch is based on GuidedTour patch by Matthew Flaschen
https://gerrit.wikimedia.org/r/#/c/305691/ for T143297

Change-Id: Idf769e0149f93c099a94b1b7a6cb203273dab881
2016-10-14 23:45:03 +02:00
addshore 160d22bb1b Convert bugzilla number to phab link
Change-Id: I6319c49a0049352c959a0a437ef0901227e8988a
2016-09-29 15:19:16 +01:00
Moriel Schottlender fdb25a79aa Followup Ic6afacbf2a: Fix test file paths
The current path for the test files was wrong and broke qunit test
running in debug mode. This fix corrects the path for both debug
and non debug mode.

Change-Id: I0e2f3296daff1aff5d417a9e8f8ae7eadfe78982
2016-09-20 13:55:42 -07:00
addshore 5f62cd5df6 Stop using deprecated wfProfile methods
Change-Id: Ibf0d4a68e09f2680284163252ea0d1ae28de2c00
2016-09-20 15:45:40 +01:00
addshore 30ce07ec0d Add access modifiers to Cite.php (body)
Change-Id: Ib1b4d1942237e8528e9b1fccb8e1524291fd57b2
2016-09-20 15:43:58 +01:00
addshore c1de73eb32 Move php files in includes directory
Change-Id: Ic6afacbf2a944954826c9d68dd292c28f1c731da
2016-09-20 15:33:10 +01:00