Friday, October 14, 2016

G2 modulo , cotren






+

mani al minimo sono il laboratorio sviluppatori G2 Module Sun, 2005/10/02 07:17 - JHM Questa voce forum dal valente è probabilmente la documentazione più utile che ho trovato sull'architettura di G2 (http://gallery. menalto. com/node/36885) Alcuni concetti G2: - Visualizzazioni: Un punto di vista è una pagina HTML che visualizza qualcosa, per esempio l'album e le pagine di foto sono & quot; showItem & quot; visualizzazioni. C'è anche una vista di aggiungere un commento, la vista addComment. Etc. - Controller: Un controller esegue un comando / gestisce una azione richiesta. Per esempio. Quando si visualizza la pagina di addComment che è una visione e ha colpito & quot; & quot ;, presentare dici di un controller per aggiungere questo commento al G2. Il regolatore riceve il testo del commento titolo e commentare e per il quale elemento si dovrebbe aggiungere un commento e, infine, crea questo commento. - Controllore vs. Visualizzazioni: Visualizzazioni dovrebbero visualizzare solo qualcosa. In una vista, si caricano i dati da G2 con alcune chiamate API. Non si può mai cambiare i dati / modificare i dati in una vista. Basta caricare i dati e prepararlo per la presentazione. In un controller, si fa il lavoro. Si aggiunge un commento al database, si aggiunge un elemento a un album, ecc viste e controllori sono accoppiati molto strettamente. Quindi vi è un & quot; MVC & quot; (Model View Controller) modello di programmazione. Un punto di vista mostra un modulo web, come utente invia il modulo compilato con i dati al G2, G2 dice carichi il regolatore richiesto, il controllore riceve i dati e fa qualcosa con esso, infine, il controller reindirizza a vista (lo stesso o un'altra) tale che l'utente riceve un feedback, es & Quot; Grazie, la tua richiesta è stata gestita con successo & quot; pagina. - Blocchi, le richiamate, di precaricare: Abbiamo imparato che una visualizzazione mostra una pagina in G2. I blocchi sono piccoli elementi costitutivi di una pagina HTML completa. Per esempio. nella barra laterale G2, è possibile aggiungere un blocco di ricerca, a azioni oggetto di blocco, un caso isolato immagine ecc Inoltre, i dati EXIF ​​sotto le foto nella vista showItem è un blocco. In sostanza, un blocco è un pezzo di codice HTML e si può dimostrare come molti blocchi in una singola pagina come si desidera. C'è una GUI per aggiungere / rimuovere / configurare i blocchi in & quot; amministratore del sito & quot; - & Gt; Temi - & gt; Matrix (o qualsiasi altro tema che supporta blocchi). È possibile aggiungere alla barra laterale blocchi, di pagine di album e di pagine di foto con questo GUI. In alternativa, è possibile posizionare i blocchi in qualsiasi punto di una pagina, ma poi si deve modificare i modelli manualmente. Altro su modelli successivi. Alcuni blocchi hanno bisogno di caricare i dati aggiuntivi. Per esempio. il blocco Imge casuale deve caricare un'immagine casuale. Questo viene fatto nella richiamata. Se una richiamata è definito, carichi G2 IT. E i dati caricato viene aggiunto ai dati che viene caricato comunque e dato al modello di blocco. Alcuni blocchi hanno bisogno di inserire codice HTML nel & lt; head & gt; sezione della pagina HTML risultante. Per esempio. per aggiungere CSS o JavaScript. I precarichi sono chiamati prima dell'inizio della pagina di Emissione e nelle precaricare, è possibile aggiungere contenuti al & lt; head & gt; sezione. - Moduli: G2 è modulare. Ciò significa che è possibile aggiungere viste / controller / blocchi / themes / gestione speciale per nuovi tipi di file /. in modo modulare. Non c'è bisogno di modificare i file, basta possibile scrivere il proprio modulo di G2, inserirlo nel vostro gallery2 / modules / e cliccare su installa & amp; Attiva nella sezione amministrativa di G2 e il gioco è fatto. Il più importante e l'unico modulo obbligatorio è il modulo principale. Ha tutte le funzionalità di base, ad esempio, mostrare le pagine degli album e foto, aggiungere elementi, album, ecc E ha anche l'API per gestire altri moduli. Infine, offre un mezzo numberous per inserire il tuo funzionalità dovunque avete bisogno. - Entità: G2 ha una architettura molto elegante. È necessario avere una conoscenza di base della programmazione orientata agli oggetti (OOP) per capirlo. Naturalmente è possibile imparare le basi della programmazione orientata agli oggetti in fretta. In G2, ci occupiamo di album, le foto, le miniature, le versioni ridimensionate (ridimensiona), film, utenti, gruppi, ecc Se si guarda la definizione della parola & quot; entità & quot ;, si capisce che queste sono tutte le entità, dal momento che & quot; entità & quot; è un termine molto generale. Così, abbiamo a che fare con il termine & quot; entità & quot; molto spesso in G2. In G2, si prefissa nostre entità con & quot; Galleria & quot ;, in modo tale che non abbiamo un conflitto quando si utilizza G2 integrato in altre applicazioni. Così è GalleryEntitiy e non solo entità. Un GalleryEntity ha attributi come un ID univoco, ha un timestamp di creazione (quando è stato creato nel G2), un timestamp modifica ecc Tutte le entità hanno questo in comune. Vedi albero Galleria classe che non è del tutto fino ad oggi, ma il più fino a schema oggi abbiamo. Così alla radice, c'è la la GalleryEntity. Ignorare l'entità ThumbnailImage a destra, questo è solo un'entità dal modulo miniatura (specificare una miniatura di default per ogni tipo di file). Quindi, vediamo che GalleryUser, GalleryGroup sono un GalleryEntity (che estendono la classe GalleryEntity). Un GalleryUser ha tutte le caratteristiche e le funzioni di un GalleryEntity, più le atributes di un utente, ad esempio un nome utente, un nome completo, una password ecc Un GalleryGroup ha un nome del gruppo e il gioco è fatto. E allora vediamo la GalleryChildEntity: G2 è fondamentalmente un albero. Ogni album può contenere sottoalbum e elementi secondari, sottoalbum può ancora avere subsubalbums ecc Questa è una struttura ad albero. Alla radice dell'albero, c'è album radice, che non ha un genitore. Tutti gli altri elementi, sia esso foto, album o qualsiasi altro tipo, avere un genitore. Questa relazione, voce & lt; - & gt; genitore è relfected in questa classe, GalleryChildEntity. Così ogni GalleryChildEntity ha le proprietà di un GalleryEntity più un parentId. Quando noi scorriamo, vediamo che ci sono due GalleryChildEntities. Ci differenziamo da GalleryFilesystemEntity GalleryDerivative. I primi sono cose che esplicitamente create / aggiungere. Per esempio. un album è una cartella nel file system. Quindi è un FileSystemEntity. Quando si aggiunge un elemento di G2, ad esempio una foto, questa viene memorizzata in un file in una cartella, quindi è anche un FileSystemEntity. GalleryDerivatives sono il risultato di operazioni che agiscono su una FilesystemEntity, ad esempio per generare una miniatura, non ci resta che chiamare una funzione che genera da una foto originale. In realtà, memorizziamo GalleryDerivatives anche sul file system, ma in modo diverso. Noi conserviamo in un g2data / cache / derivati ​​/ cartella ordinati per la loro ID. Ma abbiamo potuto lasciare la cache di distanza e G2 potrebbe funzionare. Inoltre, vedremo che GalleryFileSystemEntities hanno molte proprietà diverse dai derivati. Quindi è importante distinguere i due. Ci sono due tipi di GalleryItems: (. Foto, filmati) GalleryAlbumItem e GalleryDataItem. Entrambi hanno molto in comune. Per esempio. entrambi hanno bisogno di un titolo, sommario, descrizione ecc e, quindi, è stata introdotta la classe GalleryItem. Siamo in grado di impostare il tema separatamente per ogni album, quindi questa è una proprietà album. GalleryDataItem è il termine generale per tutti i file che carichi di G2. Un DataItem ha un mimeType. È possibile implementare la funzionalità speciale per ogni mimeType, ad esempio, aggiungere un lettore audio incorporato per gli elementi audio, o aprire un editor di testo ricco per i file di testo. Al momento, ci sono implementazioni di un GalleryPhotoItem, GalleryMovieItem (ad esempio, è responsabile per mostrare i filmati in un lettore integrato nel browser) e GalleryAnimationItem (spettacoli Flash incorporato nel browser). Tutto il resto è GalleryUnknownItem. Un modulo potrebbe registrare un GalleryAudioItem e implementare alcune funzioni e questo è tutto ciò che è necessario per riprodurre file audio incorporati nel browser. Leggi derivati ​​nella sezione successiva. Riassunto: Alla fine, non avrete a che fare con questa gerarchia di classi troppo. C'è una funzione API per caricare i figli di un album e riceverai gli elementi album e elementi di dati (per lo più foto) come risultato. È quindi possibile chiamare $ item - & gt; getTitle () o $ item - & gt; getCreationTimeStamp (), ecc ed è solo bene sapere dove tutte le proprietà e le funzioni vengono. C'è una documentazione generata automaticamente su tutte le classi e le funzioni qui (Documentazione API): http://gallery. menalto. com/dev È possibile estendere questa gerarchia architettura / classe in alcun modo. Basta registrarsi le proprie classi e implementazioni. - Derivati: thumnails e ridimensiona hanno qualcosa in comune. Sono entrambi generati dalle foto originali. Utilizzando un altro termine, entrambi sono & quot; derivato & quot; da un originale. Così, noi li chiamiamo entrambi & quot; & quot ;. derivato In OOP, spesso tenta di raccogliere gli attributi e le caratteristiche di cose simili (classi) in una cosa più generale. E questo è il caso qui. miniature e ridimensiona sono molto simili, quindi abbiamo introdotto i derivati. Ci sono diversi tipi di derivati: Miniature, ridimensiona e ridimensiona preferiti. I derivati ​​citati sono tutti i derivati ​​di una foto. Ma in G2, si può avere derivati ​​di qualsiasi tipo di file. Beh, non c'è nessun altri derivati ​​oltre a quelli citati, ma si potrebbe estendere G2 con un modulo per creare un film più piccolo di un lungo film, o una versione a basso bit rate di un brano ad alta fedeltà. Così abbiamo il soggetto GalleryDerivative, che può essere qualsiasi cosa. E abbiamo il GalleryDerivativeImage che è o un pollice, un ridimensionamento o di un ridimensionamento preferito. Un GalleryDerivativeImage estende il GalleryDerivative (OOP), quindi ha tutte le proprietà e le funzioni di un GalleryDerivative troppo. - Eventi: si pensi alla seguente problema: Ogni volta che un elemento viene aggiunto alla mia galleria, mi piacerebbe essere informato con una e-mail. Il & quot; aggiungere voce & quot; codice è nel modulo principale. Ma abbiamo deciso di ridurre la funzionalità / moduli di base ad un minimo. Non vogliamo aggiungere tutte le funzionalità, ad esempio notications utente nel modulo di base. E noi non vogliamo che è necessario modificare alcuni file solo per ottenere questa funzione. Per cose come questa che abbiamo eventi. Quando mai si crea un oggetto (o un soggetto ad essere più generale) in G2, ci informa tutti gli altri moduli di questo evento. Più in particolare, abbiamo notificare solo quei moduli, che sono interessati a un evento del genere. Per risolvere il problema di cui sopra, è necessario creare un nuovo modulo di G2 e registrare un listener di eventi. Un listener di eventi è una classe che implementa una funzione specifica (handleEvent ()). Nella funzione handleEvent è sufficiente scrivere una chiamata API di invio e-mail e il gioco è fatto. L'utente finale deve solo scaricare il modulo di notifica e installarlo con un click del mouse. Ci sono altri eventi in G2 troppo: ad esempio, quando un utente fa un login, logout, ecc Quindi è possibile aggiungere moduli che fanno cose specifiche, quando qualcosa di specifico accade. - Temi: I temi sono responsabili per il look and feel di G2. Un tema può decidere cosa presente e come mostrarlo. Un tema dice G2 quali dati da caricare e il modello da mostrare. Questo suona molto generale e non sia in realtà. Come è con cose molto generali, tendono ad essere complessi. Per semplificare la vita di un creatore tema G2 carica già un sacco di dati tipici per sé. Per esempio. i figli di un album e cose correlate. Ma un tema non deve obbedire a queste pagine molto tipici album / Photo Look, potrebbe mostrare nulla. E 'fino alla creatività del progettista tema. - I modelli: I modelli sono (X) pagine HTML in G2 che includono alcuni markup Smarty per includere contenuti dinamici. Per esempio. il file album. tpl del tema matrice mostra un difetto di 3 righe per 3 colonne di miniature. Nella matrice album. tpl modello, questo viene fatto con HTML & lt; tabella & gt; & Lt; TR & gt; righe e & lt; TD & gt; cellule. Smarty è usato per fare il numero di righe e colonne dinamiche. Smarty è utilizzato anche per includere un altro modello G2 per mostrare in ogni tabella cella un'immagine. modelli G2 sostenere il markup base smarty e, inoltre, abbiamo i tag che iniziano con, ad esempio, include un'immagine, include un URL specifico, mostra qualche testo nella lingua dell'utente attiva G2, include un blocco G2, ecc In ogni modelli G2 / cartella, è possibile creare un templates / local / cartella e posto in loro una personalizzata / cambiato modello. Presto, i temi saranno in grado di sovrascrivere / sostituire qualsiasi modello di modulo. - Fabbrica: Si ricorda che è possibile estendere la gerarchia delle classi G2, aggiungere la tua GalleryAudioItem, ecc Questo viene fatto con la fabbrica. Una fabbrica produce qualcosa. In G2, si ordina qualcosa dalla fabbrica con $ entità = GalleryCoreApi :: newFactoryInstance (voglio un'istanza di un elemento che è specializzata per i file audio); Poi la fabbrica cerca il suo negozio per qualcosa che è specializzata per gli elementi audio. Se trova qualcosa, lo restituisce. Se non trova una voce audio specializzato, restituisce il UnknownItem, dato che non possiamo fare nulla al riguardo. Se si desidera scrivere un modulo che aggiunge il supporto voce audio da G2, dovete dire la fabbrica su di esso. Dovete chiamare GalleryCoreApi :: registerFactoryImplementation ( 'GalleryItem', 'GalleryAudioItem', 'moduli / audio / classes / GalleryAudioItem. class' 'audio / wav'.); Una volta registrato, la fabbrica sarà conoscere il vostro implementazione e quando si aggiunge un nuovo file wav in G2, si chiamerà. newFactoryInstance ( 'GalleryItem' 'audio / wav'.); e troverà l'implementazione GalleryAudioItem. Ma la fabbrica viene utilizzato per un sacco di altre cose: * registrare il proprio plug-in / metodo ItemAdd: Ad es Aggiungi elemento dal server locale, aggiungere elemento con il etc. caricare applet potrebbe essere fatto in moduli. Il modulo deve solo registrare il nuovo metodo * registrare il proprio ItemAddOption, sizelimit, quote, creare la miniatura su Carica ecc sono tutti oggetto aggiungere opzioni. Questo codice viene eseguito on-the-fly, quando vengono aggiunti elementi * Registrare un ItemEditOption: la customfields, multilang, thumbnail, album, foto. schede nella Modifica album / modificare foto /. scheda sono tutti i plugin * Registrare il proprio generatore di URL: il generatore di URL Rewrite crea URL brevi, con l'aiuto di mod_rewrite, sostituendo il generatore originale G2 URL. Un altro generatore URL utilizza una rete di distribuzione globale di contenuti (corallo) per la larghezza di banda sicura del server. * Registrare un intervento di manutenzione, che saranno elencati in amministratore del sito - & gt; manutenzione: ad esempio, cambiare tutti gli spazi a trattini in tutti gli elementi * registrare il proprio opzione carrello plugin / checkout: fare qualcosa con una collezione di oggetti. per esempio. zip scaricare, stampare con Shutterfly. * Registrare un gestore onLoad per un determinato tipo di entità: ad esempio, i carichi modulo multilingua didascalie in diverse lingue per tutti gli elementi caricati. Il modulo miniature casuale carica una miniatura casuale per gli elementi di album, ecc * Registrare un Colorpack, un'implementazione customfields. * Registrare il proprio plug-in di validazione: ad esempio, il test captcha nella visualizzazione registro è uno di questi plug-in di convalida * Registrati nuovi toolkit e le operazioni di toolkit, per esempio in un modulo, che può creare versioni a basso bitrate dei file musicali ad alta fedeltà * Registra un implementazione SearchInterface, per rendere i dati aggiuntivi per la ricerca, per esempio il modulo commento registra un implementazione interfaccia di ricerca per aggiungere la funzionalità di ricerca commenti * Se avete bisogno di plug-in da qualche altra parte, ad esempio, in un modulo esistente o il nucleo, si prega di incidere il vostro G2 e se ci si può convincere, ci sarà forse aggiungere altri get-plugin-chiamate troppo - Permessi: G2 ha per autorizzazioni per gli elementi. Cioè, si fa non solo impostare le autorizzazioni per ogni album, è possibile impostare per ogni articolo, se vuoi. Ci sono utenti e gruppi permessi. L'utente attivo è la somma delle sue autorizzazioni utente e tutte le autorizzazioni concesse a gruppi è membro di. Ci sono solo & quot; positivo & quot; i permessi, che è non si può dire & quot; utente X ha tutte le autorizzazioni, ma eliminare voce & quot ;. Bisogna enumarate tutte le altre autorizzazioni, non si può certo dire tutto Z. permesso meno Ogni modulo può registrare nuovi permessi. Per esempio. i registri dei moduli commento aggiungi / view / delete /. commento permessi. Il modulo principale registra il punto di vista, ridimensionare, fonte (originale) le autorizzazioni, modificare, eliminare il permesso ecc Il permesso vista voce è utilizzata per diverse cose. Una caratteristica spesso richiesta è di autorizzazioni più granulari, ad esempio modificare il nome voce, ma non modificare album a tema. Per ora, abbiamo solo & quot; Modifica elemento & quot ;, che è troppo generale. Ma che presto colpito un problema, dal momento che siamo in grado di supportare solo 32 autorizzazioni diverse in questo momento. Questo sarà probabilmente un piccolo cambiamento in G2, ma è necessario, prima di aggiungere autorizzazioni più dettagliate. - Gruppi di utenti: G2 ha gruppi di utenti piatte. Cioè, un gruppo non può contenere un altro gruppo, non è una struttura ad albero. Un utente può appartenere a più gruppi. Ci sono 3 gruppi predefiniti di G2: * amministratori del sito: questi utenti hanno [core] tutti gli accessi alla galleria e possono accedere al & quot; Site Admin & quot; sezione * Utenti registrati: Tutti gli utenti con un account sono in questo gruppo. È necessario effettuare l'accesso in modo tale che G2 si regocognizes come membro di questo gruppo. Dal momento che tutti gli amministratori hanno anche un conto, sono anche nel gruppo di utenti registrati. * Tutti: Ognuno è parte di questo gruppo, che è la somma delle utenti registrati e gli ospiti / utenti anonimi / non gli utenti registrati È possibile creare i propri gruppi di troppo. - Convenzioni di codifica: G2 è relativamente severo su variabile / funzione / classe / file /. denominazione e sullo stile di codifica. Questo non è per farti incazzare, ma aiuta molto quando si deve leggere il codice di altre persone o il proprio codice dopo qualche tempo.




No comments:

Post a Comment