Commit graph

5265 commits

Author SHA1 Message Date
Ed Sanders 85a4e23008 build: Update devDependencies
Change-Id: I38b506d6e058f639e0e7d95c3e60616dbef5af10
2020-06-09 11:29:03 +01:00
Translation updater bot c7dbd173b3 Localisation updates from https://translatewiki.net.
Change-Id: I94b82d72727660edd4c9ac34f2566a5edce71ce5
2020-06-08 08:49:16 +02:00
libraryupgrader 406e871074 build: Updating mediawiki/minus-x to 1.1.0
Change-Id: Iaec553f11b2ccbd389d63e2a6d6e878d9ac40ee7
2020-06-08 05:54:15 +00:00
libraryupgrader 0dc25f2c5b build: Updating mediawiki/mediawiki-phan-config to 0.10.2
Additional changes:
* Removed phan-taint-check-plugin from extra, now inherited from mediawiki-phan-config.

Change-Id: I280ee7f72faecad666cb088be9950f9a5250c9c9
2020-06-02 10:51:05 +00:00
Translation updater bot ab2b0aff53 Localisation updates from https://translatewiki.net.
Change-Id: I66afc562eafdb21917139d8eecdeb333010c7401
2020-06-01 09:56:43 +02:00
libraryupgrader aaf5285571 build: Updating composer dependencies
* php-parallel-lint/php-console-highlighter: 0.4.0 → 0.5.0
* php-parallel-lint/php-parallel-lint: 1.0.0 → 1.2.0

Additional changes:
* Replaced "jakub-onderka" packages with "php-parallel-lint".

Change-Id: I9048d6c1c3af412109b67b78d431f4aab7c3060c
2020-05-31 00:39:30 +00:00
jenkins-bot ec71504b8d Merge "Sync unicode-bidi property for <sup> tags between Parsoid & core impls" 2020-05-29 21:00:33 +00:00
C. Scott Ananian 98d68bfa6e Use wikimedia\object-factory for extension objects; hook up ExtensionRegistry
Mediawiki prefers to use an object factory pattern when creating objects.
Use ObjectFactory consistently when creating objects specified using the
extension API.  Thanks to the 'allowClassName' option to
ObjectFactory::getObjectFromSpec(), this is mostly consistent with
previous practice.  Note that the string class name is short for:
   [ 'class' => Foo::class ]
and so we've chosen to rename the 'class' property in the extension tag
configuration so that we have (in long form):
   [ 'name' => 'Cite', 'handler' => [ 'class' => Cite::class ] ]
instead of nesting two keys named 'class' in a row.  (And besides, the
content isn't really a 'class' any more, it's an "object factory
 specification".)

SiteConfig::registerExtensionModule() can now take *either* an object
factory specification for an ExtensionModule object (including a bare
class-string) *or* the contents of the configuration array that
would be returned by ExtensionModule::getConfig(), in which case it
creates an anonymous ExtensionModule object for you.  It's expected
that the latter will be preferred in extension.json, but we use the
former for our internal extension implementations at the moment.

Finally, call SiteConfig::registerExtensionModule() on the results
of ExtensionRegistery::getInstance()->getAttribute('ParsoidModules')
when running in integrated mode.  This allows you to register your
extension with a clause such as the following in your extension.json:

(simple case, naming a class which implements ExtensionModule)
{
  "name": "JsonExtension",
  "manifest_version": 2,
  ...
  "ParsoidModules": [ "Wikimedia\\Parsoid\\Ext\\JSON" ]
}

(complex case, putting the configuration array into extension.json)
{
  "name": "Cite",
  "manifest_version": 2,
  ...
  "ParsoidModules": [
    {
      "name": "Cite",
      "domProcessors": [
	"Wikimedia\\Parsoid\\Ext\\Cite\\RefProcessor",
      ],
      "tags": [
	{
	  "name": "ref",
	  "handler": "Wikimedia\\Parsoid\\Ext\\Cite\\Ref",
	  "options": {
	    "wt2html": { "sealFragment": true }
	  },
	},
	{
	  "name": "references",
	  "handler": "Wikimedia\\Parsoid\\Ext\\Cite\\References",
	  "options": {
	    "html2wt": { "format": "block" }
	  },
	}
      ],
      "styles": [
	"ext.cite.style",
	"ext.cite.styles"
      ]
    }
  ]
}

The syntax above, with `ParsoidModules` as a top-level attribute, requires
I6c74938883376ec17f3790678b435585083a440f in core.  However, with or without
that patch, the following also works:
{
  ...
  "attributes": {
    "Parsoid": {
      "Modules": [ ... ]
    }
  }
}

Bug: T133320
Change-Id: I20f641a1ff032a6da3549b01dfaf8f4cf1eb5071
2020-05-29 12:18:36 -04:00
libraryupgrader c68575b73b build: Updating mediawiki/mediawiki-codesniffer to 31.0.0
Additional changes:
* Replaced "jakub-onderka" packages with "php-parallel-lint".

Change-Id: I62affe86473b9911f925c0f4147a0369ac00d221
2020-05-29 09:50:02 +00:00
Translation updater bot 9371bede25 Localisation updates from https://translatewiki.net.
Change-Id: Id36226ae038408de202d669ba2aaff6c9e83fdae
2020-05-29 08:31:56 +02:00
sbailey 0cac84e6b2 Fix Cite extension <ref> no name and no content error handling
* The html generated matches the spec:
  https://www.mediawiki.org/wiki/Specs/HTML/2.1.0#Error_handling
  data-mw errors format.

* The html generated also matches the spec:
  https://phabricator.wikimedia.org/T251842

Bug: T51538
Change-Id: I7b3a3ddd72abfab22b4565f7282f7ba95b246301
2020-05-28 10:53:21 -04:00
Translation updater bot 29ed9fe25e Localisation updates from https://translatewiki.net.
Change-Id: I70d4fdaceb03b45d1112e590df549dcc09ad80fe
2020-05-28 08:38:32 +02:00
Bartosz Dziewoński 1975cb3dcb Do not add thousands separators when formatting reference numbers
Bug: T253743
Change-Id: I8c4de963277895d7751d6bfe3c34ca6097ebe606
2020-05-28 00:08:44 +02:00
Translation updater bot 47b3d8fb1a Localisation updates from https://translatewiki.net.
Change-Id: I62a231242b630d67bc604d2ea16348ac4ae249ba
2020-05-27 08:48:09 +02:00
C. Scott Ananian 46f749b92f Use DOMUtils::hasTypeOf/matchTypeOf/addTypeOf consistently
The `typeof` attribute is a space-separated list.  Use consistent methods
to test for membership in that list.

Try to set a good example by using ::addTypeOf() in general to set the
value of the 'typeof' attribute, except when we are transferring values
from one node to another.

Move the *TypeOf method to DOMUtils from DOMDataUtils, eliminating some
duplication.  Create Wikimedia\Parsoid\Ext\DOMUtils so that extensions
can use these methods as well.

Change-Id: Ib2ef827ef1cf5e31a1ef0a5034cdd3d9a0212bdb
2020-05-26 23:57:18 -04:00
Arlo Breault a174963f3e Stop excluding MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate
Since we aren't excluding the other two, MissingDocumentationPublic and
MissingDocumentationProtected.

The stubs could be useful if we ever expanded on what these functions do
and doxygen probably gets the information from here instead of the type
hints?

Change-Id: Ie18c4f00ceca8f06b9c0f0a3359cb4077892f97d
2020-05-26 14:58:03 -04:00
Translation updater bot 2632c94964 Localisation updates from https://translatewiki.net.
Change-Id: I799e997b27bc5595da5e018b6bfc79e9ab9ff703
2020-05-26 08:35:18 +02:00
Translation updater bot 929ab04257 Localisation updates from https://translatewiki.net.
Change-Id: I41294360e0737cdc8c430f0a95cb85b5f5d0d0d1
2020-05-25 08:39:02 +02:00
Subramanya Sastry 12e2bf155c Sync unicode-bidi property for <sup> tags between Parsoid & core impls
* See T251983#6159540 for a more detailed summary, but these should
  have always been in sync in the first place.

Bug: T251983
Change-Id: I92d2ec19c70c31374fabc9540678b1bb6eb2728c
2020-05-22 16:45:37 -05:00
Thiemo Kreuz 7fbd5de7f5 Merge two code paths related to follow
This patch also adds a test case that was missing before. If a
follow="…" is followed by another, normal <ref>, the internal key
(a.k.a. $this->refSequence) is not incremented. This was the case
before, just not covered by any test.

Change-Id: I102d1e67a6918017acc7e4a4663b08c828d101a6
2020-05-12 10:52:08 +02:00
jenkins-bot 53cf713cdb Merge "Add test cases for impossible follow vs. rollback edge case" 2020-05-12 02:03:35 +00:00
James D. Forrester c35d47fe0b Use QUnitTestModule instead of deprecated ResourceLoaderTestModules
CI already ensures that VisualEditor is loaded alongside Cite, so
the defensive check in the code isn't needed; ext.cite.visualEditor is
defined statically, it's just injected into the page dynamically in the
VisualEditor code handling VisualEditorPluginModules.

Bug: T232875
Change-Id: Ie5e096feca92f9c3ef13c732f3f1ae491e2b7d03
2020-05-11 20:51:24 +00:00
Translation updater bot f09db41375 Localisation updates from https://translatewiki.net.
Change-Id: I2f64579ac40ba1fe952148c487b94cd4d5b82a03
2020-05-08 09:27:51 +02:00
Subramanya Sastry eb8e07c69c Sync up with Parsoid citeParserTests.txt
This now aligns with Parsoid commit 1e72ddefc2df8d5b38d7b370d67a87b48d8a09f7

Change-Id: Ic75ac33c92997427751d037339f7eb79027356a2
2020-05-07 12:14:19 -05:00
Translation updater bot 60528d51aa Localisation updates from https://translatewiki.net.
Change-Id: Ic0b1f2560a421368c7ffbf2d9367e048551a81e7
2020-05-07 08:33:58 +02:00
jenkins-bot fb4fddfb89 Merge "Add a newline in wikitext before autogenerated reflist" 2020-05-06 20:10:45 +00:00
Thiemo Kreuz 6389459b1e Refactor newline logic for auto-generated <references> sections
This change does have two effects:

1. Instead of prepending a newline individually in every possible
code path, we do it one time at the end. But only if there is
something in the output. This does not change anything, as proven by
the unchanged parser tests.

2. I removed the newline between the <h2> and the generated
<references> element. Note that both these elements are created in
the same method, next to each other. So there is no way this can
influence other wikitext. Unfortunately this code path is executed
only when using the *preview* function, and impossible to be covered
by parser tests because of this. However, it's covered by unit tests.

This refactoring is motivated by, but not required for T148701.

Bug: T148701
Change-Id: I6691c70f8e3fa3f21e2d11035bed9cdc2dc87093
2020-05-06 19:07:40 +00:00
Bartosz Dziewoński 3678215a77 Add a newline in wikitext before autogenerated reflist
Previously the reflist was added at the end of the last line of text,
which messes up paragraph wrapping (as seen in many test cases), and
generated invalid HTML when the last line was a list item (T148701).

(second try, previously reverted in 8c933d03c5)

Note this affects only pages where the <references /> tag is missing,
and the references section is auto-generated at the very end of the page.

Bug: T148701
Change-Id: Ib2101346434a4e317b5fc7379215b60c7020cb2b
2020-05-06 20:51:25 +02:00
Translation updater bot 49a9c0e787 Localisation updates from https://translatewiki.net.
Change-Id: Icbbaa73ed15949a3e0a46659cfa21a610c592fb9
2020-05-06 08:29:13 +02:00
Translation updater bot 7ae74d01cd Localisation updates from https://translatewiki.net.
Change-Id: Ic2f6378c88304ed8e9899eb2e68ee71de17de24c
2020-05-04 09:14:56 +02:00
C. Scott Ananian 51c211047a All extension DOM processors should extend Ext\DOMProcessor
Change-Id: Ide9700747b3ecea9da59911c6eb342569be4c9b8
2020-05-03 21:15:41 +00:00
C. Scott Ananian b4aefae357 Add extension registration mechanism to SiteConfig
This will be called by the ExtensionRegistry in core for extensions
that are Parsoid-compatible.  The set of registered extensions is part
of the SiteConfig, which bundles all the configuration for a particular
Parsoid instance.

In addition, renamed some classes to make things clearer:
`ExtensionModule` is the thing which is registered; it bundles a
number of `ExtensionTagHandler`s, `ContentModelHandler`s, and DOM
processors (which don't have a proper interface yet).  There are a set
of core handlers, which include wikitext, JSON, and a few extension
tags (<pre>, <nowiki>, <gallery>).

Change-Id: Iadbeb378bacb09264a4b1d3ee430a914eec23e48
2020-05-03 15:43:11 -05:00
Translation updater bot 0d09517071 Localisation updates from https://translatewiki.net.
Change-Id: Ie37f305997c342b3c27dd320752012b3d89c0f3e
2020-04-30 08:36:59 +02:00
Arlo Breault bb5f2fb93d Move DOMDataUtils::addAttributes to DOMUtils
Bug: T250888
Change-Id: Ia12bbe21c21b188a8b1fdc4b8cee0aa153d2b993
2020-04-28 13:30:56 +00:00
Translation updater bot cb336d203c Localisation updates from https://translatewiki.net.
Change-Id: Ifa4c3dd6633468bffd316fd8407c84e88876dc13
2020-04-27 09:02:16 +02:00
jenkins-bot 99d5ad6d36 Merge "eslint: Remove unused rules" 2020-04-25 18:50:07 +00:00
Ed Sanders bd8010c360 eslint: Remove unused rules
Change-Id: Iaba2e171da4a969454de1006883a5320a402d9c8
2020-04-24 22:19:27 +01:00
Translation updater bot fa9d22015a Localisation updates from https://translatewiki.net.
Change-Id: I05f76b5373e1b3ff1ab41ddebe64b318aa76be1f
2020-04-24 08:21:55 +02:00
libraryupgrader f819e6374c build: Updating dependencies
composer:
* mediawiki/mediawiki-codesniffer: 29.0.0 → 30.0.0

npm:
* eslint-config-wikimedia: 0.15.0 → 0.15.3
  The following rules are failing and were disabled:
  * mediawiki/class-doc

* grunt-stylelint: 0.14.0 → 0.15.0
* stylelint-config-wikimedia: 0.9.0 → 0.10.1

Change-Id: I5e285118302582daa288d0afc30860ab0693d332
2020-04-22 06:25:11 +00:00
Translation updater bot 137119e9b5 Localisation updates from https://translatewiki.net.
Change-Id: I7050e327b3278a4f82e3e61dd441cebbfed2e19e
2020-04-21 08:45:04 +02:00
Translation updater bot 71b01581d1 Localisation updates from https://translatewiki.net.
Change-Id: Ie59dd3aa412f74b1953538e7f8df2611367b959c
2020-04-20 08:40:49 +02:00
libraryupgrader ab2a68d8ec build: Updating grunt-banana-checker to 0.9.0
Change-Id: I4fac62c79bb08c5d09f16a1ad5fe003e2d357f21
2020-04-19 01:54:20 +00:00
Subramanya Sastry 5626d6ca62 ParsoidExtensionAPI: Add domToWikitext method + fix Cite to use it
* We only had a htmlToWikitext API method whereas we have been
  trying to stay in DOM land all along. With this change, extensions
  can use the intuitive domToWikitext method when they are dealing
  with DOM nodes.

* Renamed WTS's serializeHTML method to htmlToWikitext and added
  a domToWikitext method there as well which ParsoidExtensionAPI uses.

* Turns out that <ref>s were converting DOM to HTML and then using
  the htmlToWikitext method. I switched it use the domToWikitext
  method. However, turns out WTS requires a <body> element for its
  top-level method!

  For now, while we figure out if that can be changed to be more
  lenient, added an internal DOM -> HTML conversion in the
  domToWikitext method. When we fix WTS, this DOM -> HTML -> DOM
  roundtrip can be eliminated.

Bug: T242746
Change-Id: I340d5a363e0d1b8ed6d0ffb0234315e6d9523a76
2020-04-17 20:58:53 +00:00
Subramanya Sastry 18462e0458 Extension API: Adopt somethingToSomethingElse naming wherever possible
* Gergo's sensible recommendation to make the API more readable and
  easier to use.

Bug: T242746
Change-Id: I6ed1d4bb552a15b39552f24cd425dd4d63cce847
2020-04-17 20:58:50 +00:00
Translation updater bot 39772c09ba Localisation updates from https://translatewiki.net.
Change-Id: I49f7726f7f6fa3978577f3230d04241d02d9c98a
2020-04-15 08:23:17 +02:00
Translation updater bot 07f1833808 Localisation updates from https://translatewiki.net.
Change-Id: Ib798509e8a76d9cb4b814fddb9fe5db50c6785f4
2020-04-14 08:23:09 +02:00
Translation updater bot 53aefed04f Localisation updates from https://translatewiki.net.
Change-Id: If1003b56d6b13b67e91f29ffd173741761303c32
2020-04-13 08:59:45 +02:00
Translation updater bot 0bcf661e07 Localisation updates from https://translatewiki.net.
Change-Id: I580fe5cd8a2ac0ee393b27d47565cb159ae34ad5
2020-04-09 08:38:28 +02:00
Translation updater bot 013fff9c9b Localisation updates from https://translatewiki.net.
Change-Id: Ie3c50e679bb38cb16a6dc5601621f1597c0d7613
2020-04-07 08:37:41 +02:00
jenkins-bot 06190bbab7 Merge "Localisation updates from https://translatewiki.net." 2020-04-06 07:24:26 +00:00