Lekcja 8 - Tworzymy paczkę instalacyjną!

Kategoria: Kurs pisania komponentów dla Joomla 1.5 [MVC] Utworzono: czwartek, 25, wrzesień 2008 Opublikowano: czwartek, 25, wrzesień 2008 Wojciech Romanek Drukuj E-mail

Niektórzy z czytających moje artykuły odetchną na pewno z ulgą i pomyślą „Nareszcie!” i będą mieć rację :) Nareszcie... Zanim stworzy się instalator trzeba mieć coś do instalacji, dlatego wcześniej postanowiłem opisać podstawy tworzenie komponentów dla Joomla. Dziś w końcu zajmiemy się tworzeniem paczki instalacyjnej!

Tworzymy sobie gdzieś na dysku katalog w którym będziemy umieszczać wszystkie pliki instalacyjne. Teraz w tymże katalogu tworzymy dwa kolejne: jeden „site” a drugi „admin” nazwy tych katalogów mogą być dowolne ale ja już się przyzwyczaiłem a poza tym oddają one bardzo dobrze zawartość katalogów. Jak już pewnie się domyślasz w katalogu „site” umieścimy pliki które mają się znaleźć po stronie frontowej komponentu, natomiast w katalogu admin pliki odpowiedzialne za zaplecze komponentu.

Przystąpmy więc do tworzenia paczki komponentu com_witaj, który tworzyliśmy w poprzednich częściach kursu... Strona frontowa i zaplecza tego komponentu nie ma nic ze sobą wspólnego bo była to jedynie swego rodzaju demonstracja ale tym się nie przejmuj... Kopiujemy zawartość katalogu: adrestrony/components/com_witaj do katalogu /site/ natomiast do katalogu /admin/ kopiujemy zawartość katalogu adresstrony/administrator/components/com_witaj. Dobrze pliki komponentu już mamy... Teraz musimy utworzyć plik instalacyjny tzw. „Manifest file” plik będzie nosił nazwę nazwa_komponentu.xml – w naszym przypadku będzie to witaj.xml. Szablon takiego pliku wygląda następująco:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<install type="component" version="1.5.0">
	<name>Nazwa komponentu</name>
	<creationDate>data utworzenia</creationDate>
	<author>Autor</author>
	<authorEmail>Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.</authorEmail>
	<authorUrl>adres.strony.autora.pl</authorUrl>
	<copyright>Prawa autorskie</copyright>
	<license>Nazwa licencji na jakiej jest komponent rozprowadzany</license>
	<version>Wersja komponentu</version>
	<description>Opis komponentu</description>
	<install>
		<queries>
				<query>
				CREATE TABLE IF NOT EXISTS `#__nazwa_tabeli` (
				`id` INT NOT NULL AUTO_INCREMENT ,
				`jakiespole` VARCHAR( 100 ) NOT NULL,
				PRIMARY KEY ( `id` ) 
				);
			</query>
			<query>
				CREATE TABLE IF NOT EXISTS `#__nazwa_tabeli2` (
				`id` INT NOT NULL AUTO_INCREMENT ,
				`jakiespole` VARCHAR( 100 ) NOT NULL,
				PRIMARY KEY ( `id` ) 
				);
			</query>
		</queries>
	</install>
	<uninstall>
		<queries>
			<query>
				DROP TABLE IF EXISTS `#__nazwa_tabeli`;
			</query>
			<query>
				DROP TABLE IF EXISTS `#__nazwa_tabeli2`;
			</query>
		</queries>
	</uninstall>
    <files folder="site">
        <filename>index.html</filename>
		<filename>witaj.php</filename>
		<filename>controller.php</filename>
    </files>
    <administration>
        <menu>Nazwa pozycji menu</menu>
        <files folder="admin">
            <filename>admin.witaj.php</filename>
            <filename>controller.php</filename>
            <filename>index.html</filename>
        </files>
    </administration>
</install>

Pól dotyczących autora, nazwy komponentu itd. nie będę opisywał bo są to pola bardzo intuicyjne i w mojej opinii nie wymagają opisu. Obszar między znacznikami install odpowiedzialny jest za instalację komponentu natomiast uninstall za deinstalację to też sprawy dość trywialne wynikające z opisu. Między znacznikami query wpisujemy zapytania SQL  odpowiednio wykonywane przy instalacji (dla install) oraz wykonywane przy usuwaniu komponentu (dla uninstall).

Między znacznikami files listujemy zawartość katalogów odpowiednio site oraz admin. Wszystkie pliki muszą być odpowiednio opisane. Pola takie jak description czy version nie są wymagane można je pozostawić puste. Każdy manifest file odpowiedzialny za instalację komponentu musi zawierać znaczniki administrator.

Prawdopodobnie już o tym wspominałem ale powtórzę jeszcze raz w każdym katalogu i podkatalogu komponentu powinien znajdować się pusty plik index.html ze względów bezpieczeństwa. Każdy plik ten musi również zostać wpisany do listy plików w pliku instalacyjnym. Plik tak przygotowany powinien być kodowany w UTF-8, jeśli wszystko gotowe to zapisujemy go. Pliki w katalogu z paczką (nie katalog!) kompresujemy do zip'a lub tar.gz nazwę paczki zmieniamy na com_nazwakomponentu.zip i paczka jest gotowa do instalacji.

Paczka się nie zainstaluje poprawnie jeśli:

  1. kodowanie pliku xml będzie niepoprawne,
  2. w pliku xml będą wylistowane pliki które nie istnieją w paczce,
  3. jeśli w katalogach komponentów na stronie z joomla istnieją już katalogi o nazwach taka jak nasza (com_nazwakomponentu),
  4. jeśli w bazie danych istnieją tabele które kolidują z tabelami których tworzenie mamy opisane w pliku instalacyjnym,

Jak sobie coś jeszcze przypomnę to dopiszę!

Odsłony: 9742