Commit graph

167 commits

Author SHA1 Message Date
gerritbot eae3c3c1c5 Update UserOptionsLookup's FQN
User-options related classes are being moved to the MediaWiki\User\Options namespace in MediaWiki Core; reflect that change here.

Bug: T352284
Depends-On: I9822eb1553870b876d0b8a927e4e86c27d83bd52
Change-Id: Ifb380012959b5b2853586cd25b0d003b53dc38eb
2023-11-29 12:41:16 +00:00
Bartosz Dziewoński d80a8a6abc ApiVisualEditor: Remove unnecessary checks
According to EventLogging 'editattemptstep' data the error hasn't
happened in the last 90 days.

It probably can't happen since we switched from RESTBase to direct
Parsoid access, but keep the checks as assertions just in case.

Change-Id: I0bad1e4364c2f1b154383bc1a984c4ccc83e1700
2023-11-03 17:05:08 +01:00
Bartosz Dziewoński dcfe952a3f ApiVisualEditor: Pass section to IntroMessageBuilder
Depends-On: I58b90d8e70d538d897d3130ead114d2522ecb703
Change-Id: I205d18b65224acef4f76fb5625bff3bbf002ece6
2023-09-19 20:14:15 +00:00
Bartosz Dziewoński 764e223260 ApiVisualEditor: Check permissions of the temp user if we will create one
Bug: T342770
Change-Id: I9f616ae754e014ae0ab5e3d0d62f5e4211399317
2023-08-22 21:41:08 +00:00
Bartosz Dziewoński 59a665c424 Acquire a temporary user username before previewing
Abortable promises are definitely among my least favorite things.
It takes all of this bookkeeping to make .abort() work consistently
(so that it always aborts a request if one is in flight, and always
causes the final promise to be rejected even if we didn't start a
request yet or it has already finished). But, if you squint and ignore
every line with the word "abort", it's like a normal promise chain.

Depends-On: Iec8a15dadd595bed0f7e54f907fbb8e192b45cf3
Bug: T331397
Change-Id: I67309c79e6d211d69630fe89cbf5402f8fbd350c
2023-08-22 23:40:55 +02:00
jenkins-bot f7805033d0 Merge "Use namespaced MediaWiki\Language\RawMessage" 2023-08-20 01:07:42 +00:00
Umherirrender 12856f5988 Use namespaced MediaWiki\Language\RawMessage
Bug: T321681
Change-Id: I5d32b7c419afdf10585cfb68bd558de1eebc9a18
2023-08-20 02:07:00 +02:00
Umherirrender dfc3173f21 Use namespace MediaWiki\Request\DerivativeRequest
Bug: T321681
Change-Id: Ib2a1797808c9c973efee198f583b9282779f7a7e
2023-08-20 01:40:59 +02:00
gerritbot d5cc6fc32a Replace some moved Title class uses, now MediaWiki\Title\Title
Bug: T321681
Change-Id: I1bb6e39d33b2bdb00fbe70fec0bcca1d71ad3a17
2023-08-19 12:17:42 +00:00
Umherirrender 9b4c433cd8 Merge SkinTemplateNavigation::Universal hook handlers
- The code in the hook handler is more related to the hook and the
  structure of the $links array as to the special page.
- Loading another class to process the hook is not necessary.
- Allows better migration to new hook handlers (special page classes and
  hook handler should be separated).
- Replace SpecialCollabPad::getSubPage with
  SpecialPageFactory::resolveAlias.
- The local url to Special:CollabPad is now in the content language
  (only relevant for non-english wikis).

Change-Id: I82985a8ba129b4e336cee337af31452e804090b3
2023-08-15 20:39:10 +02:00
Ed Sanders f99c580aff Always use the strict equality flag when using in_array
Change-Id: Ic9d4d97cc95baf2b312a6a1d83b58ab410bcf504
2023-06-07 13:26:10 +01:00
Bartosz Dziewoński c37633bb83 Hide 'editnotice-notext' message in VE (and mobile apps)
Bug: T337633
Change-Id: I142edff12492e80b9c281353e6a53efc3339159c
2023-05-29 02:07:19 +00:00
Bartosz Dziewoński a88084509d Use edit intro messages and preloaded content from MediaWiki core
Use MediaWiki core helpers to provide intro messages (including edit
notices), initial page content, and CSS classes for the edit area.

The following intro messages were previously unimplemented,
and will be shown now:
* 'sharedupload-desc-create'
* 'sharedupload-desc-edit'

The following intro messages were previously unimplemented,
but they only apply to pages where VE should never be available,
and will be shown now when editing those pages with 2017WTE:
* 'code-editing-intro'
* 'talkpagetext'

The following intro messages were previously unimplemented,
and are now explicitly skipped:
* 'editpage-head-copy-warn'

The following intro messages were previously unimplemented,
but they only apply to pages where neither VE nor 2017WTE should
ever be available:
* 'userinvalidconfigtitle'
* 'usercssyoucanpreview'
* 'userjsonyoucanpreview'
* 'userjsyoucanpreview'

Depends-On: If0b05710cb52a977bf4e85947d72d68683a0a29e
Bug: T201613
Change-Id: If26e39e383b983f7ee834ed6dd73b80e0545b068
2023-05-16 02:34:35 +02:00
gerritbot a6c5082fa3 Update moved class EditPage
See T321882. Moved in Ibefc44eb64aed

Bug: T321681
Change-Id: I5faaf6c59e96154eba0a4b199e47ecef49a89c72
2023-05-06 21:21:44 +00:00
Bartosz Dziewoński 37ab4c2a80 Expose automatic temporary user info in the API
Depends-On: I62b4bb630decac92cbb8c7ddf00307df0dadb516
Bug: T332435
Change-Id: I84ce108b4d46b4e19fad032382f8b69a1b0065d5
2023-05-04 00:44:10 +02:00
Martin Urbanec c4839e21fb ApiVisualEditor: Support preloading from i18n messages
The `preload` parameter currently does not work with i18n
messages, as pages representing those messages are known, but
do not exist. Resolve this by running any NS_MEDIAWIKI page
through wfMessage() first.

This feature will be used by Personalized praise in GrowthExperiments,
which requires the preload from i18n messages capability. As a benefit,
it also makes it easier to create i18n'ed preload-based systems
(one can create MediaWiki:Foo, MediaWiki:Foo/cs and MediaWiki:Foo/de);
MediaWiki will select the best language version automatically.

MediaWiki core equivalent is uploaded as
I693bcaf71d7b8557c63538a426d7a6bd4c3edf3d.

Bug: T330337
Change-Id: I961ff7ae2263e61161e686107d80bdafa3fe3c32
2023-05-02 20:06:15 +02:00
Bartosz Dziewoński d7521704a1 Remove some redundant PHPDoc comments
More could be done, but these are the ones that annoy me the most,
and I'm not willing to do more changes right now.

Change-Id: Ia02af09d631fea191e57da75420f0d2d1ed46c19
2023-04-24 21:11:26 +02:00
James D. Forrester bc7db78906 ApiVisualEditor: Support Special:MyLanguage for editIntro param too
Bug: T334855
Follows-Up: I43f461e9f595c364ecdaf2faccbd580fc0df6799
Change-Id: I106941f827d1dd246733d72989bbe9504c221c6f
2023-04-19 19:20:27 +00:00
jenkins-bot a584e73975 Merge "Remove usage of User::isBlockedGlobally and User::getGlobalBlock" 2022-11-16 15:22:09 +00:00
csimiyu 4bdb4917f0 Remove usage of User::isBlockedGlobally and User::getGlobalBlock
Bug: T318898
Change-Id: I727cda9008866b665395cd0e9969c920dc9c28d6
2022-11-16 17:22:17 +03:00
daniel 7da2df9724 Collect timing metrics for ParsoidClient
We want to be able to measure how backend performance changes
when we switch from RESTbase to calling Parsoid directly.
We expect to see a performance boost, in particular for
html/to/wikitext, since we avoid the network overhead.

Since we will make the switch by wiki, we need to be able to compare
the metric before vs. after for a single wiki. So, this adds the
wiki ID as a prefix to all existing metrics. Once fully rolled out,
we should get rid of the wiki prefix.

We will need to update the dashboard found at this url:
https://grafana.wikimedia.org/d/000000249/edit-stash?orgId=1

Change-Id: Iac9070b27f4b0d25b0e31c9fad38abc08c433a28
2022-11-15 01:15:28 +00:00
Bartosz Dziewoński d2e49b16f7 Use RevisionLookup methods instead of ApiParsoidTrait methods
Part of my secret plan to delete ApiParsoidTrait.

* Inject RevisionLookup into ApiVisualEditor
* Use RevisionLookup::getRevisionById instead of ApiParsoidTrait::getValidRevision
* Use RevisionLookup::getRevisionByTitle instead of ApiParsoidTrait::getLatestRevision
* Use standard MediaWiki error messages
* Delete unused ApiParsoidTrait::getValidRevision
* Delete unused ApiParsoidTrait::getLatestRevision

Depends-On: I7244ee4916fb011fad5faa1d9f837e83f6ac2dc1
Change-Id: I8089c0c516d9dba52e931a0a80740c0361216dbd
2022-10-11 14:54:40 +00:00
Derick Alangi 1746b76129 ApiVisualEditor: Remove parsedoc VE paction
This VE paction was removed in I90d775dd71d5f5a61d651b63d946ab60a27e2ca3
so this code can be deleted per Bartosz, so this patch removes the code.

NOTE: A merged API test that uses this is also removed along side.

Change-Id: I4ff75df57fd58f508ef7212486e52cb11a7cfb57
2022-10-03 14:12:35 +01:00
daniel 1177e677e6 Remove redundant ParsoidHelper class from VE
All code that used to live in ParsoidHelper has been moved to
VisualEditorParsoidClientFactory and VRSParsoidClient.
ParsoidHelper is no longer needed.

Change-Id: I21c4a8cd86f8d085e75a601ed6d2509dedd75d42
2022-09-15 19:23:05 +00:00
Bartosz Dziewoński 6f3de6d7f0 Improve some API param docs and validation
Change-Id: Ic1319f82e581b1a3c2108ab32449ce75aa187831
2022-09-02 04:20:41 +02:00
vahurzpu 766884b41d ApiVisualEditor: set title when expanding permission editnotices
Before, permission editnotices didn't have access to the page titles, so
magic words like {{PAGENAME}} would give a subpage of Special:Badtitle. This
formats the message in the appropriate context.

Bug: T313372
Change-Id: I93894a4fc129de9da4b120c084b1d343b4021cdd
2022-07-20 10:48:56 -04:00
Thalia 73d163e77a Avoid preloading base translation page in editor
Bug: T309329
Depends-On: I739cee94620bc8d0689a4d3ec5898bfd75c18b8a
Change-Id: I29aa56627c74edf38573fd9aff52a015de92cc00
2022-06-22 14:59:57 +01:00
Bartosz Dziewoński 4ebf2ae8bf Restore global context fiddling to fix FlaggedRevs edit notices and checkboxes
Partially reverts aed5bcf7d0.

Bug: T307852
Change-Id: I6aee2266c6b4dce560196c87b518ac25a493623a
2022-05-11 00:08:41 +02:00
Derick Alangi 189e09e382
ApiVisualEditor: Inject WikiPageFactory, UserFactory & HookContainer
Change-Id: I940d266e10fc76329bebcdf18ac991b01a2a7a4f
2022-04-29 12:16:59 +01:00
Bartosz Dziewoński a420141b2a ApiVisualEditor: Fix 'stash' param validation (it's a boolean)
Bug: T306190
Change-Id: I49a479f79d220c7436364f7543bae9e091fff6a2
2022-04-19 21:53:03 +02:00
Umherirrender 47d1d4b385 Remove usage of protection related deprecated Title function
Bug: T306131
Change-Id: Id551a318a9bb1047e449e0ad284b8f73c8886aad
2022-04-14 22:06:02 +02:00
Reedy 239fbb64e4 Namespace rest of the extension
Change-Id: I4f3e2793099d81401035ea282f268a3afaa03067
2022-03-14 22:27:15 +00:00
jenkins-bot 35e1f36b7b Merge "ApiVisualEditor: Remove $wgTitle hack, set page for {{PAGENAME}} when needed" 2022-03-10 13:07:10 +00:00
Bartosz Dziewoński aed5bcf7d0 ApiVisualEditor: Remove $wgTitle hack, set page for {{PAGENAME}} when needed
Depends on core changes I242e042317 and I6e9356a6cc to set the context
page for messages generated in Title::getEditNotices() and
LogEventsList::showLogExtract() too.

Set the context page for other messages whose overrides on Wikimedia
wikis commonly depend on it, which I checked using Global Search, e.g.
https://global-search.toolforge.org/?q=PAGENAME&regex=1&namespaces=8&title=Editingold

Depends-On: I242e042317a1e16c8d51edbf7800c8b7d70d468e
Depends-On: I6e9356a6cc3b9df9b508c3d37a0b9b75d6825efd
Bug: T300184
Change-Id: I0746618b1f6da3e5fd213d8adad9b1f4ec2fe23b
2022-02-28 23:43:54 +00:00
Thalia b0c0917f19 ApiVisualEditor: Support Special:MyLanguage for preload param
This allows nonexistent translated pages to fall back to the
corresponding page in a suitable language.

Bug: T299544
Change-Id: I43f461e9f595c364ecdaf2faccbd580fc0df6799
2022-02-25 12:23:16 +00:00
Bartosz Dziewoński 8c0a6bce38 Modernize some warnings about account not being registered
Matching MediaWiki change I7a7046bf9b9765cbb82ec3caa1530de7f05e0da4.

Change-Id: I5b2587f00d00622a5e431d0fd69bdf8979b7bc53
2022-02-09 21:26:18 +01:00
Bartosz Dziewoński 72c68e9e65 Remove redundant Phan annotations
Change-Id: Ic87fcc132b310191b086ccf7facfdf262a544eb9
2022-02-05 16:55:42 +01:00
Bartosz Dziewoński 8080bd2f5d Move copyright warning message parsing from RL module to API
Parsing it in the RL module caused the module cache key to depend
on the parse, which is slow and makes ResourceLoader sad. The usual
approach for solving this (I206bb05d28) can't be used, because of
how EditPage generates this message.

Bonus #1:
Generate the message for the correct page title. MediaWiki allows
customizing it per-namespace or even per-title, which we haven't
supported before.

Bonus #2:
Pass the context for message localisation (depends on I5f7c77970d).
EditPage::getCopyrightWarning() was parsing messages without the
interface flag, causing some needless processing elsewhere.

Depends-On: I5f7c77970d0525c0ff394f8bd72c69dcb5d00623
Bug: T298822
Change-Id: Iaa626f0e6379a5a370f9c465cea8528bb5bde7f7
2022-01-24 22:19:04 +00:00
Alexander Vorwerk 61e0094574 Replace usage of deprecated global function wfReadOnly()
The global function wfReadOnly() has been deprecated in favor of the
new ReadOnlyMode service. Its usages should be replaced.

Bug: T283978
Change-Id: I26a878f19be5c90dab04e28ce395cb8f6dddebef
2021-12-26 14:23:42 +01:00
vladshapik f17e84b331 Avoid using User::isBlockedFrom()
Replace User::isBlockedFrom with PermissionManager::isBlockedFrom since this method will be hard-deprecated.

Bug: T294823
Change-Id: Iea308ce73e4e91b21f55b60e0b3251d93ba18d7e
2021-11-02 13:13:12 +02:00
Thiemo Kreuz a3a738b4f9 Rewrite ApiVisualEditor::getAvailableNamespaceIds()
For readability. The current implementation is a sequence of
7 (!) array_…() function calls. It is also not free from bugs.
If one of the two inputs (ExtensionRegistry and Config) specifies
namespaces by e.g. canonical name, but the other by number,
the two are not properly merged. It should be possible to use
configuration to disable a namespace that would otherwise be
enabled. This currently works only if both use the same array
keys.

Bug: T291727
Change-Id: I2671f391cdc510da21eda8a1dc5ed4d2513a378a
2021-10-01 14:10:08 +02:00
DannyS712 492fcfbd9f Don't include null in the namespaces where VE can be enabled
Bug: T291728
Change-Id: I2cb168a21c559e61bf2c9e881d46f7f23110e826
2021-09-29 16:23:48 +00:00
Alexander Vorwerk 821351d04f Make sure params is an array
This was removed in I44ee0014ac50c9c5dc66543dcd045dd5a81ce37c.

This basically partly reapplies I844db115f2563cb9ee1629c30d5f49d1ce58f5bd.

Bug: T289730
Change-Id: I14435b9f84b9a24445befbb8dc7fefce44bba078
2021-08-25 19:54:12 +00:00
Roman Stolar e6c93bfbda Replace Content::preloadTransform call to ContentTransformer::preloadTransform
Bug: T287157
Change-Id: I44ee0014ac50c9c5dc66543dcd045dd5a81ce37c
2021-08-17 16:53:49 +03:00
Roman Stolar 0519e98725 Replace Content::preSaveTransform call to ContentTransformer::preSaveTransform
Bug: T287156
Change-Id: Ieaf645dab42c0e6def9fc36ecc619843710656f4
2021-08-11 18:44:35 +03:00
Alexander Vorwerk 72693ca46b ApiVisualEditor: inject services
This patch add dependency injection for the ApiVisualEditor api
module.

Change-Id: I46a249fc1a8cf96102ee9fd64bf046d3a3d33361
2021-08-09 11:14:34 +00:00
Roman Stolar 304f3a30c6 Remove the fallback for create rights
It's covered in PM edit rights check throught getPermissionErrors method.

Bug: T272079
Change-Id: Idcf9ced5a638b173389c65d11b9d687f7fa3938e
2021-06-29 19:31:07 +03:00
Thiemo Kreuz c2017f74b2 Remove @param/@return docs that literally repeat the code
These don't add any knowledge but make the code harder to read
and maintain, and are an additional source of errors.

Change-Id: Ied57741a3f985e355adfddb4e75378d5c497faa9
2021-06-14 15:44:51 +02:00
jenkins-bot 353373cc1b Merge "Fix a series of minor style issues in PHP code" 2021-06-03 16:22:49 +00:00
Thiemo Kreuz ad014c834d Fix a series of minor style issues in PHP code
* Mismatching capitalization.
* Unused pieces of code.
* Properties that can be constants.
* Use $this->getConfig() in special pages.

Change-Id: Ia7e2c438c5ddd3c770070701e4cbdfc79fccf009
2021-06-03 15:55:38 +02:00