W skrócie napisze co ma robić aplikacja i z jakich bibliotek będę korzystać.
Chcę stworzyć generator, który by pozwalał na proste tworzenie formularza z wykorzystaniem AJAX.
Zasada działania polegała by na wprowadzeniu wymaganych pól formularza, nadawanie reguł na dane pola, filtry i wybranie akcji.
Reguły nakładane na pola formularza:
- pole wymagane
- wartość typu liczby
- własne reguły
- upload plików itd.
Akcje:
- Zapisanie do bazy danych
- Wygenerowanie PDF
- wysłanie Emaila
- wykonanie dowolnego skryptu itd.
Filtry
- czyszczenie wartości ze spacji na początku i końcu wartości (polecenie trim) itd.
Wygląd formularza był by tworzony przy pomocy dowolnego programu typu Dreamware lub FrontPage, który powstały szablon by zwierał tylko odwołania do zmiennych ( $labelImie, $imie ). Zmienne zawarte w szablonie zostaną zamienione na kod html dla danego pola np.
.
<input id="ddd" name="ddd">
Do realizacji mojego zadania chcę maksymalnie wykorzystać gotowe rozwiązania aby nie odkrywać na nowo już dawno znanych wzorców projektowych i bibliotek. Tak więc będę wykorzystywać :
- FrameWork Code Igniter
- Xajax (biblioteka AJAX)
- PEAR – HTML_QuickForm
Do tematu podszedłem w ten sposób że każde dowolne rodzaj pola jaki może wystąpić w formularzu jest osobną klasą (np. pola typu input generowane są przez klase input).
Reguły są nakładane w taki sam sposób jak to robione jest w HTML_QuickForm elementy w sumie też podobnie ale tworze klasy ponieważ każdy element czy to reguła wymaga jakiś specyficznych parametrów zanim zostanie wygenerowany element czy nałożona rugała.
Np. tworząc własną regułę pozwalająca na wypełnienie formularza w danym czasie. Do takiej klasy należy przekazać kilka parametrów takich jak data rozpoczęcia i zakończenia publikacji formularza. A chce też w późniejszym czasie dodawać proste klasy dodające nowe funkcje. A że program ma generować formularze, musi wiedzieć o jakie parametry należy poprosić użytkownika.
Po niżej przedstawiam diagram klass.
Diagram przedstawia tylko klasy odpowiedzialne za tworzenie formularza, która sama się nie złoży i należy jeszcze dodać klasy odpowiedzialne za składanie obiektów w całość (klasy odpowiedzialne za wyświetlanie strony w której graficznie dodawało się pola do formularza - dla mnie to będzie najgorsze, ponieważ zawsze mam problemy z złożeniem w całość. Często kod staje się mniej czytelny i sam się w nim gubię

Proszę też uwagi co do samego diagramu. Na pewno strzałki pokazujące relacje pomiędzy klasami nie są poprawne ponieważ nie do końca poznałem, sens praktycznego stosowania danych relacji jak złożenia, skojarzenia, generalizacja itd.
Co do diagramu. Mam problemy z dodawaniem polskich znaków tak więc, w diagramie, gdzie nie gdzie są polskie znaki. Wynika to iż program ma przypisane skróty klawiszowe, np ą maże całą zawartość pola.

Narzędzia jakie stosuje to:
- Zend Studio
- StarUML
- DBDesigner