Changeset 2


Ignore:
Timestamp:
Sep 10, 2008, 8:07:24 PM (16 years ago)
Author:
george
Message:
  • Upraveno: Uchování a načtení struktury seznamů a položek dynamicky z databáze namísto soubor lists.php, kde zůstaly základní definice tabulek.
  • Upraveno: Zobrazení podpoložek typu Pointer podle rodičovského id.
  • Přidáno: Stránkování u dlouhých výpisů položek seznamů.
  • Přidáno: Vlastnost VisibleInList určující, které vlastnosti položky zobrazovat v přehledovém seznamu a které ne. Zobrazovat vše by bylo nepřehledné a nepraktické.
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • config.sample.php

    r1 r2  
    1010    'Charset' => 'utf8',
    1111  ),
     12  'Web' => array(
     13    'ItemsPerPage' => 20,
     14  ),
    1215);
    1316
  • data_types.php

    r1 r2  
    33include('types.php');
    44include('lists.php');
     5include('common.php');
    56
    67function ShowList($List)
    78{
    8   global $Database, $Types;
     9  global $Database, $Types, $Config;
    910
    1011  $Output = '<table class="WideTable"><tr>';
    1112  foreach($List['Items'] as $Item)
    1213  {
    13     $Output .= '<th>'.$Item['TextBefore'].'</th>';
     14    if($Item['VisibleInList'] == 1)
     15      $Output .= '<th>'.$Item['TextBefore'].'</th>';
    1416  }
    1517  $Output .= '<th>Akce</th></tr>';
    1618
    17   $DbResult = $Database->select($List['TableName'], '*');
     19  if(array_key_exists('ParentTable', $_GET) and array_key_exists('ParentId', $_GET))
     20  {
     21    //$_SESSION['ParentId'] = $_GET['ParentId'];
     22    //$_SESSION['ParentTable'] = $_GET['ParentTable'];
     23    $Where = $_GET['ParentTable'].'='.$_GET['ParentId'].' ';
     24  }
     25  else $Where = '1';
     26
     27  if(array_key_exists('Page', $_GET)) $Page = $_GET['Page']; else $Page = 0;
     28  $DbResult = $Database->select($List['TableName'], 'COUNT(*)', $Where);
     29  $DbRow = $DbResult->fetch_array();
     30  $TotalItemCount = $DbRow[0];
     31
     32  $DbResult = $Database->select($List['TableName'], '*', $Where.' LIMIT '.($Page * $Config['Web']['ItemsPerPage']).', '.$Config['Web']['ItemsPerPage']);
    1833  while($DbRow = $DbResult->fetch_array())
    1934  {
     
    2136    foreach($List['Items'] as $Index => $Item)
    2237    {
    23       $Type = $Types[$Item['Type']];
    24       if(is_callable($Type['ViewHtml'])) $Value = $Type['ViewHtml']($Type, $DbRow[$Index]);
    25       else $Value = $Type['ViewHtml'];
    26       $Value = str_replace('%value%', $DbRow[$Index], $Value);
    27       $Output .= '<td>'.$Value.'</td>';
     38      if($Item['VisibleInList'] == 1)
     39      {
     40        $Type = $Types[$Item['Type']];
     41        if(is_callable($Type['ViewHtml'])) $Value = $Type['ViewHtml']($Type, $DbRow[$Index], $List['TableName'], $DbRow['Id']);
     42        else $Value = $Type['ViewHtml'];
     43        $Value = str_replace('%value%', $DbRow[$Index], $Value);
     44        $Output .= '<td>'.$Value.'</td>';
     45      }
    2846    }
    2947    $Output .= '<td><a href="?Action=View&amp;Id='.$DbRow['Id'].'">Zobrazit</a> <a href="?Action=Edit&amp;Id='.$DbRow['Id'].'">Edit</a> <a href="?Action=Delete&amp;Id='.$DbRow['Id'].'">Smazat</a></td></tr>';
    3048  }
    3149  $Output .= '</table>';
     50  $Output .= PagesList($Page, $TotalItemCount).'<br />';
    3251  $Output .= '<a href="?Action=Add">Přidat</a>';
    3352  return($Output);
     
    4766    {
    4867      $Type = $Types[$Item['Type']];
    49       if(is_callable($Type['EditHtml'])) $Value = $Type['EditHtml']($Type, $DbRow[$Index]);
     68      if(is_callable($Type['EditHtml'])) $Value = $Type['EditHtml']($Type, $DbRow[$Index], $List['TableName'], $DbRow['Id']);
    5069      else $Value = $Type['EditHtml'];
    5170      $Value = str_replace('%value%', $DbRow[$Index], $Value);
     
    84103  {
    85104    $Type = $Types[$Item['Type']];
    86     if(is_callable($Type['EditHtml'])) $Value = $Type['EditHtml']($Type, $Type['InitValue']);
     105    if(is_callable($Type['EditHtml'])) $Value = $Type['EditHtml']($Type, $Type['InitValue'], $List['TableName'], 0);
    87106    else $Value = $Type['EditHtml'];
    88107    $Value = str_replace('%value%', $Type['InitValue'], $Value);
     
    123142    {
    124143      $Type = $Types[$Item['Type']];
    125       if(is_callable($Type['ViewHtml'])) $Value = $Type['ViewHtml']($Type, $DbRow[$Index]);
     144      if(is_callable($Type['ViewHtml'])) $Value = $Type['ViewHtml']($Type, $DbRow[$Index], $List['TableName'], $DbRow['Id']);
    126145      else $Value = $Type['ViewHtml'];
    127146      $Value = str_replace('%value%', $DbRow[$Index], $Value);
     
    199218}
    200219
     220function LoadListDefinition()
     221{
     222  global $Database, $Lists;
     223
     224  $DbResult = $Database->select('List', '*');
     225  while($DbRow = $DbResult->fetch_assoc())
     226  {
     227    $Items = array();
     228    $DbResult2 = $Database->select('ListItem', '`Name`, `TextBefore`, `TextAfter`, `Type`, `Default`, `Help`, `Required`, `Editable`, `VisibleInList`', 'List='.$DbRow['Id']);
     229    while($DbRow2 = $DbResult2->fetch_assoc())
     230    {
     231      $Items[$DbRow2['Name']] = $DbRow2;
     232    }
     233    $List = array(
     234     'TableName' => $DbRow['TableName'],
     235     'Title' => $DbRow['Title'],
     236     'Items' => $Items,
     237    );
     238    $Lists[] = $List;
     239  }
     240}
    201241?>
  • index.php

    r1 r2  
    1616    </head><body>';
    1717
     18LoadListDefinition();
    1819echo($Output);
    1920echo(TableList());
    2021echo(Output());
    2122echo('</body></html>');
    22 
     23//echo(phpinfo());
    2324?>
  • lists.php

    r1 r2  
    1414        'Required' => 1,
    1515        'Editable' => 1,
     16        'VisibleInList' => 1,
    1617      ),
    1718      'Title' => array(
     
    2324        'Required' => 1,
    2425        'Editable' => 1,
     26        'VisibleInList' => 1,
    2527      ),
    2628      'Items' => array(
    2729        'TextBefore' => 'Položky',
    2830        'TextAfter' => '',
    29         'Type' => '',
     31        'Type' => 'ListItemPointer',
    3032        'Help' => 'Definujte potřebné položky pro seznam.',
    3133        'Default' => '',
    3234        'Required' => 1,
    3335        'Editable' => 1,
     36        'VisibleInList' => 0,
    3437      ),
    3538    ),
     
    4750        'Required' => 1,
    4851        'Editable' => 1,
     52        'VisibleInList' => 1,
    4953      ),
    5054      'TextAfter' => array(
     
    5660        'Required' => 1,
    5761        'Editable' => 1,
     62        'VisibleInList' => 0,
    5863      ),
    5964      'Type' => array(
     
    6570        'Required' => 1,
    6671        'Editable' => 1,
     72        'VisibleInList' => 1,
    6773      ),
    6874      'Help' => array(
     
    7480        'Required' => 1,
    7581        'Editable' => 1,
     82        'VisibleInList' => 0,
    7683      ),
    7784      'Required' => array(
     
    8390        'Required' => 1,
    8491        'Editable' => 1,
     92        'VisibleInList' => 0,
    8593      ),
    8694      'Editable' => array(
     
    92100        'Required' => 1,
    93101        'Editable' => 1,
     102        'VisibleInList' => 0,
    94103      ),
    95     ),
    96   ),
    97   'User' => array(
    98     'TableName' => 'User',
    99     'Title' => 'Seznam uživatelů',
    100     'Items' => array(
    101       'FirstName' => array(
    102         'TextBefore' => 'Jméno',
     104      'VisibleInList' => array(
     105        'TextBefore' => 'Viditelné v seznamu',
    103106        'TextAfter' => '',
    104         'Type' => 'String',
    105         'Help' => 'Zadejte jméno',
     107        'Type' => 'Boolean',
     108        'Help' => 'Určuje viditelnost této položky v seznamu',
    106109        'Default' => '',
    107110        'Required' => 1,
    108111        'Editable' => 1,
    109       ),
    110       'SecondName' => array(
    111         'TextBefore' => 'Příjmení',
    112         'TextAfter' => '',
    113         'Type' => 'String',
    114         'Help' => 'Zadejte příjmení',
    115         'Default' => '',
    116         'Required' => 1,
    117         'Editable' => 1,
    118       ),
    119       'Email' => array(
    120         'TextBefore' => 'E-mail',
    121         'TextAfter' => '',
    122         'Type' => 'String',
    123         'Help' => 'Zadejte emailovou adresu',
    124         'Default' => '',
    125         'Required' => 1,
    126         'Editable' => 1,
    127       ),
    128       'Age' => array(
    129         'TextBefore' => 'Věk',
    130         'TextAfter' => 'roků',
    131         'Type' => 'Integer',
    132         'Help' => 'Zadejte stáří osoby',
    133         'Default' => 0,
    134         'Required' => 0,
    135         'Editable' => 1,
    136       ),
    137       'Sex' => array(
    138         'TextBefore' => 'Pohlaví',
    139         'TextAfter' => '',
    140         'Type' => 'Sex',
    141         'Help' => 'Vyberte pohlaví osoby',
    142         'Default' => 0,
    143         'Required' => 0,
    144         'Editable' => 1,
    145       ),
    146       'BirthDay' => array(
    147         'TextBefore' => 'Datum narození',
    148         'TextAfter' => '',
    149         'Type' => 'Date',
    150         'Help' => 'Vyberte datum narození.',
    151         'Default' => 0,
    152         'Required' => 0,
    153         'Editable' => 1,
    154       ),
    155     ),
    156   ),
    157   'Host' => array(
    158     'TableName' => 'Host',
    159     'Title' => 'Seznam počítačů',
    160     'Items' => array(
    161       'DomainName' => array(
    162         'TextBefore' => 'Doménové jméno',
    163         'TextAfter' => '',
    164         'Type' => 'String',
    165         'Help' => 'Zadejte jméno počítače v doméně',
    166         'Default' => '',
    167         'Required' => 1,
    168         'Editable' => 1,
    169       ),
    170       'NetBIOSName' => array(
    171         'TextBefore' => 'NetBIOS jméno',
    172         'TextAfter' => '',
    173         'Type' => 'String',
    174         'Help' => 'Zadejte jméno počítače v rámci protokolů NetBIOS a sdílení souborů',
    175         'Default' => '',
    176         'Required' => 0,
    177         'Editable' => 1,
    178       ),
    179       'LocalIPAddress' => array(
    180         'TextBefore' => 'Místní IP adresa',
    181         'TextAfter' => '',
    182         'Type' => 'String',
    183         'Help' => 'Zadejte síťovou adresu používanou v rámci místní sítě.',
    184         'Default' => '',
    185         'Required' => 1,
    186         'Editable' => 1,
    187       ),
    188       'PublicIPAddress' => array(
    189         'TextBefore' => 'Veřejná IP adresa',
    190         'TextAfter' => '',
    191         'Type' => 'String',
    192         'Help' => 'Zadejte síťovou adresu používanou v rámci Internetu.',
    193         'Default' => '',
    194         'Required' => 1,
    195         'Editable' => 1,
    196       ),
    197       'LastOnlineDate' => array(
    198         'TextBefore' => 'Naposledy online',
    199         'TextAfter' => '',
    200         'Type' => 'Date',
    201         'Help' => 'Čas posledního úspěšného měření dostupnosti počítače.',
    202         'Default' => 0,
    203         'Required' => 0,
    204         'Editable' => 0,
     112        'VisibleInList' => 0,
    205113      ),
    206114    ),
  • types.php

    r1 r2  
    11<?php
    22
    3 function TypeEnumerationViewHtml($Type, $Parameter)
     3function TypeEnumerationViewHtml($Type, $Parameter, $Table, $Id)
    44{
    55  $Output = $Type['TypeDefinition'][$Parameter];
     
    77}
    88
    9 function TypeEnumerationEditHtml($Type, $Parameter)
     9function TypeEnumerationEditHtml($Type, $Parameter, $Table, $Id)
    1010{
    1111  $Output = '<select name="%name%">';
     
    2121$MonthList = array('0', 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec');
    2222
    23 function TypeDateViewHtml($Type, $Parameter)
     23function TypeDateViewHtml($Type, $Parameter, $Table, $Id)
    2424{
    2525  global $MonthList;
     
    3131}
    3232
    33 function TypeDateEditHtml($Type, $Parameter)
     33function TypeDateEditHtml($Type, $Parameter, $Table, $Id)
    3434{
    3535  global $MonthList;
     
    6161  }
    6262  $Output .= '</select>';
     63  return($Output);
     64}
     65
     66function TypePointerViewHtml($Type, $Parameter, $Table, $Id)
     67{
     68  $Output = '<a href="?Action=SelectList&amp;Id='.$Type['TypeDefinition'].'&amp;ParentTable='.$Table.'&amp;ParentId='.$Id.'">Seznam</a>';
    6369  return($Output);
    6470}
     
    115121      'Logitude' => 'Integer',
    116122    ),
    117   )
     123  ),
     124  'ListItemPointer' => array(
     125    'Type' => 'Pointer',
     126    'TypeDefinition' => 'ListItem',
     127    'ViewHtml' => 'TypePointerViewHtml',
     128    'EditHtml' => 'TypePointerViewHtml',
     129    'DatabaseType' => 'INT',
     130    'InitValue' => '0',
     131    'ParseFunction' => '',
     132  ),
    118133);
    119134
Note: See TracChangeset for help on using the changeset viewer.