Commit graph

152 commits

Author SHA1 Message Date
Aaron Schulz
4108381175 Make testFormatValueRestrictions() account for $wgArticlePath to avoid failures
Follows-up 170c49d61c.

Change-Id: I37a57b5ece939c5743b7d08d02ce41c71daee5eb
2018-10-25 21:14:34 +00:00
David Barratt
170c49d61c Update Special:BlockList to present Partial Block details from the database
The Special:BlockList page will be updated to show details from the Partial
Block within the "Block parameters" column. The format of the column will
change to make the details more readable.

Bug: T197143
Change-Id: Ibd79b049d93e427c2d541f8ef93005847482ef59
2018-10-24 16:26:06 +00:00
David Barratt
0813c46daa Update Special:Block to set Partial Blocks
Make the necessary UI changes to Special:Block in order to set/update
partial blocks.

Bug: T197109
Change-Id: Ib3067824b5dcbdd893ab1f165d169a35d0716cb2
2018-10-24 00:47:08 +00:00
Kosta Harlan
7e81d6f49e Revert "Introduce Special:RedirectExternal"
This reverts commit b83cf88837.

Reason for revert: Security concerns, needs some more nuance.

Change-Id: I5823c3da77accca9839f9632611315223e05351b
2018-10-18 16:18:20 +00:00
Kosta Harlan
b83cf88837 Introduce Special:RedirectExternal
Special:RedirectExternal is an unlisted special page that accepts a URL as
the first argument, and redirects the user to that page.
Example: Special:RedirectExternal/https://mediawiki.org

At the moment, this is intended to be used by the GrowthExperiments project in
order to track outbound visits to certain external links. But it could be
extended in the future to provide parameters for showing a message to the user
before redirecting, or explicitly requiring a user to click on the link, which
could help improve security when users follow on-wiki links to off-wiki sites.

Bug: T207115
Change-Id: I822af14a84569aab22249e2f16a662a60e60f76a
2018-10-17 14:52:09 -07:00
James D. Forrester
24ca95aad9 Drop ChangesListSpecialPageFilters, deprecated in 1.29 and uncalled
Change-Id: I03a9bce0d1085dc30dbc5c3408b4cea154ade19a
2018-10-10 15:30:00 -07:00
Aryeh Gregor
0a5fc8dcc6 Make SpecialPageTestBase always call parent::tearDown
Change-Id: Ifc244d5117e7da4bf46cdf273eca9fc4ae5c3a42
2018-10-08 19:54:32 +03:00
James D. Forrester
144b643537 Drop 'SpecialRecentChangesQuery' & 'SpecialWatchlistQuery' hooks, deprecated in 1.23
Depends-On: I9822bb2bc1bcc13eec7924208bf3819d3512ad26
Change-Id: I67c06bb99d9c9582a638f061f523661c821bca8d
2018-10-01 18:15:38 -07:00
Stephane Bisson
2e8512c7d0 Remove temporary rcfilters variables
wgStructuredChangeFiltersShowPreference, wgStructuredChangeFiltersShowWatchlistPreference,
and wgStructuredChangeFiltersOnWatchlist were introduced for progressive rollout
of the RCFilters app on RC and WL.

These variables and their related conditional code is no longer needed.

Bug: T196033
Change-Id: Id3799fefd21cd9bea0e089a5e12576ee9ea1085e
2018-09-27 13:39:05 -04:00
Kunal Mehta
f198154d76 SpecialLog: Don't throw exceptions on invalid date from user input
If users provide invalid input to the date option on Special:Log (most likely
an intentional thing given the calendar input widget), don't let the
TimestampException bubble up - just discard the invalid date.

Integration test included, which fails without this patch.

Bug: T201411
Change-Id: Ie1a9a84343ae4e78e076586f759917e5fd5af33c
2018-09-24 08:56:48 -07:00
jenkins-bot
0e56ff447b Merge "Give more specific error messages on Special:Redirect" 2018-09-16 19:40:32 +00:00
Umherirrender
114e6547de Give more specific error messages on Special:Redirect
Added some basic tests

Bug: T202183
Change-Id: Ib0dd50ff5575a2b2093a57afce79e9f8623fa24d
2018-09-16 18:17:54 +00:00
Kunal Mehta
3394368bc5 SpecialPageExecutor: Use finally now that we're in a PHP 5.5+ world
Change-Id: I2f91998781be492557d90444b773951ae1e1580e
2018-09-03 22:10:55 -07:00
Fomafix
186c984ab6 tests: Replace Bugddddd with Tddddd in test names, test strings
Change-Id: Ic6fbc5e14b1a756f62dd6cc3a6b2acc0d47db498
2018-08-20 21:27:20 +00:00
Aryeh Gregor
e68fdb4065 Mass conversion to SpecialPageFactory service
Change-Id: Ia6e1e819ec6cbe8bf75b820109f51d47863e31fc
2018-08-17 12:03:12 -07:00
Fomafix
795a418db5 SpecialMyLanguage: Get content language from service
Also use methods getFallbackLanguages() and equals() from Language
object.

Change-Id: I601a5dfeea3bac7938f9884be65d007955ffb1b2
2018-08-03 20:07:36 +02:00
addshore
927b494613 SpecialPageExecutor, make sure Skin context is correctly set
Bug: T200771
Change-Id: I6d642449a0962f0a6bc242d2121ad3f270d9df77
2018-07-31 11:13:04 +01:00
Max Semenik
e6b4944dbf Introduce preference filters
This normalizes handling of transformations on the boundaries between
preferences and generic form controls and removes the special case
where email-blacklist is passed around as an array internally, leaking
into the API.

As a result of this normalization, meta=userinfo no longer returns an
array of users, using the internal representation like action=options.

Bug: T198935
Change-Id: Iff63da0d215585cfcf083e7f7ec8ed45d5b77301
2018-07-17 13:19:14 -07:00
Erik Bernhardson
c2a308075f Convert SearchResultSet to typical iteration
The funky iteration here was at best annoying. Switch
it over to an iterator based approach with appropriate
BC code to simulate the old iteration style.

Depends-On: I19a8d6621a130811871dec9335038797627d9448
Change-Id: I9fccda15dd58a0dc35771d3b5cd7a6e8b02514a0
2018-06-11 13:35:41 -07:00
Kunal Mehta
e0193327bd Fix MediaWiki.Commenting.LicenseComment.InvalidLicenseTag errors
Change-Id: I936c3f5fca1a0061f215e80469f5d882cb32ee29
2018-05-23 16:23:42 -07:00
Ed Sanders
3276f0eedd Use OOUI form for 'clear' and 'raw edit' of watchlist
Change-Id: I2c53f66bc36b33d42d453b79056822b30796ea4e
2018-04-30 19:06:26 +01:00
Umherirrender
69dbaf3f88 build: Updating mediawiki/mediawiki-codesniffer to 17.0.0
Change-Id: Ib494b47c54fe6354d166055b1e1b31d3583bb992
2018-03-29 21:53:10 +02:00
Umherirrender
d9fb8bab5e Move phpunit @group from file comment to class comment
Remove @group from non tests

Change-Id: Iae9ee3bc5f539a9b4ded8374006ab2993234450e
2018-03-10 11:48:28 +01:00
Matthias Mullie
17fcfd8eaa Only add header when description not already has it
Bug: T187302
Change-Id: Ic57196cc366fc53d83c624a7cd9290fb1972eab1
2018-02-21 17:32:48 +00:00
Umherirrender
67d420b302 Move @group and @covers tags in tests close to class
For @group and @covers tags there should be no newline between the
comment and the class

Change-Id: I7277df13a332cf4d74ffdd8748e3fbdc259610dc
2018-01-28 13:30:07 +01:00
Umherirrender
45da581551 Use ::class to resolve class names in tests
This helps to find renamed or misspelled classes earlier.
Phan will check the class names

Change-Id: Ie541a7baae10ab6f5c13f95ac2ff6598b8f8950c
2018-01-26 22:49:13 +01:00
Timo Tijhof
bee9f4db96 Remove various redundant '@license' tags in file headers
Redundant given this is the project-wide license already,
especially in file headers that already include the GPL license
header.

This and other minor fixups based on feedback from Ie0cea0ef5027c7e5.

* Add @file where missing.
* Move @ingroup and @deprecated from file to class doc where needed.

Change-Id: I7067abb7abee1f0c238cb2536e16192e946d8daa
2018-01-12 18:15:11 +00:00
Sam Wilson
2e248f0bb2 Convert Preferences class into PreferencesFactory service
This deprecates the Preferences class and replaces it with
a PreferencesFactory service. Basically, all code from Preferences
is moved into DefaultPreferencesFactory. All Prefereces methods
are now either shims calling DefaultPreferencesFactory or just
throw exceptions.

Bug: T178449
Change-Id: Id0b2db0c2de0890f6e1609a9a0dca207c4600f99
2018-01-03 09:48:25 +08:00
Kunal Mehta
8956885666 Add @covers tags to specials tests
Change-Id: I626155b890580af38c09795b2b31f625fe942358
2017-12-24 23:29:00 -08:00
Thiemo Mättig
1f2ff32cca Family name of Thiemo changed
Change-Id: I5477d02111e53790e858624c4b7c4f09dbc418fa
2017-11-14 13:59:15 +01:00
Bryan Davis
b8332e9916 Support language fallbacks for Special:MyLanguage
Add fallback lookup based on the interface language to
Special:MyLanguage. Lookup order:

  <user lang> -> <explicit lang> -> <fallback lang(s)> -> <base>

Example when the user's lang is arz:

  arz -> <explicit lang> -> ar -> en -> <base>

Bug: T50292
Change-Id: I245cab71fdd4b4585f86dde808493cd69841b09a
2017-10-30 00:07:21 +00:00
petarpetkovic
7df800cb0b Migrate and convert WL settings to the new UX
Convert Watchlist settings to new UX, with following rules:
- If "Hide edits by anonymous users from the watchlist" is checked,
add "Registered" filter to defaults.
- If "Hide edits by logged in users from the watchlist" is checked,
add "Unregistered" filter to defaults.
- Change test for Special:Watchlist page, so new structured filters
are supported.

Bug: T172757
Change-Id: I27bdaa1401323fa3143f79a57dc5b9773e48fd1d
2017-09-27 21:15:12 +02:00
Umherirrender
9b8fcb4331 Fix case of SpecialRecentChanges class
Test fails with $wgAutoloadAttemptLowercase = false

Change-Id: Ib8cd202d36d35a36e7513f81cea4a7f8346661bc
2017-09-20 22:12:22 +02:00
Umherirrender
f739a8f368 Improve some parameter docs
Add missing @return and @param to function docs and fixed some @param

Change-Id: I810727961057cfdcc274428b239af5975c57468d
2017-09-10 20:32:31 +02:00
MusikAnimal
d09554b6ef Add basic IP range support to Special:Contributions
This works by using the new table introduced with T156318.

The only thing that differs from normal Special:Contribs is we are
showing the IP address next to each entry. This is it how it is
displayed if you request to see newbie contributions:
https://en.wikipedia.org/wiki/Special:Contributions?contribs=newbie

For the time being, Special:DeletedContributions does not support
IP ranges. Various other irrelevant links such as Uploads and Logs
are also hidden.

Refer to P4725 for a way to automate creation of edits by random
IPs in your dev environment.

IP::isValidBlock() has been deprecated with this dependent change:
https://gerrit.wikimedia.org/r/#/c/373165/

Bug: T163562
Change-Id: Ice1bdae3d16cf365da14c6df0e8d91d2b914e064
2017-09-05 16:15:33 -04:00
Reedy
a8c17bbb99 Fix you -> your in 'pagedata-text' message
Bug: T174961
Change-Id: I7cfcfca4decac3e2afc09e58959a001ac13d3d49
2017-09-04 16:33:38 +00:00
Geoffrey Mon
700e49dddd Unwatch link for pages in Special:Watchlist
When the 'watchlistunwatchlinks' preference option is enabled, this
adds a '×' link to each entry of the watchlist that unwatches the page
of that entry. When clicked, it changes into a '+' which can be used to
re-watch the page (effectively undoing the earlier unwatch).
When a page is unwatched, its entries and the entries of its associated
talk page (or vice versa) become translucent and are struck through.

Without JS, '×'/'+' link to action=(un)watch for the relevant page.

In addition, ChangesList classes have been modified to allow a prefixer
that adds a prefix to each line (used in this case to put the unwatch
link) and to add HTML data attributes to reliably determine the target
page of each entry. Unit tests have been updated accordingly.

Bug: T2424
Change-Id: I450b2901413d7e75c11de2a446829fdbb22d31e1
2017-08-12 19:36:29 -04:00
Umherirrender
43e8cd0579 Make phpcs pass
Reenable MediaWiki.WhiteSpace.SpaceBeforeClassBrace.NoSpaceBeforeBrace,
because the mentioned bug is fixed

Bug: T172933
Change-Id: I1593bdba2295ebed401b921f2beabed69dba7638
2017-08-11 16:22:42 +02:00
Margaret Epps
90108854ac Composer fix changes
Bug: T172933
Change-Id: I6e4688dcf08c4a98ebc71b2940772dfc20a5c139
2017-08-09 14:51:33 -04:00
jdlrobson
115fe784b5 Allow blacklisting certain namespaces in Special:ShortPages
This new config variable ($wgShortPagesNamespaceBlacklist)
allows wikis to specify namespaces which should be excluded from
Special:ShortPages.

This will be used by Commons, for which NS_FILE is a content namespace
(accessible via Special:Random and Special:Nearby) but is not useful
to list on Special:ShortPages.

If the blacklist cancels out all namespace in wgContentNamespaces then
all namespaces will show up on the page.

Bug: T170687
Change-Id: I10b4849a5d7f3f8af75ccc6cfba230d03725c898
2017-08-01 00:21:12 +02:00
Roan Kattouw
9db2cc13e0 SpecialRecentchanges: Handle ?days= parameter more sanely
Allow fractional values (e.g ?days=0.25). Previously, fractional values
were rounded down (truncated) to integers.

When computing the cutoff timestamp, don't round down to midnight UTC.
This caused a strange phenomenon where ?days=1 would display between
24 and 48 hours' worth of changes depending on when you used it:
if the current time was 2017-07-24 23:59 UTC, the cutoff would be
set at 2017-07-23 00:00 UTC so you would see almost 48 hours' worth,
but if you refreshed two minutes later, the cutoff would be set at
2017-07-24 00:00 UTC and you should see just over 24 hours' worth.
In addition to this strangeness, it also made fractional values
somewhat meaningless and made a feature like "show only the last 3 hours"
impossible to implement.

Bug: T162784
Change-Id: I75b71324e29a4da09939c4b00feeb4cb556f797c
2017-07-24 16:49:05 -07:00
Umherirrender
b5cddfb27b Remove empty lines at begin of function, if, foreach, switch
Organize phpcs.xml a bit

Change-Id: Ifb767729b481b4b686e6d6444cf48b1f580cc478
2017-07-01 11:34:16 +00:00
Umherirrender
be42e09aa8 build: Prepare for mediawiki/mediawiki-codesniffer to 0.9.0
The used phpcs has a bug, so the version 0.9.0 could not be enforced at the moment.
Will be fixed in next version, see T167168

Changed:
- Remove duplicate newline at end of file
- Add space between function and ( for closures
- and -> &&, or -> ||

Change-Id: I4172fb08861729bccd55aecbd07e029e2638d311
2017-06-26 17:14:31 +00:00
Amir Sarabadani
e250f70742 Make Special:PageData accept two-part subpage
Bug: T163923
Change-Id: I9fc55fd1eb956871fc5dd3e104c6786d380ef445
2017-06-13 18:52:33 +04:30
Amir Sarabadani
39088a632c Use "target" instead "title" as the param name in SpecialPageData
Using "title" confuses mediawiki and causes redirect loops

Bug: T163923
Change-Id: I29e0e6a61703cc04397205a3f7f38df5906622e1
2017-06-12 13:15:49 +00:00
jenkins-bot
8b706516e0 Merge "Start a very basic version of Special:PageData" 2017-06-12 12:51:28 +00:00
Amir Sarabadani
d5bd85c5d1 Start a very basic version of Special:PageData
Bug: T163923
Change-Id: I2a1a12f20a38d8d3c50a8f6c9a363be1cb656c70
2017-06-10 04:29:37 +04:30
Geoffrey Mon
287ddb4c9a Fix action=feedcontributions date filtering parameters
* Convert year/month date filter parameters to use start/end so that
  ApiFeedContributions still works as expected after b668887
* Move SpecialContributions::processDateFilter (used to convert
  year/month parameters to start/end parameters) to ContribsPager
  since ApiFeedContributions also uses it now

Bug: T166859
Change-Id: I34fc8388a29e4cd36474934e6266127d0e3253cd
2017-06-06 10:41:40 -04:00
Geoffrey Mon
b66888733c Use PHP DateInputWidget in Contribs and use for range filtering
* Add two DateInputWidgets to Special:Contributions, one for start and
  one for end
** If start input is empty but end input is not, display edits up to end
   input, and vice versa
** If both inputs are specified, display edits between the two dates
** If both inputs are empty, no date range is used
* Legacy options (year=/month=) are converted to use for the end
  timestamp, so URLs with them should still work.
* Unit tests!

Bug: T120733
Change-Id: Id15f2b2ce2954fe98dfbbb7b0e86c0e4e5713f5e
2017-05-29 16:39:07 +00:00
Matthew Flaschen
efe994d3c3 Change delimiter for multiple namespaces and tags
It's ; for namespaces (since that is generally what we're using,
e.g. for STRING_OPTIONS), and | for tags.  I would have
preferred them to all be consistent, but there is one revision
that has a ;, and this seems better than modifying the DB.

Comma is already used as a delimiter between separate parameters
(e.g. hideanons and namepsace).

Also, fix multiple namespaces for parseParameters and add test
cases.

Bug: T164132
Bug: T164133
Change-Id: Iad061e0bc17e3522a3f5d330ac2c8bf9cf0e614f
2017-05-08 23:03:46 -04:00