Centrum Społeczności
m (aka Dev Wiki)
Znacznik: sourceedit
mNie podano opisu zmian
(Nie pokazano 1 wersji utworzonej przez jednego użytkownika)
Linia 15: Linia 15:
 
|border=orange
 
|border=orange
 
|image=[[File:Bulb.png]]
 
|image=[[File:Bulb.png]]
|style=width:100%;
 
 
|type=Caching
 
|type=Caching
 
|info=Linki generowane przez <code>importArticles()</code> (oraz przez zaawansowane techniki opisane poniżej) są zapisywane w pamięci podręcznej na maksymalnie 10 minut. Pamiętaj, że przy każdej zmianie należy założyć, że wszyscy użytkownicy na danej wiki otrzymają zaktualizowane wersje plików js i css dodanych przez <code>importArticles()</code> dopiero po 10 minutach.
 
|info=Linki generowane przez <code>importArticles()</code> (oraz przez zaawansowane techniki opisane poniżej) są zapisywane w pamięci podręcznej na maksymalnie 10 minut. Pamiętaj, że przy każdej zmianie należy założyć, że wszyscy użytkownicy na danej wiki otrzymają zaktualizowane wersje plików js i css dodanych przez <code>importArticles()</code> dopiero po 10 minutach.
Linia 37: Linia 36:
   
 
=== Artykuły zewnętrzne ===
 
=== Artykuły zewnętrzne ===
Artykuły z innych wiki również mogą zostać zlokalizowane w ten sam sposób jak ich zalinkowanie. Jednak, w przeciwieństwie do lokalnych artykułów, zewnętrzne wymagają użycia prefiksu oraz nazwy wiki w celu określenia, z której społeczności mają zostać zaimportowane. Fandom wspiera wybieranie na podstawie nazwy ''bazy danych'', gdzie z reguły jest to angielska nazwa wiki, lub na podstawie jej adresu ''URL''. Poszukiwanie na podstawie nazwy bazy danych wykonuje się za pomocą prefiksu '''external''' (lub "remote" albo "w" w skrócie), a lokalizowanie na podstawie URL wykonuje się za pomocą prefiksu '''url''' (lub w skrócie "u"). Przykładowo, jeśli chcesz zaimportować artykuł {{#NewWindowLink:w:c:dev:Highlight/code.css|Highlight/code.css}} z {{#NewWindowLink:w:c:dev|Fandom Open Source Library}}, zadziała dowolna z poniższych wartości:
+
Artykuły z innych wiki również mogą zostać zlokalizowane w ten sam sposób jak ich zalinkowanie. Jednak, w przeciwieństwie do lokalnych artykułów, zewnętrzne wymagają użycia prefiksu oraz nazwy wiki w celu określenia, z której społeczności mają zostać zaimportowane. FANDOM wspiera wybieranie na podstawie nazwy ''bazy danych'', gdzie z reguły jest to angielska nazwa wiki, lub na podstawie jej adresu ''URL''. Poszukiwanie na podstawie nazwy bazy danych wykonuje się za pomocą prefiksu '''external''' (lub "remote" albo "w" w skrócie), a lokalizowanie na podstawie URL wykonuje się za pomocą prefiksu '''url''' (lub w skrócie "u"). Przykładowo, jeśli chcesz zaimportować artykuł [[w:c:dev:Highlight/code.css|Highlight/code.css]] z [[w:c:dev|FANDOM Open Source Library]], zadziała dowolna z poniższych wartości:
   
 
<source lang="text">
 
<source lang="text">
Linia 49: Linia 48:
 
</source>
 
</source>
   
Ta składnia działa też dla wiki w innych językach. Na przykład, jeśli chcesz dodać artykuł {{#NewWindowLink:w:c:it.onepiece:MediaWiki:Common.js|MediaWiki:Common.js}} z włoskiej {{#NewWindowLink:w:c:it.onepiece|One Piece Wiki}}:
+
Ta składnia działa też dla wiki w innych językach. Na przykład, jeśli chcesz dodać artykuł [[w:c:it.onepiece:MediaWiki:Common.js|MediaWiki:Common.js]] z włoskiej [[w:c:it.onepiece|One Piece Wiki]]:
   
 
<source lang="text">
 
<source lang="text">

Wersja z 12:59, 6 sie 2018

Globalna funkcja JavaScript importArticles() udostępnia wspólny interfejs do wgrywania na wiki artykułów, które zawierają skrypty i style.

Jej funkcjonalność jest podobna jest podobna do funkcji importScriptPage i importStylesheetPage. Jednak, importArticles() pozwala na import artykułów z innych wikii, scalać kilka artykułów w jeden, minifikować je oraz zwracaj w formie pojedynczego żądania. To zmniejsza zarówno rozmiar pliku jak i ruch wywołany pobraniem pliku, dzięki czemu wiki, która używa dużej ilości dodatkowych plików ładuje się szybciej.

Użycie

Funkcja importArticles() wymaga na zdefiniowaniu modułów do wgrania artykułów. Moduły są obiektami JavaScript z własnościami w formie klucz/wartość. Poniższe właściwości są wymagane dla każdego modułu:

  • type – oznacza typ artykułów jaki zostanie zawarty w tym module. Wspierane typy to:
  • articles – artykuły, które mają zostać zaimportowane. Więcej informacji na temat co tutaj wpisać znajdziesz w sekcji Namierzanie artykułów poniżej.

Do importArticles() można przekazać dowolną ilość modułów. Ale wszystkie artykuły w danym module muszą być tego samego typu.

Szablon:Notatka

Namierzanie artykułów

Do namierzania artykułów do zaimportowania jest używana prosta składnia. Jest bardzo podobna do i kompatybilna z linkami interwiki:

(Prefiks:{NazwaWiki}:){Artykuł}

To co w nawiasach jest opcjonalne, a to co w klamrach stanowi wartość wpisywaną przez użytkownika. Dwukropek służy do oddzielenia segmentów do parsowania. Prefiksy pozwalają na określenie gdzie i jak chcesz szukać artykułów i po nim z reguły następuje nazwa wiki, z wyjątkiem artykułów na lokalnej wikii.

Lokalne artykuły

Artykuły znajdujące się na lokalnej wiki można namierzyć podając ich tytuł w ten sam sposób jak można je zalinkować. Nie wymagają prefiksu czy nazwy wiki, ale dla wygody dostępny jest również prefiks local (lub w skrócie "l"). Przykładowo, jeśli chcesz zaimportować artykuł MediaWiki:Common.js, zadziała dowolna z poniższych wartości:

MediaWiki:Common.js
l:MediaWiki:Common.js
local:MediaWiki:Common.js

Artykuły zewnętrzne

Artykuły z innych wiki również mogą zostać zlokalizowane w ten sam sposób jak ich zalinkowanie. Jednak, w przeciwieństwie do lokalnych artykułów, zewnętrzne wymagają użycia prefiksu oraz nazwy wiki w celu określenia, z której społeczności mają zostać zaimportowane. FANDOM wspiera wybieranie na podstawie nazwy bazy danych, gdzie z reguły jest to angielska nazwa wiki, lub na podstawie jej adresu URL. Poszukiwanie na podstawie nazwy bazy danych wykonuje się za pomocą prefiksu external (lub "remote" albo "w" w skrócie), a lokalizowanie na podstawie URL wykonuje się za pomocą prefiksu url (lub w skrócie "u"). Przykładowo, jeśli chcesz zaimportować artykuł Highlight/code.css z FANDOM Open Source Library, zadziała dowolna z poniższych wartości:

w:dev:Highlight/code.css
remote:dev:Highlight/code.css
external:dev:Highlight/code.css
u:dev:Highlight/code.css
url:dev:Highlight/code.css
u:dev.wikia.com:Highlight/code.css
url:dev.wikia.com:Highlight/code.css

Ta składnia działa też dla wiki w innych językach. Na przykład, jeśli chcesz dodać artykuł MediaWiki:Common.js z włoskiej One Piece Wiki:

u:it.onepiece:MediaWiki:Common.js
url:it.onepiece:MediaWiki:Common.js
url:it.onepiece.wikia.com:MediaWiki:Common.js

Z reguły łatwiej namierzyć zasoby na innych wiki za pomocą URL niż bazy danych, ponieważ nie zawsze się zgadzają.

Zaawansowane użycie

Za kulisami, funkcja importArticles() wykonuje trzy kluczowe zadania:

  1. Generowanie odpowiednie sformatowanego URL do użycia z ResourceLoaderem,
  2. Wykonanie Sanity testu na modułach w celu sprawdzenia czy są poprawnie sformatowane,
  3. Wyświetlenie informacji użytkownikowi w przypadku wystąpienia błędu.

Niemniej jednak, użycie tej funkcji nie jest wymagane żeby uzyskać korzyści z łączenia i minifikowania wielu artykułów w jedno żądanie. Jeśli chcesz, możesz ręcznie wygenerować URL i użyć go do wgrania zasobów ręcznie za pomocą innych metod jak @import w CSS czy jQuery.getScript w JavaScript.

Chociaż jest wiele parametrów, które można dodać do URL, poniższe prawdopodobnie będą najbardziej przydatne:

Parametr Opis
mode Mówi ResourceLoaderowi, że będziemy wgrywać artykuły. Powinien mieć wartość "articles".
articles Lista artykułów. Jeśli ma zostać wgranych kilka artykułów, powinny zostać oddzielone za pomocą pionowej kreski "|".
only Typ artykułów do zaimportowania. Powinien mieć wartość "scripts" (JS) lub "styles" (CSS).
debug Ten parametr nie jest domyślnie wymagany, ale można podać wartość "true", która pozwoli na wyłączenie minifikacji co ułatwi znalezienie problemów w artykułach po imporcie.

Na koniec powinien powstać adres URL, który wygląda mniej więcej tak:

/load.php?mode=articles&articles=MediaWiki:Jeden.css|MediaWiki:Dwa.css&only=styles

Który może zostać użyty w połączeniu z @import, w ten sposób:

@import url("/load.php?mode=articles&articles=MediaWiki:Jeden.css|MediaWiki:Dwa.css&only=styles");

Przykłady

Importowanie kilku artykułów ze skryptami, jeden z lokalnej wiki, drugi z innej wikii:

importArticles({
    type: "script",
    articles: [
        "MediaWiki:MyCustomJavaScript.js",
        "external:dev:MediaWiki:External_include.js"
    ]
});

Importowanie kilku artykułów ze stylami, jeden z lokalnej wiki, drugi z innej wikii:

importArticles({
    type: "style",
    articles: [
        "MediaWiki:Common.css",
        "external:starwars:MediaWiki:External_include.css"
    ]
});

Importowanie kilku modułów w jednym wywołaniu funkcji:

importArticles({
    type: "script",
    articles: [
        "MediaWiki:MyCustomJavaScript.js",
        "external:dev:MediaWiki:External_include.js"
    ]
}, {
    type: "style",
    article: "MediaWiki:Common.css"
});

Przykłady alternatywnej składni

Funkcja importArticles() pozwala również na uproszczoną, alternatywną składnię dla typowych użyć. Dla wygody zdefiniowana jest również funkcja importArticle().

Importowanie jednego pliku na lokalnej wiki:

importArticle({
    type: "style",
    article: "MediaWiki:Common.css"
});

Zobacz również