Commit graph

56 commits

Author SHA1 Message Date
Adam Wight 8534007aee [bugfix] Guard against out-of-order destruction
For unknown reasons, some of the event handlers in the reflist class
can be called when the model is already partially destroyed.  I
removed some guard logic in I0809df9d3c24fdd5fe which turns out to be
necessary, so I'm adding it here explicitly.

To reproduce the bug, try deleting the reflist in VE.

Bug: T375049
Change-Id: I33e6526cdf535eddaaf8ae506243a5898bd15676
2024-09-18 09:32:24 +02:00
Adam Wight e3398577c1 [refactor] InternalList isn't state
We've almost finished decoupling, and the last remaining usages of
InternalList can be inlined.

Change-Id: I0809df9d3c24fdd5fe4c628420d0406e012a3259
2024-09-03 11:34:47 +02:00
Adam Wight 35e8af7d40 Clean up reflist usage of MWGroupReferences
Switch this usage entirely to the new interface, moving much of the
junk out.

Bug: T372871
Change-Id: I445af469a823144b0b6fa5e6f4f23a858939e9e6
2024-08-28 07:45:39 +02:00
Adam Wight ab7d60ca05 Show specific error message in reflist when parent is missing
Bug: T372871
Change-Id: Idce84adc0100dfd73f02611f2825f3be1d2da223
2024-08-26 12:33:12 +02:00
Adam Wight 6e03d2cafa Moving ref group knowledge into a dedicated data structure
Pushes per-group knowledge down into a structured object and give it
an interface, separated from the singleton cache across all groups.

Also changes the behavior of orphaned subrefs so that they're still
rendered as subrefs, with an error placeholder where the parent
should be.

Bug: T372871
Change-Id: I84e679a8365f3fbfabaf344d99f56f6d069c0776
2024-08-26 09:26:15 +00:00
Adam Wight baedd6c44c Rename function to getIndexLabel to clarify that it's presentation
Bug: T370874
Change-Id: I2e00aca86d2a97f8dff11b742e010ef117b5522a
2024-07-30 12:05:25 +00:00
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
Adam Wight 2748f659a8 Render subrefs indented under parent
With this patch, we show reflists in a hierarchical view with subrefs
listed under their parent.

TODO in follow-up patch: numbering of subrefs is still incorrect.

Change-Id: Ia82658af72caebd29241b9bd329d236ddc3f1e6d
2024-07-02 09:20:53 +00:00
Adam Wight d03d2d8d20 [refactor] switch reflist rendering source of truth
Pure refactor which shouldn't change output in production.  Switches
to interfacing with MWDocumentReferences to get refs in index order.
Temporarily suppresses any subrefs, we only show top-level refs.

Bug: T247921
Change-Id: I9c8347b064173027f436722c87e15e0381c958bd
2024-07-02 11:20:16 +02:00
Ed Sanders 66fb3e661a Fix some documentation warnings
Change-Id: I7a97c99a919796f987a05ba17e25357fb5ef14c5
2024-06-21 18:00:45 +01:00
Adam Wight a2eec914cd [refactor] Split out reflist item rendering
Should be a no-op.

This change is made to prepare for recursively rendering subrefs.

Bug: T247921
Change-Id: Iebf546743c29a4a591ec1f085cc2e1b3496a38fa
2024-06-19 12:29:50 +02:00
jenkins-bot 20c6967f76 Merge "Preserve reflist CSS in dynamic mode" 2024-06-06 18:00:29 +00:00
Ed Sanders 5a2154de38 ESLint: Enforce prefer-arrow-callback
Change-Id: I8d96b69e8c15bc8ad84cfb0c511396e5b3e7ac20
2024-06-03 12:31:33 +01:00
Ed Sanders 5ef2c13c48 Preserve reflist CSS in dynamic mode
Bug: T361359
Change-Id: I4c48129a54103f47ce512d685d2ab4b3c188a5b0
2024-03-29 13:04:40 +00:00
jenkins-bot f4c690fa1a Merge "ce.MWReferenceListNode: Only open dialog on unmodified left clicks" 2024-03-28 16:14:32 +00:00
Ed Sanders d368f45c17 ce.MWReferenceListNode: Only open dialog on unmodified left clicks
Change-Id: I06f6e2cc89f595e6dcc931b78c908ff2270e4629
2024-03-28 15:30:43 +00:00
jenkins-bot dbff601ebf Merge "Remove obsolete @method annotations" 2024-03-18 10:00:17 +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
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
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
mareikeheuer 1eb405eb54 Convert Cite extention to ES6
Bug: T343220
Change-Id: I769f0bfaa5af14d6ea4861ea738b44c98feb6193
2023-08-23 12:39:29 +00:00
jenkins-bot dc243e48aa Merge "Streamline/minimize duplicate code in reference node classes" 2023-05-23 14:09:22 +00:00
thiemowmde edcb4ddd0b Streamline/minimize duplicate code in reference node classes
E.g. reducing indention and utilizing convenient jQuery features.

Change-Id: I08fe9d4a09630042b28fc5e35cab4460be44a0d9
2023-05-23 10:54:56 +00:00
Ed Sanders d107f3d5a8 Fix ref list click-to-edit on mobile
On mobile, the first action is always 'mobileActions', so
ignore it.

Bug: T54750
Change-Id: I06e3f6225bf7a185680d89dee5b204a19a7a4fd7
2023-05-22 18:22:05 +01:00
jenkins-bot c9abd842a5 Merge "Add missing space to reference list rendering" 2023-05-20 10:29:49 +00:00
Ed Sanders 744cbdb56b Launch reference editors from ve.ce.MWReferencesListNode
Bug: T54750
Depends-On: I502358a3229fbda44950f7f7513548d49d25e0c9
Change-Id: Idea26ffbc5ee859f6ad9456029af4180226c1a07
2023-05-17 16:05:02 +00:00
Ed Sanders 8587e445a1 Render reference list on first load in idle callback
This means the reference list is always in sync with the model's
understanding of which references are available to edit.

An exception is left in if there are no references in the model
at all, as will be the case on he.wiki, as all references are
template generated. In this case we continue to use the Parsoid
DOM, so that there is a static rendering of the reference list.

Bug: T336865
Change-Id: Iaf1089c9de532e7749c9cb70a9e697917955dca8
2023-05-17 13:34:15 +00:00
thiemowmde e4e1a38e1e Add missing space to reference list rendering
Minimal test case:
 <ref name=a>a</ref>
 <ref name=a/>
 <references/>

This renders as "1. ↑ 1.0 1.1 a" in both the legacy parser as well
as Parsoid. The moment you start editing this in VisualEditor the
space before "a" disappears. This patch fixes this inconsistency.

Change-Id: Idfea1a445fc98a0433640b4f706fafcc4e236c18
2023-05-16 15:43:16 +00:00
thiemowmde ce63522726 Fix wrong "this reference is used twice" in VisualEditor
This patch also updates a second place that does almost the same.

That other place also excludes placeholders. We intentionally don't
do this in this new place.

Bug: T241885
Change-Id: Ib003b8a7bbe247db6f7da0a4efcfd4e5967fd033
2023-04-12 15:19:11 +02:00
Ed Sanders 59d900d951 ve-cite: Show $originalRefList even if there are no refs in the model
This original use case at T187495 is for he.wiki, where it is likely
that all the references are defined in templates, so the model
will always be empty, even though $originalRefList is populated.

Change-Id: Ia2785a20bf82ab97466276a57936bc9299e1cabe
2023-02-22 17:19:22 +00:00
Ed Sanders 84489c15b3 Don't attach DOM nodes from the DM store to the main document
Bug: T298147
Change-Id: I194ff1d576547dc717c523a490083fbcf903d87c
2021-12-21 20:32:05 +00:00
Ed Sanders 0d4bb626f1 Move eslint client config to modules, fix warnings
Change-Id: I86857b82fa7d5c47c0056da4ad270fcb2a4d965f
2021-11-03 16:38:31 +00:00
Ed Sanders cf95dbd4be Move var declarations inline
Change-Id: I824a65e72a72e5acf65c54a63299469f7acb649d
2021-11-03 16:38:31 +00:00
Bartosz Dziewoński 28a8739ce5 Show empty reflist message on initial load and after switching too
The message was only shown when a new reflist was inserted, or when
any references were changed.

Bug: T284472
Change-Id: I7c1e981c93bf7e163f9fb747aad30a24e9a497f1
2021-08-24 12:24:07 +02:00
Ed Sanders 299e5d3655 Avoid exceptions if node teardown happens before setup
Change-Id: I7f55091023a3c0e92ce216e51f24bbc423f136c7
2021-06-03 22:50:44 +01:00
Adam Wight fe7356622e Extract backlink formatting into a function
No-op, prepare for reusing this code in subreferences.

Bug: T243278
Change-Id: I8ad9778b0fecd462ff18eccbe86885dd6fc21c76
2020-01-24 09:03:17 +00:00
Thiemo Kreuz d622356a73 Remove dead extra comparison from VE JavaScript code
The first code snippet in this while already covers this case. The loop
will end the moment it can't find another parent any more.

This was found via
https://sonarcloud.io/project/issues?id=mediawiki-extensions-Cite&types=BUG
as a potential bug. After looking at the code I'm sure it's not one.

Change-Id: Id914252c88b27420dfa47dcc918fc58d9ee2a65d
2019-05-17 13:48:37 +00:00
Ed Sanders 475d825918 Use MWPreviewElement in view mode, instead of building a view node
Also "unwrap" paragraphs using CSS instead of DOM manipulation.

Change-Id: I5565c2c43580d5d47bc65ee06d9d14fccace90c6
Depends-On: Ibbf989dcebf2d21fd2ac481f17062f366ff29e41
Depends-On: I284bcd5dd25cdbb883427ebacb41af1bbf50b60f
2018-05-13 20:01:19 +01:00
Ed Sanders 2ae4cfe0ab Use ve.ce.nodeFactory.createFromModel
Also use ve.dm.nodeFactory.createFromElement

Depends-On: I259face33154b795143c8820abdfb6b4a495f141
Depends-On: I7fc539f75a1c9d672efc139b7884ecdfdff5f301
Change-Id: I032182616c409e65138b16fe7b238e7f7b3a8710
2018-05-11 17:08:12 +00:00
Thalia a2722ca947 Add separate message for missing reference in references list
Message indicates that a preview of the reference is missing,
instead of implying that the user was trying to edit it.

Bug: T188682
Change-Id: I5f5f8d5d0910ab2608696bbed380d4592cb6c7f1
2018-03-24 17:32:55 +00:00
Thiemo Mättig bbc1f2c91d Use standard form for @license tags
See https://spdx.org/licenses/

Change-Id: Ic091ebc3844abcd6de90b3241382fb4732200a6d
2018-03-20 03:18:37 +00:00
David Chan 21e1fc5742 Follow-through rename of originalDomElementsIndex->originalDomElementsHash
Bug: T188900
Change-Id: If2b908acc634253c35b220f267bcca648f45310b
Depends-On: If60d0c637fe92f0e7afe916c064fafb17980d063
2018-03-06 21:00:35 +08:00
Ed Sanders e8dd5fed93 MWReferencesListNode: Guard against run-after-teardown
Change-Id: Icea7580d04d7093ab2b27b2d757e625d7559b94c
2018-02-28 17:35:53 +00:00
jenkins-bot 1881fff06b Merge "Render reference list from originalDomElements until modified" 2018-02-26 17:22:26 +00:00
Ed Sanders caaa3551c4 Avoid jQuery.parseHTML
Bug: T187713
Change-Id: I1fd569ba0624d8d25c5ac89d35c27b1bdc2397a7
2018-02-19 12:20:21 +00:00
Ed Sanders f739008cbd Render reference list from originalDomElements until modified
This helps on wikis where there are no real refs because they
are template-generated, and is a performance improvement elsewhere
as re-rendering long ref lists can be slow.

Bug: T187495
Change-Id: I47a9206ff7ee61f8fd716dc7658b8bfad927f656
2018-02-15 21:20:16 +00:00
Ed Sanders f1d1cf38f5 Render ref list from CE node when converterting for clipboard
Bug: T186407
Depends-On: Iee635eaf42e3780da4e46e3c0f12417aa331655b
Depends-On: I1500f42dc0bf761f495e25c2d3d047157292df7d
Change-Id: Ia3b2549eb246fc0af56446a7d6a32ec0f54f4099
2018-02-06 16:47:07 +00:00
James D. Forrester 0999d771b6 doc: Bump copyright year
Also make the overly-terse statement clearer.

Change-Id: I752bb82444bf7cb41480076bace42331dc35a598
2018-01-02 17:05:50 -08:00
Ed Sanders a3a4bd945b VE: Support 'responsive' attribute
Bug: T53260
Change-Id: I1e0ae39e8c30653b7ba0f537723a4bcd79ac3162
2017-09-19 17:03:39 +01:00
Ed Sanders a024a7d2c6 Debounce reference list updates
Ideally update wouldn't be called multiple times
for simple transactions, but this should prevent
unnecessary updates if that does happen.

Bug: T176066
Change-Id: I1e7a21c19cee7d50ca160749f243c57f2fb08bab
2017-09-18 14:08:48 +00:00