<?php

    // TABLE DND




    function grid_settings($table) {
        global $db, $table_fields, $table_config, $cfg, $_url, $_admin;
        $res=mysqli_query($db, "SELECT * FROM customFields WHERE cfiTable='$table'");
        $cfis=null;
        $prefix=table2prefix($table);
        
        while($rek=mysqli_fetch_assoc($res)) {
            $cfis[$prefix.'#'.$rek['cfiName']]=$rek;        
        }

        $res=mysqli_query($db, "SHOW COLUMNS FROM $table");
        $fields=null;
        while($rek=mysqli_fetch_assoc($res)) {            
            $fields[$rek['Field']]=$rek;
            if($cfis[$rek['Field']]) {
                $fields[$rek['Field']]['title']=$cfis[$rek['Field']]['cfiTitle@'.$cfg['admin']['language']];
            } else {
                $fields[$rek['Field']]['title']=$rek['Field'];
            }            
        }
        
        $table=mysqli_fetch_assoc(mysqli_query($db, "SELECT * FROM tables WHERE tabName='".$table."'"));

        
        
        
        //echo '<pre>';
        //print_r($fields);
        //exit;
        //echo '<pre>';
        //print_r($fields);
        //exit;  
        require_once('templates/grid_table_settings.php');
    }



    function grid_adjust($table) {
        global $db, $table_fields, $table_config, $cfg, $_url;
        
        if($_POST['action']=='adjust') {
            $grid=null;
            foreach($_POST['field'] as $key=>$item) {
                if(in_array($item, $_POST['show'])) {
                    $grid[$item]['show']=1;
                } else {
                    $grid[$item]['show']=0;
                }        
                $grid[$item]['color']=$_POST['color'][$key];                    
            }
            _mysqli_query($db, "REPLACE INTO grid (griAdmin_admId, griTable, griFields) VALUES ('".$_SESSION['admin']['admId']."', '".$_POST['table']."', '".json_encode($grid)."')");
        }        
        
        
        
        
        $r=mysqli_query($db, "SELECT * FROM customFields WHERE cfiTable='$table' ORDER BY cfiSequence ASC");
        
        $grid_data=mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM grid WHERE griTable='$table' AND griAdmin_admId='".$_SESSION['admin']['admId']."'"));
        $grid_data=json_decode($grid_data['griFields'],true);

        $cfields=null;

        while($row=mysqli_fetch_assoc($r)) { 
            $row['type']=$row['cfiType'];    
            $row['title']=$row['cfiTitle@'.$cfg['admin']['language']];              
            $table_fields[table2prefix($table).'#'.$row['cfiName']]=$row;
        }
        
        foreach($table_fields as $key=>$item) {
            if(!$item['title']) $table_fields[$key]['title']=_t($key);
        } 
        
        //$grid_data=(array)json_decode($grid_data['griTable'],true);
        
        foreach((array)$grid_data as $key=>$item) {
            if(!$table_fields[$key]) {
                unset($grid_data[$key]);
            }
        }
        
       
        foreach($table_fields as $key=>$item) {
            if(!$grid_data[$key]) {
                $grid_data[$key]=array('show'=>0, 'color'=>'');
            }                                    
        }
     







        

        require_once('_backend/templates/header.php');
        print_header();
        require_once('_backend/templates/grid_adjust.php');

        require_once('_backend/templates/footer.php');
    }

    function grid_structure($table) {
        global $db, $table_fields, $table_config, $cfg, $_url; 
        perm_check_exit($table, 'structure');
        
        $params=array('cfiLength', 'cfiSize', 'cfiRelationToTable', 'cfiRelationField', 'cfiOptions', 'cfiValues', 'cfiLabels', 'cfiEditor', 'cfiHeight', 'cfiFields', 'cfiModuleAction', 'cfiColor', 'cfiFormula', 'cfiModule', 'cfiLink', 'cfiDisabledOnNew', 'cfiScript');    
        $table_info=mysqli_fetch_assoc(mysqli_query($db, "SELECT * FROM tables WHERE tabName='".$table."'"));
        $table_info['tabDefaultShowFields']=json_decode($table_info['tabDefaultShowFields']);

        if($_POST['action']=='cfi_add' || $_POST['action']=='cfi_save') {
            //ALTER TABLE `tables` CHANGE `tabStatus` `tabStatuses` VARCHAR( 1 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL 
            
            $paramTable='';
            foreach($_POST as $key=>$item) {
                if(in_array($key, $params)) {

                    $paramTable[strtolower(substr($key,3))]=$item;
                }  
            }              

            
            if(!$_POST['cfiLanguage']) $_POST['cfiLanguage']=0;
            if($_POST['action']=='cfi_save') {
                $current_cfi=mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM customFields WHERE cfiId='$_POST[id]'"));
                _mysqli_query($db, "UPDATE customFields SET cfiArrayField='' WHERE cfiArrayField='".$_POST['cfiName']."'");
                $sql="UPDATE customFields SET cfiName='$_POST[cfiName]', ";              
                foreach($cfg['languages'] as $key=>$item) {
                    $sql.='`cfiTitle@'.$key."`='".$_POST['cfiTitle@'.$key]."', ";
                } 
                $sql.="cfiType='".$_POST['cfiType']."', cfiParameters='".addslashes(json_encode($paramTable))."', cfiLanguage='".$_POST['cfiLanguage']."' WHERE cfiId='".$_POST['id']."'";
                //echo $sql;
                //exit;
                _mysqli_query($db, $sql);
                
            } else { 
                $lastSequence=mysqli_fetch_assoc(_mysqli_query($db, "SELECT cfiSequence FROM customFields WHERE cfiTable='$table' ORDER BY cfiSequence DESC"));
                _mysqli_query($db, "INSERT INTO customFields (cfiTable, cfiName, `cfiTitle@pl`, `cfiTitle@en`, cfiType, cfiDefaultValue, cfiParameters, cfiLanguage, cfiSequence) VALUES ('$table', '$_POST[cfiName]', '".$_POST['cfiTitle@pl']."', '".$_POST['cfiTitle@en']."', '$_POST[cfiType]', '', '".addslashes(json_encode($paramTable))."', '$_POST[cfiLanguage]', '".($lastSequence['cfiSequence']+1)."')");
                
            }

            if($_POST['cfiType']=='array_fields') {
                foreach((array)$_POST['cfiFields'] as $key=>$item) {
                    _mysqli_query($db, "UPDATE customFields SET cfiArrayField='".$_POST['cfiName']."' WHERE cfiName='".$item."' AND cfiTable='$table'");
                }
            }
            

            
            $default=" DEFAULT '' NOT NULL";
            switch(strtolower($_POST['cfiType'])) {
                case 'text': 
                    if($_POST['cfiLength']) $length=$_POST['cfiLength']; else $length=255;
                    $mysql_type='VARCHAR('.$length.')';
                break;
                case 'date':
                    $default='';
                    $mysql_type='DATE';                    
                break;
                case 'datetime':
                    $default='';
                    $mysql_type='DATETIME';                    
                break;
                case 'time':
                    $default='';
                    $mysql_type='TIME';                    
                break;
                case 'int':
                    $default='';
                    $mysql_type='INT(11)';
                break;  
                case 'float':
                    $default='';
                    $mysql_type='FLOAT';
                break;
                case 'htmlarea': case 'array_fields':
                    $default='';
                    $mysql_type='TEXT';                
                break;
                                                    
                default: $mysql_type='VARCHAR(255)'; 
            }            
            
            //echo $mysql_type;
            //exit;
            
            if($_POST['action']=='cfi_add' || ($_POST['action']=='cfi_save' && $current_cfi['cfiType']=='tab')) {
                if(strtolower($_POST['cfiType']!='tab')) {
    
                    if($_POST['cfiLanguage']==1) {
                        foreach($cfg['languages'] as $key=>$item) {            
                            _mysqli_query($db, "ALTER TABLE $table ADD `".table2prefix($table).'#'.$_POST['cfiName']."@".$key."` ".$mysql_type.$default  ); 
                        } 
                    } else {
                        _mysqli_query($db, "ALTER TABLE $table ADD `".table2prefix($table).'#'.$_POST['cfiName']."` ".$mysql_type.$default  );           
                    }
                }
            } else {
                //if()
                //echo '<pre>';
                //print_r($_POST);
                //print_r($current_cfi);
                if($current_cfi['cfiType']!='tab' && $_POST['cfiType']=='tab') {
                    if($current_cfi['cfiLanguage']==1) {
                        foreach($cfg['languages'] as $key=>$item) {            
                            _mysqli_query($db, "ALTER TABLE $table DROP `".table2prefix($table).'#'.$current_cfi['cfiName']."@".$key."`" ); 
                        } 
                    } else {
                        _mysqli_query($db, "ALTER TABLE $table DROP `".table2prefix($table).'#'.$current_cfi['cfiName']."`" );           
                    }
                    // sprawdzic GRIDA
                    $grid=mysqli_fetch_assoc(_mysqli_query($db,"SELECT * FROM grid WHERE griTable='".$current_cfi['cfiTable']."'"));
                    $fields=json_decode($grid['griFields'],true);
                    unset($fields[table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']]);
                    //.'#'.$cfi['cfiName']);
                    //echo table2prefix($cfi['cfiTable']);
                    if($_SESSION['sorting'][$current_cfi['cfiTable']]['field']==table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']) {
                        unset($_SESSION['sorting'][$current_cfi['cfiTable']]);
                    }
                    _mysqli_query($db,"UPDATE grid SET griFields='".json_encode($fields)."' WHERE griTable='".$current_cfi['cfiTable']."'");  
                    _mysqli_query($db,"UPDATE customFields SET cfiLanguage='0' WHERE cfiId='".$current_cfi['cfiId']."'");                  
                }
                
                if(!$current_cfi['cfiLanguage'] && !$_POST['cfiLanguage']) {
                    _mysqli_query($db, "ALTER TABLE $table CHANGE `".table2prefix($table).'#'.$current_cfi['cfiName']."` `".table2prefix($table).'#'.$_POST['cfiName']."` ".$mysql_type.$default);
                }
                
                if($current_cfi['cfiLanguage'] && !$_POST['cfiLanguage']) {
                    _mysqli_query($db, "ALTER TABLE $table CHANGE `".table2prefix($table).'#'.$current_cfi['cfiName']."@".$_POST['keepLanguage']."` `".table2prefix($table).'#'.$_POST['cfiName']."` ".$mysql_type.$default);
                    foreach($cfg['languages'] as $key=>$item) {  
                        if($key!=$_POST['keepLanguage']) {          
                            _mysqli_query($db, "ALTER TABLE $table DROP `".table2prefix($table).'#'.$current_cfi['cfiName']."@".$key."`");
                        } 
                    }                     
                }
                
                if(!$current_cfi['cfiLanguage'] && $_POST['cfiLanguage']) {
                    foreach($cfg['languages'] as $key=>$item) {            
                        _mysqli_query($db, "ALTER TABLE $table ADD `".table2prefix($table).'#'.$_POST['cfiName']."@".$key."` ".$mysql_type.$default  );
                        if($_POST['moveLanguage']=='_duplicate' || $key==$_POST['moveLanguage']) {
                            _mysqli_query($db, "UPDATE $table SET `".table2prefix($table).'#'.$_POST['cfiName']."@".$key."`=`".table2prefix($table).'#'.$current_cfi['cfiName']."`");
                        } 
                    }  
                    _mysqli_query($db, "ALTER TABLE $table DROP `".table2prefix($table).'#'.$current_cfi['cfiName']."`");                  
                } 
                
                if(!$_POST['tab'] && ($_POST['cfiName']!=$current_cfi['cfiName'])) {
                    $grid=mysqli_fetch_assoc(_mysqli_query($db,"SELECT * FROM grid WHERE griTable='".$current_cfi['cfiTable']."'"));
                    $fields=json_decode($grid['griFields'],true);
                    $fields[table2prefix($current_cfi['cfiTable']).'#'.$_POST['cfiName']]=$fields[table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']];
                    unset($fields[table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']]);
                    if($_SESSION['sorting'][$current_cfi['cfiTable']]['field']==table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']) {
                        unset($_SESSION['sorting'][$current_cfi['cfiTable']]);
                    }
                    _mysqli_query($db,"UPDATE grid SET griFields='".json_encode($fields)."' WHERE griTable='".$current_cfi['cfiTable']."'");                  
                }
                // waurnek kiedy nie zaklada i inna nazwa niz poprzednio do zmiany w gridzie
                
                
                
                //exit;
            }
            
            
        }        
        
        $r=mysqli_query($db, "SELECT * FROM customFields WHERE cfiTable='$table' ORDER BY cfiSequence ASC");
        $cfields=null;
        while($row=mysqli_fetch_assoc($r)) {
            $tr_class='';
            switch(strtolower($row['cfiType'])) {
                case 'tab': $tr_class='warning'; break;
            }
            $row['tr_class']=$tr_class;
                    
            $cfields[$row['cfiName']]=$row;
        } 

                      
        require_once('_backend/templates/header.php');      
        print_header(); 
        
        require_once('_backend/templates/grid_structure.php');
        require_once('_backend/templates/footer.php');          
    }



    function grid_structure_old($table) {
        global $db, $table_fields, $table_config, $cfg, $_url;    
        perm_check_exit($table, 'structure');
        $params=array('cfiLength', 'cfiSize', 'cfiRelationToTable', 'cfiRelationField', 'cfiOptions', 'cfiValues', 'cfiLabels', 'cfiEditor', 'cfiHeight', 'cfiFields', 'cfiModuleAction', 'cfiColor', 'cfiFormula', 'cfiModule', 'cfiLink', 'cfiDisabledOnNew', 'cfiScript');    

        if($_POST['action']=='cfi_add' || $_POST['action']=='cfi_save') {
            //ALTER TABLE `tables` CHANGE `tabStatus` `tabStatuses` VARCHAR( 1 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL 
            
            $paramTable='';
            foreach($_POST as $key=>$item) {
                if(in_array($key, $params)) {

                    $paramTable[strtolower(substr($key,3))]=$item;
                }  
            }              



            
            if(!$_POST['cfiLanguage']) $_POST['cfiLanguage']=0;
            if($_POST['action']=='cfi_save') {
                $current_cfi=mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM customFields WHERE cfiId='$_POST[id]'"));
                _mysqli_query($db, "UPDATE customFields SET cfiArrayField='' WHERE cfiArrayField='".$_POST['cfiName']."'");
                $sql="UPDATE customFields SET cfiName='$_POST[cfiName]', ";              
                foreach($cfg['languages'] as $key=>$item) {
                    $sql.='`cfiTitle@'.$key."`='".$_POST['cfiTitle@'.$key]."', ";
                } 
                $sql.="cfiType='".$_POST['cfiType']."', cfiParameters='".addslashes(json_encode($paramTable))."', cfiLanguage='".$_POST['cfiLanguage']."' WHERE cfiId='".$_POST['id']."'";
                //echo $sql;
                //exit;
                _mysqli_query($db, $sql);
                
            } else { 
                $lastSequence=mysqli_fetch_assoc(_mysqli_query($db, "SELECT cfiSequence FROM customFields WHERE cfiTable='$table' ORDER BY cfiSequence DESC"));
                _mysqli_query($db, "INSERT INTO customFields (cfiTable, cfiName, `cfiTitle@pl`, `cfiTitle@en`, cfiType, cfiDefaultValue, cfiParameters, cfiLanguage, cfiSequence) VALUES ('$table', '$_POST[cfiName]', '".$_POST['cfiTitle@pl']."', '".$_POST['cfiTitle@en']."', '$_POST[cfiType]', '', '".addslashes(json_encode($paramTable))."', '$_POST[cfiLanguage]', '".($lastSequence['cfiSequence']+1)."')");
                
            }
            //echo '<pre>';
            //print_R($_POST);
            //exit;
            if($_POST['cfiType']=='array_fields') {
                foreach((array)$_POST['cfiFields'] as $key=>$item) {
                    _mysqli_query($db, "UPDATE customFields SET cfiArrayField='".$_POST['cfiName']."' WHERE cfiName='".$item."' AND cfiTable='$table'");
                }
            }
            
            //print_r($current_cfi);
            //exit;
                                 

            
            //if($_POST['action')
            
            $default=" DEFAULT '' NOT NULL";
            switch(strtolower($_POST['cfiType'])) {
                case 'text': 
                    if($_POST['cfiLength']) $length=$_POST['cfiLength']; else $length=255;
                    $mysql_type='VARCHAR('.$length.')';
                break;
                case 'date':
                    $default='';
                    $mysql_type='DATE';                    
                break;
                case 'datetime':
                    $default='';
                    $mysql_type='DATETIME';                    
                break;
                case 'time':
                    $default='';
                    $mysql_type='TIME';                    
                break;
                case 'int':
                    $default='';
                    $mysql_type='INT(11)';
                break;  
                case 'float':
                    $default='';
                    $mysql_type='FLOAT';
                break;
                case 'htmlarea': case 'array_fields':
                    $default='';
                    $mysql_type='TEXT';                
                break;
                                                    
                default: $mysql_type='VARCHAR(255)'; 
            }            
            
            //echo $mysql_type;
            //exit;
            
            if($_POST['action']=='cfi_add' || ($_POST['action']=='cfi_save' && $current_cfi['cfiType']=='tab')) {
                if(strtolower($_POST['cfiType']!='tab')) {
    
                    if($_POST['cfiLanguage']==1) {
                        foreach($cfg['languages'] as $key=>$item) {            
                            _mysqli_query($db, "ALTER TABLE $table ADD `".table2prefix($table).'#'.$_POST['cfiName']."@".$key."` ".$mysql_type.$default  ); 
                        } 
                    } else {
                        _mysqli_query($db, "ALTER TABLE $table ADD `".table2prefix($table).'#'.$_POST['cfiName']."` ".$mysql_type.$default  );           
                    }
                }
            } else {
                //if()
                //echo '<pre>';
                //print_r($_POST);
                //print_r($current_cfi);
                if($current_cfi['cfiType']!='tab' && $_POST['cfiType']=='tab') {
                    if($current_cfi['cfiLanguage']==1) {
                        foreach($cfg['languages'] as $key=>$item) {            
                            _mysqli_query($db, "ALTER TABLE $table DROP `".table2prefix($table).'#'.$current_cfi['cfiName']."@".$key."`" ); 
                        } 
                    } else {
                        _mysqli_query($db, "ALTER TABLE $table DROP `".table2prefix($table).'#'.$current_cfi['cfiName']."`" );           
                    }
                    // sprawdzic GRIDA
                    $grid=mysqli_fetch_assoc(_mysqli_query($db,"SELECT * FROM grid WHERE griTable='".$current_cfi['cfiTable']."'"));
                    $fields=json_decode($grid['griFields'],true);
                    unset($fields[table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']]);
                    //.'#'.$cfi['cfiName']);
                    //echo table2prefix($cfi['cfiTable']);
                    if($_SESSION['sorting'][$current_cfi['cfiTable']]['field']==table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']) {
                        unset($_SESSION['sorting'][$current_cfi['cfiTable']]);
                    }
                    _mysqli_query($db,"UPDATE grid SET griFields='".json_encode($fields)."' WHERE griTable='".$current_cfi['cfiTable']."'");  
                    _mysqli_query($db,"UPDATE customFields SET cfiLanguage='0' WHERE cfiId='".$current_cfi['cfiId']."'");                  
                }
                
                if(!$current_cfi['cfiLanguage'] && !$_POST['cfiLanguage']) {
                    _mysqli_query($db, "ALTER TABLE $table CHANGE `".table2prefix($table).'#'.$current_cfi['cfiName']."` `".table2prefix($table).'#'.$_POST['cfiName']."` ".$mysql_type.$default);
                }
                
                if($current_cfi['cfiLanguage'] && !$_POST['cfiLanguage']) {
                    _mysqli_query($db, "ALTER TABLE $table CHANGE `".table2prefix($table).'#'.$current_cfi['cfiName']."@".$_POST['keepLanguage']."` `".table2prefix($table).'#'.$_POST['cfiName']."` ".$mysql_type.$default);
                    foreach($cfg['languages'] as $key=>$item) {  
                        if($key!=$_POST['keepLanguage']) {          
                            _mysqli_query($db, "ALTER TABLE $table DROP `".table2prefix($table).'#'.$current_cfi['cfiName']."@".$key."`");
                        } 
                    }                     
                }
                
                if(!$current_cfi['cfiLanguage'] && $_POST['cfiLanguage']) {
                    foreach($cfg['languages'] as $key=>$item) {            
                        _mysqli_query($db, "ALTER TABLE $table ADD `".table2prefix($table).'#'.$_POST['cfiName']."@".$key."` ".$mysql_type.$default  );
                        if($_POST['moveLanguage']=='_duplicate' || $key==$_POST['moveLanguage']) {
                            _mysqli_query($db, "UPDATE $table SET `".table2prefix($table).'#'.$_POST['cfiName']."@".$key."`=`".table2prefix($table).'#'.$current_cfi['cfiName']."`");
                        } 
                    }  
                    _mysqli_query($db, "ALTER TABLE $table DROP `".table2prefix($table).'#'.$current_cfi['cfiName']."`");                  
                } 
                
                if(!$_POST['tab'] && ($_POST['cfiName']!=$current_cfi['cfiName'])) {
                    $grid=mysqli_fetch_assoc(_mysqli_query($db,"SELECT * FROM grid WHERE griTable='".$current_cfi['cfiTable']."'"));
                    $fields=json_decode($grid['griFields'],true);
                    $fields[table2prefix($current_cfi['cfiTable']).'#'.$_POST['cfiName']]=$fields[table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']];
                    unset($fields[table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']]);
                    if($_SESSION['sorting'][$current_cfi['cfiTable']]['field']==table2prefix($current_cfi['cfiTable']).'#'.$current_cfi['cfiName']) {
                        unset($_SESSION['sorting'][$current_cfi['cfiTable']]);
                    }
                    _mysqli_query($db,"UPDATE grid SET griFields='".json_encode($fields)."' WHERE griTable='".$current_cfi['cfiTable']."'");                  
                }
                // waurnek kiedy nie zaklada i inna nazwa niz poprzednio do zmiany w gridzie
                
                
                
                //exit;
            }
            
            
        }
    
        require_once('_backend/templates/header.php');      
        print_header(); 
        

         /*
        $columns=mysqli_fetch_assoc(_mysqli_query($db,"SELECT * FROM grid WHERE griAdmin_admId='".$_SESSION['admin']['admId']."' AND griTable='$table'"));
        //print_r($columns);
        if(!$columns) {
            foreach($table_fields as $key=>$item) {
                if($item['default_list']) {
                    $columns[$key]['showOnList']=1;
                }
            }
        } else {
            $columns=json_decode($columns['griFields'], true);        
        }*/
          
           
        

                        
        $sql="SELECT * FROM customFields WHERE cfiTable='$table' ORDER BY cfiSequence";
        $res=_mysqli_query($db, $sql);  

        echo '<div class="right"><table class="table table-striped table-hover table-bordered table-condensed" id="gridStructure"><thead><tr class="nodrag"> 
            <th>'._t('cfiSequence').'</th><th>'._t('cfiType').'</th><th>'._t('cfiName').'</th><th>'._t('cfiTitle').'</th><th>'._t('showOnList').'</th><th>&nbsp;</th>                             
        </tr></thead><tbody>';
        echo '<tr class="nodrag warning"><td>&nbsp;</td><td>'._t('cfiType_tab').'</td><td>_basic</td><td>'._t('_basic').'</td><td></td><td></td></tr>';   
        foreach($table_fields as $key=>$item) {
            if($columns[$key]['showOnList']) $show=' checked="checked"'; else $show='';
                  
            echo '<tr class="nodrag"><td>&nbsp;</td><td>'._t('cfiType_'.strtolower($item['type'])).'</td><td>'.$key.'</td><td>'._t($key).'</td><td><input type="checkbox"'.$show.' class="setShowOnList" table="'.$table.'" field="'.$key.'"/></td><td></td></tr>';            
        }         

        $r=mysqli_query($db, "SELECT * FROM customFields ORDER BY cfiSequence ASC");
        $cfields=null;
        while($row=mysqli_fetch_assoc($r)) {


            
            $cfields[$row['cfiName']]=$row;                        
        }  
        

        $prefix=table2prefix($table);      
        while($row=mysqli_fetch_assoc($res)) {
            $tr_class='';
            switch(strtolower($row['cfiType'])) {
                case 'tab': $tr_class=' class="warning"';
            }
            echo '<tr'.$tr_class.' seq="'.$row['cfiSequence'].'"><td> <span class="badge">'.$row['cfiSequence'].'<span></td><td>'._t('cfiType_'.strtolower($row['cfiType'])).'</td>
            <td><span class="ghostPrefix">'.$prefix.'#</span>'.$row['cfiName'].'</td><td>'.$row['cfiTitle@'.$cfg['admin']['language']].'</td>';
            if(strtolower($row['cfiType'])!='tab' && strtolower($row['cfiType'])!='array_fields' && !$row['cfiArrayField']) {
                if($columns[$prefix.'#'.$row['cfiName']]['showOnList']) $show=' checked="checked"'; else $show='';                        
                echo '<td><input type="checkbox"'.$show.' class="setShowOnList" table="'.$table.'" field="'.$prefix.'#'.$row['cfiName'].'"'.$show.'/></td>';
            } elseif($row['cfiArrayField']) {
                echo '<td><div class="belongsTo">@'.$cfields[$row['cfiArrayField']]['cfiTitle@'.$cfg['admin']['language']].'</div></td>';                
            } else {
               echo '<td></td>';
            }
            echo '<td><div class="btn-group btn-group-xs" style="float: right;">
          <a class="btn btn-default ajaxModal" type="button" href="/'.$_url[0].'/ajax/cfi_edit?id='.$row['cfiId'].'"><span class="glyphicon glyphicon-edit"></span> '._t('edit').'</a>
          <button class="btn btn-default" type="button"><span class="glyphicon glyphicon-asterisk"></span> '._t('duplicate').'</button>
          <button class="btn btn-danger ajaxModal" type="button" href="/'.$_url[0].'/ajax/remove_cfi?&id='.$row['cfiId'].'"><span class="glyphicon glyphicon-fire"></span> '._t('remove').'</button>          
        </div></td>';            
            echo '</tr>';
        }   
        echo '</tbody></table><div id="ajaxOverlay"></div></div>';
        echo '<div class="panel-footer"><a href="/'.$_url[0].'/ajax/cfi_new?table='.$table.'" style="float: right;" class="ajaxModal btn btn-success"><span class="glyphicon glyphicon-plus"></span> '._t('cfiNewField').'</a><div class="clear"></div></div>';
        require_once('_backend/templates/footer.php');  
    }



    function grid_view($table, $xtra_where=null, $xtra_buttons=null) {
        global $db, $table_fields, $table_config, $cfg, $_url;
        //perm_check_exit($table, 'view');        
           //echo $table;
        //echo '<pre>';
        
        //print_r($_SESSION);
        
        $table_info=mysqli_fetch_assoc(mysqli_query($db, "SELECT * FROM tables WHERE tabName='".$table."'"));
        $table_info['tabConditionColor']=json_decode($table_info['tabConditionColor'], true);
        $table_info['tabDefaultShowFields']=json_decode($table_info['tabDefaultShowFields'], true);

        //print_r($table_info);
        
        
        //print_r($table_info);
                
        // SQL QUERY BUILDER ******************************************************************************************************************************//
        $res=_mysqli_query($db, "SELECT * FROM customFields WHERE cfiTable='$table' AND cfiType!='tab' ORDER BY cfiSequence ASC");
        //echo "SELECT * FROM customFields WHERE cfiTable='$table' AND cfiType!='tab' ORDER BY cfiSequence ASC";
        //$table_fields = [];
        while($row=mysqli_fetch_assoc($res)) {
            $name=table2prefix($table).'#'.$row['cfiName'];
            if($row['cfiLanguage']) {
                //$name.='@'.$_SESSION['edit_language'];                                
            }
            
            $table_fields[$name]=json_decode($row['cfiParameters'], true);
            if ($row['cfiParameters'] == '""') $table_fields[$name] = [];         
            //print_r($row);
            $table_fields[$name]['type']=$row['cfiType'];
            $table_fields[$name]['customField']=true;
            $table_fields[$name]['language']=$row['cfiLanguage'];
            //$table_fields[$name]['type']=$row['cfiType'];
            $table_fields[$name]['title']=$row['cfiTitle@'.$cfg['admin']['language']];                               


            
        } 
        
        $search='andrzej pajda';
        $slevels=$_SESSION['search'][$table];
                
        $rel_tabs=null;
        $alias_pointer=66;
        foreach($table_fields as $key=>$item) {
            if($item['type']=='rel_one2many') {
                $r=_mysqli_query($db, "SELECT * FROM customFields WHERE cfiTable='".$item['relationtotable']."'");
                //print_r($table_info);
                $tab_fields=null;
                while($fld=mysqli_fetch_assoc($r)) {
                    $tab_fields[]=$fld;                                    
                }
                $rel_tabs[]=array(
                    'table'=>$item['relationtotable'],
                    'alias'=>chr($alias_pointer),
                    'fields'=>$tab_fields,
                    'relation_field'=>$key
                );
                $alias_pointer++;                               
            }
        }

                 
        $sql="SELECT A.*";
        foreach((array)$rel_tabs as $key=>$item) {
            $sql.=', '.$item['alias'].'.*';                
        }
        $sql.=" FROM ".$table." AS A";
        foreach((array)$rel_tabs as $key=>$item) {
            $sql.=' LEFT JOIN '.$item['table'].' AS '.$item['alias'].' ON '.$item['alias'].'.'.table2prefix($item['table']).'Id=A.`'.$item['relation_field'].'`';
        }
        $sql.=' WHERE 1=1';
        
        if($slevels) {
            
            foreach($slevels as $sl=>$search) {
                $ssubs=null;
                $sql.=' AND (';                  
                $search=str_replace(' ', '%', $search);
                foreach($table_fields as $key=>$item) {
                    if(!$item['language']) {
                        $ssubs[]='`'.$key."` LIKE '%".$search."%'";
                    } else {
                        foreach($cfg['languages'] as $ls=>$lang) {                        
                            $ssubs[]='`'.$key."@".$ls."` LIKE '%".$search."%'";
                        }                
                    }
                }
                foreach((array)$rel_tabs as $key=>$item) {
                           
                    foreach($item['fields'] as $k=>$i) {
                        if($i['cfiType']!='tab') {
                            if(!$i['cfiLanguage']) {                    
                                $ssubs[]=$item['alias'].'.`'.table2prefix($i['cfiTable']).'#'.$i['cfiName']."` LIKE '%".$search."%'";
                            } else {
                                foreach($cfg['languages'] as $ls=>$lang) {
                                    $ssubs[]=$item['alias'].'.`'.table2prefix($i['cfiTable']).'#'.$i['cfiName']."@".$ls."` LIKE '%".$search."%'";
                                }
                            }
                        }                    
                    }
                }
                $sql.=implode(' OR ', $ssubs);
                $sql.=')';                 
            }
           
        }
        
        
        //$table_data=mysqli_fetch_assoc(mysqli_query($db, "SELECT * FROM tables WHERE tabName='$table'"));
        $filters=json_decode($table_info['tabFilters'],true);
        if($_SESSION['filters'][$table]) {
            $where.=' AND (';
            foreach($_SESSION['filters'][$table] as $key=>$item) {
                $where.='`'.$filters[$item]['tab#filter_field'].'` '.str_replace(array('eq', 'neq', 'gt', 'lt', 'like'), array('=', '!=', '>', '<', 'LIKE'),$filters[$item]['tab#filter_operator'])." '".$filters[$item]['tab#filter_value']."' OR ";
            }
            $sql.=$where=substr($where,0,-4).') ';
        }   

        
        //echo $sql;
        //echo '<pre>';
        //print_r($_SESSION);
        //exit;
           // echo $_SESSION['sorting'][$table]['field'];
           // exit;
    
        //echo $_SESSION['sorting'][$table]['field'];
        if(!$_SESSION['sorting'][$table]['field']) {
            $_SESSION['sorting'][$table]=array(
                'field'=>$table_config['idField'],
                'direction'=>'ascending'
            );
        }
     

		//$_SESSION['sorting']['table_orders']['field'] = 'ordId';
		//$_SESSION['sorting']['table_orders']['direction'] = 'descending';

        if($_SESSION['sorting'][$table]['direction']=='ascending') {
            $sql.=' ORDER BY A.`'.$_SESSION['sorting'][$table]['field'].'` ASC';
        } else {
            $sql.=' ORDER BY A.`'.$_SESSION['sorting'][$table]['field'].'` DESC';        
        }
        

     
        $_total=mysqli_num_rows(_mysqli_query($db, $sql));
        
       // $dir2mysql=array('ascending'=>'ASC', 'descending'=>'DESC');
        if($_SESSION['grid_limit']) $grid_limit=$_SESSION['grid_limit']; else $grid_limit=40;
        if($_GET['page']) $page=$_GET['page']-1; else $page=0;
        if($_POST['action']=='add_search' || $_POST['action']=='remove_search') $page=0;
        //echo $page;
        
        $sql.= " LIMIT ".$page*$grid_limit.",".$grid_limit;        
        
        //print_r($table_info);
        //exit;
        //echo $sql;
        //exit;
        //echo $sql;
        //exit;           

        //echo $_total;        
        // ******************* QUERY BUILDER END ***************************************************************************************************************//


        $grid_data=mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM grid WHERE griTable='$table' AND griAdmin_admId='".$_SESSION['admin']['admId']."'"));
        $grid_data=json_decode($grid_data['griFields'],true);
        

        if(!$grid_data) {
            $ndata=null;
            foreach((array)$table_info['tabDefaultShowFields'] as $key=>$item) {
                $ndata[$item]=array('color'=>'', 'show'=>1);
            }
            $grid_data=$ndata;
            _mysqli_query($db, "REPLACE INTO grid (griAdmin_admId, griTable, griFields) VALUES ('".$_SESSION['admin']['admId']."', '".$table."', '".json_encode($ndata)."')");

        }
        
        $res=_mysqli_query($db, $sql);
        while($drow=mysqli_fetch_assoc($res)) {
            $data[]=$drow;
        }
        //print_r($data);

        require_once('_backend/templates/header.php');  
        print_header();
        foreach((array)$_GET as $key=>$item) {
            echo '<input type="hidden" name="get_'.$key.'" value="'.$item.'"/>';
        }        

        
        //echo '<pre>';
        //print_r($table_fields);
        //print_r($grid_data);   
        //echo '</pre>';     
                
        require_once('_backend/templates/grid_view.php');
                
        require_once('_backend/templates/footer.php');
        
        
                   
        //echo $sql.'<br/>';
        
        
        
        
        
        
        
        
        
        
        //print_r($table_fields);
        //exit; 

        
        
        
                           
        exit;
        if(!$_GET['get_data']) {
            if($_GET['modal_view']) {
                echo '<div class="modal-dialog"><div class="modal-content">';         
                echo '<div class="modal-body">';            
            } else {
                require_once('_backend/templates/header.php');        
            }     
            print_header();
            
            foreach((array)$_GET as $key=>$item) {
                echo '<input type="hidden" name="get_'.$key.'" value="'.$item.'"/>';
            }
    
            echo '<input type="hidden" name="url_request" value="'.$_SERVER['REQUEST_URI'].'"/>';             
            echo '<div class="right">';            
        }
    

        
        $dir2mysql=array('ascending'=>'ASC', 'descending'=>'DESC');
        if($_SESSION['grid_limit']) $grid_limit=$_SESSION['grid_limit']; else $grid_limit=40;
        if($_GET['page']) $page=$_GET['page']-1; else $page=0;
        $limit = " LIMIT ".$page*$grid_limit.",".$grid_limit;
        $where = " WHERE 1";
    

      

        // doladowanie custom fields'ow
        $res=_mysqli_query($db, "SELECT * FROM customFields WHERE cfiTable='$table' AND cfiType!='tab' ORDER BY cfiSequence ASC");
        while($row=mysqli_fetch_assoc($res)) {
            $name=table2prefix($table).'#'.$row['cfiName'];
            if($row['cfiLanguage']) {
                //$name.='@'.$_SESSION['edit_language'];                                
            }
            $table_fields[$name]=json_decode($row['cfiParameters'], true);
            $table_fields[$name]['type']=$row['cfiType'];
            $table_fields[$name]['customField']=true;
            $table_fields[$name]['language']=$row['cfiLanguage'];
            $table_fields[$name]['title']=$row['cfiTitle@'.$cfg['admin']['language']];                               
            
        }  
        
 
        
        // TODO
        $fields_array=null;        
        $columns=mysqli_fetch_assoc(_mysqli_query($db,"SELECT * FROM grid WHERE griAdmin_admId='".$_SESSION['admin']['admId']."' AND griTable='$table'"));
        $headers=null;
        $grid_fields=null;
        
        if(!$columns) {
            //echo 'xx';  
            //print_r($table_fields);                    
            foreach((array)$table_fields as $key=>$item) {
                                
                if($item['default_list']) {
                    $headers[$key]['field']=$key;
                    if($item['language']) $headers[$key]['field']=$key.'@'.$_SESSION['edit_language'];
                    $fields.='`'.$headers[$key]['field'].'`,';
                    $fields_array[]=$headers[$key]['field'];                    
                }
                if($item['default_list']) $grid_fields[$key]['showOnList']=1; else $grid_fields[$key]['showOnList']=0;                

                //echo $key.'<br/>';

            }
            //echo $fields;
            //exit;
            $fields=substr($fields,0,-1);
            //print_r($grid_fields);
        //_mysqli_query($db, "DELETE FROM grid WHERE griTable='$table' AND griAdmin_admiId='".$_SESSION['admin']['admId']."'");
            _mysqli_query($db, "INSERT INTO grid (griAdmin_admId, griTable, griFields) VALUES ('".$_SESSION['admin']['admId']."', '".$table."', '".json_encode($grid_fields)."')");
            
                        
        } else {
            $columns['griFields']=json_decode($columns['griFields'],true);        
            foreach((array)$columns['griFields'] as $key=>$item) {
                                
                if($item['showOnList']) {
                    $headers[$key]['field']=$key;
                    if($table_fields[$key]['language']) $headers[$key]['field']=$key.'@'.$_SESSION['edit_language'];
                    $fields.='`'.$headers[$key]['field'].'`,';
                    $fields_array[]=$headers[$key]['field'];                    
                }
                              

                //echo $key.'<br/>';

            }
            $fields=substr($fields,0,-1);        

        }
        $langadd='';
        if($table_fields[$_SESSION['sorting'][$table]['field']]['language']) $langadd='@'.$_SESSION['edit_language'];
        
        if($_SESSION['search'][$table]['phrase']) {
            $where.=' AND (';
            foreach($fields_array as $key=>$item) {
                $where.="`".$item."` LIKE '%".str_replace(' ','%',$_SESSION['search'][$table]['phrase'])."%' OR ";            
            }
            $where=substr($where,0,-4).') ';
            //exit;            
        }        
        
        //echo $where;
        $table_data=mysqli_fetch_assoc(mysqli_query($db, "SELECT * FROM tables WHERE tabName='$table'"));
        $filters=json_decode($table_data['tabFilters'],true);
        if($_SESSION['filters'][$table]) {
            $where.=' AND (';
            foreach($_SESSION['filters'][$table] as $key=>$item) {
                $where.='`'.$filters[$item]['tab#filter_field'].'` '.str_replace(array('eq', 'neq', 'gt', 'lt', 'like'), array('=', '!=', '>', '<', 'LIKE'),$filters[$item]['tab#filter_operator'])." '".$filters[$item]['tab#filter_value']."' OR ";
            }
            $where=substr($where,0,-4).') ';
        }
        
        if($table_config['sequence']) $fields.=", `".table2prefix($table).'Sequence'."`";
        //echo $fields;
        //exit;
 
        $sql="SELECT $fields FROM $table".$where." ".$xtra_where." ORDER BY `".$_SESSION['sorting'][$table]['field']."$langadd` ".$dir2mysql[$_SESSION['sorting'][$table]['direction']].$limit;
        //echo $sql;
        //exit;
        $_total=mysqli_fetch_assoc(_mysqli_query($db, "SELECT COUNT(*) AS total FROM $table".$where." ".$xtra_where." ORDER BY `".$_SESSION['sorting'][$table]['field']."$langadd` ".$dir2mysql[$_SESSION['sorting'][$table]['direction']]));
        $res=_mysqli_query($db, $sql);
        //echo $sql;
          
                

        
        //if($_GET['get_data']) {
            echo '<table class="table table-striped table-hover table-bordered table-condensed'.($_GET['modal_view']?' modal_view':'').($table_config['sequence']?' table_sequenced':'').'" id="grid_view"><thead><tr class="nodrag">';
            $field=split(',',$fields);                                                                                                
            if($table_config['multiSelect']) echo '<th><input type="checkbox"/></th>';          
            $fields=null;
            foreach($field as $key=>$item) {
                $field[$key]=str_replace('`', '', $field[$key]);
                $tmp=explode('@', $field[$key]);
                //echo $tmp[0];
                $slang=$tmp[0];
                $fields[$field[$key]]=$slang;
                $islang='';
                if($table_fields[$slang]['language']) {
                    $islang=' <span class="glyphicon glyphicon-globe headerIsLang"></span>';
                }
                if($table_fields[$slang]['customField']) {
                    //$slang=$table_fields[$slang]['title'];
                    echo '<th>'.$table_fields[$slang]['title'].$islang.'</th>';
                } else {            
                    echo '<th>'._t($slang).$islang.'</th>';
                }            
            }

                          // print_R($_SESSION);
                         //echo $sql;
                         //exit;
            echo '<th>&nbsp;</th></tr></thead><tbody>';
            while($row=mysqli_fetch_assoc($res)) {
               // print_r($row);
                 echo '<tr record_id="'.$row[$table_config['idField']].'"'.($table_config['sequence']?' seq="'.$row[table2prefix($table).'Sequence'].'"':'').'>';
                if($table_config['multiSelect']) echo '<td><input type="checkbox"/></td>';            
                foreach($fields as $key=>$item) {  
    
                    $field_name=explode('@', $key);
                    $field_name=$field_name[0];   
                    
                    //print_r($table_fields);  
                    //echo $table_fields[$key]['type'];
                    
                    switch($table_fields[$item]['type']) {
                        case 'text': echo '<td field="'.$field_name.'">'.$row[$key].'</td>'; break;
                        case 'htmlarea': echo '<td field="'.$field_name.'" style="max-width: 100px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">'.substr(strip_tags($row[$key]),0,200).'</td>'; break;
                        case 'rel_one2many':
                            $field=$table_fields[$key];
                            $value=mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM ".$field['relationtotable']." WHERE ".table2prefix($field['relationtotable'])."Id='".$row[$key]."'"));
                            if($value[$field['relationfield'].'@'.$_SESSION['edit_language']]) {
                                $value=$value[$field['relationfield'].'@'.$_SESSION['edit_language']];
                            } else {
                                $value=$value[$field['relationfield']];                        
                            }                    
                            echo '<td><p class="text-success" style="margin-bottom: 0;">'.$value.'</p></td>';
                        break; 
                        case 'checkboxes': 
                            echo '<td field="'.$field_name.'">';
                            $field=$table_fields[$key];     
                            $vls=null;
                            /*
                            if($row[$key]!='[""]' && $row[$key]!='') {                      
                                $vls=
                            }
                            */

                            //echo "<Br/><br/>".$row[$key].'<br/><br/>';
                            if($row[$key]) {
                                $vls=explode(';;',substr($row[$key],1,-1));
                            }
                            $out='';
                            foreach((array)$vls as $k=>$it) {
                                $out.=$field['labels'][array_search($it, $field['values'])].', ';                         
                                       
                            }                        
                            echo substr($out,0,-2).'</td>'; 
                        break;
                        case 'select':
                            $field=$table_fields[$key];                    
                            echo '<td field="'.$field_name.'">'.$field['labels'][array_search($row[$key], $field['values'])].'</td>';
                    
                        break;
                        case 'link_button':
                            echo '<td field="'.$field_name.'">';
                            $field=$table_fields[$key]; 
                            echo '<a target="_blank" class="btn btn-info btn-xs" href="'.str_replace('{id}', $row[$table_config['idField']], $field['link']).'">'.$field['title'].'</a></td>';
                        
                        break;                        
                        default: echo '<td field="'.$field_name.'">'.$row[$key].'</td>';
                    }                
    
                }
                
                switch($_GET['mode']) {
                    case 'select_relation':
                        echo '<td><div class="btn-group btn-group-xs" style="float: right;">
                      <a class="btn btn-primary relationSelect" type="button" id="'.$row[$table_config['idField']].'"><span class="glyphicon glyphicon-edit"></span> wybierz</a></div></td>';                
                    break;
                    default:
             
                        echo '<td><div class="btn-group btn-group-xs" style="float: right;">';
                        foreach((array)$xtra_buttons as $k=>$button) {
                            //print_r($button);
                            $url=str_replace(array('{id}'), array($row[$table_config['idField']]), $button['url']);
                            if($table=='tables') { $tabl=$row['tabName']; } else { $tabl=$table; }
                            echo '<a class="btn btn-'.$button['class'].'" type="button" href="'.$url.'"'.perm_display($tabl,$button['perm']).'><span class="glyphicon '.$button['icon'].'"></span> '.$button['label'].'</a>';
                        }                 
                        echo '<a class="btn btn-default" type="button" href="/'.$_url[0].'/'.$_url[1].'/edit?id='.$row[$table_config['idField']].$table_config['linkEdit'].'"'.perm_display($table,'edit').'><span class="glyphicon glyphicon-edit"></span> edytuj</a>
                      <button class="btn btn-default" type="button" style="display: none;"><span class="glyphicon glyphicon-asterisk"></span> duplikuj</button>
                      <a class="btn btn-danger ajaxModal" type="button" href="/'.$_url[0].'/ajax/remove_record?table='.$table.'&id='.$row[$table_config['idField']].'"'.perm_display($table,'remove').'><span class="glyphicon glyphicon-fire"></span> usuń</a>          
                    </div></td>';
                    break;
                }
           
                echo '</tr>';
            }   
            echo '</tbody></table>';
        
        //}
                  echo '<div id="ajaxOverlay"></div>';  
        
if(!$_GET['get_data']) {        
        echo '</div>'; 
        
        
        //echo '<div class="panel-footer"><a style="float: right;" class="btn btn-success" id="saveRecord">Zapisz</a><div class="clear"></div></div>'; 
        echo '<div class="panel-footer"><ul class="pagination">
        <li><a>«</a></li><li id="pagReplace"><a>...</a></li><li><a>»</a></li>
     </ul>
        <div class="label label-default" style="display: block; float: left; margin-top: 10px;">Rekordy <span id="recFrom">...</span> - <span id="recTo">...</span> z '.$_total['total'].'</div>
     <div class="clear"></div>
     </div>'; 
   
     echo '<input type="hidden" name="grid_page" value="'; if($_GET['page']) echo $_GET['page']; else echo '1'; echo '"/>';
     echo '<input type="hidden" name="grid_total" value="'.$_total['total'].'"/>';
        
        if($_GET['modal_view']) {
            echo '</div></div></div>';
        } else {                    
            require_once('_backend/templates/footer.php');
        }
}
           
    }


    function grid_record($table, $edit=false, $xtra_data = null) {
    
        global $table_fields, $table_config, $db, $cfg, $_POST, $_cat_tree, $_url, $alert, $_admin;
  
        if($_url[1]=='modules' && $_url[2]=='settings') {
            perm_check_exit('modules', 'edit');
        } else {
            if($edit) {
                perm_check_exit($table, 'edit');
            } else {
                perm_check_exit($table, 'add');        
            }
        }
        //print_r($table_fields);
        //print_r($table_config);
        //exit;

        require_once('_backend/templates/header.php');     
      
        echo '<input type="hidden" name="table_prefix" value="'.table2prefix($table).'"/>';
        /************************ zaladowanie custom fields *************************/
        $res=_mysqli_query($db, "SELECT * FROM customFields WHERE cfiTable='$table' ORDER BY cfiSequence ASC");
    
        while($row=mysqli_fetch_assoc($res)) {
            $name=table2prefix($table).'#'.$row['cfiName'];
            if($row['cfiLanguage']) {
                $name.='@'.$_SESSION['edit_language'];                                
            }
            $table_fields[$name]=json_decode($row['cfiParameters'], true);
            $table_fields[$name]['type']=$row['cfiType'];
            $table_fields[$name]['customField']=true;
            $table_fields[$name]['arrayField']=$row['cfiArrayField'];
            $table_fields[$name]['title']=$row['cfiTitle@'.$cfg['admin']['language']];                               

        }   

        if($edit) {
            $record = mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM ".$table." WHERE $table_config[idField]='$_GET[id]'"));
        } else {
            $record[$table_config['idField']]='(auto)';
        }



      
        print_header();
        
        echo '<div class="left"><ul style="max-width: 260px;" class="nav nav-pills nav-stacked" id="gridTabs">
        <li class="active"><a tab="_basic">Podstawowe</a></li>';
        foreach($table_fields as $key=>$field) {
            if(strtolower($field['type'])=='tab') {
                echo '<li><a tab="'.$key.'">'.$field['title'].'</a></li>';
            }
        }
        echo '</ul><br/>';
        

        if($table_config['status']) {
          echo '<div class="panel panel-default panelLeft"><div class="panel-heading"><h3 class="panel-title"><span class="glyphicon glyphicon-list"></span> Status rekordu</h3></div><div class="panel-body">';
          //echo table2prefix($table);
          //print_r($record);
          $xtra_0=' display: none;'; $xtra_1='';
          
          // default_val;
          if(!$edit) $record[table2prefix($table).'Status']=1;                     
          
          if($record[table2prefix($table).'Status']) {
              $xtra_1=' display: none;'; $xtra_0='';       
          } 
          echo '<button class="btn btn-success btn-sm" style="width: 100%;'.$xtra_0.'" id="record_status_1">Włączony</button>';
          echo '<button class="btn btn-danger btn-sm" style="width: 100%;'.$xtra_1.'" id="record_status_0">Wyłączony</button>';       
          echo '</div></div>';
        }
     
        
        if($table_config['languages']) {
          echo '<div class="panel panel-default panelLeft"><div class="panel-heading"><h3 class="panel-title"><span class="glyphicon glyphicon-globe"></span> Pokazuj w językach</h3></div><div class="panel-body">';
          echo '<div class="checkbox text-info"><label><input type="checkbox" id="all_languages"> (we wszystkich)</label></div>';
          echo '<div id="lang_list">';          
          foreach($cfg['languages'] as $key=>$item) { 
              echo '<div class="checkbox"><label><input type="checkbox" value="'.$key.'"> '.$item['title'].'</label></div>';
          }            
          echo '</div></div></div>';        
        }
        
        if($table_config['categories']) {
          echo '<div class="panel panel-default panelLeft"><div class="panel-heading"><h3 class="panel-title"><span class="glyphicon glyphicon-list"></span> Pokazuj w kategoriach</h3></div><div class="panel-body">';
          echo '<div class="checkbox text-info"><label><input type="checkbox" id="all_categories"> (we wszystkich)</label></div>';
          echo '<div id="catTree">'.catTreeList($_cat_tree).'</div>';        
          echo '</div></div>';
        }
                    
        
        
        
        echo '</div>';  
      
     

        
        echo '<div class="right"><form id="record" method="post"><table class="verticalTh grid table table-striped table-hover table-bordered table-condensed" tab="_basic">';
        //print_r($table_fields);
        foreach($table_fields as $key=>$field) {
            if(strtolower($field['type'])!='tab') {
                $af=''; $afb='';
                if($field['arrayField']) {
                    $af=' arrayField="'.table2prefix($table).'#'.$field['arrayField'].'"';
                    $afb=' arrayField="'.table2prefix($table).$field['arrayField'].'"'; 
                }
  
                if($field['customField']) echo '<tr'.$af.'><th>'.(strtolower($field['type'])=='module_button' || strtolower($field['type'])=='script_button'?'':$field['title']).'</th><td>'; else echo '<tr'.$afb.'><th>'._t($key).'</th><td>';
                if($field['legend']) echo '<div class="well well-legend">'.$field['legend'].'</div>';

                if($field['language']) $key.='@'.$_SESSION['edit_language'];                
                switch(strtolower($field['type'])) {
                    case 'text': echo '<input name="'.$key.'" class="form-control" type="text" value="'.$record[$key].'" style="width: '.$field['size'].'px;"'.($field['prefix']?' prefix="'.$field['prefix'].'"':'').($field['formula']?' formula="'.$field['formula'].'"':'').'/>'; break;
                    case 'htmlarea':
                        $style='';
                        if($field['height']) $style='style="height: '.$field['height'].'px;"';
                        if($field['arrayField']) { $class='class="ckeditor_loader" uclass="ckeditor_'.$field['editor'].'"'; } else {
                            $class='class="ckeditor_'.$field['editor'].'"';
                        }
                        $b64='';
                        if($field['base64']) $b64=' base64="true"';
                        //print_r($field);
                        //exit;
                        echo '<textarea'.$b64.' name="'.$key.'" '.$class.' id="'.$key.'" '.$style.'>'.$record[$key].'</textarea>';
                    break;
                    case 'textarea':
                        if($field['height']) $style='style="height: '.$field['height'].'px;"';
                        echo '<textarea name="'.$key.'" class="textarea textarea_'.$field['mode'].'" id="'.$key.'" '.$style.'>'.$record[$key].'</textarea>';
                    break;
                    case 'select_modules': echo '<select name="'.$key.'" class="form-control" style="width: auto;">';
                        $mm=get_modules_menu();
                        foreach($mm as $k=>$mod) {
                            echo '<option value="'.$k.'"'.($k==$record[$key]?' selected="selected"':'').'>'.$mod['title'].'</option>';
                        }
                        echo '</select>';
                    break;
                    case 'select_templates': echo '<select name="'.$key.'" class="form-control" style="width: auto;">';

                        $mm=get_templates();                    
                        print_r($mm);
                        
                        foreach($mm as $k=>$mod) {
                            if($mod['title']) $tit=$mod['title']; else $tit=$k;
                            echo '<option value="'.$k.'"'.($k==$record[$key]?' selected="selected"':'').'>'.$tit.'</option>';
                        }
                        echo '</select>';
                    break;                    
                    case 'float': echo '<input type="text" style="width: 100px;" name="'.$key.'" value="'.$record[$key].'" class="form-control"'.($field['formula']?' formula="'.$field['formula'].'"':'').'/>'; break;     
                    case 'date': echo '<div style="width: 150px;" class="input-group picker_date"><input name="'.$key.'" class="form-control" type="text" value="'.$record[$key].'" data-format="YYYY-MM-DD"/><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></div>'; break;
                    case 'time': echo '<div style="width: 150px;" class="input-group picker_time"><input name="'.$key.'" class="form-control" type="text" value="'.$record[$key].'" data-format="HH:mm:ss"/><span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></div>'; break;
                    case 'datetime': echo '<div style="width: 210px;" class="input-group picker_datetime"><input name="'.$key.'" class="form-control" type="text" value="'.$record[$key].'" data-format="YYYY-MM-DD HH:mm:ss"/><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span></div>'; break;                                                                
                    case 'id': echo '<input class="form-control" type="text" value="'.$record[$key].'" style="width: 80px;" disabled readonly/>'; break;
                    case 'image':                    
                        echo '<div class="input-group" style="width: 300px;"><input type="text"  name="'.$key.'" value="'.$record[$key].'" class="form-control" readonly/><a href="/'.$_url[0].'/file_manager?modal_view=1&single_select=1&field='.$key.'" class="ajaxModalFullscreen input-group-addon imageSelector"><span class="glyphicon glyphicon-picture"></span></a></div>';
                    break;                      
                    case 'rel_one2many':
          
          
                        if(substr($field['relationtotable'],0,6)=='table_') {
                            $internal=0;
                
                            $table_description = mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM tables WHERE tabName='".$field['relationtotable']."'"));
                            $link='/'.$_url[0].'/table/view/?tid='.$table_description['tabId'].'&modal_view=1&mode=select_relation&field='.$field['relationfield'];
                           
                        } else {
                            $internal=1;
                            //$value=mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM ".$field['relationtotable']." WHERE ".table2prefix($field['relationtotable'])."Id='".$record[$key]."'"));
                        
                            $link='/'.$_url[0].'/'.$field['relationtotable'].'/view?modal_view=1&mode=select_relation&field='.$key;
                        }
                        $value=mysqli_fetch_assoc(_mysqli_query($db, "SELECT * FROM ".$field['relationtotable']." WHERE ".table2prefix($field['relationtotable'])."Id='".$record[$key]."'"));
                        if($value[$field['relationfield'].'@'.$_SESSION['edit_language']]) {
                            $value=$value[$field['relationfield'].'@'.$_SESSION['edit_language']];
                        } else {
                            $value=$value[$field['relationfield']];                        
                        }
                        
                        //echo $field['relationfield'].'<br/>'.$value[$field['relationfield']].'<br/>';
                        //echo "SELECT * FROM ".$field['relationtotable']." WHERE ".table2prefix($field['relationtotable'])."Id='".$record[$key]."'";
                        //exit;
                        //print_R($_SESSION);
                        if($_GET['tid'] == 31):
                        $stylwybieraka = 'style="width: 400px;"'; 
                        else:
                        $stylwybieraka = 'style="width: 250px;"';
                        endif;

                        echo '<div class="input-group" '.$stylwybieraka.' ><input type="hidden" value="'.$field['relationfield'].'"/><input type="hidden" name="'.$key.'" value="'.$record[$key].'"/><input type="text" value="'.$value.'" class="form-control" readonly rel_label="1"><a href="'.$link.'" class="iframeLoad input-group-addon relationSelector"><span class="glyphicon glyphicon-hand-up"></span></a></div>';
                    break;  
                    case 'password':
                        if($record[$key]) $mask_pass='?????';
                        echo '<input type="hidden" value="'.$record[$key].'" aname="'.$key.'"/><input class="form-control" type="password" value="'.$mask_pass.'" style="width: 200px;"/>'; break;
                    break;  
                    case 'select':                
                        echo '<select style="width: auto;" class="form-control" name="'.$key.'">';
                        foreach($field['values'] as $k2=>$i2) {
                            if($edit) {
                                $sel="";                     
                                if($i2==$record[$key]) $sel=' selected="selected"';
                            }
                            echo '<option value="'.$i2.'"'.$sel.'>'.$field['labels'][$k2].'</option>';
                        }
                        echo '</select>';
                    break;   
                    case 'checkbox':
                        $chk='';
                        if($record[$key]=='1') $chk=' checked="checked"';
                        echo '<div class="checkbox"><label><input type="hidden" name="'.$key.'" value="'.$record[$key].'"/><input class="grid_checkbox" type="checkbox" switch="'.$key.'" value="1"'.$chk.'/></label></div>';
                    break;
                    case 'checkboxes':
                        $checked=explode(';;',substr($record[$key],1,-1));
                        foreach($field['values'] as $k2=>$i2) {
                            //echo '<option value="'.$i2.'"'.$sel.'>'.$field['labels'][$k2].'</option>';
                            if($edit) {
                                $chk="";                            
                                if(in_array($i2, (array)$checked)) $chk=' checked="checked"';
                            }
                                                        
                            echo '<div class="checkbox"><label><input option_of="'.$key.'" type="checkbox" sval="'.$i2.'" ve="1"'.$chk.'/> '.$field['labels'][$k2].'</label></div>';
                        }                        
                        
                                                
                        echo '<input type="hidden" name="'.$key.'" value="" class="checkboxes"/>';
                    break;   
                    case 'table':
                        echo '<select style="width: auto;" class="form-control select_table" name="'.$key.'"><option value="">(wybierz)</option>';
                        $r=_mysqli_query($db, "SELECT * FROM tables WHERE tabInternal!='1'");
                        while($rek=mysqli_fetch_assoc($r)) {
                            $sel="";
                            $tname=$rek['tabName'];                            
                            if($tname==$record[$key]) $sel=' selected="selected"';                             
                            echo '<option value="'.$rek['tabName'].'"'.$sel.'>'.$rek['tabTitle@'.$cfg['admin']['language']].'</option>';
                            
                        }
                        echo '</select>';                    
                    break;  
                    case 'table_field':
                        echo '<select style="width: auto;" class="form-control" name="'.$key.'"'.($field['filter_table']?' filter_table="'.$field['filter_table'].'"':'').' disabled cvalue="'.$record[$key].'"'.($field['array_fields_only']?' array_fields_only="1"':'').'><option value="">(wybierz)</option></select>';                      
                    break; 
                    case 'array_fields':
                        if($record[$key]) {
                            echo '<div class="af_loader" for="'.$key.'" style="display: none;">'.$record[$key].'</div>';
                        }
                        echo '<input type="hidden" name="'.$key.'" value="@_REACTOR_ARRAY_FIELDS_@"/><div class="array_fields" name="'.$key.'"></div>';
                        if(!$field['customField']) {
                            echo '<input type="hidden" name="'.$key.'#fields" value="';
                            $of='';
                            foreach($field['fields'] as $k=>$it) {
                                $of.=$it.',';
                            }                             
                            echo substr($of,0,-1).'"/>';
                        }
                    break;   
                    case 'module_button':
                        echo '<a class="ajaxModal btn btn-'.$field['color'].'" href="/'.$_url[0].'/module_'.$field['module'].'/'.$field['moduleaction'].'?id='.$_GET['id'].'">'.$field['title'].'</a>';
                    break;
                    case 'link_button':
                        echo '<a target="_blank" class="btn btn-info" href="'.str_replace('{id}', $_GET['id'], $field['link']).'">'.$field['title'].'</a>';
                    
                    break;
                    case 'int': echo '<input type="text" style="width: 100px;" name="'.$key.'" value="'.$record[$key].'" class="form-control"'.($field['formula']?' formula="'.$field['formula'].'"':'').'/>'; break;
                    case 'keyvalue_ro': if($edit) {
                            echo '<input class="keyvalue_ro" name="'.$key.'" value="'.$record[$key].'"/>';
                        } else {
                            echo '<table class="keyvalue" name="'.$key.'"><tr><td colspan="3">&nbsp;</td><td><a style="float: right;" type="button" class="btn btn-primary btn-xs add_attr_list"><span class="glyphicon glyphicon-plus"></span></a></td></tr></table>';  
                        }

                    break;
                    case 'script_button':
                        echo '<a class="ajaxModal btn btn-'.$field['color'].'" href="/'.$_url[0].'/script/'.$field['script'].'?id='.$_GET['id'].'&back_url='.base64_encode($_SERVER['ORIGINAL_REQUEST_URI']).'"'.($field['disabledonnew'] && !$edit?' disabled':'').'>'.$field['title'].'</a>';
                    break;                    
                        
                    default: echo '<input class="form-control" type="text" value="'.$record[$key].'" style="width: 200px;" disabled readonly/>'; break;
                    
                }
                echo '</td></tr>';
            } else {
                //$currentTab=;
                echo '</table><table class="verticalTh grid table table-striped table-hover table-bordered" tab="'.$key.'" style="display: none;">';
            }
        }
        echo '</table>';
        echo '<input type="hidden" name="table" value="'.$table.'"/>';   
        if($table_config['status']) { 
            // domyslna wartosc na 1
            if(!$edit) $record[table2prefix($table).'Status']='1';            
            echo '<input type="hidden" name="'.table2prefix($table).'Status" value="'.$record[table2prefix($table).'Status'].'" id="record_status"/>';
        }
        if($table_config['categories']) {
            echo '<input type="hidden" name="'.table2prefix($table).'Categories" value="'.$record[table2prefix($table).'Categories'].'" id="record_categories"/>';
        }  
        if($table_config['languages']) {
            echo '<input type="hidden" name="'.table2prefix($table).'Languages" value="'.$record[table2prefix($table).'Languages'].'" id="record_languages"/>';
        }              
        if(!$edit) {
            echo '<input type="hidden" name="action" value="new_record"/>';        
        } else {
            echo '<input type="hidden" name="action" value="update_record"/>';   
            echo '<input type="hidden" name="id" value="'.$record[$table_config['idField']].'"/>';                       
        }      
        foreach((array)$xtra_data as $key=>$item) {
            echo '<input type="hidden" name="'.$key.'" value="'.$item.'"/>';
        }
        echo '</form></div>';
        
        
        echo '<div class="panel-footer"><a style="float: right;" class="btn btn-success" id="saveRecord">Zapisz</a><div class="clear"></div></div>'; 
        require_once('_backend/templates/footer.php');  
    }



?>