Source for file adv_js_control.php
Documentation is available at adv_js_control.php
* Questo file crea un'interfaccia per utilizzare i controlli avanti javascript per la validazione dei campi.
* A seconda del campo presentato vengono mostrate diverse opzioni di vincoli sull'input dell'utente.
* Il sistema mostrerà poi i controlli con il pacchetto Javascript YAV {@link http://yav.sourceforge.net/it/index.html}
* @desc File per il popup dei controlli javascript per la validazione dei campi
* @subpackage Administration
* @author M.Marcello Verona
* @copyright 2007 M.Marcello Verona
* @license http://www.gnu.org/licenses/gpl.html GNU Public License
include("../inc/conn.php");
include("../inc/layouts.php");
include("../inc/func.frontend.php");
* @desc Funzione parser per il controllo sui campi in javascript
* @param string $str Il controllo secondo la sintassi YAV
* @return array Array con i frammenti di controllo (viene usato il carattere | per separare)
for($i= 0;$i< count($arr_controlli);$i++ ){
$mat_controlli[$i] = explode("|",trim($arr_controlli[$i]));
// cancellazione del controllo
if(isset ($_GET['del_jstest'])){
$ID_REG= (int) $_GET['del_jstest'];
$q_del = vmsql_query("UPDATE {$db1['frontend']}.registro_col SET jstest='' WHERE id_reg=$ID_REG LIMIT 1",$link);
header("Location: ". $_SERVER['PHP_SELF']. "?id_reg=". $ID_REG. "&feed_del=ok");
header("Location: ". $_SERVER['PHP_SELF']. "?id_reg=". $ID_REG. "&feed_del=ko");
if(isset ($_POST['control_1'])){
switch($_POST['tipo_sub']){
case "integer" : $r= "dati[". $_POST['column_name']. "]|integer|". $_POST['column_name']. " deve essere un numero intero";
case "notequal" : $r= "dati[". $_POST['column_name']. "]|notequal|". $_POST['control_1']. "|". $_POST['column_name']. " deve essere diverso da \"{$_POST['control_1']}\"";
case "numrange" : $r= "dati[". $_POST['column_name']. "]|numrange|". $_POST['control_1']. "-". $_POST['control_2']. "|". $_POST['column_name']. " deve essere compreso tra \"{$_POST['control_1']}\" e \"{$_POST['control_2']}\"";
case "numchar" : $r= "dati[". $_POST['column_name']. "]|numchar|". intval($_POST['control_1']). "|". $_POST['column_name']. " deve essere esattamente di {$_POST['control_1']} cifre/caratteri";
// ----------------------------------
case 'alphabetic' : $r= "dati[". $_POST['column_name']. "]|alphabetic|{$_POST['column_name']} accetta solo lettere (maiuscole e minuscole)";
case 'alphanum' : $r= "dati[". $_POST['column_name']. "]|alphanum|{$_POST['column_name']} accetta solo lettere (maiuscole e minuscole) e numeri";
case 'alnumhyphen' : $r= "dati[". $_POST['column_name']. "]|alnumhyphen|{$_POST['column_name']} accetta solo lettere (maiuscole e minuscole), numeri e i caratteri _ e - (trattini)";
case 'alphaspace' : $r= "dati[". $_POST['column_name']. "]|alphaspace|{$_POST['column_name']} accetta solo lettere (maiuscole e minuscole), numeri, i caratteri _ e - (trattini) e spazi";
case 'email' : $r= "dati[". $_POST['column_name']. "]|email|{$_POST['column_name']} deve essere una email formalmente valida";
case 'maxlength' : $r= "dati[". $_POST['column_name']. "]|maxlength|{$_POST['control_1']}|Il valore di {$_POST['column_name']} deve essere lungo massimo {$_POST['control_1']} caratteri";
case 'minlength' : $r= "dati[". $_POST['column_name']. "]|minlength|{$_POST['control_1']}|Il valore di {$_POST['column_name']} deve essere lungo almeno {$_POST['control_1']} caratteri";
case 'iva_ita' : $r= "dati[". $_POST['column_name']. "]|iva_ita|{$_POST['column_name']} deve essere una partita iva";
case 'cf_ita' : $r= "dati[". $_POST['column_name']. "]|cf_ita|{$_POST['column_name']} deve essere un codice fiscale";
case 'regexp' : $r= "dati[". $_POST['column_name']. "]|regexp|{$_POST['control_1']}|Il valore di {$_POST['column_name']} deve corrispondere al pattern di caratteri {$_POST['control_1']}";
//-----------------------------------
case 'date' : $r= "dati[". $_POST['column_name']. "]|date|Il valore di {$_POST['column_name']} deve essere una data valida";
case 'date_lt' : $r= "dati[". $_POST['column_name']. "]|date|{$_POST['control_1']}|{$_POST['column_name']} deve essere una data precedente a {$_POST['control_1']}";
case 'date_lt' : $r= "dati[". $_POST['column_name']. "]|date|{$_POST['control_1']}|{$_POST['column_name']} deve essere una data precedente o uguale a {$_POST['control_1']}";
//-----------------------------------
case 'orario_sec' : $r= "dati[". $_POST['column_name']. "]|regexp|[0-9]{2}:[0-9]{2}:[0-9]{2}|{$_POST['column_name']} deve essere un orario nella forma HH:mm:ss (ore, minuti, secondi)";
case 'orario' : $r= "dati[". $_POST['column_name']. "]|regexp|[0-9]{2}:[0-9]{2}|{$_POST['column_name']} deve essere un orario nella forma HH:mm (ore, minuti)";
//-----------------------------------
case 'double' : $r= "dati[". $_POST['column_name']. "]|double|{$_POST['column_name']} deve essere un numero con virgola";
WHERE id_reg=". intval($_POST['id_reg']). " LIMIT 1";
header("Location: ". $_SERVER['PHP_SELF']. "?id_reg=". intval($_POST['id_reg']). "&feed=ok");
header("Location: ". $_SERVER['PHP_SELF']. "?id_reg=". intval($_POST['id_reg']). "&feed=ko");
$ID_REG=(int) $_GET['id_reg'];
// PRENDI INFORMAZIONI SUL CAMPO
$q_c= vmsql_query("SELECT * FROM {$db1['frontend']}.registro_col WHERE id_reg=". intval($ID_REG),$link);
echo openLayout1("Opzioni controlli campi JS",array('sty/lista.css','sty/admin.css','js/prototype-1.4.0.js'),'popup');
//echo "<h1 style=\"margin-top:50px;\">Opzioni controlli campi JS</h1>";
echo "<h2 style=\"margin-top:50px;\">Opzioni controlli per il campo <span class=\"var\">". $RS['column_name']. "</span> di tipo <em style=\"color:#666;\">". $RS['data_type']. "</em></h2>\n";
switch($RS['data_type']){
$a_tipo['integer']= "numerico intero";
$a_tipo['notequal']= "diverso da";
$a_tipo['numrange']= "intervallo numerico";
$a_tipo['numchar']= "numero intero con n. cifre:";
case 'character varying':
$a_tipo['alphabetic']= "alfabetico";
$a_tipo['alphanum']= "alfanumerico";
$a_tipo['alnumhyphen']= "alfanumerico con trattini";
$a_tipo['alphaspace']= "alfanumerico con trattini e spazi";
$a_tipo['email']= "email";
$a_tipo['notequal']= "diverso da";
$a_tipo['maxlength']= "lunghezza massima";
$a_tipo['minlength']= "lunghezza minima";
$a_tipo['regexp']= "espressione regolare";
$a_tipo['numchar']= "testo con esattamente n. caratteri:";
$a_tipo['iva_ita']= "partita iva";
$a_tipo['cf_ita']= "codice fiscale";
case 'timestamp without time zone':
case 'timestamp with time zone':
$a_tipo['date']= "data formattata";
$a_tipo['date_le']= "data precendente o uguale a";
$a_tipo['date_lt']= "data successiva o uguale a";
$a_tipo['orario_sec']= "orario formattato (con la forma HH:mm:ss)";
$a_tipo['orario']= "orario formattato (con la forma HH:mm)";
$a_tipo['double']= "numerico con virgola";
$a_tipo['integer']= "numerico intero";
$a_tipo['numrange']= "intervallo numerico";
$a_tipo['numchar']= "numero con virgola con esattamente n. cifre:";
/*$a_tipo['integer']="numerico intero";
$a_tipo['double']="numerico con virgola";
$a_tipo['alpahnum']="alfanumerico";
$a_tipo['alpahnum']="alfanumerico con trattini";
$a_tipo['alpahnum']="alfanumerico con spazi";
$a_tipo['email']="email";
$a_tipo['maxlength']="lunghezza massima";
$a_tipo['minlength']="lunghezza minima";
$a_tipo['notequal']="diverso da";
$a_tipo['numrange']="intervallo numerico";
$a_tipo['date']="data formattata";
$a_tipo['date_lt']="data precendente o uguale a";
$a_tipo['date_le']="data successiva o uguale a";
$a_tipo['orario_sec']="orario formattato (con la forma HH:mm:ss)";
$a_tipo['orario']="orario formattato (con la forma HH:mm)";
$a_tipo['regexp']="espressione regolare";*/
if(isset ($_GET['feed_del'])){
if($_GET['feed_del']== 'ok'){
<script type=\"text/javascript\" >
window.opener.document.getElementById('controlli_". $ID_REG. "').innerHTML='Controlli avanzati';
echo "<p class=\"feedok\">Controllo eliminato correttamente<br /><br /><span class=\"fakelink\" onclick=\"window.close();\">Chiudi</span></p>\n";
echo "<p class=\"feedko\">Nessun controllo eliminato</p>\n";
if(isset ($_GET['feed'])){
<script type=\"text/javascript\" >
window.opener.document.getElementById('controlli_". $ID_REG. "').innerHTML='Controlli avanzati <strong>(". $mat_controlli[0][1]. ")</strong>';
echo "<p class=\"feedok\">Controllo inserito correttamente <br /><br /><span class=\"fakelink\" onclick=\"window.close();\">Chiudi</span></p>\n";
echo "<p class=\"feedko\">Nessun controllo eliminato</p>\n";
echo "<form name=\"controlli\" action=\"". $_SERVER['PHP_SELF']. "\" method=\"get\">\n";
if(count($mat_controlli)== 0){
echo "<p>Nessun impostato per questo campo</p>\n";
echo "<p>Attualmente esiste un controllo di tipo <strong>". $mat_controlli[0][1]. "</strong>: <a href=\"?del_jstest=$ID_REG\">Elimina il controllo</a></p>\n";
echo "<label for=\"tipo\">Controlli per questo tipo di campo:</label><br />\n";
echo "<select name=\"tipo\" id=\"tipo\" onchange=\"submit();\">\n";
echo "<option value=\"null\" >Selezionare il controllo desiderato ---></option>\n";
foreach($a_tipo as $k=> $v){
if(isset ($_GET['tipo'])){
$sel0 = ($_GET['tipo']== $k) ? "selected=\"selected\"" : "";
else if($mat_controlli> 0){
$sel0= (isset ($mat_controlli[0]) && $mat_controlli[0][1]== $k) ? "selected=\"selected\"" : "";
echo "<option $sel0 value=\"$k\">$v</option>\n";
echo "<p><strong>Attenzione!</strong> Non ci sono controlli possibili per questo tipo di campo</p>\n";
$aggiungi= "\t\t\t<label for=\"val1\">Inserire la lunghezza massima consentita: </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n";
$aggiungi= "\t\t\t<label for=\"val1\">Inserire la lunghezza minima consentita: </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n";
$aggiungi= "\t\t\t<label for=\"val1\">Inserire il valore da non consentire: </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n";
$aggiungi= "\t\t\t<label for=\"val1\">Inserire il valore minimo: </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
<label for=\"val2\">Inserire il valore massimo: </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val2\" />\n";
$aggiungi= "\t\t\t<label for=\"val1\">Data minore di : </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
$aggiungi= "\t\t\t<label for=\"val1\">Data minore o uguale a : </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
$aggiungi= "\t\t\t<label for=\"val1\">Espressione regolare: </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
$aggiungi= "\t\t\t<label for=\"val1\">Numero di cifre/caratteri richiesti: </label>
<input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
echo "<br /><br />". $aggiungi;
echo "<input type=\"hidden\" name=\"id_reg\" value=\"". $ID_REG. "\" />\n";
if(isset ($_GET['tipo']) && $_GET['tipo']!= 'null'){
$onclick= "if($('val1')){ $('control_1').value=\$F('val1');};";
$onclick.= "if($('val2')){ $('control_2').value=\$F('val2');};";
$onclick.= "if($('tipo')){ $('tipo_sub').value=\$F('tipo');};";
echo "<br /><br /><form name=\"invia\" method=\"post\" action=\"". $_SERVER['PHP_SELF']. "\" >
<input type=\"hidden\" name=\"tipo_sub\" id=\"tipo_sub\" value=\"\" />
<input type=\"hidden\" name=\"control_1\" id=\"control_1\" value=\"\" />
<input type=\"hidden\" name=\"control_2\" id=\"control_2\" value=\"\" />
<input type=\"hidden\" name=\"id_reg\" id=\"id_reg\" value=\"". $ID_REG. "\" />
<input type=\"hidden\" name=\"column_name\" id=\"column_name\" value=\"". $RS['column_name']. "\" />
<input type=\"button\" name=\"invia\" id=\"invia\" value=\"Salva il controllo\" onclick=\"$onclick\" />
|