Commit graph

4753 commits

Author SHA1 Message Date
mareikeheuer ce3e7b8eb8 Create end to end test for reference re-use in VE
Created following test cases:
Scenario: I am a user that wants to re-use refs in VisualEditor
-should display existing references in the Cite re-use dialog
- should display re-used reference in article with correct footnote number and notification in context dialog
- should display correct ref content and name attribute for re-used ref with existing name attribute
TODO:
- run several rechecks to observe flakiness issues
- add remaining test cases (copy paste & cut paste)

Bug: T356858
Change-Id: Ib1b64c44b21471404a7c51752fb5899119b4b533
2024-03-12 10:22:04 +01:00
thiemowmde 650d2c296d Add basic PHPUnit tests for Parsoid implementation
There is much more to test, but it's a start.

Intentionally build as pure unit tests to make them as fast as
possible.

Bug: T354215
Bug: T358652
Change-Id: Iae1a8086b8f2b9e5b11e0117bd3f19fdaa087df0
2024-03-12 09:06:16 +00:00
thiemowmde 644597c402 Move Parsoid-specific CSS into a subdirectory
The first two files have been added to the root modules/ directory
via I487095d in 2015. No problem.

Many, many more files have been added via I000b453 in 2022. It's
really hard to tell what is what since then.

I'm not absolutely sure what the naming convention for this folder
should be. Could as well be "localized-styles/" or just "Parsoid/".

Bug: T156350
Change-Id: Ibcf8c7a6db5400ed8a9811244a070e03ff372a39
2024-03-11 12:42:25 +00:00
Translation updater bot 7b308564e0 Localisation updates from https://translatewiki.net.
Change-Id: I1273544798e72192a48ab0219f7e1748ffb95e33
2024-03-11 08:26:28 +01:00
thiemowmde 2b32f15c8c Allow visualeditor-cite-tool-name-… messages to be missing
The information read from the …cite-tool-definition.json files is
effectively user input, even if only interface administrators can
edit it. Usually we carefully validate user input. But as of now
this code starts failing with all kinds of uncatched errors.
* An entry with no name, an empty name, or a name that's not a
  string will cause all kinds of undefined behavior.
* An entry with an empty title results in an invisible button.
* A missing message results in a technical <…> placeholder, even if
  the name is usually a sensible fallback.

Note that hard-coding titles as plain text strings in the ….json
file was already possible.

Change-Id: Iddcedbe859e86ac4c3f79a53d36237daff86c0db
2024-03-06 14:21:08 +01:00
Translation updater bot 61880c7535 Localisation updates from https://translatewiki.net.
Change-Id: I54e5010e221d9882fdc2ba16b8a79c34e2109011
2024-03-06 08:19:31 +01:00
thiemowmde c02595bb97 Drop obscure error message about an unused group
The message was part of the original patch that introduced the group
feature in 2009, see https://phabricator.wikimedia.org/rECIT75004e33.
Notice how there was never a test scenario for this message. A test
was added in 2020 via I07738cc.

The message appears only in a rare edge-case when a group is entirely
unused in the text, and only when the group is not empty. The shortest
possible example is:

 <references group=g>
 <ref group=g name=a>a</ref>
 </references>

Just adding something unrelated like `<ref group=g>x</ref>` to the
text changes the error message. Now the group is "used". But this
notion is confusing to begin with. References can be part of a group,
and we can use references, but we can't use groups as if they are a
separate entity.

A better error message already exists.

Notice how this special error message doesn't appear anywhere in the
Parsoid code path. That was already using the other, more generic
error message.

Bug: T269531
Change-Id: I63f663d76e45e6c3d664f145d9a564ee00ff53cd
2024-03-04 13:04:36 +01:00
thiemowmde e5eee2d049 Fix confusing error message with empty group
This is about the error message that currently says:

 »Cite error: <ref> tag with name "a" defined in <references> has
  group attribute "" which does not appear in prior text.«

This is a special error message that appears only when a group name
does not appear anywhere in the text. In all other cases a simpler
error message is shown:

 »Cite error: <ref> tag with name "a" defined in <references> is
  not used in prior text.«

While the first error message is not wrong in the edge-case
described in T269531, it's very confusing for a multitude of
reasons. For example:
* There is no group attribute in the wikitext.
* Just adding something completely unrelated like `<ref>x</ref>` to
  the text shows the other error message.

The reason for this behavior is that the assumed default is an empty
`group=""`. The error message changes the moment any other <ref> in
the same group appears in the text vs. when the group is entirely
unused.

We can probably remove this error message entirely, but should at
least not use it when there is no group.

Notice how the Parsoid code path was already using the other error
message.

Bug: T269531
Change-Id: Ifa2e97254f4cda72233a057d8760fb1116143552
2024-03-04 12:43:26 +01:00
Translation updater bot 15663dc283 Localisation updates from https://translatewiki.net.
Change-Id: I8eb8c35e3283224b8101ea59b421648f4dca24ad
2024-03-04 08:23:03 +01:00
jenkins-bot c30dbd9875 Merge "Use Types/#jQuery for external docs" 2024-03-01 08:42:47 +00:00
Translation updater bot aa1c82a1e3 Localisation updates from https://translatewiki.net.
Change-Id: I4ea5452e8cce05b60711813359dd162590f3425b
2024-03-01 08:32:41 +01:00
WMDE-Fisch c5e7fd35ea Use Types/#jQuery for external docs
Missed while merging Ia0a52cc7459d4e985349e8c0e4656f68e25d8afb
into Iaee1dadcc19a70c27839d0d27dfa6a07a70fb46b

Change-Id: I0a429a52bcf04bac9cc63cb5856f4c8fdd06b1fa
2024-02-29 18:57:36 +01:00
jenkins-bot 20d0b82969 Merge "Minor logic cleanup" 2024-02-29 12:43:26 +00:00
Adam Wight 8d0202a664 Minor logic cleanup
This didn't mean what it looked like: `||` has higher priority, so an
undefined elem would not result in an empty string.

Change-Id: I1e361842f060815b04802a1ab8f077faa1a8bc6b
2024-02-29 12:12:56 +00:00
Adam Wight 5c7e7f4fbd linters should ignore generated docs
Change-Id: Ice9eef1ba6e2b158ab3f7a9f45a4d1a7a41824b8
2024-02-29 12:09:09 +00:00
Adam Wight 73c90a0e7d Clean up and fix some jsdoc annotations
Some of the annotations were used in a way that confused jsdoc.  This
cleans up redundant annotations and uses more canonical tags.

These changes cause all classes to now appear in the generated pages.

Includes linking to external docs.

Bug: T358641
Change-Id: Iaee1dadcc19a70c27839d0d27dfa6a07a70fb46b
2024-02-29 13:05:42 +01:00
Adam Wight 5369076028 Initial support for generating jsdoc
Not perfect, some classes are missing.  But it runs successfully and
generates some docs already.

Bug: T358641
Change-Id: Ie10e48ab9ac80e4969a152562a746cb54c7ec0e4
2024-02-28 09:22:59 +01:00
Translation updater bot 104f94f546 Localisation updates from https://translatewiki.net.
Change-Id: Ibec48f697fafb316a33dcce97d2f9563101cab42
2024-02-27 08:19:41 +01:00
Arlo Breault 1ea6f53fde Less tabs in phan config
Change-Id: If9b35b1f1ae6e70917e17e85cb0f9a2b0fa959ee
2024-02-26 16:57:14 -05:00
thiemowmde 5d8e256fbc Remove obsolete @method annotations
These tags are 10 years old. Current documentation generators don't
need them.

Tagging something explicitely as being a @method can be useful in
an interface where the elements are initialized with e.g. `= null;`
instead of having an implementation. But we have implementations
here. Sure these are methods. No need to say that in the
documentation.

Also removing a comment that's obviously a copy-paste mistake from
what was the ve.ui.MWMediaSearchWidget back then. See Ib244ff6 and
before.

Change-Id: I7df6c789d10fd89e7fe97d56c942fd22c56d8458
2024-02-22 20:07:33 +01:00
jenkins-bot 90dc52620c Merge "build: Resolve MediaWikiNoEmptyIfDefined suppression" 2024-02-16 23:25:32 +00:00
Umherirrender 8580b73320 build: Resolve MediaWikiNoEmptyIfDefined suppression
Follow-Up: I21a5260f36c4fa0d767ec6bba86fcfa35ff0a369
Change-Id: Ib97140baf68bfcc1fae4d9506f73503307f41719
2024-02-16 10:07:13 +00:00
jenkins-bot 5bad2b183f Merge "Revert "Avoid creating a MWReferenceModel if not needed"" 2024-02-16 08:30:13 +00:00
DLynch 6bc1ae4146 Revert "Avoid creating a MWReferenceModel if not needed"
This reverts commit 74f66bc478.

Reason for revert: this broke reference reuse from Citoid

Change-Id: I86efea4945c1795dbfd61f4e020d78ca81a6f4d1
2024-02-16 03:54:34 +00:00
Translation updater bot 834782f9e0 Localisation updates from https://translatewiki.net.
Change-Id: I18dcead460a5e780529118821ec1318d593fdb0b
2024-02-15 13:27:43 +01:00
jenkins-bot 1b9d856465 Merge "build: Updating dependencies" 2024-02-14 17:14:56 +00:00
libraryupgrader dfec4fa9f1 build: Updating dependencies
composer:
* mediawiki/mediawiki-phan-config: 0.12.1 → 0.14.0

npm:
* grunt-banana-checker: 0.11.0 → 0.11.1
* semver: 5.7.1, 7.5.4 → 5.7.2, 7.5.4
  * https://github.com/advisories/GHSA-c2qf-rxjj-qqgw

Change-Id: I21a5260f36c4fa0d767ec6bba86fcfa35ff0a369
2024-02-14 07:41:08 -05:00
Translation updater bot 11591f72cd Localisation updates from https://translatewiki.net.
Change-Id: I6fa8273a3bb51c75ec72e928d78d00a0ed66e137
2024-02-14 08:18:28 +01:00
jenkins-bot 882f3e5ee7 Merge "Revert "Accessors to find MWReferenceNode in the document"" 2024-02-13 14:51:09 +00:00
Esanders f7c8b63ed1 Revert "Accessors to find MWReferenceNode in the document"
This reverts commit 0566a495f3.

Reason for revert: Merged too soon, while discussion of the whole
approach is still ongoing.

Change-Id: I2d3d6455cd4ea12067e2020f6b41cfbb4672bbb5
2024-02-13 12:57:02 +00:00
jenkins-bot 49e3ab6595 Merge "Accessors to find MWReferenceNode in the document" 2024-02-12 15:55:17 +00:00
Translation updater bot a68be1ceda Localisation updates from https://translatewiki.net.
Change-Id: I65f69dd188a5745c2161492029dcac902a76bce9
2024-02-12 14:49:05 +01:00
jenkins-bot 2d714727f2 Merge "Remove dead variable from ReferenceListFormatter" 2024-02-10 10:41:38 +00:00
jenkins-bot 47b552f504 Merge "Avoid creating a MWReferenceModel if not needed" 2024-02-10 01:40:55 +00:00
Adam Wight 0566a495f3 Accessors to find MWReferenceNode in the document
These are provides as a replacement for internalList indexes.

Bug: T336417
Change-Id: Ifd3a1b667369074e2cefa4d70e4c090e91b010b5
2024-02-09 15:37:27 +01:00
thiemowmde 1eb84d0a8c Remove obsolete rtrim hack added in 2006
This was added in 2006 via commit eb3a3f78, see
https://phabricator.wikimedia.org/rECITeb3a3f78
Hard to tell what happened back then. It's obviously not needed any
more, as proven by the tests. I mean, even if there would be an
extra newline character, it would be irrelevant at the end of an
<ol>…</ol>.

Change-Id: I5715cd9f31ac7ef86c1ea227642336ae71684291
2024-02-08 11:02:12 +01:00
thiemowmde d96e4e97bb Remove dead variable from ReferenceListFormatter
This is unused since Id10db40 from 2019. Looks like we just forgot
it.

Change-Id: I3164f4841572ff19faa584fa2e6ed5aeb7aa2c30
2024-02-08 10:44:16 +01:00
jenkins-bot 46499cd9c0 Merge "Rename ReferencesFormatter to ReferenceListFormatter" 2024-02-07 18:00:04 +00:00
thiemowmde 7c75d44b8a Rename ReferencesFormatter to ReferenceListFormatter
I always found the name a little ambiguous. The fact that it outputs
an actual HTML list and not just some "references" – whatever that
means – is relevant, in my opinion.

Change-Id: I0d169455c8d2b42d62da4dccb8376c09fb6902bc
2024-02-07 18:20:02 +01:00
Adam Wight 74f66bc478 Avoid creating a MWReferenceModel if not needed
It's fine to copy attributes directly from the reference node rather
than go through the specialized model object.

Bug: T336417
Change-Id: Idaca192137dc762ddced2ee8446a7d838f97e317
2024-02-07 15:24:12 +01:00
Translation updater bot df2a713934 Localisation updates from https://translatewiki.net.
Change-Id: I86fedb483ef06b978e9e16cbc23cad0a72bf905e
2024-02-05 08:49:22 +01:00
thiemowmde 5eea8ebd90 Simplify ErrorReporter PHPUnit test setup
This was slightly overengineered ever since I4b1f890 and slowly became
more and more complicated over time, notably when withConsecutive was
replaced in Icb951b4. Turns out this was never really needed. It's
impossible to get more than one tracking category from this code path.

While we might add more tracking categories later that will most
probably not happen in this code path.

Change-Id: Ie32d17bac8d3518c985b18f83a846c3fb2bd053f
2024-02-01 17:28:44 +01:00
Translation updater bot 8333e70453 Localisation updates from https://translatewiki.net.
Change-Id: Ic325aea9e6f28d870f3bfe5ad4962419723267ce
2024-02-01 09:01:15 +01:00
Adam Wight b0b628afd5 First tests for ve.dm.MWReferenceModel
Begin a QUnit test module for the reference model.  Tests demonstrate
that a new ref and a normal ref reuse from the full document both
behave as expected.

Bug: T336417
Change-Id: I1337806d41b50329ba971c8e68e1a62b52cc9a52
2024-01-31 13:52:40 +01:00
Translation updater bot f7d1ecb84b Localisation updates from https://translatewiki.net.
Change-Id: I4c21c3ea065de3e17672e19a7cb86907b4467d1c
2024-01-31 08:28:49 +01:00
jenkins-bot de17c57b98 Merge "[lint] Satisfy max-len rule" 2024-01-30 15:47:54 +00:00
mareikeheuer b411dc50a2 Write e2e test for Cite-VisualEditor integration in Cypress
Implemented the test case as described in the ticket.
Deviated from ticket's approach for creating a new page by manual creation instead of API,
to verify the end-to-end functionality through the interface & ensure the entire proccess works seamlessly.

Bug: T353439
Change-Id: I8f863ae0bd8fdb1fb0f1b103d98ba9f2306f3df2
2024-01-30 14:48:14 +01:00
Adam Wight 9535126304 [lint] Satisfy max-len rule
These changes mostly improve the code, and align the lint rules with
the MediaWiki base.

Change-Id: Ib4b0595fd9a9298039b8b44a0f1d4a9e90731527
2024-01-30 12:18:52 +01:00
Adam Wight 4a6b78ac0c Verify that the test page was created
Make sure that we're waiting for the page creation to finish, and
assert that the API request was successful.  This is mostly a
diagnostic improvement to help debug flaky tests.

Bug: T355602
Change-Id: I398cffa724e9b6d733df46676478cc98dccd884d
2024-01-30 09:46:53 +01:00
Translation updater bot 723571b5d3 Localisation updates from https://translatewiki.net.
Change-Id: Ic56560791c1d93bde35617b594126fec2c578f9a
2024-01-28 16:05:40 +01:00