Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Cercasi collaboratori (no offerta di lavoro)

    Essendo da tempo lettore del forum di html.it, questo mi sembra il posto ideale per lanciare l'annuncio.

    Sto realizzando un nuovo CMS scritto in PHP che ho chiamato ePHP3 (nome nato da un gioco di lettere del mio nome e cognome: Ephraim Pepe, 3 perché sono alla terza versione, che a differenza della 2 che è un grande potenziamento della 1, sto riscrivendo da zero)

    Per i curiosi sul mio sito ci sono i link dei siti realizzati con i cms precedenti. Ah... non tenete conto del sito... l'ho allestito in pochi giorni senza curare grafica e senza l'intento di pubbliizarlo, per ora ci tengo solo una timeline dei lavori sul nuovo CMS che a dire il vero trascuro.

    Ad ogni modo, per chi volesse scaricarla, entro lunedì prossimo pubblicerò la prima release del motore del CMS (PHP 4 e mySql)

    ops... sono a corto di batteria col portatile... sarò sintetico da ora in poi.

    Scrivo questo messaggio, perchè vorrei creare un gruppo di lavoro che possa sviluppare moduli del CMS... la prima distribuzione conterrà già un buon HELP che permetterà a chi la scarica di non trovarsi di fronte a uno sconosciuto.

    batteria a terra... sono qui per chiarimenti

    ciao a tutti

  2. #2

    specifiche del progetto

    Parte 2...
    Passo velocemente ad alcune specifiche:

    il CMS è sviluppato con php 4.3, ho deciso di non adottare php 5 perché molti hosting non supportano questa nuova versione.

    Per il db ho adottato il classico MySQL

    Ora... perché realizzare un nuovo CMS quando ce ne sono già tanti a disposizione? La risposta è che nessuno di quelli che ho "studiato" Mambo/Limbo, PhpNuke, openCMS non mi hanno convinto, per questo ho iniziato a buttare giu' il progetto della 3a versione di ePHP.

    L'idea è molto simile aquella di Mambo, ovvero un CMS espandibile con nuovi moduli installabili che forniscono nuove funzionalità (esempio un modulo per il calendario, uno per le gallerie di immagini....), ma l'idea di espandibilità non si ferma qui: ePHP3 ha al suo interno un linguaggio di microprogrammazione che implementa tutta una serie di funzioni, tra cui ad esempio anche la scrittura in automatico di Javascript, in modo tale che anche l'utente meno esperto possa scrivere dei componenti complessi con poca fatica, e questi JS pre-impostati riconosciuti dal parser del linguaggio sono espandibili, inserendo nuove classi php (scritte seguendo delle regole piuttosto semplici) all'interno di una cartella.

    Abbandono per inseguire il treno, presto continuo la descrizione del CM

  3. #3

    specifiche del progetto 2

    Continuo con le specifiche laciate a metà stamani.

    Ho puntato molto sulla modularità e facilità di espandere le potenzialità di ePHP3, e per questo
    * Classi oggetto php
    * Template e parametri di configurazione
    * Funzioni comuni
    * Funzionalità del Parser
    sono tutti elementi caricati o inclusi in automatico nel CMS

    Cosa intendo di preciso... faccio un esempio:
    nella cartella "classi" raccolgo tutte le classi oggetto php, ipotiziamo che al momento ci siano:
    -Connect.php (per il colloqui col DB)
    -File.php (per l'upload di file su web)
    -Tempo.php (metodi di utilità per formattare date)
    -User.php (bean utente)
    al momento in cui io voglia inserire una nuova classe, ad esempio un motore di ricerca, Motore.php, non devo fare altro che scivere la classe seguendo le regole di programmazione fissate (praticamente devono implementare una specie di intefaccia JAVA) ed inserirla nella giusta cartella

    Questa filosofia è stata adottata anche per le altre sezioni succitate (a parte per il fatto che le regole di programmazione delle altre sezioni non sono state ancora messe su web)

    alla prossima.

  4. #4

    Manuale del parser

    Ecco l'help e la sintasi del parser (che ho dovuto ridurre per postarlo sul form) che gira su ePHP3

    Il PARSER è l'interprete di un linguaggio studiato per permette anche ad un utente non esperto di programmazione di poter realizzare operazioni logicamente complesse con semplicità.
    Ad ogni modo il PARSER è uno strumento molto potente e se conosciuto profondamente può essere personalizzato nelle sue funzionalità più complesse con nuove classi scritte seguendo le direttive descritte più avanti, permettendo così di arricchire i comandi disponibili su ePHP.

    Il parser, oltre a essere usato in alcuni campi della gestione del sito, può essere invocato direttamente dalla pagina php scrivendo:
    codice
    <?= parser($to_parse) ?>
    dove la variabile $to_parse contiene la stringa da interpretare.

    I comandi principali di ePHP sono sostanzialmente 2, il richiamo di variabile e l'invocazione di una funzione.

    Richiamo di variabili
    Il richiamo di variabile è lo strumento più semplice che ePHP offre, ma tuttavia è molto versatile.
    codice
    <?
    ...
    $lettori = 125; ...
    ?>
    <?= parser("Questa pagina &grave; stata visitata [lettori] volte") ?>
    output
    Questa pagina è stata visitata 125 volte
    è possibile anche comporre il nome di una variabile usando un'altra variabile
    codice
    <?
    ...
    $lettoriTotali = 125;
    $lettoriOggi = 3;
    $view = $mostraTotali ? "Totali" : "Oggi";
    ...
    ?>
    <?= parser("Questa pagina &grave; stata visitata [lettori[view]] volte") ?>
    output
    Questa pagina è stata visitata 3 volte //se $view == "Oggi"
    Questa pagina è stata visitata 125 volte //se $view == "Totali"
    Questa pagina è stata visitata volte //altrimenti
    l'incapsulamento di varabili è possibile a più livelli, ma si sconsiglia di progettare strutture troppo complesse

    Inoltre è possibile recuperare valori contenuti in array mappati o in resultSet usando il carattere # all'intrno del nome della variabile
    codice
    <?
    $pagine['Totali'] = 10; $pagine['Attuale'] = 3;
    ?>
    <?= parser("Stai leggendo [pagine#Attuale] di [pagine#Totali]") ?>
    output
    Stai leggendo pagina 7 di 10

    naturalmente è possibile combinare il richiamo di Array con l'incapsulamento delle variabili
    codice
    <?= parser("[array#[campo]]") ?>
    Invocazione di funzioni
    Seconda caratteristica peculiaria di ePHP è l'invocazione di funzioni.
    Il PARSER di ePHP è in grado di interpretare già delle funzioni standard, inoltre è possibile aumentare il numero di comandi riconosciuti per alcune funzioni speciali.
    La sintassi per invocare una funzione è
    codice
    <?= parser("{FUNZ:condizione)") ?>
    dove FUNZ è il tipo di funzione da eseguire e condizione è una stringa dove viene specificata la condizione o il comando che la funzione deve eseguire.
    Faremo ora una panoramica sulle funzioni disponibili.

    SET
    La funzione SET viene usata per assegnare un valore ad una variabile o un gruppo di variabili.
    sintassi
    {SET:var_1=val_1;var_2=val_2;...;var_n=val_n}
    Può essere usato nelle proprietà dei campi del QueryMaster.
    esempio
    {SET:id_archivio=[ID_ARCHI];my_nome_file=[T_TITOLO]}
    All'interno del SET non possono essere specificate altre funzioni
    La funzione SET non restituisce nessun output a video

    IF e IF-ELSE
    Le funzioni IF e IF-ELSE sono due funzioni decisionali simili tra loro
    sintassi
    {IF:condizione?condVera}
    {IF-ELSE:condizione?condVera:condFalsa}
    Come si può notare dalla sintassi l'unica differenza fra le due funzioni è la possibilità di specicare o meno una azione da fare in caso la condizione sia falsa o meno.
    condizioni possibili
    operator
    ==
    !=
    >=
    <=
    >
    <
    IS NULL
    NOT NULL

    All'interno della condizione, prima o dopo l'operatore, possono essere dichiarate solo variabili, valori di tipo numerio o stringhe, mentre all'interno dei rami decisionali si possono inserire anche altre funzioni
    esempio
    {IF-ELSE:[goalFatti] == [goalSubiti] ? Hai pareggiato : {IF-ELSE:[goalFatti] > [goalSubiti] ? Hai vinto : Hai perso}} output
    Pisa ha perso !!!

    HTML
    La funzione HTML viene usata per formattare il testo in html, sostituendo in automatico i caratteri speciali con la loro codifica html
    sintassi
    {HTML:[testo]}
    Può essere usato per formattare un testo recuperato da database
    esempio
    {HTML:L'utente [riga#utente] però ha scritto:\n[riga#oldPost]} output html
    L'utente Pippo per&ograve; ha scritto

    Perch&eacute; non c'&egrave; pi&ugrave;?
    All'interno di HTML possono essere specificate variabili di ogni tipo e altre funzioni
    esempio
    {HTML:[squadra] ha {IF-ELSE:[[squadra]#puntiFatti] > [[squadra]#puntiSubiti] ? vinto : perso} !!!} output
    Pisa ha perso !!!

    DATA
    La funzione DATA serve per convertire il formato di ua data, da aaaa-mm-gg a gg/mm/aaaa
    sintassi
    {DATA:dataDaConvertire}
    Viene usato per convertire date lette da Database
    esempio
    {DATA:[utente#compleanno]} //ad es: 1976-02-17 output
    17/02/1976

    SESSION
    La funzione SESSION serve per leggere una variabile in Sessione
    sintassi
    {SESSION:variabile} recupera una varibile del tipo $_SESSION['variabile']
    {SESSION:array#chiave} recupera una varibile del tipo $_SESSION['array']['chiave']
    Può essere usato per recuperare informazioni residenti in sessione
    esempio
    Benvenuto {SESSION:[utente]} output
    Benvenuto Pippo
    Esistono 2 funzioni alias di SESSION: CSS e ELEMENTO

    CSS
    La funzione CSS recupera informazioni sulla grafica residenti in Sessione
    sintassi
    {CSS:variabile} recupera dati del CSS, residenti in Sessione

    ELEMENTO
    La funzione ELEMENTO recupera informazioni riguardanti il template corrente memorizzate in sessione
    sintassi
    {ELEMENTO:template,elemento} recupera dati del Template, residenti Sessione

    FORM
    La funzione FORM viene usata per inserire elementi form all'interno di una pagina, come ad esempio una select o un campo testuale. La funzione FORM è una funzione speciale, e le sue funzionalità possono essere ampliate dall'utente scrivendo nuove classi e mettendole nella directory parser/form
    Le funzioni FORM implementate e utilizzabli sul sito sono:

    FORM:calendario
    Scrive un elemento di tipo <input type="text" ... > con JS per la scrittura di date

    Variabili:

    * name (obbligatorio)
    * value

    Sintassi:
    {FORM:calendario(name=portale,value=17-02-1976)}

    FORM:editor
    Scrive un elemento di tipo <textarea name="area" mce_editable="true" ... >testo</textarea> ovvero una textarea con comandi JS di editing testuale

    * name (obbligatorio)
    * value
    * rows (default = 10)
    * cols (default = 80)
    * stille (corrisponde a class)
    * id
    * title
    * readonly
    * disable
    * onChange (comandi javascript)
    * onClick (comandi javascript)
    * onMouseOver (comandi javascript)
    * onMouseOut (comandi javascript)
    * onSelect (comandi javascript)

    Sintassi:
    {FORM:editor(name=area,value=ePHP3, ...)}

    FORM:hidden
    Scrive un elemento di tipo <input type="hidden" ... >

    Variabili:

    * name (obbligatorio)
    * value
    * id

    Sintassi:
    {FORM:hidden(name=portale,value=ePHP3, ...)}

    FORM:nextvalue
    Scrive un elemento di tipo <input type="hidden" ... > inserndo come valore un progressivo numerico calcolato da una query

    Variabili:

    * name (obbligatorio)
    * tabella (obbligatorio)
    * campo (obbligatorio)
    * where
    * visualizza
    * id

    Sintassi:
    {FORM:nextvalue(name=livello,tabella=classifica,ca mpo=livello,...)}

    FORM:selectArray
    Scrive un elemento di tipo <select ... > prendendo come option il contenuto di un array, il cui nome viene preso dal parametro option

    Variabili:

    * name (obbligatorio)
    * option (obbligatorio)
    * value
    * stile (corrisponde a class)
    * id
    * alt
    * title
    * readonly
    * disable
    * onChange (comandi javascript)
    * onClick (comandi javascript)
    * onMouseOver (comandi javascript)
    * onMouseOut (comandi javascript)
    * onSelect (comandi javascript)

    Sintassi:
    {FORM:selectArray(name=portale,option=array,value= ePHP3, ...)}

    FORM:selectTable
    Scrive un elemento di tipo <select ... > prendendo come option il contenuto di una tabella

    Variabili:

    * name (obbligatorio)
    * table (obbligatorio)
    * key (obbligatorio)
    * label (obbligatorio)
    * filtro
    * ordine (default == label)
    * value
    * stile (corrisponde a class)
    * id
    * alt
    * title
    * readonly
    * disable
    * onChange (comandi javascript)
    * onClick (comandi javascript)
    * onMouseOver (comandi javascript)
    * onMouseOut (comandi javascript)
    * onSelect (comandi javascript)

    Sintassi:
    {FORM:selectTable(name=citta,table=citta_italiane, key=targa,label=provincia,value=LI, ...)}

    FORM:text
    Scrive un elemento di tipo <input type="text" ... >

    Variabili:

    * name (obbligatorio)
    * value
    * size
    * maxlen
    * stille (corrisponde a class)
    * id
    * alt
    * title
    * readonly
    * disable
    * onChange (comandi javascript)
    * onClick (comandi javascript)
    * onMouseOver (comandi javascript)
    * onMouseOut (comandi javascript)
    * onSelect (comandi javascript)

    Sintassi:
    {FORM:text(name=portale,value=ePHP3, ...)}

    FORM:textarea
    Scrive un elemento di tipo <textarea name="area" ... >testo</textarea>

    * name (obbligatorio)
    * value (se specificato deve essere l'ultimo parametro)
    * rows (default = 10)
    * cols (default = 50)
    * stille (corrisponde a class)
    * id
    * title
    * readonly
    * disable
    * onChange (comandi javascript)
    * onClick (comandi javascript)
    * onMouseOver (comandi javascript)
    * onMouseOut (comandi javascript)
    * onSelect (comandi javascript)

    Sintassi:
    {FORM:textarea(name=area, ..., value=ePHP3)}

    JS
    La funzione JS è stata pensata per poter inserire in automatico complessi JavaScript all'interno di pagine html. La funzione JS è una funzione speciale, e le sue funzionalità possono essere ampliate dall'utente scrivendo nuove classi e mettendole nella directory parser/js
    Le funzioni FORM implementate e utilizzabli sul sito sono:

    JSperazioni
    JS per eseguire operazioni sui dati delle tabelle

    Variabili:

    * qmt (obbligatorio) : nome della tabella del QueryMaster
    * ico : pulsanti da stampare, scrivere una stringa usando i caratteri: e per attivare la modifica; d per il link dei dettagli; c per attivare la cancellazione. default = ec
    * id : (obbligatorio per la stampa dei link) id della riga
    * id2 : id della riga nel caso di chiavi multiple
    * key : (obbligatorio per la stampa del form e dei JS) nome della colonna chiave primaria tabella del querymaster *
    * key2 : nome della seconda colonna chiave primaria nel caso di chiavi multiple
    * action : pagina di arrivo. default: l pagina stessa
    * openDett : pagina usata per i dettagli. (obbligatorio se ico comprende l'opzione 'd')
    * : recuperabili d QM

    Sintassi:
    {JSperazioni(qmt=ALIAS,ico=ed,key=alias)} per stampare il form e codice javascript necessario per gestire le operazioni
    {JSperazioni(qmt=ALIAS,ico=ed,id=[row#alias])} per stampare l'invocazione al javascript sulle righe

    JSrdina
    JS di Ordinameto per l'ordinamento dei dati nelle tabelle

    Variabili:

    * form (obbligatorio) : nome del form
    * numero (obbligatorio per stampare l'invocazione al javascript) : identificativo della colonna
    * colonna : nome della colonna associato all'identificativo
    * label : etichetta della colonna
    * ordine : identificativo della colonna su cui è stata fatto l'ultimo ordinameto. il segno indica se l'ordinamento è stato fatto in ordine ascendente o discendente

    Sintassi:
    {JSrdina(form=risultati)} per stampare il form e codice javascript necessario per gestire l'ordinamentto
    {JSrdina(form=ordinaTabella,numero=3,ordine=1)} per stampare l'invocazione al javascript sulle colonne

    Per sfruttare tutte le potenzialità del JS è consigliato inserire prima tutte le invocazioni al javascript per ordinare le colonne completo di tutti i dati, e solo in seguito richiamare la stampa del codice javascript per la gesione del form. In questo modo la variabile $ordine conterrà il criterio d ordinamento da aggiungere in coda alla query che genera la lista.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.