phpDocumentor VFront
Function-Libraries
[ class tree: VFront ] [ index: VFront ] [ all elements ]

Source for file func.tratta_campo_submask.php

Documentation is available at func.tratta_campo_submask.php

  1. <?php
  2. /**
  3. * Libreria di funzioni per la gestione dei campi delle sottomascherein area di amministrazione.
  4. * Si tratta delle funzioni che generano le scelte possibili per le impostazioni dei campi,
  5. * viste le caratteristiche dei campi definiti in database.
  6. @package VFront
  7. @subpackage Function-Libraries
  8. @author Mario Marcello Verona <marcelloverona@gmail.com>
  9. @copyright 2007 Mario Marcello Verona
  10. @version 0.90
  11. @see func.tratta_campo.php
  12. @license http://www.gnu.org/licenses/gpl.html GNU Public License
  13. */
  14.  
  15.  
  16.  
  17.  
  18. /**
  19.  * Funzione che determina i possibili tipi di input per un campo di una sottomaschera
  20.  *
  21.  * @param array $ar_campo Informazioni sul campo in esame
  22.  * @param array $pk Campo/i chiave/i primaria
  23.  * @param array $fk Campo/i chiave esterna
  24.  * @param array $colref_fk Colonne di riferimento nella relazione delle chiavi esterne
  25.  * @param string $campo_FK 
  26.  * @param string $tabella_parent Nome della tabella parent nella relazione sottomaschera/maschera
  27.  * @return string HTML
  28.  */
  29. function tratta_campo_submask($ar_campo,$pk,$fk,$colref_fk=array(),$campo_FK=false$tabella_parent=false){
  30.     
  31.     global $link,$db1;
  32.     
  33.     
  34.     extract($ar_campo);
  35.     
  36.     
  37.  
  38.     /*
  39.     id_reg
  40.     table_oid
  41.     column_name
  42.     column_default
  43.     is_nullable
  44.     data_type
  45.     character_maximum_length
  46.     column_type
  47.     extra
  48.     in_tipo
  49.     in_default
  50.     in_visibile
  51.     in_richiesto
  52.     commento
  53.     */
  54.     
  55.     // caratteristiche di default per la visibilità
  56.     $campo_visibile=true;
  57.     $campo_visibile_disabled=false;
  58.     $select_tipo_disable false;
  59.     $column_default (strlen($column_default)>0$column_default "<em class=\"na\">non specificato</em>";
  60.     $max_length(ereg('char',$data_type)) "(".$character_maximum_length ." caratteri)" "";
  61.     
  62.     // Impostazioni campo obbligatorio
  63.     if(is_null($in_richiesto|| $in_richiesto==""){
  64.         $in_richiesto (trim($is_nullable)=="NO"true:false;
  65.         // se l'impostazione deriva dal database ed è richiesto imponi la scelta
  66.         $campo_richiesto_disabled$in_richiesto;
  67.     }
  68.     else{
  69.         $in_richiesto ($in_richiesto=="1"true:false;
  70.         // se l'impostazione deriva del l'utente lascia la scelta
  71.         $campo_richiesto_disabledfalse;
  72.     }
  73.     
  74.     
  75.     // Impostazioni campo visibile
  76.     if($in_visibile=='1'){
  77.         $campo_visibile=true;
  78.     }
  79.     elseif($in_visibile=='0'){
  80.         $campo_visibile=false;
  81.     }
  82.     
  83.     
  84.     
  85.  
  86.     
  87.     
  88.     
  89.     
  90.     
  91.     
  92.     
  93.     
  94.     
  95.     
  96.     
  97.     
  98.     
  99.     
  100.     
  101.     
  102.     
  103.     // A seconda del tipo di campo fa delle proposte:
  104.     
  105.     $sel=array_flip(array('int','float','char','text','password','date','datetime','bool','hidden','select','select_from'));
  106.     
  107.     
  108.     switch ($data_type){
  109.         
  110.         case 'integer' :
  111.         case 'tinyint' :
  112.         case 'smallint' :
  113.         case 'bigint' :
  114.         case 'int' :     $options "\t\t\t<option value=\"int\" ".selected_def('int',$in_tipo).">numero intero</option>\n";
  115.         break;
  116.         
  117.         case 'float' :         
  118.         case 'double' $options "\t\t\t<option value=\"float\" ".selected_def('float',$in_tipo).">numero con virgola</option>\n";
  119.         break;
  120.         
  121.         case 'varchar' 
  122.         case 'char' :     
  123.         case 'character' :     
  124.         case 'character varying' :         
  125.         case 'bpchar' :     $options "\t\t\t<option value=\"char\" ".selected_def('char',$in_tipo).">testo libero corto</option>\n";
  126.                             $options.= "\t\t\t<option value=\"password\" ".selected_def('password',$in_tipo).">password</option>\n";
  127.         break;
  128.         
  129.         case 'text'        :
  130.         case 'mediumtext' :
  131.         case 'longtext' :
  132.                         $options "\t\t\t<option value=\"text\" ".selected_def('text',$in_tipo).">testo libero lungo</option>
  133.                                   <option value=\"char\" ".selected_def('char',$in_tipo).">testo libero corto</option>\n";
  134.         break;
  135.         
  136.         case 'date' $options "\t\t\t<option value=\"date\" ".selected_def('date',$in_tipo).">data formattata</option>\n";
  137.         break;
  138.         
  139.                 
  140.         case 'time' $options "\t\t\t<option value=\"time\" ".selected_def('time',$in_tipo).">orario formattato</option>\n";
  141.         break;
  142.         
  143.         case 'datetime' 
  144.         case 'timestamp without time zone' 
  145.         case 'timestamp' $options "\t\t\t<option value=\"datetime\" ".selected_def('datetime',$in_tipo).">data ed ora formattata</option>
  146.                                     <option value=\"date\" ".selected_def('date',$in_tipo).">data formattata</option>\n";
  147.         break;
  148.         
  149.         case 'bool' 
  150.         case 'boolean' 
  151.         case 'bit' :     $options "\t\t\t<option value=\"bool\" ".selected_def('bool',$in_tipo).">booleano (vero|falso)</option>\n";
  152.         break;
  153.         
  154.         default$options="";
  155.     }
  156.     
  157.     
  158.     
  159.     
  160.     $aggiunta_options="
  161.                 <option value=\"hidden\" ".selected_def('hidden',$in_tipo).">nascosto</option>
  162.                 <option value=\"select\" ".selected_def('select',$in_tipo).">valori definiti</option>
  163.                 <option value=\"select_from\" ".selected_def('select_from',$in_tipo).">valori definiti da tabella</option>
  164.         ";
  165.  
  166.     
  167.     
  168.     
  169.     
  170.     
  171.  
  172.                        
  173.     /* Impostazioni nel caso di valore autoincrement:
  174.     Imposta il campo come bloccato    ed invisibile in fase di insert    */
  175.     if($extra=="auto_increment"){
  176.         $campo_visibile false;
  177.         $campo_visibile_disabled true;
  178.         $campo_richiesto_disabled true;
  179.         $select_tipo_disable true;
  180.     }
  181.     
  182.     
  183.     
  184.     
  185.     //TODO: da mettere le indicazioni di chiave primaria, 
  186.     //         così che se il valore non è autoincrement sia comunque richiesto un inserimento
  187.     
  188.     $obbligatorio ($is_nullable=="YES""NO":"SI";
  189.     
  190.     $commento (strlen(trim($commento))>0"<br /><em class=\"commento\">".htmlentities($commento,ENT_QUOTES)."</em>""";
  191.     
  192.     $pk= (array) $pk;
  193.     
  194.     // Immagine delle chiavette per le chiavi primarie
  195.     if(in_array($column_name,$pk)){
  196.         $img_campo=" campopk";
  197.     }
  198.     else{
  199.         $img_campo=" camponorm";
  200.     }
  201.     
  202.     
  203.     if(in_array($column_name,$fk)){
  204.         
  205.         if($img_campo==" campopk"){
  206.             $img_campo=" campopkfk";
  207.         }
  208.         else{
  209.             $img_campo=" campofk";
  210.             
  211.         }
  212.         
  213.         
  214.         ###############
  215.         #
  216.         #    Prende le informazioni sulla chiave esterna
  217.         #    Questa informazione è utile per chi configura la tabella al fine 
  218.         #    di impostare la query esterna per recuperare i dati
  219.         #
  220.         
  221.         
  222.         // Cerca la chiave della FK
  223.         $k_fk array_search($column_name,$fk);
  224.         
  225.         $info_fk " - chiave esterna (rif:<strong>".$colref_fk[$k_fk]."</strong>)";
  226.     }
  227.     else{
  228.         $info_fk="";
  229.     }
  230.  
  231.  
  232.     
  233.     
  234.     // Gestione search | suggest
  235.     
  236.     
  237.     
  238.     
  239.     
  240.     $OUT"\t<div class=\"campo\">
  241.                 <div class=\"campo-head\">
  242.                     <strong class=\"var\">".$column_name."</strong> - $data_type ".$max_length." ".$info_fk."
  243.                     $commento
  244.                 
  245.                 </div>";
  246.     
  247.     
  248.     
  249.     
  250.     
  251.     
  252.     
  253.     
  254.         
  255.     
  256.     ##########################################################################################################
  257.     #
  258.     #    IMPOSTAZIONI PER IL CAMPO IMPOSTATO COME RIFERIMENTO AL PARENT
  259.     #
  260.     #
  261.     
  262.     if($campo_FK!=false){
  263.         
  264.         
  265.         
  266.         // PRENDI i campi della tabella parent
  267.         
  268.         $sql_parent "SELECT column_name FROM ".$db1['frontend'].".registro_col 
  269.                         WHERE id_table='".$tabella_parent."'
  270.                         ORDER BY ordinal_position
  271.                         ";
  272.         
  273.         $q_parent vmsql_query($sql_parent,$link);
  274.         
  275.         list($campi_parentvmsql_fetch_row_all($q_parent,true);
  276.         
  277.         
  278.         
  279.         $OUT.="<div class=\"campo-body$img_campo\">
  280.         
  281.             <p class=\"grigio\">Questo campo sar&agravel'etichetta identificativa del recordnon sar&agrave;
  282.             soggetto ad inserimento o modifica attraverso la sottomascherama deve invece mostrare un nome significativo.</p>";
  283.         
  284.         $OUT.="
  285.         <input type=\"hidden\" name=\"campo_sub[$id_reg_sub][in_visibile]\" value=\"1\" />
  286.         <input type=\"hidden\" name=\"campo_sub[$id_reg_sub][in_richiesto]\"  value=\"0\" />
  287.         <input type=\"hidden\" name=\"campo_sub[$id_reg_sub][in_tipo]\"  value=\"parent_ref\" />
  288.         
  289.         
  290.         ";
  291.         
  292.         $OUT.="<label for=\"in_default_$id_reg_sub\">Campo da cui generare l'etichetta per la sottomaschera:</label><br />
  293.             <select name=\"campo_sub[$id_reg_sub][in_default]\" id=\"in_default_$id_reg_sub\">\n";
  294.         
  295.         
  296.         
  297.         
  298.         for($i=0;$i<count($campi_parent);$i++){
  299.             
  300.             $selected_parent($campi_parent[$i]==$in_default"selected=\"selected\"" "";
  301.             
  302.             $OUT.="\t\t<option value=\"".$campi_parent[$i]."\" $selected_parent>".$campi_parent[$i]."</option>\n";
  303.         }
  304.         
  305.         $OUT.="\t</select>";
  306.         
  307.         
  308.         $OUT.="</div>\n";
  309.         
  310.         
  311.         $OUT.="\t</div>\n";
  312.         
  313.         return $OUT;
  314.     }
  315.         
  316.     
  317.     
  318.     
  319.     
  320.     
  321.     
  322.     
  323.     
  324.     
  325.     
  326.     
  327.     
  328.     
  329.     
  330.     
  331.     
  332.         
  333.     
  334.     
  335.     $OUT.="
  336.                 <div class=\"campo-body$img_campo\">
  337.                 
  338.                     <br/>obbligatorio(sql): <strong>$obbligatorio</strong>
  339.                     <br/>default(sql): <strong>$column_default</strong>\n";
  340.         
  341.         // inizia la parte form
  342.         
  343.         // Disabilitazioni checkbox
  344.         $att_dis_visibile=($campo_visibile_disabled"disabled=\"disabled\"" "";
  345.         $att_dis_richiesto=($campo_richiesto_disabled"disabled=\"disabled\"" "";
  346.         $att_dis_select ($select_tipo_disable"disabled=\"disabled\"" "";
  347.         
  348.         
  349.         // vero|falso dei checkbox
  350.         $att_visibile_checked=($campo_visibile"checked=\"checked\"" "";
  351.         $att_richiesto_checked=($in_richiesto"checked=\"checked\"" "";
  352.         
  353.                 
  354.     
  355.         $valore_visibile=($campo_visibile_disabled0:1;
  356.         $valore_obbligatorio=($att_dis_richiesto1:0;
  357.         
  358.         $OUT.="\t\t<input type=\"hidden\" name=\"campo_sub[$id_reg_sub][in_visibile]\" id=\"in_visibile_hid_$id_reg_sub\" value=\"0\" />\n";
  359.         $OUT.="\t\t<br/><label for=\"in_visibile_$id_reg_sub\">campo visibile</label>
  360.         \t\t\t<input type=\"checkbox\" name=\"campo_sub[$id_reg_sub][in_visibile]\" id=\"in_visibile_$id_reg_sub\" value=\"1\" $att_dis_visibile $att_visibile_checked  />\n";
  361.                 
  362.         $OUT.="\t\t<input type=\"hidden\" name=\"campo_sub[$id_reg_sub][in_richiesto]\" id=\"in_richiesto_hid_$id_reg_sub\" value=\"0\" />\n";
  363.         $OUT.="\t\t<br/><label for=\"in_richiesto_$id_reg_sub\">campo obbligatorio</label>
  364.         \t\t\t<input type=\"checkbox\" name=\"campo_sub[$id_reg_sub][in_richiesto]\" id=\"in_richiesto_$id_reg_sub\" value=\"1\" $att_richiesto_checked $att_dis_richiesto/>\n";
  365.     
  366.         
  367.         
  368.         
  369.         $OUT.="\t\t<br/><label for=\"in_tipo_$id_reg_sub\">Tipo di input</label
  370.             <select name=\"campo_sub[$id_reg_sub][in_tipo]\" id=\"in_tipo_$id_reg_sub\" onchange=\"mostra_hid(this.value,$id_reg_sub)\" $att_dis_select>\n";
  371.         
  372.     //            $selected = ($in_tipo==$k) ? "selected=\"selected\" " : "";
  373.             
  374.         $OUT.= $options.$aggiunta_options;
  375.         
  376.         $OUT.="\t\t</select>\n";
  377.         
  378.         
  379.         
  380.         
  381.         $OUT.="\t\t<div id=\"hid_$id_reg_sub\" >\n";
  382.         
  383.         // TIPO SELECT 
  384.         $value_select ($in_tipo=='select')str_replace("[|]","\n",$in_default"";
  385.         $style_select ($in_tipo=='select')"" "display:none;";
  386.         $disabled_select ($in_tipo=='select')"" "disabled=\"disabled\"";
  387.         
  388.         $OUT.="
  389.             
  390.             <div id=\"default-select-$id_reg_sub\" style=\"$style_select\">
  391.                 <label class=\"var\">Inserireuno per rigai valori possibili per la selezione - <a href=\"javascript:;\" onclick=\"openWindow('help.select.php',60,40)\">Regole</a></label>
  392.                 <br/>
  393.                 <textarea name=\"campo_sub[$id_reg_sub][tipo_altro]\" cols=\"50\" rows=\"7\" $disabled_select>$value_select</textarea>
  394.             </div>\n";
  395.             
  396.         
  397.         // TIPO select_from 
  398.         $value_select_from ($in_tipo=='select_from')$in_default "";
  399.         $style_select_from ($in_tipo=='select_from')"" "display:none;";
  400.         $disabled_select_from ($in_tipo=='select_from')"" "disabled=\"disabled\"";
  401.         
  402.         $OUT.="
  403.             <div id=\"default-selectfrom-$id_reg_sub\" style=\"$style_select_from\">
  404.                 
  405.                 <label class=\"var\">Inserire l'SQL che richiama i valori per questo campo</label>
  406.                 <input type=\"button\" value=\"Editor\" onclick=\"openWindow('query_editor.php?gid={$_GET['gid']}&amp;id_campo=$id_reg_sub&amp;id_table=$id_table','query_editor','50');\" />    ".            
  407.                 "<input type=\"button\" value=\"Test\" onclick=\"try_query(document.getElementById('tipo_altro_".$id_reg_sub."').value,".$id_reg_sub.")\" />                ".
  408.                 "<span id=\"feed_altro_".$id_reg_sub."\" class=\"feed_altro\">&nbsp;</span>
  409.                 <br/><textarea name=\"campo_sub[".$id_reg_sub."][tipo_altro]\" id=\"tipo_altro_".$id_reg_sub."\" cols=\"50\" rows=\"7\" $disabled_select_from >$value_select_from</textarea>
  410.             </div>";
  411.         
  412.         
  413.         // Tipo Hidden
  414.         $value_hidden ($in_tipo=='hidden')$in_default "";
  415.         $style_hidden ($in_tipo=='hidden')"" "display:none;";
  416.         $disabled_hidden ($in_tipo=='hidden')"" "disabled=\"disabled\"";
  417.             
  418.         $OUT.="
  419.             <div id=\"default-hidden-$id_reg_sub\" style=\"$style_hidden\">
  420.                 
  421.                 <label class=\"var\">Inserire il valore di default del campo nascosto - <a href=\"javascript:;\" onclick=\"openWindow('help.variabili_hidden.php',60,40)\">vedi le variabili</a></label>
  422.                 <br/><input type=\"text\" name=\"campo_sub[$id_reg_sub][tipo_altro]\" $disabled_hidden value=\"$value_hidden\" />    
  423.             </div>
  424.         
  425.         </div>\n";
  426.         
  427.         $OUT.="
  428.     
  429.         
  430.         </div>
  431.     
  432.     </div>\n\n";
  433.     
  434.     
  435.     
  436.     return $OUT;
  437. }

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