Commit graph

776 commits

Author SHA1 Message Date
Jon Robson
c3c4920c70 Always show patrol link regardless of whether in diff-only mode
Bug: T357693
Change-Id: I93736bd8ca4cc69cb89023d83872dcc3d71694a5
2024-02-22 16:10:37 -08:00
Sam Wilson
3e1c6b74f5 diff: Change order of inline diff legend elements
To match the order that's used within the diff (deleted followed
by inserted).

Bug: T357150
Change-Id: I80dd954e8bfb699280dcf5791cc16e153b291e17
2024-02-15 12:59:19 +08:00
Jon Robson
98d2853581 Diffs: Always render patrol link in HTML and hide via CSS
The mobile site has traditionally shown the patrol link to all
mobile users.

The diff HTML is updated to allow skins to have opinions on whether the
patrol link is displayed or not. By default it is hidden which is the
status quo.

Bug: T357213
Change-Id: I71eed29aed22b79367286c1761cf744a83609967
2024-02-12 21:54:16 +00:00
James D. Forrester
102a4f8a35 build: Upgrade mediawiki/mediawiki-phan-config from 0.13.0 to 0.14.0 manually
* Switch out raw Exceptions, mostly for InvalidArgumentExceptions.
  * Fake exceptions triggered to give Monolog a backtrace are for
    some reason "traditionally" RuntimeExceptions, instead, so we
    continue to use that pattern in remaining locations.
* Just entirely give up on PostgresResultWrapper's resource vs. object mess.
* Drop now-unneeded false positive hits.

Change-Id: Id183ab60994cd9c6dc80401d4ce4de0ddf2b3da0
2024-02-10 02:22:41 +00:00
James D. Forrester
4bae64d1c7 Namespace includes/context
Bug: T353458
Change-Id: I4dbef138fd0110c14c70214282519189d70c94fb
2024-02-08 11:07:01 -05:00
Bartosz Dziewoński
4aebcfe097 Change more uses of getDBLoadBalancerFactory() to getConnectionProvider()
Some less trivial cases. Also update variable names.

This doesn't really change anything, but I hope it helps promote
getConnectionProvider() as the common way to do this.

Follow-up to 8604c384f6.

Change-Id: I6657d783375fac5c7fa856b884ff1fb09285e94c
2024-01-23 16:34:45 +01:00
Amir Sarabadani
b7c5d05813 PoolCounter: Namespace classes
Two of the classes in this directory have already namespaced to
MediaWiki\PoolCounter.

Bug: T353458
Change-Id: Ie41f8d935f7623bb40040a5eb78f99c6d7b7b75e
2023-12-20 09:32:19 +00:00
James D. Forrester
9bfb75ff90 Namespace ParserOutput
Most used non-namespaced class!

Bug: T353458
Change-Id: I4c2cbb0a808b3881a4d6ca489eee5d8c8ebf26cf
2023-12-14 14:57:34 -05:00
Umherirrender
72d6b46339 Use namespaced classes
Changes to the use statements done automatically via script
Addition of missing use statements and changes to docs done manually

Change-Id: I443aada1c18c8628b02671aa9fd6f441961e5c2e
2023-12-11 16:07:18 +01:00
Martin Urbanec
29af4dd074 Move user options related classes into its own namespace
There are a couple of user options related classes already,
and the T321527 work on dynamic defaults is going to add
even more. Let's move them into a separate namespace
to make core a bit more organized.

Old name is kept as an alias for compatibility purposes.

Bug: T321527
Bug: T352284
Change-Id: I9822eb1553870b876d0b8a927e4e86c27d83bd52
2023-11-29 13:27:13 +01:00
Ammarpad
9dc220ecce diff: Fix LinkRenderer method call
Bug: T349726
Follow-up: Ie8ac1aab6d2fe5f4575a6891c36efe497458e093
Change-Id: Ibd728d171ce7e821f9a67131ad466d779681fe49
2023-10-25 17:18:23 +01:00
Jon Robson
483065c46c Diffs: Use JS friendly data timestamp instead of mediawiki timestamp
This is more useful for JavaScript clients.
Follow up to 7f554fc74

The diff timestamp is also moved to its own HTML element
to account for hidden revisions.

Bug: T240624
Change-Id: Ie8ac1aab6d2fe5f4575a6891c36efe497458e093
2023-10-23 21:55:28 +00:00
jenkins-bot
337029cbbb Merge "DifferenceEngine: Wrap edit, undo thank link tools with CSS parentheses" 2023-10-17 19:00:19 +00:00
jenkins-bot
53a7614975 Merge "DifferenceEngine: Add user meta information on diff pages" 2023-10-17 18:02:14 +00:00
MusikAnimal
d3903b9c2a TextSlotDiffRenderer: show tooltip instead of help icon on inline switch
Also add to the switch itself, not just the label

Bug: T346429
Change-Id: Ia7319a63878e029765c08a44f890fe96205c35da
2023-10-17 12:31:49 -04:00
Jon Robson
be79192269 DifferenceEngine: Wrap edit, undo thank link tools with CSS parentheses
This allows other skins to skin these differently.

Bug: T240624
Change-Id: I3232c2f5075ae6ef2ba5a1bdcd63530461919b6f
2023-10-17 15:49:13 +00:00
Jon Robson
32dd2fb2b5 DifferenceEngine: Add user meta information on diff pages
This will be used to consolidate the mobile and desktop diff
pages. This useful information could also be incorporated into
desktop skins at a future date.

Bug: T347779
Change-Id: If1f6f75ea829e8754fc51c7c15a2f47ad16dba52
2023-10-17 15:48:54 +00:00
thiemowmde
0a453b6c37 Remove meaningless /** #@- */ comments
Some of these comments are more than 20 years old. Almost all of them
are copy pasted from somewhere else, most certainly without knowing
what they mean. I can only guess that they have been part of some
ancient code folding feature that's not supported any more. Even if,
almost all of them are misplaced by now because the surrounding code
changed without updating the comments.

Change-Id: I53c37f050574a530ec772b7a07b67d84b31bb7a0
2023-10-15 12:30:28 +02:00
hmonroy
aae15dca22 diff: add help message to inline switch
Add help message that explains what the inline toggle does when you click
it.

Remove 'diff-table-format-label` text since it is not being used.

Bug: T346429
Change-Id: Idc3aefffd03d491a573b27c7e18b337f68bbc9cf
2023-10-13 12:09:40 -07:00
jenkins-bot
5dd2ee1e3b Merge "DifferenceEngine: Separate previous/next from diff itself" 2023-10-11 02:12:32 +00:00
Jon Robson
4bbfde052a DifferenceEngine: Separate previous/next from diff itself
Having these controls in the diff makes it very difficult to
adapt the diff page for mobile screens. It is proposed we add
links at the top of the diff page, that are initially hidden.

These will initially be used in Minerva skin and possibly
upstreamed at a later date for all skins.

Change:
* Add previous / next breadcrumbs at top of diff page

Bug: T347780
Change-Id: Iae6c140cde54d807204e6d2b8c7b6599f75df89e
2023-10-10 22:00:46 +00:00
jenkins-bot
f7049ef7ff Merge "DifferenceEngine: Comments on diff page should be themeable" 2023-10-10 18:56:41 +00:00
jenkins-bot
4af120071a Merge "DifferenceEngine: Make timestamps data readable" 2023-10-10 18:46:09 +00:00
MusikAnimal
02e7fdb26a diffs: add line number headings to inline diffs
Adds new regex in BaseTextDiffer::localizeLineNumbers() to work with
wikidiff2 inline diffs as well as table diffs.

Since there are no "columns" in inline mode, we have a new message to
indicate how the line numbers changed from the old diff versus the new.

Deprecate DifferenceEngine::localiseLineNumbers() as no longer used and
redundant to BaseTextDiffer::localizeLineNumbers().

Bug: T346460
Change-Id: I7b195879b677e2242ad73070fe19ad82121576a8
2023-10-09 22:53:14 -04:00
Jon Robson
0b2ccb89cd DifferenceEngine: Comments on diff page should be themeable
Remove hardcoded parentheses in favor of CSS pseudo elements to
support different display in different skins.

There should be no visual change in any skin with this change.

Bug: T117279
Change-Id: Iaea122647893acfa405d413e851e14949fb4b8d3
2023-10-04 18:16:58 +00:00
Jon Robson
7f554fc748 DifferenceEngine: Make timestamps data readable
The Minerva skin renders a relative timestamp.
Having this data attribute available will allow the Minerva
skin to render a relative timestamp on this page.

Bug: T117279
Change-Id: Ib66de95bdeca6e9bfa082889f0ed0740dbf8639f
2023-10-04 11:12:37 -07:00
jenkins-bot
5d693f3ff0 Merge "DifferenceEngine: Distinguish between table and inline diffs" 2023-09-29 23:18:23 +00:00
Jon Robson
e832b8f190 DifferenceEngine: Distinguish between table and inline diffs
Having a different class on the diff allows different styling
in the different contexts.

Bug: T117279
Change-Id: I32fc945dac113453351c07bd75fbf2835e616ce2
2023-09-29 22:37:45 +00:00
Maryum Styles
3cc1781815 SECURITY: DifferenceEngine: hide diff-multi-sameuser message for supressed revisions
CVE-2023-PENDING

reduce the edit count if a user for a given revision is suppress-deleted

Bug: T341529
Change-Id: I79539464cf3500065cb4f42e1542ff5feec31395
2023-09-29 00:32:14 +01:00
Daimona Eaytoy
95d75e831a Add first batch of taint-check annotations
These are the same as taint-check's MediaWikiSecurityCheckPlugin.php.

The notable exception is methods in WebRequest that were previously
hardcoded as returning a safe value. This was a consequence of said
methods return safe types (e.g., int, bool). Instead of adding
taint-check annotations, add return typehints instead, which let
taint-check remove any taintedness.

Fix some taint-check issues that were previously not spotted or whose
suppressions were removed in other patches.

Also fix the following bugs spotted by phan thanks to the type hints:
- SpecialExport did not have explicit handling of null $depth, and just
  returned 0 because null fails both the < and the > comparisons.
- Improve documentation of params and props in ProtectedPagesPager.
  SpecialProtectedPages can pass null $namespace and $size.
- Remove unused parameter from SpecialProtectedPages::showOptions, of
  which $ns and $size were not documented as nullable.
- Add FIXMEs in SpecialVersion about very inconsistent escaping.

Bug: T321806
Change-Id: I726f528856614c92329683a0ad8936a42e262748
2023-09-23 17:51:06 +02:00
James D. Forrester
1d0b7ae1e2 Namespace User under \MediaWiki\User
Bug: T166010
Change-Id: I7257302b485588af31384d4f7fc8e30551f161f1
2023-09-19 19:18:16 +00:00
jenkins-bot
85addf1312 Merge "Use OutputPage::setPageTitleMsg() instead of ::setPageTitle()" 2023-09-19 18:42:52 +00:00
James D. Forrester
459cbb0494 Namespace remaining 'specialpage' files under \MediaWiki\SpecialPage
SpecialPageFactory is already here, but none of the others were yet.

Bug: T166010
Change-Id: I9689bf0a1ab329625e23669b99f019b96295fffd
2023-09-18 18:23:13 +01:00
C. Scott Ananian
111d9177af Use OutputPage::setPageTitleMsg() instead of ::setPageTitle()
Passing a Message argument to OutputPage::setPageTitle() is
deprecated, because the message is not properly HTML-escaped by
default.  Use ::setPageTitleMsg() instead wherever the message doesn't
include HTML metacharacters.

Also protect arguments with Message::plaintextParams() where
appropriate.

Bug: T343994
Bug: T343849
Change-Id: Iba67d008545249772c136c5d6d302110516d3b94
2023-09-18 11:52:36 -04:00
Bartosz Dziewoński
d45f68b1a9 Infuse the inline diff toggle's layout to fix accessibility
Infusing just the toggle widget, without the layout wrapping it,
causes them to get disconnected, which breaks some accessibility
features, including lack of "aria-labelledby" and no support for
activating the toggle by clicking on its label.

Bug: T346132
Change-Id: I227f47d4e6c25e19b4c02a16c287fc481efc2bf4
2023-09-16 01:14:30 +02:00
Bartosz Dziewoński
8769e265b4 DifferenceEngine: Use real type hints for services etc.
Change-Id: I1d47da6595ccf9d22abbcced4363c3092fc10a94
2023-09-07 21:16:00 +00:00
TheresNoTime
b20ea3a54f DiffToggleSwitch: remove temporary inline switch flag
Remove `$wgShowDiffToggleSwitch`, ensure the inline switcher
is always shown.

Bug: T341630
Change-Id: I37d1abe0d9773654df24dd8316cd1b351e3b91a4
2023-09-06 20:13:00 +00:00
jenkins-bot
bbfa65643f Merge "ArchivedRevisionLookup: Allow lookups using just the revision ID" 2023-09-06 18:43:32 +00:00
Amir Sarabadani
d8e542abf9 Reorg: Move three output related classes to includes/Output/
And namesapce them:
 - StreamFile
 - OutputHandler
 - OutputPage

Bug: T321882
Change-Id: Iedf8d88c595e580f2d8f0734c92aa5c45618ba33
2023-09-05 19:36:42 +01:00
Bartosz Dziewoński
2911de600f ArchivedRevisionLookup: Allow lookups using just the revision ID
A unique index on ar_rev_id was added in T193180 (2019), allowing
revisions of deleted pages to be reliably looked up by just their ID.

Use the improved getArchivedRevisionRecord() method in a few places
that previously had to use manual queries.

Bug: T251066
Change-Id: I9352f64952ac4b803d76e9e72f88a01be7317c56
2023-09-02 01:56:20 +00:00
hmonroy
13ffa17b71 DiffToggleSwitch: use PHP ToggleSwitchWidget
Add logic that renders the new OOUI/ToggleSwitchWidget (just added to
OOUI) in PHP for the inline switch. This will provide no-JS support, and will get rid of the flash when loading the page for JS users.

Bug: T341955
Change-Id: Ifc8104937cd23e9b85208b7f283db238a0e6849d
2023-09-01 15:49:15 -07:00
Amir Sarabadani
f4e68e055f Reorg: Move Status to MediaWiki\Status\
This class is used heavily basically everywhere, moving it to Utils
wouldn't make much sense. Also with this change, we can move
StatusValue to MediaWiki\Status as well.

Bug: T321882
Depends-On: I5f89ecf27ce1471a74f31c6018806461781213c3
Change-Id: I04c1dcf5129df437589149f0f3e284974d7c98fa
2023-08-25 15:44:17 +02:00
Tim Starling
7887b66ade Include $wgWikidiff2Options in the diff cache key
Bug: T341754
Change-Id: I3b7d71f811d7ebd0cf83273164c479762e1a680b
2023-08-23 10:00:47 +10:00
Amir Sarabadani
c57cdf4276 Migrate last batch of simple Database::select* calls to SQB
Done semi-automatically via a parser written on top of ANTLR4

Bug: T311866
Change-Id: Ib71d6810e480d7176726082347b569e346557de7
2023-08-01 20:38:13 +02:00
jenkins-bot
1d5e4f3d0a Merge "Add support for wikidiff2_multi_format_diff()" 2023-07-31 11:54:12 +00:00
Tim Starling
8d69f99a1a Don't show the inline toggle selector on Special:MobileDiff
Have Article opt in to inline toggle switch display, so that random
callers of DifferenceEngine::showDiffPage() do not receive a
non-functional format selector.

Bug: T342158
Change-Id: Id4e38c2a20b5381e5f70b1244304da2895eaf8e7
2023-07-26 05:16:55 +00:00
Tim Starling
2b608a35ed Add an API-only user preference for diff type
* Add an API-only user preference for diff type
* Retain query parameter stickiness but fix it so that the diff-type
  from user preferences does not leak into the query string. So the
  no-JS control continues to work. If a no-JS user has the inline
  preference set, respect it on the initial load, but add an explicit
  diff-type=table to the query string of the table link so that the
  preference can be overridden.
* Get the diff type from the initial state of the no-JS button. Infuse
  the widget to access the active property using the OOUI public API.
* For a logged-in user, when the JS toggle is clicked, fetch the new
  diff body and update the user preference.
* For an anonymous user, when the JS toggle is clicked, update the
  prev/next links to include the correct diff-type query parameter.

Bug: T336713
Change-Id: Ie409d79ac8222dfa6ec8fd170b76be088be80b3a
2023-07-25 10:49:51 +10:00
Tim Starling
4014f56d73 Add SlotDiffRenderer::localizeDiff()
It makes sense for SlotDiffRenderer to localize the diffs that it
returns.

DifferenceEngine can't conveniently use this right now since it stores
all slot diffs concatenated together in a cache entry. It can't break
the string apart again to call the right SlotDiffRenderer on each
slot diff. So it assumes there must be a text diff in there somewhere
and calls TextDiffer over the whole thing.

EntitySchema does not have this problem and can benefit from this
method.

Bug: T342209
Change-Id: Ie06e100bb0e945de5dbe3dade14b2e6b706e078d
2023-07-20 10:09:42 +10:00
Lucas Werkmeister
1a3f15cd43 Restore DifferenceEngine::localiseLineNumbers()
Since it’s needed by EntitySchema, and because it was also, as far as I
can tell, removed without following the stable interface policy in
change I5c506e3916 (commit 2aa87cdf2c).

Not marked as soft-deprecated because there doesn’t seem to be a way to
access the replacement.

Bug: T342209
Change-Id: Iba9fd8bb56ea0e1543c9a9beab85b01f9549fbd7
2023-07-19 12:26:43 +02:00
Tim Starling
2ed4e600b4 Add support for wikidiff2_multi_format_diff()
Bug: T341754
Change-Id: I17396985d0b26516a06df17e9bd1343054521e01
2023-07-19 12:38:18 +10:00