Uniwersytet Ekonomiczny we Wrocławiu - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się

Krótki kurs języka IML

Spis treści

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:

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.