Back to top

Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - r.vanoni

Pagine: [1]
1
Ciao, provo a spiegare come ho fatto io.
1)- Seguendo le indicazioni dell'articolo di Vales ho scaricato il codice javascript con le funzioni necessarie (versione 2.0)
2)- Nella preview della mia form a geometria variabile ho aggiunto un Custom elements (HTML/PHP) preso da advanced elements e nella parte relativa al code ho inserito questo codice :

Codice: [Seleziona]

<script type="text/javascript">
/*****************************************/
/** Usable Forms 2.0, November 2005     **/
/** Written by ppk, www.quirksmode.org  **/
/** Instructions for use on my site     **/
/**                                     **/
/** You may use or change this script   **/
/** only when this copyright notice     **/
/** is intact.                          **/
/**                                     **/
/** If you extend the script, please    **/
/** add a short description and your    **/
/** name below.                         **/
/*****************************************/

var containerTag = 'DIV';

var compatible = (
    document.getElementById && document.getElementsByTagName && document.createElement
    &&
    !(navigator.userAgent.indexOf('MSIE 5') != -1 && navigator.userAgent.indexOf('Mac') != -1)
    );

if (compatible)
{
    document.write('<style>.accessibility{display: none}</style>');
    var waitingRoom = document.createElement('div');
}

var hiddenFormFieldsPointers = new Object();

function prepareForm()
{
    if (!compatible) return;
    var marker = document.createElement(containerTag);
    marker.style.display = 'none';

    var x = document.getElementsByTagName('select');
    for (var i=0;i<x.length;i++)
        addEvent(x[i],'change',showHideFields)

    var x = document.getElementsByTagName(containerTag);
    var hiddenFields = new Array;
    for (var i=0;i<x.length;i++)
    {
        if (x.getAttribute('rel'))
        {
            var y = getAllFormFields(x);
            x.nestedRels = new Array();
            for (var j=0;j<y.length;j++)
            {
                var rel = y[j].getAttribute('rel');
                if (!rel || rel == 'none') continue;
                x.nestedRels.push(rel);
            }
            if (!x.nestedRels.length) x.nestedRels = null;
            hiddenFields.push(x);
        }
    }

    while (hiddenFields.length)
    {
        var rel = hiddenFields[0].getAttribute('rel');
        if (!hiddenFormFieldsPointers[rel])
            hiddenFormFieldsPointers[rel] = new Array();
        var relIndex = hiddenFormFieldsPointers[rel].length;
        hiddenFormFieldsPointers[rel][relIndex] = hiddenFields[0];
        var newMarker = marker.cloneNode(true);
        newMarker.id = rel + relIndex;
        hiddenFields[0].parentNode.replaceChild(newMarker,hiddenFields[0]);
        waitingRoom.appendChild(hiddenFields.shift());
    }
   
    setDefaults();
    addEvent(document,'click',showHideFields);
}

function setDefaults()
{
    var y = document.getElementsByTagName('input');
    for (var i=0;i<y.length;i++)
    {
        if (y.checked && y.getAttribute('rel'))
            intoMainForm(y.getAttribute('rel'))
    }

    var z = document.getElementsByTagName('select');
    for (var i=0;i<z.length;i++)
    {
        if (z.options[z.selectedIndex].getAttribute('rel'))
            intoMainForm(z.options[z.selectedIndex].getAttribute('rel'))
    }

}

function showHideFields(e)
{
    if (!e) var e = window.event;
    var tg = e.target || e.srcElement;

    if (tg.nodeName == 'LABEL')
    {
        var relatedFieldName = tg.getAttribute('for') || tg.getAttribute('htmlFor');
        tg = document.getElementById(relatedFieldName);
    }
       
    if (
        !(tg.nodeName == 'SELECT' && e.type == 'change')
        &&
        !(tg.nodeName == 'INPUT' && tg.getAttribute('rel'))
       ) return;

    var fieldsToBeInserted = tg.getAttribute('rel');

    if (tg.type == 'checkbox')
    {
        if (tg.checked)
            intoMainForm(fieldsToBeInserted);
        else
            intoWaitingRoom(fieldsToBeInserted);
    }
    else if (tg.type == 'radio')
    {
        removeOthers(tg.form[tg.name],fieldsToBeInserted)
        intoMainForm(fieldsToBeInserted);
    }
    else if (tg.type == 'select-one')
    {
        fieldsToBeInserted = tg.options[tg.selectedIndex].getAttribute('rel');
        removeOthers(tg.options,fieldsToBeInserted);
        intoMainForm(fieldsToBeInserted);
    }
}

function removeOthers(others,fieldsToBeInserted)
{
    for (var i=0;i<others.length;i++)
    {
        var show = others.getAttribute('rel');
        if (show == fieldsToBeInserted) continue;
        intoWaitingRoom(show);
    }
}

function intoWaitingRoom(relation)
{
    if (relation == 'none') return;
    var Elements = hiddenFormFieldsPointers[relation];
    for (var i=0;i<Elements.length;i++)
    {
        waitingRoom.appendChild(Elements);
        if (Elements.nestedRels)
            for (var j=0;j<Elements.nestedRels.length;j++)
                intoWaitingRoom(Elements.nestedRels[j]);
    }
}

function intoMainForm(relation)
{
    if (relation == 'none') return;
    var Elements = hiddenFormFieldsPointers[relation];
    for (var i=0;i<Elements.length;i++)
    {
        var insertPoint = document.getElementById(relation+i);
        insertPoint.parentNode.insertBefore(Elements,insertPoint);
        if (Elements.nestedRels)
        {
            var fields = getAllFormFields(Elements);
            for (var j=0;j<fields.length;j++)
            {
                if (!fields[j].getAttribute('rel')) continue;
                if (fields[j].checked || fields[j].selected)
                    intoMainForm(fields[j].getAttribute('rel'));
            }
        }
    }
}

function getAllFormFields(node)
{
    var allFormFields = new Array;
    var x = node.getElementsByTagName('input');
    for (var i=0;i<x.length;i++)
        allFormFields.push(x);
    var y = node.getElementsByTagName('option');
    for (var i=0;i<y.length;i++)
        allFormFields.push(y);
    return allFormFields;
}

/** ULTRA-SIMPLE EVENT ADDING **/

function addEvent(obj,type,fn)
{
    if (obj.addEventListener)
        obj.addEventListener(type,fn,false);
    else if (obj.attachEvent)
        obj.attachEvent("on"+type,fn);
}

addEvent(window,"load",prepareForm);
</script>
<input value="figli" title="" id="check10" name="check1" type="checkbox" rel="figli"/>
<div rel="figli">
QUI DENTRO METTI GLI INPUT BOX che vuoi attivare e nascondere naturalmente in codice html
</div>
Come si potrà notare il codice javascript è quello scaricato in precedenza (punto 1) ma decurtato di alcune parti necessarie per Internet explorer che non mi interessavano.
Ho messo il codice relativo agli input box nelle righe delimitate dal tag <div rel="figli"> e tutto funziona a meraviglia. 
Spero di essere stato utile. Ciao

2
non ne ho idea.
Alla fine per le mie necessità di prenotazione aule e laboratori a scuola ho utilizzato scheduler. E' molto versatile perchè puoi prenotare e specificare cosa ti serve. Se c'e di mezzo il denaro credo sia più utile un sofware per la vendita on line ma non ho esperienza in merito.
ciao

3
modifica questi file:
 /language/en-GB/en-GB.com_pbbooking.ini
e poi
 /components/com_pbbooking/views/pbbooking/tmpl/day_view.php
ciao

4
Molto interessante, ci sto lavorando anch'io per le prenotazioni on line. Vediamo se riusciamo a tradurlo in italiano.

5
In Joomla 1.5.25 e    Mod_Chronoforms_J1.5_V4_RC3.0.zip  correttamente istallato
Estensioni>gestione plugin>System mootools Upgrade.
Che versione di joomla stai usando?

6
Gestione Form / Re:Dove inserire javascript in Chronforms v4
« il: 29 Gen 2012, 09:51:34 »
Ottimo. Ma volendo ripercorrere l'esempio relativo alle dropdown collegate anche per chronoforms V4 Rc3 come si modifica il codice per puntare alla form visto che non si usa più ChronoContact???

Codice: [Seleziona]
//questo è il codice da inserire nella TAB Form Code sezione javascript

function fillCategory(){
removeAllOptions(document.getElementById('ChronoContact_provadropdown').sezione);


 addOption(document.getElementById('ChronoContact_provadropdown').sezione, '1', 'sezione 1');
 addOption(document.getElementById('ChronoContact_provadropdown').sezione, '2', 'sezione 2');
 addOption(document.getElementById('ChronoContact_provadropdown').sezione, '3', 'sezione 3');
}

function SelectCategoria(){
// Funzione chiamata dopo la selezione della Sezione - ON or after selection of category this function will work

removeAllOptions(document.getElementById('ChronoContact_provadropdown').categoria);
//addOption(document.getElementById('ChronoContact_provadropdown').categoria, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id - Collect all element of subcategory for various id


 if (document.getElementById('ChronoContact_provadropdown').sezione.value == '1'){
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'1', 'categoria 1 sez 1');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'2', 'categoria 2 sez 1');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'6', 'categoria 3 sez 1');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'7', 'categoria 4 sez 1');
}
 if (document.getElementById('ChronoContact_provadropdown').sezione.value == '2'){
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'3', 'categoria 1 sez 2');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'4', 'categoria 2 sez 2');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'5', 'categoria 3 sez 2');
}
 if (document.getElementById('ChronoContact_provadropdown').sezione.value == '3'){
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'9', 'categoria 1 sez 3');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'10', 'categoria 2 sez 3');
}



}
//////////////////

function removeAllOptions(selectbox)
{
   var i;
   for(i=selectbox.options.length-1;i>=1;i--)
   {
      selectbox.options[i]=null;
      //selectbox.remove(i);
   }
}


function addOption(selectbox, value, text )
{
   var optn = document.createElement("option");
       
        optn.text = text;
   optn.value = value;

   selectbox.options.add(optn);
          //selectbox.appendChild(optn,where);

}


7
Io ho risolto così:
- Plugin System Mootools Upgrade attivato
- permessi su cartelle opt/lamp/htdocs/tua_cartella_sito    777 (lettura,scrittura,esecuzione)
Ciao

8
Gestione Form / Re:[Risolto] Form dinamico con checkbox
« il: 22 Gen 2012, 21:32:09 »
Certamente. ecco l'allegato. ciao

[allegato eliminato da un amministratore essendo vecchio più di un anno]

9
Gestione Form / Re:Form dinamico con checkbox
« il: 20 Gen 2012, 18:56:58 »
Devo dire che chronoform v4 rc3 per joomla 1.5x è eccezionale!!! Sono riuscito a risolvere il problema della form con check box con poche righe di codice e tutto funziona alla meraviglia. Allego un semplice tutorial se può essere utile grazie a tutti.

[allegato eliminato da un amministratore essendo vecchio più di un anno]

10
Gestione Form / [Risolto] Form dinamico con checkbox
« il: 10 Gen 2012, 10:22:55 »
Ciao a tutti. Ho seguito con grande interesse gli esempi e le indicazioni di Vales riguardanti chronoforms 4 e devo dire che sono utilissimi e molto potenti. Ora sto cercando di realizzare una form che estrae dati da una tabella del database con DB Multi Record Loader e che mi consenta di selezionarli, con  una checkbox. Mi spiego meglio:
1- DB multi record loader estrae elenco alunni di una classe
2-visualizzo nella form  elenco alunni (cognome e nome) con checkbox
3-spunto gli alunni assenti
4-registro cognome_nome alunni assenti premendo tasto submit
Fino ad ora sono riuscito a visualizzare la tabella con elenco alunni e la check box ma da qui non ne vengo fuori.
ho usato questo codice:
Codice: [Seleziona]
<h1>Inserimento assenze</h1>
<table style="width: 100%" id="db_multi_record_loader">
<thead>
<tr>
<th style="width: 15%" class="col1 cell">Classe</th>
<th style="width: 25%" class="col2 cell">Cognome Nome </th>
</tr>
</thead>
 
<?php
$bb
=$form->data['elenco'];
foreach (
$bb as $a) {
echo 
"<tr><td>".$a['classe']."</td><td><a class=\"order_link\" 
href=\"index.php?option=com_chronoforms&chronoform=ins_assenze_m&rec="
.$a['ID']."\">".$a['cog_nome']."</td><td><input type='checkbox' value='1' title='' name='input_check1' id='input_check1'> [/url]</td></tr>";
}
?>

</table>
<p></p>

 Qualcuno mi può dare una dritta? devo utilizzare uno script java o basta il php?
Grazie per il vostro aiuto
Riccardo

[allegato eliminato da un amministratore essendo vecchio più di un anno]

11
Gestione Form / Re:[RISOLTO] Stampa Chronoconnectivity
« il: 30 Dic 2011, 08:08:45 »
Seguendo le vostre indicazioni ho risolto con questo codice:
In Header della form di chronoconnectivity , prima del tag <table> di inizio tabella dati da stampare ho inserito:
Codice: [Seleziona]
<script type="text/javascript">
function printDiv()
{
 var a = window.open('',"b", "height=500,width=600,menubar=yes,scrollbars=yes,resizable=yes,,left=10,top=10");
 a.document.open("text/html");
 a.document.write(document.getElementById('foo').innerHTML);
 a.document.close();
 a.print();
}
</script>
<input onclick="printDiv();" type="image" src="<?php echo JURI::base().'images/M_images/printButton.png';?>" title="Stampa" alt="Stampa"/></div>
<div id="foo">
mentre in footer, dopo </table> finiti i dati da stampare ho chiuso  sezione foo con il tag
Codice: [Seleziona]
</div>
In alternativa una soluzione più semplice potrebbe essere quella di stampare l'intera pagina con la seguente istruzione:
Codice: [Seleziona]
<input value="Stampa" type="button" onClick="window.print()">
Grazie a tutti e buon diveritmento
Riccardo

12
scusa se non sono stato chiaro, provo a spiegare

1- Mysql = ottimo motore database da utilizzare in locale o in rete (lo stesso di joomla)
2- Oobase = gestione database di openoffice capace di interagire in modo nativo (senza driver) con  MYSQL oltre ad essere completamente integrato con oowriter e oocalc.
3 - Joomla ottimo cms per realizzare il sito della scuola e per gestire rapporti con famiglie

Per sistema modulare intendo la possibilità di sviluppare procedure personalizzate in base alle esigenze basate su questi 3 software. Quindi se ci trovassimo in 4 o 5 volenterosi potremmo creare una serie di procedure adatte alle diverse esigenze e realtà scolastiche. Ad esempio io ho già sviluppato e posso condividere tutte queste procedure:
- Compilazione e stampa pagellini quadrimestrali (oobase+mysql)
- Gestione alunni e aziende e stampe relativi documenti per alternanza scuola lavoro o stage in azienda (oobase e mysql)
-  rilevazione assenze giornaliere (Joomla + chronoforms)
- pubblicazione assenze sul sito per i genitori (Joomla + chronoconnectivity)
- pubblicazione pagellino sul sito per i genitori (joomla + chronoconnectivity)

Sto lavorando ad una procedura per archiviazione documenti (verbali, programmazioni etc)

Il bello è che ogni scuola potrebbere utilizzare, modificare o migliorare i moduli che gli servono in base alle esigenze.
 

[allegato eliminato da un amministratore]

13
E' necessario distinguere il REGISTRO DI CLASSE dal registro del docente chiamato anche GIORNALE DEL PROFESSORE dal registro dei VERBALI DEL CONSIGLIO DI CLASSE. Essi raccolgono i tre momenti "burocratici" essenziali dell'attività scolastica.
1- Registro di classe: utilizzato da tutti i docenti della classe. Esso registra tutte le attiivtà giornaliere  svolte dalla classe. I campi sono:
Data,  materia,  firma_docente, assenti, argomento_lezione, annotazioni_docente(giustifiche assenze), annotazioni_preside(note,provvedimenti,circolari)
2- Giornale del professore: utilizzato dal singolo docente. Contiene i dati delle classi in cui il docente insegna. I campi sono parecchi ovvero:
alunno, voti 1°quad(10), voti 2°quad(10), data_lezione, ore_lezione, ore_assenza-alunno, tot_ore_lezione, argomento_lezione, 
3- Registro dei verbali: necessario per archiviare i verbali del consiglio di classe redatti dal coordinatore. Questo lo sto realizzando (con oobase-mysql) in quanto trovo sia molto utile per avere un archivio ordinato e consultabile di tutti i verbali del consiglio di classe.

Questo per ribadire come la cosa sia molto complessa e francamente non capisco l'utilità di usare solo joomla quando mettendo assieme mysql+oobase+joomla ho un sistema modulare, flessibile e personalizzabile che mi organizza qualsiasi scuola.

14
Le tue proposte sono stimolanti. Tuttavia credo che nulla sia migliore di un registro cartaceo in una scuola in quanto economico, sempre funzionante e soprattutto facile da firmare. Pensare ad un pc funzionante  in ogni classe nella scuola italiana quando spesso manca la carta per la fotocopiatrice penso sia utopia. Quello che trovo utile è dare un servizio semplice ed efficace come il controllo delle assenze e i voti con la pubblicazione di un pagellino periodico. Trovo macchinoso e improponibile costringere ogni docente a inserire a terminale ogni valutazione fatta all'alunno. Molto meglio il registro cartaceo. Joomla lo vedo utile proprio per dare informazioni alle famiglie mentre per la gestione dei dati scolastici meglio affidarsi ad un server locale con MYSQL e OOffice.  Naturalmente sto esprimendo una mia semplice opinione.
In allegato ho inserito un breve articolo esplicativo in formato pdf e un file con il codice della form che ho creato. Per verificare il funzionamento è sufficiente avere installato chronoforms e chronoconnectivity e creare le tabelle nel database. Per la cronaca ho trovato molto utile il componente art-adminer per la gestione del database di joomla.   

[allegato eliminato da un amministratore]

15
Ottimo, dopo una ventina di ore sono riuscito a realizzare la form per l'immissione rapida delle assenze degli alunni utilizzando chronoform. Poi ho realizzato una seconda form con cronoconnectivity con la quale i genitori possono visualizzare i dati delle assenze solo del proprio figlio grazie a ricerca con codice e password. Infine una terza form con chronoconnectivity consente di visualizzare l'eventuale pagellino quadrimestrale caricato in formato jpg. 
Tutta questa parte presente sul sito trova corrispondenza con un database mysql gestito su PC LINUX UBUNTU locale utilizzando OOBASE per mantenere al sicuro i dati sensibili e per una facile gestione dell'anagrafica degli studenti,  stampe di elenchi, di pagellini e quant'altro.
Un sistema comodo, modulare, espandibile ad altre procedure o muduli e soprattutto GPL. Se pensate sia utile e mi date qualche indicazione posso realizzare una mini guida. La soluzione OOBASE-MYSQL + JOOMLA è un binomio eccezionale per la gestione dati alunni di una scuola. Non so come ringraziare  Vales e  tutto il forum per l'aiuto e le indicazioni.  A disposizione per qualsiasi spiegazione o chiarimento o invio files.   In allegato alcune immagini delle form create con chronoforms e chronoconnectivity:


[allegato eliminato da un amministratore]

16
Ottimi suggerimenti, ormai ero quasi rassegnato. Ora si tratta di studiare di buona lena per realizzare le procedure necessarie. Non avevo pensato al form dinamico con gli array. Intanto proverò con uno normale.
Grazie e complimenti per la tua preparazione e capacità.

17
Ecco il problema. Devo creare un form per immissione assenze alunni di una classe. Il form deve essere un elenco alunni ciascuno dei quali ha una check (o radio) per spuntare gli assenti. Quando premo il tasto submit del form devo registrare SOLO GLI ASSENTI sulla tabella MYSQL che ho chiamato jos_assenze e che ha questi campi:
ID (int6)
codice (int4)  codice dell'alunno
pasw(varchar4)     password dell'alunno
classe(varchar3)   classe dell'alunno
cog_nome(varchar30) cognome e nome dell'alunno
data_as(date)  data assenza

Questi dati saranno visualizzati con una form chronoconnectivity che ho già realizzato.
In pratica riesco a creare una normale form con la sua tabella funzionante ma il problema è che io i dati li voglio inserire nella tabella jos_assenze che ha una struttura molto diversa da quella generata da chronoform.
Vi allego due immagini per spiegare il problema.
Grazie per l'aiuto o i consigli che mi potrete dare.


[allegato eliminato da un amministratore]

18
Salve a tutti. Sto lavorando per realizzare un registro assenze e voti per il sito della mia scuola. In pratica devo realizzare un'opzione dal menu del sito dalla quale il genitore possa verificare le assenze del proprio figlio e i voti del pagellino pubblicato 2 volte l'anno. Penso di partire da Albo pretorio e fare le modifiche necessarie. In ogni caso proverò usando Chronoforms e Chronoconnectivity.
Riguardo alla biblioteca avevo  utilizzato il componente booklibrary 1.0.2.2 free in italiano e mi ricordo fosse valido. Io l'ho modificato per realizzare l'albo professionale dei periti agrari visibile qui:
http://www.peritiagrari.vr.it//index.php?option=com_booklibrary&Itemid=53
Mi piacerebbe arrivare ad un componente "ASSENZE-VOTI" per la scuola, una cosa semplice ed efficace utile per genitori e docenti.

Pagine: [1]


Web Design Bolzano Kreatif