Changeset 11 for forms.php


Ignore:
Timestamp:
Oct 13, 2008, 8:05:21 AM (16 years ago)
Author:
george
Message:
  • Opraveno: Mazání položek nyní položku neodstraňuje z databáze, ale pouze ji označí za smazanou. Sloupce DeletionTime se nastaví na aktuální čas a položka nadále nebude zobrazována ve výpisech.
  • Opraveno: Načítání položek formuláře nyní prováděno přes událost OnLoad pro každý typ samostatně. Tímto také opraveno načítání hodnoty typu Boolean(checkbox) a Date(comboboxy datumu).
  • Opraveno: Správné zpracování typů nejenom podle id, ale také podle jména.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • forms.php

    r10 r11  
    99  var $OnSubmit = '';
    1010
     11  function DefinitionTextTypeToNumericType()
     12  {
     13    global $TypeNames;
     14
     15    foreach($this->Definition['Items'] as $Index => $Definition)
     16      if(!is_numeric($Definition['Type'])) $this->Definition['Items'][$Index]['Type'] = $TypeNames[$Definition['Type']];
     17  }
     18
    1119  function ShowEditForm()
    1220  {
     21    $this->DefinitionTextTypeToNumericType();
    1322    $Output = '<center><form action="'.$this->OnSubmit.'" method="post"><div align="center">';
    1423    $Table = $this->ShowEditBlock();
     
    5867  function ShowReadOnlyForm()
    5968  {
     69    $this->DefinitionTextTypeToNumericType();
     70
    6071    $Output = '<center><div align="center">';
    6172    $Table = $this->ShowReadOnlyBlock();
     
    90101    foreach($this->Definition['Items'] as $Item)
    91102    {
    92       $Index = $Item['Name'];
    93       $this->Values[$Index] = $DbRow[$Index];
     103      $this->Values[$Item['Name']] = $DbRow[$Item['Name']];
    94104      switch($Item['Type'])
    95105      {
    96106        case 'Password':
    97           if($Item['Type'] == 'Password') $this->Values[$Index] = '';  // Dont show password
     107          if($Item['Type'] == 'Password') $this->Values[$Item['Name']] = '';  // Dont show password
    98108          break;
    99109        case 'Time':
    100           $this->Values[$Index] == MysqlDateTimeToTime($this->Values[$Index]);
     110          $this->Values[$Index] == MysqlDateTimeToTime($this->Values[$Item['Name']]);
    101111          break;
    102112      }
     
    110120    foreach($this->Definition['Items'] as $Item)
    111121    {
    112       $Index = $Item['Name'];
    113122      switch($Item['Type'])
    114123      {
    115124        case 'Password':
    116           if($this->Values[$Index] == '') unset($this->Values[$Index]); // Do not modify empty passwords
    117           else $this->Values[$Index] = sha1($this->Values[$Index]);
     125          if($this->Values[$Item['Name']] == '') unset($this->Values[$Item['Name']]); // Do not modify empty passwords
     126          else $this->Values[$Item['Name']] = sha1($this->Values[$Item['Name']]);
    118127          break;
    119128        case 'Time':
    120           $this->Values[$Index] = TimeToMysqlDateTime($this->Values[$Index]);
     129          $this->Values[$Item['Name']] = TimeToMysqlDateTime($this->Values[$Item['Name']]);
    121130          break;
    122131      }
     
    129138  function LoadValuesFromForm()
    130139  {
     140    $this->DefinitionTextTypeToNumericType();
    131141    $this->Values = $this->LoadValuesFromFormBlock();
    132142  }
     
    136146    global $FormTypes;
    137147
    138     if($Context != '') $Context = $Context.'-';
    139148    $Values = array();
    140     foreach($this->Definition['Items'] as $Item)
     149    foreach($this->Definition['Items'] as $Index => $Item)
    141150    {
    142       $Index = $Item['Name'];
    143       switch($Item['Type'])
    144       {
    145         case 'Boolean':
    146           if(array_key_exists($Context.$Index, $_POST)) $Values[$Index] = 1;
    147           else $Values[$Index] = 0;
    148           break;
    149         case 'String':
    150           $Values[$Index] = $_POST[$Context.$Index];
    151           break;
    152         case 'Password':
    153           $Values[$Index] = $_POST[$Context.$Index];
    154           break;
    155         case 'Integer':
    156           $Values[$Index] = $_POST[$Context.$Index];
    157           break;
    158         case 'Float':
    159           $Values[$Index] = $_POST[$Context.$Index];
    160           break;
    161         case 'Time':
    162           $Values[$Index] = explode('.', $_POST[$Context.$Index]);
    163           $Values[$Index] = mktime(0, 0, 0, $Values[$Index][1], $Values[$Index][0], $Values[$Index][2]);
    164           break;
    165         case 'Array':
    166           $I = 1;
    167           //echo('Expect: '.$Context.$Item['ItemClass'].'-'.$I.'<br>');
    168           while(isset($_POST[$Context.$Item['ItemClass'].'-'.$I]))
    169           {
    170             $Form  = new Form($Item['ItemClass']);
    171             $Values[$Index][] = $Form->LoadValuesFromFormBlock($Context.$Item['ItemClass'].'-'.$I);
    172             $I++;
    173           }
    174           break;
    175         default:
    176           if(array_key_exists($Item['Type'], $FormTypes))
    177           {
    178             // Custom types
    179             switch($FormTypes[$Item['Type']]['Type'])
    180             {
    181               case 'Enumeration':
    182                 $Values[$Index] = $_POST[$Context.$Index];
    183                 break;
    184               case 'Reference':
    185                 $Values[$Index] = $_POST[$Context.$Index];
    186                 break;
    187               default:
    188             }
    189           }
    190       }
     151      $Values[$Item['Name']] = ExecuteTypeEvent($Item['Type'], 'OnLoad', $Item);
    191152    }
     153    //print_r($this->Values);
    192154    return($Values);
    193155  }
Note: See TracChangeset for help on using the changeset viewer.