We migrated the site to the new version. So some links may not work properly: please be patient. Thank you.

Joomla! 1.5 generatore di componenti

marco component's builder for Joomla! 1.5Creare componenti per Joomla 1.5! è decisamente più complicato che farlo per la versione 1.0 dato che è necessario scrivere parecchio codice per  controllers, models, views, tables e per i templates delle view.

Tuttavia buona parte di questo codice è giusto una scrittura meccanica... e allora perchè riscriverlo ogni volta?

Questo è il motivo per cui ho scritto questo generatore di componenti per Joomla! 1.5, per me è stato utile, spero lo sia anche per voi.

 

Creare componenti per Joomla! 1.5

Nota: testo non aggiornato. vedi la versione inglese


CARATTERISTICHE

  • genera componenti completamente funzionanti
  • recupera i dati necessari direttamente dal database mySql
  • auto determina la chiave primaria
  • crea controllers, models,  views, tables e templates
  • crea i files necessari per l'editing dei singoli record e per il listing delle tabelle
  • genera componenti installabili
  • si basa su template php personalizzabili per generare i files di Joomla
  • i template sono basati sul componente com_hello in modo da poter far riferimento alla documentazione ufficiale di Joomla!

 

REQUISITI

  • runtime di .NET 2.0+ o Mono 2.4.3+
  • MySql Connector-Net 6.2.3, scaricabile da http://dev.mysql.com/downloads/connector/net/
  • un db mySql accessibile via tcp/ip con installate le tabelle contenenti i dati per la gestione dei quali si vuole creare il componente
  • un po' di pazienza dato che è ancora in beta...

Versioni precedenti la 1.5.0

  • perchè siano creati componenti funzionanti, le tabelle devo avere questi tre campi (default di Joomla!): id (chiave primaria), published e ordering. Se questi campi non esistono dovranno essere editati anche i sorgenti di table e controllers.

 

 

ISTRUZIONI

Attenzione: leggere attentamente le istruzioni e gli articoli relativi al componente di esempio prima di chiedere aiuto. Il programma è fornito gratuitamente, ma senza alcun supporto.

1.

scaricate il pacchetto: Joomla! 1.5 generatore di componenti e decompattatelo in una cartella.

 

2.

modificate  JoomlaComponentBuilder.exe.config (marcoComponentMaker.exe.config nelle versioni successive alla 1.1) ed aggiungete il vostro server mySql nella sezione delle connectionStrings

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="testServer" providerName="MySql.Data.MySqlClient" connectionString="Server=192.168.10.76;Database=vmtest1;Uid=root;Pwd=;"/>
</connectionStrings>
</configuration>

dovrete inserire:

  • indirizzo ip o mnemonico del server (Server)
  • nome del database da usare (Database)
  • nome utente (Uid) [deve poter vedere le tabelle necessarie al componente]
  • password (Pwd)

 

Nota on Mysql connector 6.2.2:

Questa versione del connettore presenta un bug: l'inserimento di una chiave senza il corrispettivo valore genera un errore a runtime; pertanto, qualora vogliate accedere al DB senza password, dovrete ometterne,oltre il valore, anche la dichiarazione.

la connection string diviene pertanto, da:

<add name="testServer" providerName="MySql.Data.MySqlClient" connectionString="Server=192.168.10.76;Database=vmtest1;Uid=root;Pwd=;"/>

a:

<add name="testServer" providerName="MySql.Data.MySqlClient" connectionString="Server=192.168.10.76;Database=vmtest1;Uid=root;/>

(i valori per ip e database sono solo esempi)

 

Driver MySQL Connector più aggiornati: (dalla v 1.5)

Per usare un driver MySQL  più recente di quello con cui è stato compilato il programma aprite il file marcoComponentMaker.exe.config ed individuate la linea con

<bindingRedirect oldVersion="6.2.3.0" newVersion="6.2.3.0"/>

inserite la  "build version"  del driver come parametro newVersion.

Al momento attuale, l'ultima versione disponibile di mysql connector è la 6.3.5,così, se avete scaricato questa versione, la linea diventa:

<bindingRedirect oldVersion="6.2.3.0" newVersion="6.3.5.0"/>

3.

lanciate il programma.

compilate i campi:

  • il nome del componente (Component Name)
  • il nome (senza _ od altri caratteri strani, usando solo lettere minuscole) da usare in models. controllers... (Safe Name)
  • il prefisso delle tabelle usato per l'installazione di Joomla (Prefix Table) [la parte del nome da sostituire con '#__', tipicamente 'jos_']
  • il tipo di render per i campi di tipo "text" (Render "text" fields as)
    • textarea: default html <textarea>
    • rte editor: Joomla! rte editor
  • il tipo di render per i campi di tipo "datetime" (Render "datetime" fields as)
    • calender: Joomla! js calendar
    • string: default html <input>
  • Generate translation file: crea il file di traduzione en-GB

 

4.

selezionate il database e poi le tabelle per le quali diovranno essere creati models, controllers e views

compilate i campi:

  • Select: selezionate le tabelle che faranno parte del componente
  • FE: non ancora implementato
  • FE view: non ancora implementato
  • Single record object handlers name: il nome usato per creare gli oggetti necessari alla gestione dei singoli records della tabella
  • Recordset object handlers name: il nome usato per creare gli oggetti necessari alla gestione alla lista dei records della tabella

 

5.

il programma effettua il parsing del DB per creare il componente per Joomla! e visualizza i campi contenuti in ogni tabella

 

use tab navigation to select the table to edit. These options works only on BE (back end)

  • Field name: (read only) nome del campo
  • Field type: (read only) tipo del campo
  • Show in list: visualizza il campo nella lista dei record (default: primary key, `id`, `name`, `title`, `publish`, `published`, `ordering`, `access`)
  • Search: effettua la ricerca nel campo nella visaulizzazione della lista dei records (default: all text type fields)
  • Show in edit: visualizza il campo della form di edit (default: all but primary key)
  • Get Field Data: genera il metodo nel  'record list model' per ottenere tutti i valori del campo (see code comments for help)
  • Foreign key: non ancora implementato
  • Render As: usa un specifico tipo di campo di editing per la gestione del dato (input, text area, rte, select, boolean radio, calendar)
  • Comment:  (read only)

 

6.

Non ancora implementato. Options (preferences) per il componente. Non fa niente, premi 'Next Step'.

 

7.

e crea il componente per Joomla! in una sottodirectory nella cartella in cui è stato eseguito il programma (com_[Safe Name])

 

8.

A questo punto dovrete:

  • correggere le form di editing dei dati nelle forms di back-end in com_[Safe Name]/admin/views/[Table Class]/tmpl/default.php
    • correggere il javascript di controllo
  • rimuove i campi non necessari dalle form di visualizzazione dei record set in com_[Safe Name]/admin/views/[Table Class List]/tmpl/default.php
  • disegnare il layout delle views di front end in in com_[Safe Name]/site/views/[Table Class]/tmpl/default.php
  • ovviamente aggiungere la logica del componente nel controller ;)

versioni precedenti la 1.5.1:

  • rimuovere i campi non necessari dalle form di editing in com_[SafeName]/admin/views/[TableClassList]/tmpl/default.php

versioni precedenti la 1.5.0:

  • aggiungere il routing per indicare la view  di default nel back-end (decommentate il codice ed aggiungete il nome del controller e view) in com_[Safe Name]/admin/[Safe Name].php
  • in com_[Safe Name]/admin/views/[Table Class]/tmpl/default.php creare le textarea se necessario l'editing di HTML; attualmente sono creati solo input di tipo text che non possono gestire codice HTML; in tale caso deve essere modificata anche la funzione 'store()' nel corrispettivo model per permettere tale tipo di contenuto.

compattate il componente, oppure caricatelo nella directory /tmp, ed installatelo.

 

9.

fatemi sapere che cosa ne pensate: siate buoni, è ancora in beta ;)

 

OS supportati

Il programma richiede Microsoft .NET 2.0+ o Mono 2.4.3+ pertanto può essere utilizzato su qualsiasi sistema operativo che supporti uno dei due frameworks:

  • windows: XP, Vista, Windows 7, Windows 2003
  • linux
  • Mac OS X Tiger (10.4), Leopard (10.5), and Snow Leopard (10.6)

Il pacchetto di installazione contiene la libreria Mysql.Data.dll 6.1.2.0 per windows (dalla versione 1.1 la libreria deve essere scaricata a parte), per utilizzare il programma in un altro OS cancellate la libreria ed installate il pacchetto 'Connector-Net 6.2.2' o successivo versione '.Net & Mono (Architecture Independent)' , o successivo, da mysql.com.

Per maggiori dettagli, o per la risoluzione dei problemi di installazione di Mono fate riferimento al supporto di Mono e del vostro sistema operativo.

Lavorare su Ubuntu

istruzioni brevi: Per usare il software su Ubuntu (testato con Ubuntu 10.4) installate i pacchetti 'monodevelop' e 'monodevelop-database'. Dopo di che scaricate il pacchetto 'Connector-Net 6.2.2' o successivo versione '.Net & Mono (Architecture Independent)' da mysql.com. Decomprimete il pacchetto ed installate la libreria nel GAC, da root, con

gacutil -i [pathToLib/]mysql.data.dll

dopo di che copiate mysql.data.dll in /usr/lib/mono/2.0/

Bigham, che ringrazio, mi segnala anche che a volte è necessario rinominare il file mysq.data.dll in MySql.Data.dll (http://forums.mysql.com/read.php?47,367529,367529).

Nota importante: per maggiori dettagli, o per la risoluzione dei problemi di installazione di Mono fate riferimento al supporto di Mono e del vostro sistema operativo.

 

 

History:

Pianificazione per le future versioni (nel futuro, ...ma seriamente)

  • fine supporto a php4 (class constructor e access modifiers per php5)
  • nessun uso di  global vars ($mainframe, $option): per iniziare a pensare a Joomla! 1.6
  • xml metadata per le voci di menu
  • funzioni di editing di base da front end
  • creazione dei files ini di traduzione

29 Dicembre 2010 - v 1.5.1.0

  • supporto per i files di traduzione
  • più tipi di renderer per l'input (string, text area, rich text editor, calendar, select list, boolean radio button)
  • controllo del rendering campo per campo
  • supporto di base per le tabelle collegate (foreign keys)
  • selezione dei campi per list/editing
  • selezione dei campi su cui effettuare le ricerca

12 Giugno 2010 - v 1.5.0.0

  • Non vi sono più campi obbligatori nella tabella (id, ordering, published)
  • Il riconoscimento automatico della chiave primaria (non è necessario che ci sia `id`, ma deve essere numerico)
  • Generazione di menu per la navigazione tra i controller, non è più necessario aggiungere manualmente la navigazione
  • Listing delle tabelle con l'elenco campi ordinabile & con filtro (back end)
  • Rendering automatico in base al tipo di campo DB (input / textarea / RTE / calendario)
  • Convalida dell'input, in base al tipo di campo DB, prima di salvare i dati
  • Gestione del file di configurazione per il componente generato
  • Maggiori controlli di sicurezza

 

13 Aprile 2010

  • adeguamento a mysql connector 6.2.3

5 Aprile 2010

  • aggiunti controlli sui nomi degli oggetti e sulla struttura del db
  • aggiunta verifica dei campi obbligatori
  • aggiunto ordinamento e ricerca nell'amministrazione
  • miglioramenti nel codice php

13 Febbraio 2010

  • nessuna nuova release; ma testato il funzionamento su Linux e Mac OS X!

17 dicembre 2009

  • fe: aggiunto esempio di uso della variabile $link per gli href
  • be: reso java script funzionante anche senza editing, viene visualizzato un alert per ricordare di modificarlo
  • be: inserita indicazione sulla posizione in cui specificare la view di default (ricordarsi di commentare il die() ;)
  • be: aggiunto esempio di uso della variabile $link per gli href
  • corretto bug nell'interazione con mysql 5.1 per windows che non [ermetteva di recuperare la struttura della tabella per install.sql
  • aggiunta la possibilità di specificare i nomi anche per la gestione dei record set (evita plurali quali categoriess o categorys;)
  • aggiunto il controllo della sequenza di attivazione delle tab

 

10 dicembre 2009

  • be: spostato textbox ordinamento prima dei cursori
  • be: spostato inclusione della paginazione fuori dal loop
  • be: corretto bug che eliminava i campi ordering e published
  • be: aggiunta indentazione in template view
  • be: table, corretto il commento con le barre \\
  • be: model,corretto l'inizializzazione del nuovo oggetto recuperando i valori da table
  • be: view.html.php, corretto controllo nuova item $hello anzichè $data
  • be: view template, aggiuntoscheletro javascript per check
  • be: model, inseriti i metodi per ordinare i records
  • be: controllers, inserita la specifica del controller in tutti i redirect all'entry point

20 novembre 2009

  • release iniziale

 

Errori Noti

  • 1.5.0 manca php dopo <? nel rendering del calendario
  • 1.5.0 errore in php store() data; in templates/beModel.php sostituire la linea 98 con:
    $this->setError( $row->_db->getErrorMsg() );
  • Errore nel prefisso delle tabelle in install.sql. Verrà corretto nella prossima versione.
    CREATE TABLE IF NOT EXISTS `jos_mytab`
    deve essere corretto in
    CREATE TABLE IF NOT EXISTS `#__mytab
    Un ringraziamento a  ZnakZorro

 

Bugs report

Attenzione: non tentate di inviare codice tramite le form di commento o contatto, dato che il codice html/php è rimosso per motivi di sicurezza. Inviate report o suggerimenti a Questo indirizzo email è protetto dagli spambots. E' necessario abilitare JavaScript per vederlo. .

 

DOWLOAD:

Avviso di sicurezza

Il codice di "front end" generato dalle versioni di programma precedenti alla 1.5 può subire attacchi di tipo "lfi" o "sql injection". Difficilmente avrete usato il codice di "front end" così come è, ma nel caso queste sono le modifiche da apportare:

feEntryPoint.php
linea #29 (LFI vunerability) sostituire con
if($controller = JRequest::getWord('controller')) {

feModel.php
linea #40 (SQL Injection vunerability) sostituire con
$id = JRequest::getInt('id',  0);


Commenti   

 
0 #16 Guest 2012-09-05 10:20
Ciao,
perche non lo rilasci open source cosi può essere sviluppato e ampliato da altre persone?

ciao
Citazione
 
 
0 #15 Guest 2012-08-28 12:32
А для Joomla 2.5 подойдёт?
Citazione
 
 
0 #14 Guest 2012-03-29 18:02
ottimo Tool, peccato che non hai abbastanza tempo per svilupparlo.
Ho acquistato il servizio j-cook.pro e sono tentato di ritornare sui miei passi utilizzando il tuo software, l'unico inconveniente è l'utilizzo delle foreign key, e le altre cosette che erano probabilmente in scaletta per lo sviluppo.
Citazione
 
 
0 #13 Amresh Kumar 2012-01-29 12:38
do some more development for joomla 2.5.x , we hop that in this year we get some thing new
Citazione
 
 
0 #12 Guest 2011-01-10 10:01
Ciao, programmino molto interessante! ma c'è un modo per attaccarlo invece ad un SqlServer invece che mysql?

===Risposta:
mysql è un sql server ;) , intendevi MS sqlserver? In questo caso la risposta è negativa. Il programma crea componenti per il fw di Joomla!, che non supporta altri tipi di db, quindi la cosa sarebbe inutile.
Citazione
 
 
0 #11 Guest 2010-12-03 14:01
ciao!
innanzitutto grazie e complimenti per questo utilissimo strumento 8)

ho appena scaricato la 1.5.0 e volevo segnalarti subito che ogni volta che lancio l'exe mi avvisa che "this version has expired, please check for a new one" (cmq poco male, basta dire "ok" e ti lascia proseguire)
===Answer
In effetti sono rimasto un poco indietro con lo sviluppo...
Citazione
 
 
0 #10 Guest 2010-07-21 17:09
Ciao,

innanzitutto complimenti per l'ottima utily che hai sviluppato.
In secondo luogo che cosa intendi per "correggere il javascript di controllo" di cui al punto 7 della guida?

===Risposta:
è il javascript di controllo della form di editing dei dati, e bisogna inserire i controlli che necessitano.
Citazione
 
 
+1 #9 Guest 2010-05-20 05:48
ciao Andrea,
fai riferimento a www.mono-project.com/.../
Citazione
 
 
+1 #8 Guest 2010-05-19 21:01
Mi duole dire che non ho capito come installare il tutto su mac osx 10.6 ...
Citazione
 
 
0 #7 Guest 2010-04-13 06:50
Non ho ancora capito perché quando compili con 'specific version' impostato a no il flag venga ignorato :sad:
comunque ecco pronta, in fretta e furia, la versione per il connettore 6.2.3
Citazione
 

Aggiungi commento

Codice di sicurezza
Aggiorna

L'estate si avvicina hai già trovato l'albergo per le vacanze? cerca un albergo al mare o un hotel in montagna ove trascorrere le tue vacanze.