Changeset 639


Ignore:
Timestamp:
Mar 16, 2014, 1:33:22 AM (11 years ago)
Author:
chronos
Message:
  • Přidáno: Při úpravě ve formuláři pro typ OneToMany přidána možnost přidat novou vztaženou položku.
  • Přidáno: Možnost předefinovat předvolené hodnoty nových položek formuláře. Použito především pro vztažené položky typu OneToMany.
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Application/Version.php

    r635 r639  
    11<?php
    22
    3 $Revision = 635; // Subversion revision
     3$Revision = 640; // Subversion revision
    44$DatabaseRevision = 633; // SQL structure revision
    5 $ReleaseTime = strtotime('2014-01-19');
     5$ReleaseTime = strtotime('2014-03-16');
  • trunk/Common/Form/Form.php

    r606 r639  
    1313  var $OnSubmit;
    1414  var $Database;
    15  
     15
    1616  function __construct($FormManager)
    17   {     
     17  {
    1818    $this->FormManager = &$FormManager;
    1919    $this->Database = $FormManager->Database;
    2020    $this->Definition = array();
    21     $this->Values = array();   
     21    $this->Values = array();
    2222    $this->ValuesFilter = array();
    23     $this->ValuesValidate = array();   
     23    $this->ValuesValidate = array();
    2424    $this->OnSubmit = '';
    2525  }
    26  
     26
     27  function LoadDefaults()
     28  {
     29    foreach($this->Definition['Items'] as $Index => $Item)
     30    if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
     31    (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
     32    ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
     33    {
     34      if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
     35    }
     36  }
     37
    2738  function SetClass($Name)
    2839  {
    29     $this->Definition = &$this->FormManager->Classes[$Name];   
    30   }
     40    $this->Definition = &$this->FormManager->Classes[$Name];
     41    $this->LoadDefaults();
     42  }
    3143
    3244  function ShowViewForm()
     
    3749    );
    3850    foreach($this->Definition['Items'] as $Index => $Item)
    39     if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
    40     (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
    41     ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
    42     {
    43       if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    44         if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
    45         {           
    46           if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
     51    if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
     52    (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
     53    ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
     54    {
     55        if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
     56        {
     57          if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
    4758            $this->FormManager->Type->RegisterType($Item['Type'], '', $this->FormManager->FormTypes[$Item['Type']]);
    48           if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference') 
    49             $UseType = 'OneToMany';
    50           else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration') 
    51             $UseType = 'Enumeration';
    52         } else $UseType = $Item['Type'];           
    53       $Edit = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'OnView', 
    54         array('Value' => $this->Values[$Index], 'Name' => $Index, 
    55         'Type' => $Item['Type'], 'Values' => $this->Values,             
     59          if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')
     60            $UseType = 'OneToMany';
     61          else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration')
     62            $UseType = 'Enumeration';
     63        } else $UseType = $Item['Type'];
     64      $Edit = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'OnView',
     65        array('Value' => $this->Values[$Index], 'Name' => $Index,
     66        'Type' => $Item['Type'], 'Values' => $this->Values,
    5667        'Filter' => $this->ValuesFilter[$Index]));
    5768      if(array_key_exists('Suffix', $Item)) $Edit .= ' '.$Item['Suffix'];
     
    6172    $Output = '<fieldset><legend>'.$this->Definition['Title'].'</legend>'.Table($Table).
    6273    '</fieldset>';
    63     return($Output); 
     74    return($Output);
    6475  }
    6576
     
    8697      if(!array_key_exists('ReadOnly', $Item)) $Item['ReadOnly'] = false;
    8798    if($Item['ReadOnly'] == false)
    88     if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
    89     (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
    90     ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
    91     {
    92       if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    93         $Parameters = array('Value' => $this->Values[$Index], 'Name' => $Index,
     99    if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
     100    (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
     101    ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
     102    {
     103        $Parameters = array('Value' => $this->Values[$Index], 'Name' => $Index,
    94104            'Type' => $Item['Type'], 'Values' => $this->Values);
    95105        if(array_key_exists('Null', $Item)) $Parameters['Null'] = $Item['Null'];
    96106          else unset($Parameters['Null']);
    97 
    98         if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
    99         {           
    100           if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
    101             $this->FormManager->Type->RegisterType($Item['Type'], '',
    102               $this->FormManager->FormTypes[$Item['Type']]);
    103           if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')
     107        if(array_key_exists('OnPreset', $Item)) $Parameters['OnPreset'] = $Item['OnPreset'];
     108          else unset($Parameters['OnPreset']);
     109
     110        if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
     111        {
     112          if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
     113            $this->FormManager->Type->RegisterType($Item['Type'], '',
     114              $this->FormManager->FormTypes[$Item['Type']]);
     115          if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')
    104116          {
    105117            $UseType = 'OneToMany';
    106           } else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration') 
     118          } else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration')
    107119            $UseType = 'Enumeration';
    108120        } else $UseType = $Item['Type'];
     
    111123
    112124      $Caption = $Item['Caption'].':';
    113       if(array_key_exists($Index, $this->ValuesValidate) and 
     125      if(array_key_exists($Index, $this->ValuesValidate) and
    114126        $this->ValuesValidate[$Index]) {
    115127                $Format = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'GetValidationFormat', array());
     
    124136    $Output = '<fieldset><legend>'.$this->Definition['Title'].'</legend>'.Table($Table).
    125137    $Hidden.'</fieldset>';
    126     return($Output); 
     138    return($Output);
    127139  }
    128140
    129141  function LoadValuesFromDatabase($Id)
    130   {   
    131     foreach($this->Definition['Items'] as $Index => $Item)
    132     if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
    133     (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
    134     ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
    135     {
    136       if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    137         if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
    138         {           
    139           if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
    140             $this->FormManager->Type->RegisterType($Item['Type'], '',
    141               $this->FormManager->FormTypes[$Item['Type']]);
    142           if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')
    143             $UseType = 'OneToMany';
    144           else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration')
     142  {
     143    foreach($this->Definition['Items'] as $Index => $Item)
     144    if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
     145    (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
     146    ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
     147    {
     148        if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
     149        {
     150          if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
     151            $this->FormManager->Type->RegisterType($Item['Type'], '',
     152              $this->FormManager->FormTypes[$Item['Type']]);
     153          if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')
     154            $UseType = 'OneToMany';
     155          else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration')
    145156            $UseType = 'Enumeration';
    146157        } else $UseType = $Item['Type'];
     
    154165    $DbRow = $DbResult->fetch_array();
    155166    foreach($this->Definition['Items'] as $Index => $Item)
    156     if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
    157     (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
    158     ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
    159     {
    160       if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    161         if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
    162         {           
    163           if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
    164             $this->FormManager->Type->RegisterType($Item['Type'], '',
    165               $this->FormManager->FormTypes[$Item['Type']]);
    166           if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')
    167             $UseType = 'OneToMany';
    168           else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration')
    169             $UseType = 'Enumeration';
    170         } else $UseType = $Item['Type'];
    171         $this->Values[$Index] = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'OnLoadDb',
    172             array('Value' => $DbRow[$Index], 'Name' => $Index,
     167    if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
     168    (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
     169    ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
     170    {
     171        if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
     172        {
     173          if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
     174            $this->FormManager->Type->RegisterType($Item['Type'], '',
     175              $this->FormManager->FormTypes[$Item['Type']]);
     176          if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')
     177            $UseType = 'OneToMany';
     178          else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration')
     179            $UseType = 'Enumeration';
     180        } else $UseType = $Item['Type'];
     181        $this->Values[$Index] = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'OnLoadDb',
     182            array('Value' => $DbRow[$Index], 'Name' => $Index,
    173183            'Type' => $Item['Type'], 'Values' => $this->Values));
    174184        $this->ValuesFilter[$Index] = $DbRow[$Index.'_Filter'];
     
    183193      if(!array_key_exists('ReadOnly', $Item)) $Item['ReadOnly'] = false;
    184194      if($Item['ReadOnly'] == false)
    185       if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or 
    186       (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and 
     195      if(!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
     196      (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
    187197      ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
    188198      {
    189         if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    190         $Parameters = array('Value' => $this->Values[$Index], 'Name' => $Index,
     199        $Parameters = array('Value' => $this->Values[$Index], 'Name' => $Index,
    191200          'Type' => $Item['Type'], 'Values' => $this->Values);
    192      
    193         if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
    194         {           
    195           if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList)) 
    196             $this->FormManager->Type->RegisterType($Item['Type'], '', 
    197               $this->FormManager->FormTypes[$Item['Type']]);
    198           if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference') 
     201
     202        if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
     203        {
     204          if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
     205            $this->FormManager->Type->RegisterType($Item['Type'], '',
     206              $this->FormManager->FormTypes[$Item['Type']]);
     207          if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')
    199208          {
    200209            $UseType = 'OneToMany';
    201210          }
    202           else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration') 
     211          else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration')
    203212            $UseType = 'Enumeration';
    204213        } else $UseType = $Item['Type'];
     
    225234    $Values = array();
    226235    foreach($this->Definition['Items'] as $Index => $Item)
    227     if((!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or 
     236    if((!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
    228237    (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
    229238    ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne'))) and
    230     (!array_key_exists('ReadOnly', $Item) or 
     239    (!array_key_exists('ReadOnly', $Item) or
    231240    (array_key_exists('ReadOnly', $Item) and
    232241    ($Item['ReadOnly'] != true))))
    233     {     
     242    {
    234243        //if(array_key_exists($Context.$Index, $_POST))
    235244        if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
    236         {           
    237           if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList)) 
    238             $this->FormManager->Type->RegisterType($Item['Type'], '', 
     245        {
     246          if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
     247            $this->FormManager->Type->RegisterType($Item['Type'], '',
    239248              $this->FormManager->FormTypes[$Item['Type']]);
    240249          $CustomType = $this->FormManager->FormTypes[$Item['Type']]['Type'];
    241           if($CustomType == 'Reference') 
    242             $UseType = 'OneToMany';
    243           else if($CustomType == 'Enumeration') 
     250          if($CustomType == 'Reference')
     251            $UseType = 'OneToMany';
     252          else if($CustomType == 'Enumeration')
    244253            $UseType = 'Enumeration';
    245254        } else $UseType = $Item['Type'];
     
    247256        if(array_key_exists('Null', $Item)) $Parameters['Null'] = $Item['Null'];
    248257          else unset($Parameters['Null']);
    249         $Values[$Index] = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'OnLoad', 
     258        $Values[$Index] = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'OnLoad',
    250259          $Parameters);
    251260    }
     
    257266    $Valid = true;
    258267    foreach($this->Definition['Items'] as $Index => $Item)
    259     if((!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or 
     268    if((!array_key_exists($Item['Type'], $this->FormManager->FormTypes) or
    260269    (array_key_exists($Item['Type'], $this->FormManager->FormTypes) and
    261270    ($this->FormManager->FormTypes[$Item['Type']]['Type'] != 'ManyToOne'))) and
    262     (!array_key_exists('ReadOnly', $Item) or 
     271    (!array_key_exists('ReadOnly', $Item) or
    263272    (array_key_exists('ReadOnly', $Item) and
    264273    ($Item['ReadOnly'] != true))))
    265     {     
     274    {
    266275        //if(array_key_exists($Context.$Index, $_POST))
    267276        if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))
    268         {           
    269           if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList)) 
    270             $this->FormManager->Type->RegisterType($Item['Type'], '', 
     277        {
     278          if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))
     279            $this->FormManager->Type->RegisterType($Item['Type'], '',
    271280              $this->FormManager->FormTypes[$Item['Type']]);
    272281          $CustomType = $this->FormManager->FormTypes[$Item['Type']]['Type'];
    273           if($CustomType == 'Reference') 
    274             $UseType = 'OneToMany';
    275           else if($CustomType == 'Enumeration') 
    276             $UseType = 'Enumeration';
    277         } else $UseType = $Item['Type'];
    278        
     282          if($CustomType == 'Reference')
     283            $UseType = 'OneToMany';
     284          else if($CustomType == 'Enumeration')
     285            $UseType = 'Enumeration';
     286        } else $UseType = $Item['Type'];
     287
    279288        $Parameters = array('Value' => $this->Values[$Index]);
    280289        if(array_key_exists('Null', $Item)) $Parameters['Null'] = $Item['Null'];
    281290          else $Parameters['Null'] = false;
    282         if(!$this->FormManager->Type->ExecuteTypeEvent($UseType, 'Validate', 
     291        if(!$this->FormManager->Type->ExecuteTypeEvent($UseType, 'Validate',
    283292          $Parameters)) {
    284293                $this->ValuesValidate[$Index] = true;
     
    288297    if($Valid == false) throw new Exception('not validated');
    289298    return($Valid);
    290   } 
     299  }
    291300}
    292301
     
    294303function MakeLink($Target, $Title)
    295304{
    296   return('<a href="'.$Target.'">'.$Title.'</a>'); 
     305  return('<a href="'.$Target.'">'.$Title.'</a>');
    297306}
    298307
     
    329338  var $RootURL;
    330339  var $ShowRelation;
    331  
     340
    332341  function __construct($Database)
    333342  {
     
    336345    $this->FormTypes = array();
    337346    $this->Type = new Type($this);
    338     $this->ShowRelation = false;   
    339   }
    340  
     347    $this->ShowRelation = false;
     348  }
     349
    341350  function RegisterClass($Name, $Class)
    342351  {
    343352    $this->Classes[$Name] = $Class;
    344353  }
    345  
     354
    346355  function UnregisterClass($Name)
    347356  {
     
    353362    $this->FormTypes[$Name] = $Class;
    354363  }
    355  
     364
    356365  function UnregisterFormType($Name)
    357366  {
  • trunk/Common/Form/Types/Date.php

    r616 r639  
    2222  {
    2323    global $MonthNames;
    24      
     24
    2525    if(($Item['Value'] !== null) and ((strtolower($Item['Value']) == 'now') or (strtolower($Item['Value']) == ''))) $Item['Value'] = time();
    2626    $Parts = getdate($Item['Value']);
     
    2828    $Output = '';
    2929    $Style = '';
    30     if(array_key_exists('Null', $Item) and $Item['Null']) 
     30    if(array_key_exists('Null', $Item) and $Item['Null'])
    3131    {
    32       if($Item['Value'] != null) 
     32      if($Item['Value'] != null)
    3333      {
    3434        $Checked = ' checked="1"';
    3535        $Style = 'style="display:inline;"';
    36       } else 
     36      } else
    3737      {
    3838        $Checked = '';
    39         $Style = 'style="display:none;"'; 
     39        $Style = 'style="display:none;"';
    4040      }
    4141      $Output .= '<input type="checkbox" name="'.$Item['Name'].'-null"'.$Checked.' onclick="toggle(\''.
    42         $Item['Name'].'-day\');toggle(\''.$Item['Name'].'-month\');toggle(\''.$Item['Name'].'-year\');"/>';     
     42        $Item['Name'].'-day\');toggle(\''.$Item['Name'].'-month\');toggle(\''.$Item['Name'].'-year\');"/>';
    4343    }
    44    
     44
    4545    // Day
    4646    $Output .= '<select name="'.$Item['Name'].'-day" id="'.$Item['Name'].'-day" '.$Style.'>';
     
    7272  function OnLoad($Item)
    7373  {
    74     if(!array_key_exists($Item['Name'].'-null', $_POST) and array_key_exists('Null', $Item) and ($Item['Null'] == true)) return(null); 
     74    if(!array_key_exists($Item['Name'].'-null', $_POST) and array_key_exists('Null', $Item) and ($Item['Null'] == true)) return(null);
    7575      else return(mktime(0, 0, 0, $_POST[$Item['Name'].'-month'], $_POST[$Item['Name'].'-day'], $_POST[$Item['Name'].'-year']));
    7676  }
    77  
     77
    7878  function OnLoadDb($Item)
    7979  {
     
    8181  }
    8282
    83   function OnSaveDb($Item) 
     83  function OnSaveDb($Item)
    8484  {
    8585    if($Item['Value'] == null) return(null);
  • trunk/Common/Form/Types/OneToMany.php

    r548 r639  
    66{
    77  var $EditActions;
    8  
     8
    99  function OnView($Item)
    1010  {
     
    1414      $Output = '<a href="?t='.$Type['Parameters']['Table'].'&amp;a='.
    1515        'view'.'&amp;i='.$Item['Value'].'">'.$Item['Filter'].'</a>';
    16     } else $Output = '';   
     16    } else $Output = '';
    1717    return($Output);
    1818  }
     
    2424    if(array_key_exists('Condition', $Type['Parameters'])) $Where = ' WHERE '.$Type['Parameters']['Condition'];
    2525      else $Where = '';
    26     if(array_key_exists('Null', $Item) and $Item['Null']) 
     26    if(array_key_exists('Null', $Item) and $Item['Null'])
    2727    {
    2828      if($Item['Value'] == NULL) $Selected = ' selected="1"'; else $Selected = '';
     
    3939    $Output .= '</select>';
    4040    if($this->FormManager->ShowRelation)
     41    {
     42      $URL = '';
     43      if(array_key_exists('OnPreset', $Item))
     44      {
     45        $Preset = call_user_func($Item['OnPreset'], $Item['Values']);
     46        $URL = str_replace('&', '&amp;', '&'.http_build_query($Preset));
     47      }
     48      $Output .=  '<img src="'.$this->FormManager->Root.'/images/add.png" alf="Přidat" language="javascript" '.
     49        'onclick="return popupwindow(&quot;'.$this->FormManager->Root.'/is/?a=addsub&amp;t='.$Table.'&amp;r='.$Item['Name'].'&amp;rt='.$Item['Type'].$URL.'&quot;,&quot;test&quot;);" style="cursor:hand;cursor:pointer"/>';
    4150      $Output .=  '<img src="'.$this->FormManager->Root.'/images/select.png" alf="Vybrat" language="javascript" '.
    4251        'onclick="return popupwindow(&quot;'.$this->FormManager->Root.'/is/?a=select&amp;t='.$Table.'&amp;r='.$Item['Name'].'&quot;,&quot;test&quot;);" style="cursor:hand;cursor:pointer"/>';
     52    }
    4353    return($Output);
    4454  }
     
    5565      else return($Item['Value']);
    5666  }
    57  
     67
    5868  function OnFilterName($Item)
    5969  {
    6070    return('`'.$Item['Name'].'_Filter`');
    6171  }
    62    
     72
    6373  function OnFilterNameQuery($Item)
    6474  {
     
    7282        $Type['Parameters']['Id'].'`=`'.$Item['Name'].'`) AS `'.$Item['Name'].'_Filter`';
    7383    //} else $Output = '`'.$Item['Name'].'`, `'.$Item['Name'].'` AS `'.$Item['Name'].'_Filter`';
    74     return($Output);   
     84    return($Output);
    7585  }
    7686}
  • trunk/Modules/Finance/Finance.php

    r632 r639  
    1515define('TARIFF_FREE', 7);
    1616define('INVOICE_DUE_DAYS', 15);
    17 define('INVOICE_OUT_DOC_LINE', 6);
     17define('DOC_LINE_INVOICE_OUT', 6);
     18define('DOC_LINE_ACCOUNT_IN', 3);
     19define('DOC_LINE_ACCOUNT_OUT', 4);
     20
    1821
    1922class Finance extends Model
     
    302305    $this->Description = 'Base module for finance management';
    303306    $this->Dependencies = array('File', 'EmailQueue');
    304   } 
     307  }
    305308
    306309  function DoInstall()
    307310  {
    308311  }
    309  
     312
    310313  function DoUninstall()
    311   {     
    312   }
    313  
     314  {
     315  }
     316
    314317  function DoStart()
    315318  {
    316319    global $Config;
    317    
     320
    318321    $this->System->RegisterPage('finance', 'PageFinance');
    319322    $this->System->RegisterPage(array('finance', 'spotreba'), 'PageFinanceConsumption');
     
    324327    $this->System->RegisterPage(array('finance', 'sprava'), 'PageFinanceManage');
    325328    $this->System->RegisterPage(array('finance', 'platby'), 'PageFinanceUserState');
    326     $this->System->RegisterPage(array('finance', 'import'), 'PageFinanceImportPayment');   
     329    $this->System->RegisterPage(array('finance', 'import'), 'PageFinanceImportPayment');
    327330    $this->System->RegisterPage(array('finance', 'zivnost'), 'PageFinanceTaxFiling');
    328331
     
    345348        'Treasury' => array('Type' => 'TFinanceTreasury', 'Caption' => 'Pokladna', 'Default' => '', 'Null' => true),
    346349        'Generate' => array('Type' => 'Boolean', 'Caption' => 'Generovat', 'Default' => ''),
    347         'InvoiceRel' => array('Type' => 'TFinanceInvoiceOperationRelListOperation', 'Caption' => 'Zaplacené faktury', 'Default' => ''),       
     350        'InvoiceRel' => array('Type' => 'TFinanceInvoiceOperationRelListOperation', 'Caption' => 'Zaplacené faktury', 'Default' => ''),
    348351      ),
    349352      'BeforeInsert' => array($this, 'BeforeInsertFinanceOperation'),
     
    378381        'VAT' => array('Type' => 'Integer', 'Caption' => 'Daň', 'Default' => '21', 'Suffix' => '%'),
    379382      ),
    380     ));   
     383    ));
    381384    $this->System->FormManager->RegisterClass('FinanceTreasury', array(
    382385      'Title' => 'Pokladny',
     
    386389        'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    387390        'TimeCreate' => array('Type' => 'Date', 'Caption' => 'Čas vytvoření', 'Default' => ''),
    388         'State' => array('Type' => 'Float', 'Caption' => 'Stav', 'Default' => '', 
     391        'State' => array('Type' => 'Float', 'Caption' => 'Stav', 'Default' => '',
    389392          'ReadOnly' => true, 'Suffix' => 'Kč', 'SQL' => '(SELECT SUM(`FinanceOperation`.`Value`) FROM `FinanceOperation` '.
    390393          'WHERE `FinanceOperation`.`Treasury`=#Id)'),
     
    409412        'LastImportDate' => array('Type' => 'Date', 'Caption' => 'Datum posledního importu', 'Default' => ''),
    410413        'LastImportId' => array('Type' => 'String', 'Caption' => 'Id posledního importu', 'Default' => ''),
    411         'State' => array('Type' => 'Float', 'Caption' => 'Stav', 'Default' => '', 
     414        'State' => array('Type' => 'Float', 'Caption' => 'Stav', 'Default' => '',
    412415          'ReadOnly' => true, 'Suffix' => 'Kč', 'SQL' => '(SELECT SUM(`FinanceOperation`.`Value`) FROM `FinanceOperation` '.
    413416          'WHERE `FinanceOperation`.`BankAccount`=#Id)'),
     
    432435      'Table' => 'Currency',
    433436      'Items' => array(
    434         'Code' => array('Type' => 'String', 'Caption' => 'Kód'),
     437        'Code' => array('Type' => 'String', 'Caption' => 'Kód', 'Default' => ''),
    435438        'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    436439        'Symbol' => array('Type' => 'String', 'Caption' => 'Symbol', 'Default' => ''),
     
    452455        'ReplaceId' => array('Type' => 'TFinanceCharge', 'Caption' => 'Cílová položka', 'Default' => '0', 'Null' => true),
    453456      ),
    454     ));     
    455    
     457    ));
     458
    456459    $this->System->AddModule(new Bill($this->System));
    457460    $this->System->AddModule(new Finance($this->System));
    458461    $this->System->Modules['Finance']->MainSubject = $Config['Finance']['MainSubjectId'];
    459462    $this->System->Modules['Finance']->DirectoryId = $Config['Finance']['DirectoryId'];
    460   } 
    461  
     463  }
     464
    462465  function DoStop()
    463   { 
    464   } 
    465  
     466  {
     467  }
     468
    466469  function BeforeInsertFinanceOperation($Form)
    467470  {
     
    470473    $Form->Values['BillCode'] = $this->System->Modules['Finance']->GetNextDocumentLineNumber($DocumentLine, $Year);
    471474    return($Form->Values);
    472   } 
     475  }
    473476}
  • trunk/Modules/Finance/Manage.php

    r629 r639  
    66  var $ShortTitle = 'Správa financí';
    77  var $ParentClass = 'PageFinance';
    8  
     8
    99  function Show()
    1010  {
    1111    $Output = '';
    12     if(!$this->System->User->CheckPermission('Finance', 'Manage')) 
     12    if(!$this->System->User->CheckPermission('Finance', 'Manage'))
    1313      return('Nemáte oprávnění');
    1414
    15     if(array_key_exists('Operation', $_GET)) $Operation = $_GET['Operation']; 
     15    if(array_key_exists('Operation', $_GET)) $Operation = $_GET['Operation'];
    1616      else $Operation = '';
    1717    switch($Operation)
     
    3939    return($Output);
    4040  }
    41  
     41
    4242  function GetBillingPeriod($Period)
    4343  {
     
    4646    $PeriodTo = mktime(0, 0, 0, date('n') + $MonthCount - 1, date('t', mktime(0, 0, 0, date('n') + $MonthCount - 1, 1, date('Y'))) , date('Y'));
    4747    return(array('From' => $PeriodFrom, 'To' => $PeriodTo, 'MonthCount' => $MonthCount));
    48   } 
     48  }
    4949
    5050  function ShowMonthlyPayment()
     
    6262      'FinanceBillingPeriod.Id=Member.BillingPeriodNext WHERE (Member.Blocked = 0)'.
    6363      'AND (Member.BillingPeriodNext > 1) AND (MemberPayment.MonthlyTotal != 0)';
    64    
     64
    6565    $DbResult = $this->Database->query('SELECT COUNT(*) FROM ('.$SQL.') AS T');
    6666    $DbRow = $DbResult->fetch_row();
    67     $PageList = GetPageList($DbRow[0]);   
     67    $PageList = GetPageList($DbRow[0]);
    6868
    6969    $Output = $PageList['Output'];
    7070    $Output .= '<table class="WideTable" style="font-size: small;">';
    71    
     71
    7272    $TableColumns = array(
    73       array('Name' => 'SubjectName', 'Title' => 'Jméno'), 
    74       array('Name' => 'Monthly', 'Title' => 'Platba'), 
    75       array('Name' => 'Cash', 'Title' => 'Kredit'), 
    76       array('Name' => 'LastDate', 'Title' => 'Poslední fakturace'), 
    77       array('Name' => 'ServicesNextMonth', 'Title' => 'Služby'), 
    78       array('Name' => 'BillingPeriodName', 'Title' => 'Perioda'), 
     73      array('Name' => 'SubjectName', 'Title' => 'Jméno'),
     74      array('Name' => 'Monthly', 'Title' => 'Platba'),
     75      array('Name' => 'Cash', 'Title' => 'Kredit'),
     76      array('Name' => 'LastDate', 'Title' => 'Poslední fakturace'),
     77      array('Name' => 'ServicesNextMonth', 'Title' => 'Služby'),
     78      array('Name' => 'BillingPeriodName', 'Title' => 'Perioda'),
    7979    );
    8080    $Order = GetOrderTableHeader($TableColumns, 'SubjectName', 0);
     
    8282
    8383    $Query = $SQL.' '.$Order['SQL'].$PageList['SQLLimit'];
    84    
     84
    8585    $DbResult = $this->Database->query($Query);
    86     while($Row = $DbResult->fetch_assoc()) 
    87     { 
     86    while($Row = $DbResult->fetch_assoc())
     87    {
    8888      $Output .= '<tr>'.
    8989      '<td>'.$Row['SubjectName'].'</td>'.
     
    100100    return($Output);
    101101  }
    102  
     102
    103103  function InsertInvoice($Subject, $TimeCreation, $TimeDue, $Items,
    104104  $DocumentLine, $PeriodFrom, $PeriodTo)
    105105  {
    106106    global $LastInsertTime;
    107    
     107
    108108    $Year = date('Y', $TimeCreation);
    109109    $BillCode = $this->System->Modules['Finance']->GetNextDocumentLineNumber($DocumentLine, $Year);
     
    124124    return($InvoiceId);
    125125  }
    126  
     126
    127127  function ProduceInvoices()
    128128  {
    129129    $Output = '';
    130    
     130
    131131    // Generuj účetní položky
    132132    $DbResult = $this->Database->query('SELECT Member.*, MemberPayment.MonthlyTotal AS MonthlyTotal, '.
     
    169169          $MonthlyTotal -= $Member['MonthlyPlus'];
    170170        }
    171         $PayPerPeriod = $MonthlyTotal * $Period['MonthCount']; 
     171        $PayPerPeriod = $MonthlyTotal * $Period['MonthCount'];
    172172        if($PayPerPeriod != 0)
    173173        {
    174174          $TimePeriodText = date('j.n.Y', $Period['From']).' - '.date('j.n.Y', $Period['To']);
    175175          $Output .= $TimePeriodText.': '.$MonthlyTotal.' * '.$Period['MonthCount'].' = '.$PayPerPeriod.'<br />';
    176           $this->InsertInvoice($Member['Subject'], time(), time() + 3600 * 24 * INVOICE_DUE_DAYS, 
    177             $InvoiceItems, INVOICE_OUT_DOC_LINE, $Period['From'], $Period['To']);
    178    
     176          $this->InsertInvoice($Member['Subject'], time(), time() + 3600 * 24 * INVOICE_DUE_DAYS,
     177            $InvoiceItems, DOC_LINE_INVOICE_OUT, $Period['From'], $Period['To']);
     178
    179179          $Output .= $this->SendPaymentEmail($Member['Id']);
    180180        } else $Output .= '<br />';
    181         $this->Database->update('Member', 'Id='.$Member['Id'], 
     181        $this->Database->update('Member', 'Id='.$Member['Id'],
    182182          array('BillingPeriodLastDate' => TimeToMysqlDateTime($Period['To'])));
    183183      } else $Output .= '<br />';
    184     } 
     184    }
    185185    return($Output);
    186186  }
    187  
     187
    188188  function TableUpdatePeriod($Table)
    189189  {
     
    212212    }
    213213    $this->Database->delete($Table, '`Action` IS NOT NULL');
    214   } 
    215  
     214  }
     215
    216216  function ProcessMonthlyPayment()
    217217  {
     
    221221    $Finance = &$this->System->Modules['Finance'];
    222222    $Finance->LoadMonthParameters(0);
    223    
     223
    224224    // Načti poslední měsíční přehled a nastavení
    225225    $DbResult = $this->Database->select('FinanceMonthlyOverall', '*', '1 ORDER BY Date DESC LIMIT 1');
     
    227227
    228228    $Output -= 'Datum: '.date('j.n.Y').'<br />';
    229    
     229
    230230    $DateParts = explode('-', $Overall['Date']);
    231231    $MonthLast = $DateParts[1];
     
    242242    $TotalDeviceCost = $Row[0];
    243243    $Output .= 'Celková cena zařízení: Zařízení('.$TotalDeviceCost;
    244    
     244
    245245    $DbResult = $this->Database->query('SELECT SUM(Price) FROM NetworkSegment');
    246246    $Row = $DbResult->fetch_row();
    247247    $TotalSegmentDeviceCost = $Row[0];
    248248    $Output .= '), Segmenty('.$TotalSegmentDeviceCost;
    249    
     249
    250250    $DbResult = $this->Database->query('SELECT SUM(NetworkDevice) FROM MemberPayment');
    251251    $Row = $DbResult->fetch_row();
    252252    $TotalMemberDeviceCost = $Row[0];
    253253    $Output .= '), Členové('.$TotalMemberDeviceCost.')<br />';
    254    
     254
    255255    $DbResult = $this->Database->query('SELECT SUM(Cash) FROM MemberPayment');
    256256    $Row = $DbResult->fetch_row();
    257257    $TotalMemberCash = $Row[0];
    258     $Output .= 'Stav pokladny: Členové('.$TotalMemberCash.')';   
     258    $Output .= 'Stav pokladny: Členové('.$TotalMemberCash.')';
    259259
    260260    $DbResult = $this->Database->query('SELECT SUM(Product.Consumption) AS Consumption FROM StockItem '.
     
    272272    {
    273273      $Output .= 'Odečítám měsíční poplatek...<br />';
    274       $Output .= $this->ProduceInvoices();   
    275      
     274      $Output .= $this->ProduceInvoices();
     275
    276276      // Update finance charge
    277277      $Output .= 'Měním aktuální parametry sítě...<br>';
     
    281281      $DbResult = $this->Database->query('SELECT * FROM FinanceCharge WHERE Action IS NULL LIMIT 1');
    282282      $Charge = $DbResult->fetch_assoc();
    283       $this->Database->insert('FinanceMonthlyOverall', array('Date' => 'NOW()', 
    284         'Money' => $Finance->Internet, 'kWh' => $Finance->kWh, 
    285         'Administration' => $Finance->Sprava, 'AdministrationTotal' => $SpravaCelkem, 
    286         'ConsumptionTotal' => $TotalConsumptionCost, 'TotalPaid' => $Finance->TotalPaid, 
    287         'BaseTariffPrice' => $Charge['BaseTariffPrice'], 
     283      $this->Database->insert('FinanceMonthlyOverall', array('Date' => 'NOW()',
     284        'Money' => $Finance->Internet, 'kWh' => $Finance->kWh,
     285        'Administration' => $Finance->Sprava, 'AdministrationTotal' => $SpravaCelkem,
     286        'ConsumptionTotal' => $TotalConsumptionCost, 'TotalPaid' => $Finance->TotalPaid,
     287        'BaseTariffPrice' => $Charge['BaseTariffPrice'],
    288288        'TopTariffPrice' => $Charge['TopTariffPrice'], 'MemberCount' => $Finance->InternetUsers));
    289289
    290290      // Update services
    291291      $Output .= 'Aktualizuji služby....<br>';
    292       $this->TableUpdatePeriod('Service');   
     292      $this->TableUpdatePeriod('Service');
    293293      // Update customer service selections
    294294      $Output .= 'Aktualizuji výběr služeb zákazníků....<br>';
    295       $this->TableUpdatePeriod('ServiceCustomerRel');     
    296      
     295      $this->TableUpdatePeriod('ServiceCustomerRel');
     296
    297297      $Finance->RecalculateMemberPayment();
    298298      //CreateMonthlyOverallBill();
     
    300300
    301301      // Restart traffic shaping
    302       //$this->Database->update('NetworkConfiguration', 'Id = 3', array('Changed' => 1));     
     302      //$this->Database->update('NetworkConfiguration', 'Id = 3', array('Changed' => 1));
    303303      //flush();
    304304      //$this->GenerateBills();
     
    306306    return($Output);
    307307  }
    308  
     308
    309309  function SendPaymentEmail($MemberId, $FileId = '')
    310310  {
    311311    global $Config;
    312    
     312
    313313    $DbResult = $this->Database->select('Member', '*', 'Id='.$MemberId);
    314314    $Member = $DbResult->fetch_assoc();
    315315
    316316    $DbResult = $this->Database->select('MemberPayment', '*', 'Member='.$MemberId);
    317     $MemberPayment = $DbResult->fetch_assoc();   
     317    $MemberPayment = $DbResult->fetch_assoc();
    318318
    319319    $DbResult = $this->Database->select('Subject', 'Name', 'Id='.$Member['Subject']);
    320     $Subject = $DbResult->fetch_assoc();     
    321    
    322     $DbResult = $this->Database->select('User', '*', 'Id='.$Member['ResponsibleUser']);   
     320    $Subject = $DbResult->fetch_assoc();
     321
     322    $DbResult = $this->Database->select('User', '*', 'Id='.$Member['ResponsibleUser']);
    323323    $User = $DbResult->fetch_assoc();
    324    
     324
    325325    $DbResult = $this->Database->select('Subject', '*', '`Id`='.$Config['Finance']['MainSubjectId']);
    326     $MainSubject = $DbResult->fetch_assoc(); 
    327    
     326    $MainSubject = $DbResult->fetch_assoc();
     327
    328328    $DbResult = $this->Database->query('SELECT FinanceBankAccount.*, CONCAT(FinanceBankAccount.Number, "/", FinanceBank.Code) AS NumberFull FROM FinanceBankAccount '.
    329329      'JOIN FinanceBank ON FinanceBank.Id=FinanceBankAccount.Bank '.
    330330      'WHERE (FinanceBankAccount.`Subject`='.$Config['Finance']['MainSubjectId'].') AND (FinanceBankAccount.`Use`=1)');
    331331    $MainSubjectAccount = $DbResult->fetch_assoc();
    332        
     332
    333333    if($User['Email'] != '')
    334334    {
     
    357357      while($DbRow = $DbResult->fetch_assoc())
    358358      {
    359         $Text = $DbRow['Text'];       
     359        $Text = $DbRow['Text'];
    360360        $Content .= '<tr><td style="border-style: solid; border-width: 1px; padding: 1px 5px 1px 5px; text-align: center;">'.HumanDate($DbRow['Time']).'</td>'.
    361361          '<td style="border-style: solid; border-width: 1px; padding: 1px 5px 1px 5px; text-align: center;">'.$Text.'</td>'.
     
    364364      $Content .= '</table><br />'."\n".
    365365      'Pro aktuální informace, prohlížení elektronických dokladů a možnost změny údajů se prosím přihlašte na stránkách <a href="http://'.$Config['Web']['Host'].$Config['Web']['RootFolder'].'">http://'.$Config['Web']['Host'].$Config['Web']['RootFolder'].'</a>.<br /><br />'."\n";
    366        
     366
    367367      $Content .= '<br />Tento email je generován automaticky. V případě zjištění nesrovnalostí napište zpět.';
    368       $this->System->ModuleManager->Modules['EmailQueue']->AddItem($User['Name'].' <'.$User['Email'].'>', $Title, $Content, 
     368      $this->System->ModuleManager->Modules['EmailQueue']->AddItem($User['Name'].' <'.$User['Email'].'>', $Title, $Content,
    369369         $Config['Web']['Admin'].' <'.$Config['Web']['AdminEmail'].'>');
    370370      $Output = '';
    371371    } else $Output = 'Uživatel '.$User['Name'].' nemá email.';
    372372  }
    373  
     373
    374374  function GenerateBills()
    375375  {
    376376    $Output = '';
    377    
     377
    378378    // FinanceInvoice
    379379    $DbResult = $this->Database->query('SELECT * FROM `FinanceInvoice` WHERE (`BillCode` <> "") '.
     
    420420        $Output .= '.';
    421421      } else $Output .= 'Soubor "'.$FullFileName.'" se nepodařilo uložit.';
    422     }   
     422    }
    423423    return($Output);
    424424  }
  • trunk/Modules/FinanceBankAPI/FinanceBankAPI.php

    r600 r639  
    1616    $this->Description = 'Communication through API to various banks, manual file import';
    1717    $this->Dependencies = array('Finance');
    18   } 
     18  }
    1919
    2020  function DoInstall()
    2121  {
    2222  }
    23  
     23
    2424  function DoUninstall()
    25   {     
     25  {
    2626  }
    27  
     27
    2828  function DoStart()
    2929  {
     
    5353        'Description' => array('Type' => 'String', 'Caption' => 'Popis operace', 'Default' => ''),
    5454        'OffsetAccountName' => array('Type' => 'String', 'Caption' => 'Jméno protiúčtu', 'Default' => ''),
    55         'FinanceOperation' => array('Type' => 'TFinanceOperation', 'Caption' => 'Přiřazená operace', 'Default' => '', 'Null' => true),
     55        'FinanceOperation' => array('Type' => 'TFinanceOperation', 'Caption' => 'Přiřazená operace', 'Default' => '', 'Null' => true, 'OnPreset' => array($this, 'PresetItem')),
    5656      ),
    5757    ));
    58    
     58
    5959    $this->System->RegisterPage(array('finance', 'import-api'), 'PageImportAPI');
    6060    $this->System->RegisterPage(array('finance', 'import-soubor'), 'PageImportFile');
    61   } 
    62  
     61  }
     62
    6363  function DoStop()
    64   {
    65   }
     64  {
     65  }
     66
     67  function PresetItem($Item)
     68  {
     69    $Preset = array();
     70    if($Item['Value'] < 0) $DocumentLine = DOC_LINE_ACCOUNT_OUT;
     71       else $DocumentLine = DOC_LINE_ACCOUNT_IN;
     72    $Preset = array(
     73      'presetTime' => $Item['Time'],
     74      'presetValue' => $Item['Value'],
     75      'presetTaxable' => 1,
     76      'presetText' => $Item['Description'],
     77      'presetNetwork' => 1,
     78      'presetBankAccount' => $Item['BankAccount'],
     79      'presetDocumentLine' => $DocumentLine);
     80        return($Preset);
     81  }
    6682}
  • trunk/Modules/IS/IS.php

    r628 r639  
    1313  function Show()
    1414  {
    15     if(!$this->System->User->CheckPermission('IS', 'Manage')) 
     15    if(!$this->System->User->CheckPermission('IS', 'Manage'))
    1616      return('Nemáte oprávnění');
    1717    $this->System->FormManager->ShowRelation = true;
    18    
     18
    1919    if(array_key_exists('a', $_GET)) $Action = $_GET['a'];
    2020      else $Action = '';
     
    2323    if(array_key_exists('i', $_GET)) $ItemId = $_GET['i'];
    2424      else $ItemId = 0;
    25    
     25
    2626    if($Action == 'list') $Content = $this->ShowList($Table);
    2727    else if($Action == 'select') $Content = $this->ShowSelect($Table);
     
    2929    else if($Action == 'edit') $Content = $this->ShowEdit($Table, $ItemId);
    3030    else if($Action == 'add') $Content = $this->ShowAdd($Table);
     31    else if($Action == 'addsub') $Content = $this->ShowAddSub($Table);
    3132    else if($Action == 'view') $Content = $this->ShowView($Table, $ItemId);
    3233    else if($Action == 'delete') $Content = $this->ShowDelete($Table, $ItemId);
     
    3536    {
    3637      $Output = '<table style="width: 100%"><tr><td style="width: 20%; vertical-align: top;">';
    37       $Output .= '<strong>Nabídka:</strong>'.$this->ShowMenu(); 
     38      $Output .= '<strong>Nabídka:</strong>'.$this->ShowMenu();
    3839      $Output .= '</td><td style="width: 80%; vertical-align: top;">';
    3940      $Output .= $Content;
    4041      $Output .= '</td></tr></table>';
    4142    } else $Output = $Content;
    42    
    43     return($Output);
    44   }
    45  
     43
     44    return($Output);
     45  }
     46
    4647  function Dashboard()
    4748  {
    48     $Output = '<strong>Nástěnka:</strong><br/>'; 
     49    $Output = '<strong>Nástěnka:</strong><br/>';
    4950    $DbResult = $this->Database->select('Task', 'COUNT(*)', 'Progress < 100');
    5051    $DbRow = $DbResult->fetch_row();
     
    7071    return($Output);
    7172  }
    72  
     73
    7374  function ShowEdit($Table, $Id)
    7475  {
     
    8687          $Form->Validate();
    8788          $Form->SaveValuesToDatabase($Id);
    88           $Values = $Table.': '.str_replace('=>', '=', str_replace('array', '', var_export($Form->Values, true)));       
     89          $Values = $Table.': '.str_replace('=>', '=', str_replace('array', '', var_export($Form->Values, true)));
    8990          $this->System->ModuleManager->Modules['Log']->NewRecord('IS', 'Edit', $Values);
    9091          $Output .= $this->SystemMessage('Úprava položky', 'Položka upravena');
    91           $Output .= $this->ShowView($Table, $Id);   
     92          $Output .= $this->ShowView($Table, $Id);
    9293        } catch (Exception $E)
    9394        {
     
    105106         }
    106107      }
    107     } else 
     108    } else
    108109    {
    109110      $Form = new Form($this->System->FormManager);
     
    123124    return($Output);
    124125  }
    125  
     126
    126127  function ShowDelete($Table, $Id)
    127128  {
     
    142143        $Output .= $this->SystemMessage('Smazání položky', 'Položku se nepodařilo smazat. Pravděpodobně na ni závisejí další položky.');
    143144      }
    144     } else $Output .= $this->SystemMessage('Smazání položky', 'Položka nenalezena'); 
    145     $Output .= $this->ShowList($Table);   
    146     return($Output);
    147   }
    148  
    149   function ShowAdd($Table)
     145    } else $Output .= $this->SystemMessage('Smazání položky', 'Položka nenalezena');
     146    $Output .= $this->ShowList($Table);
     147    return($Output);
     148  }
     149
     150  function ShowAdd($Table, $Actions = array())
    150151  {
    151152    $Output = '';
     
    158159        $Form = new Form($this->System->FormManager);
    159160        $Form->SetClass($Table);
    160         $Form->LoadValuesFromForm();       
     161        $Form->LoadValuesFromForm();
    161162        try {
    162163          $Form->Validate();
     
    170171          $Form->SaveValuesToDatabase(0);
    171172          $Id = $this->Database->insert_id;
    172           $Values = $Table.': '.str_replace('=>', '=', str_replace('array', '', var_export($Form->Values, true)));       
     173          $Values = $Table.': '.str_replace('=>', '=', str_replace('array', '', var_export($Form->Values, true)));
    173174          $this->System->ModuleManager->Modules['Log']->NewRecord('IS', 'Add', $Values);
    174175          $Output .= $this->SystemMessage('Přidání položky', 'Nová položka vytvořena');
    175           $Output .= $this->ShowView($Table, $Id);   
     176          $Output .= $this->ShowView($Table, $Id, $_GET['a'] == 'addsub');
    176177          if(array_key_exists('AfterInsert', $Form->Definition))
    177178          {
     
    180181            $this->Values = $Class->$Method($Form);
    181182          }
    182         //$this->Database->update($Table, 'Id='.$Id,
    183         //  array('UserCreate' => $this->System->User->User['Id'],
     183          // Add action to update caller form
     184          if($_GET['a'] == 'addsub')
     185          {
     186            $Type = $this->System->FormManager->FormTypes[$_GET['rt']];
     187            $DbResult = $this->Database->select($Table, '('.$Type['Name'].') AS Name', 'Id='.$Id);
     188            $DbRow = $DbResult->fetch_assoc();
     189            $Actions[] = '<a href="javascript:window.close();" onclick="add_select_item('.$Id.',&quot;'.$DbRow['Name'].'&quot;,&quot;'.
     190              $_GET['r'].'&quot;); set_return('.$Id.',&quot;'.
     191              $_GET['r'].'&quot;);"><img alt="Vybrat" title="Vybrat" src="'.
     192              $this->System->Link('/images/select.png').'"/> Vybrat</a>';
     193          }
     194
     195        //$this->Database->update($Table, 'Id='.$Id,
     196        //  array('UserCreate' => $this->System->User->User['Id'],
    184197        //  'TimeCreate' => 'NOW()'));
    185198        } catch (Exception $E)
     
    188201                $Form->OnSubmit = '?a=add&amp;t='.$Table.'&amp;o=save';
    189202          $Output .= $Form->ShowEditForm();
    190           $Output .= '<ul class="ActionMenu">';
    191           $Output .= '<li><a href="?a=list&amp;t='.$Table.'"><img alt="Seznam" title="Seznam" src="'.
    192             $this->System->Link('/images/list.png').'"/>Seznam</a></li>';
    193           $Output .= '</ul>';
     203          $Actions[] = '<a href="?a=list&amp;t='.$Table.'"><img alt="Seznam" title="Seznam" src="'.
     204            $this->System->Link('/images/list.png').'"/>Seznam</a>';
    194205        }
    195206      }
    196     } else 
     207    } else
    197208    {
    198209      $Form = new Form($this->System->FormManager);
    199210      $Form->SetClass($Table);
    200       // Check preset name and value
    201       if(array_key_exists('pn', $_GET) and array_key_exists('pv', $_GET))
    202         $Form->Values[$_GET['pn']] = $_GET['pv'];
    203       $Form->OnSubmit = '?a=add&amp;t='.$Table.'&amp;o=save';
     211      // Load presets from URL
     212      foreach($_GET as $Key => $Value)
     213      if(substr($Key, 0, 6) == 'preset')
     214      {
     215        $Key = substr($Key, 6);
     216        if(($Key != '') and array_key_exists($Key, $Form->Values))
     217          $Form->Values[$Key] = $Value;
     218      }
     219      if(array_key_exists('r', $_GET)) $URL = '&amp;r='.$_GET['r'].'&amp;rt='.$_GET['rt'];
     220        else $URL = '';
     221      $Form->OnSubmit = '?a='.$_GET['a'].'&amp;t='.$Table.'&amp;o=save'.$URL;
    204222      $Output .= $Form->ShowEditForm();
    205       $Output .= '<ul class="ActionMenu">';
    206       $Output .= '<li><a href="?a=list&amp;t='.$Table.'"><img alt="Seznam" title="Seznam" src="'.
    207         $this->System->Link('/images/list.png').'"/>Seznam</a></li>';
    208       $Output .= '</ul>';
    209     }
    210     return($Output);
    211   }
    212  
    213   function ShowView($Table, $Id)
     223      $Actions[] = '<a href="?a=list&amp;t='.$Table.'"><img alt="Seznam" title="Seznam" src="'.
     224        $this->System->Link('/images/list.png').'"/>Seznam</a>';
     225    }
     226    $Output .= '<ul class="ActionMenu">';
     227    foreach($Actions as $Action)
     228    {
     229      $Output .= '<li>'.$Action.'</li>';
     230    }
     231    $Output .= '</ul>';
     232    return($Output);
     233  }
     234
     235  function ShowAddSub($Table, $Filter = '', $Title = '')
     236  {
     237    if(defined('NEW_PERMISSION') and !$this->System->User->CheckPermission($this->TableToModule($Table), 'Write'))
     238      return('Nemáte oprávnění');
     239    $this->BasicHTML = true;
     240    $this->HideMenu = true;
     241    $Output = $this->ShowAdd($Table);
     242    return($Output);
     243  }
     244
     245  function ShowView($Table, $Id, $WithoutActions = false)
    214246  {
    215247    if($Table != '') $FormClass = $this->System->FormManager->Classes[$Table];
     
    217249    if(defined('NEW_PERMISSION') and !$this->System->User->CheckPermission($this->TableToModule($Table), 'Read'))
    218250      return('Nemáte oprávnění');
    219    
     251
    220252    $Form = new Form($this->System->FormManager);
    221253    $Form->SetClass($Table);
     
    223255    $Form->OnSubmit = '?a=view';
    224256    $Output = $Form->ShowViewForm();
     257    if($WithoutActions == false)
     258    {
     259    $Actions = array(
     260      '<a href="?a=edit&amp;t='.$Table.'&amp;i='.$Id.'"><img alt="Upravit" title="Upravit" src="'.
     261        $this->System->Link('/images/edit.png').'"/>Upravit</a>',
     262      '<a href="?a=list&amp;t='.$Table.'"><img alt="Seznam" title="Seznam" src="'.
     263      $this->System->Link('/images/list.png').'"/>Seznam</a>',
     264      '<a href="?a=delete&amp;t='.$Table.'&amp;i='.$Id.'" onclick="return confirmAction(\'Opravdu smazat položku?\');"><img alt="Odstranit" title="Odstranit" src="'.
     265      $this->System->Link('/images/delete.png').'" />Odstranit</a>',
     266      '<a href="?a=add&amp;t='.$Table.'"><img alt="Přidat" title="Přidat" src="'.
     267      $this->System->Link('/images/add.png').'"/>Přidat</a>');
     268    if(array_key_exists('ItemActions', $FormClass))
     269    {
     270      foreach($FormClass['ItemActions'] as $Action)
     271      {
     272        $URL = $this->System->Link($Action['URL']);
     273        if(strpos($URL, '?') === false) $URL .= '?';
     274        else if((substr($URL, -5, 5) !== '&amp;') and (substr($URL, -1, 1) !== '?')) $URL .= '&amp;';
     275        $URL .= 'i='.$Id;
     276        $Actions[] = '<a href="'.$URL.'"><img alt="'.$Action['Caption'].'" title="'.$Action['Caption'].'" src="'.
     277            $this->System->Link('/images/action.png').'"/>'.$Action['Caption'].'</a>';
     278      }
     279    }
    225280    $Output .= '<ul class="ActionMenu">';
    226     $Output .= '<li><a href="?a=edit&amp;t='.$Table.'&amp;i='.$Id.'"><img alt="Upravit" title="Upravit" src="'.
    227       $this->System->Link('/images/edit.png').'"/>Upravit</a></li>';
    228     $Output .= '<li><a href="?a=list&amp;t='.$Table.'"><img alt="Seznam" title="Seznam" src="'.
    229       $this->System->Link('/images/list.png').'"/>Seznam</a></li>';
    230     $Output .= '<li><a href="?a=delete&amp;t='.$Table.'&amp;i='.$Id.'" onclick="return confirmAction(\'Opravdu smazat položku?\');"><img alt="Odstranit" title="Odstranit" src="'.
    231       $this->System->Link('/images/delete.png').'" />Odstranit</a></li>';
    232     $Output .= '<li><a href="?a=add&amp;t='.$Table.'"><img alt="Přidat" title="Přidat" src="'.
    233       $this->System->Link('/images/add.png').'"/>Přidat</a></li>';
    234     if(array_key_exists('ItemActions', $FormClass))
    235     {
    236       foreach($FormClass['ItemActions'] as $Action)
    237       {
    238         $URL = $this->System->Link($Action['URL']);
    239         if(strpos('?', $URL) === false) $URL .= '?';
    240         else if((substr($URL, -5, 5) !== '&amp;') and (substr($URL, -1, 1) !== '?')) $URL .= '&amp;';
    241         $URL .= '&amp;i='.$Id;
    242         $Output .= '<li><a href="'.$URL.'"><img alt="'.$Action['Caption'].'" title="'.$Action['Caption'].'" src="'.
    243             $this->System->Link('/images/action.png').'"/>'.$Action['Caption'].'</a></li>';
    244       }
    245     } 
     281    foreach($Actions as $Action)
     282    {
     283      $Output .= '<li>'.$Action.'</li>';
     284    }
    246285    $Output .= '</ul><br/>';
    247    
     286
    248287    // Show ManyToOne relations
    249288    foreach($Form->Definition['Items'] as $Index => $Item)
    250     if((array_key_exists($Item['Type'], $this->System->FormManager->FormTypes) and 
     289    if((array_key_exists($Item['Type'], $this->System->FormManager->FormTypes) and
    251290    ($this->System->FormManager->FormTypes[$Item['Type']]['Type'] == 'ManyToOne')))
    252291    {
    253292      $Output .= $this->ShowList($this->System->FormManager->FormTypes[$Item['Type']]['Table'], '`'.
    254         $this->System->FormManager->FormTypes[$Item['Type']]['Ref'].'`='.$Id, $Item['Caption'], 
     293        $this->System->FormManager->FormTypes[$Item['Type']]['Ref'].'`='.$Id, $Item['Caption'],
    255294        $this->System->FormManager->FormTypes[$Item['Type']]['Ref'], $Id).'<br/>';
    256     }   
    257     return($Output);
    258   }
    259  
     295    }
     296    }
     297    return($Output);
     298  }
     299
    260300  function ShowTable($Table, $Filter = '', $Title = '', $RowActions = array(), $ExcludeColumn = '')
    261   {   
     301  {
    262302        if($Table != '') $FormClass = $this->System->FormManager->Classes[$Table];
    263303      else return($this->SystemMessage('Chyba', 'Tabulka nenalezena'));
     
    271311      if(!array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) or
    272312      (array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) and
    273       ($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] != 'ManyToOne')))     
     313      ($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] != 'ManyToOne')))
    274314      {
    275315        $UseType = $UseType = $FormItem['Type'];
    276316        if(array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes))
    277317        {
    278           if(!array_key_exists($FormItem['Type'], $this->System->FormManager->Type->TypeDefinitionList)) 
    279             $this->System->FormManager->Type->RegisterType($FormItem['Type'], '', 
     318          if(!array_key_exists($FormItem['Type'], $this->System->FormManager->Type->TypeDefinitionList))
     319            $this->System->FormManager->Type->RegisterType($FormItem['Type'], '',
    280320              $this->System->FormManager->FormTypes[$FormItem['Type']]);
    281           if($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] == 'Reference') 
     321          if($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] == 'Reference')
    282322          $UseType = 'OneToMany';
    283           else 
    284           if($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] == 'Enumeration') 
     323          else
     324          if($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] == 'Enumeration')
    285325          $UseType = 'Enumeration';
    286326        }
     
    290330          $UserFilter .= ' AND ('.$FilterName.' LIKE "%'.$_POST['Filter'.$ItemIndex].'%")';
    291331      }
    292     }     
     332    }
    293333    if(($Filter == '') and ($UserFilter != '')) $Filter = '1 '.$UserFilter;
    294334    if($Filter != '') $Filter = ' WHERE '.$Filter;
    295    
     335
    296336    foreach($FormClass['Items'] as $ItemIndex => $FormItem)
    297337      if(!array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) or
     
    315355        if(array_key_exists('Filter'.$ItemIndex, $_POST) and ($_POST['Filter'.$ItemIndex] != ''))
    316356          $Value = $_POST['Filter'.$ItemIndex];
    317           else $Value = '';       
     357          else $Value = '';
    318358        if($ItemIndex == 'Id') unset($Columns['Id']);
    319        
     359
    320360        if(!array_key_exists('SQL', $FormItem)) $FormItem['SQL'] = '';
    321361          else $FormItem['SQL'] = str_replace('#Id', '`'.$FormClass['Table'].'`.`Id`', $FormItem['SQL']);
     
    324364            'Type' => $FormItem['Type'], 'SQL' => $FormItem['SQL']));
    325365      }
    326      
     366
    327367    // Get total item count in database
    328368    $Query = 'SELECT COUNT(*) FROM `'.$FormClass['Table'].'`';
     
    330370    $DbRow = $DbResult->fetch_assoc();
    331371    $TotalCount = $DbRow['COUNT(*)'];
    332    
     372
    333373    // Get total filtered item count in database
    334374    $Columns = implode(',', $Columns);
    335     if($Filter != '') 
     375    if($Filter != '')
    336376    {
    337377      $Query = 'SELECT COUNT(*) FROM (SELECT '.$Columns.' FROM `'.$FormClass['Table'].'`) AS `TS` '.$Filter;
     
    340380      $TotalFilteredCount = $DbRow[0];
    341381    } else $TotalFilteredCount = $TotalCount;
    342     $PageList = GetPageList($TotalFilteredCount);   
     382    $PageList = GetPageList($TotalFilteredCount);
    343383
    344384    $Output = '<div style="text-align: center;">'.$FormClass['Title'].'</div>';
    345385    $Output .= $PageList['Output'];
    346386    $Output .= '<table class="WideTable" style="font-size: small;">';
    347    
     387
    348388    $TableColumns[] = array('Name' => '', 'Title' => 'Akce');
    349389    if(!array_key_exists('DefaultSortColumn', $FormClass))
     
    351391    $Order = GetOrderTableHeader($TableColumns, $FormClass['DefaultSortColumn'], 0);
    352392    $Output .= $Order['Output'];
    353    
     393
    354394    // Show search fields
    355395    if(array_key_exists('r', $_GET)) $Addition = '&amp;r='.$_GET['r'];
     
    364404      if(array_key_exists('Filter'.$ItemIndex, $_POST) and ($_POST['Filter'.$ItemIndex] != ''))
    365405        $Value = $_POST['Filter'.$ItemIndex];
    366         else $Value = ''; 
    367       $Output .= '<td><input type="text" name="Filter'.$ItemIndex.'" value="'.$Value.'" style="width: 100%"/></td>';   
     406        else $Value = '';
     407      $Output .= '<td><input type="text" name="Filter'.$ItemIndex.'" value="'.$Value.'" style="width: 100%"/></td>';
    368408    }
    369409    $Output .= '<td><input type="Submit" value="Hledat"/></td></form></tr>';
    370    
     410
    371411    // Load and show items
    372412    $Query = 'SELECT * FROM (SELECT '.$Columns.' FROM `'.$FormClass['Table'].'`) AS `TS` '.
    373       $Filter.' '.$Order['SQL'].$PageList['SQLLimit'];   
     413      $Filter.' '.$Order['SQL'].$PageList['SQLLimit'];
    374414    $VisibleItemCount = 0;
    375415    $DbResult = $this->Database->query($Query);
    376     while($Row = $DbResult->fetch_assoc()) 
    377     { 
     416    while($Row = $DbResult->fetch_assoc())
     417    {
    378418      $Output .= '<tr>';
    379419      foreach($FormClass['Items'] as $ItemIndex => $FormItem)
    380       if((!array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) or 
    381       (array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) and 
     420      if((!array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) or
     421      (array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) and
    382422      ($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] != 'ManyToOne'))) and
    383423      ($ExcludeColumn != $ItemIndex))
     
    387427        if(array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes))
    388428        {
    389           if(!array_key_exists($FormItem['Type'], $this->System->FormManager->Type->TypeDefinitionList)) 
    390             $this->System->FormManager->Type->RegisterType($FormItem['Type'], '', 
     429          if(!array_key_exists($FormItem['Type'], $this->System->FormManager->Type->TypeDefinitionList))
     430            $this->System->FormManager->Type->RegisterType($FormItem['Type'], '',
    391431              $this->System->FormManager->FormTypes[$FormItem['Type']]);
    392           if($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] == 'Reference') 
     432          if($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] == 'Reference')
    393433          $UseType = 'OneToMany';
    394           else 
    395           if($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] == 'Enumeration') 
     434          else
     435          if($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] == 'Enumeration')
    396436          $UseType = 'Enumeration';
    397437        }
    398         $Row[$ItemIndex] = $this->System->FormManager->Type->ExecuteTypeEvent($UseType, 'OnLoadDb', 
    399           array('Value' => $Row[$ItemIndex], 'Name' => $ItemIndex, 
     438        $Row[$ItemIndex] = $this->System->FormManager->Type->ExecuteTypeEvent($UseType, 'OnLoadDb',
     439          array('Value' => $Row[$ItemIndex], 'Name' => $ItemIndex,
    400440          'Type' => $FormItem['Type']));
    401         $Value = $this->System->FormManager->Type->ExecuteTypeEvent($UseType, 'OnView', 
    402           array('Value' => $Row[$ItemIndex], 'Name' => $ItemIndex, 
     441        $Value = $this->System->FormManager->Type->ExecuteTypeEvent($UseType, 'OnView',
     442          array('Value' => $Row[$ItemIndex], 'Name' => $ItemIndex,
    403443          'Type' => $FormItem['Type'], 'Filter' => $Row[$ItemIndex.'_Filter']));
    404444        if($Value == '') $Value = '&nbsp;';
     
    415455    return($Output);
    416456  }
    417  
     457
    418458  function ShowSelect($Table, $Filter = '', $Title = '')
    419   { 
     459  {
    420460    if(defined('NEW_PERMISSION') and !$this->System->User->CheckPermission($this->TableToModule($Table), 'Read'))
    421461      return('Nemáte oprávnění');
     
    425465      $_GET['r'].'&quot;);"><img alt="Vybrat" title="Vybrat" src="'.
    426466      $this->System->Link('/images/select.png').'"/></a>';
    427     $Output = $this->ShowTable($Table, $Filter, $Title, $RowActions);   
    428     return($Output);
    429   }   
    430  
     467    $Output = $this->ShowTable($Table, $Filter, $Title, $RowActions);
     468    return($Output);
     469  }
     470
    431471  function ShowMapSelect($Table, $Filter = '', $Title = '')
    432472  {
     
    434474      return('Nemáte oprávnění');
    435475    $MapApi = new MapApiGoogle($this->System);
    436     $MapApi->Position = array('Lat' => $this->System->Config['Map']['DefaultLatitude'], 
     476    $MapApi->Position = array('Lat' => $this->System->Config['Map']['DefaultLatitude'],
    437477      'Lng' => $this->System->Config['Map']['DefaultLongitude']);
    438478    $MapApi->Zoom = $this->System->Config['Map']['DefaultZoom'];
     
    440480    $MapApi->OnClickObject = $_GET['r'];
    441481    //$MapApi->ShowMarker = true;
    442     $Output = $MapApi->ShowPage($this); 
    443     return($Output);
    444   }   
    445  
    446   function ShowList($Table, $Filter = '', $Title = '', $ExcludeColumn = '', $ExcludeValue = '') 
     482    $Output = $MapApi->ShowPage($this);
     483    return($Output);
     484  }
     485
     486  function ShowList($Table, $Filter = '', $Title = '', $ExcludeColumn = '', $ExcludeValue = '')
    447487  {
    448488    if(defined('NEW_PERMISSION') and !$this->System->User->CheckPermission($this->TableToModule($Table), 'Read'))
     
    461501      {
    462502        $URL = $this->System->Link($Action['URL']);
    463         if(strpos('?', $URL) === false) $URL .= '?';
     503        if(strpos($URL, '?') === false) $URL .= '?';
    464504        else if((substr($URL, -5, 5) !== '&amp;') and (substr($URL, -1, 1) !== '?')) $URL .= '&amp;';
    465         $URL .= '&amp;i=#RowId';
     505        $URL .= 'i=#RowId';
    466506        $RowActions .= '<a href="'.$URL.'"><img alt="'.$Action['Caption'].'" title="'.$Action['Caption'].'" src="'.
    467507          $this->System->Link('/images/action.png').'"/></a>';
    468508      }
    469     }   
     509    }
    470510    $Output = $this->ShowTable($Table, $Filter, $Title, $RowActions, $ExcludeColumn);
    471511    $Output .= '<ul class="ActionMenu">';
    472     $Output .= '<li><a href="?a=add&amp;t='.$Table.'&amp;pn='.$ExcludeColumn.'&amp;pv='.$ExcludeValue.'"><img alt="Přidat" title="Přidat" src="'.
     512    $Output .= '<li><a href="?a=add&amp;t='.$Table.'&amp;preset'.$ExcludeColumn.'='.$ExcludeValue.'"><img alt="Přidat" title="Přidat" src="'.
    473513      $this->System->Link('/images/add.png').'"/>Přidat</a></li>';
    474514    $Output .= '<li><a href="?a=list&amp;t='.$Table.'"><img alt="Seznam" title="Seznam" src="'.
     
    481521    }
    482522    $Output .= '</ul>';
    483     return($Output);   
    484   }
    485  
     523    return($Output);
     524  }
     525
    486526  function ShowMenu()
    487527  {
     
    499539    return($this->ShowMenuItem(''));
    500540  }
    501  
     541
    502542  function ShowMenuItem($Parent)
    503543  {
     
    507547    {
    508548      $LinkTitle = $MenuItem['Name'];
    509       if($MenuItem['URL'] != '') 
     549      if($MenuItem['URL'] != '')
    510550      {
    511551        if(substr($MenuItem['URL'], 0, 4) != 'http') $MenuItem['URL'] = $this->System->Link($MenuItem['URL']);
     
    514554      if($MenuItem['IconName'] != '') $Image = '<img src="'.$this->System->Link('/images/favicons/'.$MenuItem['IconName']).'"/>&nbsp;';
    515555        else $Image = '<img src="'.$this->System->Link('/images/favicons/blank.png').'"/>&nbsp;';
    516       //if($this->System->User->CheckPermission($this->TableToModule($Table), 'Write') or !defined('NEW_PERMISSION'))       
     556      //if($this->System->User->CheckPermission($this->TableToModule($Table), 'Write') or !defined('NEW_PERMISSION'))
    517557        $Output .= '<li>'.$Image.$LinkTitle.'</li>';
    518558      $Output .= $this->ShowMenuItem($MenuItem['Id']);
     
    521561    return($Output);
    522562  }
    523  
     563
    524564  function TableToModule($Table)
    525565  {
     
    529569    {
    530570      $DbRow = $DbResult->fetch_assoc();
    531       return($DbRow['Name']);     
     571      return($DbRow['Name']);
    532572    } else return('');
    533573  }
     
    545585    $this->Description = 'User interface for generic information system';
    546586    $this->Dependencies = array();
    547   } 
     587  }
    548588
    549589  function DoInstall()
    550590  {
    551591  }
    552  
     592
    553593  function DoUninstall()
    554   {     
    555   }
    556  
     594  {
     595  }
     596
    557597  function DoStart()
    558598  {
     
    576616        'Items' => array('Type' => 'TMenuItemListMenu', 'Caption' => 'Položky'),
    577617      ),
    578     ));   
    579   } 
    580  
     618    ));
     619  }
     620
    581621  function DoStop()
    582   { 
    583   } 
     622  {
     623  }
    584624}
  • trunk/style/new/global.js

    r570 r639  
    7777  window.opener.document.getElementById(obj).value = id;
    7878}
     79
     80function add_select_item(id, text, obj)
     81{
     82  var option = window.opener.document.createElement('option')
     83  option.value = id;
     84  option.innerHTML = text;
     85  window.opener.document.getElementById(obj).appendChild(option);
     86}
Note: See TracChangeset for help on using the changeset viewer.