Pripravy na orderby v tabulkach
[mirrors/SokoMan.git] / index.php
index f1744a4a17fe63cb429b2efaa180ee23df26bc74..630d7ee46d1da8d892cc25f9e097f52e6e749681 100755 (executable)
--- a/index.php
+++ b/index.php
@@ -47,7 +47,7 @@ class HTML {
                        if(trim($var) == '') $var = ' ';
                        $rs = isset($rowspan[$id]) ? " rowspan='$rowspan[$id]'" : '';
                        $cs = isset($colspan[$id]) ? " colspan='$colspan[$id]'" : '';
-                       $html.="<$td$rs$cs$tdclass>$var</$td>";
+                       $html.="<$td$rs$cs$tdclass title='$id'>$var</$td>";
                        if(in_array($id,$break_after,true)) $html.='</tr>'."<tr$class_br$parameters>";
                }
                $html.='</tr>';
@@ -55,7 +55,7 @@ class HTML {
                return $html;
        }
 
-       function table(&$table,$colspan=array(),$rowspan=array(),$break_after=array(),$parity_class=array('tr_odd','tr_even'),$params='border=1',$row_classes_field='_row_classes') {
+       function table(&$table,$colspan=array(),$rowspan=array(),$break_after=array(),$orderby=false,$parity_class=array('tr_odd','tr_even'),$params='border=1',$row_classes_field='_row_classes') {
                $html="<table $params>";
                $header=true;
                $even=false;
@@ -63,8 +63,13 @@ class HTML {
                        $params = isset($row[$row_classes_field]) ? $row[$row_classes_field] : '';
                        unset($row[$row_classes_field]);
                        if($header) {
-                               $keys = array(); foreach($row as $key => $val) $keys[$key]=$key;
-                               $html.=$this->row(T($keys),'thead',false,'',$colspan,$rowspan,$break_after);
+                               $keys = array(); foreach($row as $key => $val) {
+                                       $order= $orderby ? ' '.
+                                               $this->link('&uarr;', $orderby."[$key]=ASC").
+                                               $this->link('&darr;', $orderby."[$key]=DESC") : '';
+                                       $keys[$key]=T($key).$order;
+                               }
+                               $html.=$this->row($keys,'thead',false,'',$colspan,$rowspan,$break_after);
                                $header=false;
                        }
                        $class = $parity_class ? $parity_class[$even] : false;
@@ -102,6 +107,8 @@ class HTML {
 
        function input($name=false, $value=false, $type='text', $placeholder=false, $options=false, $prefix='') {
                if($type == 'textarea') return $this->textarea($name, $value, $placeholder, $options, $prefix);
+               if($type == 'select') return $this->select($name, $placeholder, $value, $prefix);
+               //select(vendor, $selectbox ,false, prefix:);
                $html = T($prefix)."<input type='$type' ";
                if($name) $html.= "name='$name' ";
                if(!is_bool($value)) {
@@ -124,9 +131,9 @@ class HTML {
                return $html;
        }
 
-       function select($name, $selectbox, $default=false) {
+       function select($name, $selectbox, $default=false, $prefix='') {
                //echo('<pre>'); print_r($selectbox);
-               $html = "<select name='$name'>";
+               $html = T($prefix)."<select name='$name'>";
 
                if(!is_bool($default)) {
                        $value=$default; $title=$selectbox[$value];
@@ -360,7 +367,7 @@ EOF;
                $insert_url = '%d/new?insert[%c]=%v';
                $relations = array( //TODO: Autodetect??? //TODO: Add [edit] link to all classes
                        'model' => array(
-                               'model_id' => array(array('item',$where_url),array('barcode',$where_url),array('edit','model/%v/edit/'),array('barcode',$insert_url)),
+                               'model_id' => array(array('item',$where_url),array('barcode',$where_url),array('edit','model/%v/edit/'),array('barcode',$insert_url,false,'add barcode')),
                                'model_barcode' => array(array('store','assistant/%d?barcode=%v')),
                                'barcode_name' => array(array('store','assistant/%d?barcode=%v')),
                                'model_name' => array(array('google','http://google.com/search?q=%v')) //TODO: add manufacturer to google query
@@ -402,7 +409,8 @@ EOF;
                                                        //$condition = $relations_conditions[$destination[2]]($table,$id);
                                                        if(!eval($relations_conditions[$destination[2]])) continue;
                                                }
-                                               @$table[$id][$class.$suffix_relations] .= $this->link($destination[0], $destination_url, !preg_match('/http/', $destination_url) ).',';
+                                               $destination_title = isset($destination[3]) ? $destination[3] : $destination[0];
+                                               @$table[$id][$class.$suffix_relations] .= $this->link($destination_title, $destination_url, !preg_match('/http/', $destination_url) ).',';
                                        }
                                }
                        }
@@ -497,7 +505,13 @@ EOF;
                $this->table_collapse($table);
                if($class) $this->table_hide_columns($table,$class);
                $this->table_sort($table);
-               return $this->table($table,$colspan,$rowspan,$break_after);
+
+               //TODO: orderbaj fixme (napsat funkci na pridavani/ubirani soucasnych URL parametru)
+               $get = $_SERVER['QUERY_STRING'] != '' ? '?'.$_SERVER['QUERY_STRING'] : '';
+               $moreget = isset($get[0]) ? '&' : '?';
+               $path=$_SERVER['PATH_INFO'].$get.$moreget;
+
+               return $this->table($table,$colspan,$rowspan,$break_after,$path.'orderby');
        }
 
        function render_insert_inputs($class,$columns,$selectbox,$current,$hidecols,$update) {
@@ -773,6 +787,7 @@ class Sklad_DB extends PDO {
                        foreach($result as $row) $selectbox[$table.$suffix_id][$row[$table.$suffix_id]]=$row[$table.$suffix_name];
                }
                //echo('<pre>'); print_r($selectbox);
+               //return $selectbox;
                //return array_filter($selectbox, 'ksort');
                return array_filter($selectbox, 'natcasesort');
                //array_multisort($selectbox); return $selectbox;
This page took 0.149627 seconds and 4 git commands to generate.