Changeset 476


Ignore:
Timestamp:
Apr 25, 2010, 1:12:04 PM (15 years ago)
Author:
george
Message:
  • Přidáno: Podpora pro DBC soubory s vícesloupcovým indexem (konktérně ItemSubClass.dbc). V databázi u skupin nově sloupce DBCIndex, který může obsahovat více indexů oddělených čárkou. Z nich se vygeneruje pak při importu hodnota do speciálně vytvořeného sloupce PrimaryKeyItem kombinace hodnot zadaných sloupců. Klasicky je PrimaryKeyItem nastaven na Entry, zde speciálně na textový sloupce Index v tabulce TextItemSubClass, kde jsou ukládány hodnoty ve tvaru 1_2. Tento mechanizmus je již využíván u SQL tabulek NPCOption a Command MaNGOSu.
  • Upraveno: Při ukládání nastavení záložek exportu zobrazovat informační zprávu o uložení.
Location:
trunk
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/export/export.php

    r460 r476  
    112112          $Values = substr($Values, 2);
    113113
     114          // Get multicolumn index
    114115          $ColumnItems = explode(',', $Group['MangosTableIndex']);
    115116          if(count($ColumnItems) > 1)
     
    121122          } else $Where = '`'.$Group['MangosTableIndex'].'`';
    122123          $Where .= ' = "'.$Line[$Group['PrimaryKeyItem']].'";';
     124         
    123125          $Line = 'UPDATE `'.$Group['MangosTable'].'` SET '.$Values.' WHERE '.$Where;
    124126          $Line = str_replace("\n", '\n', $Line);
     
    266268        $DbResult2 = $this->Database->query($this->BuildQuery($Group));
    267269        while($DbRow = $DbResult2->fetch_assoc())
    268           $LookupTable[$DbRow['Entry']] = $DbRow;
     270          $LookupTable[$DbRow[$Group['PrimaryKeyItem']]] = $DbRow;
    269271     
    270272        // Open original DBC file
     
    288290        {
    289291          $Line = $SourceDBCFile->GetLine($Row);
    290           foreach($TranslationTree[$Group['Id']]['Items'] as $GroupItem)
    291           {
    292             if(array_key_exists($GroupItem['Id'], $ColumnIndexes) and array_key_exists($Line[0], $LookupTable))
    293               $Line[$ColumnIndexes[$GroupItem['Id']]] = $LookupTable[$Line[0]][$GroupItem['Column']];
     292                   
     293          // Get multicolumn index value
     294          $PrimaryKeyItem = '';
     295          $ColumnItems = explode(',', $Group['DBCIndex']);
     296          if(count($ColumnItems) > 1)
     297          {
     298            foreach($ColumnItems as $ColumnItem)
     299              $PrimaryKeyItem .= $Line[$ColumnItem].'_';
     300            $PrimaryKeyItem = substr($PrimaryKeyItem, 0, -1);
     301          } else $PrimaryKeyItem = $Line[$Group['DBCIndex']];
     302
     303          if(array_key_exists($PrimaryKeyItem, $LookupTable))
     304          {           
     305            // Replace text columns
     306            $LookupTableItem = $LookupTable[$PrimaryKeyItem];         
     307            foreach($TranslationTree[$Group['Id']]['Items'] as $GroupItem)
     308            {
     309              if(array_key_exists($GroupItem['Id'], $ColumnIndexes))
     310                $Line[$ColumnIndexes[$GroupItem['Id']]] = $LookupTableItem[$GroupItem['Column']];
     311            }
    294312          }
    295313          $NewDBCFile->SetLine($Row, $Line);
  • trunk/export/export_output.php

    r466 r476  
    178178  global $System;
    179179 
     180  if(array_key_exists('Regenerate', $_POST))
     181  {
     182    $System->Database->query('UPDATE ExportTask SET TimeStart = NOW(), TimeFinish = NULL WHERE Export = '.$ExportId);
     183    ShowMessage('Soubor zařazen znovu ke zpracování do fronty.');
     184  }
     185
    180186  echo('<form action="?Action=View&amp;Tab=7&amp;ExportId='.$ExportId.'" method="post"><input type="submit" name="Regenerate" value="Přegenerovat"/></form><br />');
    181187  echo('U DBC souborů export textů funguje jinak, protože generování je náročné, jsou požadavky zařazovány do fronty a postupně zpracovávány.<br />DBC soubory je nutné zabalit do souboru patch-enGB-5.MPQ uvnitř složky "DBFilesClient" a hru spouštět přes program wowme.exe (WoW Model Edit) u verzí klienta starší než 3.2.0. Od této verze již wowme není potřeba. Zabalit je můžete pomocí programu <a href="../download/mpqediten32.zip">Ladik\'s MPQ Editor</a>. Stav vygenerování můžete sledovat na této stránce.<br /><br />');
     
    188194  } 
    189195 
    190   if(array_key_exists('Regenerate', $_POST))
    191   {
    192     $System->Database->query('UPDATE ExportTask SET TimeStart = NOW(), TimeFinish = NULL WHERE Export = '.$ExportId);
    193     echo('Soubor zařazen znovu ke zpracování.<br/><br/>');
    194   }
    195196  $DbResult = $System->Database->query('SELECT * FROM `ExportTask` WHERE `Export` = '.$ExportId);
    196197  $ExportTask = $DbResult->fetch_assoc();
     
    206207      if(file_exists($Export->TempDir.'dbc/'.$Group['DBCFileName'].'.dbc')) echo('<a href="'.$Export->TempDir.'dbc/'.$Group['DBCFileName'].'.dbc">'.$Group['DBCFileName'].'.dbc</a><br/>');
    207208    }
    208   } else ShowMessage('<strong>Soubor čeká na zpracování ve frontě.</strong><br/>');
     209  } else echo('<strong>Soubor čeká na zpracování ve frontě.</strong><br/>');
    209210}
    210211
  • trunk/export/index.php

    r466 r476  
    109109    $System->Database->query('DELETE FROM `Export` WHERE `Id`='.$_GET['ExportId']);
    110110    DeleteDirectory('../tmp/Export/'.$_GET['ExportId'].'/');
    111     ShowMessage('Export smazán.', MESSAGE_CRITICAL);
     111    ShowMessage('Export smazán.');
    112112    $_GET['Filter'] = 'my';
    113113    WriteLog('Smazán export '.$_GET['ExportId'], LOG_TYPE_EXPORT);
     
    126126    else $Editable = false;       
    127127       
    128   if(array_key_exists('Operation', $_GET))
    129   {
    130     if($_GET['Operation'] == 'Save')
     128  if(array_key_exists('Operation', $_POST))
     129  {
     130    if($_POST['Operation'] == 'Save')
    131131    {
    132132      //print_r($_POST);
     
    155155      $System->Database->query('SET @I = 0');
    156156      $System->Database->query('UPDATE `ExportUser` SET `Sequence` = (@I := @I + 1) WHERE `Export`='.$_GET['ExportId'].' ORDER BY `Sequence`;');
     157      ShowMessage('Výběr uložen.');
    157158    }
    158159  }
     
    178179  $PageList = GetPageList($DbRow[0]);   
    179180 
    180   echo('<form name="Translators" action="?Action=View&amp;ExportId='.$_GET['ExportId'].'&amp;Operation=Save" method="post">');
     181  echo('<form name="Translators" action="?Action=View&amp;ExportId='.$_GET['ExportId'].'" method="post">');
    181182  echo('<h3>Překladatelé</h3>');
    182183  if($Editable)
    183184  {
    184185    echo('<input type="submit" value="Uložit" '.$DisabledInput[$Editable].'/>'.
     186    '<input type="hidden" name="Operation" value="Save"/>'.
    185187    ' <span onclick="CheckAllCheckbox();">'.CheckBox('CheckAll', False, 'CheckAll').' Zatrhnout vše</span> '.
    186188    '<br />'. 
     
    225227  if($User->Licence(LICENCE_USER) and ($User->Id == $Export['User'])) $Editable = true;
    226228    else $Editable = false;
    227   if($Editable and array_key_exists('Title', $_POST) and array_key_exists('Description', $_POST))
     229 
     230  if(array_key_exists('Operation', $_POST))
     231  if($_POST['Operation'] == 'Save')  if($Editable and array_key_exists('Title', $_POST) and array_key_exists('Description', $_POST))
    228232  {
    229233    if(array_key_exists('WithDiacritic', $_POST)) $WithDiacritic = 1;
     
    233237    $Export['Description'] = $_POST['Description'];
    234238    $Export['WithDiacritic'] = $WithDiacritic;
     239    ShowMessage('Nastavení uloženo.');
    235240  }
    236241     
     
    240245  if($Editable)
    241246  { 
     247    echo('<input type="hidden" name="Operation" value="Save"/>');
    242248    echo('<tr><td colspan="2"><input type="submit" value="Uložit" '.$DisabledInput[$Editable].'/></td></tr>');
    243249  }
     
    258264    else $Editable = false;
    259265       
    260   if(array_key_exists('Operation', $_GET))
    261   {
    262     if($_GET['Operation'] == 'Save')
     266  if(array_key_exists('Operation', $_POST))
     267  {
     268    if($_POST['Operation'] == 'Save')
    263269    {
    264270      //print_r($_POST);
     
    287293      $System->Database->query('SET @I = 0');
    288294      $System->Database->query('UPDATE `ExportLanguage` SET `Sequence` = (@I := @I + 1) WHERE `Export`='.$_GET['ExportId'].' ORDER BY `Sequence`;');
     295      ShowMessage('Výběr uložen.');
    289296    }
    290297  }
     
    304311  ); 
    305312  $Order = GetOrderTableHeader($TableColumns, 'Sequence2');
    306   echo('<form action="?Action=View&amp;ExportId='.$_GET['ExportId'].'&amp;Operation=Save" method="post">');
     313  echo('<form action="?Action=View&amp;ExportId='.$_GET['ExportId'].'" method="post">');
    307314  echo('<h3>Jazyky</h3>');
    308315  if($Editable)
    309316  {
    310317    echo('<input type="submit" value="Uložit" '.$DisabledInput[$Editable].'/>'.
     318    '<input type="hidden" name="Operation" value="Save"/>'.
    311319    '<br />'. 
    312320   'Zvolte ze seznamu dostupných jazyků, ze kterých chcete sestavit překlady a upravte jejich pořadí.<br />'.
     
    345353    else $Editable = false;
    346354       
    347   if(array_key_exists('Operation', $_GET))
    348   {
    349     if($_GET['Operation'] == 'Save')
     355  if(array_key_exists('Operation', $_POST))
     356  {
     357    if($_POST['Operation'] == 'Save')
    350358    {
    351359      //print_r($_POST);
     
    369377        }
    370378      }
     379      ShowMessage('Výběr uložen.');
    371380    }
    372381  }
     
    386395  ); 
    387396  $Order = GetOrderTableHeader($TableColumns, 'Name');
    388   echo('<form action="?Action=View&amp;ExportId='.$_GET['ExportId'].'&amp;Operation=Save" method="post">');
     397  echo('<form action="?Action=View&amp;ExportId='.$_GET['ExportId'].'" method="post">');
    389398  echo('<h3>Překladové skupiny</h3>');
    390399  if($Editable)
    391400  {
    392401    echo('<input type="submit" value="Uložit" '.$DisabledInput[$Editable].'/>'.
     402    '<input type="hidden" name="Operation" value="Save"/>'.
    393403    ' <span onclick="CheckAllCheckbox();">'.CheckBox('CheckAll', False, 'CheckAll').' Zatrhnout vše</span> '.
    394404    '<br />'. 
     
    432442        else $Editable = false;
    433443 
    434   if(array_key_exists('OutputType', $_POST))
     444  if(array_key_exists('Operation', $_POST))
     445  if($_POST['Operation'] == 'Save')
    435446  {
    436447    $System->Database->query('UPDATE Export SET OutputType='.$_POST['OutputType'].' WHERE Id='.$_GET['ExportId']);
     448    ShowMessage('Výběr uložen.');
    437449  }
    438450
     
    441453 
    442454  echo('<h3>Formát generovaného výstupu</h3>');
    443   echo('<form action="?Action=View&amp;ExportId='.$_GET['ExportId'].'&amp;Operation=Save" method="post">');
     455  echo('<form action="?Action=View&amp;ExportId='.$_GET['ExportId'].'" method="post">');
    444456  if($Editable)
    445457  {
    446458    echo('<input type="submit" value="Uložit" '.$DisabledInput[$Editable].'/>'.
     459    '<input type="hidden" name="Operation" value="Save"/>'.
    447460    '<br />');
    448461  }
     
    467480    else $Editable = false;
    468481       
    469   if(array_key_exists('ClientVersion', $_POST))
     482  if(array_key_exists('Operation', $_POST))
     483  if($_POST['Operation'] == 'Save')
    470484  {
    471485    $System->Database->query('UPDATE `Export` SET `ClientVersion`='.$_POST['ClientVersion'].' WHERE `Id`='.$_GET['ExportId']);
     486    ShowMessage('Výběr uložen.');
    472487  }
    473488
     
    495510  {
    496511    echo('<input type="submit" value="Uložit" '.$DisabledInput[$Editable].'/>'.
     512    '<input type="hidden" name="Operation" value="Save"/>'.
    497513    '<br />'.
    498514    'Vyberte pro jakou verzi herního klienta se budou texty exportovat.<br />');
  • trunk/import/import.php

    r475 r476  
    3131    $Where = ' (`'.$this->Group['PrimaryKeyItem'].'` = "'.$Value[$this->Group['PrimaryKeyItem']].'")';
    3232    //print_r($Value);
    33  
     33   
    3434    $DbResult2 = $this->System->Database->query('SELECT `VersionEnd`, `ID`, `Entry`, '.$Columns.' FROM `'.$this->Group['TablePrefix'].'` WHERE '.$Where.' AND (`Language`=0) ORDER BY `VersionStart` DESC LIMIT 1');
    3535    //echo('SELECT `VersionEnd`, `ID`, `Entry`, '.$Columns.' FROM `'.$this->Group['TablePrefix'].'` WHERE '.$Where.' AND (`Language`=0) ORDER BY `VersionStart` DESC LIMIT 1');
     
    233233      {
    234234        foreach($this->Group['Items'] as $GroupItem)
     235        if(array_key_exists($GroupItem['Id'], $ColumnIndexes))
    235236        {
    236237          $Value[$GroupItem['Column']] = addslashes($DBCFile->GetString($I, $ColumnIndexes[$GroupItem['Id']]));
    237238        }
    238         $Value['Entry'] = $DBCFile->GetUint($I, 0); 
     239       
     240        // Get multicolumn value
     241        $Columns = explode(',', $this->Group['DBCIndex']);
     242        $ColumnValue = '';
     243        foreach($Columns as $Column)
     244          $ColumnValue .= '_'.$DBCFile->GetUint($I, $Column);
     245        $ColumnValue = substr($ColumnValue, 1);         
     246        $Value[$this->Group['PrimaryKeyItem']] = $ColumnValue;         
    239247        $this->InsertItem($Value);
    240248        $Count++;
  • trunk/save.php

    r466 r476  
    150150             
    151151  // Address and redirecting
    152   echo('<br />Překládat: <a href="TranslationList.php?group='.$GroupId.'&amp;state=1&amp;user=0">Nepřeložené</a> ');
     152  echo('<br />Překládat: <a href="TranslationList.php?group='.$GroupId.'&amp;state=1&amp;user=0&entry=">Nepřeložené</a> ');
    153153
    154154  $prev = FollowingTran($TextID, $Table, $GroupId, True);
Note: See TracChangeset for help on using the changeset viewer.