X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=index.php;h=a019ae4b8b388520f6d28554e9323669037166dd;hb=ec106ddfe653ea6da6d65d537d38f19a9a7776e7;hp=9fd0527effb05db1e1f4aeae4801a8ad4ea58b60;hpb=326a9fc904b2a1e303abd2e3bc5b521603579be8;p=mirrors%2FSokoMan.git diff --git a/index.php b/index.php index 9fd0527..a019ae4 100755 --- a/index.php +++ b/index.php @@ -23,6 +23,7 @@ set_include_path(DIR_LIB.PATH_SEPARATOR.get_include_path()); require_once('Sklad_LMS-fake.class.php'); require_once('HTTP_Auth.class.php'); require_once('Locale.class.php'); +require_once('Barcode.class.php'); /** * Trida poskytuje vseobecne funkce pro generovani HTML kodu @@ -57,17 +58,19 @@ class HTML { return $html; } - function link($title='n/a', $link='#void', $internal=true) { - if($internal) $link = $this->internal_url($link); - return "".T($title).""; + function link($title='n/a', $link='#void', $internal=true, $translate=true) { + if($internal && (!isset($link[0]) || $link[0] != '#')) $link = $this->internal_url($link); + if($translate) $title = T($title); + return "".$title.""; } - function img($src='#void', $title='img') { - return "$title"; + function img($src='#void', $title='img', $options='width=64') { + $options = $options ? " $options" : ''; + return "$title"; } - function input($name=false, $value=false, $type='text', $placeholder=false, $options=false) { - $html = "'); print_r($selectbox); $html = ""; return $html; } + + function ul($items,$tag=ul,$head='',$class=false) { + $class = $class ? " class='$class'" : ''; + $html = "$head<$tag$class>"; + foreach($items as $key => $value) { + $html .= '
  • '; + if(is_numeric($key)) { + $html .= $value; + } else { + $html .= $this->link($key,$value); + } + $html .= '
  • '; + } + $html .= ""; + return $html; + } + + function div($html, $options) { + $options = $options ? " $options" : ''; + return "$html"; + } + + function head($title=false,$charset='UTF-8',$more='') { + $title = $title ? "\n$title" : ''; + $html= ''; + $html.= ''.$title.$more; + $html.= ''; + return $html; + } } /** @@ -104,19 +146,22 @@ class HTML { * @package Sklad_HTML * @author Tomas Mudrunka */ -class Sklad_HTML extends HTML { +class Sklad_HTML extends HTML { //TODO: Split into few more methods function header($title='') { $home = URL_HOME; $script = $_SERVER['SCRIPT_NAME']; $search = htmlspecialchars(@trim($_GET['q'])); $message = strip_tags(@trim($_GET['message']),''); - return << - - -

    SystémSklad$title

    + $instance = INSTANCE_ID != '' ? '/'.INSTANCE_ID : ''; + //$title = T($title); //TODO + + $html = $this->head("SōkoMan$title"); + $html .= <<SōkoMan$instance$title
    - -
  • Logout
  • -
  • Home
  • -
  • Assistants - -
  • stats
  • -
  • store
  • -
  • store-single
  • -
  • dispose
  • -
  • sell
  • -
  • ↓↓ BETA ↓↓
  • -
    -
  • -
  • List - -
  • item
  • -
  • model
  • -
  • category
  • -
  • producer
  • -
  • vendor
  • -
  • room
  • -
  • status
  • -
    -
  • -
  • New - -
  • item
  • -
  • model
  • -
  • category
  • -
  • producer
  • -
  • vendor
  • -
  • room
  • -
  • status
  • -
    -
  • -
    - -
    -
    - - -
    -
    - - -
    - -
    +EOF; + + $assistants=array(); + foreach(scandir(DIR_ASSISTANTS) as $item) { + if($item == '.' || $item == '..') continue; + $item = preg_replace('/\.inc\.php$/','',$item); + $assistants[$item] = "assistant/$item"; + } + + $tables=array('item','model','category','producer','vendor','room','status'); + + foreach($tables as $table) { + $listable[$table] = $table; + $insertable[$table] = "$table/new"; + } + + $html .= $this->ul(array( + 'Home' => '', + 'Logout' => '?logout', + 0 => $this->ul($assistants,'menu',$this->link('Assistants','#')), + 1 => $this->ul($insertable,'menu',$this->link('New','#')), + 2 => $this->ul($listable,'menu',$this->link('List','#')) + ),'menu', '', 'menu'); + + $html .= '
    '; + + $html .= $this->form("$script/assistant/go", 'GET', array( + array('q','','text','smart id...', 'autofocus'), + array(false,'go','submit') + ), 'style="float: left;"'); + + $html .= $this->form('?', 'GET', array( + array('q',$search,'text','regexp...'), + array(false,'filter','submit') + ), 'style="float: left;"'); + + $html .= '
    '; + + $html .= <<
    $message
    EOF; + + return $html; } function internal_url($link) { @@ -223,6 +258,19 @@ EOF; } } + function render_barcode($barcode,$opts=false) { + return $this->link($this->img($this->internal_url("barcode/$barcode"),$barcode,$opts),"barcode/$barcode",true,false); + } + + function table_add_barcodes(&$table) { + $image = array('model_barcode', 'item_serial'); + foreach($table as $id => $row) { + foreach($image as $column) if(isset($table[$id][$column])) { + $table[$id][$column]=$this->render_barcode($table[$id][$column]); + } + } + } + function table_collapse(&$table) { $collapse = array( 'item_id' => 'item_id', @@ -260,6 +308,7 @@ EOF; function render_item_table($table) { $this->table_add_images($table); + $this->table_add_barcodes($table); $this->table_collapse($table); $this->table_sort($table); return $this->table($table); @@ -277,7 +326,7 @@ EOF; if(!is_array($hidecols)) $hidecols = array('item_author', 'item_valid_from', 'item_valid_till'); //TODO Autodetect $action = $action ? " action='$action'" : false; - $html=""; + $html=""; //TODO: use $this->form() if($multi_insert) $html.='
    '; //$html.=$this->input('table', $class, 'hidden'); foreach($columns as $column) { @@ -605,6 +654,7 @@ class Sklad_UI { $html.= '
    '; $html.= $this->html->link('edit', "$class/$id/edit/"); if($this->db->contains_history($class)) $html.= ' ][ '.$this->html->link('history', "$class/$id/history/"); + $html.='
    '.$this->html->render_barcode(BARCODE_PREFIX.strtoupper("$class/$id")); return $html; } @@ -631,15 +681,15 @@ class Sklad_UI { if($edit) { $html.= $this->render_form_edit($class, $id); $action = $_SERVER['SCRIPT_NAME']."/$class/$id/delete"; - $html.= "
    "; - $html.= $this->html->input(false, 'DELETE', 'submit'); - $html.= T('sure?').$this->html->input('sure', false, 'checkbox'); - $html.= '
    '; + $html.=$this->html->form($action,'POST',array( + array(false,'DELETE','submit'), + array('sure', false, 'checkbox', false, false, 'sure?') + )); $action = $_SERVER['SCRIPT_NAME']."/$class/$id/image"; - $html.= "
    "; - $html.= $this->html->input('image', false, 'file', false, 'size="30"'); - $html.= $this->html->input(false, 'IMAGE', 'submit'); - $html.='
    '; + $html.=$this->html->form($action,'POST',array( + array('image', false, 'file', false, 'size="30"'), + array(false, 'IMAGE', 'submit') + ), "enctype='multipart/form-data'"); } return $html; } @@ -737,13 +787,11 @@ class Sklad_UI { } $PATH_INFO=@trim($_SERVER[PATH_INFO]); - if($_SERVER['REQUEST_METHOD'] != 'POST') echo $this->html->header($PATH_INFO); //TODO tahle podminka naznacuje ze je v navrhu nejaka drobna nedomyslenost... - - - //Sephirot: $PATH_CHUNKS = preg_split('/\//', $PATH_INFO); + //Sephirot: if(!isset($PATH_CHUNKS[1])) $PATH_CHUNKS[1]=''; - switch($PATH_CHUNKS[1]) { + if($_SERVER['REQUEST_METHOD'] != 'POST' && $PATH_CHUNKS[1]!='barcode') echo $this->html->header($PATH_INFO); //TODO: tyhle podminky naznacujou, ze je v navrhu nejaka drobna nedomyslenost... + switch($PATH_CHUNKS[1]) { //TODO: Move some branches to plugins if possible case 'test': //test die('Tell me why you cry'); break; @@ -754,6 +802,9 @@ class Sklad_UI { $assistant_vars['URL'] = $_SERVER['SCRIPT_NAME'].'/'.$assistant_vars['URL_INTERNAL']; echo $this->safe_include(DIR_ASSISTANTS,$PATH_CHUNKS[2],$assistant_vars); break; + case 'barcode': //barcode + Barcode::download_barcode(implode('/',array_slice($PATH_CHUNKS, 2))); + break; default: //? $search = (isset($_GET['q']) && trim($_GET['q']) != '') ? trim($_GET['q']) : false; $class = (isset($PATH_CHUNKS[1]) && $PATH_CHUNKS[1] != '') ? $PATH_CHUNKS[1] : 'item';