Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 9.

Podobne prezentacje


Prezentacja na temat: "Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 9."— Zapis prezentacji:

1 Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 9

2 Lista książek Teraz coś bardziej skomplikowanego – pełna lista książek. Na liście będziemy mogli zaznaczać ksiązki do dalszych akcji Lista książek będzie zawierać nie tylko tytuły – ale także status książki Na status składają się różne dane Status powinien podawać maksymalną informację o książce

3 Lista książek… Książka jest potrzebna I ją posiadamy – znacznik OK. I jej nie posiadamy Liczba oferowanych książek Lub informacja od kogo ją kupujemy Ksiązka nie jest potrzebna a ją posiadamy Informacja o możliwości sprzedania Informacja o ofercie Informacja o tym, że ktoś ją zarezerwował

4 Cel – lista książek

5 Lista książek - kod $neededBooks = $dbase->getBooksNeededByUser($user); $booksHaving = $dbase->getOwnBooks ($user); $offers = $dbase->countOffers(); $sellingBooks= $dbase->getTransactionsOfSeller ($user); $buyingBooks = $dbase->getTransactionsOfBuyer ($user); $selection = new SelectedItems("selectedbooks"); $allBooks= null; switch($filter) { case 0: $allBooks = new RecordsetMerge(&$booksHaving, &$neededBooks, 0, 3); break; case 1: $allBooks = new RecordsetSubtract(&$neededBooks, &$booksHaving, 0, 3); break; case 2: $allBooks = new RecordsetSubtract(&$booksHaving, &$neededBooks, 0, 3); break; }

6 Lista książek - kod $booksWithOffers = new RecordsetJoin( &$allBooks, &$offers, 0,0,3,1); $books = new RecordsetTransformation( &$booksWithOffers, "0|3| |6|9"); $booksWithN = new RecordsetJoin( &$books, &$buyingBooks, 0,0,1,1); $booksWithNS = new RecordsetJoin( &$booksWithN, &$sellingBooks, 0,0,1,1); $data = new FormatCheckbox( &$booksWithNS, "0", "selectedbooks", $selection); $withSelector = new CreateStateInfo( &$data, "1|0| |2"); $grid = new GridBuilder( "Tytuł:LB3|Wybierz:CN3:60|Uwagi:CN1:160 |Opis:LN1:250"); $grid->renderGrid(&$output, &$withSelector);

7 Brakujące klasy Na poprzednim wykładzie prezentowane były klasy SelectedItems – kolekcja elementów które zostały wybrane FormatCheckbox – formatowanie komórki gridu w postaci pola pozwalającego na zaznaczanie Brakuje jeszcze: CreateStateInfo – klasa formatująca status w zależności od informacji z bazy

8 Status Formatowanie statusu jest bardzo nietypową operacją Jest silnie zależny od postaci danych Nie ma sensu silić się na uniwersalność Dane dotyczące statusu są rozrzucone po polach wejściowego rekordsetu Pola wejściowe mogą nie istnieć bo łączenie rekordsetów dodaje pola tylko gdy rekordy pasują.

9 Status… Klasa formtująca status będzie użyta tyko w jednym kontekście Nie musi być uniwersalna! class CreateStateInfo extends RecordsetOperation { function RecordsetOperation(&$source, $definition) { $this->CreateBookInfo(&$source, $definition); }

10 Status … Status składa się z Ikony wskazującej na status ksiązki Dodatkowego tekstu który zawiera uzupełniające informacje Skorzystamy z pól: Czy ksiązka jest nam potrzebna Czy książkę oferujemy Kto kupuje / sprzedaje Ilość oferowanych książek

11 Status … function createField(&$sourceArray, &$schema) { $state = ""; $additionaLinfo = ""; $additionaLinfo = $sourceArray[$schema[3]]; if ($additionaLinfo == "") { $additionaLinfo = "brak ofert"; } else { switch($additionaLinfo % 10) { case 1: $additionaLinfo.= " oferta"; break;

12 Status … case 2: case 3: case 4: $additionaLinfo.= " oferty"; break; default: $additionaLinfo.= " ofert"; break; } if ($sourceArray[$schema[0]] == 0) { if ($sourceArray[$schema[2]] == "") { if ($sourceArray[$schema[3]] == "") $state = "need0"; else $state = "need"; }

13 Status … else { $state = "buying"; $additionaLinfo = "sprzedający: ". $sourceArray[$schema[2]]; } else { if ($sourceArray[$schema[1]] == "") { $state = "have"; $additionaLinfo = ""; } else if ($sourceArray[$schema[2]] == "") { $state = "offering"; }

14 Status … else { $state = "selling"; $additionaLinfo = "kupujący: ". $sourceArray[$schema[2]]; } return "

". $additionaLinfo. " "; }

15 Wybór użytkownika Ustawienie użytkownika powinniśmy powiązać z logowaniem Informacja o tym czy, i kto jest zalogowany powinna być przechowywana w przeglądarce Nie powinna być jednak dostępna z poziomu strony lub formularza Najlepsze wydaje się COOKIE – dostępne z serwera

16 SecurityCheck class SecurityCheck { var $value; var $errorMessage; function SecurityCheck() { global $_FAKE; $this->value = $_FAKE["login"]; $this->errorMessage = $_FAKE["loginerr"]; if ($this->value=="" && $this->errorMessage=="") { $this->value = $_COOKIE["login"]; $this->errorMessage = $_COOKIE["loginerr"]; }

17 SecurityCheck… function render(&$output) { $output->out(""); if ($this->value != 0) { $dataAccess = new DataAccess(); $user = $dataAccess->getUserInfo( $this->value); if (!$user->eof()) { $user = $user->get(); // wyświetl informacje o użytkowniku }

18 Sprawdzenie użytkownika Na każdej stronie aplikacji powinniśmy sprawdzać czy użytkownik jest zalogowany W naszej aplikacji jest tylko jedna strona, można więc sprawdzić użytkownika przed wyborem – który panel powinien być wyświetlony A jeśli nie jest zalogowany – panelem aplikacji jest panel logowania.

19 Sprawdzenie użytkownika… $user = new SecurityCheck(); $panel = null; if ($user->getUser() == 0) { $panel = new LoginPanel(); if ($user->errorMessage == 1) { $panel->setError(); } else { // Tu – wybór panelu do wyświetlenia

20 Panel logowania Panel logowania składa się z kontrolek w których użytkownik na wpisać login oraz hasło Jeśli panel logowania jest wyświetlany mimo wysłania tych informacji – to znaczy że hasło lub użytkownik są błędne!

21 LoginPanel class LoginPanel { var $errorMessage; function LoginPanel() { $this->errorMessage = ""; } function setError() { $this->errorMessage = "Nieprawidłowe dane. Sprawdź czy identyfikator uzytkownika i haslo są prawidłowe i spróbuj jeszcze raz."; }

22 LoginPanel … function render(&$output) { $login = new ControlEdit("logn", ""); $passw = new ControlPassword("pass", ""); $output->out("

$this->errorMessage "); $output->out(" Użytkownik: ");
Reklamy Google