Pridana podpora relacnich linku nesouvisejicich s DB
[mirrors/SokoMan.git] / index.php
index 11bb1ef4faf53c7cbb22a2949581efda04d3bd80..c1d366072753d374a9be4b8e8c349ac8d29970ac 100755 (executable)
--- a/index.php
+++ b/index.php
@@ -287,6 +287,35 @@ EOF;
                }
        }
 
+       function table_add_relations(&$table, $class, $suffix_relations='_relations') {
+               $where_url = '%d/?where[%c]==%v';
+               $relations = array( //TODO: Autodetect???
+                       'model' => array(
+                               'model_id' => array(array('item',$where_url)),
+                               'model_barcode' => array(array('store','assistant/%d?barcode=%v'))
+                       ),
+                       'category' => array('category_id' => array(array('item',$where_url))),
+                       'producer' => array('producer_id' => array(array('item',$where_url))),
+                       'vendor' => array('vendor_id' => array(array('item',$where_url))),
+                       'room' => array('room_id' => array(array('item',$where_url))),
+                       'status' => array('status_id' => array(array('item',$where_url)))
+               );
+               foreach($table as $id => $row) {
+                       foreach($row as $column => $value) {
+                               if(isset($relations[$class][$column])) {
+                                       foreach($relations[$class][$column] as $destination) {
+                                               $destination_url = str_replace(
+                                                       array('%d','%c','%v'),
+                                                       array($destination[0],$column,$value),
+                                                       $destination[1]
+                                               );
+                                               @$table[$id][$class.$suffix_relations] .= $this->link($destination[0], $destination_url).',';
+                                       }
+                               }
+                       }
+               }
+       }
+
        function table_collapse(&$table) {
                $collapse = array(
                        'item_id' => 'item_id',
@@ -322,8 +351,9 @@ EOF;
                $table = $table_sorted;
        }
 
-       function render_item_table($table) {
+       function render_item_table($table,$class=false) {
                $this->table_add_images($table);
+               if($class) $this->table_add_relations($table,$class);
                $this->table_add_barcodes($table);
                $this->table_collapse($table);
                $this->table_sort($table);
@@ -686,7 +716,7 @@ class Sklad_UI {
        }
 
        function render_items($class, $id=false, $limit=false, $offset=0, $where=false, $search=false, $history=false) {
-               return $this->html->render_item_table($this->db->get_listing($class, $id, $limit, $offset, $where, $search, $history, false));
+               return $this->html->render_item_table($this->db->get_listing($class, $id, $limit, $offset, $where, $search, $history, false),$class);
        }
 
        function render_form_add($class) {
This page took 0.129577 seconds and 4 git commands to generate.