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

Source for file scheda.php

Documentation is available at scheda.php

  1. <?php
  2. /**
  3. * Generatore della maschera per tabelle e viste.
  4. * Questo file rappresenta il cuore dell'applicazione VFront: attraverso questo file vengono
  5. * generate le maschere per utilizzare il database, mediante permessi e regole definite nei registri
  6. * di VFront.
  7. * E' un file complesso che genera HTML e codice dinamico Javascript.
  8. * Si appoggia a numerose librerie php e Javascript: il file principale che viene utilizzato
  9. * a lato client è ./js/proto-scheda.js
  10. @package VFront
  11. @author Mario Marcello Verona <marcelloverona@gmail.com>
  12. @copyright 2007 Mario Marcello Verona
  13. @version 0.90
  14. @license http://www.gnu.org/licenses/gpl.html GNU Public License
  15. */
  16.  
  17. require_once("./inc/conn.php");
  18. require_once("./inc/layouts.php");
  19. require_once("./inc/func.comuni.php");
  20. require_once("./inc/func.frontend.php");
  21. require_once("./inc/func.hash_iframe.php");
  22. require_once("./inc/func.browser_detection.php");
  23.  
  24.  
  25.  
  26. $info_browser=browser_detection('full');
  27.  
  28.  
  29. if(!isset($_VARIABILI)){
  30.     
  31.     include("./inc/func.var_frontend.php");
  32.     var_frontend();
  33. }
  34.  
  35.  
  36. /**
  37.  * Funzione per la definizione di larghezza del campo
  38.  *
  39.  * @param string $nome 
  40.  * @param string $xg_tipo 
  41.  * @return int 
  42.  */
  43. function campo_len($nome,$xg_tipo){
  44.     
  45.     $lentxt=strlen($nome)*8;
  46.     
  47.     if($xg_tipo=="timestamp"){
  48.         $lentxt=120;
  49.     }
  50.     
  51.     return $lentxt;
  52. }
  53.  
  54.  
  55. /**
  56.  * Creazione del pulsante per le sottomaschere
  57.  *
  58.  * @param array $sm 
  59.  */
  60. function pulsante_sottomaschera($sm){
  61.     
  62.     $nome_front(trim($sm['nome_frontend'])!=""$sm['nome_frontend']:$sm['nome_tabella'];
  63.     
  64.     echo "<input class=\"pulsante-submask\" type=\"button\" name=\"sm[".$sm['nome_tabella']."]\"  id=\"sm_".$sm['nome_tabella']."\" value=\"$nome_front\" "
  65.          ."onclick=\"apri_submask(".$sm['id_table'].",".$sm['id_submask'].");\" />\n";
  66.     
  67.     
  68.     
  69. }
  70.  
  71.  
  72.  
  73. #####################################################################
  74. #
  75. #    PRENDI LE IMPOSTAZIONI DA FRONTEND
  76. #
  77. #
  78.  
  79. $oid = (int) $_GET['oid'];
  80.  
  81. //if($oid==0) $oid=776;
  82.  
  83. $gid $_SESSION['gid'];
  84.  
  85. $query1 vmsql_query("SELECT * from {$db1['frontend']}.registro_tab 
  86.                         WHERE id_table=$oid 
  87.                         AND visibile=1",$link);
  88.  
  89. $data_tab=(vmsql_num_rows($query1)==1vmsql_fetch_assoc($query1array();
  90.  
  91. $nome_tab=$data_tab['table_name'];
  92.  
  93.  
  94.  
  95. if(count($data_tab)>0){
  96.  
  97.     
  98.     // Colonne della TABELLA
  99.     $query2 vmsql_query("SELECT column_name , data_type , character_maximum_length as maxsizeis_nullable
  100.                             in_richiestoin_searchin_suggestin_tipoin_defaultcommentoextrajstest
  101.                             FROM {$db1['frontend']}.registro_col 
  102.                             WHERE id_table=$oid 
  103.                             AND gid=$gid 
  104.                             AND in_visibile=1
  105.                             ORDER BY in_ordine,ordinal_position",$link);
  106.     
  107.     list($data_col$data_type$maxsize$is_nullable$in_richiesto
  108.         $in_search$in_suggest$in_tipo$in_default$commento,$extra,$jstestvmsql_fetch_row_all($query2,true);
  109.     
  110.     // Massimo risultato
  111.     list($MAX)=vmsql_fetch_row(vmsql_query("SELECT count(*) FROM ".$data_tab['table_name'],$link));
  112.  
  113.     
  114.     $info_pk=prendi_PK_oid($oid,$data_tab['table_type']);
  115.     
  116.     
  117.     // Colonne della TABELLA per la vista tabellare
  118.     $query3 vmsql_query("SELECT column_name , data_type , character_maximum_length as maxsize
  119.                             in_tipoin_default
  120.                             FROM {$db1['frontend']}.registro_col 
  121.                             WHERE id_table=$oid 
  122.                             AND gid=$gid 
  123.                             AND in_table=1
  124.                             ORDER BY ordinal_position",$link);
  125.     
  126.     list($x_column_name$x_data_type$x_maxsize$x_in_tipo$x_in_defaultvmsql_fetch_row_all($query3,true);
  127.     
  128.     
  129. }
  130. else{
  131.     exit;
  132. }
  133.  
  134.     ############################################################################
  135.     #
  136.     #    CONTATORE x JAVASCRIPT
  137.     #
  138.     #
  139.  
  140.     // SE c'è l'id in GET prendi calcola a che punto dell'elenco si è arrivati
  141.     if(isset($_GET['id']&& intval($_GET['id'])>0){
  142.         
  143.         // Prendi il moe del campo orderby ed il vaolre relativo all'id    
  144.             
  145.         $sql_calcola_sub "SELECT ".$data_tab['orderby'].
  146.                             FROM ".$data_tab['table_name']." WHERE ".$info_pk[0]."='".$_GET['id']."'";
  147.         
  148.         $sql_calcola "SELECT count(*) FROM ".$data_tab['table_name'].
  149.                             WHERE ".$data_tab['orderby']."<($sql_calcola_sub)";
  150.         
  151.         rpc_debug($sql_calcola);
  152.         
  153.         $query_calcola vmsql_query($sql_calcola,$link);
  154.                         
  155.         list($counter)=vmsql_fetch_row($query_calcola);
  156.         
  157.     }
  158.     else if(isset($_GET['counter']&& intval($_GET['counter'])>0){
  159.         
  160.         // Contatore attuale:
  161.         $counter=intval($_GET['counter']);
  162.     }
  163.     else{
  164.         $counter=0;
  165.     }
  166.  
  167.     #
  168.     #
  169.     ############################################################################
  170.     
  171.     
  172.     
  173.     
  174.     
  175.     
  176.     
  177.     $FORM "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\" id=\"singleform\" name=\"singleform\">\n";
  178.     
  179.     $FORM_0 ="";
  180.     $FORM_1 ="";
  181.  
  182.  
  183.     
  184.     
  185.     
  186.     
  187.     
  188.     
  189.     
  190.     
  191.     
  192.     
  193.     
  194. #########################################
  195. #
  196. #     Ciclo sui CAMPI
  197.  
  198.  
  199. // Variabili da impostare prima del ciclo.
  200.  
  201. $riga_aperta=false;
  202.  
  203. $campi_req="";
  204. $campi_search="";
  205. $campi_suggest="";
  206. $in_insert_tab="";
  207. $id_table_ref="";
  208. $FCK_EDITOR_VARS="";
  209. $carica_calendariofalse;
  210. $n_tendine_attese=0;
  211. $carica_md5=false;
  212. $carica_sha1=false;
  213. $rules=array();
  214.  
  215. for($i=0;$i<count($data_col);$i++){
  216.     
  217.     // variabili da impostare dentro il ciclo.    
  218.     
  219.     $label=true;
  220.         
  221.     $riga_singola=false;
  222.     
  223.     $size=0;
  224.     
  225.     $href_nuovo_record="";
  226.     
  227.     if($GLOBALS['_VARIABILI']['js_test']){
  228.  
  229.         if($jstest[$i]!=''$rules[]=trim($jstest[$i]);
  230.         
  231.     }
  232.     
  233.     
  234.  
  235.     
  236.     // SE IMPOSTATO, sovrascrivo il tipo sovraimposto a quello di default
  237.     
  238.      $data_type[$i($in_tipo[$i]=='' || $in_tipo[$i]==null$data_type[$i$in_tipo[$i];
  239.     
  240.     
  241.     // Impostazioni del campo
  242.     
  243.     // INT  ----------------------------------------------------------------------------------------------------------------
  244.     
  245.     if(($data_type[$i]=='int' || $data_type[$i]=='tinyint' || $data_type[$i]=='mediumint' || $data_type[$i]=='float' || $data_type[$i]=='double')){
  246.         
  247.         $size=10;
  248.         $input="<input onkeypress=\"mod(this.id);\"  onchange=\"mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  249.                "id=\"dati_".$data_col[$i]."\" value=\"\" size=\"$size\" readonly=\"readonly\" type=\"text\" />";
  250.     }
  251.     
  252.     
  253.     
  254.     
  255.     // VARCHAR ---------------------------------------------------------------------------------------------------------------
  256.     elseif($data_type[$i]=='varchar' || $data_type[$i]=='char'){
  257.         
  258.         if($maxsize[$i]>100){
  259.             if($maxsize[$i]<=80$size=$maxsize[$i];
  260.             else $size=135;
  261.             $riga_singola=true;
  262.         }
  263.         else $size=59;
  264.         
  265.         $input="<input onkeypress=\"mod(this.id);\" onchange=\"mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  266.                "id=\"dati_".$data_col[$i]."\" value=\"\" size=\"$size\" readonly=\"readonly\" type=\"text\" />";
  267.                
  268.                
  269.         // IMPOSTAZIONI SUGGEST PER LA RICERCA -----------------------
  270.         
  271.         if($in_search[$i]=="1"  && $in_suggest[$i]=="1"){
  272.         
  273.             $input.=<<<SUGGEST
  274.             <div id="suggest-{$data_col[$i]}class="campo-updatestyle="display:none;border:1px solid black;background-color:white;"></div>
  275.                     <script type="text/javascriptlanguage="javascriptcharset="iso-8859-1">
  276.                         new Ajax.Autocompleter('dati_{$data_col[$i]}','suggest-{$data_col[$i]}','rpc.suggest.php?t={$data_tab['table_name']}',{});
  277.                     </script>
  278.             
  279. SUGGEST;        
  280.         }
  281.         
  282.         
  283.         //--  Fine suggest
  284.                
  285.     }
  286.     
  287.     
  288.     // TEXTAREA -----------------------------------------------------------------------------------------------
  289.     
  290.     elseif($data_type[$i]=='text' || $data_type[$i]=='mediumtext'){
  291.         
  292.             $riga_singola=true;
  293.             
  294.             $input="<textarea onkeypress=\"mod(this.id);\" onchange=\"mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  295.                    "id=\"dati_".$data_col[$i]."\" cols=\"132\" rows=\"9\" readonly=\"readonly\" ></textarea>";
  296.                    
  297.     }
  298.     
  299.     
  300.     // BOOL -----------------------------------------------------------------------------------------------
  301.     
  302.     elseif($data_type[$i]=='bool'){
  303.         
  304.             $riga_singola=false;
  305.             
  306.             if($db1['dbtype']=='postgres'){
  307.                 $input="<input type=\"checkbox\" onclick=\"this.value=(this.value=='f' || this.value=='')?'t':'f'; mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  308.                    "id=\"dati_".$data_col[$i]."\" disabled=\"disabled\" style=\"margin-left:0;\" value=\"0\" />";
  309.             }
  310.             else{
  311.                 $input="<input type=\"checkbox\" onclick=\"this.value=(this.value==0 || this.value=='')?1:0; mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  312.                    "id=\"dati_".$data_col[$i]."\" disabled=\"disabled\" style=\"margin-left:0;\" value=\"0\" />";
  313.             }
  314.     }
  315.     
  316.     // PASSWORD -----------------------------------------------------------------------------------------------
  317.     
  318.     elseif($data_type[$i]=='password'){
  319.         
  320.             $riga_singola=true;
  321.             
  322.             // se c'è almeno una codifica MD5 carica il file JS
  323.             if($carica_md5 || $in_default[$i]=='md5'$carica_md5=true;
  324.             if($carica_sha1 || $in_default[$i]=='sha1'$carica_sha1=true;
  325.             
  326.             
  327.         $input="<input onkeypress=\"mod(this.id);\" onchange=\"mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  328.                "id=\"dati_".$data_col[$i]."\" value=\"\" size=\"59\" readonly=\"readonly\" type=\"password\" title=\"$in_default[$i]\" />";
  329.                    
  330.     }
  331.     
  332.     
  333.     // Tipo richtext: FCKEDITOR -------------------------------------------------------------------------------
  334.     elseif($data_type[$i]=='richtext'){
  335.         
  336.             $riga_singola=true;
  337.         
  338.                 include_once("./plugins/FCKeditor/fckeditor.php");
  339.                 
  340.                 $nome_dir(dirname($_SERVER['PHP_SELF'])=='/'"" dirname($_SERVER['PHP_SELF']);
  341.                 $oFCKeditor new FCKeditor('dati_'.$data_col[$i]);
  342.                 $oFCKeditor->BasePath $nome_dir."/plugins/FCKeditor/";
  343.                 $oFCKeditor->ToolbarSet 'Custom';
  344.                 $oFCKeditor->Height '290';
  345.                 $oFCKeditor->Width '600';
  346.                 $oFCKeditor->Value '';
  347.                 $input $oFCKeditor->CreateHtml(."<br />";
  348.                 
  349.     
  350.                 $FCK_EDITOR_VARS.=$data_col[$i].",";
  351.     
  352.     }
  353.     
  354.     
  355.     
  356.     // tipo speciale hidden   -------------------------------------------------------------------------------
  357.     elseif($data_type[$i]=='hidden'){
  358.         
  359.         $label=false;
  360.         
  361.         $valore_hidden=false;
  362.         
  363.         
  364.         if(isset($in_default[$i])){
  365.             $valore_hidden $in_default[$i];
  366.             // stringa  per il default
  367.         }
  368.         else{
  369.             $valore_hidden="";
  370.             $str_hidden_default="";
  371.         }
  372.  
  373.         $str_hidden_default="<span style=\"display:none\" id=\"hd_dati_".$data_col[$i]."\" >$valore_hidden</span>\n";
  374.     
  375.         
  376.         if($extra[$i]=='1')// sovrascrittura in modifica
  377.             $classe_hidden=' class="nomodify"';
  378.         }
  379.         else// scrittura solo in insert
  380.             $classe_hidden="";
  381.         }
  382.         
  383.         
  384.         
  385.         $input="
  386.         $str_hidden_default
  387.         <input name=\"dati[".$data_col[$i]."]\" ".
  388.                "id=\"dati_".$data_col[$i]."\" $classe_hidden value=\"".utf8_encode($valore_hidden)."\" type=\"hidden\" />";
  389.     }
  390.     
  391.     
  392.     // tipo speciale SELECT -------------------------------------------------------------------------------
  393.     elseif($data_type[$i]=='select'){
  394.         
  395.         $valori=array();
  396.         
  397.         $input="<select onchange=\"mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  398.                "id=\"dati_".$data_col[$i]."\" disabled=\"disabled\" >\n";
  399.                
  400.         
  401.                
  402.         $valori explode("[|]",$in_default[$i]);
  403.         
  404.         foreach($valori as $k=>$val){
  405.             
  406.             // se sono stati messi i separatori chiave, valore
  407.             if(ereg('=',$val)){
  408.                 list($kk,$val)=explode("=",$val);
  409.             }
  410.             else $kk=$val;
  411.             
  412.             $input.="\t\t<option value=\"$kk\">$val</option>\n";
  413.         }
  414.         
  415.         $input.="</select>\n";
  416.         
  417.     }
  418.     
  419.     
  420.     
  421.     // tipo speciale SELECT FROM -------------------------------------------------------------------------------
  422.     elseif($data_type[$i]=='select_from'){
  423.         
  424.         $valori=array();
  425.         
  426.         $riga_singola=true;
  427.         
  428.         
  429.         $IFRAME new hash_iframe($data_col[$i],$in_default[$i]);
  430.         
  431.         
  432.         
  433.         
  434.         $input="<div id=\"target_".$data_col[$i]."\"></div>\n";
  435.  
  436.         $input.="<iframe style=\"width:1px;height:1px;border:0;\" 
  437.                 id=\"i_id_".$data_col[$i]."\" 
  438.                 src=\"".FRONT_DOCROOT."/html/{$IFRAME->hash_html}.html\"    
  439.                 ></iframe>\n";
  440.         
  441.         
  442.         
  443.         
  444.         // SE LA TABELLA E' SCRIVIBILE METTI UN LINK
  445.         if($IFRAME->in_insert_tab=="1" && $IFRAME->in_visibile && $_VARIABILI['permetti_tparent_link']){
  446.             
  447.             
  448.             $href_nuovo_record=" <a class=\"inalto\" href=\"javascript:;\" onclick=\"openWindow('scheda.php?oid=".$IFRAME->id_table_ref."&parent_field=".$data_col[$i]."&parent_table={$nome_tab}','nuovo_valore',80)\" title=\"Inserisci un nuovo valore per questo elenco\">Nuovo valore</a>\n";
  449.         }
  450.         
  451.         
  452.         // cancello l'istanza
  453.         unset($IFRAME);
  454.         
  455.         $n_tendine_attese++;
  456.         
  457.     }
  458.     
  459.     
  460.     //- FINE SELECT_FROM 
  461.     
  462.     
  463.     
  464.     // DATA ---------------------------------------------------------------------------------------------------------------
  465.     
  466.     elseif($data_type[$i]=='date' && $_VARIABILI['usa_calendari']==1){
  467.     
  468.         $carica_calendario true;
  469.         
  470.         $input="<input onkeypress=\"mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  471.                "id=\"dati_".$data_col[$i]."\" value=\"\" size=\"$size\" readonly=\"readonly\" type=\"text\" />";
  472.         
  473.         $input.=<<<CAL
  474.         
  475.    <script type="text/javascript">
  476.     
  477.    Calendar.setup({
  478.         inputField     :    "dati_{$data_col[$i]}",   // id of the input field
  479.         firstDay       :    1,
  480.         ifFormat       :    "%Y-%m-%d",       // format of the input field
  481.         showsTime      :    false,
  482.         timeFormat     :    "24",
  483.         onUpdate       :    catcalc
  484.     });    
  485.     
  486.  
  487.     </script>
  488.   
  489. CAL;        
  490.     }
  491.     
  492.     
  493.     // Caso sconosciuto  (default) -------------------------------------------------------------------------------
  494.     
  495.     else {
  496.         $size=30;
  497.         $label=true;
  498.         $input="<input onkeypress=\"mod(this.id);\" class=\"off\" name=\"dati[".$data_col[$i]."]\" ".
  499.                "id=\"dati_".$data_col[$i]."\" value=\"\" size=\"$size\" readonly=\"readonly\" type=\"text\" />";
  500.     }
  501.     
  502.     
  503.     
  504.     
  505.     
  506. //-- FIne impostazione dei campi    
  507.     
  508.     
  509.     
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.     
  528.     // Impostazioni di campi obbligatori
  529.     if($is_nullable[$i]=="NO" || $in_richiesto[$i]=="1"){
  530.         $obbligatorio "<span class=\"red\">*</span>";
  531.         // metto in array che usero' ne javascript
  532.         $campi_req.="'".$data_col[$i]."',";
  533.     }
  534.     else{
  535.         $obbligatorio="";
  536.     }
  537.     
  538.     
  539.     // Se ï¿½ tendina dinamica metti un span di feedback
  540.         
  541.     $span_feed ($data_type[$i]=='select_from'
  542.         ? " <span id=\"feed_".$data_col[$i]."\" class=\"feed-tendina\">"
  543.           ."<img src=\"img/refresh1.gif\" alt=\"caricamento\" /> Caricamento in corso...</span>" "";
  544.     
  545.     $str_label ($label"<label for=\"dati_".$data_col[$i]."\" title=\"".htmlentities($commento[$i],ENT_QUOTES)."\">".$data_col[$i$obbligatorio $span_feed $href_nuovo_record ."</label>" "";
  546.     
  547.     
  548.     
  549.     
  550.     
  551.     // Impostazione sui campi search
  552.     if($in_search[$i]=="1"){
  553.         
  554.         $campi_search.="'".$data_col[$i]."',";
  555.         
  556.         if($in_suggest[$i]=="1"){
  557.             $campi_suggest.="'".$data_col[$i]."',";
  558.         }
  559.         
  560.         
  561.     }
  562.     
  563.     
  564.     
  565.     
  566.     
  567.     
  568.     
  569.     
  570.         
  571.     if($riga_singola){
  572.         
  573.         $FORM_0.="
  574.             <div class=\"row-s\">
  575.             {$str_label}{$input}
  576.             </div>
  577.             ";
  578.         
  579.         $riga_aperta=false;
  580.     }
  581.     else{
  582.         
  583.         if($riga_aperta){
  584.             
  585.             $FORM_0.="
  586.             <div class=\"row-d2\">
  587.                 {$str_label}{$input}
  588.             </div><br class=\"sep\" />
  589.             ";
  590.             $riga_aperta=false;
  591.         }
  592.         else{
  593.             
  594.             $FORM_0.="
  595.             <div class=\"row-d1\">
  596.                 {$str_label}{$input}
  597.             </div>
  598.             ";
  599.             
  600.             $riga_aperta=true;
  601.         }
  602.         
  603.         
  604.         
  605.         
  606.     }
  607.         
  608.     
  609. // -- fine ciclo sui campi
  610.  
  611.  
  612. // tolgo la virgola
  613. $campi_req=substr($campi_req,0,-1);
  614. $campi_search=substr($campi_search,0,-1);
  615. $campi_suggest=substr($campi_suggest,0,-1);
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.     ############################################
  624.     #
  625.     #    Impostazioni per xgrid
  626.     #
  627.     
  628.     $maxlen array();
  629.     
  630.     
  631.     $xg_campi='';
  632.     $xg_misure='';
  633.     $xg_tipo='';
  634.     $xg_sort='';
  635.     $xg_align='';
  636.     
  637.     for($i=0;$i<count($x_column_name);$i++){
  638.         
  639.         $lentxt=campo_len($x_column_name[$i],$x_data_type[$i]);
  640.         
  641.         $xg_campi.=$x_column_name[$i].", ";
  642.         
  643.         // Impostazioni lunghezza campi
  644.         if(!isset($maxlen[$x_column_name[$i]]|| $maxlen[$x_column_name[$i]]<$lentxt{
  645.             
  646.             if(($x_data_type[$i]=='varchar' 
  647.                 || $x_data_type[$i]=='text' 
  648.                 || $x_data_type[$i]=='mediumtext' 
  649.                  )
  650.                  && $lentxt<200){
  651.                 $maxlen[$x_column_name[$i]]140;
  652.             }
  653.             else{
  654.                 $maxlen[$x_column_name[$i]]$lentxt;
  655.             }
  656.         }
  657.         
  658.         $xg_misure.=$maxlen[$x_column_name[$i]].",";
  659.         $xg_tipo.="ro,";
  660.         $xg_sort.=($x_data_type[$i]=="int""int,":"str,";
  661.         $xg_align.=($x_data_type[$i]=="int""right,":"left,";
  662.     
  663.         
  664.                                     
  665.     }
  666.     #
  667.     #
  668.     #############################################
  669.  
  670.  
  671.  
  672. // tolgo la virgola dai campi xgrid
  673. $xg_campi substr($xg_campi,0,-2);
  674. $xg_misuresubstr($xg_misure,0,-1);
  675. $xg_tiposubstr($xg_tipo,0,-1);
  676. $xg_sortsubstr($xg_sort,0,-1);
  677. $xg_alignsubstr($xg_align,0,-1);
  678.  
  679.  
  680.  
  681. # Hidden per le chiavi primarie
  682. for($k=0;$k<count($info_pk);$k++){
  683.     
  684.     $FORM_0.="\t\t<input type=\"hidden\" name=\"pk[".$info_pk[$k]."]\" id=\"pk_".$info_pk[$k]."\" value=\"\" />\n";
  685.     
  686. }
  687.  
  688.  
  689.  
  690.  
  691. $FORM.="<div>$FORM_0</div>\n";
  692.  
  693. $FORM.="</form>";
  694.  
  695.  
  696.  
  697. #############################################################################################################
  698. #
  699. #    INIZIA L'APERTURA DEL LAYOUT
  700. #
  701. #############################################################################################################
  702.  
  703.  
  704.  
  705.     $files=array(
  706.                  
  707.                  "js/scriptaculous/lib/prototype.js",
  708.                  "js/proto-scheda.js",
  709.                  "js/scriptaculous/src/scriptaculous.js",
  710.                  "sty/scheda.css");
  711.                  
  712.         $files[]="js/dhtmlxGrid/css/my_dhtml.css";
  713.         $files[]="js/dhtmlxGrid/js/dhtmlXCommon.js";
  714.         $files[]="js/dhtmlxGrid/js/dhtmlXGrid.js";
  715.         $files[]="js/dhtmlxGrid/js/dhtmlXGridCell.js";
  716.         $files[]="js/tinydhtmlHistory.js";
  717.         $files[]="js/mostra_nascondi_id.js";
  718.         
  719.                  
  720.  
  721.         
  722.     // SE ci sono campi data , datetime o timestamp, prendi il calendario
  723.     if($carica_calendario){
  724.         $files[]="js/jscalendar/calendar.js";
  725.         $files[]="js/jscalendar/lang/calendar-it.js";
  726.         $files[]="js/jscalendar/calendar-setup.js";
  727.         $files[]="sty/jscalendar/calendar-win2k-cold-1.css";
  728.     }
  729.         
  730.     
  731.     if($carica_md5){
  732.         
  733.         $files[]="js/md5.js";
  734.     }
  735.     
  736.     if($carica_sha1){
  737.         
  738.         $files[]="js/sha1.js";
  739.     }
  740.              
  741.     
  742.     if(count($rules)>0){
  743.         
  744.         $files[]="js/yav/yav-config-it.js";
  745.         $files[]="js/yav/yav.js";
  746.     }
  747.     
  748.  
  749.     $LAYOUT openLayout1("Scheda ".$data_tab['table_name'],$files);
  750.     
  751.     if($GLOBALS['_VARIABILI']['shortcut_tastiera_attivi']==1)
  752.         $LAYOUT str_replace("<body>","<body onload=\"\" onkeydown=\"hotKeys(event);\">",$LAYOUT);
  753.     else 
  754.         $LAYOUT str_replace("<body>","<body onload=\"\">",$LAYOUT);
  755.  
  756.     $usaHistory (isset($_VARIABILI['usa_history']&& $_VARIABILI['usa_history']==1"true":"false";
  757.     
  758.     
  759.     // VARIABILI RELATIVE ALL'FCKEDITOR
  760.     if(strlen($FCK_EDITOR_VARS)>0){
  761.         
  762.         $add_fck"var fck_attivo=true;";
  763.         $vars_fck"var fck_vars=new Array('".str_replace(",","','",substr($FCK_EDITOR_VARS,0,-1))."');";
  764.         $fck_pronti="var fck_pronti=0;";
  765.         $oFCK="var oFCK=new Array();";
  766.     }
  767.     else{
  768.         $add_fck="var fck_attivo=false;"
  769.         $vars_fck="var fck_vars=new Array();";
  770.         $fck_pronti="";
  771.         $oFCK="";
  772.     }
  773.     
  774.     
  775.     $alias_tabella ($data_tab['table_type']=='VIEW' && isset($data_tab['fonte_al']&& $data_tab['fonte_al']!='')
  776.                     ? $data_tab['fonte_al'$data_tab['table_name'];
  777.                     
  778.     if(!isset($_GET['parent_field'])) $_GET['parent_field']='';
  779.     if(!isset($_GET['parent_table'])) $_GET['parent_table']='';
  780.     
  781.     
  782.     
  783.     // PRENDI LE SOTTOMASCHERE
  784.     $submasks prendi_sottomaschere($oid,false,true);
  785.     
  786.     
  787.     
  788.     $lista_submask="";
  789.     $alias_submask="";
  790.     $array_fk_parent=array();
  791.     $array_id_submask=array();
  792.     
  793.     for($i=0;$i<count($submasks);$i++){
  794.         $lista_submask.="'".$submasks[$i]['nome_tabella']."',";
  795.         $nome_front(trim($submasks[$i]['nome_frontend'])!=""$submasks[$i]['nome_frontend']:$submasks[$i]['nome_tabella'];
  796.         $alias_submask.="'".$nome_front."',";
  797.         $array_id_submask[]=$submasks[$i]['id_submask'];
  798.         $array_fk_parent[]='fkparent['.$submasks[$i]['id_submask'].']=\''.$submasks[$i]['campo_pk_parent']."';";
  799.     }    
  800.     $lista_submask(strlen($lista_submask)>0substr($lista_submask,0,-1)$lista_submask;
  801.     $alias_submask(strlen($alias_submask)>0substr($alias_submask,0,-1)$alias_submask;
  802.     
  803.     
  804.     
  805.     $pathRelativo (dirname($_SERVER['PHP_SELF'])=='/'"" dirname($_SERVER['PHP_SELF']);
  806.     
  807.     $jstest_js ($GLOBALS['_VARIABILI']['js_test']==&& count($rules)>0'true':'false';
  808.     
  809.     $permetti_link ($data_tab['permetti_link'== || $data_tab['permetti_link']=='t'1:0;
  810.     
  811.     $permetti_allegati ($data_tab['permetti_allegati'== || $data_tab['permetti_allegati']=='t'1:0;
  812.     
  813.     // identifico il db per checkbox ed altro
  814.     $PGdb($db1['dbtype']=='postgres'"true":"false";
  815.     
  816.     $js_manuale "
  817.     <script type=\"text/javascript\">
  818.     
  819.     // <!-- 
  820.  
  821.         var counter = $counter;
  822.         
  823.         var max=$MAX;
  824.         
  825.         var modifiche_attive=false;
  826.         
  827.         var ricerca = false;
  828.         
  829.         var campi_modnew Array();
  830.         
  831.         var tipo_salva = false;
  832.         
  833.         var passoVeloce = {$_VARIABILI['passo_avanzamento_veloce']};
  834.         
  835.         var campiReq = new Array($campi_req);
  836.         
  837.         var campiSearch = new Array($campi_search);
  838.         
  839.         var campiSuggest = new Array($campi_suggest);
  840.         
  841.         var record_bloccato=false;
  842.         
  843.         var tabella = '{$data_tab['table_name']}';
  844.         
  845.         var tabella_alias='{$alias_tabella}';
  846.         
  847.         var idRecord=0;
  848.         
  849.         var localIDRecord=0;
  850.         
  851.         var focusScheda=true;
  852.         
  853.         var initGrid = false;
  854.         
  855.         var nuovoRecord = false;
  856.         
  857.         var modificaRecord = false;
  858.         
  859.         var usaHistory = $usaHistory
  860.         
  861.         var infoBrows = new Array('".implode("','",$info_browser)."');
  862.         
  863.         var haveParent = (window.opener==null) ? false:true;
  864.         
  865.         var parentField = '".preg_replace("'[\W]'",'',$_GET['parent_field'])."';
  866.         
  867.         var parentTable = '".preg_replace("'[\W]'",'',$_GET['parent_table'])."';
  868.  
  869.         var permettiLink =$permetti_link;
  870.         
  871.         var permettiAllegati =$permetti_allegati;
  872.         
  873.         var nTendine=0; var tendineAttese=$n_tendine_attese;
  874.         
  875.         var initScheda=false;
  876.         
  877.         var pathRelativo='".$pathRelativo."';
  878.         
  879.         $add_fck $vars_fck $fck_pronti $oFCK
  880.     
  881.         var sottomaschere = new Array($lista_submask);
  882.         var sottomaschere_alias = new Array($alias_submask);
  883.         var fkparent=new Array();
  884.         ".implode("\n\t\t",$array_fk_parent)."
  885.         
  886.         var jstest=$jstest_js;
  887.         
  888.         var PGdb=$PGdb;
  889.         
  890.         window.onload = history_initialize;
  891.         ";    
  892.         
  893.     
  894.     if($carica_calendario){
  895.         
  896.         $js_manuale.="
  897.         
  898.                 
  899.          function catcalc(cal) {
  900.  
  901.              if(nuovoRecord || modificaRecord){
  902.                  mod(cal.params.inputField.id);
  903.              }
  904.            }
  905.         ";
  906.         
  907.         
  908. //        $js_manuale.=$CALENDARI;
  909.         
  910.     }
  911.         
  912.     
  913.     if($GLOBALS['_VARIABILI']['js_test']){
  914.         
  915.         $js_manuale.="\n\t\t var rules=new Array();\n";
  916.         
  917.         for($i=0;$i<count($rules);$i++)
  918.         
  919.             $js_manuale.="\t\trules[$i]='".addslashes($rules[$i])."';\n";
  920.         
  921.     }
  922.     
  923.     
  924.     // Scorciatoie da tastiera, condizionate dalle variabili
  925.     
  926.  if($GLOBALS['_VARIABILI']['shortcut_tastiera_attivi']==1){
  927.     
  928.     $js_manuale.=<<<JSman
  929.         
  930.         var keyActions = new Array ();
  931.         
  932.         
  933.         keyActions [0] = {character:  39, // freccia dx + shift - record avanti veloce
  934.                           actionType: "code", 
  935.                           param:      "if(!modifiche_attive && !ricerca && (counter+passoVeloce)<max){sndReq(tabella ,'next10',true);reloadGrid();}",
  936.                           mod:          "CTRL+SHIFT"     };
  937.                           
  938.         keyActions [1] = {character:  37, // freccia sx + shift - record indietro veloce
  939.                           actionType: "code", 
  940.                           param:      "if(!modifiche_attive && !ricerca && (counter-passoVeloce)>0){sndReq(tabella,'prev10',true);reloadGrid();}",
  941.                             mod:          "CTRL+SHIFT"     };
  942.         
  943.         keyActions [2] = {character:  38, // freccia su - vai al primo record
  944.                           actionType: "code", 
  945.                           param:      "if(!modifiche_attive && !ricerca){sndReq(tabella ,'min',true);reloadGrid();}",
  946.                           mod:          "CTRL"     }
  947.                                          
  948.         keyActions [3] = {character:  40, // freccia giù - vai all'ultimo record
  949.                           actionType: "code", 
  950.                           param:      "if(!modifiche_attive && !ricerca){sndReq(tabella ,'max',true);reloadGrid();}",
  951.                           mod:          "CTRL"     };
  952.                           
  953.         keyActions [4] = {character:  39, // freccia dx - record avanti
  954.                           actionType: "code", 
  955.                           param:      "if(!modifiche_attive && !ricerca){sndReq(tabella ,'next',true);}",
  956.                           mod:          "CTRL"     };
  957.                           
  958.         keyActions [5] = {character:  37, // freccia sx - record indietro
  959.                           actionType: "code", 
  960.                           param:      "if(!modifiche_attive && !ricerca){sndReq(tabella ,'prev',true);}",
  961.                             mod:          "CTRL"     }
  962.                                                          
  963.         keyActions [6] = {character:  82, // R - Cerca
  964.                           actionType: "code", 
  965.                           param:      "cerca()",
  966.                            mod:          "ALT"     };
  967.                            
  968.         keyActions [7] = {character:  13, // invio in modalità ricerca
  969.                           actionType: "code", 
  970.                           param:      "if(ricerca){cerca()}",
  971.                             mod:          "CTRL"     };                      
  972.                            
  973.         keyActions [8] = {character:  65, // A - Annulla
  974.                           actionType: "code", 
  975.                           param:      "annulla()",
  976.                            mod:          "ALT"     };
  977.  
  978. JSman;
  979.     
  980.  
  981.     // contatore per l'array JS keyActions 
  982.     $contatore_key=9;
  983.     
  984.  
  985.     if($data_tab['in_insert']==1)
  986.     
  987.         
  988.     
  989.         $js_manuale.="
  990.         
  991.         keyActions [$contatore_key] = {character:  78, // N - Nuovo record
  992.                           actionType: \"code\", 
  993.                           param:      \"nuovo_record()\",
  994.                            mod:          \"ALT\"     };
  995.              ";              
  996.  
  997.         $contatore_key++;
  998.         
  999.         
  1000.         if($data_tab['in_duplica']==1)
  1001.             
  1002.             $js_manuale.="
  1003.             
  1004.             keyActions [$contatore_key] = {character:  68, // D - Duplica il record
  1005.                               actionType: \"code\", 
  1006.                               param:      \"$('popup-duplica').style.display='';\",
  1007.                        mod:          \"ALT\"     };
  1008.                  ";              
  1009.     
  1010.             $contatore_key++;
  1011.         }
  1012.  
  1013.     }        
  1014.  
  1015.     
  1016.     if($data_tab['in_update']==1)
  1017.     
  1018.         
  1019.     
  1020.         $js_manuale.="
  1021.         
  1022.         keyActions [$contatore_key] = {character:  77, // M - Modifica
  1023.                               actionType: \"code\", 
  1024.                               param:      \"if(!modifiche_attive && !nuovoRecord){modifica();}\",
  1025.                                mod:          \"ALT\"     };
  1026.                                ";
  1027.                            
  1028.  
  1029.  
  1030.         $contatore_key++;
  1031.  
  1032.     }    
  1033.             
  1034.  
  1035.  
  1036.     if($data_tab['in_update']==|| $data_tab['in_insert']==1)
  1037.     
  1038.         
  1039.     
  1040.         $js_manuale.="
  1041.         
  1042.         keyActions [$contatore_key] = {character:  83, // S - Salva
  1043.                           actionType: \"code\", 
  1044.                           param:      \"if(modifiche_attive){salva()}\",
  1045.                             mod:          \"ALT\"     }
  1046.                            
  1047.         ";
  1048.         
  1049.         $contatore_key++;
  1050.  
  1051.     }    
  1052.  
  1053.  
  1054.     if($data_tab['in_delete']==1)
  1055.     
  1056.         
  1057.     
  1058.         $js_manuale.="
  1059.         
  1060.         keyActions [$contatore_key] = {character:  69, // E - Elimina
  1061.                           actionType: \"code\", 
  1062.                           param:      \"elimina()\",
  1063.                             mod:          \"ALT\"     };
  1064.         ";
  1065.         
  1066.         $contatore_key++;
  1067.  
  1068.     }
  1069.  
  1070.     if($permetti_link)
  1071.     
  1072.         
  1073.     
  1074.         $js_manuale.="
  1075.         
  1076.         keyActions [$contatore_key] = {character:  76, // L - Apri i link
  1077.                           actionType: \"code\", 
  1078.                           param:      \"openWindow('add.link.php?t='+tabella_alias+'&id='+localIDRecord,'Link',80);\",
  1079.                             mod:          \"ALT\"     };
  1080.         ";
  1081.         
  1082.         $contatore_key++;
  1083.  
  1084.     }
  1085.     
  1086.     if($permetti_allegati)
  1087.     
  1088.         
  1089.     
  1090.         $js_manuale.="
  1091.         
  1092.         keyActions [$contatore_key] = {character:  71, // G - Apri gli allegati
  1093.                           actionType: \"code\", 
  1094.                           param:      \"openWindow('add.attach.php?t='+tabella_alias+'&id='+localIDRecord,'Allegati',70);\",
  1095.                             mod:          \"ALT\"     };
  1096.         ";
  1097.         
  1098.         $contatore_key++;
  1099.  
  1100.     }
  1101.  
  1102.     
  1103.  // End of user defined array
  1104.  
  1105.  
  1106.     
  1107.     
  1108.     $js_manuale.="
  1109.             
  1110.     // -->
  1111.     </script>
  1112.     ";
  1113.     
  1114.     $LAYOUT str_replace("</head>",$js_manuale."</head>",$LAYOUT);
  1115.     
  1116.     echo $LAYOUT;
  1117.  
  1118.  
  1119.     $matrice_riferimenti ref_campo($nome_tab);
  1120.     
  1121. ?>
  1122. <!--[if IE]>
  1123. <style>
  1124.  
  1125. #singleform input, #singleform textarea{
  1126.     margin-left:-12px;
  1127. }
  1128.  
  1129. #loader-scheda{
  1130.     padding:0px 24px 12px 0px;
  1131.     height:2400px;
  1132. }
  1133.  
  1134.  
  1135. </style>
  1136.  
  1137. <![endif]-->
  1138.  
  1139. <div id="loader-scheda0">
  1140.         <div id="loader-scheda"></div>
  1141.     
  1142.         <div id="pop-loader-contenitore" align="center">
  1143.             <div id="pop-loader-scheda" >
  1144.                 Caricamento in corso...<br /><br />
  1145.                 <img src="img/refresh1.gif" alt="Loading" height="25" width="25" />
  1146.             </div>
  1147.         </div>
  1148. </div>
  1149.  
  1150. <div id="feedback">
  1151.     <span id="risposta"></span>
  1152. </div>
  1153.  
  1154. <?php echo "<div id=\"briciole\"><a href=\"index.php\">home</a> &raquo; "
  1155.           ."scheda tabella "$data_tab['table_name']."</div>";
  1156.           
  1157.           
  1158. //          echo "<script> alert('".implode("|",$info_browser)."'); </script>\n";
  1159.  
  1160.         $classe_h1 ($data_tab['table_type']=='VIEW')"verde":"var";
  1161.           
  1162. ?>
  1163.  
  1164. <h1>Tabella <span class="<?php echo $classe_h1;?>"><?php echo $data_tab['table_name'];?></span></h1>
  1165.  
  1166. <div><span id="numeri"></span>&nbsp;&nbsp;<span id="refresh">&nbsp;</span></div>
  1167.  
  1168.  
  1169.  
  1170. <div id="pulsanti">
  1171.  
  1172.     <input title="primo record" type="button" id="p_primo" name="p_primo" value="   |&lt;   " onclick="sndReq('<?php echo $data_tab['table_name'];?>','min',true);reloadGrid();" accesskey="7" />
  1173.     <input title="indietro di <?php echo $_VARIABILI['passo_avanzamento_veloce'];?> record" type="button" id="p_prev10" name="p_indietro10" value="   &lt;&lt;   " onclick="sndReq('<?php echo $data_tab['table_name'];?>','prev10',true);reloadGrid();" accesskey="1" />
  1174.     <input title="indietro" type="button" id="p_prev" name="p_indietro" value="   &lt;   " onclick="sndReq('<?php echo $data_tab['table_name'];?>','prev',true);" accesskey="4" />
  1175.     <input title="avanti" type="button" id="p_next" name="p_avanti" value="   &gt;   " onclick="sndReq('<?php echo $data_tab['table_name'];?>','next',true);" accesskey="6"/>
  1176.     <input title="avanti di <?php echo $_VARIABILI['passo_avanzamento_veloce'];?> record"  type="button" id="p_next10" name="p_avanti10" value="   &gt;&gt;   " onclick="sndReq('<?php echo $data_tab['table_name'];?>','next10',true);reloadGrid();" accesskey="3"  />    
  1177.     <input title="ultimo record" type="button" id="p_ultimo" name="p_ultimo" value="   &gt;|   " onclick="sndReq('<?php echo $data_tab['table_name'];?>','max',true);reloadGrid();" accesskey="9" />
  1178.     
  1179.     <!--<input accesskey="k" type="button" id="p_TEST" name="p_TEST" value=" TEST XML " onclick="debug_xml();" />-->
  1180.     <?php if ($data_tab['in_export']==1{  ?> <input accesskey="x" type="button" id="p_export" name="p_export" value=" Esporta dati " onclick="openWindow('admin/export_data.php?idt=<?php echo base64_encode($oid._BASE64_PASSFRASE);?>','esportazione_dati',65);" /> <?php ?>
  1181.     <!--<input type="button" id="p_TEST2" name="p_TEST2" value=" DEBUG Var " onclick="debug_var();" />-->
  1182. </div> 
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188. <div id="scheda1">
  1189.     
  1190.     <div id="pulsanti-azioni">
  1191.         
  1192.         <?php if($data_tab['in_insert']==1)?>
  1193.         <input title="Nuovo record" type="button" id="p_insert" name="insert" value=" Nuovo " onclick="nuovo_record();" accesskey="n" />
  1194.         <?php else echo "<input type=\"hidden\" id=\"p_insert\" />\n"?>
  1195.         
  1196.         <?php if($data_tab['in_update']==1)?>
  1197.         <input title="Modifica il record" type="button" id="p_update" name="update" value=" Modifica " onclick="modifica();" accesskey="m" />
  1198.         <?php else echo "<input type=\"hidden\" id=\"p_update\" />\n";?>
  1199.         
  1200.         <?php if($data_tab['in_insert']==|| $data_tab['in_update'])?>
  1201.         <input title="Annulla" type="button" id="p_annulla" name="annulla" value=" Annulla " onclick="annulla();" accesskey="a" />
  1202.         <?php else echo "<input type=\"hidden\" id=\"p_annulla\" />\n";?>
  1203.         
  1204.         <?php if($data_tab['in_insert']==|| $data_tab['in_update'])?>
  1205.         <input title="Salva il record" type="button" id="p_save" name="save" value=" Salva " onclick="salva();" accesskey="s" />
  1206.         <?php else echo "<input type=\"hidden\" id=\"p_save\" />\n";?>    
  1207.         
  1208.         <?php if($data_tab['in_delete']==1)?>
  1209.         <input title="Elimina il record" type="button" id="p_delete" name="delete" value=" Elimina " onclick="elimina();" accesskey="e" />
  1210.         <?php else echo "<input type=\"hidden\" id=\"p_delete\" />\n";?>
  1211.         
  1212.         <?php if($data_tab['in_insert']==&& $data_tab['in_duplica']==1)?>
  1213.         <input title="Duplica il record" type="button" id="p_duplica" name="duplica" value="Duplica" onclick="$('popup-duplica').style.display='';" />
  1214.         <?php else echo "<input type=\"hidden\" id=\"p_duplica\" />\n"?>
  1215.         
  1216.         <?php 
  1217.             // Pulsante ricerca
  1218.             if(strlen($campi_search)>0){
  1219.         ?>
  1220.         <input title="Modalit&agrave; ricerca" type="button" id="p_cerca" name="cerca" value=" Ricerca " onclick="cerca();" accesskey="r" />        
  1221.         <?php    ?>
  1222.         
  1223.     </div>
  1224.     
  1225.     
  1226.     
  1227.     <div id="pulsanti-submask">
  1228.     
  1229.         <?php
  1230.         
  1231.                 
  1232.         
  1233.         for($i=0;$i<count($submasks);$i++){
  1234.             
  1235.             
  1236.             echo pulsante_sottomaschera($submasks[$i]);
  1237.         }
  1238.         
  1239.         
  1240.         
  1241.         
  1242.         
  1243.         ?>
  1244.     
  1245.     
  1246.     </div>
  1247.     
  1248.     
  1249.     <?php echo $FORM;?>
  1250.     
  1251.     <div id="tipo-vista2">
  1252.         <table border="0" summary="impostazioni vista" class="switch-vista">
  1253.             <tr> 
  1254.                 <td><img src="img/vista_scheda_h.gif" alt="vista scheda" class="noborder" /></td>
  1255.                 <td><a href="javascript:;" onclick="switch_vista();"><img src="img/vista_tab.gif" alt="vista tabella" class="noborder" /></a></td>
  1256.             </tr>
  1257.             <tr> 
  1258.                 <td>vista scheda</td>
  1259.                 <td><a href="javascript:;" onclick="switch_vista();">vista tabella</a></td>
  1260.             </tr>
  1261.         </table>
  1262.     
  1263.     </div>
  1264.     
  1265.     
  1266.     <?php
  1267.     
  1268.     
  1269.     
  1270.     if(is_file("./scheda.allegati_link.php"&& (isset($data_tab['pemetti_allegati']|| isset($data_tab['permetti_link'])))
  1271.     {
  1272.         require_once("./scheda.allegati_link.php");
  1273.     }
  1274.         
  1275.     
  1276.     
  1277.         
  1278.  
  1279.     
  1280.     
  1281.     ?>
  1282.     
  1283. </div>
  1284.  
  1285. <?php 
  1286.  
  1287.  
  1288.  
  1289. // DIV PER LA DUPLICAZIONE
  1290.  
  1291.  
  1292.  if($data_tab['in_duplica']==1){
  1293.      
  1294.      
  1295. ?>
  1296.  
  1297. <div id="popup-duplica"
  1298.     style="position:absolute;
  1299.                 width:26px;
  1300.                 height:164px;
  1301.                 top:20%;
  1302.                 left:33%;
  1303.                 width:340px;
  1304.                 height:350px;
  1305.                 background-color:#EFF6FF;
  1306.                 border:2px solid #33CCFF;
  1307.                 padding:20px;
  1308.                 z-index:200;
  1309.                 overflow: auto;
  1310.                 display:none;"
  1311.     >
  1312.     <div class="chiudi-box"><span class="fakelink" onclick="mostra_nascondi('popup-duplica');">Chiudi [X]</span></div>
  1313.  
  1314.     <p><strong>Seleziona le sottomaschere da duplicare:</strong></p>
  1315.     
  1316.     <?php
  1317.  
  1318. $array_alias=explode("','",$alias_submask);
  1319.  
  1320. for($i=0;$i<count($array_id_submask);$i++){
  1321.     
  1322.     echo "<input type=\"checkbox\" name=\"sotto__".$array_id_submask[$i]."\" value=\"1\" /> ".str_replace("'","",$array_alias[$i])." <br />\n";
  1323.     
  1324. }
  1325.  
  1326.  
  1327.     echo "<br /><hr />\n";
  1328.     
  1329.     echo "<p><strong>Duplica altri oggetti:</strong></p>\n";
  1330.     
  1331.     echo "<input type=\"checkbox\" name=\"duplica_allegati\" value=\"1\" /> Duplica allegati<br /><br />\n";
  1332.     echo "<input type=\"checkbox\" name=\"duplica_link\" value=\"1\" /> Duplica link<br />\n";
  1333.  
  1334.     echo "<br /><hr />\n";
  1335.     
  1336.     echo "<br /><input type=\"button\" onclick=\"prepara_duplica()\" name=\"duplicatore\" value=\" Duplica \" />\n";
  1337.     echo " <input type=\"button\" onclick=\"mostra_nascondi('popup-duplica')\" name=\"annulla_duplica\" value=\" Annulla \" />\n";
  1338.  
  1339.     echo "</div>\n";
  1340.     
  1341.  }
  1342.  
  1343.  
  1344. ?>
  1345.  
  1346. <?php if($GLOBALS['_VARIABILI']['shortcut_tastiera_attivi']==&& $GLOBALS['_VARIABILI']['shortcut_tastiera_popup'])?>
  1347.  
  1348.     <div id="popup-hotkeys"
  1349.         style="position:absolute;
  1350.                 width:26px;
  1351.                 height:164px;
  1352.                 top:100px;
  1353.                 right:0;
  1354.                 border:0;
  1355.                 padding:0;
  1356.                 cursor:pointer;
  1357.                 float:left;
  1358.                 padding:10px 0 0 0;"
  1359.         ><img src="img/scorciatoie.gif" alt="Scorciatoie da tastiera" width="24" height="152" style="" onclick="mostra_nascondi('box-scorciatoie');" />
  1360.         
  1361.         </div>
  1362.         
  1363.             <div id="box-scorciatoie" 
  1364.                  style="display:none;">
  1365.                 <div class="chiudi-box"><span class="fakelink" onclick="mostra_nascondi('box-scorciatoie');">Chiudi [X]</span></div>
  1366.                  <p><strong><em>Navigazione tra i record</em></strong></p>
  1367.                 <dl>
  1368.                     <dt>CTRL + freccia destra</dt>
  1369.                     <dd>Avanza di 1 record</dd>
  1370.                     
  1371.                     <dt>CTRL + freccia sinistra</dt>
  1372.                     <dd>Torna indietro di 1 record</dd>
  1373.                     
  1374.                     <dt>CTRL + MAIUSC + freccia destra</dt>
  1375.                     <dd>Torna indietro di <?php echo $GLOBALS['_VARIABILI']['passo_avanzamento_veloce'];?> record</dd>
  1376.                     
  1377.                     <dt>CTRL + MAIUSC + freccia sinistra</dt>
  1378.                     <dd>Torna indietro di <?php echo $GLOBALS['_VARIABILI']['passo_avanzamento_veloce'];?> record</dd>
  1379.                     
  1380.                     <dt>CTRL + freccia gi&ugrave;</dt>
  1381.                     <dd>Vai all'ultimo record</dd>
  1382.                     
  1383.                     <dt>CTRL + freccia su</dt>
  1384.                     <dd>Vai al primo record</dd>
  1385.                 </dl>
  1386.                 <hr />
  1387.                 <p><strong><em>Azioni</em></strong></p>
  1388.                 <dl>
  1389.                     <dt>CTRL + ALT + N</dt>
  1390.                     <dd>Nuovo record</dd>
  1391.                     
  1392.                     <dt>CTRL + ALT + M</dt>
  1393.                     <dd>Modifica</dd>
  1394.                     
  1395.                     <dt>CTRL + ALT + S</dt>
  1396.                     <dd>Salva</dd>
  1397.                     
  1398.                     <dt>CTRL + ALT + A</dt>
  1399.                     <dd>Annulla</dd>
  1400.                     
  1401.                     <dt>CTRL + ALT + E</dt>
  1402.                     <dd>Elimina il record</dd>
  1403.                     
  1404.                     <dt>CTRL + ALT + D</dt>
  1405.                     <dd>Duplica il record</dd>
  1406.                     
  1407.                     <dt>CTRL + ALT + R</dt>
  1408.                     <dd>Cerca</dd>
  1409.                     
  1410.                     <dt>CTRL + Invio (in modalit&agrave; ricerca)</dt>
  1411.                     <dd>Invia ricerca</dd>
  1412.                     
  1413.                 </dl>
  1414.                 <hr />
  1415.                 <p><strong><em>Allegati e link</em></strong></p>
  1416.                 <dl>
  1417.                     <dt>CTRL + ALT + G</dt>
  1418.                     <dd>Apri gli allegati (se presenti nella maschera)</dd>
  1419.                     
  1420.                     <dt>CTRL + ALT + L</dt>
  1421.                     <dd>Apri i link (se presenti nella maschera)</dd>
  1422.                 </dl>
  1423.                 
  1424.             </div>
  1425. <?php ?>        
  1426.  
  1427. <div id="scheda-tabella" style="display:none;">
  1428.  
  1429.  
  1430.     <div style="background-color:whitesmoke;
  1431.                 width:100%;
  1432.                 border:1px solid;
  1433.                 border-color:lightgrey;
  1434.                 padding:2px;"
  1435.     >
  1436.         <div  id="gridbox"  style="height:<?php echo (isset($_VARIABILI['altezza_iframe_tabella'])) $_VARIABILI['altezza_iframe_tabella'350;?>px;width:100%;" ></div>
  1437.     </div>    
  1438.     
  1439.  
  1440.  
  1441.  <script type="text/javascript" >  
  1442.     
  1443.  // <!--
  1444.  
  1445.      var jsOid = <?php echo $oid;?>;
  1446.  
  1447.      var x = null;
  1448.      
  1449.      function doOnRowSelected(idRiga){
  1450.          if(idRiga==x){
  1451.  
  1452.              idRecord=Number(idRiga);
  1453.             sndReq('<?php echo $nome_tab;?>','id',false);
  1454.             switch_vista();
  1455.             $('risposta').text='';
  1456.             
  1457.          }
  1458.          x=idRiga;
  1459.      }
  1460.      
  1461.      function caricaGrid(){
  1462.          
  1463.          if(!initGrid){
  1464.          
  1465.          mygrid = new dhtmlXGridObject('gridbox'); 
  1466.          // or 
  1467.          //mygrid = new dhtmlXGridObject(); 
  1468.          //mygrid.attachToObject(document.body) 
  1469.          mygrid.imgURL = "js/dhtmlxGrid/imgs/"; 
  1470.          mygrid.setHeader("#,<?php echo $xg_campi;?>"); 
  1471.          mygrid.setInitWidths("40,<?php echo $xg_misure;?>") ;
  1472.          mygrid.setColAlign("center,<?php echo $xg_align;?>") ;
  1473.          mygrid.setColTypes("ro,<?php echo $xg_tipo;?>"); 
  1474.          mygrid.setColSorting("int,<?php echo $xg_sort;?>") ;
  1475.          mygrid.setColumnColor("#d5f1ff")
  1476.     //     mygrid.setMultiLine(false)
  1477.          
  1478.          mygrid.setOnRowSelectHandler(doOnRowSelected);
  1479.          
  1480.          <?php echo "//".implode(', ',$maxlen);?>
  1481.          
  1482.          /*
  1483.  
  1484.          // Impostazioni LiveGrid
  1485.          
  1486.          mygrid.enableBuffering(100);
  1487.          mygrid.setXMLAutoLoading("rpc.xmlgrid.php?t=<?php echo $nome_tab;?>",100);//to load additional data from server
  1488.         */
  1489.          
  1490.          mygrid.enableMultiline(false);
  1491.          mygrid.init(); 
  1492.          mygrid.enableMultiline(false);
  1493.              
  1494.          <?php $paginazione (isset($_VARIABILI['n_record_tabella'])) $_VARIABILI['n_record_tabella']:20;?>
  1495.          
  1496.          togli=(counter%<?php echo $paginazione;?>);
  1497.         nextData= counter-togli;
  1498.          
  1499.          mygrid.loadXML(pathRelativo+"/rpc.xmlgrid.php?t=<?php echo $nome_tab;?>&gid=<?php echo $gid;?>&of="+nextData+"&hash="+Math.random()); 
  1500.          
  1501.          initGrid=true;
  1502.          }
  1503.          else{
  1504.              
  1505.              reloadGrid();
  1506.          }
  1507.      
  1508.      }
  1509.      
  1510.      function reloadGrid(){
  1511.          
  1512.          
  1513.          if(!focusScheda){
  1514.          
  1515.              togli=(counter%<?php echo $paginazione;?>);
  1516.              nextData= counter-togli;
  1517.               mygrid.clearAll(); 
  1518.              mygrid.loadXML(pathRelativo+"/rpc.xmlgrid.php?t=<?php echo $nome_tab;?>&of="+nextData+"&hash="+Math.random()); 
  1519.          }
  1520.      }
  1521.      
  1522.      function mostra_risultati_ricerca(ids_ricerca){
  1523.          
  1524. //         alert("mostro risultati"+ids_ricerca);
  1525.      
  1526.          
  1527.          switch_vista();
  1528.          if(!initGrid){
  1529.              caricaGrid();
  1530.          }
  1531.          mygrid.clearAll(); 
  1532.          mygrid.loadXML(pathRelativo+"/rpc.xmlgrid.php?t=<?php echo $nome_tab;?>&q="+ids_ricerca+"&hash="+Math.random()); 
  1533.          
  1534.          
  1535.      }
  1536.      
  1537.      
  1538.      // Inizializza la tabella
  1539.     //     caricaGrid();
  1540.     
  1541.     // -->
  1542.      
  1543.  </script>
  1544.  
  1545.      <div id="tipo-vista1">
  1546.         <table border="0" summary="impostazioni vista" class="switch-vista">
  1547.             <tr> 
  1548.                 <td><a href="javascript:;" onclick="switch_vista();"><img src="img/vista_scheda.gif" alt="vista scheda" class="noborder" /></a></td>
  1549.                 <td><img src="img/vista_tab_h.gif" alt="vista tabella" class="noborder" /></td>
  1550.             </tr>
  1551.             <tr> 
  1552.                 <td><a href="javascript:;" onclick="switch_vista();">vista scheda</a></td>
  1553.                 <td>vista tabella</td>
  1554.             </tr>
  1555.         </table>
  1556.     </div>
  1557.  
  1558. </div>
  1559.  
  1560.  
  1561. <script type="text/javascript">inizializza_pulsanti_modifica();</script>
  1562. <?php echo closeLayout1()?>

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