Commit graph

525 commits

Author SHA1 Message Date
Adam Wight 5b2cbc48bd Wire subref counting into the numbering renderer
Significant change is that footnote marker numbers are changed from
being a CSS-rendered marker to using the rendered "fallback" text.
This could be avoided using the same trick as is implemented for the
reflist: send an inline style variable with the marker content; but
let's only do this if really necessary for user experience.

Template-produced refs are still wrong, but this patch continues to
render them as they come from Parsoid, in the content script.

TODO in later patches:
* reuse of a subref is rendered as '3.2.1' in reader view but '3.0'
and '3.1' in the editor.
* subref numbering is backwards in RTL languages

Bug: T247921
Change-Id: Ieff73769f8ebbc3724f6a9b498487c4e7d09aa2e
2024-07-15 07:08:06 +00:00
David Lynch 68a3eb496e Cypress: selecting the manual tab is fragile
A change to the citoid error message referencing the manual tab is
breaking this test.

Bug: T364595
Change-Id: Ie79be1dbc1b7469cffc380478cf2d24bbe06f470
2024-07-11 11:59:39 -05:00
Arlo Breault c44eaf6f96 Re-enable linting tests post-sync
Depends-On: Ibc421e4c2e339133f5f8879517cc22c8ce58c502
Change-Id: Ibaac02cc51787ae3b26a2be23c7d00bcf38ecf5f
2024-07-05 12:58:09 -04:00
Arlo Breault d9351bc0f4 Disable linting tests temporarily for cross repo sync
Change-Id: Ibaef82dc9c72d290c2f92f03cf518b413a77f8ad
2024-07-05 12:55:29 -04:00
thiemowmde 1aeac001fe Additional parser test cases for delayed extends usage
We want it to be possible to turn a <ref> into an extended one after
it was re-used for the first time, not knowing if it later turns out
to be an extended ref.

This should work: <ref name=x/> is a short re-use of a ref that later
turns out to be a <ref extends=… name=x>…</ref>.

<ref name=x></ref> is just another syntax that should behave
identical.

However, it should probably not be possible to turn
<ref name=x>foo</ref> into a subref later because it really, really
looks like a normal ref. Even if the content matches with a later
<ref extends=… name=x>foo</ref> and we usually ignore identical
content, I suggest to block this with a dedicated error message. But
this is for a later patch. This patch here just documents the status
quo.

This patch also contains minor code cleanups that will be useful in
Ia752a7d.

Bug: T367749
Change-Id: Ie38769b36e5c476b96e7af7f03b0fc800b32ba97
2024-07-05 13:08:23 +02:00
jenkins-bot 8a6993ccd9 Merge "Use slightly narrower interfaces in a few places" 2024-07-05 10:58:42 +00:00
jenkins-bot 1f4175593b Merge "Display extends warning message when editing a reference" 2024-07-05 10:55:58 +00:00
jenkins-bot 0122adb8ba Merge "Extract some methods around the reference insert/update workflow" 2024-07-05 10:55:57 +00:00
jenkins-bot c5a9012b67 Merge "Replace "shield" hack in MWReferenceResultWidget with CSS" 2024-07-04 07:38:00 +00:00
mareikeheuer 2ffbf1fa66 Display extends warning message when editing a reference
MVP implementation for adding a warning when editing a reference
that's the extension of another. In the current approach we're
just using the elements .text() like we do when you create an
extended reference.

Bug: T247922
Change-Id: I2fc574152059937b4aa3fc25ee486d363cc809d5
2024-07-03 07:18:35 +02:00
WMDE-Fisch b483c829ab Extract some methods around the reference insert/update workflow
Includes renaming the method so it's more clear what it's doing.

As preparation for adding the extends warning to the edit pane and
to allow easier identification of parts belonging to the edit
workflow.

Change-Id: If84c5dbdee19c0ebc0a28b50dda93fef3f558c6e
2024-07-02 12:30:11 +02:00
WMDE-Fisch ccf3809413 Re-enable disabled ReferencePreviews Qunit test
I could just remove the getElementById replacement that was
failing the tests. In the Popups extension there really is a
renderer test that mocks this function call but that test is not
part of this file.

Also it seems that tracking is never triggered here. I think that
the beacon overwrite was only added to avoid tracking.

See I2638611ba67b785338f7e98a1c4b08a5e829812d

Change-Id: Ic3540f6f73783e79c81e2b693d2bf96cfc7fc66b
2024-07-01 18:32:13 +02:00
WMDE-Fisch af3f14d430 [Cypress] Always provide ref templates to fix Citoid
The Citoid dialog won't be available when the .json configuration
is missing. That's why test always failed here when triggered
from the Citoid CI.

Bug: T366383
Change-Id: I88ad478250328896c504ccbc95a973d4a0100dd7
2024-06-27 17:05:35 +00:00
WMDE-Fisch 5fcc9dab86 [Cypress] Fix VE save
In some cases the click on the save button did not trigger the
save dialog. After playing around with this, it seems that the
only thing helping here is a little pause.

Even if we wait for the button to change the state to `enabled`
the click sometimes does not trigger the dialog.

Bug: T366383
Change-Id: I2754fd5a0e9b439e9e0378f3597f67e743a6d0c1
2024-06-27 19:01:44 +02:00
WMDE-Fisch bcc109f943 [Cypress] Re-enable skipped backlinks test
I could identify and fix the issue in

I3224c6131a6e959821bc36e4525889e5088777a2

stress test run fine see

I8e38e8cc533065998f91794a9e490d38d77ad21a

Bug: T368267
Change-Id: Ib7db6c39988ef45404817b8c7a68132572f16e36
2024-06-26 11:59:56 +02:00
WMDE-Fisch 4f7b5b2d60 [Cypress] Fix module wait
This was never working it seems. The result of the check needs to
be wrapped in an expect() call.

Bug: T368267
Change-Id: I3224c6131a6e959821bc36e4525889e5088777a2
2024-06-26 09:01:31 +02:00
Kosta Harlan c51dc6e280
cypress: Disable flaky backlinks.cy.js test
Bug: T368267
Change-Id: I469c5d63d2db09c691b49a83200fcf39e0f2ac4a
2024-06-24 15:23:11 +02:00
thiemowmde ec9c8bda00 Use slightly narrower interfaces in a few places
The idea is to make the code less ambiguous and easier to predict.
We passed the same information around two times in a few places.

Change-Id: I39c7a2962bb70bbe40074986e63b1051d0766ea2
2024-06-24 08:07:19 +00:00
Ed Sanders 66fb3e661a Fix some documentation warnings
Change-Id: I7a97c99a919796f987a05ba17e25357fb5ef14c5
2024-06-21 18:00:45 +01:00
thiemowmde bc7f1a7005 Replace "shield" hack in MWReferenceResultWidget with CSS
Same as in I7e82e03. The extra "shield" element was added in
2013 (!), see Ib244ff6. Back then we couldn't use the CSS property.
But nowadays we can.

Bug: T360034
Bug: T367030
Change-Id: Ib41e062491e65eabc8a52facefe283ba04ce16ff
2024-06-18 12:06:37 +00:00
WMDE-Fisch aa5368ad32 Use full listKey for extends in the model
This makes it much easier to deal with the internal auto names
used on new elements created during one edit session.

We're ignoring the correct generation of the auto name literals
for now.

Bug: T367031
Bug: T367030
Change-Id: Idd579970cb64500dac27053213e9b116f23b6d76
2024-06-14 14:03:07 +02:00
WMDE-Fisch f3d0c8643d [Cypress] Use more helper methods for common code
Also removing the weird hook code that was only there to make sure
JS finished loading afaik and then was copied over to other parts
of the codebase.

Change-Id: I90185b14de69bf3f4b6230b9a87c7eff261e72b4
2024-06-14 10:15:11 +02:00
Umherirrender 3de8f65114 Use namespaced classes
Changes to the use statements done automatically via script

Change-Id: I4b49c4ab87f1fcd5cdf29d5f882dec3c3902e146
2024-06-08 23:31:42 +02:00
Ed Sanders 77b7f347c8 build: Update eslint-config-wikimedia to 0.28.0
Change-Id: I9f69e865d47e7cf4a8273bb0fdffbb9dac28b5cb
2024-06-06 16:28:53 +01:00
jenkins-bot 863dd201ad Merge "ESLint: Enforce prefer-arrow-callback" 2024-06-05 10:07:46 +00:00
jenkins-bot c11922c655 Merge "Add 'mw-cite-backlink' class to Parsoid's HTML" 2024-06-04 16:04:32 +00:00
WMDE-Fisch 90a4bb4ee5 [Cypress] Move a bit more code to helpers
Change-Id: I1191b38d6b92c87da9fd35d4ff118823c97a7c93
2024-06-04 11:14:02 +02:00
WMDE-Fisch b4f4dc7fb7 [Cypress] Streamline page edit and VE Cite setup
Change-Id: I4818b662e16f8d70a7d59dcfa29348e9468100df
2024-06-04 07:57:19 +02:00
WMDE-Fisch 1a67a23fbc [Cypress] Move VE helpers to own file
Change-Id: I9e5297f481ba1d70f027e805ed415378d4c8f15c
2024-06-04 07:56:56 +02:00
Ed Sanders 5a2154de38 ESLint: Enforce prefer-arrow-callback
Change-Id: I8d96b69e8c15bc8ad84cfb0c511396e5b3e7ac20
2024-06-03 12:31:33 +01:00
WMDE-Fisch d05b738a29 [Cypress] Disable CI Citoid flaky test
I'm still not sure what causes this to fail in CI locally they
are running fine. In the CI it seems from the recordings, that
Citoid is not loaded when these tests are executed.

Bug: T366383
Change-Id: Iee9e4dd04e08fd3ddfa77409d037ec80f84ead3e
2024-06-03 11:50:11 +02:00
jenkins-bot 477bda1085 Merge "Add 'reference-text' class to Parsoid's HTML" 2024-05-31 21:30:39 +00:00
Subramanya Sastry f38bcde14e Add 'mw-cite-backlink' class to Parsoid's HTML
This patch adds 'mw-cite-backlink' to the linkback span for both
named and unnamed refs. This requires us to add a span wrapper
for the unnamed refs case.

Verified in local testing that this causes aria attributes to be
added to the linkback tags in Parsoid HTML.

This should likely fix other gadgets and code that rely on this
class name to do their work.

Strictly speaking, this is a breaking change since we add an
extra span wrapper for the unnamed ref backlinks which *could*
break anyone using a li > a[rel="mw:referencedBy"] selector.
But, given the specificity of the a[rel] selector, the "li >"
part is unnecessary and might not be used. So, if we wanted to
push our luck (and break process), we could get this in.

Alternatively, we could:
- do this in the the read views OutputTransformPipeline.
- do a real major version bump -- we would be exercising that
  functionality and have to fix and implement any missing pieces
  that may have broke as part of the RESTBase sunsetting.
- not add the span wrapper and fix gadgets to explicitly look for
  both named and unnamed refs with their selectors.

Bug: T328695
Change-Id: Icbd325ebd12cb42186c5b5220dc016835eb18b64
2024-05-31 14:42:04 -05:00
jenkins-bot 56d7dd2496 Merge "[Cypress] Wait for VE modules to load" 2024-05-31 09:43:47 +00:00
WMDE-Fisch 1102102e8f [Cypress] Wait for VE modules to load
This should make sure events are added to the corresponding UI
elements and reduce flaky test results even more.

Change-Id: I2317321912945ef20f8f49405b54fddd65c618d1
2024-05-31 09:18:53 +00:00
C. Scott Ananian 6256b2fc58 Replace book-referencing page property with tracking category
Page property is removed immediately since $wgCiteBookReferencing has
never been enabled in production.

Bug: T239989
Change-Id: I6252fcf1485994244dca40470cc5955e8d4f6917
2024-05-30 07:50:59 +00:00
Subramanya Sastry 50f01c4f28 Add 'reference-text' class to Parsoid's HTML
This adds the 'reference-text' class where Parsoid added
'mw-reference-text'.

If we don't care about the "mw-" prefix, since there are very
few wiki and code references to 'mw-reference-text', it might
seem like we could update all those references and rip out
'mw-reference-text' from Parsoid output.

But, Parsoid HTML is also exposed via the REST API which means
there are likely many users out there analyzing Parsoid HTML.
https://github.com/search?q=%22mw-reference-text%22+NOT+language%3AHTML&type=code
says there are 512 references to this string - so looks like
we are probably going to rely on a major HTML version bump in
Parsoid in the future and then rip out all the duplicate
classes (mw-ref, mw-references, mw-reference-text OR
reference, references, reference-text).

Bug: T328695
Change-Id: I04b18ac75863a0e3e61bdd47b34508e5547dc872
2024-05-28 12:36:49 -05:00
mareikeheuer 1d729a934d [Cypress] Citoid breaks Cite browser tests
Make e2e tests work under either environment (Cite, Citoid)

Bug: T364382
Change-Id: Ib3b7865b9b6c3b1ae86bc792a659a39be3120bc4
2024-05-27 19:57:37 +02:00
jenkins-bot 4f8e06b97b Merge "Make it possible to disable the "cite_error" wrapper message" 2024-05-27 08:16:04 +00:00
thiemowmde 5841e03e10 Add missing skip instructions to Gadget integration test
Also simplify the @covers annotations while we are here. The class
is really simple. There isn't much that can be covered acidentally.

Change-Id: I105f4ea6d6beb119d1557a32b691e9eda1b8085c
2024-05-16 14:35:53 +02:00
jenkins-bot 44f0010c07 Merge "Separate names for server-side vs. client-side feature flags" 2024-05-16 12:29:42 +00:00
jenkins-bot 0c846421b3 Merge "Consolidate duplicate "is reference list empty" code paths" 2024-05-13 13:28:20 +00:00
thiemowmde c921c76dd2 Consolidate duplicate "is reference list empty" code paths
Introduce a static method so we don't need to copy paste code.

Note that the static method still largely duplicates what the method
.buildIndex() will later do. Both loops iterate the reference groups
and the references in each group. The main difference is that the
"is empty" check stops extremely early the moment it finds any
non-empty group.

That's also why I'm convinced it's not worth caching the result.
I benchmarked it and it's nanoseconds. But there are more reasons:

The non-static .isIndexEmpty() method is currently only used when
Citoid is active the same time. Which means the cached result was
entirely unused on installations without Citoid.

Bug: T356871
Change-Id: Id5c4295086bc977ef52ad141be9962d2eecb1bcc
2024-05-07 15:51:12 +02:00
Adam Wight 9699781545 Temporarily skip tests incompatible with Citoid
Cite tests are blocking Citoid patches, by failing in that
environment.

TODO: To be reverted once the incompatibility is resolved.

Bug: T364382
Change-Id: Ie8eeac79966ccb46389e4f9aaa4620e9bd75cc00
2024-05-07 13:37:25 +02:00
thiemowmde e3fdee52aa Separate names for server-side vs. client-side feature flags
The two are different:

* CiteReferencePreviews as specified in extension.json is a feature
flag that allows us to disable the feature entirely. It could be
named "CiteReferencePreviewsFeature" or "CiteEnableReferencePreviews",
but renaming a feature flag that's already in use is hard.

* The client-side flag tells the JavaScript code "you know what, it
was kind of a mistake you got loaded, please stop". This is because
we can not make all decisions before we register the ResourceLoader
module, e.g. if the user has certain gadgets enabled.

Adding the word "Active" is not a huge improvement, but at least
makes the two different now. Suggestions welcome.

Bug: T362771
Change-Id: I0f6a911df8772616ac50c1301f402f77dbe32089
2024-04-30 11:57:47 +00:00
jenkins-bot 29e8ba9ea0 Merge "Further delay search index build in ReferenceSearchWidget" 2024-04-30 10:49:17 +00:00
jenkins-bot 74b42ace80 Merge "Make ReferenceSearchWidget code a bit more functional" 2024-04-30 10:49:14 +00:00
WMDE-Fisch f0d7406811 Don't load ReferencePreviews when not enabled in the config
Includes a test and some improvements to the CiteHooks tests.

Change-Id: I0e9108d0d429ed9b7467f993441eefc2557c8e6f
2024-04-30 11:10:22 +02:00
WMDE-Fisch 963933ed33 Streamline ReferencePreviewsGadgetsIntegrationTest
Change-Id: If285c1f6fd8abc95e2f3ad393b443b8e8a5f4837
2024-04-26 12:38:18 +02:00
WMDE-Fisch 179d402344 Add ReferencePreviews config checks to Cite extension
PHP classes and test are somewhat copies from the Popups codebase.
Some refactoring was applied. More could be done. Not to sure if
this should happen more in follow ups though.

Could also reduce the complexity of checks on the JS side. Most of
these things can only change on page load. The only dynamic part
left is the anon user setting managed by the Popups extension.

Note, that I needed to add a new PHP config for here although the
other still exists and is needed in the Popups extension. This
will change, when the user settings code also moves.

I guess it's okay for now though. Both settings default to true
and are not overridden in the config repos.

Also needed to add the Gadget extension as phan dependency.

Bug: T362771
Depends-On: Ia028c41f8aaa1c522dfc7c372e1ce51e40933a5e
Change-Id: Ie6e8bc706235724494036c7f0d873f5c996c46e6
2024-04-25 12:50:27 +02:00