Guide e tutorial pratici per joomla e le sue estensioni
Guide e tutorial pratici per joomla e le sue estensioni

Chronoconnectivity V5 gestire i nostri database con form d'inserimento e di modifica

Nel precedente tutorial abbiamo visto come inserire delle barre degli strumenti e come interagire con le colonne per ordinarle e fare in modo di editare e/o visualizzare la scheda del dettaglio.

per chi fosse approdato in questa pagina dopo una ricerca con google, consiglio di iniziare il tutorial su chronoconnectivity partendo da qui

Progettando un sistema per la gestione dei dati dobbiamo sempre tenere in mente chi può fare cosa, questo è determinante per la buona riuscita dei nostri intenti e per una certa sicurezza, non vorremmo mai che i dati dei nostri database fossero compromessi o cancellati da qualcuno che non abbia i giusti permessi.

In un sistema dove i dati sono gestiti da più soggetti, potremmo avere l'esigenza di stabile delle regole:

  • chi potra leggere i dati,
  • chi potrà leggere e scrivere i dati,
  • chi li potra leggere, scrivere e cancellare i dati
  • se chi è titolare di quei dati, può accedervi per modificarne solo i propri.

Immaginate il sito di una scuola dove abbiamo 3 tipi di soggetti, i docenti, gli alunni, i genitori degli alunni.

In un minimo di organizzazione dovremmo fare in maniera che gli insegnanti (più di uno) di un alunno inseriscono i voti delle loro materie nella scheda dell'alunno, ognuno potrà inserire i propri e non potrà editare i voti relativi ad altre materie inseriti da altri insegnanti. L'alunno a sua volta ed i suoi genitori potranno vedere questi voti senza nessuna possibilità di modifica. Altresì non sarà consentito la visualizzazione di questi voti ai restanti alunni e nemmeno ai genitori di questi.

Come avrete capito si delinea una certa gerarchia di permessi a cui non possiamo sottrarci, ma a tutto questo dobbiamo anche aggiungervi, dove questi dati saranno scritti e dove visualizzati: quindi ci saranno delle zone riservate, alcune nel back-end di joomla per la gestione e visualizzazione, ed altre nel front-end, le prime destinate agli insegnanti e le seconde destinate agli alunni ei loro genitori.

Nel nostro tutorial non abbiamo preso in considerazione tutta questa gerarchia, questo perchè avevo bisogno di creare qualcosa di semplice per lo scopo didattico di questo tutorial, e che facesse capire "sopratutto" la meccanica di questi componenti, quindi allo stato dei fatti chi avrà accesso alla schermata di inserimento dei dati (il gruppo Register di Joomla) potrà inserirli senza nessuna limitazione, cancellarli o editarli. Ch invece frà parte del gruppo "Public", ovvero i visitatori, potranno semplicemente visualizzare il dettaglio e la lista.

Noi in questo tutorial ci occuperemo di dare dei permessi solo per la gestione con chronoconnettivity, e non sarà fatto nessun intervento sul form realizzato con chronoforms nel primo tutorial di questa serie.

questo è quello che realizzeremo

Iniziamo con il dare i permessi necessari alle operazioni, portandoci in "Front List">>"Permission", troveremo una schermata dove sulla sinistra abbiamo le "operazioni" su cui dare i permessi, mentre sulla destra i gruppi ai quali abbinare i permessi.

  • Quindi per l'operazione "index", ovvero la visualizzazione della lista, possiamo tranquillamente inserire "allowed" sul gruppo "Public"
  • per l'operazione "view", la visualizzazione della scheda dettaglio daremo anche ad essa "allowed" per il gruppo "Public"
  • per la scheda "edit" che servirà per le modifiche dei record, daremo i permessi solo al gruppo "Registered" e al gruppo "Super User", in modo tale che solo questi 2 gruppi possono editare i record. Daremo le stesse impostazioni anche alle operazioni "save", "save list" e "delete"

Iniziamo con il far visualizzare la scheda del dettaglio del record a tutti gli utenti. Portiamoci in "Front List">>"action">>"view" ed inseriamo nel box "code"il seguente codice:

<p>{gestione.id}</p>
<p>{gestione.nome}</p>
<p>{gestione.cognome}</p>
<p>{gestione.citta}</p>
<p>{gestione.numero_cellulare}</p>

Salvate le modifiche e portatevi nel front-end esattamente nella pagina dove visualizzare la lista, per fare ciò è necessario creare una voce di menù del tipo chronoconnectivity collegataalla a "connessione_rubrica".

Se vi ricordate, nel precedente tutorial abbiamo legato ai nomi la possibilità di cliccarci sopra per visualizzare il dettaglio del record semplicemente inserendo "gestione.nome:gestione.nome" in "Front List" >> "Setting" >> "View linkable", quindi adesso cliccando sul nome dovreste vedere la scheda o il dettaglio del record, bello vero!

Voglio fare di più, siccome non mi piace l'estetica di questa scheda, voglio aggiungere qualche classe bootstrap insieme a qualche icona di font-awesome (di cui abbiamo parlato qui), per dargli un aspetto più professionale.

quindi sostituite il codice prcedentemente incollato, con questo sottostante.

 <div class="list-group">
<li class="list-group-item><i class="fa fa-key"></i> {gestione.id}</li>
<li class="list-group-item><i class="fa fa-user"></i> {gestione.nome}</li>
<li class="list-group-item><i class="fa fa-user"></i> {gestione.cognome}</li>
<li class="list-group-item><i class="fa fa-map-marker"></i> {gestione.citta}</li>
<li class="list-group-item><i class="fa fa-phone"></i> {gestione.numero_cellulare}</li>
</div>

Ora che abbiamo visto come visualizzare la scheda del dettaglio, vorrei che gli utenti del gruppo "Registered" e "SuperUser" abbiano facoltà di creare nuovi recorde sopratutto di editarli, quindi dobbiamo procedere con la creazione del form che servirà all'inserimento di un nuovo record ma anche alla sua modifica se premuto la voce di menù collagata alla modifica oppure cliccando su modifica nella colonna modifica:

Andiamo in "Front List">>"action">>"edit" ed inseriamo il seguente codice che ho personalizzato con alcune classi di bootstrap:

 <input type="hidden" name="gestione[id]" /><br />
<label>nome</label><input type="text" class="form-control" name="gestione[nome]" /><br />
<label>cognome</label><input type="text" class="form-control" name="gestione[cognome]" /><br />
<label>città</label><input type="text" class="form-control" name="gestione[citta]" /><br />
<label>numero cellulare</label><input type="text" class="form-control" name="gestione[numero_cellulare]" /><br />
<input type="submit" class="btn btn-info btn-lg"  value="Save" /><br />

Il codice è formato da tutti i campi che abbiamo utilizzato per la realizzazione di questa guida, comprensivo del campo ID che abbiamo tenuto nascosto ma che ci servirà per evitare di duplicare i record in caso di modifica.

Possiamo testare adesso l'inserimento di un nuovo record, oppure la modifica.

Spero che questa guida vi sia stata di aiuto, e se ritenete di potermi ringraziare offrendomi un caffè cliccate pure nel pulsante sottostante, oppure cliccate su uno dei banner pubblicitari.

offrimi un caffè

Commenti   

0 # adriano 2016-06-15 01:02
Seguendo l'eccellente tutorial, sono riuscito a programmare um form e una lista dei records con CC e usando la lista scegliere un record per poi editare i campi con una separata copia del form. Fino qui tutto va bene e i campi del "edit-form" vengono "populati" con i dati del record scelto. Pero con eccezione di un campo file field che uso per salvare il nome del file e per copiare il file nel directory /upload. nel form originale tutto funziona, solo non nel "edit-form". Lasciandolo vuoto, mi cancella il campo del database quado salvo il record modificato.
Come posse far populare il file field con i dati originali oppure como posso evitare che mi cancelli il campo se rimane vuoto ?

Grazie per l'aiuto
Adriano
0 # Pasquale 2016-08-20 18:13
Ciao,
oltre alla colonna edita e cancella per ogni record inserito mi occorrerebbe implementare anche la colonna 'stampa'. Come procedo in questo senso?
0 # giusebos 2016-08-20 19:00
Purtroppo non ho guide in tal senso, dovresti vedere la documentazione nel sito chronoengine.
0 # Corina 2016-11-09 10:35
Io dovrei fare visualizzare questo form soltanto agli utenti registrati, e per ogni utente un form con i suoi dati.
Come posso fare?
0 # giusebos 2016-11-09 11:03
Ciao Corina, ti conviene leggerli tutti i tutorial, in quanto contengono funzioni che si possono applicare alle tue esigenze, quindi non soffermarti hai titoli. Qui quello che ti serve: http://www.icagenda.it/joomla-3-5-form-chronoforms-visibile-solo-a-gruppo-di-utenti.html
0 # cosdir 2017-01-09 18:38
ciao
mi accodo ai vari complimenti sui tutorial (preziosi).
Ho provato quasi tutto, funziona tutto e ho iniziato a capire la logica cei componenti.
Mi sfugge una cosa: mi riferisco a inserimenti fatti da singoli utenti e salvati nel db.
Ho necessità di riprendere questi inserimenti (e quindi uso chronoconnectivity) e dare la possibilità all'utente la modifica del dato inserito.... ma solo al dato che ha inserito l'utente, non il gruppo di utenti di cui fa parte. Mi spiego: io inserisco un dato (che va a popolare un db che ha al suo interno altri dati inseriti da altri utenti); successivamente entro nel sito e devo richiamare solo il dato che ho precedentemente inserito e modificarlo. Questo passaggio mi sfugge. Se hai qualche dritta te ne sarei grato... grazie comunque
0 # giusebos 2017-01-09 19:00
Citazione cosdir:
ciao
mi accodo ai vari complimenti sui tutorial (preziosi).
Ho provato quasi tutto, funziona tutto e ho iniziato a capire la logica cei componenti.
Mi sfugge una cosa: mi riferisco a inserimenti fatti da singoli utenti e salvati nel db.
Ho necessità di riprendere questi inserimenti (e quindi uso chronoconnectivity) e dare la possibilità all'utente la modifica del dato inserito.... ma solo al dato che ha inserito l'utente, non il gruppo di utenti di cui fa parte. Mi spiego: io inserisco un dato (che va a popolare un db che ha al suo interno altri dati inseriti da altri utenti); successivamente entro nel sito e devo richiamare solo il dato che ho precedentemente inserito e modificarlo. Questo passaggio mi sfugge. Se hai qualche dritta te ne sarei grato... grazie comunque


Ciao Costante,
segui questa guida, ti sarà utile per fare proprio ciò che desideri.
http://www.icagenda.it/chronoforms-v5-modificare-i-propri-dati.html

Ricorda che l'accoppiata chronoforms e chronoconnectivity ti aiuta nel seguente modo, con chronoform crei i form di inserimento dati e modifica dati (le due maschere non sono proprio uguali ma la maschera di modifica la crei partendo dal form inserimento), successivamente richiamera questi form dentro chronoconnectivity.
0 # cosdir 2017-01-10 07:56
eh...l'avevo detto che mi è sfuggito qualcosa
grazie mille
0 # Florence 2018-04-26 19:04
Bonjour,
Comment vous dire..... Un immense MERCI pour ces tutoriels. Vous ne pouvez pas savoir le plaisir que j'ai eu à réaliser ces formulaire.
Bien cordialement
FLORENCE
ps : Il mio italiano non esiste Quindi grazie alla traduzione di google
0 # giusebos 2018-04-26 19:17
Citazione Florence:
Bonjour,
Comment vous dire..... Un immense MERCI pour ces tutoriels. Vous ne pouvez pas savoir le plaisir que j'ai eu à réaliser ces formulaire.
Bien cordialement
FLORENCE
ps : Il mio italiano non esiste Quindi grazie alla traduzione di google


mon ami c'était un plaisir de réaliser ces tutoriels

Per pubblicare un commento devi registrarti