phpDocumentor VFront
Administration
[ class tree: VFront ] [ index: VFront ] [ all elements ]

Source for file adv_js_control.php

Documentation is available at adv_js_control.php

  1. <?php
  2. /**
  3.  * Questo file crea un'interfaccia per utilizzare i controlli avanti javascript per la validazione dei campi.
  4.  * A seconda del campo presentato vengono mostrate diverse opzioni di vincoli sull'input dell'utente.
  5.  * Il sistema mostrerà poi i controlli con il pacchetto Javascript YAV {@link http://yav.sourceforge.net/it/index.html}
  6.  * 
  7.  * @desc File per il popup dei controlli javascript per la validazione dei campi
  8.  * @package VFront
  9.  * @subpackage Administration
  10.  * @author M.Marcello Verona
  11.  * @copyright 2007 M.Marcello Verona
  12.  * @version 0.90
  13.  * @license http://www.gnu.org/licenses/gpl.html GNU Public License
  14.  */
  15.  
  16. include("../inc/conn.php");
  17. include("../inc/layouts.php");
  18. include("../inc/func.frontend.php");
  19.  
  20.  
  21.  
  22. /**
  23.  * @desc Funzione parser per il controllo sui campi in javascript
  24.  * @param string $str Il controllo secondo la sintassi YAV
  25.  * @return array Array con i frammenti di controllo (viene usato il carattere | per separare)
  26.  */
  27. function parser_controllo_js($str){
  28.     
  29.     if(trim($str)!=''){
  30.         $arr_controlli=explode("\n",trim($str));
  31.         
  32.         for($i=0;$i<count($arr_controlli);$i++){
  33.             
  34.             $mat_controlli[$iexplode("|",trim($arr_controlli[$i]));
  35.         }
  36.         return $mat_controlli;
  37.     }
  38.     else return array();
  39.     
  40. }
  41.  
  42. // cancellazione del controllo
  43. if(isset($_GET['del_jstest'])){
  44.     
  45.     $ID_REG= (int) $_GET['del_jstest'];
  46.     
  47.     $q_del vmsql_query("UPDATE {$db1['frontend']}.registro_col SET jstest='' WHERE id_reg=$ID_REG LIMIT 1",$link);
  48.     
  49.     if(vmsql_affected_rows($link,$q_del)==1){
  50.         
  51.         header("Location: ".$_SERVER['PHP_SELF']."?id_reg=".$ID_REG."&feed_del=ok");
  52.     }
  53.     else{
  54.         
  55.         header("Location: ".$_SERVER['PHP_SELF']."?id_reg=".$ID_REG."&feed_del=ko");
  56.  
  57.     }
  58.     
  59.     exit;
  60. }
  61.  
  62.  
  63. if(isset($_POST['control_1'])){
  64.     
  65.     
  66.     switch($_POST['tipo_sub']){
  67.         
  68.         case "integer" $r="dati[".$_POST['column_name']."]|integer|".$_POST['column_name']." deve essere un numero intero";
  69.         break;
  70.         
  71.         case "notequal" $r="dati[".$_POST['column_name']."]|notequal|".$_POST['control_1']."|".$_POST['column_name']." deve essere diverso da \"{$_POST['control_1']}\"";
  72.         break;
  73.         
  74.         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']}\"";
  75.         break;
  76.         
  77.         case "numchar" $r="dati[".$_POST['column_name']."]|numchar|".intval($_POST['control_1'])."|".$_POST['column_name']." deve essere esattamente di {$_POST['control_1']} cifre/caratteri";
  78.         break;
  79.         
  80.         // ----------------------------------
  81.         
  82.         case 'alphabetic' $r="dati[".$_POST['column_name']."]|alphabetic|{$_POST['column_name']} accetta solo lettere (maiuscole e minuscole)";
  83.         break;
  84.         
  85.         case 'alphanum' $r="dati[".$_POST['column_name']."]|alphanum|{$_POST['column_name']} accetta solo lettere (maiuscole e minuscolee numeri";
  86.         break;
  87.         
  88.         case 'alnumhyphen' $r="dati[".$_POST['column_name']."]|alnumhyphen|{$_POST['column_name']} accetta solo lettere (maiuscole e minuscole), numeri e i caratteri _ e - (trattini)";
  89.         break;
  90.         
  91.         case 'alphaspace' $r="dati[".$_POST['column_name']."]|alphaspace|{$_POST['column_name']} accetta solo lettere (maiuscole e minuscole), numerii caratteri _ e - (trattinie spazi";
  92.         break;
  93.         
  94.         case 'email' $r="dati[".$_POST['column_name']."]|email|{$_POST['column_name']} deve essere una email formalmente valida";
  95.         break;
  96.         
  97.         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";
  98.         break;
  99.         
  100.         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";
  101.         break;
  102.         
  103.         
  104.         case 'iva_ita' $r="dati[".$_POST['column_name']."]|iva_ita|{$_POST['column_name']} deve essere una partita iva";
  105.         break;
  106.         
  107.         case 'cf_ita' $r="dati[".$_POST['column_name']."]|cf_ita|{$_POST['column_name']} deve essere un codice fiscale";
  108.         break;
  109.         
  110.         
  111.         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']}";
  112.         break;
  113.         
  114.         
  115.         
  116.         
  117.         //-----------------------------------
  118.         
  119.         case 'date' $r="dati[".$_POST['column_name']."]|date|Il valore di {$_POST['column_name']} deve essere una data valida";
  120.         break;
  121.         
  122.         case 'date_lt' $r="dati[".$_POST['column_name']."]|date|{$_POST['control_1']}|{$_POST['column_name']} deve essere una data precedente a {$_POST['control_1']}";
  123.         break;
  124.         
  125.         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']}";
  126.         break;
  127.         
  128.         //-----------------------------------
  129.         
  130.         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 (oreminutisecondi)";
  131.         break;
  132.         
  133.         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 (oreminuti)";
  134.         break;
  135.         
  136.         //-----------------------------------
  137.         
  138.         case 'double' $r="dati[".$_POST['column_name']."]|double|{$_POST['column_name']} deve essere un numero con virgola";
  139.         break;
  140.         
  141.         
  142.         default $r='';
  143.         
  144.         
  145.     }
  146.     
  147.     
  148.     if($r!=''){
  149.         
  150.         $sql_up "UPDATE {$db1['frontend']}.registro_col SET jstest='".str_replace("'","\'",stripslashes($r))."'
  151.                     WHERE id_reg=".intval($_POST['id_reg'])." LIMIT 1";
  152.         
  153.         // Esegue l'update
  154.         $q_up=vmsql_query($sql_up,$link);
  155.         
  156.         if(vmsql_affected_rows($link,$q_up)==1){    
  157.         
  158.             header("Location: ".$_SERVER['PHP_SELF']."?id_reg=".intval($_POST['id_reg'])."&feed=ok");
  159.         }
  160.         else{
  161.             
  162.             header("Location: ".$_SERVER['PHP_SELF']."?id_reg=".intval($_POST['id_reg'])."&feed=ko");
  163.  
  164.         }
  165.     }
  166.     
  167.     
  168.     exit;
  169. }
  170.  
  171.  
  172. $ID_REG=(int) $_GET['id_reg'];
  173.  
  174. // PRENDI INFORMAZIONI SUL CAMPO
  175. $q_c=vmsql_query("SELECT * FROM {$db1['frontend']}.registro_col WHERE id_reg=".intval($ID_REG),$link);
  176.  
  177.  
  178. $mat_controlli parser_controllo_js($RS['jstest']);
  179.  
  180. $a_tipo=array();
  181.  
  182. echo openLayout1("Opzioni controlli campi JS",array('sty/lista.css','sty/admin.css','js/prototype-1.4.0.js'),'popup');
  183.  
  184. //echo "<h1 style=\"margin-top:50px;\">Opzioni controlli campi JS</h1>";
  185.  
  186. 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";
  187.  
  188.  
  189. switch($RS['data_type']){
  190.     
  191.     case 'int':
  192.     case 'integer':
  193.     case 'biginteger':
  194.     case 'bigint':
  195.     case 'smallint':
  196.         $a_tipo['integer']="numerico intero";
  197.         $a_tipo['notequal']="diverso da";
  198.         $a_tipo['numrange']="intervallo numerico";
  199.         $a_tipo['numchar']="numero intero con n. cifre:";
  200.     break;
  201.         
  202.     case 'varchar':
  203.     case 'char':
  204.     case 'character':
  205.     case 'text' :
  206.     case 'mediumtext':
  207.     case 'longtext':
  208.     case 'character varying':
  209.     
  210.         $a_tipo['alphabetic']="alfabetico";
  211.         $a_tipo['alphanum']="alfanumerico";
  212.         $a_tipo['alnumhyphen']="alfanumerico con trattini";
  213.         $a_tipo['alphaspace']="alfanumerico con trattini e spazi";
  214.         $a_tipo['email']="email";
  215.         $a_tipo['notequal']="diverso da";
  216.         $a_tipo['maxlength']="lunghezza massima";
  217.         $a_tipo['minlength']="lunghezza minima";
  218.         $a_tipo['regexp']="espressione regolare";        
  219.         $a_tipo['numchar']="testo con esattamente n. caratteri:";
  220.         $a_tipo['iva_ita']="partita iva";
  221.         $a_tipo['cf_ita']="codice fiscale";
  222.         
  223.     break;
  224.     
  225.     case 'date':
  226.     case 'timestamp without time zone':
  227.     case 'timestamp with time zone':
  228.     case 'timestamp':
  229.     
  230.         $a_tipo['date']="data formattata";
  231.         $a_tipo['date_le']="data precendente o uguale a";
  232.         $a_tipo['date_lt']="data successiva o uguale a";
  233.     break;
  234.     
  235.     case 'time':
  236.  
  237.     
  238.         $a_tipo['orario_sec']="orario formattato (con la forma HH:mm:ss)";
  239.         $a_tipo['orario']="orario formattato (con la forma HH:mm)";
  240.     break;
  241.     
  242.     case 'double':
  243.     case 'float':
  244.     
  245.         $a_tipo['double']="numerico con virgola";
  246.         $a_tipo['integer']="numerico intero";
  247.         $a_tipo['numrange']="intervallo numerico";
  248.         $a_tipo['numchar']="numero con virgola con esattamente n. cifre:";
  249.         
  250.     break;    
  251.  
  252.     
  253.         
  254.     
  255. }
  256.  
  257.  
  258. /*$a_tipo['integer']="numerico intero";
  259. $a_tipo['double']="numerico con virgola";
  260. $a_tipo['alpahnum']="alfanumerico";
  261. $a_tipo['alpahnum']="alfanumerico con trattini";
  262. $a_tipo['alpahnum']="alfanumerico con spazi";
  263. $a_tipo['email']="email";
  264. $a_tipo['maxlength']="lunghezza massima";
  265. $a_tipo['minlength']="lunghezza minima";
  266. $a_tipo['notequal']="diverso da";
  267. $a_tipo['numrange']="intervallo numerico";
  268. $a_tipo['date']="data formattata";
  269. $a_tipo['date_lt']="data precendente o uguale a";
  270. $a_tipo['date_le']="data successiva o uguale a";
  271. $a_tipo['orario_sec']="orario formattato (con la forma HH:mm:ss)";
  272. $a_tipo['orario']="orario formattato (con la forma HH:mm)";
  273. $a_tipo['regexp']="espressione regolare";*/
  274.  
  275. if(isset($_GET['feed_del'])){
  276.     
  277.     if($_GET['feed_del']=='ok'){
  278.         
  279.         echo "
  280.         <script type=\"text/javascript\" >
  281.         
  282.         window.opener.document.getElementById('controlli_".$ID_REG."').innerHTML='Controlli avanzati';
  283.         
  284.         </script>\n";
  285.         
  286.         echo "<p class=\"feedok\">Controllo eliminato correttamente<br /><br /><span class=\"fakelink\" onclick=\"window.close();\">Chiudi</span></p>\n";
  287.     }
  288.     else{
  289.         echo "<p class=\"feedko\">Nessun controllo eliminato</p>\n";
  290.         
  291.     }
  292.     
  293.     
  294. }
  295.  
  296.  
  297. if(isset($_GET['feed'])){
  298.     
  299.     if($_GET['feed']=='ok'){
  300.         
  301.         echo "
  302.         <script type=\"text/javascript\" >
  303.         
  304.         window.opener.document.getElementById('controlli_".$ID_REG."').innerHTML='Controlli avanzati <strong>(".$mat_controlli[0][1].")</strong>';
  305.         
  306.         </script>\n";
  307.         
  308.         echo "<p class=\"feedok\">Controllo inserito correttamente <br /><br /><span class=\"fakelink\" onclick=\"window.close();\">Chiudi</span></p>\n";
  309.     }
  310.     else{
  311.         echo "<p class=\"feedko\">Nessun controllo eliminato</p>\n";
  312.         
  313.     }
  314.     
  315.     
  316. }
  317.  
  318.  
  319. echo "<form name=\"controlli\" action=\"".$_SERVER['PHP_SELF']."\" method=\"get\">\n";
  320.  
  321.  
  322. if(count($a_tipo)>0){
  323.     
  324.     if(count($mat_controlli)==0){
  325.         
  326.         echo "<p>Nessun impostato per questo campo</p>\n";
  327.     }
  328.     else{
  329.         
  330.         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";
  331.     }
  332.     
  333.     
  334.     echo "<label for=\"tipo\">Controlli per questo tipo di campo:</label><br />\n";
  335.     
  336.     
  337.     
  338.     
  339.     echo "<select name=\"tipo\" id=\"tipo\" onchange=\"submit();\">\n";
  340.     
  341.     
  342.         echo "<option value=\"null\" >Selezionare il controllo desiderato ---&gt;</option>\n";
  343.     
  344.     foreach($a_tipo as $k=>$v){
  345.         
  346.         if(isset($_GET['tipo'])){
  347.             $sel0 ($_GET['tipo']==$k"selected=\"selected\"" "";
  348.         }
  349.         
  350.         else if($mat_controlli>0){
  351.             
  352.             $sel0=(isset($mat_controlli[0]&& $mat_controlli[0][1]==$k"selected=\"selected\"" "";
  353.         }
  354.         
  355.         
  356.         echo "<option $sel0 value=\"$k\">$v</option>\n";
  357.     }
  358.     
  359.     echo "</select>\n";
  360. }
  361. else{
  362.     
  363.     echo "<p><strong>Attenzione!</strong> Non ci sono controlli possibili per questo tipo di campo</p>\n";
  364. }
  365.  
  366. switch($_GET['tipo']){
  367.     
  368.     case 'maxlength':
  369.         
  370.             $aggiungi="\t\t\t<label for=\"val1\">Inserire la lunghezza massima consentita: </label>
  371.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n";
  372.     break;    
  373.     
  374.     
  375.     
  376.     case 'minlength':
  377.         
  378.             $aggiungi="\t\t\t<label for=\"val1\">Inserire la lunghezza minima consentita: </label>
  379.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n";
  380.     break;
  381.     
  382.     
  383.     case 'notequal':
  384.         
  385.             $aggiungi="\t\t\t<label for=\"val1\">Inserire il valore da non consentire: </label>
  386.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n";
  387.     break;
  388.     
  389.     case 'numrange':
  390.         
  391.             $aggiungi="\t\t\t<label for=\"val1\">Inserire il valore minimo: </label>
  392.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
  393.                     <br /><br />
  394.                     <label for=\"val2\">Inserire il valore massimo: </label>
  395.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val2\" />\n";
  396.     break;    
  397.     
  398.     
  399.     case 'date_lt':
  400.         
  401.             $aggiungi="\t\t\t<label for=\"val1\">Data minore di : </label>
  402.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
  403.                     \n";
  404.     break;
  405.     
  406.     case 'date_le':
  407.         
  408.             $aggiungi="\t\t\t<label for=\"val1\">Data  minore o uguale a : </label>
  409.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
  410.                     \n";
  411.     break;
  412.     
  413.     
  414.     case 'regexp':
  415.         
  416.             $aggiungi="\t\t\t<label for=\"val1\">Espressione regolare: </label>
  417.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
  418.                     \n";
  419.     break;
  420.     
  421.     
  422.     case 'numchar':
  423.         
  424.             $aggiungi="\t\t\t<label for=\"val1\">Numero di cifre/caratteri richiesti: </label>
  425.                     <input type=\"text\" name=\"val1\" value=\"\" id=\"val1\" />\n
  426.                     \n";
  427.     break;
  428.     
  429.     default $aggiungi='';
  430.     
  431. }
  432.  
  433. echo "<br /><br />"$aggiungi;
  434. echo "<input type=\"hidden\" name=\"id_reg\" value=\"".$ID_REG."\" />\n";
  435.  
  436. echo "</form>\n";
  437.  
  438.  
  439. if(isset($_GET['tipo']&& $_GET['tipo']!='null'){
  440.     
  441.     $onclick="if($('val1')){ $('control_1').value=\$F('val1');};";
  442.     $onclick.="if($('val2')){ $('control_2').value=\$F('val2');};";
  443.     $onclick.="if($('tipo')){ $('tipo_sub').value=\$F('tipo');};";
  444.     $onclick.="submit();";
  445.     
  446.     echo "<br /><br /><form name=\"invia\" method=\"post\" action=\"".$_SERVER['PHP_SELF']."\" >
  447.     <input type=\"hidden\" name=\"tipo_sub\" id=\"tipo_sub\" value=\"\" />
  448.     <input type=\"hidden\" name=\"control_1\" id=\"control_1\" value=\"\" />
  449.     <input type=\"hidden\" name=\"control_2\" id=\"control_2\" value=\"\" />
  450.     <input type=\"hidden\" name=\"id_reg\" id=\"id_reg\" value=\"".$ID_REG."\" />
  451.     <input type=\"hidden\" name=\"column_name\" id=\"column_name\" value=\"".$RS['column_name']."\" />
  452.     <input type=\"button\" name=\"invia\" id=\"invia\" value=\"Salva il controllo\" onclick=\"$onclick\" />
  453.     
  454.     </form>\n";
  455.     
  456.     
  457.     
  458.     
  459. }
  460.  
  461. echo closeLayout1();
  462.  
  463.  
  464. ?>

Documentation generated on Sat, 22 Sep 2007 11:49:46 +0200 by phpDocumentor 1.4.0a2