Spis treści: O autorze - 9 Wprowadzenie - 11 Rozdział 1. Programowanie przy użyciu JoomlaCode.org i SVN - 15 * Wprowadzenie - 16 * Tworzenie projektu JoomlaCode.org - 19 * Zarządzanie uczestnikami projektu JoomlaCode.org - 23 * Tworzenie repozytorium Subversion dla projektu JoomlaCode.org - 25 * Szkielet repozytorium Subversion - 28 * Modyfikacje w Subversion - 30 * Proces realizowany w Subversion - 32 * Pobieranie zawartości repozytorium Subversion przy użyciu TortoiseSVN - 35 * Edytowanie kopii roboczej przy użyciu TortoiseSVN - 39 * Analiza zmian przy użyciu TortoiseSVN - 40 * Uaktualnianie kopii roboczej i eliminowanie konfliktów przy użyciu TortoiseSVN - 41 * Zatwierdzanie zmian przy użyciu TortoiseSVN - 44 * Eksportowanie kopii roboczej przy użyciu TortoiseSVN - 46 Rozdział 2. Zapewnianie bezpieczeństwa rozszerzeń - 47 * Wprowadzenie - 47 * Tworzenie bezpiecznych zapytań SQL - 50 * Tworzenie bezpiecznych zapytań SQL, zawierających porównania ciągów znaków, z wykorzystaniem operatora LIKE - 55 * Używanie tokenu - 57 * Zapewnianie bezpieczeństwa nazwy pliku - 61 * Zapewnianie bezpieczeństwa ścieżki katalogu - 63 * Zapewnianie bezpieczeństwa ścieżki dostępu do pliku - 65 * Bezpieczne pobieranie danych z żądania - 68 * Pobieranie wartości z tablicy - 75 Rozdział 3. Praca z bazą danych - 77 * Wprowadzenie - 77 * Wykonywanie zapytania - 80 * Ładowanie pierwszej komórki ze zbioru wyników zapytania - 82 * Ładowanie pierwszego rekordu z zapytania - 84 * Ładowanie więcej niż jednego rekordu z zapytania - 87 * Obsługa błędów DBO - 89 * Tworzenie tabeli JTable - 91 * Tworzenie nowego rekordu przy użyciu JTable - 94 * Modyfikacja rekordu przy użyciu JTable - 97 * Odczytywanie istniejącego rekordu przy użyciu JTable - 98 * Usuwanie rekordu przy użyciu JTable - 99 * Blokowanie i odblokowywanie rekordu przy użyciu JTable - 100 * Zmiana kolejności rekordów przy użyciu JTable - 102 * Publikowanie i wycofywanie rekordu z publikacji przy użyciu JTable - 104 * Zwiększanie licznika wyświetleń rekordu przy użyciu JTable - 105 Rozdział 4. Sesje i użytkownicy - 107 * Wprowadzenie - 107 * Pobieranie uchwytu sesji - 108 * Dodawanie danych do sesji - 109 * Pobieranie danych sesji - 112 * Sprawdzanie obecności danych w sesji - 114 * Sprawdzanie tokenu sesji - 115 * Pobieranie danych o użytkowniku - 115 * Sprawdzanie, czy aktualny użytkownik ma status gościa - 117 * Odczytywanie imienia i nazwiska użytkownika oraz jego nazwy - 118 * Odczytywanie identyfikatora grupy użytkownika oraz typu użytkownika - 120 * Ograniczanie zakresu dostępu użytkownika przy użyciu poziomów dostępu Public, Registered i Special - 122 * Odczytywanie wartości parametrów użytkownika - 124 * Ustawianie wartości parametrów użytkownika - 126 * Rozszerzanie i edytowanie parametrów użytkownika - 127 * Wysyłanie wiadomości poczty elektronicznej do użytkownika - 131 Rozdział 5. Języki narodowe - 135 * Wprowadzenie - 135 * Tworzenie tłumaczenia - 138 * Tłumaczenie wybranego tekstu - 142 * Sprawdzanie długości ciągu znaków UTF-8 - 145 * Usuwanie niewidocznych znaków UTF-8 z początku i końca ciągu znaków - 146 * Porównywanie ciągów znaków UTF-8 - 148 * Znajdowanie ciągu znaków UTF-8 w innym ciągu znaków UTF-8 - 149 * Wykonywanie wyrażenia regularnego na ciągu znaków UTF-8 - 151 * Odwracanie ciągu znaków UTF-8 - 153 * Wyodrębnianie ciągu znaków z innego ciągu znaków UTF-8 - 154 * Zastępowanie wystąpień ciągu znaków UTF-8 w innym ciągu znaków UTF-8 - 155 * Odczytywanie w ciągu znaków UTF-8 znaku na wskazanej pozycji - 157 * Przekształcanie ciągu znaków z jednego standardu kodowania na inny - 158 * Tworzenie skryptu instalacji bazy danych uwzględniającego kodowanie UTF-8 - 159 Rozdział 6. Interakcja z użytkownikiem i style - 163 * Wprowadzenie - 163 * Odczytywanie parametrów strony i komponentu - 164 * Dodawanie do strony kaskadowego arkusza stylów CSS - 166 * Nadpisywanie szablonów w komponencie - 168 * Dodawanie kodu JavaScript na stronie - 170 * Tworzenie modalnego okna dialogowego - 171 * Generowanie treści modalnej - 174 * Uaktualnianie elementu przy użyciu Ajax i MooTools - 176 * Uaktualnianie elementu na podstawie formularza przy użyciu Ajax i MooTools - 179 * Przesyłanie odpowiedzi Ajax z komponentu - 181 * Włączanie stronicowania na liście elementów - 184 Rozdział 7. Dostosowywanie dokumentów - 189 * Wprowadzenie - 189 * Definiowanie tytułu dokumentu - 191 * Definiowanie generatora dokumentu - 192 * Definiowanie opisu dokumentu - 192 * Dodawanie metadanych do dokumentu - 193 * Zmiana zestawu znaków używanego w dokumencie - 194 * Zmiana typu MIME dokumentu - 196 * Kontrola mechanizmu zapisywania odpowiedzi w pamięci podręcznej klienta - 198 * Tworzenie dokumentu PDF w komponencie - 200 * Tworzenie kanału RSS lub Atom w komponencie - 201 * Zwracanie dokumentu w formacie RAW z komponentu - 206 * Używanie własnego dokumentu JDocument w komponencie - dotyczy wyłącznie PHP5 - 208 Rozdział 8. Dostosowywanie elementów standardowych - 215 * Wprowadzenie - 216 * Wyłączanie paska menu - 216 * Ustawianie tytułu i ikony paska narzędziowego - 218 * Dodawanie do paska narzędziowego przycisku operującego na jednostce danych - 219 * Dodawanie do paska narzędziowego przycisku operującego na zestawie danych - 222 * Dodawanie własnych przycisków do paska narzędziowego - 224 * Dodawanie odstępów i separatorów na pasku narzędziowym - 227 * Dodawanie systemu pomocy do komponentu - 228 * Tworzenie nagłówka filtru dla danych tabelarycznych w komponencie MVC - 230 * Filtrowanie danych tabelarycznych w komponencie MVC - 234 * Tworzenie nagłówków kolumn sterujących sortowaniem danych tabelarycznych w komponencie MVC - 238 * Porządkowanie danych tabelarycznych w komponencie MVC - 240 Rozdział 9. Utrzymywanie rozszerzalności i modularności - 243 * Wprowadzenie - 244 * Ładowanie modułów dodatkowych - 245 * Wywoływanie modułu dodatkowego - 247 * Tworzenie dodatkowego modułu w systemie Joomla!, realizującego wyszukiwanie - 248 * Tworzenie własnej biblioteki i funkcji importującej - 254 * Instalowanie modułu dodatkowego z poziomu kodu źródłowego w trakcie instalacji komponentu - 257 * Prosty sposób zarządzania kategoriami - 260 * Definiowanie parametrów JParameter przy użyciu języka XML - 262 * Tworzenie obiektu JParameter - 265 * Renderowanie obiektu JParameter - 266 * Zapisywanie danych JParameter - 268 * Odczytywanie i ustawianie wartości obiektu JParameter - 269 * Definiowanie własnego typu JParameter - 271 Rozdział 10. Obiekty JObject i tablice - 275 * Wprowadzenie - 275 * Odczytywanie właściwości JObject - 278 * Odczytywanie wszystkich publicznych właściwości JObject - 279 * Ustawianie właściwości JObject - 280 * Ustawianie zbioru właściwości JObject - 281 * Raportowanie błędu w JObject - 281 * Pobieranie błędu z JObject - 283 * Pobieranie wszystkich błędów z JObject - 284 * Przekształcanie obiektu w tablicę - 285 * Przekształcanie tablicy w obiekt - 287 * Odczytywanie kolumny z tablicy wielowymiarowej - 288 * Odczytywanie wartości z tablicy - 289 * Rzutowanie wszystkich elementów tablicy na liczby całkowite - 291 * Sortowanie tablicy obiektów - 292 * Łączenie elementów tablicy - 293 Rozdział 11. Obsługa i raportowanie błędów - 297 * Wprowadzenie - 297 * Zgłaszanie błędu J!error - 299 * Zgłaszanie ostrzeżenia J!error - 301 * Zgłaszanie informacji J!error - 304 * Kolejkowanie komunikatu - 306 * Zmiana domyślnego sposobu obsługi błędów J!error - 308 * Obsługa i zgłaszanie dedykowanych błędów J!error - 311 * Zapisywanie błędów i zdarzeń przy użyciu JLog - 314 * Rzucanie wyjątków w PHP5 - 316 * Przechwytywanie wyjątków w PHP5 - 319 Rozdział 12. Pliki i foldery - 323 * Wprowadzenie - 323 * Sprawdzanie, czy plik lub folder istnieje - 325 * Odczytywanie pliku - 327 * Usuwanie pliku lub folderu - 329 * Kopiowanie pliku lub folderu - 331 * Przenoszenie i zmiana nazwy plików i folderów - 332 * Tworzenie folderu - 334 * Ładowanie plików do systemu Joomla! - 336 * Odczytywanie struktury katalogów - 340 * Zmiana uprawnień do pliku i folderu - 343 Skorowidz - 345 Tu znajdziesz rozwiązania najczęściej spotykanych problemów! * Jak zapewnić możliwość rozwoju rozszerzeń w przyszłości? * Jak współpracować z bazami danych? * Jak obsługiwać błędy, wykorzystując mechanizmy Joomla!? Joomla! to rozbudowany i uniwersalny system zarządzania treścią witryn internetowych, dostępny na prawach open source. Umożliwia tworzenie nie tylko prostych stron internetowych, ale także kompleksowych, rozbudowanych serwisów. Siłą Joomla! jest prostota oraz zaangażowanie twórców w zapewnienie łatwości pracy z tym systemem. Zaawansowani użytkownicy często potrzebują jednak rozwiązań wykraczających poza możliwości dostępnych rozszerzeń. Naprzeciwko tym oczekiwaniom wychodzi elastyczny framework Joomla! — pozwala on programistom dostosowywać się w dowolny sposób i tworzyć własne aplikacje, spełniające wyrafinowane kryteria. Książka \"Joomla! 1.5 od kuchni. Ponad 130 przepisów!\" przeznaczona jest dla programistów dysponujących doświadczeniem w implementowaniu rozszerzeń dla tego systemu. Stanowi zbiór ponad 130 prostych, lecz niezwykle użytecznych przepisów, pozwalających rozwiązać praktyczne problemy związane z programowaniem w Joomla!. Dzięki swemu bogatemu doświadczeniu autor w efektywny i zrozumiały sposób dzieli się posiadaną wiedzą. Przedstawia niewielkie objętościowo przykłady, które ilustrują sposób radzenia sobie z problemami programistycznymi lub projektowymi, powszechnie spotykanymi podczas tworzenia rozszerzeń Joomla!. Profesjonaliści znajdą tu przede wszystkim praktyczne przepisy rozwiązań konkretnych trudności, a początkujący także wiedzę ogólną (związaną chociażby z obsługą błędów w Joomla!), odpowiedzi na pytania oraz sposoby realizacji standardowych zadań. Rozwiązania dotyczą podstawowych zagadnień, czyli m.in. bezpieczeństwa, dostępu do danych, użytkowników, sesji czy możliwości wykorzystania języków narodowych. * Zapewnienie rozwoju rozszerzeń * Komunikacja z bazami danych * Tworzenie źródeł Atom i RSS * Bezpieczeństwo rozszerzeń * Obsługa błędów i wyjątków * Formatowanie stron * Tworzenie międzynarodowych rozszerzeń * Komunikacja z użytkownikiem * Obiekty JObject i tablice * System plików * Korzystanie z repozytorium Subversion Poznaj rozwiązania najczęściej spotykanych w pracy z Joomla! 1.5 problemów, aby tworzyć rozszerzenia lepiej, szybciej i bezpieczniej!