Fork me on GitHub

Thursday, August 3, 2006

Blog / New update

New update

Always at www.nowhereland.it/downloads
really a great update, if you understand Italian (i don’t have time to translate):

CHANGELOG
=========

* LAYOUT A OGGETTI
/index.php, /comments.php, /admin.php , ecc, prima usavano un sistema che ho sempre considerato brutto di \”notificare\” al sistema-flatpress che stavano per visualizzare l’index, i commenti o il pannello.
Ora queste pagine contengono la definizione di una classe, che estende una classe astratta che fa tutte le operazioni che una volta facevano i file init.php e finalize.php; questa classe può essere appunto entry, comment, standard. A seconda quindi del tipo della classe, vengono attuate operazioni differenti.
Basta definire all’interno di questa classe un metodo main()
con
class EntryLayout extends Abstract_EntryLayout { //per esempio
function main() {
//codice qui
}
}
Una volta definita la classe, basta istanziarla con un
$miaclasse =& new EntryLayout; //per esempio…
// e poi eseguire il metodo display
$miaclasse->display();

e viene eseguito tutto smile

* UTILIZZO PIU’ SAPIENTE DI SMARTY
Il template engine viene ora sfruttato maggiormente: sono stati definiti blocchi appositi per la visualizzazione delle entry, commenti, ecc.
I temi sono stati quindi ridisegnati per sfruttare queste nuove possibilità. Inoltre mi sono ispirato ancora una volta a wordpress per fare in modo che le entry vengano parsate una per una e immediatamente visualizzate (prima venivano parsate tutte insieme e visualizzate solo alla fine di tutto il processo).
Questo durante l’accesso della pagina da remoto dovrebbe dare una sensazione di maggiore \”velocità\” nel caricamento.

* LAYER DI ASTRAZIONE SIMIL-DATABASE
completo di semplice linguaggio per le query.
All’interno del metodo main() di cui sopra eseguendo per esempio il comando
$this->fpdb->query(’page:1′);
otterete tutte le entry di pagina uno. Mica male, no?
naturalmente potete fare anche richieste più complesse
$this->fpdb->query(’start:0,count:10′);
per avere le prime dieci entry.
oppure
$this->fpdb->query(’y:06,m:07,page:2′);
otterete la seconda pagina delle entry di luglio

cosa che trovo una vera figata e di cui vado molto fiero

* ENTRY E COUNTER
A grande richiesta, il counter delle entry viene incrementato sia se leggete commenti, sia se leggete permalink, ma SE e SOLO SE *NON* siete loggati! (che mi sembra giusto).
I campi delle entry, ‘SUBJECT’, ‘CONTENT’ ecc, sono ora (nell’accesso) in lowercase. Ossia, quando accedete all’array che si ottiene dal parsing facendo
$entry = entry_parse($id_della_entry) // funzione, questa, nuova, peraltro
non fate più $entry[’CONTENT’], ma solo $entry[’content’], che rende la cosa a mio parere più graziosa a vedersi e più comoda nel digitarsi smile

* PRIMA IMPLEMENTAZIONE DELLE CATEGORIE
una volta installato vedrete che nell’editing sono disponibili le categorie. Sono fisse solo perché le sto testando e non ho avuto tempo/voglia di creare un editor, comunque, fidatevi, sarà possibile crearle.
Dov’è la figata?
spb vi permetteva di creare entry tipo:
Pippo (1)
Pluto (2)
Paperino (3)

Ma in realtà nella logica di spb, visualizzare tutte le entry di Pippo non significa mostrare anche quelle di Pluto e di Paperino, anche se queste sono sottocategorie della prima. L’unico modo per ottenere questo è selezionare contemporaneamente come categorie sia Pippo, che Pluto, che Paperino quando salvate.
Con una serie di salti mortali, flatpress dovrebbe invece comportarsi come ci si si aspetterebbe.
quindi, se si fa un
$this->fpdb->query(’start:0,count:10,cat:1′);
si ottengono le prime dieci entry appartenenti alla categoria 1 e a tutte le sue sottocategorie smile
Durante l’editing non vedrete questa cosa: aprite il file fp-content/config/categories.txt per vedere come avevo impostato le sottocategorie
Comunque, se non funziona è perché ci sto ancora lavorando wink

* CATEGORIE SPECIALI
le categorie hanno un ID numerico, e spb vieta l’uso di lettere per l’id. Perfetto, allora perché non usare le lettere per creare delle categorie speciali?
il dettaglio tecnico : Potevo creare un campo ulteriore chiamato FLAG e usare quello.
Vero, però così mi toccava mettere in cache (metto in cache queste cose per rendere le ricerche più veloci, o almeno spero) anche quel campo, così la soluzione è solo leggermente sporca smile

eccole: draft, static, commslock.
DRAFT: entry bozza. non viene visualizzata normalmente insieme alle altre, ma solo nell’elenco del pannello, segnalata dal colore di sfondo grigio (per ora! lo so che non è usabile, ma bisogna anche scrivere draft da qualche parte! poi lo farò wink). Una volta disattivato questo particolare flag, la entry apparirà insieme alle altre!
le altre non funzionano (ancora)
comunque,
STATIC: entry statica. Sostanzialmente una entry che, ancora una volta non viene visualizzata insieme alle altre, e per cui è possibile impostare un \”alias\” cioè una parola di senso compiuto che punta a quella data entry, in modo che sia raggiungibile inserendo nell’url qualcosa tipo ?page=paroladisensocompiuto
I commenti NON sono disattivati di default
COMMSLOCK: disattiva i commenti per questa entry. Una static à la spb, sarà quindi una STATIC + COMMSLOCK wink

ripeto, queste ultime due non funzionano wink

* I BLOCCHI DIVENTANO WIDGETS
Perché? Bah, fondamentalmente suonava meglio big_smile
Ho previsto la creazione di una topbar e di una bottombar oltre a quella a destra e a sinistra (dipendente dal tema ovviamente).
Inoltre ho pensato che la creazione di blocchi \”personali\” come si può fare in spb poteva essere una cosa complicata. Al che ho anche pensato che una simile funzione poteva ancora una volta essere oggetto di un plugin.
Così ho creato il plugin BlockParser.
Ora i plugin possono essere istanziati più volte e possono avere dei parametri. Cosa significa?
Un plugin con un widget ha una funzione
\”plugin_nomeplugin_block($param1, $param2 …)\” (block diventerà poi anche lui widget, me lo sono dimenticato big_smile) dove $paramN sono ovviamente parametri.
All’interno del file di configurazione dei widget è possibile elencare più volte lo stesso plugin. Cui prodest?
ad esempio usare diversi parametri. Nel caso del blockparser:
//…
array(
‘blockparser:mioblocco1′,
‘blockparser:mioblocco2′,
‘altropluginsenzaparametri’,
// ecc
//…
);

dove mioblocco1, mioblocco2 sono dei file di testo contenuti (tipicamente) in fp-content/blocks/mioblocco1.txt e fp-content/blocks/mioblocco2.txt
e il cui contenuto è il solito:
\”SUBJECT|il titolo del blocco|CONTENT|[list]
[*]il contenuto del blocco
[/list]\”
(ho usato la lista perché abbiamo deciso con drudo che nei blocchi ci vanno le liste tongue)
L’editor verrà fuori anche per questo, cmq…

* SU COSA STO LAVORANDO ADESSO
razionalizzare la programmazione dei pannelli admin, che così come sono all’inizio sembravano perfetti, ma una volta che il pannello diventa complicato come quello delle entry, fanno un po’ cagare (anche se funza)

* NEL FRATTEMPO MI FACCIO ANCHE UN SACCO DI BAGNI
alla facciaccia vostra :D
Comunque, sta diventando una vera ficata, e ne sono davvero fiero!

CIAO!

–NoWhereMan

bye ;)

  1. Derfel

    Wednesday, August 23, 2006 - 14:05:40

    Non ho capito molto, ma il lavoro sembra che stia andando in avanti a grandi falcate e con ottimi risultati.
    Continua così

  2. Derfel

    Monday, August 28, 2006 - 13:40:55

    Lo sai che il blog da dei problemi quando si sceglie una lingua differente dall’inglese quando fai il setup?

  3. NoWhereMan

    Wednesday, August 30, 2006 - 06:40:16

    sicuro! :)
    Semplicemente le “altre lingue” (l’italiano) non contengono stringhe… sono solo dei segnaposto, ma c’è già samy/hydra che ci sta lavorando

    ciao!

Add comment

Fill out the form below to add your own comments

User data





Add your comment