Extension talk:Page Exchange

This is the talk page for the Page Exchange extension.

Bug tracker
Is there any? Alex Mashin (talk) 19:15, 1 August 2020 (UTC)


 * Not yet, unfortunately - just this talk page. Yaron Koren (talk) 01:52, 2 August 2020 (UTC)

This extension is a good idea
For some time I thought about the idea of "git for wikis", and now you have done it. It is a big achievement, and is likely to be useful, especially for wiki farms.

I have several ideas: Alex Mashin (talk) 03:54, 6 August 2020 (UTC)
 * Is it necessary to define packages in ? Why can't they be stored in the database, or, better, in the pages of a special namespace, perhaps, with its own data model?
 * A locally defined package can exist without its remote source. The pages that have to be downloaded and updated can either be listed locally; or their list can be extracted from a certain remote page, like a category, using text parsing tools similar to ones provided by External Data. The latter option requires extending package syntax to make it "dynamic".
 * Sources of data for a package don't even need to be wikis.
 * Another interesting topic is preprocessing foreign texts before their import. Thinking along these lines, I recently made a server-side wikifier tool (as a Lua module) that reproduces the behaviour of the current version of its JavaScript prototype.
 * "Pushing" packages to remote wikis could be interesting, although it will require authentication. Again, before pushing, texts can be preprocessed, and a package can define push requests other than using remote wiki's API.
 * If this extension develops according to these ideas, it can come to a point, when some of its code will become common with External Data. That may require librarisation.


 * I'm glad you like the concept of this extension! And I hope you get to try it out yourself, if you haven't already. To be clear, packages are not defined in LocalSettings.php - they are only installed there. Packages are defined in JSON files that can be located anywhere on the web, and they don't need to be connected to a wiki at all.


 * What would be the benefit of preprocessing? Are you talking about translation?


 * "Pushing" is indeed interesting, especially for a wiki farm that might have hundreds of wikis whose data structures all need to be updated. Maybe the simplest approach to this is to create a Page Exchange API action that lets you update a package on a wiki from the command line - then you could have a script to update any combination of wikis at the same time. Yaron Koren (talk) 13:17, 7 August 2020 (UTC)

Alex Mashin (talk) 13:31, 7 August 2020 (UTC)
 * To be clear, packages are not defined in LocalSettings.php — I think it is not necessary even to list packages in LocalSettings.php, if a package definition, be it a mere URL of a remote package or something more detailed like a list of pages, exists somewhere in the wiki database or on a dedicated page.
 * By preprocessing I mean, mainly, conversion of non-wiki texts into wiki markup or a reverse operation, when a page is "pushed" to a non-wiki site.

Include Scribunto modules?
Hi Yaron

A quick question: I'm struggling to include Scribunto modules with PX. Am I right in assuming this format is correct (note the  and the  's file extension)?

I noticed that using  as a file extension will apply the wrong content model. So I tried.

However, it's not picked up by PX.

Am I missing something?

Many thanks for your support.

Lex LexSMW (talk) 14:05, 13 June 2022 (UTC)


 * Hi - I'm guessing that you are using the "directoryStructure" setup, if a suffix other than ".mediawiki" is not getting picked up. But the suffix was not affecting the content model - rather, you found a bug in Page Exchange, where pages in the "Module" namespace were not being stored with the right content model. I just checked in what I think is a fix for this, here - if you get the latest Page Exchange code, and then uninstall and re-install the package, hopefully this will work correctly. Yaron Koren (talk) 02:08, 14 June 2022 (UTC)
 * Hi, thanks for your prompt efforts!
 * I added PX' latest version as  (instead of cf...) to Canasta and I used the file extension   for the module pages.
 * Now I was able to import all pages with the single  button and it seems to correctly import the module pages as Lua code.
 * However, when I now click  I get a  . LexSMW (talk) 13:03, 14 June 2022 (UTC)
 * Sorry about that - I clearly didn't fully test the change. (Though I'm glad installing works now.) I just checked in a fix, so again it should work if you get the latest code. Yaron Koren (talk) 14:06, 14 June 2022 (UTC)
 * Yep, works now. Many thanks! LexSMW (talk) 14:37, 14 June 2022 (UTC)

internal_api_error_ArgumentCountError when using api.php?action=pxupdatepackage
Hi

When  I get: { "error": { "code": "internal_api_error_ArgumentCountError", "info": "[237fdf4a58a5bfbb4406752c] Caught exception of type ArgumentCountError", "errorclass": "ArgumentCountError" } } That  exists as   in , but I get the same error even if that package ID wouldn't exist. I mention this because apparently if fails before reaching https://github.com/wikimedia/mediawiki-extensions-PageExchange/blob/295b032f913e1c3d80865dc7c9219e61834a0337/includes/api/PXUpdatePackageAPI.php#L32 LexSMW (talk) 08:52, 16 June 2022 (UTC)


 * Sorry again. That's a bug that has been in the API for about a year now - you might be the first person to try using the API in that time! I just checked in what I think is a fix for it, here. Yaron Koren (talk) 17:47, 16 June 2022 (UTC)
 * No problem! My pleasure to help you developing... ;)
 * So, your fix works. When run in an authenticated browser session I get back.
 * May I suggest to change that response into something like this?
 * LexSMW (talk) 07:17, 17 June 2022 (UTC)