metaxy quod erat demonstrandum…

9mar/1040

Panel Administratora odsłona II

Prace nad CMS o nieustalonej jeszcze nazwie trwają nadal. Jak można było przeczytać w ostatniej notce przeszedłem na drugą stronę barykady względem części ekipy z eXtreme. Dla tych, którzy są nie na czasie - poprzedni wpis, a teraz już relacja z postępów prac.

Zasadniczo od ostatniego razu do przodu posunęły się takie oto główne części:

  1. Cache, w tym cache selektywny pozwalający na to, aby dynamiczne elementy strony nie zostawały "zamrożone" oraz parę gadżetów pomagających odciążyć serwer.
  2. Integracja ze Smarty3, które choć jeszcze jest na etapie bet (Beta 8 to obecna wersja) zaczyna pracować coraz bardziej prawidłowo.
  3. Ograniczenie i optymalizacja zapytań MySQL oraz poprawki kodu HTML (te w głównej mierze zostaną wprowadzone na etapie przepisywania szablonów).
  4. Przepisanie plików lokalizacyjnych na bardziej przyjazne użytkownikowi CMS (głównie osobom, które będą w nim grzebać).
  5. Dalsze prace przy dopieszczaniu PA.

Teraz postaram się opisać na czym polega nowa, mam nadzieję ciekawa, forma budowania podstron w PA. Do tej pory stworzenie np. tworzenia, edycji newsów wymagało ponad 300 linii kodu. Obecnie potrzebne jest 1/3 z tego. Jeżeli zaś ograniczmy formatowanie kodu (czego nie polecam) to zyski są znacznie większe. Jednakże nie chodzi o to, aby licytować się objętością kodu. Miłym dodatkiem jest automatyczne generowanie  formularza wraz z jego walidacją tak po stronie użytkownika (JavaScript) jak i po stronie serwera (PHP). Dzięki temu zostaje zwiększona kontrola nad wprowadzanymi danymi, a dla twórców wtyczek stworzenie podstrony PA, do zarządzania nią, będzie banalnie proste.

Mnie osobiście dodanie takowej zajmuje kilka do 10 min w zależności od wielkości wtyczki. Wiem, że nie zapomnę dopisać pola do zapytania w bazie bo jeżeli dodaje kolejne pole to automatycznie aktualizowane są wszystkie walidatory i zapytania. W związku z poprawkami lokalizacyjnymi (tzn. zamiana wartości numerycznych np. $locale['345'] na $locale['news_subject'] możliwym stało się dalsze uproszczenie tworzenia formularzy ponieważ o ile istnieje lokalizacja o takiej samej nazwie jak nazwa pola, a my nie podamy własnego opisu zostanie on automatycznie wybrany.

Do stworzenia listy rozwijalnej wystarczy podać zapytanie, z którego ma być utworzone (w naszym wypadku lista kategorii). Może to być również tablica. Tak samo w wypadku wyboru "radio". Do obrazów tworzone są automatycznie miniatury. Nie jest jeszcze całkiem gotowe wgrywanie plików bez przeładowywania strony, ale wszystko jest na dobrej drodze. Jest całe mnóstwo różnych bajerków i uproszczeń, ale wszystkie wylistuje i opiszę jak skończę całość. Oczywiście jako, że robię to od zera dostępna będzie do tego dokumentacja (z phpDocumentatora). Krótki kod poglądowy:

$form = new Form(DB_NEWS, array('lang' => $locale));
$form->addSeparator('news_required');
$form->addHidden('news_id', array(
'validate' => 'numeric'
));
$form->addHidden('news_datestamp', array(
'value' => time(),
'validate' => 'numeric'
));
$form->addTextbox('news_subject', array(
'validate' => array('required', 'length:5-200', 'list:alfa romeo;fiat panda', 'compare:!=Legia;>5;<=30')
));
$form->addSelect('news_cat', array(
'desc' => 'news_category',
'value' => dbquery("SELECT news_cat_id, news_cat_name FROM ".DB_NEWS_CATS." ORDER BY news_cat_name"),
'validate' => array('required', 'numeric')
));
$form->addTextarea('news_news', array(
'desc' => 'news_body',
'buttons' => true,
'colors' => true
));
$form->addSeparator('news_optional');
$form->addTextarea('news_extended', array(
'buttons' => true,
'colors' => true
));
$form->addDatetime('news_start');
$form->addDatetime('news_end', array(
'format' => 5, // dostępne są również inne formaty sam czas, sama data etc.
'value' => time()
));
$form->addSelect('news_visibility', array(
'value' => getusergroups()
));
$form->addCheckbox('news_draft', array(
'desc' => 'news_save_as_draft',
'value' => 1 // 1 i tak jest domyślną wartością, więc można pominąć, ale np. w PF jest w tym miejscu "yes"
));
$form->addCheckbox('news_sticky', array(
'checked' => true // czy ma być domyślnie zaznaczony (na screenach nie jest bo są wczytane informacje z istniejącego newsa)
));
$form->addCheckbox('news_breaks', array(
'checked' => true
));
$form->addCheckbox('news_allow_comments', array(
'checked' => true
));
$form->addCheckbox('news_allow_ratings', array(
'checked' => true
));
$form->addRadio('news_something', array(
'value' => array(
array('news_option1', 1),
array('news_option2', 2),
array('news_option3', 3),
array('news_option4', 4),
),
'validate' => 'required'
));
$form->addImage('news_image', array(
'value' => IMAGES_N,
'photo' => array(/* cała fura możliwości przycinanie, negatywy, zmiana rozmiaru, sepia, znak wodny */),
'thumb' => array()
));
$form->addSubmit('news_preview', array(
'desc' => '',
'value' => 'news_preview'
));
echo $form->create();

Oczywiście jest on nadmiarowy (jak np. walidatory dla tytułu, które są w tym miejscu nielogiczne) to tylko poglądowy przykład. Efektem jego wywołania jest ten oto skromy formularz:

Podstrona newsów

Podstrona newsów

Na czerwono zostało zaznaczone pole, które nie spełniało wymagań stawianych przez twórcę i należy je poprawić. Wysłanie formularza w tym momencie nie jest możliwe. Oczywiście każdą logiczną część wydzieloną separatorami można zwijać i rozwijać (klikając na belkę), możemy też uznać, że niektóre belki mają być domyślnie zwinięte.

Zwinięty jeden z bloków

Zwinięty jeden z bloków

W chwili obecnej "w ofercie" znajdują się następujące pola, które można wstawić do formularza:

  • textbox - pole tekstowe,
  • textarea - duże pole tekstowe,
  • checkbox - pole zaznaczenia,
  • radio - pole wyboru,
  • select - lista rozwijalna,
  • password - pole hasła,
  • hidden - pole ukryte,
  • file - wgrywanie plików, tak jednego jak i wielu, w tym również wgrywanie bez konieczności przeładowywania strony,
  • image - wgrywanie obrazów wraz z ich modyfikacją (rozmiar, przycięcia, negatyw, etc.),
  • separator - dzielenie formularza na logiczne fragmenty,
  • datetime - możliwość wyboru daty i czasu,
  • html - własny kod, któremu jednak nadal można zadać walidację, etc.

Dostępne walidatory to:

  • compare - porównania: =, !=, >=, <=, >, <,
  • length - długość: minimalna, maksymalna lub ich połączenie,
  • list - czy przesłana wartość należy do pewnego zbioru,
  • numeric - wartość liczbowa,
  • regexp - test poprzez wyrażenie regularne.
  • required - pole wymagane.
  • unique - wartość niepowtarzalna.

Jeżeli ktoś z Was ma jeszcze inne pomysły na kontrolki, walidatory, które można dodać, a byłyby stosunkowo często wykorzystywane to proszę bardzo o propozycje - dorobi się. To samo tyczy się ogólnie samych formularzy. Wszelkie idee mile widziane, oczywiście na tym etapie dotyczące samych podstron PA.

Graficznie formularze są niedopracowane ponieważ po pierwsze jest to jeszcze czas zmian, po drugie grafik ze mnie żaden, a sam musiałem coś stworzyć.

Dla Waszej informacji prace przy tym CMS będą się posuwać coraz szybciej, ponieważ w kwietniu zaczynam seminarium dyplomowe i będzie trzeba zabierać się za pracę inżynierską (czyli to czym miało być EFV). Standardowo trzymajcie kciuki i rzucajcie pomysłami.

PS. Prawdopodobnie (po dzisiejszych zdarzeniach na forum EF związanych z zamykaniem mojego tematu) będzie mały problem z umieszczaniem informacji na EF.

Zakres tematyczny: Bez kategorii Dodaj komentarz
Komentarze (40) Trackbacks (0)
  1. Zadziwiasz mnie…

  2. No zapowiada się ciekawiej niż się zapowiadało :) Brawo! i powodzenia :)

  3. Brawo :)
    Bardzo podoba mi się opis z Twojej strony i będę trzymał kciuki za pomyślne ukończenie pracy nad projektem :)

  4. Brawo!
    Właśnie toporność tworzenia podstron/modułów (jak zwał tak zwał) do zarządzania była główną przyczyną porzucenia przeze mnie PF/EF na rzecz własnych rozwiązań.
    W swoim systemie mam coś podobnego w OOP i uważam że to rozwiązanie sprawdza się jak najbardziej.
    Raczej już nie wrócę (z różnych przyczyn) do ogólnodostępnych CMS, ale miło widzieć, gdy pojawia się coś dobrego od Polaka.

  5. Super notka, miła słyszeć takie informacje.

  6. Nie uszanowałeś mojej pracy, wiec prosiłbym Rafale o nie używanie ikonek, których jestem autorem.

  7. Jak sam wcześniej napisałem wywalę je. Z nimi na pokładzie obawiam się, że mielibyście prawa do tego CMS, mojego domu, duszy i działki na Madagaskarze. Poprzednie rzeczy może bym Wam oddał, ale działka na Madagaskarze jest mi bardzo bliska.
    PS. A propos szanowania mojej pracy ciekawe jak mają się prawa autorskie wszystkich moich pomocy, których Wam udzieliłem dla Waszych prywatnych zleceń… Zaś szanowanie mnie pokazałeś (i SebaZ pokazuje) swoje możliwości na EF.

  8. Nie mnie oceniać. Mówiłeś tylko co zrobić bez bitu kodu.
    Dziękuję.

  9. Aha – zakresy szkoleń są nieopodatkowane. Niemniej możesz wystawić FV, to wrzucimy w koszta.

  10. Bardzo ciekawie się zapowiada, a pytanie jakie się nasuwa to kiedy wyjdzie takie cudeńko i czy w ogóle będzie ogólnodostępne?

  11. Pisałem to już w poprzedniej notce i w komentarzach do niej. Będzie ogólnodostępne, wyjdzie mam nadzieję dosyć szybko bo od kwietnia startuje mi seminarium dyplomowe i będzie trzeba zabrać się za pracę inżynierską.

  12. Dobra robota ! :) A mam takie pytanie: zrobisz możliwość przejścia z EF 4.5 obecnie, nad którą pracuje EC (jak wyjdzie) czy to już będzie niezależne, Twój cms i koniec ? :)

  13. Witam, metaxy jeżeli chodzi o ikonki, to z chęcią mogę je wykonać.

  14. Z tego co się domyślam EF4.5 nie zostanie przepisany na KO3 ? Zrezygnowałeś też z OPT i bardzo fajnie.
    Ja trzymam kciuki za projekt, powodzenia.

  15. „Zaś szanowanie mnie pokazałeś (i SebaZ pokazuje) swoje możliwości na EF.”

    Ciekawe historie opowiadasz drogi Rafale… Tonący brzytwy się chwyta? Prawda w oczy kole? Ałx, co za szkoda.

  16. PA zrobione wspaniale. Będą dodane bajery jquery?

    PS Hmm, odszedłeś z EF i nagle w piorunującym czasie zrobili już 36% ef 4.5, ciekawe, bardzo ciekawe…

  17. Reyn to się nazywa rywalizacja.

  18. Reyn PA będzie odpicowany w jQuery, metaxy juz kiedys pisał o tym.
    Według mnie MetaxyCMS to bedzie przedsmak, przed tym co pojawi sie wraz z zakończeniem pracy dyplomowej.
    Sebaz zawsze uważałem cię za dobrego programiste (wątki na PF to potwierdziły) ale powinieneś obdarzyć Rafała szacunkiem, bo to on robił za was czarną robote a teraz odwracacie kota ogonem (o usunietych niusach/tematach juz nie wspomnę bo to porażka).
    A ja Rafale ponownie życzę powodzenia i trzymam kciuki.

  19. Fajnie się zapowiada :)

  20. Metaxy mógł byś zrobić krótki filmik z MetaxyCMSem tak jak extreme-crew to zrobiło z pokazem ef 4.5

    Dzięki z góry :)

  21. Ależ owszem, ja darze Rafała szacunkiem za jego umiejętności. Sprawa tyczy się czegoś innego, bo żadnej czarnej roboty nie odwalił. A obraz taki wyłonił tylko dlatego, że pisał takie, a nie inne teksty na swoim blogu.

    News został usunięty, bo prezentował postawę Rafała, której się nikt nie spodziewał (pożegnaniem z użytkownikami nie był na pewno). Oceniasz nas po subiektywnej notce Rafała, a nas o zdanie nie pytasz. Powiem szczerze – nie poznasz go publicznie.

  22. SebaZ dziękuję, że ukazujecie mi moje własne błędy i dajecie poznać się od strony nieomylnych i pokrzywdzonych przez moją osobę. Jak to dobrze, że są jeszcze takie latarnie, które swoim światłem pokazują mi drogę. Wy nieomylni – ja winny, dziękuję za otwarcie mi oczu.

    Dziękuję również za blokowanie możliwości wypowiedzenia się na forum EF za pomocą opcji „zablokuj temat”. O światłości świata. I nie piernicz z łaski swojej, że nie wypowiadasz publicznie opinii bo choćby w owym temacie na forum sobie po mnie pojechałeś i zamknąłeś temat, żebym czasem nic nie napisał. Więc z łaski swojej wybądź z takimi tekstami stąd.

  23. Po raz kolejny pokazujesz kim jesteś… brawo. bajo

  24. Mam nadzieję, że już tu nie wrócisz. Na EF piszę posta nie mającego z Wami nic wspólnego – wciskasz te swoje żale i objeżdżasz mnie oraz blokujesz temat, tu napisałem notkę o PA – wpadasz i znów robisz dym. Przestań śmiecić, jak będę pisał o Was to się pusz. Teraz przestań z łaski swojej bo nie widzę słowa o PA. Jeszcze za chwilę zaczniesz się żalić na niskie zbiory manioku w Brazylii.

  25. @ethreex
    Wiem jak to się nazywa, głupi nie jestem ;) .

    @metaxy
    Cóż, obecnej sytuacji nie będę komentował, bo zaraz ktoś mnie zjedzie, ale powodzenia przy cms’ie i ogólnie ;) .

  26. Kto kogo zaczął objeżdżać i kasować wypowiedzi? Na pewno nie ja, skoro ty możesz to i ja mogę, więc nie rób siebie takiego świętoszka.

  27. Meliski? Rumianku? Powiedziałem – przestań upubliczniać swoje żale bo faktycznie zacznę Cię kasować. Jeżeli masz problemy emocjonalne znajdź sobie kolegę, przytul się do niego i wypłacz w koszulę. Nie mam ochoty czytać wypocin człowieka, który ma problemy z poprawnymi zachowaniami społecznymi. Będzie trzeba to chętnie dołożę się na Twojego terapeutę, jeżeli jeszcze nie masz to czas poszukać.

    PS. Każdy kolejny komentarz nie związany z treścią notki wywalę i tyle, więc nie miej pretensji. Chcesz się wypowiedzieć o PA to się wypowiadaj, nie to znajdź sobie inne miejsce na swój ekshibicjonizm emocjonalny.

  28. Siemka fajnie to wygląda, a tak z ciekawosci w ilu około % jesteś w trakcie zrobienia.
    Dzieki z góry za odp. i pozdro

  29. Cool jest, a jak z licencją i żeby kodowanie bazy itd. było tylko w UTF-8, bo w końcu teraz większość osób na to przechodzi :D

  30. ~Qutek co do samego projektu to wiem tyle co ty (czyli nic), ale wsparcie dla UTf-8 na pewno będzie (kohana juz w standardzie obsługuje utf-8).
    A jak będą wyglądały linki ? Czy w niusach lub artykułach będzie wymagany identyfikator (nazwa.pl/news/1)?
    Ja oczywiście czekam z wielką niecierpliwością (przyszły projekt mam zamiar oprzeć o „MetaxyCMS” )

  31. poki289 – błagam przeczytaj dokładnie to co piszę od dłuższego czasu.
    To co wydam teraz: oparte na PF7, żeby ludzie związani z PF, mający tam skórki i wtyczki mogli się bawić na czymś lepszym. Robione jest tylko dla Was. Licencja – najbardziej liberalna na jaką pozwoli bycie na podstawie PF7. Procent zaawansowania: 40-50%.
    To co wydam prawdopodobnie na jesień to twór oparty o Kohanę. Będzie to moja praca inżynierska. Licencja? Do celów niekomercyjnych zupełnie darmo, jedyny wymóg link w stopce typu: „Engine: XZY”.

  32. O co chodzi z tym ocenianiem? Opcja 1, 2, 3, 4? Czyżby ocenianie dostępne dla zalogowanych, niezalogowanych, tylko po napisaniu komentarza? Ma się rozumieć, że ocenienie będzie dostępne bez niepotrzebnego odświeżania całej strony?
    Mam propozycje żeby dodać „szybki” przycisk włączania edytora TinyMCE, niektórzy z tego shit’u korzystają.
    Druga propozycja; możliwość włączenia ankiety?
    Kolejna… podgląd tekstu generowany automatycznie u góry, bez potrzeby klikania „Podgląd” też z separatorem rozwijanym…
    Obrazki newsa; oprócz z dysku, wybór z serwera, odnośnik.

    Pozdrawiam.

  33. Napisałem, że jest to przykład redundantny (nadmiarowy) nie służący do dodawania newsów tylko do pokazania możliwości API, więc opcja 1… to tylko przykład.

  34. Jeżeli nadal szukasz grafika i pomocnika to napisz do mnie na stronie UzumakiSubs.pl Chętnie pomogę. Pozdrawiam.

  35. Siemka metaxy, czy mógł byś napisać w tym tygodniu np. dziś :D jeszcze jakiegoś posta na blogu (To jest prośba) o metaxy-CMS i jakieś screeny mógł byś dał bo ostatniego posta dałeś 11 dni temu, dzięki z góry i pozdro

  36. Medialnie to spieprzasz sprawę… Koło extreme-fusion’a jest wielki szum, czego brakuje u ciebie. Jak tak dalej pójdzie to większość wybierze nie twoje jednak dzieło.

  37. Być może, wcale mi nie zależy (zupełnie) na wyborze mojego dzieła. Zacząłem to już robić to skończę, jeżeli EF zrobi coś super to też dobrze. Będę mógł się zająć pisaniem CMS z prawdziwego zdarzenia, a nie opartego na kulawym PF, co bym zrobił bardzo chętnie.
    Na EF się bawią, ok ich plus. Ja nie mam na to czasu itd. Wzięli się wreszcie do roboty i super. A że ja nie lubię robienia akcji „że Wam jajka uschną” etc. to trudno.

  38. ~ebx a po co robić szum? Naobiecywać każdy potrafi, zamiast pisać notki można już wklepać kawał cennego kodu do „MetaxyCMS”.
    Według mnie „MetaxyCMS” to będzie Demo pracy inżynierskiej, ale to tylko moje zdanie, pozdrawiam.

  39. Ja życzę ci metaxy powodzenia. Już od dłuższego czasu śledzę twój blog i nie mogę się doczekać twojego CMSa. Mam plan na stronkę, ale nie chcę robić kolejnej strony na PHPFusion, czy Extreme, więc czekam na coś nowego i dobrego. Na pewno się nie zawiodę, tylko najgorsze w tym wszystkim jest to, że muszę czekać. Ale wytrzymam. Powodzenia.

  40. Good work ! Keep us posting, you are very good writer.


Dodaj komentarz


Spam Protection by WP-SpamFree

Brak trackbacków.