Diferència entre revisions de la pàgina «Desenvolupament d'extensions per a MediaWiki»
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 4: | Línia 4: | ||
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/BoilerPlate.git''' | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/BoilerPlate.git''' | ||
Còpia per a fer una extensió personalitzada: | Còpia per a fer una extensió personalitzada: | ||
− | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''cp -r BoilerPlate ./MyExtension''' | + | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''cp -r BoilerPlate ./LaMevaExtensio''' |
− | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''rm -rf ./MyExtension/.git''' | + | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''rm -rf ./LaMevaExtensio/.git''' |
+ | <!--jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''cp -r BoilerPlate ./MyExtension''' | ||
+ | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''rm -rf ./MyExtension/.git'''--> | ||
+ | |||
== Instal·lació de ''PHP Composer'' == | == Instal·lació de ''PHP Composer'' == | ||
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''docker exec -it mediawiki bash''' | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''docker exec -it mediawiki bash''' | ||
Línia 27: | Línia 30: | ||
Font: [https://webjump.ai/en/composer-what-it-is-how-to-use-it-and-how-to-install-it/ Complete guide to PHP Composer: what it is, how to install it, and how to use it to the fullest] | Font: [https://webjump.ai/en/composer-what-it-is-how-to-use-it-and-how-to-install-it/ Complete guide to PHP Composer: what it is, how to install it, and how to use it to the fullest] | ||
== Instal·lació de ''npm'' == | == Instal·lació de ''npm'' == | ||
− | Primer hem de saber sobre quina distribució s'ha fet el ''docker'': | + | Primer hem de saber sobre quina distribució de Linux s'ha fet el ''docker'': |
root@6396f9a287aa:/opt# '''cat /etc/os-release''' | root@6396f9a287aa:/opt# '''cat /etc/os-release''' | ||
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" | PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" | ||
Línia 50: | Línia 53: | ||
root@6396f9a287aa:/opt# '''npm -v''' | root@6396f9a287aa:/opt# '''npm -v''' | ||
9.2.0 | 9.2.0 | ||
+ | |||
== Automatització == | == Automatització == | ||
root@6396f9a287aa:/opt# '''ls -ls''' | root@6396f9a287aa:/opt# '''ls -ls''' | ||
Línia 189: | Línia 193: | ||
= Personalització = | = Personalització = | ||
+ | Si no ho heu fet abans: | ||
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''cp -r BoilerPlate ./LaMevaExtensio''' | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''cp -r BoilerPlate ./LaMevaExtensio''' | ||
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''rm -rf ./LaMevaExtensio/.git''' | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''rm -rf ./LaMevaExtensio/.git''' | ||
Línia 236: | Línia 241: | ||
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''docker restart mediawiki''' | jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ '''docker restart mediawiki''' | ||
mediawiki | mediawiki | ||
+ | == Visualització a extensions instal·lades == | ||
+ | Aneu a [http://localhost:8083/index.php/Special:version http://localhost:8083/index.php/Especial:Versió] i cerqueu ''LaMevaExtensio'' a extensions instal·lades: | ||
+ | [[Image:MediaWiki202502092311.png|center|thumb|''LaMevaExtensio'' a extensions instal·lades]] | ||
+ | == Visualització del funcionament de l'extensió ''LaMevaExtensio'' == | ||
+ | Aneu a [http://localhost:8083 http://localhost:8083] i veureu que al peu de l'entrada de la pàgina principal hi surt ''LaMevaExtensio és aquí'': | ||
+ | [[Image:MediaWiki202502092319.png|center|thumb|Funcionament de l'extensió ''LaMevaExtensio'']] | ||
= Font = | = Font = | ||
[https://www.mediawiki.org/wiki/Extension:BoilerPlate Extension:BoilerPlate] | [https://www.mediawiki.org/wiki/Extension:BoilerPlate Extension:BoilerPlate] | ||
<!-- [https://tutorialsjoint.com/mediawiki-extension-how-to-develop-custom-extension-in-mediawiki/ MediaWiki Extension – How to develop custom extension in MediaWiki] --> | <!-- [https://tutorialsjoint.com/mediawiki-extension-how-to-develop-custom-extension-in-mediawiki/ MediaWiki Extension – How to develop custom extension in MediaWiki] --> |
Revisió de 22:27, 9 feb 2025
Contingut
- 1 Previ
- 1.1 Baixada de l'extensió BoilerPlate
- 1.2 Instal·lació de PHP Composer
- 1.3 Instal·lació de npm
- 1.4 Automatització
- 1.5 Proves (testing)
- 1.6 Activeu l'extensió a LocalSettings.php
- 1.7 Reinicieu el contenidor
- 1.8 Visualització a extensions instal·lades
- 1.9 Visualització del funcionament de l'extensió BoilerPlate
- 2 Personalització
- 3 Font
Previ
Heu hagut de seguir les passes de Instal·lació de MediaWiki amb dockers
Baixada de l'extensió BoilerPlate
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/BoilerPlate.git
Còpia per a fer una extensió personalitzada:
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ cp -r BoilerPlate ./LaMevaExtensio jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ rm -rf ./LaMevaExtensio/.git
Instal·lació de PHP Composer
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ docker exec -it mediawiki bash root@6396f9a287aa:/var/www/html# cd /opt root@6396f9a287aa:/opt# php -r "copy('https://getcomposer.org/installer','composer-setup.php');" root@6396f9a287aa:/opt# php composer-setup.php All settings correct for using Composer Downloading... Composer (version 2.8.5) successfully installed to: /opt/composer.phar Use it: php composer.phar root@6396f9a287aa:/opt# php composer.phar ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.8.5 2025-01-21 15:23:40 ...
Font: Complete guide to PHP Composer: what it is, how to install it, and how to use it to the fullest
Instal·lació de npm
Primer hem de saber sobre quina distribució de Linux s'ha fet el docker:
root@6396f9a287aa:/opt# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" root@6396f9a287aa:/opt#
Actualitzem la informació dels dipòsits i instal·lem npm
root@6396f9a287aa:/opt# apt update ... root@6396f9a287aa:/opt# apt install nodejs -y ... root@6396f9a287aa:/opt# node -v v18.19.0 root@6396f9a287aa:/opt# apt install npm -y ... root@6396f9a287aa:/opt# npm -v 9.2.0
Automatització
root@6396f9a287aa:/opt# ls -ls total 2992 2992 -rwxr-xr-x 1 root root 3060478 Feb 9 19:04 composer.phar root@6396f9a287aa:/opt# cd - /var/www/html/extensions root@6396f9a287aa:/var/www/html/extensions# cd BoilerPlate/ root@6396f9a287aa:/var/www/html/extensions/BoilerPlate# ls -ls total 352 4 -rw-r--r-- 1 1000 1000 135 Feb 9 18:44 CODE_OF_CONDUCT.md 20 -rw-r--r-- 1 1000 1000 18092 Feb 9 18:44 COPYING 4 -rw-r--r-- 1 1000 1000 639 Feb 9 18:44 Gruntfile.js 4 -rw-r--r-- 1 1000 1000 915 Feb 9 18:44 README.md 4 -rw-r--r-- 1 1000 1000 609 Feb 9 18:44 composer.json 4 -rw-r--r-- 1 1000 1000 1078 Feb 9 18:44 extension.json 4 drwxr-xr-x 2 1000 1000 4096 Feb 9 18:44 i18n 4 drwxr-xr-x 2 1000 1000 4096 Feb 9 18:44 maintenance 288 -rw-r--r-- 1 1000 1000 293557 Feb 9 18:44 package-lock.json 4 -rw-r--r-- 1 1000 1000 344 Feb 9 18:44 package.json 4 drwxr-xr-x 3 1000 1000 4096 Feb 9 18:44 resources 4 drwxr-xr-x 2 1000 1000 4096 Feb 9 18:44 src 4 drwxr-xr-x 3 1000 1000 4096 Feb 9 18:44 tests root@6396f9a287aa:/var/www/html/extensions/BoilerPlate# npm install added 411 packages, and audited 412 packages in 10s 88 packages are looking for funding run `npm fund` for details found 0 vulnerabilities root@6396f9a287aa:/var/www/html/extensions/BoilerPlate# /opt/composer.phar install ... - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Cloning 6db563514f from cache 2 package suggestions were added by new dependencies, use `composer suggest` to see details. Generating autoload files 16 packages you are using are looking for funding. Use the `composer fund` command to find out more! PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils root@6396f9a287aa:/var/www/html/extensions/BoilerPlate#
Proves (testing)
root@6396f9a287aa:/var/www/html/extensions/BoilerPlate# npm test > test > grunt test Running "eslint:all" (eslint) task Running "stylelint:all" (stylelint) task >> Linted 0 files without errors Running "banana:BoilerPlate" (banana) task >> 1 message directory checked. Done. root@6396f9a287aa:/var/www/html/extensions/BoilerPlate# /opt/composer.phar test The repository at "/var/www/html/extensions/BoilerPlate" does not have the correct ownership and git refuses to use it: fatal: detected dubious ownership in repository at '/var/www/html/extensions/BoilerPlate' To add an exception for this directory, call: git config --global --add safe.directory /var/www/html/extensions/BoilerPlate > parallel-lint . --exclude vendor --exclude node_modules PHP 8.1.31 | 10 parallel jobs .... 4/4 (100%) Checked 4 files in 0.1 seconds No syntax error found > phpcs -sp --cache .... 4 / 4 (100%) Time: 94ms; Memory: 8MB > minus-x check . MinusX ====== Processing /var/www/html/extensions/BoilerPlate... ....................... All good! root@6396f9a287aa:/var/www/html/extensions/BoilerPlate# exit exit jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$
Activeu l'extensió a LocalSettings.php
Al final de l'arxiu LocalSettings.php afegiu-hi:
wfLoadExtension( 'BoilerPlate' );
I per activar que es vegi a totes les pàgines:
$wgBoilerPlateVandalizeEachPage = true;
Reinicieu el contenidor
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ docker restart mediawiki mediawiki
Visualització a extensions instal·lades
Aneu a http://localhost:8083/index.php/Especial:Versió i cerqueu BoilerPlate a extensions instal·lades:
Visualització del funcionament de l'extensió BoilerPlate
Aneu a http://localhost:8083 i veureu que al peu de l'entrada de la pàgina principal hi surt BoilerPlate was here:
Personalització
Si no ho heu fet abans:
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ cp -r BoilerPlate ./LaMevaExtensio jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ rm -rf ./LaMevaExtensio/.git
Arxius json
extension.json
- Canvieu l'autor pel vostre nom i cognoms
- Canvieu la URL
- Canvieu el valor de descriptionmsg (boilerplate-desc) per lamevaextensio-desc
- Reemplaceu a tot arreu el text BoilerPlate per LaMevaExtensio
package-lock.json
- Reemplaceu a tot arreu el text BoilerPlate per LaMevaExtensio
i18n Llengües (internacionalització)
- Aneu a la carpeta i18n
- Canvieu a en.json l'autor i hi escriviu el vostre nom i cognoms. Canvieu la variable descriptora per "lamevaextensio-desc":
"lamevaextensio-desc": "This is an example extension"
- Copieu en.json a ca.json i canvieu la descripció:
"lamevaextensio-desc": "Exemple d'extensió"
- A qqq.json canvieu l'autor pel vostre nom i cognoms i la variable descriptora per "lamevaextensio-desc".
Arxius PHP
- Copia a la carpeta maintenance l'arxiu BoilThePlate.php a un nou arxiu anomenat LaMevaExtensio.php
- Dins de LaMevaExtensio.php reemplaceu a tot arreu el text BoilerPlate per LaMevaExtensio
- Reemplaceu els dos BoilThePlate per ClasseLaMevaExtensio
- Canvieu el text del mètode execute() "LaMevaExtensio was here.\n" per "LaMevaExtensio és aquí.\n"
Hooks.php
- Editeu l'arxiu Hooks.php que hi és a dins del directori src
- Reemplaceu a tot arreu el text BoilerPlate per LaMevaExtensio
- Canvieu al mètode onBeforePageDisplay el text 'LaMevaExtensio was here' per 'LaMevaExtensio és aquí'
HooksTest.php
- Editeu l'arxiu HooksTest.php que hi és a dins del directori tests/phpunit/unit
- Reemplaceu a tot arreu el text BoilerPlate per LaMevaExtensio
Recursos
- Copieu la carpeta ext.boilerPlate a ext.laMevaExtensio:
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions/LaMevaExtensio/resources$ cp -r ext.boilerPlate/ ./ext.laMevaExtensio
- Dins de la carpeta ext.laMevaExtensio reemplaceu a l'arxiu init.js el text mw.boilerPlate per mw.laMevaExtensio
Activeu l'extensió a LocalSettings.php
Al final de l'arxiu LocalSettings.php afegiu-hi:
wfLoadExtension( 'LaMevaExtensio' );
i comenteu l'extensió BoilerPlate:
# wfLoadExtension( 'BoilerPlate' );
I per activar que es vegi a totes les pàgines:
$wgLaMevaExtensioVandalizeEachPage = true;
i comenteu l'activació de l'extensió BoilerPlate:
# $wgBoilerPlateVandalizeEachPage = true;
Reinicieu el contenidor
jordi@asix2:~/bin/mediawiki-docker/mediawiki_extensions$ docker restart mediawiki mediawiki
Visualització a extensions instal·lades
Aneu a http://localhost:8083/index.php/Especial:Versió i cerqueu LaMevaExtensio a extensions instal·lades:
Visualització del funcionament de l'extensió LaMevaExtensio
Aneu a http://localhost:8083 i veureu que al peu de l'entrada de la pàgina principal hi surt LaMevaExtensio és aquí: