Commit graph

383 commits

Author SHA1 Message Date
Stephen Niedzielski 9d427dcb30 [Hygiene] [Mustache] rename SearchComponent to SearchBox
For consistency with VectorTabs, rename SearchComponent to only imply
component. At least two word names seems like a good target (instead of
just "Search") for grepability and standard component style conventions.

Bug: T239248
Change-Id: I1e4f7270ba29c2f35f08e92f8a28cd8a2ec8fe87
2019-12-06 17:00:42 -07:00
Stephen Niedzielski 60148a1a92 [Hygiene] [Mustache] improve template parameters and docs
Add typing expectations to search box template parameters. Add context
expectations to search box and tabs templates.

Bug: T239248
Change-Id: I4ff1920f5489b68ef73a219ceeceb1f5511fc9e8
2019-12-06 17:00:42 -07:00
Stephen Niedzielski e0b29624d1 Fix: tab attributes
The tab attributes were mistakenly being echoed instead of passed by
value. E.g., http://localhost:8181/wiki/A?uselang=he.

Bug: T239248
Change-Id: Ia0af96df717948743a2d66f8432b47e6f8a9c8f1
2019-12-06 17:00:39 -07:00
jenkins-bot 11ad91633f Merge "Move namespace & view tabs into a VectorTabs.mustache component" 2019-12-04 15:44:38 +00:00
Jan Drewniak c12c5f06db Move namespace & view tabs into a VectorTabs.mustache component
Creates a new VectorTabs.mustache component and uses it to render
the namespace & view tabs.

Bug: T239248
Change-Id: I859e4e95a2a12470f66564db547679c9f0a16727
2019-12-04 15:51:02 +01:00
Stephen Niedzielski 71672d60b3 Fix: search header attribute escaping
Broken in my previous commit, d6f4aaa. This causes attributes to be
doubly escaped. For example,
http://localhost:8181/wiki/Main_Page?uselang=he.

Change-Id: I9776a3c355081dc5fec7753edf256f55dfe6045b
2019-12-03 16:05:56 -07:00
Stephen Niedzielski d6f4aaa88e Hygiene: extract VectorTemplate inline HTML to SearchComponent Mustache file
Extract SearchComponent.mustache from VectorTemplate. The "search"
message is now escaped by the template parser. As is, htmlspecialchars()
for "wgScript".

A later patch will change each component renderer function as well as
renderNavigation() to return a string.

Change-Id: I3084b7e0ef73d320c85ee780c9eff13ecea92906
2019-11-20 16:41:05 -05:00
Stephen Niedzielski c9f15a4206 Hygiene: move VectorTemplate inlined PHP to variables
Move template logic outside of the template and into variables. This
will allow a future refactor to move the template to a separate
template-only file.

Change-Id: I91c2df11106cf09428a890a2d96ecbddb18ef0fe
2019-11-20 16:35:04 -05:00
jenkins-bot 501b94f1b4 Merge "Hygiene: divide VectorTemplate.renderNavigation()" 2019-11-20 20:00:40 +00:00
Stephen Niedzielski 625ec18f81 Hygiene: divide VectorTemplate.renderNavigation()
Cut up renderNavigation() into several discrete methods. Smaller methods
are easier to read and reason about.

Change-Id: I4e55d858ab1745fb2baddef02f7046ec842eb149
2019-11-18 15:26:20 -05:00
Piotr Miazga 2f355a3e11 Hygiene: remove getPageClasses
Looks like the SkinVector::getPageClasses is doing nothing, only
calling the Skin::getPageClasses and returning the output.

Change-Id: I5becaa1505d46cbf9a07b8bfe73ddf324b740876
2019-11-18 15:13:24 -05:00
Timo Tijhof a5fe72696b Remove extra <span> from Vector tabs
No longer needed as of I8237976e0587.

Bug: T236410
Change-Id: I5a59c136de4572e5f11b52cc11bc93251c972369
2019-10-25 15:22:57 +00:00
Simon Legner 6b99f35cbe Cleaning a[redundant] is done in BaseTemplate
Relates to I630410aea2852f7a72fea67bbf256b3561ea0f3f.

Change-Id: I0e0ccad14236dfbfc82f38e8e4316a431dd38d7a
2019-08-21 18:03:47 +00:00
Isarra 411a015ec5 Move DataAfterContent outside of main content block
Bug: T226199
Change-Id: Ie04d8d2bb1d44ec8a1c03fcc6f807668bab0377c
2019-06-20 17:55:55 +00:00
Fomafix 3aeac1615b SkinVector: Call parent::__construct in constructor
With this change the constructor of the parent class gets called like if
there is no local constructor. This allows the ancestor classes to
initialize themself in their constructor.

Change-Id: I4ec1ec935afa25b59be4020fca9ac71f23e62ad0
2019-05-12 11:36:38 +02:00
Timo Tijhof d56792addb Fix <h1> to be present even if title is "0"
Regression from 74b9803d9a, caused by a bug in LightNCandy which
caused {{foo}} to render "0", and {{#foo}} to pass as true with "0", but then
in {{#foo}}<b>{{foo}}</b>{{/foo} render as empty string producing "<b></b>".
In other words, the conditional is passing and the inner block is executed,
but the placeholder is mistakenly converting "0" => null => "" (empty string),
causing the <h1> to render but without any text in it.

Work around this bug by simply removing the conditional. Several other skins
already don't have this conditional and it's unclear why or in what
situation MediaWiki would send OutputPage to SkinTemplate without a title.

I think it would make sense in such rare case to still have a consistent
layout for extensions and gadgets to interact with and not omit the H1
element, but render it with the value that OutputPage gave it, even if it
is the empty string.

Bug: T219864
Change-Id: I6e04b512d2fe2e949ff5385cb38ceebe392fb255
2019-04-02 19:47:38 +01:00
Michael Große 3669843c9f Fix invalid lang attribute on first heading
Bug: T219359
Change-Id: I0d6e036b65da024278fb492c6dfe44c79efb1e98
2019-03-28 11:54:40 +01:00
Jdlrobson 74b9803d9a Start extracting rendering from PHP into Mustache
This reverts commit 8d0377d926
now a conversation has happened.

Bug: T217172
Change-Id: Id51bbd4358bdcc1131c11e13d5548e9c0474e711
2019-03-05 13:22:24 +00:00
Isarra 8d0377d926 Revert "Start extracting rendering from PHP into Mustache"
This reverts commit a3ca2c3e16.

Reason for revert: This requires wider discussion before moving
forward, and a more complete implementation even once we do have
consensus.

No associated task exists on which to view or continue this
discussion: linked task briefly mentions Mustache in general as an
option as part of a much wider topic, but doesn't concern this
specifically.

Issues that should be discussed include:
* What the intent even is here: is this for one skin only? Is this
  the intended path forward for all of them? Depending on which, we
  have other issues: for the former case, that it is quite
  unhelpful in terms of maintenance and further development having
  more random code diversity out there, especially in this
  half-completed state; or if it is indeed intended for all of them,
  that an RfC is needed before anything is merged, as that is a very
  significant change.
* That using Mustache in MediaWiki does add (usually minor)
  performance overhead; we need to clearly establish in the task that
  this is indeed worth it here.

Change-Id: I0bafa55b554aa8a38553e20c75859ec5eec2c062
2019-01-28 16:49:48 +00:00
Timo Tijhof d306e07824 template: Avoid raw HTML parameter for jump link labels
Change-Id: I6c638118988b6fbea95697817edf8c59c0ef6a6b
2019-01-22 21:13:05 -08:00
Timo Tijhof 9cc0ca983c template: Remove is_callable check for getIndicators()
The VectorTemplate class extends BaseTemplate, which has defined
this method since MW 1.25. The Vector skin master branch supports
MW 1.29+ only.

Change-Id: I83c6add9e8c02df028ca5905934e7d367dbe2209
2019-01-22 21:13:05 -08:00
Timo Tijhof a3ca2c3e16 Start extracting rendering from PHP into Mustache
Bug: T140664
Change-Id: I249fead8e1c7bc5dc295457bd46b05e7ed389414
2019-01-22 21:13:05 -08:00
Fomafix c68a21e78a Remove space before Xml::expandAttributes()
Xml::expandAttributes() outputs a space at the beginning before it
outputs the attributs.
This change avoids a double space between the attributes.

Before this change the HTML contains:

  <a class="mw-wiki-logo" href="..."  title="...">

After this change the HTML contains:

  <a class="mw-wiki-logo" href="..." title="...">

Change-Id: I486d26bd56a4410766f40b78466c2f3559f3a1ff
2019-01-14 06:46:33 +01:00
Fomafix 82cbdb8111 Avoid empty class="" without value
Before this change the HTML contains:

<div id="p-personal" role="navigation" class="" ...>
or
<div id="p-personal" role="navigation" class=" emptyPortlet" ...>

After this change the HTML contains:

<div id="p-personal" role="navigation" ...>
or
<div id="p-personal" role="navigation" class="emptyPortlet" ...>

Change-Id: Ic686b958940afc958693d0031ac31e5f783960a9
2019-01-13 20:02:01 +01:00
Volker E da6d4eb280 Remove unnecessary div wrapper on overflow menu
Unordered lists can be absolute positioned down to IE 7.
Outdated selector `.vectorMenu ul` remains for a release cycle
until HTML cache is renewed.

Bug: T209558
Change-Id: Id18ca9a8d705572b1f7e17920ef52b80e9aec373
2018-11-14 20:41:08 -08:00
Umherirrender 4b5f4256e1 Add method scope visibility
Change-Id: If1705b4834fb1ebeb1260cde26a2e3e3c4ca94a0
2018-11-01 21:01:32 +01:00
jenkins-bot 7fd98697f1 Merge "Let Html::element do the output encoding" 2018-06-12 19:52:25 +00:00
Fomafix eccd074386 Let Html::element do the output encoding
Change-Id: I07913d3cd1851df06de912a0257b01a5fae7c125
2018-06-12 16:56:24 +02:00
Fomafix 44fd986540 Use $this->getMsg instead of wfMessage
Change-Id: Ief31c2d9037b5786657507e28ae75b6e467cccb4
2018-06-12 16:39:57 +02:00
Timo Tijhof b843094a2d Re-implement and improve mw-jump links with pure CSS
* Improve their accessibility by giving both links
  a full label "Jump to x" and "Jump to y" instead
  of "Jump to: ", "x", "y".

  This also makes things much better for localisation, for which
  we generally discourage use of concatenation.

* Use pure CSS for the toggling of the visibility on focus,
  instead of relying on JavaScript. Especially given the
  JS comes form core's 'jquery.mw-jump' module, which is
  considered technical debt per T195256. Alternatively,
  that could be copied to vector.js, but pure CSS
  is possible, so why not.

* Use plain <a> links in the HTML instead of wrapped in a <div>.
  This solves the long-standing problem whereby the margin
  between #contentSub and #mw-content-text had to be awkwardly
  negated and overridden in core and on various to make sure that
  the wrapper itself would become visible as needed, in a way that
  has margin around this. This whole problem doesn't apply when
  simply using inline links that aren't part of the regular flow
  with .mixin-screen-reader-text. On focus, the individually
  focussed link appears in regular flow, without the need for
  any custom styles.

* This uses :not(:focus) to naturally make it render in the default
  way on focus, and visibibly hidden/clipped otherwise.
  This is supported in IE9+ and Android 2+.
  There is a way to make it work with CSS2 for IE7-8, by applying
  the mixin to '.mw-jump-link' only and then undoing all of
  'position', 'width', 'height', 'clip', and 'margin' on :focus.
  But I'm not sure that's worth it here. The fallback in IE7-8
  for not supporting ":not(:focus)" is that the accessibility
  link is simply visible always, which seems like a good fallback
  for accessibility, and doesn't hurt anything.

Bug: T195256
Change-Id: Icaadb290f692b3617688d32cbb66dfb007f1c82c
2018-05-24 00:08:02 +00:00
Max Semenik eb145c8ce4 Don't use deprecated Sanitizer::escapeId()
Change-Id: I96354291594f1fcb8a263318e93fd1c059aa006d
2018-04-13 16:30:27 -07:00
Isarra b473ce1ff6 Remove unnecessary $portals['SEARCH'] = true;
Search is skipped in the sidebar 20 lines down regardless. This does
nothing.

Change-Id: If6d3dd21280211fa3511ce010a3f3fda6185a7ef
2018-03-17 18:50:55 +00:00
Timo Tijhof 2fa3b7f69a Move class files to includes/
Cleans up the top-level directory a bit.

Change-Id: I29d3b8b7098def77e643232a386d8ba834d35704
2018-03-12 16:52:48 -07:00