Un proiect open source


  1. #1
    Member outkast's Avatar outkast reprezinta o cantitate neglijabila
    Data de inscriere
    28-02-2006
    Varsta
    39
    Sex
    M
    Mesaje
    106
    Putere Reputatie
    37
    Reputatie
    10
    Puncte CF
    0.0
    Usergroups:

    Un proiect open source

    Salutare,

    Desi am mai avut tentative de proiecte open source pe acesta sper sa il intretin (cel putin atata timp cat o sa folosesc php )
    De ceva timp lucrez la un framework php si fiindca se apropie momentul cand o sa fac tagul cu versiunea 0.4 o sa il postez si aici in caz ca e cineva interesat sa il testeze sau eventual sa participe in dezvoltarea lui.

    Proiectul se numeste General Website Framework (stiu ca e cam lung si sunt deschis si la alte nume, prescurtat e GWF), si este in "early beta". Cu toate acestea l-am folosit in productie pe cateva siteuri se se misca ok si versiunea 0.3 e ok atata timp cat stii de ce bug-uri sa te feresti .

    Framework-ul nu e ceva gen Cake sau stiu eu ce alte chestii orientate pe MVC ci este orientat pe evenimente, si incearca sa ajute cat mai mult la crearea site-urilor interactive si sa ascunda toate detaliile legate de implementarea "AJAX" (nu imi place termenul dar asta e, nu il luati ca pe un buzzword).

    Totul este modular si se poate extinde, conexiunea cu baza de date este abstractizata si are o interfata generica, uniforma desi momentan am implementat conector doar pentru MySql. Are un sistem de templateuri gen Smarty dar cu o sintaxa diferita, manager de sesiuni, caching, widget-uri si formuri. Widgeturi-lor si formurilor li se pot atasa evenimente ce sunt declansate de pe client prin "AJAX". Formurile pot avea validatori atasati si validare interactiva. Si sunt sigur ca uit cateva chestii dar m-am lungit cam mult cu postul asa ca e destul.

    Descarcati-l, testati-l (installerul e buggy, dar nu e nevoie de instalare pentru demo, doar puneti 777 pe /tmp daca il rulati pe linux). Eu va raspund cu placere la orice intrebare

    LE: O sa-l tin aici: http://pt-toolkit.googlecode.com/
    Last edited by outkast; 06-10-2008 at 12:01.
    Remember the difference between a boss and a leader: a boss says "Go" a leader says "Let's go"



  2. #2
    <div id="usertitle"> mindwar's Avatar mindwar este o raza de lumina in ochii tuturor mindwar este o raza de lumina in ochii tuturor mindwar este o raza de lumina in ochii tuturor mindwar este o raza de lumina in ochii tuturor mindwar este o raza de lumina in ochii tuturor mindwar este o raza de lumina in ochii tuturor
    Data de inscriere
    29-09-2005
    Locaţie
    Craiova, Romania
    Varsta
    39
    Sex
    M
    Mesaje
    4,886
    Mesaje bazar
    295
    Putere Reputatie
    62
    Reputatie
    693
    Puncte CF
    29.0
    Usergroups:
    salut... ce sa zic. felicitari pt efort.
    m-am uitat rapid peste code si din el si postul tau nu prea reusesc sa vad avantaje in fata unui framework consacrat cake/ci/zf... imi scapa ceva?
    oricum multa bafta cu sustinerea. ma indoiesc totush ca o sa ai si alti utilizatori fata de tine. cel mai important lucru pt asa ceva e documentatia. si mai toate frameworkurile de mai sus de-abia se tin de asta cu toate persoanele care contribuie... o sa ai de lucru
    poze

    We have a very simple policy here: arguing with the mods is allowed, winning an argument against the mods will get you banned.
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

  3. #3
    Coder azzuro's Avatar azzuro a avut ceva conflicte in trecut
    Data de inscriere
    27-11-2005
    Sex
    M
    Mesaje
    124
    Mesaje bazar
    30
    Putere Reputatie
    0
    Reputatie
    -6
    Puncte CF
    40.0
    Usergroups:
    O sa arunc si eu un ochi sa vad ce si cum. Desi personal sunt adeptul codului scris de propria-mi manuta, trebuie sa te felicit pentru efort. E bine de vazut ca mai sunt oameni pe forum cu asemenea preocupari. O sa revin cu amanunte dupa ce ma intorc din concediu. Bafta!

  4. #4
    Member outkast's Avatar outkast reprezinta o cantitate neglijabila
    Data de inscriere
    28-02-2006
    Varsta
    39
    Sex
    M
    Mesaje
    106
    Putere Reputatie
    37
    Reputatie
    10
    Puncte CF
    0.0
    Usergroups:
    Salut,

    Da stiu ca nu o sa existe prea multi useri, chiar daca eu voi fi singurul tot e ok, nu este un efort prea mare, framework-ul evolueaza de la un proiect la altul si pentru mine si-a atins scopul.

    Inca ii lipsesc cateva chestii si inca mai am cateva idei, daca ai deja un workflow cu care esti obisnuit intr-adevar inca nu merita sa il folosesti.

    Fata de alte framework-uri cred ca difera doar modul de lucru.
    Documentatia deocamdata e doar in cod stil Javadoc si un readme scurt care explica cat de cat structura, inca incerc sa stabilizez codul si pentru cei 2 useri actuali pe care ii are e destul.

    Iti multumesc pentru post

    //edit:
    @azzuro

    Hehe.. stiu si eu sunt adeptul "do it yourself" si cam asa a pornit toata treaba, scripturi stranse de la proiect la proiect.

    Ah.. si cred ca stiu un motiv pentru care e mai bun framework-ul asta decat altele: ai tipul care intretine codul in lista de mess si poti sa ii spui ce nu iti place sau ce ai vrea sa implementeze
    Remember the difference between a boss and a leader: a boss says "Go" a leader says "Let's go"



  5. #5
    Coder crick67's Avatar crick67 reprezinta o cantitate neglijabila
    Data de inscriere
    05-01-2007
    Locaţie
    Craiova
    Varsta
    39
    Sex
    M
    Mesaje
    76
    Mesaje bazar
    230
    Putere Reputatie
    36
    Reputatie
    10
    Puncte CF
    25.0
    Usergroups:
    Ca idee, poti sa ne dai un site ce foloseste framework-ul tau?

  6. #6
    Member outkast's Avatar outkast reprezinta o cantitate neglijabila
    Data de inscriere
    28-02-2006
    Varsta
    39
    Sex
    M
    Mesaje
    106
    Putere Reputatie
    37
    Reputatie
    10
    Puncte CF
    0.0
    Usergroups:
    http://grafiprint.ro/ - v0.2
    http://constantinmagureanu.ro/ - v0.3
    Continutul nu e pus de mine ci de clienti..
    Ambele sunt siteuri destul de simple, cu editare in-page si fara panou de admin dedicat..

    Cel mai mare inca e in teste si nu pot sa pun un link aici fiindca nu e proiectul meu, pot sa spun doar ca e un magazin virtual si foloseste versiunea 0.2, nu pentru suportul ajax ci pentru formuri, useri, clasele ce se ocupa de baza de date si motorul de templateuri.

    //Edit:
    Sa explic cat de cat ce contine..

    Totul este pus in /include, designul este modular, in base sunt modulele de baza si in ext sunt extensiile.
    Pentru a incarca framework-ul trebuie inclus /include/base/core.php fisier care initializeaza tot. Pentru a incarca un modul apelati Core::load('ext/nume_modul')

    Sa incep cu modulele de baza care sunt incluse automat.
    Core: contine 3 clase, Core ce se ocupa de incarcarea modulelor si de initializare, defineste 4 constante globale ROOTPATH ce contine calea spre root-ul framework-ului de exemplu /home/www/public_html/gwf, INCLUDEPATH ce contine calea spre /include, BASEURL ce contine url-ul spre framework si DEBUG care e true/false in functie de setari. Util ce contine cateva metode utilitare cum ar fi Util::makeUrlFromPath() care converteste o cale intr-un url. Settings ce contine o clasa pentru gestiunea fisierelor de configurare. Un fisier de configurare contine setari si este incarcat cu Settings::getInstance()->load('nume_fisier.conf.php') setarile vor fi incarcate in Settings::getInstance()->nume_fisier ca array.
    Setarile framework-ului sunt in /include/base.conf.php si setarile bazeli de date default sunt in /include/database.conf.php

    Database: contine conectorul la mysql (voi implementa mai multi conectori in timp). Conectorul refoloseste conexiunile duplicat (acelas server, acelas user) si initiaza o conexiune cat de tarziu poate (la primul query).

    Session: contine un manager de sesiuni ce are 3 propietati statice (sunt array-uri).
    Session::$page tot ce puneti aici va fi sters la schimbarea paginii (nu la refresh).
    Session::$global functioneaza ca sesiunile normale.
    Session::$persistent mentine valoarea intre sesiunile normale php.

    User: se ocupa de useri, logare/delogare, propietati ale userilor si grupuri de acces.

    Cache: se ocupa de caching

    Template: contine TemplateEngine si TemplateParser si mai multe clase ce implementeaza comenzi.
    Aici ar fi multe de spus... template-urile sunt compilate si tinute in cache, sintaxa folosita este extensibila si va puteti defini comenzi custom.
    Puteti sa includeti fisiere js si css de oriunde, fisierele sunt incluse in merge groups si cele din acelas grup sunt concatenate intr-un singur fisier. Daca activati minimizarea vori fi si minimizate.
    Tag-urile default sunt:
    <% include: /cale/spre/fisier/css/sau/js %>
    <% if: conditie %> <% elseif: alta conditie %> <% else %> <% end %>
    <% while: conditie %> <% end %>
    <% do %> <% while: conditie %>
    <% for: initializare, conditie, inc/dec %> <% end %>
    <% foreach: iterator as valoare %> <% end %>
    si expresii. O expresie poate fi de atribuire: <% var = 2 %>, <% var++ %>... sau echo <% var %> ce va afisa valoarea.
    Clasa user defineste tagul <% access: grup1, grup2.. %> <% else %> <% end %>
    Sintaxa unui tag e ceva de genul: <% token: parametri %> <% end %>.
    <% end %> poate sa lipseasca daca tagul e o expresie.
    Puteti accesa variabile adaugate din php si puteti apela functii php si accesa variabile globale ($_GET, $_POST.. ).

    Extensiile trebuie incarcate manual.
    Captcha: un modul ce se ocupa de generarea imaginilor captcha.. e foarte usor de folosit, nu are prea multe setari de fapt puteti face ceva de genul:
    $captcha = new Captcha() si e suficient daca va convin default-urile. Numarul si dimensiunea caracterelor sunt calculate automat in functie de dimensiunea imaginii de fundal folosita.

    Images: se ocupa de procesarea imaginilor.. contie Image ce incarca/salveaza si e un wrapper pentru orice fel de imagine si ImageTransform ce sunt filtre pentru procesare. Pana acum am implementat ImageScale, ImageCrop, ImageScaleAndCrop (merge bine pentru thumbnail-uri) si mai sunt cateva pe drum

    Mail: o clasa ce se ocupa de mail, trebuie rescrisa fiindca nu prea imi place cum a iesit.. desi functioneaza.

    Events: tot ce tine de AJAX e aici.. nu este un modul pe care sa-l folositi direct, este folosit de Widgets.
    Un eveniment este o clasa ce contine handlere si extinde Event sau ConfirmableEvent. Un handler este o metoda a clasei Event (ex: public function onClick($manager, $data) )

    Widgets: tot ce tine de interfata este facut pe baza lor.. Modulul contine 2 widgeturi default (Widget care practic este un div ce poate avea evenimente si efecte, Button la fel ca Widget dar buton). Si extensii pentru parser, widgeturile sunt parsate cu cateva chestii in plus.. puteti sa le atasati propietati html (class, style.. si effects care e custom)

    Paging: un widget ce se ocupa de paginare.

    Forms: este cel mai complex modul in afara de Template. Cu el creati formuri. Un form contine FormElements si fiecare element poate avea atasati validatori (StringValidator, Numeric, Regex, Mail, FileUpload.. ) ce vor afisa mesajul de eroare definit pentru ei in cazul in care datele nu sunt valide. Formurile si elementele pot avea atasate evenimente (onclick, onkeyup... tot ce aveti in javascript, si pentru form mai este onSubmit).

    Toata procesarea se intample in handlerul onSubmit ce este apelat doar in momentul in care toate elementele au fost validate cu succes.

    Am creat deja cateva elemente de baza: FormTextbox, FormPasswordField,
    FormCheckbox, FormRadioButtonGroup, FormCheckboxGroup, FormDropdown, FormSimpleFileUpload, FormFCKEditor..

    Tot javascriptul este facut cu Prototype..

    In mare cam atat cred, mai sunt cateva chestii de implementat si dupa restante vreau sa ma apuc de internationalizare si sa curat putin installerul care este destul de buggy acum..
    Last edited by outkast; 10-08-2008 at 14:45.
    Remember the difference between a boss and a leader: a boss says "Go" a leader says "Let's go"



  7. #7
    Newcomer adyv_adyv va deveni faimos in curand
    Data de inscriere
    01-06-2009
    Sex
    M
    Mesaje
    26
    Mesaje bazar
    38
    Putere Reputatie
    31
    Reputatie
    53
    Puncte CF
    6.0
    Usergroups:

    cOngrats!

    Ma bucur si eu mult sa vad romani cu astfel de idei pe care le si pun in aplicare
    Sper sa-l vad si intr o varianta 1.0 in curand

    Multa bafta!
    Edited by MOD - fara reclama!
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

Google+

Cautati logo-ul CraiovaForum?

Iata cateva variante: