Commit graph

59 commits

Author SHA1 Message Date
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 8aa889dbe6 VE square brackets appear in a span
Some wikis such as eswiki and frwiki prefer to hide the square
brackets by default.  Adding a selector-friendly DOM element around
the brackets supports this customization.

This makes it possible to hide the brackets with CSS:

  .cite-bracket {
    display: none;
  }

And it also becomes possible to hide the brackets but make them
appear in copy-pasted article content:

  .cite-bracket {
    font-size: 0;
  }

Bug: T370512
Depends-On: I56b52c399d2c76689fdcb0bc7fd50a8c0ced28fd
Change-Id: Id8684ccee2e6725af2c861da20fc31af1067e614
2024-07-24 12:31:00 +02: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
WMDE-Fisch 15bcfdcc70 Implement support to convert extended notes with auto names
To make sure also the parent gets a name even if it is not re-used
we need to iterate the list of reference to see if there's at least
one child that matches the parent.

The rest will be taken care of by getUniqueListKey that makes sure
that the matching temporary names will result in matching literal
names.

TODO:
- Write a ve.dm.Convertor test which shows the auto-name being
added.

Bug: T367031
Change-Id: I6ef42c8ffc8a4ff9224bfb2a910682d2c44f0dd2
2024-06-14 13:05:52 +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
thiemowmde 81f774c789 Don't call things "attrs" that aren't mw.attrs
mw.attrs does have a special meaning in this code. Together with
mw.body it reflects 1:1 what was written in the original wikitext
in the <ref …> and <references …> tags. Let's avoid using the same
(or almost same) variable name for other kinds of attributes.

Bug: T363096
Change-Id: I3e599ab910b9639e121f9b9d532b0f57f08f1e73
2024-05-13 18:37:17 +02:00
thiemowmde 790b46d41f Reduce minor code duplication in MWReferenceNode class
Parts of this was already done via I3edf0df.

Change-Id: Id71904ab9387c114b15757d35442e6e6632e87f2
2024-04-30 14:02:43 +02:00
jenkins-bot 18635f501d Merge "Unify and streamline code working with mw.attrs" 2024-04-30 10:39:01 +00:00
jenkins-bot cb725645ea Merge "Fix broken deletion of non-existing <ref refGroup="…">" 2024-03-13 16:37:43 +00:00
thiemowmde ae786bc2ef Fix broken deletion of non-existing <ref refGroup="…">
This can be quite confusing:
* A node does have attributes. One of the attributes is called
  "refGroup", another one "mw".
* mw contains a JSON structure with just a few elements, most
  notably a "body" and an "attrs" element. These reflect what was
  originally written in the wikitext.
* mw.attrs reflects the original properties a.k.a. attributes from
  the <ref …> or <references …> tag.

Deleting mw.refGroup doesn't do anything because the attribute is
called <ref group="…"> in the wikitext, not <ref refGroup="…">.

You can actually see this bug in action on all wikis: Go to a page
that uses references in non-standard groups, e.g.
https://en.wikipedia.org/wiki/Historic_Cherokee_settlements
Start VisualEditor. Find e.g. the [notes 1] reference. Edit it
and change the group from "notes" to "General references". Click
"Publish…" and "Review" your changes. The visual diff works because
it apparently uses other information. The wikitext diff is empty.
This is also what's saved: nothing. The edit is lost.

Bug: T359943
Change-Id: I798605d2fd60a6b8f317ec85a4e4d08fd245e084
2024-03-12 14:44:00 +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 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 7151077e5f Unify and streamline code working with mw.attrs
I find it very helpful to use the name "mwAttrs" specifically for the
mw.attrs thingy that contains the original key-value pairs from the
wikitext.

An alternative is to use ve.getProp, which is helpful in other
situations.

Change-Id: I3edf0dfe5b9629fcda0bf8cb3b734215377a5c77
2024-02-21 13:52:12 +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
Ed Sanders b4b6dbba95 VE: Update group ordering when node is converted from placeholder
Logically depends on I45c7ab5fe5cd.

Bug: T332799
Change-Id: I143fa0d45572677d09320fff88076a53253ad714
2023-10-16 15:48:41 +01:00
mareikeheuer 1eb405eb54 Convert Cite extention to ES6
Bug: T343220
Change-Id: I769f0bfaa5af14d6ea4861ea738b44c98feb6193
2023-08-23 12:39:29 +00:00
Svantje Lilienthal 227b50d964 Adding extendsRef to reference model
* reads the new attribute extends from wikitext
* saves it into the reference model
* adds a message to the VE popup of an extension as a first demo
* tests will be added in a separate patch

Bug: T247922
Change-Id: If4d309c4678022642f39e21565950dc45e557d47
2023-05-30 11:56:47 +02: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 1e6968b5c0 ve-cite: Ensure references are always unique by generating originalDomElementsHash
This is a bit of an abuse of the originalDomElementsHash property.
In future we could add a 'uniqueId' attribute, but this would need
to be ignored in a few places in core.

Bug: T299378
Change-Id: I7d1eb362aeb74ba93f5225330226a95535746b92
2022-01-27 01:14:52 +00:00
Ed Sanders a2c927f8b8 ve-cite: Handle ref nodes with mw:Error RDFa
Bug: T299378
Bug: T299672
Change-Id: I7bc7dfb4fb9c0c9b140b793e6e0b2d00b7fe67e0
2022-01-21 00:00:34 +00:00
Ed Sanders 1a2ae0682f ve-cite: Use proper method for comparing linear data (attempt 2)
In Ifb0ba3caf8d we removed this reference equality check and replaced
it with a deep object comparison, however due to the fact that
hashes for MWReferenceNodes were simplified in I8c26686d7b to
improve visual diffs, this resulted in a overly simplified comparison
that couldn't distinguish references with the same "name".

Instead do a deep object comparions of the standard node hash object.

Tests added in Ia0bbd40528 assert that this doesn't result in the
regression that caused T296044.

Bug: T296086
Change-Id: I7b37fb54e14bfe28a07f722a2c45fd4e4a2d44f2
2021-11-19 14:24:42 +00:00
jenkins-bot ea7f9bf0d3 Merge "Revert "Use proper method for comparing linear data"" 2021-11-19 00:59:20 +00:00
Bartosz Dziewoński 4fcc4bc42d Revert "Use proper method for comparing linear data"
This reverts commit bad697bd32.

Bug: T296044
Change-Id: Ie442e482aa3b60754fe457d835c4cf6400f42d94
2021-11-19 00:35:28 +00:00
jenkins-bot cc111ca5fd Merge "Move eslint client config to modules, fix warnings" 2021-11-09 18:14:37 +00:00
jenkins-bot a11cf9858c Merge "Move var declarations inline" 2021-11-09 18:14:35 +00:00
jenkins-bot a90c67b6e8 Merge "Use proper method for comparing linear data" 2021-11-09 14:00:01 +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
Adam Wight 3c02ee38b2 Clean up javascript code smells
These were discovered using SonarCloud.

Change-Id: Ie36fa248e4b395bb97b8969ece6688ec055afb55
2021-11-03 12:28:07 +00:00
Ed Sanders bad697bd32 Use proper method for comparing linear data
Previously we checked the elements were reference-equal
which is fragile and breaks when linear data freezing is
enabled in debug mode.

Change-Id: Ifb0ba3caf8d3e5a67c9694358cac12cc412fe723
2021-11-02 23:15:13 +00:00
Ed Sanders c763fb5cc3 MWReferenceNode: Ignore changes to reference list index
This means that all reference nodes are treated as comparable
in the diff (provided they are in the same group) so will
not show up in the article diff if their index changes.

Changes to the reference list are already handled separately
by the visual diff.

Bug: T170235
Change-Id: I8c26686d7b2fe3bf91af7d4dcab1caf3247dbe47
2021-01-21 14:40:15 +00:00
Bartosz Dziewoński 72f79aae3b Add "reference" class to references in VisualEditor
* Add it to CE HTML, for compatibility with site styles.
* Add it to DM HTML of newly created references only. Existing
  references just use whatever classes we got from Parsoid, to avoid
  unnecessary DOM changes and dirty diffs.

Bug: T265930
Depends-On: I61a2132f3876e2d9567d985358f51eb51c479813
Change-Id: I9d6856f03071c09617b8ae7db938135a3e30fe8e
2020-11-06 18:04:13 +00:00
Ed Sanders 8e3bc8cb2c Match line-breaking whitespace in reference names
Bug: T263698
Change-Id: I436b0fbf1756e08fe9ff9013aff7479d5ec653f6
2020-09-24 20:29:00 +02:00
Ed Sanders e66dd259e6 ve.dm.Node: blacklistedAnnotationTypes -> disallowedAnnotationTypes
Bug: T254646
Change-Id: I38f8c1a8259c2ca1ae1ea4d4ce374fc39f46f676
Depends-On: I8e23231bf4ff4022a85b4dfe214184fbb3543fce
2020-06-12 10:13:19 +00:00
Ed Sanders 85a4e23008 build: Update devDependencies
Change-Id: I38b506d6e058f639e0e7d95c3e60616dbef5af10
2020-06-09 11:29:03 +01:00
Ed Sanders 2f3fc5594d Render placeholder citation as […] to show it isn't finished
Bug: T220502
Change-Id: I11f2aea22d9b9c83d7a642e86e0c2f4c2fb3a430
2019-04-23 14:34:43 +00:00
Ed Sanders 817bfbfa54 Avoid jQuery in ve.dm.Model.static.describeChange(s)
Change-Id: If30d12289eff66470044931ea5b38d2b81d04075
2018-09-28 10:55:45 +01:00
Thalia 2c77a9d66a Get document data using updated interface
Depends-On: Iea426be573f07c976b0c142357d5ed83e51db013
Depends-On: I36dad61ed614f007b16d7e9f47fcbfd02347f239
Change-Id: I9d9615f69d40822a72f31f0d86d7997dd0812523
2018-07-29 00:07:28 +00:00
Ed Sanders 3b53f6906b Use getHtmlMessage for DiffElement
Bug: T195243
Depends-On: Ib4ad16858e4241d33d018830dbcfded63ff703af
Depends-On: Ib5fa39e4f2f529948354b03a141542e23d169fe0
Change-Id: I4b01904d48a9520c8bb1451e0978aaa404ca858c
2018-06-20 15:31:46 +00:00
Ed Sanders 8487745c55 Don't compute ref contents in converter preview mode
Depends-On: I0f1b90056e9d1a4fa0e188700604709297593924
Change-Id: I7f98d7b6609c896f91a6d256d58aeb2ff53bc181
2018-04-30 17:47:43 +01: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
James D. Forrester be1f7c0b74 VisualEditor: Use reflist diff i18n for reflists and ref ones for refs
Change-Id: Ieb3f1a30c1777f11a7334423156df4c9fdb9d79f
2018-02-22 16:00:36 -08:00
jenkins-bot 6b1e7e126f Merge "doc: Bump copyright year" 2018-01-03 19:18: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 366d44926a MWReferenceNode: Generate 'sup' tags by default
Bug: T45094
Change-Id: I8973328095f36cce2cebbf335ee7421187eedfad
2018-01-02 15:39:08 +00:00
Thalia ed8b563add VisualDiff: Show less information about ref nodes
If a ref node is highlighted as changed because its index
has changed (e.g. because an earlier reference was inserted
or removed), describe this more elegantly.

Bug: T170235
Bug: T171377
Change-Id: I2513bb82099a92529516e4e217e61a2d0a2dd43b
2017-09-05 14:01:39 +01:00
Thalia 1a5d90b4e3 Visual diff: Show correct reference indices in diff
Bug: T162819
Change-Id: I7eec4ee12a24ff99388cc0c95a24d50f321511f9
2017-06-26 19:19:03 +00:00
James D. Forrester 9a17d9342b Describe group changes for references and references lists
Bug: T160589
Change-Id: Ifccafdf08704f67027dae2703ff2ded809fb6ab7
2017-05-20 14:26:58 +00:00
jenkins-bot e5c5886287 Merge "doc: Bump copyright year notice, 'team' name" 2017-04-20 23:24:51 +00:00