source: trunk/Modules/Import/Manage.php

Last change on this file was 893, checked in by chronos, 14 months ago
  • Fixed: Class types casting for better type checking.
  • Fixed: XML direct export.
  • Modified: User class instance moved from Core class to ModuleUser class.
File size: 6.5 KB
Line 
1<?php
2
3class PageImport extends Page
4{
5 function ShowInstructions()
6 {
7 $Output = '<div>'.
8 '<h5>Návod:</h5>'.
9 '<ol><li>Připojíme se přes SSH na server (wowpreklad.zdechov.net) například přes program putty.exe nebo terminál v linuxu.</li>'.
10 '<li>Nejprve je potřeba získat zdrojová data. Není zapotřebí mít všechny typy textu.'.
11
12 '<ol style="list-style-type: lower-alpha">'.
13 '<li>SQL databázi UDB seženeme na fóru: http://udbforums.kicks-ass.net/index.php?board=5.0 , soubor rozbalíme a uložíme do adresáře "wowpreklad/source/cislo_verze/sql/"</li>'.
14 '<li>DBC soubory exportujeme přímo ze hry z souboru "World of Warcraft\Data\enGB\patch-enGB-2.MPQ" nebo z souboru s vyšším číslem na konci. Export se provádí například pomocí programu "MPQEditor.exe", který je ke stažení v adresáři "wowpreklad/download". DBC soubory jsou v MPQ souboru uloženy ve složce "DBFilesClient". Tyto soubory zkopírujte do složky "wowpreklad/source/císlo_verze/dbc/"</li>'.
15 '<li>LUA soubory exportujeme přímo ze hry ze souboru "World of Warcraft\Data\enGB\patch-enGB-2.MPQ" nebo ze souboru s vyšším číslem na konci. Export se provádí například pomocí programu "MPQEditor.exe", který je ke stažení v adresáři "wowpreklad/download". LUA soubory jsou v MPQ souboru uloženy ve složce "Interface\FrameXML" a složce "Interface\GlueXML". Soubory, které potřebujeme se jmenují "GlobalString.lua" a "GlueString.lua". Tyto soubory zkopírujte do složky "wowpreklad/source/císlo_verze/lua/"</li></ol></li>'.
16 '<li>Do databáze vložíme data o verzi, kterou se hodláme importovat do tabulky wow_client_verse. Pokud budeme importovat dbc soubory je nutné vložit zde strukturu dbc souboru. To lze provést například pomocí programu "CBCUtil", který je také ke stažení v složce download. Tento program vytvoří soubory spustitelné v LibreOffice. Kde první řádek v tabulce je struktura dbc souboru. Typ "str" se zaznačí jako "s", každý jiný typ se označí písmenem "u". Struktura pak vypadá například "usuuuuuuuuuuuu". Kromě toho je zapotřebí do databáze poznačit číselné pozice textu, první položka je 0. Z předchozího příkladu by pozice sloupce s textem byla 1.</li>'.
17 '<li>V nastavení "wowpreklad/Config/Config.php" nastavíme nejvyšší verzi na verzi, kterou hodláme importovat.</li>'.
18 '<li>Až máme všechno připraveno spustíme v konzoli script příkazem "php wowpreklad/import/cmd.php", kde jsou popsané možnosti paremetru, se kterýma se tento skript spouští pro ruzné importy.</li>'.
19 '<li>Po provedení importu je potřeba několikrát spustit skript na aktualizaci verze u překladu. Je potřeba ho provádět opakovaně dokud nezmizí tečky označující, že byly provedeny změny.</li>'.
20 '</ol>';
21 return $Output;
22 }
23
24 function ShowImportGroup()
25 {
26 global $System;
27
28 if (array_key_exists('id', $_GET))
29 {
30 $Output = '<div style="font-size: xx-small;">';
31
32 $GroupId = (int)$_GET['id'];
33 $Import = new Import($System);
34 $Import->SetVersion($System->Config['Web']['GameVersion']);
35 $Output .= $Import->ImportGroup($GroupId);
36
37 $this->System->ModuleManager->Modules['Log']->WriteLog('Plnění databáze', LOG_TYPE_MODERATOR);
38 $Output .= '</div>';
39 } else $Output = ShowMessage('Nebylo zadáno id skupiny.', MESSAGE_CRITICAL);
40 return $Output;
41 }
42
43 function ShowMenu()
44 {
45 $TranslationTree = $this->System->ModuleManager->Modules['Translation']->GetTranslationTree();
46 $Output = '<strong>Import zdrojů:</strong><br/>'.
47 '<a href="?action=instructions">Instrukce pro přípravu zdrojových souborů</a><br/>'.
48 '<a href="?action=update_translated">Zaktualizovat verze přeložených</a><br/><br/>'.
49 'Verze klienta použitá pro import: <strong>'.Core::Cast($this->System)->Config['Web']['GameVersion'].'</strong><br/>';
50 $DbResult = $this->System->Database->query('SELECT COUNT(*) FROM `Group`');
51 $DbRow = $DbResult->fetch_row();
52 $PageList = GetPageList($DbRow[0]);
53 $Output .= '<h3>Seznam překladových skupin</h3>';
54 $Output .= $PageList['Output'];
55
56 $Output .= '<table class="BaseTable">';
57 $TableColumns = array(
58 array('Name' => 'Name', 'Title' => 'Jméno'),
59 array('Name' => 'SourceType', 'Title' => 'Typ zdroje'),
60 array('Name' => 'SourceName', 'Title' => 'Jméno zdroje'),
61 array('Name' => 'LastImport', 'Title' => 'Datum'),
62 array('Name' => 'LastVersion', 'Title' => 'Verze'),
63 array('Name' => '', 'Title' => 'Akce'),
64 );
65
66 $Order = GetOrderTableHeader($TableColumns, 'Name', 0);
67 $Output .= $Order['Output'];
68
69 $DbResult = $this->System->Database->query('SELECT * FROM `Group`'.$Order['SQL'].$PageList['SQLLimit']);
70 while ($Group = $DbResult->fetch_assoc())
71 {
72 $Output .= '<tr><td>'.T($Group['Name']).'</td>'.
73 '<td>'.$Group['SourceType'].'</td><td>';
74 if ($Group['MangosTable'] != '') $Output .= $Group['MangosTable'].'.sql ';
75 if ($Group['DBCFileName'] != '') $Output .= $Group['DBCFileName'].'.dbc ';
76 if ($Group['LuaFileName'] != '') $Output .= $Group['LuaFileName'].'.lua ';
77 $Output .= '</td>'.
78 '<td><a title="Změny po posledním importu u vybrané překladové skupiny" href="../log/?group='.$Group['Id'].'&amp;type=11">'.HumanDate($Group['LastImport']).'</a></td>'.
79 '<td><a href="'.$this->System->Link('/client-version/?action=item&amp;id='.
80 GetVersionWOWId($Group['LastVersion'])).'">'.GetVersionWOW($Group['LastVersion']).'</a></td>'.
81 '<td><a href="?action=importgroup&amp;id='.$Group['Id'].'">Importovat</a></td></tr>';
82 }
83 $Output .= '</table>';
84 return $Output;
85 }
86
87 function UpdateTranslated()
88 {
89 global $System;
90
91 $Output = '<div style="font-size: xx-small;">';
92 $Import = new Import($System);
93 $Output .= $Import->UpdateTranslated();
94 $Output .= '</div>';
95 return $Output;
96 }
97
98 function Show(): string
99 {
100 $User = ModuleUser::Cast($this->System->GetModule('User'))->User;
101 $this->Title = T('Import');
102 $Output = '';
103 if ($User->Licence(LICENCE_ADMIN))
104 {
105 if (array_key_exists('action', $_GET))
106 {
107 if ($_GET['action'] == 'instructions') $Output .= $this->ShowInstructions();
108 else if ($_GET['action'] == 'importgroup') $Output .= $this->ShowImportGroup();
109 else if ($_GET['action'] == 'update_translated') $Output .= $this->UpdateTranslated();
110 else $Output .= $this->ShowMenu();
111 } else $Output .= $this->ShowMenu();
112 } else $Output .= ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
113 return $Output;
114 }
115}
Note: See TracBrowser for help on using the repository browser.