Krótki kurs języka IML
Dlaczego nie HTML?
IML jest językiem, z pomocą którego wypełniane są dane w Informatorze ECTS. Język IML jest podobny do języka HTML (w tym kursie zakładamy, że znasz podstawową składnię języka HTML), lecz różni się od niego pod paroma względami:
- W języku HTML, prócz treści, można w dowolnie skomplikowany sposób opisać wygląd (formatowanie) tej treści. W IML pozostawiamy tylko parę podstawowych możliwości formatowania, skupiając się na treści. Treść formatowana w określony ograniczony sposób, może być poprawnie wyświetlona w większej liczbie mediów.
- W języku IML wprowadzone zostały dodatkowe elementy, ściśle związane z systemem USOS. IML został zaprojektowany z myślą umożliwienia wprowadzania danych w taki sposób, by móc łączyć dane dynamiczne (pochodzące z systemów USOS i IRK) ze statycznym tekstem tak, aby informacje te uzupełniały się wzajemnie.
<p>To jest paragraf tekstu. Zawiera wyrazy <b>pogrubione</b>, <i>pisane kursywą</i> oraz <em>wyróżnione</em>.</p> <ul> <li> <a prg_kod="12-2ZA/000-S2">To jest odnośnik</a> do programu o kodzie 12-2ZA/000-S2 </li> <li> <!-- A to ten sam odnośnik, tym razem z nazwą programu --> <a prg_kod="12-2ZA/000-S2">?</a> </li> </ul>
Znaczniki i artybuty IML
Dozwolone znaczniki HTML
W odróżnieniu od HTML, IML nigdy nie jest pełnym dokumentem, a jedynie fragmentem treści. Może być wyświetlany w różnych kontekstach i w różnych aplikacjach związanych z systemem USOS. W różnych kontekstach ten sam kod IML może wyglądać inaczej. Dlatego w IMLu zabronione jest użycie wielu znaczników i atrybutów HTML, w szczególności również tych wpływających w bezpośredni sposób na kolorystykę oraz rozmiar elementów. Skupiamy się na strukturze tekstu, a nie jego wyglądzie.
Dozwolonymi w IML elementami języka HTML są:
- p, div - paragraf, sekcja tekstu; w przypadku braku tego typu elementów w kodzie IML, tekst zostanie nimi otoczony automatycznie (np. po napotkaniu pustej linii, tekst przed linią uznamy za paragraf),
- ul, ol, li - listy, punkty i podpunkty,
- br - ręczny podział linii (radzimy unikać, a zamiast tego użyć p lub ul),
- b, i, em - pogrubienie, kursywa, wyróżnienie fragmentu tekstu (elementy u, big itp. będą zamieniane na em),
- sup, sub - indeks górny i dolny,
- a - odnośnik do strony (patrz niżej),
- table, tr, th, td - tabele (dozwolone są atrybuty colspan i rowspan),
- <!-- komentarze -->.
Wszystkie niewymienione znaczniki i atrybuty języka HTML są zabronione w IML (w szczególności dotyczy to atrybutów takich jak style, color itp., które przy wyświetlaniu będą ignorowane). Nagłówki (h1, h2 itp.) również aktualnie są zabronione (IML wprowadzany jest w miejscach niepodlegających podziałowi na podsekcje).
<p>Przykładowa tabela:</p> <table> <tr> <th>Imię</th> <th>Nazwisko</th> </tr> <tr> <td>Adam</td> <td>Mickiewicz</td> </tr> <tr> <td>Juliusz</td> <td>Słowacki</td> </tr> </table> <h1>Celowo użyty niepoprawny znacznik</h1> <p>Inne znaczniki i atrybuty HTML, które nie zadziałają w IML (zostaną zignorowane lub zastąpione obsługiwanymi znacznikami):</p> <ul> <li><u>podkreślenie</u>,</li> <li><big>duża czcionka</big>,</li> <li><small>mała czcionka</small>,</li> <li><b color='red'>zmieniony kolor</b>.</li> </ul>
{pl} i {en}
Te dwa znaczniki, w odróżnieniu od pozostałych, pisane są w nawiasach klamrowych. Dzięki temu można ich używać również w edytorze prostym, a nie tylko w kodzie IML. Ich znaczenie jest następujące:
- wszystkie elementy między {pl} i {/pl} wyświetlane będą tylko w wersji polskiej serwisu,
- wszystkie elementy między {en} i {/en} wyświetlane będą tylko w wersji angielskiej serwisu,
- elementy, które nie zostały otoczone żadnym z tych dwóch znaczników, wyświetlane będą w obydwu wersjach językowych serwisu.
<!-- Ponieważ ta strona jest dostępna tylko w języku polskim, więc nie masz możliwości obejrzenia tekstu wpisanego między znacznikami {en} i {/en}. --> {pl} <p>To jest informacja w języku polskim.</p> {/pl} {en} <p>This paragraph is in English.</p> <table><tr><td>Tu mogą być dowolne, inne znaczniki.</td></tr></table> {/en} <p>Ze znaczników językowych można również korzystać {pl}wewnątrz paragrafów{/pl} {en}(tego nie widać){/en} oraz wewnątrz <a href='http://www.google.{pl}pl/{/pl}{en}com/{/en}'>atrybutów</a>.</p>
<!-- brak spodziewanego efektu --> {pl}<b>{/pl}{en}<i>{/en} Nie tylko pogrubiony? {en}</i>{/en}{pl}</b>{/pl} <!-- błąd składni --> <a {pl}href='A'{/pl} {en}href='B'{/en}>link</a>
<a> - rozszerzone odnośniki HTML
Znacznik <a> w języku HTML przyjmuje tylko jeden atrybut href definiujący cel, do którego odnośnik ma prowadzić. IML pozwala ten cel określić na parę innych sposobów:
- <a href="http://www.google.com/"> - odnośnik do podanej strony (jak w zwykłym HTML),
- <a prg_kod="KOD"> - odnośnik do programu studiów o danym kodzie,
- <a prz_kod="KOD"> - odnośnik do przedmiotu o danym kodzie,
- <a jed_org_kod="KOD"> - odnośnik do jednostki organizacyjnej o danym kodzie,
- <a grprz_kod="KOD"> - odnośnik do grupy przedmiotów o danym kodzie,
- <a os_id="OS_ID"> - odnośnik do osoby o danym identyfikatorze.
Jeśli we wnętrzy znacznika wpiszemy znak zapytania, to zostanie ono wypełnione automatycznie nazwą odpowiedniego obiektu. Zatem możemy napisać <a prz_kod="ABC">?</a>, a w rezultacie dostaniemy odnośnik z nazwą przedmiotu.
Informator wykrywa i informuje o istnieniu odnośników do nieistniejących obiektów.
<p>Spróbuj zmienić kody na nieistniejące i obserwuj efekty:</p> <ul> <li><a href="http://www.google.com/">Google</a></li> <li> Tak...... <a prg_kod="12-2ZA/000-S2">Program</a> lub tak.. <a prg_kod="12-2ZA/000-S2">?</a> </li><li> Tak...... <a prz_kod="0FI/A00-S1-REM6">Przedmiot</a> lub tak.. <a prz_kod="0FI/A00-S1-REM6">?</a> </li><li> Tak...... <a jed_org_kod="8400000000">Jednostka</a> lub tak.. <a jed_org_kod="8400000000">?</a> </li><li> Tak...... <a grprz_kod="KOD-GRUPY">Grupa</a> lub tak.. <a grprz_kod="KOD-GRUPY">?</a> </li><li> Tak...... <a os_id="123">Osoba</a> lub tak.. <a os_id="123">?</a> </li> </ul>
<iml-lock/>
Wpisanie znacznika <iml-lock/>* w dowolnym miejscu kodu IML (zaleca się na początku dokumentu) spowoduje zablokowanie możliwości przejścia do edytora prostego (osoba chcąca edytować w edytorze prostym, będzie musiała najpierw usunąć znacznik <iml-lock/>). Ta opcja może być przydatna, jeśli zależy nam na tym, aby wszyscy współedytorzy używali edytora zaawansowanego.
* Podobnie jak w przypadku znacznika <br/>, nie ma znaczenia, czy użyjesz zapisu <iml-lock> czy <iml-lock/>. W przypadku tych dwóch znaczników, obydwie formy są równoważne.
<iml-lock/> <p>Teraz spróbuj edytować ten tekst w edytorze prostym.</p>
<siatka-etapu>
Znacznik <siatka-etapu> służy do wyświetlenia siatki zajęć pojedynczego etapu programu studiów. Dane potrzebne do wyświetlenia siatki mogą być pobrane z USOS lub wprowadzone ręcznie (z pomocą znaczników <zajecia>).
Należy podać atrybuty:
- prg_kod - kod programu w systemie USOS,
- etp_kod - kod etapu w systemie USOS (jeśli chcemy zdefiniować siatkę dla etapu, którego nie ma w USOS, to zamiast etp_kod możemy podać atrybut nazwa).
Jeśli domyślna nazwa nad nie odpowiada (np. jest za długa), to można podać jeszcze:
- nazwa - nazwa dla siatki; np. "Semestr 7" lub "Drugi rok, trymestr jesienny" lub "Semestr 3 na specjalności XYZ" (można używać znaczników {pl} i {en}).
<zajecia>
Znacznika <zajecia> można używać jedynie wewnątrz znacznika <siatka-etapu>. Każde wystąpienie znacznika <zajecia> odpowiada jednemu wierszowi w siatce zajęć etapu.
Należy obowiązkowo podać jeden (lub dwa: grprz_kod + nazwa) spośród następujących atrybutów:
- prz_kod - kod przedmiotu w USOS, któremu wiersz odpowiada; domyślnie oznacza to, że ten przedmiot należy (planowo) zaliczyć na danym etapie (jeśli tak nie jest, to można o tym napisać w przypisie lub odrębnym komentarzu),
- grprz_kod - kod grupy przedmiotów w USOS, której wiersz odpowiada; domyślnie oznacza to, że należy (planowo) zaliczyć jeden z przedmiotów tej grupy na danym etapie (jeśli tak nie jest, to można wymienić tę samą grupę w dwóch lub trzech wierszach lub napisać o tym w przypisie lub odrębnym komentarzu),
- nazwa - nazwa przedmiotu lub grupy, której wiersz odpowiada, w przypadku gdy reprezentowany w wierszu byt nie ma swojego odpowiednika w USOS.
Jest dozwolona kombinacja atrybutów grprz_kod + nazwa - można jej użyć wtedy, gdy nazwa grupy przedmiotów z USOS jest zbyt długa (i gdy uważamy, że w tym kontekście wystarczy nam krótsza).
Jeśli podano atrybut prz_kod, to punkty ECTS oraz liczby godzin zostaną automatycznie uzupełnione danymi z USOS. Jeśli dane te okażą się niepoprawne (np. nieaktualne), lub jeśli chcemy wypełnić te kolumny ręcznie (w przypadku gdy nie możemy podać atrybutu prz_kod), to możemy wypisać własne wartości używając atrybutów:
- ects - liczba punktów ECTS,
- tpro_kod - typ protokołu (wpływa na kolumnę zal),
- wyk - liczba godzin wykładów,
- cw - liczba godzin ćwiczeń,
- inny kod typu zajęć - można użyć dowolnego z kodów zajęć zadeklarowanych w USOS,
- inne - liczba godzin pozostałych typów zajęć.
Jeśli podano atrybut grprz_kod lub nazwa, to punkty ECTS oraz liczby godzin nie zostaną automatycznie uzupełnione. Należy je uzupełnić ręcznie (z pomocą powyższych atrybutów).
<!-- Siatka niezwiązana z USOS. W przypadku takiej siatki wszystkie dane trzeba wypełnić ręcznie. --> <siatka-etapu nazwa="Semestr 1"> <zajecia nazwa="Analiza konsystencji firanek bawełnianych"/> <zajecia nazwa="Kawałki owoców w jogurtach - fakty i mity" ects="3,5" wyk="120" lab="60"/> </siatka-etapu> <!-- Siatka częściowo związana z USOS. Z USOS pobierane są nazwy przedmiotów oraz liczby godzin zajęć. Trzeba ręcznie uzupełnić punkty ECTS. --> <siatka-etapu nazwa="Semestr 2"> <zajecia prz_kod="0FI/A00-S1-REM6"/> <zajecia grprz_kod="KOD-GRUPY"/> </siatka-etapu> <!-- Siatka poprawnie związana z USOS. W tym przypadku należy jedynie uzupełnić kody przedmiotów, pozostałe dane pobierane są z USOS (jeśli w USOS dane są niepoprawne, to nadal można je poprawić ręcznie). --> <siatka-etapu nazwa="Semestr 3" prg_kod="12-2ZA/000-S2" etp_kod="12-2ZA/000-S2(2)"> <zajecia prz_kod="0FI/A00-S1-REM6"/> <zajecia grprz_kod="KOD-GRUPY" nazwa="Fakultet"/> </siatka-etapu>
<przypis>
Znacznik <przypis> może być umieszczony wewnątrz znacznika <zajecia>. Ten znacznik nie posiada atrybutów, a w jego wnętrzu umieszczamy tekst, będący treścią przypisu. Wiele wierszy może posiadać ten sam przypis (tzn. znacznik <przypis> o dokładnie tej samej treści), w takim przypadku w legendzie przypis zostanie wyświetlony tylko raz.
Alternatywnie, można zaliczyć na czwartym semestrze. Listę przedmiotów fakultatywnych zobacz w tabeli poniżej. Należy zaliczyć 2 przedmioty z tej grupy. Alternatywnie, można zaliczyć na czwartym semestrze. Więcej informacji na stronie Studium Wychowania Fizycznego
<siatka-grupy>
Znacznik siatka-grupy służy do wyświetlenia listy przedmiotów w pewnej grupie. Można z jego pomocą wyświetlić grupę zdefiniowaną w USOS lub zdefiniować własną grupę przedmiotów.
Należy obowiązkowo podać jeden lub dwa spośród następujących atrybutów:
- grprz_kod - kod grupy przedmiotów w USOS,
- nazwa - nazwa dla grupy, jeśli nie ma takiej w USOS i definiujemy własną LUB skrócona nazwa grupy zdefiniowanej w USOS (jeśli uważamy, że oryginalna nazwa grupy w USOS jest w tym kontekście za długa).
Dodatkowy (opcjonalny, lecz zalecany) atrybut:
- prg_kod - kod programu, w kontekście którego chcemy wyświetlić siatkę (punktacja ECTS na różnych programach może być różna).
Jeśli pobieramy grupę przedmiotów z USOS (podaliśmy atrybut grprz_kod), to do wnętrzna znacznika nie wstawiamy żadnych dodatkowych elementów. Jeśli definiujemy własną grupę (podaliśmy atrybut nazwa), to wewnątrz znacznika <siatka-grupy> wstawiamy elementy zajecia, podobnie jak w siatce etapu.
<siatka-grupy grprz_kod="KOD-GRUPY" prg_kod="12-2ZA/000-S2"/> <siatka-grupy grprz_kod="KOD-GRUPY" prg_kod="12-2ZA/000-S2" nazwa="Ta sama grupa, lecz inna nazwa"/> <siatka-grupy nazwa="Przedmioty fakultatywne na 3-6 semestrze" prg_kod="12-2ZA/000-S2"> <zajecia prz_kod="0FI/A00-S1-REM6"/> </siatka-grupy>
Edytory
W Informatorze ECTS dostępne są dwa edytory treści:
- Edytor prosty - umożliwia edycję i formatowanie treści bez używania języka IML. Można w nim łatwo i szybko edytować treść statyczną. Nie można w nim edytować zaawansowanych rzeczy, takich jak siatki zajęć.
- Edytor zaawansowany - umożliwia bezpośrednią edycję kodu IML. Pozwala więcej zdefiniować (przede wszystkim siatki zajęć programów), ale wymaga poznania języka.