Source for file func.tratta_campo.php
Documentation is available at func.tratta_campo.php
* Libreria di funzioni per la gestione dei campi in area di amministrazione.
* Si tratta delle funzioni che generano le scelte possibili per le impostazioni dei campi,
* viste le caratteristiche dei campi definiti in database.
* @subpackage Function-Libraries
* @author Mario Marcello Verona <marcelloverona@gmail.com>
* @copyright 2007 Mario Marcello Verona
* @license http://www.gnu.org/licenses/gpl.html GNU Public License
* Utilità che imposta se un option di una select debba essere selezionato
* @param string $tipo Valore dell'option nella tendina
* @param string $def Valore definito
return ($tipo== $def) ? "selected=\"selected\"" : "";
* Funzione che attribuisce i tipi possibili di campo per una tabella
* E' utilizzata nell'amministrazione dei registri/gruppi
* @param array $pk Campo/i chiave/i primaria
* @param array $fk Campo/i chiave esterna
* @param string $colref_fk Colonne di riferimento nella relazione delle chiavi esterne
function tratta_campo($ar_campo,$pk,$fk,$colref_fk= array()){
// estrai i valori come variabili
// caratteristiche di default per la visibilità
$campo_visibile_disabled= false;
$select_tipo_disable = false;
$column_default = (strlen($column_default)> 0) ? $column_default : "<em class=\"na\">non specificato</em>";
$max_length= (ereg('char',$data_type)) ? "(". $character_maximum_length . " caratteri)" : "";
// Impostazioni campo obbligatorio
if(is_null($in_richiesto) || $in_richiesto== ""){
$in_richiesto = (trim($is_nullable)== "NO") ? true: false;
// se l'impostazione deriva dal database ed è richiesto imponi la scelta
$campo_richiesto_disabled= $in_richiesto;
$in_richiesto = ($in_richiesto== "1" || $in_richiesto== 't') ? true: false;
// se l'impostazione deriva del l'utente lascia la scelta
$campo_richiesto_disabled= false;
// Impostazioni campo visibile
if($in_visibile== '1' || $in_visibile== 't'){
elseif($in_visibile== '0' || $in_visibile== 'f'){
// Impostazioni del campo search
if($in_search== '1' || $in_search== 't'){
elseif($in_search== '0' || $in_search== 'f'){
// Impostazioni del campo suggest
if($in_suggest== '1' || $in_suggest== 't'){
elseif($in_suggest== '0' || $in_suggest== 'f'){
// Impostazioni del campo suggest
$campo_in_table= ($in_table== '1' || $in_table== 't' ) ? true: false;
// A seconda del tipo di campo fa delle proposte:
$sel= array_flip(array('int','float','double','char','password','text','mediumtext','date','datetime','bool','bit','hidden','select','select_from'));
case 'smallint' : $options = (ereg("tinyint\(1\)",$column_type)) ? "\t\t\t<option value=\"bool\" ". selected_def('bool',$in_tipo). ">booleano (vero|falso)</option>
<option value=\"int\" ". selected_def('int',$in_tipo). ">numero intero</option>\n"
"\t\t\t<option value=\"int\" ". selected_def('int',$in_tipo). ">numero intero</option>\n" ;
$options = "\t\t\t<option value=\"int\" ". selected_def('int',$in_tipo). ">numero intero</option>\n";
case 'double': $options = "\t\t\t<option value=\"float\" ". selected_def('float',$in_tipo). ">numero con virgola</option>\n";
case 'character varying' :
case 'bpchar' : $options = "\t\t\t<option value=\"char\" ". selected_def('char',$in_tipo). ">testo libero corto</option>\n";
$options.= "\t\t\t<option value=\"password\" ". selected_def('password',$in_tipo). ">password</option>\n";
case 'text' : $options = "\t\t\t<option value=\"text\" ". selected_def('text',$in_tipo). ">testo libero lungo</option>
<option value=\"char\" ". selected_def('char',$in_tipo). ">testo libero corto</option>
<option value=\"richtext\" ". selected_def('richtext',$in_tipo). ">testo formattato HTML</option>
case 'date' : $options = "\t\t\t<option value=\"date\" ". selected_def('date',$in_tipo). ">data formattata</option>\n";
case 'timestamp without time zone' :
case 'timestamp' : $options = "\t\t\t<option value=\"datetime\" ". selected_def('datetime',$in_tipo). ">data ed ora formattata</option>
<option value=\"date\" ". selected_def('date',$in_tipo). ">data formattata</option>\n";
case 'time' : $options = "\t\t\t<option value=\"time\" ". selected_def('time',$in_tipo). ">orario formattato</option>\n";
case 'bit' : $options = "\t\t\t<option value=\"bool\" ". selected_def('bool',$in_tipo). ">booleano (vero|falso)</option>\n";
<option value=\"hidden\" ". selected_def('hidden',$in_tipo). ">nascosto</option>
<option value=\"select\" ". selected_def('select',$in_tipo). ">valori definiti</option>
<option value=\"select_from\" ". selected_def('select_from',$in_tipo). ">valori definiti da tabella</option>
/* Impostazioni nel caso di valore autoincrement:
Imposta il campo come bloccato ed invisibile in fase di insert */
if($extra== "auto_increment"){
$campo_visibile_disabled = true;
$campo_richiesto_disabled = true;
$select_tipo_disable = true;
//TODO: da mettere le indicazioni di chiave primaria,
// così che se il valore non è autoincrement sia comunque richiesto un inserimento
$obbligatorio = ($is_nullable== "YES") ? "NO": "SI";
$commento = (strlen(trim($commento))> 0) ? "<br /><em class=\"commento\">". htmlentities($commento,ENT_QUOTES). "</em>": "";
// Immagine delle chiavette per le chiavi primarie
if($img_campo== " campopk"){
# Prende le informazioni sulla chiave esterna
# Questa informazione è utile per chi configura la tabella al fine
# di impostare la query esterna per recuperare i dati
// Cerca la chiave della FK
$info_fk = " - chiave esterna (rif:<strong>". $colref_fk[$k_fk]. "</strong>)";
// Gestione search | suggest
$OUT= "\t<div class=\"campo\">
<div class=\"campo-head\">
<strong class=\"var\">". $column_name. "</strong> - $data_type ". $max_length. " ". $info_fk. "
if($GLOBALS['_VARIABILI']['js_test']){
if($jstest!= '' && $jstest!= null){
$jstest_pezzi= explode("|",$jstest);
$attuale_jstest= $jstest_pezzi[1];
$testo_js_control = "Controlli avanzati";
$testo_js_control .= ($attuale_jstest!= '') ? " <strong>(". $attuale_jstest. ")</strong>" : "";
$OUT.= "<div style=\"float:right;width:170px;text-align:right\" class=\"campo-controlli\">
<br /><span id=\"controlli_$id_reg\" class=\"fakelink\" onclick=\"openWindow('adv_js_control.php?id_reg=". $id_reg. "', 'controlli_js', 65)\">$testo_js_control</span>
$OUT.= "\t\t<div class=\"campo-body$img_campo\">
<br/>obbligatorio(sql): <strong>$obbligatorio</strong>
<br/>default(sql): <strong>$column_default</strong>\n";
// Disabilitazioni checkbox
$att_dis_visibile= ($campo_visibile_disabled) ? "disabled=\"disabled\"" : "";
$att_dis_richiesto= ($campo_richiesto_disabled) ? "disabled=\"disabled\"" : "";
$att_dis_select = ($select_tipo_disable) ? "disabled=\"disabled\"" : "";
// vero|falso dei checkbox
$att_visibile_checked= ($campo_visibile) ? "checked=\"checked\"" : "";
$att_richiesto_checked= ($in_richiesto) ? "checked=\"checked\"" : "";
$valore_visibile= ($campo_visibile_disabled) ? 0: 1;
$valore_obbligatorio= ($att_dis_richiesto) ? 1: 0;
$OUT.= "\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_visibile]\" id=\"in_visibile_hid_$id_reg\" value=\"0\" />\n";
$OUT.= "\t\t<br/><label for=\"in_visibile_$id_reg\">campo visibile</label>
\t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_visibile]\" id=\"in_visibile_$id_reg\" value=\"1\" $att_dis_visibile $att_visibile_checked />\n";
$OUT.= "\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_richiesto]\" id=\"in_richiesto_hid_$id_reg\" value=\"0\" />\n";
$OUT.= "\t\t<br/><label for=\"in_richiesto_$id_reg\">campo obbligatorio</label>
\t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_richiesto]\" id=\"in_richiesto_$id_reg\" value=\"1\" $att_richiesto_checked $att_dis_richiesto/>\n";
$valore_search= ($campo_search) ? 1: 0;
$att_valore_search= ($campo_search) ? "checked=\"checked\"" : "";
$valore_suggest= ($campo_suggest) ? 1: 0;
$att_valore_suggest= ($campo_suggest) ? "checked=\"checked\"" : "";
$valore_table= ($campo_in_table) ? 1: 0;
$att_valore_table= ($campo_in_table) ? "checked=\"checked\"" : "";
$OUT.= "\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_search]\" id=\"in_search_hid_$id_reg\" value=\"0\" />\n";
$OUT.= "\t\t<br/><label for=\"in_search_$id_reg\">campo con ricerca</label>
\t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_search]\" id=\"in_search_$id_reg\" value=\"1\" $att_valore_search />\n";
// campo con suggerimenti di ricerca
$OUT.= "\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_suggest]\" id=\"in_suggest_hid_$id_reg\" value=\"0\" />\n";
$OUT.= "\t\t<br/><label for=\"in_suggest_$id_reg\">imposta i suggerimenti</label>
\t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_suggest]\" id=\"in_suggest_$id_reg\" value=\"1\" $att_valore_suggest />\n";
// campo in_table: cosa mostrare nella vista tabella
$OUT.= "\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_table]\" id=\"in_table_hid_$id_reg\" value=\"0\" />\n";
$OUT.= "\t\t<br/><label for=\"in_table_$id_reg\">visibile in vista tabella</label>
\t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_table]\" id=\"in_table_$id_reg\" value=\"1\" $att_valore_table />\n";
$OUT.= "\t\t<br/><label for=\"in_tipo_$id_reg\">Tipo di input</label>
<select name=\"campo[$id_reg][in_tipo]\" id=\"in_tipo_$id_reg\" onchange=\"mostra_hid(this.value,$id_reg)\" $att_dis_select>\n";
// $selected = ($in_tipo==$k) ? "selected=\"selected\" " : "";
$OUT.= $options. $aggiunta_options;
$OUT.= "\t\t<div id=\"hid_$id_reg\" >\n";
$value_select = ($in_tipo== 'select')? str_replace("[|]","\n",$in_default) : "";
$style_select = ($in_tipo== 'select')? "" : "display:none;";
$disabled_select = ($in_tipo== 'select')? "" : "disabled=\"disabled\"";
<div id=\"default-select-$id_reg\" style=\"$style_select\">
<label class=\"var\">Inserire, uno per riga, i valori possibili per la selezione - <a href=\"javascript:;\" onclick=\"openWindow('help.select.php',60,40)\">Regole</a></label>
<textarea name=\"campo[$id_reg][tipo_altro]\" cols=\"50\" rows=\"7\" $disabled_select>$value_select</textarea>
$style_password = ($in_tipo== 'password')? "" : "display:none;";
$val_password_0 = ($in_tipo== 'password' && ($in_default== '' || $in_default== 'null'))? "checked=\"checked\"" : "";
$val_password_1 = ($in_tipo== 'password' && $in_default== 'md5')? "checked=\"checked\"" : "";
$val_password_2 = ($in_tipo== 'password' && $in_default== 'sha1')? "checked=\"checked\"" : "";
<div id=\"default-password-$id_reg\" style=\"$style_password\">
<label class=\"var\">Inserire il tipo di codifica da operare sulla password</label>
<input type=\"radio\" name=\"campo[$id_reg][tipo_altro]\" value=\"null\" $val_password_0 /> Nessuna codifica <br />
<input type=\"radio\" name=\"campo[$id_reg][tipo_altro]\" value=\"md5\" $val_password_1 /> Hash MD5<br />
<input type=\"radio\" name=\"campo[$id_reg][tipo_altro]\" value=\"sha1\" $val_password_2 /> Hash SHA1
$value_select_from = ($in_tipo== 'select_from')? $in_default : "";
$style_select_from = ($in_tipo== 'select_from')? "" : "display:none;";
$disabled_select_from = ($in_tipo== 'select_from')? "" : "disabled=\"disabled\"";
<div id=\"default-selectfrom-$id_reg\" style=\"$style_select_from\">
<label class=\"var\">Inserire l'SQL che richiama i valori per questo campo</label>
<input type=\"button\" value=\"Editor\" onclick=\"openWindow('query_editor.php?gid={$_GET['gid']}&id_campo=$id_reg&id_table=$id_table','query_editor','50');\" />
<input type=\"button\" value=\"Test\" onclick=\"try_query(document.getElementById('tipo_altro_". $id_reg. "').value,". $id_reg. ")\" />
<span id=\"feed_altro_". $id_reg. "\" class=\"feed_altro\"> </span>
<br/><textarea name=\"campo[". $id_reg. "][tipo_altro]\" id=\"tipo_altro_". $id_reg. "\" cols=\"50\" rows=\"7\" $disabled_select_from >$value_select_from</textarea>
$value_hidden = ($in_tipo== 'hidden')? $in_default : "";
$style_hidden = ($in_tipo== 'hidden')? "" : "display:none;";
$disabled_hidden = ($in_tipo== 'hidden')? "" : "disabled=\"disabled\"";
$sovrascrivi_extra= ($in_tipo== 'hidden' && $extra== '1') ? "checked=\"checked\"" : "";
<div id=\"default-hidden-$id_reg\" style=\"$style_hidden\">
<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>
<br/><input type=\"text\" name=\"campo[$id_reg][tipo_altro]\" $disabled_hidden value=\"$value_hidden\" />
<input type=\"hidden\" name=\"campo[$id_reg][extra]\" value=\"0\" />
<input type=\"checkbox\" name=\"campo[$id_reg][extra]\" value=\"1\" id=\"extra_". $id_reg. "\" $sovrascrivi_extra />
<label for=\"extra_". $id_reg. "\">Sovrascrivi con il valore di default anche in caso di modifica del record</label>
|