Joomla! 1.5 - 2.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.

 

Attenzione: questa pagina non è aggiornata!
I contenuti qui presenti si riferiscono alla versione per J1.5 di  Joomla! component builder, i contenuti aggiornati sono presenti nella pagina inglese.

State cercando uno sviluppatore per realizzare un componente?

Questa pagina spiega come usare il nostro programma per generare componenti, ma, se siete alla ricerca di qualcuno che possa convertire in codice una vostra idea, contattateci, creeremo per voi il componente desiderato. È uno dei nostri servizi professionali

 

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

Please note: URL in text are not linked and site address is only for internal use.

Comments are human checked. All spam will be removed, so don't waste your time!

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.