<?php

include_once('../global.php');


class PageIS extends Page
{
  var $FullTitle = 'Správa dat';
  var $ShortTitle = 'Správa dat';
  var $MenuItems = array();

  function Show()
  {
    global $FormClasses;
     
    if(!$this->System->Modules['User']->CheckPermission('IS', 'Manage')) 
      return('Nemáte oprávnění');

    $DbResult = $this->Database->select('ISMenuItem', '*');
    while($DbRow = $DbResult->fetch_assoc())
    {
      $this->MenuItems[$DbRow['Id']] = $DbRow;
    }
    
    $Output = '<table style="width: 100%"><tr><td style="width: 20%; vertical-align: top;">';
    $Output .= '<strong>Nabídka:</strong><br/>'.$this->ShowMenuItem(''); 
    $Output .= '</td><td style="width: 80%; vertical-align: top;">';
    
    if(array_key_exists('t', $_GET)) $_SESSION['Table'] = $_GET['t'];
    if(array_key_exists('a', $_GET)) $_SESSION['Action'] = $_GET['a'];
    if(array_key_exists('id', $_GET)) $_SESSION['Id'] = $_GET['id'];
    
    if($_SESSION['Action'] == 'list')
    {
      if(array_key_exists('Table', $_SESSION))
        $Output .= $this->ShowTable($FormClasses[$_SESSION['Table']]);
    } else
    if($_SESSION['Action'] == 'edit')
    {
      $Form = new Form($_SESSION['Table']);
      $Form->LoadValuesFromDatabase($_SESSION['Id']);
      $Form->OnSubmit = '?a=view';
      $Output .= $Form->ShowEditForm();
    } else 
    if($_SESSION['Action'] == 'view')
    {
    
    } else
    if($_SESSION['Action'] == 'delete')
    {
    
    }
    $Output .= '</td></tr></table>';
    
    return($Output);
  }
  
  function ShowTable($FormClass)
  {   
    global $Type, $FormTypes;
    
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `'.$FormClass['Table'].'`');
    $DbRow = $DbResult->fetch_row();
    $PageList = GetPageList($DbRow[0]);    

    $Output = $PageList['Output'];
    $Output .= '<table class="WideTable" style="font-size: small;">';
   
    foreach($FormClass['Items'] as $ItemIndex => $FormItem)
      $TableColumns[] = array('Name' => $ItemIndex, 'Title' => $FormItem['Caption']);
    $TableColumns[] = array('Name' => '', 'Title' => 'Akce');
    $Order = GetOrderTableHeader($TableColumns, 'Name', 0);
    $Output .= $Order['Output'];

    $Query = 'SELECT * FROM `'.$FormClass['Table'].'` '.$Order['SQL'].$PageList['SQLLimit'];
    
    $DbResult = $this->Database->query($Query);
    while($Row = $DbResult->fetch_assoc()) 
    { 
      $Output .= '<tr>';
      foreach($FormClass['Items'] as $ItemIndex => $FormItem)
      {
        //$Output .= '<td>'.$Row[$ItemIndex].'</td>';
        if(array_key_exists($FormItem['Type'], $FormTypes))
        {
          if(!array_key_exists($FormItem['Type'], $this->System->Type->TypeDefinitionList)) 
            $this->System->Type->RegisterType($FormItem['Type'], '', 
              $FormTypes[$FormItem['Type']]);
          $Output .= '<td>'.$this->System->Type->ExecuteTypeEvent('OneToMany', 'OnView', 
            array('Value' => $Row[$ItemIndex], 'Name' => $ItemIndex, 
            'Type' => $FormItem['Type'])).'</td>';
        } else $Output .= '<td>'.$this->System->Type->ExecuteTypeEvent($FormItem['Type'], 'OnView', 
          array('Value' => $Row[$ItemIndex], 'Name' => $ItemIndex)).'</td>';
      }
      $Output .= '<td><a href="?a=view&amp;id='.$Row['Id'].'"><img alt="Ukázat" title="Ukázat" src="'.
        $this->System->Link('/images/view.png').'"/></a>'.
        '<a href="?a=edit&amp;id='.$Row['Id'].'"><img alt="Upravit" title="Upravit" src="'.
        $this->System->Link('/images/edit.png').'"/></a>'.
        '<a href="?a=delete&amp;id='.$Row['Id'].'"><img alt="Smazat" title="Smazat" src="'.
        $this->System->Link('/images/delete.png').'"/></a></td>';
      $Output .= '</tr>';
    }
    $Output .= '</table>';
    $Output .= $PageList['Output'];
    $Output .= '<br/><div style="text-align: center;"><a href="?a=add"><img alt="Přidat" title="Přidat" src="'.
        $this->System->Link('/images/add.png').'"/></a></div>';
    return($Output);
  }
  
  function ShowMenuItem($Parent)
  {
    $Output = '<ul style="list-style: none; margin-left:1em; padding-left:0em;">';
    foreach($this->MenuItems as $MenuItem)
    if($MenuItem['Parent'] == $Parent)
    {
      $LinkTitle = $MenuItem['Name'];
      if($MenuItem['Table'] != '') $LinkTitle = MakeLink('?t='.$MenuItem['Table'].'&amp;a=list', $LinkTitle);
      $Output .= '<li>'.$LinkTitle.'</li>';
      $Output .= $this->ShowMenuItem($MenuItem['Id']);
    }
    $Output .= '</ul>';
    return($Output);
  }
}

$System->AddModule(new PageIS());
$System->Modules['PageIS']->GetOutput();

?>
