Esportare le tabelle di joomla 1.6 in un foglio di calcolo con Chronoforms. |
|
|
|||
|
Autore :
Valerio Sichi » Questo articolo è stato letto: 5542 volte » |
|||||
Per i siti su piattaforma Joomla 1.6 per ottenere il risultato sintetizzato nel titolo useremo il componente Chronoforms v 4 RC1.8. Si tratta di un nuovo componente ancora in fase di sviluppo, ma che presenta delle caratteristiche molto potenti ed interessanti. Questa nuova versione è disponibile in due varianti una per Joomla 1.5 e l'altra, che useremo in questa guida, per Joomla 1.6. Le modalità di uso sono però le stesse. L'unica differenza è che in Joomla 1.5 dovremo avere attivato il plugin Mootools Update. Qui l'articolo per Joomla 1.5. Se non è già disponibile installiamo in Joomla 1.6 il componente Chronoform v 4 RC1.8 con le consuete modalità. Fatto questo avremo disponibile nell'elenco dei componenti il nostro nuovo fiammante. Andiamo con il mouse sulla voce Componenti, che si aprirà a tendina, poi sulla voce Chrono Forms, che aprirà a sua volta un'altra tendina laterale, qui cliccheremo sull'etichetta Form Manager. Qui potremo scegliere fra le tre opzioni disponibili, figura 1. Form Manager, Form Wizard e Easy Form Wizard. La quarta etichetta Validate Installation, che non prenderemo in considerazione in questa guida, è invece la solita opzione per registrare il componente e togliere dalle finestre dei form in frontend il link al sito Chronoengine .
L'opzione Form Wizard ci porta in una nuova finestra apparentemente molto complessa che ci consente di usare tutte le nuove potenzialità del componente per creare il form ed inserire tutte le azioni o controlli di eventi che ci possono servire. La usermo anche noi. L'opzione Easy Form Wizard è invece una modalità ridotta che permette di realizzare form semplici senza particolari difficoltà operative. Conserva alcune analogie con la vecchia versione di Chronoforms. Nel nostro caso iniziremo da Form Manager creando un nuovo form vuoto che riempiremo con gli attrezzi necessari. Per questo clicchiamo sul bottone color arancione in.alto al centro, che porta l'etichetta Nuovo. Si apre una finesta, figura 2, che mostra un elenco di campi contenenti una serie di scelte predefinite.
In questo finestra ci limiteremo ad assegnare il nome del form in Form name, inserendo export_cvs1 o un altro nome, e selezionando la voce Yes nel campo Published, che assicura la pubblicazione del form. Negli altri campi lasciamo le scelte predefinite. Cliccando sulla etichetta Code accediamo ad una nuova finestra, figura 3, dove possiamo inserire il codice principale che visualizzerà i campi del form. La finestra che si apre sarà simile alla seguente.
In questa finestra nel campo Form type selezioniamo la voce Custom, che sta a significare che in questo momento usiamo codice personalizzato non creato atomaticamente da Chronoforms con l'opzione Wizard. Nel campo HTML code inseriamo con copia ed incolla il seguente codice.
<?php $app = &JFactory::getApplication(); if ( !$app->isSite() ) { return; } $mainframe=$app; // controllo amministratore loggato $user =& JFactory::getUser(); if ($user->name<>"Super User") { ?> <div class="ccms_form_element"> <h1>Area riservata non è consentito l'accesso ai non autorizzati.</h1> <div class="clear"></div> </div> <?php } else { ?> <div class="ccms_form_element cfdiv_select" id="tabella_container_div"> <label>Tabella</label><select size="1" class=" validate['required']" title="" type="select" name="tabella"> <option value="" selected>Scegli una tabella</option> <?php //questo codice permette di popolare la dropdown con le tabelle di chronforms $db =& JFactory::getDBO(); $query = "SHOW TABLES LIKE '%chronoforms%'"; //$query = "SHOW TABLES "; $db->setQuery($query); $nomes = $db->loadResultArray(); //print_r($nomes); $nome_options = ""; $i=0; foreach ( $nomes as $v ) { $nome_options .= "<option value='".$nomes[$i]."' >".$nomes[$i]."</option>"; $i++; } echo $nome_options; ?> </select> <div title="Tabella" rel="Seleziona una tabella da esportare" class="tooltipimg"> <a href="#">?</a></div><div class="small-message">Seleziona una tabella</div> <div class="clear"></div><div id="error-message-tabella"></div></div> <div class="ccms_form_element cfdiv_select" id="separatore_container_div"> <label>Separatore</label><select size="1" class="" title="" type="select" name="separatore"> <option value="">Scegli un separatore</option> <option value=",">Virgola</option> <option value=";">Punto e virgola</option> <option value="|">Barra verticale</option> <option value="tab">Tabulazione</option> </select> <div title="Separatore" rel="Scegli un separatore dei campi della tabella" class="tooltipimg"> <a href="#">?</a> </div><div class="small-message">Scegli un separatore dei campi della tabella</div> <div class="clear"></div><div id="error-message-separatore"></div></div> <div class="ccms_form_element cfdiv_submit" id="input_submit_2_container_div"> <input name="input_submit_2" class="" value="Submit" type="submit" /> <div class="clear"></div><div id="error-message-input_submit_2"></div></div> <?php } ?>
Il codice è molto simile a quello utilizzato nella versione per Joomla 1.5, con alcuni piccoli aggiustamenti per compatibilità con il core di Joomla 1.6, e svolge le stesse funzioni. Crea le due dropdown per la scelta della tabella da esportare, del separatore dei campi e il tasto di invio. Fatto questo possiamo subito fare un primo salvataggio del nostro form cliccando sul bottone in alto a destra con etichetta Salva e Chiudi. Torneremo alla finestra base di Form Manager, figura 5, con la novità che potremo vedere nell'elenco dei form il nostro con il nome che gli abbiamo assegnato. Qui clicchiamo sul link Wizard Edit alla destra nel nostro form.
Si apre un nuova finestra, figura 6, che corrisponde a quella del Form Wizard che avevano esaminato all'inizio.
Qui è opportuno soffermarci sugli strumenti che abbiamo a disposizione. Possiamo osservare due aree nella finestra che si è aperta. Nel lato sinistro sotto l'etichetta Drag c'è un riquadro con due finestre sovrapposte, attivate dalle etichette Elements e Actions. Sul lato destro sotto l'etichetta Drop ci sono quattro finestre sovrapposte: Preview, Events, Form Setting e Legend. Per le necessità del nostro obiettivo non useremo la finestra Elements. Infatti abbiamo creato gli elementi del form direttamente caricando il codice personalizzato illustrato sopra. Clicchiamo quindi sull'etichetta Actions ed entriamo nell'area operativa che si apre, visualizzata in modo parziale nella figura 6. Detto questo che mi sembra utile per comprendere il contesto in cui operiamo, torniamo al completamento del nostro form. Nella finestra a sinistra clicchiamo sull'etichetta Show html e tenendo premuto il tasto sinistro del mouse trasciniamo l'azione nell'area verde On Load. Questo abilita il form a caricare il codice che mostra i campi inseriti (le due dropdown e il tasto invio).
Sono visibili tre icone sulla destra della voce Custom Code. La X rossa serve per rimuovere l'azione inserita, la chiave inglese apre la configurazione dell'azione, le due frecce verdi servono per muovere l'azione prima o dopo altre azioni eventualmente presenti dell'area On Submit.
Qui selezioniamo nel campo Mode l'opzione Controller e nel campo Code inseriamo con copia e incolla il seguente codice che ha la funzione di esportare i dati della tebella selezionata come indicato nell'esempio per Joomla 1.5.
<?php // continue PHP here $app = &JFactory::getApplication(); if ( !$app->isSite() ) { return; } $mainframe=$app; $database =& JFactory::getDBO(); $separatore= JRequest::getVar('separatore','','post'); if( $separatore=="tab") {$separatore="\t";} $tablename = JRequest::getVar('tabella','','post'); $tables = array( $tablename ); $result = $database->getTableFields( $tables ); $table_fields = array_keys($result[$tablename]); //unset($table_fields[0],$table_fields[2],$table_fields[17]); $database->setQuery( "SELECT * FROM ".$tablename."" ); $datarows = $database->loadObjectList(); $titcol = 0; foreach($table_fields as $table_field){ if($titcol){$csvline .=$separatore;} $csvline .= $table_field; $titcol++; } $csvline .="\n"; $datacol = 0; $rowcount = 1; foreach($datarows as $datarow){ foreach($table_fields as $table_field){ if($datacol){$csvline .=$separatore;} $csvline .= '"'.addslashes($datarow->$table_field).'"'; $datacol++; } $csvline .="\n"; $datacol = 0; $rowcount++; } if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])) { $UserBrowser = "Opera"; } elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])) { $UserBrowser = "IE"; } else { $UserBrowser = ''; } $mime_type = ($UserBrowser == 'IE' || $UserBrowser == 'Opera') ? 'application/octetstream' : 'application/octet-stream'; @ob_end_clean(); ob_start(); header('Content-Type: ' . $mime_type); header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); if ($UserBrowser == 'IE') { header('Content-Disposition: inline; filename="' . "ChronoForms - " .$tablename." - ".date("j_n_Y").'.csv"'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); } else { header('Content-Disposition: attachment; filename="' . "ChronoForms - " .$tablename." - ".date("j_n_Y").'.csv"'); header('Pragma: no-cache'); } print $csvline; exit(); ?>
In Action Label potremmo opzionalmente dare un nome all'azione appena configurata. Appena completati gli inserimenti per confermare il tutto dobbiamo cliccare il tasto azzurro Apply in alto a destra del popup. Fatto questo possiamo chiudere il popup cliccando sulla X in altro a destra. Per vedere il risultato del lavoro l'amministratore dovrà essere loggato nel frontend di Joomla, quindi potrà accedere al form da una voce di menù creata con le consuete modalità che punti al form appena salvato oppure dal backend di joomla da Form Manager cliccando sul link Frontend View alla destra del nome del form. Figura 5. Sia che accediamo con la voce di menù o dal backend di Joomla si aprirà il nostro form e vedremo un risultato simile a questo.
Scegliamo il form da esportare e selezioniamo il separatore di campo e clicchiamo su Invia. Si apre una nuova finestra di servizio simile alla seguente.
Clicchiamo su Ok e dopo qualche secondo si aprirà il programma gestore dei fogli di calcolo (Nel mio caso LibreOffice) con un'altra finestra di servizio in cui ci presenterà alcune opzioni, simile alla seguente.
Scegliamo per Tipo carattere Unicode (UTF 8) e come separatore spunteremo la casella Altri e nel campo a destra inseriremo come separatore quello scelto nel form, cioè la barra vericale. Confermiamo le scelte premendo su OK. A questo punto si apre la pagina del foglio di calcolo che mostra il risultato che volevamo ottenere, ovvero i dati della tabella disponibili nella finestra del foglio di calcolo pronti per tutte le elaborazioni che vorremo fare.
http://valesweb.altervista.org
Articoli più recenti:
|















