Joomla.it Forum
Non solo Joomla... => Sviluppo => Joomla! Component Builder => : tomtomeight 12 Sep 2020, 09:52:34
-
Buongiorno
Sto costruendo un nuovo componente con joomla component builder e voglio condividere tutte le fasi della costruzione sperando di interessare e coinvolgere quanti più utenti possibili e naturalmente ricevere consigli e suggerimenti oltre che partecipazione alla costruzione. Il componente ovviamente sarà reso disponibile per tutti sia come pacchetto JCB che come componente finito e installabile.Il componente è Classroom Timetable e serve a gestire gli orari e la durata di una lezione di un corso qualsiasi fornendo orari di inizio, durata e indicazione del tempo rimanente. L'esigenza è nata per dare modo a genitori in attesa delle lezioni dei figli in una scuola di lingue di sapere quando manca alla fine, esponendo in un apposito monitor la pagina del componente, un pò come i tabelloni orari delle stazioni e dei porti.Non nascondo che sarà un lavoro impegnativo e che porterà via molto tempo e studio per raggiungere l'obiettivo.
Di seguito e man mano in appresso illustrerò le fasi iniziali di costruzione (ogni domanda o chiarimento in merito sono ben accetti).
Descrivo per prima cosa la struttura costituita dalla tabella finale che rappresenterà l'elenco dei corsi:Serviranno inizialmente i seguenti campi: aula; insegnante; giorno; corso; ora-inizio; durata (altri campi se serviranno saranno aggiunti in seguito).
Inizio col creare per primo il nome e i settaggi del componente e le viste admin che in pratica rappresentano le tabelle.La prima vista admin conterrà la tabella aula (clasroom) e conterrà solo il campo nome di tipo text, (gli altri campi di sistema saranno aggiunti automaticamente) .La seconda vista admin conterrà la tabella insegnante (teacher) e come sopra conterrà solo il campo nome.La terza vista admin conterrà la tabella corsi (course) e come sopra conterrà solo il campo nome.Spiego perché questi campi hanno bisogno di una loro vista e tabelle separate, lo scopo è di avere una scelta dropdown nell'inserimento dei corsi nella parte amministrativa, poi vedremo come questo si ottiene.Infine la quarta vista admin conterrà tutti i campi come dalla struttura iniziale:aula(id_classroom - tipo custom); insegnante(id_teacher - tipo custom); giorno(day - tipo lista); corso(id_course - tipo custom); ora-inizio(start - tipo date); durata(duration - tipo number)
Mi scuso se ho dimenticato qualcosa o qualcosa durante lo sviluppo cambierà ma per iniziare credo basti per ora.
Appena completo queste fasi renderò subito disponibile l tutto in modo che tutti possano iniziare a toccare con mano e capire le potenzialità di JCB.grazie per ora.
-
Ecco prima bozza scaricabile a:
https://sviluppo.infotecnica.eu/JCB/JCB_classroomTimetable.zip come package da importare nel componente JCB e
https://sviluppo.infotecnica.eu/JCB/com_classroom_timetable_vbeta_1_0_0__J3.zip
-
Forse sono rimasto indietro, dimmi se ho capito, le due versioni scaricabili sono:
- il pacchetto installabile su JCB per poterlo modificare
- l'estensione da installare su qualsiasi sito.
Domani lo installo su un sito di test, e provo a seguirti.
-
Forse sono rimasto indietro, dimmi se ho capito, le due versioni scaricabili sono:
- il pacchetto installabile su JCB per poterlo modificare
- l'estensione da installare su qualsiasi sito.
Domani lo installo su un sito di test, e provo a seguirti.
Hai capito benissimo uno si carica su JCB per poterlo modificare e ottenere il componente da installare insomma come se fosse il sorgente e l'altro è un componente joomla come risultato.
-
nel pannello di controllo c'è scritto di richiedere la "FREE JCB PACKAGE KEY", ma non ho capito se serve solo per realizzare un fork...
-
immagino che per iniziare si debba andare sulla dashboard di JCB e scegliere cosa vogliamo costruire, se un componente, un plug-in o modulo.
Guardando ciò che hai fatto cerco di venirti dietro con qualcosa di semplice (almeno credo)
Sto cercando di creare un semplice componente per capire come muovermi, quindi sto optando per qualcosa di semplice, almeno nella logica.
Chiamerò il componente "UAT" Unità Amministrative Territoriali.
Ho compilato i vari campi basandomi su quanto da te inserito.
Il componente mi permetterà di inserire i nomi delle Regioni, delle Province, dei comuni e dei CAP
Il prossimo passo dovrebbe essere quello di creare le tabelle e le viste, ma non so ancora come si fà.
per ora mi fermo e aggiorno dopo.
P.S. se qualcun altro avesse interesse nel costruire un componente per joomla, piccolo o grande o solo per imparare qualcosa è il benvenuto.
-
nel frattempo ho scoperto che i campi dei componenti possono essere organizzati in categorie, Per esempio TomTom ha inserito tutti i suoi nuovi campi nella root, mescolandoli con quelli del componente demo.
per creare una nuova categoria di campi si deve andare in dashboard>>categories for field
-
La key e una protezione per i package, io non ho messo nessuna key quindi chiunque può utilizzarlo. Per costruire le tabelle si incomincia a creare le viste admin.
-
Preciso che per il mio componente finora non ho dovuto scrivere neanche mezza riga di codice. Tuttavia il codice servirà per forza di cose inserirlo ad hoc per le viste lato frontend se vogliamo personalizzare come vogliamo, ma niente paura il componente JCB ci suggerisce quale codice inserire oltre a prendere spunti ed esempi oltre ai tutorial anche ai componenti demo scaricabili dal loro sito. Il prossimo passo per il mio componente sarà costruire la vista frontend.
-
ma nella vista in admin vedo solo i campi precedentemente creati, i tuoi più quello del componente demo...clicca ndo su +, idem
-
mi sono bloccato, dovrei creare la tabella e inserirvi i campi, ma non riesco a fare nessuna delle due cose
-
Forse ci sono, in admin Views si inserisce il nome della tabella e tutto ciò che si dovrebbe vedere nella vista lato admin.
Poi in joomla component si clicca sul nome del componente e si abbina il nome della tabella al componente.
-
in admin views si inseriscono i campi necessari, da notare che molti campi standard vengono inseriti automaticamente:
I seguenti campi vengono aggiunti per impostazione predefinita a tutte le visualizzazioni.
id, asset_id, state, access, ordering, created_by, created, modified_by, modified, Check_out, Check_out_time, version, hits, metakey, metadesc, metadata (non è necessario aggiungerli di nuovo)
-
Esatto e anche per le viste admin si ceano separatamente i campi o si utilizzano quelli esistenti e poi si abbinano alla vista. Infine si compila e si ottiene il componente.
-
Ho creato i campi con per le varie tabelle, ora vorrei vedere lato admin un form, ma sto ancora cercando nei meandri delle tantissime opzioni e menu
-
Associa la vista admin al componente e poi compilalo e otterrai il componente da installare. Prima devi inserire i campi nella vista admin.
-
credo di averlo associato ma non funziona
-
ricevo una pagina di errore quando premo uno dei tastoni per l'inserimento di un nuovo record:
errore SQLLSTATE 42S02
Ho attivato il debug ma non ricevo nessun errore
-
Lo ricevi dopo aver installato il componente che hai creato?
-
ho capito che il problema è sulla creazione dei campi, i parametri inseriti non vanno bene, sopratutto per chiavi secondarie.....
-
Che intendi per chiavi secondarie?
-
ho creato queste tabelle con i seguenti campi
|-regioni
|--idRegione (per questo campo ci pensa il sistema)
|--nomeRegione
|-province
|--idProvincia (per questo campo ci pensa il sistema)
|--nomeProvincia
|--idRegione (la chiave secondaria)
|-comuni
|--idComune (per questo campo ci pensa il sistema)
|--nomeComune
|--idProvincia (la chiave secondaria)
|-cap
|--idCap (per questo campo ci pensa il sistema)
|--nomeCap
|--idComune(la chiave secondaria)
-
Non usare chiavi secondarie per ora ma usa il tipo di campo custom nella vista admin riepilogativa e vedi come ho fatto io nel mio componente le select nella tabella lesson.
-
Non usare chiavi secondarie per ora ma usa il tipo di campo custom nella vista admin riepilogativa e vedi come ho fatto io nel mio componente le select nella tabella lesson.
per esempio quello usato per id course o id teacher?
-
eliminate le secondary key e sistemati i nomi, riesco a far funzionare i pulsantoni nella dashboard del mio componente, purtroppo inserendo un record ricevo:
Salvataggio fallito con il seguente errore: 00000, ,
faccio una ricerca...
vedo che però anche tu hai lo stesso problema
-
Errore risolto, è importante dare i permessi!!
in Editing the Joomla Component editare la tabella cliccando sull'icona della penna e impostare i permessi come da immagine
-
Dopo aver inserito i permessi però dobbiamo impostare che li vogliamo visualizzare, quindi in:
admin view cliccare in relazione alla tabella, sull'icona "the admin field" e in admin behaviour scegliere "show in all list view"
-
eliminate le secondary key e sistemati i nomi, riesco a far funzionare i pulsantoni nella dashboard del mio componente, purtroppo inserendo un record ricevo:
Salvataggio fallito con il seguente errore: 00000, ,
faccio una ricerca...
vedo che però anche tu hai lo stesso problema
Mi dici dove, non ho riscontro ancora.
-
cliccando su uno dei pulsantoni nella dashboard del componente che stai sviluppando.
succede perchè mancano i permessi di chi deve fare cosa
-
In genere li configuro alla fine i permessi e non mi sembra di ricevere quell'errore nella mia installazione. Verifico meglio.
-
Adesso sono bloccato sulla visualizzazione della lista delle regioni sul front-end, un messaggio dice che non ho i permessi per visualizzare i dati, e se faccio il login (front-end) da superadmin, ricevo una pagina di errore 500....
-
Ho iniziato a costruire la vista frontend (Site View) per ottenere in frontend la lista dei corsi in svolgimento, potete vedere il risultato parziale a https://sviluppo.infotecnica.eu/
Resta da aggiungere le intestazioni della tabella, convertire i giorni da numeri della settimana a nome del giorno, e infine attivare i contatori che devono scandire i minuti rimanenti.
Questi rispettivamente package e componente per chi volesse sperimentare e aiutarmi:
https://sviluppo.infotecnica.eu/JCB_classroomTimetable2.zip
https://sviluppo.infotecnica.eu/com_classroom_timetable_vbeta_1_0_1__J3.zip
chiedo aiuto e collaborazione per trovare le icone più adatte della dashboard e per consigli per come migliorare aspetto grafico.
Grazie.
-
Sono già sistemati i permessi, chi vede quella vista (lista), lato administrator e site?
-
No non ancora per ora e in amministrazione non ho rilevato nessun errore. In frontend ho lasciato accesso pubblico ma si può olerare sulla voce di menù per stabilire accesdi divetsificati come da acl joomla.
-
Guardando un videotutorial dice che i permessi, almeno quelli da superadmin vanno inseriti primi durante il processo di creazione dell'estensione, altrimenti non funzioneranno dopo. In effetti il componente che ho realizzato, un semplice inserimento di dati, non me li fa vedere ne nel front-end e ne nel back-end, mostrandomi sempre un aller con scritto che non ho sufficienti privilegi.
-
Eppure io non li ho inseriti e gira tutto ok, hai provato ad installare l'ultimo che ho linkato?
-
non me li fa vedere ne nel front-end e ne nel back-end
ma per il front-end hai fatto la vista site view?
-
Si ho fattop una vista site view ed una admin view.
Ho anche seguito il video principale.
Ora appena ho un paio di ore mi ci rimetto sotto
-
Cerco di spiegare la mia site view: primo passo creare la vista vuota e linkarla al componente, poi editare la Dynamic Get che serve a ottenere i record che ci servono.
Si punta alla tabella riassuntiva lezioni (lesson) che però ha tre chiavi secondarie per i riferimenti alle dropdown delle tre tabelle aula(classroom), insegnante(teacher) e corsi(course) ovviamente se lascio solo questa otterrò solo gli id di relazione invece dei nomi. Per ottenere i nomi devo inserire delle joint e l'ho fatto selezionando le tre tabelle e inserendo le relazioni fra i nomi e gli id di relazione come si può vedere se analizzate il package. Salvo e ottengo il codice da utilizzare nel default template utilizzando le stringhe di codice ottenute dalla Dynamic Get mostrate sulla destra.
In pratica sono dei cicli di foreach degli item che servono che per ora ho organizzato in tabelle ma potrei usare altri metodi, poi si devono trasformare alcuni item per ottenere solo alcune parti come per la data ove serve solo l'ora. e così dovrò fare per i giorni per trasformare i numeri in nomi.
Questo il codice provvisorio:
<?php foreach ($this->items as $item): ?>
<table>
<td><?php echo $item->dayweek; ?></td>
<?php foreach ($item->id_classroomIdClassroom_timetable_class roomB as $id_classroomIdClassroom_timetable_classroomB): ?>
<td><?php echo $id_classroomIdClassroom_timetable_classroomB->name; ?></td>
<?php endforeach; ?>
<?php foreach ($item->id_courseIdClassroom_timetable_courseD as $id_courseIdClassroom_timetable_courseD): ?>
<td><?php echo $id_courseIdClassroom_timetable_courseD->name; ?></td>
<?php endforeach; ?>
<?php foreach ($item->id_teacherIdClassroom_timetable_teacher C as $id_teacherIdClassroom_timetable_teacherC): ?>
<td><?php echo $id_teacherIdClassroom_timetable_teacherC->name; ?></td>
<?php endforeach; ?>
<td><?php echo date('H:i', strtotime($item->date)); ?></td>
<td><?php echo $item->duration; ?></td>
</table>
<?php endforeach; ?>
Il componente poi aggiunge automaticamente le parti restanti per ottenere la default.php
Insomma finora questo è il solo codice che ho dovuto inserire e che il sistema mi ha reso disponibile.
-
Ho una domanda, ho visto che i componenti prodotti da JCB, almeno creati da me vanno ad "infilarsi" come ultima voce nel menù componenti, vengono visualizzati con questo simbolo prima del nome ">>", stessa cosa per il componente demo, mentre il componente classroom che hai fatto lo ritrovo senza ">>" simbolo e come sesta voce di menù.
Per caso c'è una procedura particolare per evitare quel ">>" oppure quel simbolo vuol dire qualcosa?
-
Sì nelle impostazioni puoi decidere suffisso voci menù accettare quello proposto, cambiarlo o mettere nessuno. Non ricordo se impostazioni componente o settaggi generali