<!-- $Id$ -->
<chapter id="userpanel">
    <title>Userpanel</title>
    <sect1 id="userpanel-about">
		<title>O programie</title>
		<para>Userpanel jest opartą na szkielecie LMS (i ściśle z LMS współpracującą)
		implementacją tzw. e-boku. Umożliwia (albo będzie umożliwiał) klientom przeglądanie
		stanu swoich wpłat, zmianę swoich danych osobowych, edycję właściwości swoich 
		komputerów, zmianę taryf, zgłaszanie błędow oraz
		awarii do Helpdesku, wydruk faktur oraz formularza przelewu.</para>
    </sect1>
    <sect1 id="userpanel-install">
	<title>Instalacja</title>
	<sect2 id="installation">
		<title>Instalacja</title>
		<para>W lms.ini należy ustawić katalog <prompt>sys_dir</prompt> na katalog z LMS-em.
		Userpanel będzie potrzebował bibliotek LMS-a z tego katalogu. Dodatkowo w opcji
		<prompt>userpanel_dir</prompt> trzeba wskazać lokalizację Userpanela.</para>
	</sect2>
	<sect2 id="install-configuration">
		<title>Konfiguracja</title>
		<para>Oprócz opcji dostępnych dla LMS-UI, Userpanel korzysta z opcji zawartych
		w sekcji konfiguracyjnej <emphasis>[userpanel]</emphasis> (dostępnej także 
		w pliku <prompt>lms.ini</prompt>).</para>
	</sect2>
	<sect2 id="install-modules">
		<title>Moduły</title>
		<para>Moduły w Userpanelu znajdują się w katalogu <prompt>modules</prompt>. 
		Ich włączenie lub wyłączenie sprowadza się do usunięcia bądź skopiowania 
		odpowiedniego modułu do tego katalogu.</para>
	</sect2>
    </sect1>
    <sect1 id="userpanel-config">
	<title>Konfiguracja</title>
	<para>Konfigurację Userpanela umożliwia panel konfiguracyjny dostępny
	w <emphasis>LMS-UI</emphasis> w menu Userpanel -> Konfiguracja.
	LMS automatycznie wykrywa
	instalację Userpanela i udostępnia to menu, jeśli w sekcji <emphasis>
	[directories]</emphasis> zostanie ustawiona opcja 
	<prompt>userpanel_dir</prompt>.</para>
	<para>W głównym oknie znajdują się podstawowe opcje konfiguracyjne
	oraz lista (włączonych) modułów. Kliknięcie na dowolnym rekordzie
	spowoduje przejście do opcji konfiguracyjnych wybranego modułu.</para>
    </sect1>
    <sect1 id="userpanel-style">
	<title>Wygląd (style)</title>
	<para>Interfejs Userpanela jest tak stworzony, aby umożliwić
	łatwe dostosowanie do własnych potrzeb i do wyglądu swoich stron
	internetowych. Nie ma przy tym potrzeby zmiany kodu szablonów.</para>
	<para>Główne pliki z definicjami styli css oraz obrazki
	umieszczone są w katalogu <prompt>style</prompt>, w podkatalogach
	o nazwach odpowiadających nazwie stylu. Jeżeli w danym stylu nie ma 
	jakiegoś pliku, zostanie zastosowany plik ze stylu domyślnego - 
	<prompt>default</prompt>. Oprócz plików obrazków, styli css oraz 
	skryptów JavaScript styl zawiera również dwa szablony Smarty, 
	które definiują wygląd strony wraz z menu głównym (<prompt>body.html</prompt>)
	oraz wygląd tabelek z nagłówkami (<prompt>box.html</prompt>).</para>
	<para>Każdy moduł posiada własny podkatalog <prompt>style</prompt>.
	Jeżeli w nim system nie odnajdzie danego pliku zostanie użyty
	plik dla danego stylu z głównego katalogu <prompt>style</prompt>.</para>
    </sect1>
    <sect1 id="userpanel-modules">
	<title>Moduły</title>
	<para>Userpanel posiada budowę modularną. Każdy moduł, odpowiadający
	pozycji w menu, to odrębny podkatalog katalogu <prompt>modules</prompt>.
	</para>
	<sect2 id="module-structure">
		<title>Struktura modułu</title>
		<para>Drzewo katalogów typowego modułu powinno wyglądać
		następująco:
<screen>
nazwa_modułu
    |---locale
    |     |---pl
    |          |---strings.php
    |---style
    |     |---default
    |          |---image.gif
    |---templates
    |     |---template1.html
    |     |---template2.html
    |---upgradedb
    |     |---mysql.2005081901.php
    |     |---postgres.2005081901.php
    |---configuration.php
    |---functions.php
</screen>
		</para>
		<para>I kilka słów wyjaśnienia:
		<itemizedlist>
			<listitem>
				<para>Katalog <prompt>locale</prompt> zawiera
				oczywiście odpowiednie locale. W 
				<prompt>strings.php</prompt> są tylko
				tłumaczenia tekstów zwartych w danym module,
			</para>
			</listitem>
			<listitem>
				<para><prompt>style</prompt> to oczywiście
				katalog z obrazkami, zawierający podkatalogi odpowiadające
				nazwom styli używanych w Userpanelu,</para>
			</listitem>
			<listitem>
				<para><prompt>templates</prompt> to
				szablony Smarty danego modułu,</para>
			</listitem>
			<listitem>
				<para><prompt>upgradedb</prompt> zawiera pliki
				auto-upgrade'u bazy danych dla tabel których
				dany moduł używa. Nazwy tabel tworzonych na
				potrzeby modułów powinny zawierać prefiks
				<prompt>up_nazwamodułu_</prompt>,</para>
			</listitem>
			<listitem>
				<para><prompt>configuration.php</prompt>
				i <prompt>functions.php</prompt> to dwa wymagane
				pliki. Ich budowa jest opisana poniżej.</para>
			</listitem>
		</itemizedlist>
		</para>
	</sect2>
	<sect2 id="module-files">
		<title>Główne pliki</title>
		<para></para>
		<sect3 id="module-configuration">
			<title>configuration.php</title>
			<para>Ten plik zawiera konfigurację danego modułu, 
			oraz jest includowany zawsze przy inicjalizacji
			Userpanela. Typowa zawartość:
<screen>
&lt;?php
$USERPANEL->AddModule(trans('Help'),      // Nazwa wyświetlana
                    'help',             // Nazwa modułu (musi być taka sama jak nazwa katalogu)
                    trans('Runs problems solving creator'), // Tip
                    5,                  // Priorytet
                    trans('This module shows solving problems creator'), // Opis
                    2005081901,         // Wersja bazy danych (podobnie jak w  LMS, 
                                        // zobacz lms/lib/upgradedb.php)
		    array(		// Pozycje podmenu wywietlane w LMS-UI w menu Userpanel
		        array(		// (zobacz lib/LMS.menu.php)
			    'name' => trans('Submenu'),
			    'link' => '?m=userpanel&amp;module=help',
			    'tip' => trans('Tooltip'),
			),
		    )
);
?&gt;
</screen>
			</para>
		</sect3>
		<sect3 id="module-functions">
			<title>functions.php</title>
			<para>Ten plik zawiera funkcje danego modułu. Podstawową
			funkcją modułu jest <prompt>module_main()</prompt>.
			Funkcja ta jest wykonywana jako pierwsza po wywołaniu
			modułu. Jeśli chcemy aby funkcja mogła być wywołana z
			UI, to dodajemy prefiks <prompt>module_</prompt>
			np. <prompt>module_funkcja1()</prompt>. Funkcja będzie
			dostępna po wpisaniu url'a:
			<prompt>http://userpanel/?m=modul&amp;f=funkcja1</prompt>.
			Funkcja <prompt>module_setup()</prompt> jest wywoływana
			przez panel konfiguracyjny dostępny z LMSa.
			</para>
		</sect3>
	</sect2>
    </sect1>
</chapter>
