1 | <?php
|
---|
2 |
|
---|
3 | class PageTranslationList extends Page
|
---|
4 | {
|
---|
5 | function ShowFilter($GroupId = 0)
|
---|
6 | {
|
---|
7 | global $TranslationTree;
|
---|
8 |
|
---|
9 | $Filter = array('SQL' => '');
|
---|
10 |
|
---|
11 | $Output = '<form action="?" method="post">'.
|
---|
12 | '<table class="BaseTable"><tr>'.
|
---|
13 | '<th>Zpracování</th>'.
|
---|
14 | '<th>Skupina</th>'.
|
---|
15 | '<th>Verze</th>'.
|
---|
16 | '<th>Jazyk</th>'.
|
---|
17 | '<th>Překladatel</th>'.
|
---|
18 | '<th>Slova</th>'.
|
---|
19 | '<th>Položka</th>'.
|
---|
20 | '<th></th></tr><tr>';
|
---|
21 |
|
---|
22 | // State
|
---|
23 | $Filter['State'] = GetParameter('state', 0, true, true);
|
---|
24 | $Output .= '<td><select name="state">';
|
---|
25 | $StateTypes = array('Všechny','Nepřeložené','Přeložené','Rozpracované','Anglické','Rozpracované-Nepřeložené','Chybějící $ ($N,$s..)','Chybějící $-Neopravený');
|
---|
26 | foreach ($StateTypes as $index=>$StateType) {
|
---|
27 | if($Filter['State'] == $index) $Selected = ' selected="selected"';
|
---|
28 | else $Selected = '';
|
---|
29 | $Output .= '<option value="'.$index.'"'.$Selected.'>'.$StateType.'</option>';
|
---|
30 | }
|
---|
31 | $Output .= '</select></td>';
|
---|
32 |
|
---|
33 | // Translation group
|
---|
34 | if($GroupId == 0)
|
---|
35 | {
|
---|
36 | $Filter['Group'] = GetParameter('group', 0, true, true);
|
---|
37 | if($Filter['Group'] != 0)
|
---|
38 | {
|
---|
39 | if(isset($TranslationTree[$Filter['Group']]) == false) ErrorMessage('Překladová skupina dle zadaného Id neexistuje.');
|
---|
40 | $Table = $TranslationTree[$Filter['Group']]['TablePrefix'];
|
---|
41 | }
|
---|
42 | } else
|
---|
43 | {
|
---|
44 | $Filter['Group'] = $GroupId;
|
---|
45 | $Table = $TranslationTree[$Filter['Group']]['TablePrefix'];
|
---|
46 | }
|
---|
47 |
|
---|
48 | $Output .= '<td><select name="group" style="width: 80px">';
|
---|
49 | if($Filter['Group'] == 0) $Selected = ' selected="selected"';
|
---|
50 | else $Selected = '';
|
---|
51 | $Output .= '<option value="0"'.$Selected.'>Všechny</option>';
|
---|
52 | $DbResult = $this->Database->query('SELECT `Id`,`Name` FROM `Group` ORDER BY `Name`');
|
---|
53 | while($Group = $DbResult->fetch_assoc())
|
---|
54 | {
|
---|
55 | if($Group['Id'] == $Filter['Group']) $Selected = ' selected="selected"';
|
---|
56 | else $Selected = '';
|
---|
57 | $Output .= '<option value="'.$Group['Id'].'"'.$Selected.'>'.$Group['Name'].'</option>';
|
---|
58 | }
|
---|
59 | $Output .= '</select></td>';
|
---|
60 |
|
---|
61 | // Version
|
---|
62 | $Filter['Version'] = GetParameter('version', 0, true, true);
|
---|
63 | if($Filter['Version'] != 0)
|
---|
64 | {
|
---|
65 | $DbResult = $this->Database->query('SELECT `Id`, `BuildNumber`,`Version` FROM `ClientVersion` WHERE (`Imported` = 1) AND (`Id` ='.$Filter['Version'].')');
|
---|
66 | if($DbResult->num_rows > 0)
|
---|
67 | {
|
---|
68 | $DbRow = $DbResult->fetch_assoc();
|
---|
69 | $Filter['BuildNumber'] = $DbRow['BuildNumber'];
|
---|
70 | } else ErrorMessage('Zadaná verze klienta nenalezena');
|
---|
71 | }
|
---|
72 | $Output .= '<td><select name="version">';
|
---|
73 | if($Filter['Version'] == 0) $Selected = ' selected="selected"';
|
---|
74 | else $Selected = '';
|
---|
75 | $Output .= '<option value="0"'.$Selected.'>Všechny</option>';
|
---|
76 | $DbResult = $this->Database->query('SELECT `Id`, `BuildNumber`,`Version` FROM `ClientVersion` WHERE `Imported` = 1 ORDER BY `BuildNumber` DESC');
|
---|
77 | while($Version = $DbResult->fetch_assoc())
|
---|
78 | {
|
---|
79 | if($Version['Id'] == $Filter['Version']) $Selected = ' selected="selected"';
|
---|
80 | else $Selected = '';
|
---|
81 | $Output .= '<option value="'.$Version['Id'].'"'.$Selected.'>'.$Version['Version'].'</option>';
|
---|
82 | }
|
---|
83 | $Output .= '</select></td>';
|
---|
84 | if($Filter['Version'] != 0) $VersionFilter = ' AND (`VersionStart` <= '.$Filter['BuildNumber'].') AND (`VersionEnd` >= '.$Filter['BuildNumber'].')';
|
---|
85 | else $VersionFilter = '';
|
---|
86 | //else $Filter['SQL'] .= ' AND '; DISTINCT(Entry)
|
---|
87 |
|
---|
88 | // Language
|
---|
89 | $Filter['Language'] = GetParameter('lang', 0, true, true);
|
---|
90 | $Output .= '<td><select name="lang">';
|
---|
91 | if($Filter['Language'] == 0) $Selected = ' selected="selected"';
|
---|
92 | else $Selected = '';
|
---|
93 | $Output .= '<option value="0"'.$Selected.'>Všechny</option>';
|
---|
94 | $DbResult = $this->Database->query('SELECT `Id`, `Name` FROM `Language` WHERE `Enabled` = 1 ORDER BY `Name`');
|
---|
95 | while($Language = $DbResult->fetch_assoc())
|
---|
96 | {
|
---|
97 | if($Language['Id'] == $Filter['Language']) $Selected = ' selected="selected"';
|
---|
98 | else $Selected = '';
|
---|
99 | $Output .= '<option value="'.$Language['Id'].'"'.$Selected.'>'.$Language['Name'].'</option>';
|
---|
100 | }
|
---|
101 | $Output .= '</select></td>';
|
---|
102 | if($Filter['Language'] != 0) $LanguageFilter = ' AND (`T`.`Language` = '.$Filter['Language'].')';
|
---|
103 | else $LanguageFilter = '';
|
---|
104 |
|
---|
105 | // User
|
---|
106 | $Filter['User'] = GetParameter('user', 0, true, true);
|
---|
107 | $Output .= '<td><select name="user" style="width: 80px">';
|
---|
108 | if($Filter['User'] == 0) $Selected = ' selected="selected"';
|
---|
109 | else $Selected = '';
|
---|
110 | $Output .= '<option value="0"'.$Selected.'>Všichni</option>';
|
---|
111 | $DbResult = $this->Database->query('SELECT `Id`, `Name` FROM `User` ORDER BY `Name`');
|
---|
112 | while($User = $DbResult->fetch_assoc())
|
---|
113 | {
|
---|
114 | if($User['Id'] == $Filter['User']) $Selected = ' selected="selected"';
|
---|
115 | else $Selected = '';
|
---|
116 | $Output .= '<option value="'.$User['Id'].'"'.$Selected.'>'.$User['Name'].'</option>';
|
---|
117 | }
|
---|
118 | $Output .= '</select></td>';
|
---|
119 | if($Filter['User'] != 0) $UserFilter = ' AND (`User` = '.$Filter['User'].')';
|
---|
120 | else $UserFilter = '';
|
---|
121 |
|
---|
122 | // Words
|
---|
123 | $Filter['Text'] = GetParameter('text', '', false, true);
|
---|
124 | $Output .= '<td><input name="text" type="text" style="width: 60px;" value="'.htmlentities($Filter['Text']).'"></td>';
|
---|
125 | if($Filter['Text'] != '')
|
---|
126 | {
|
---|
127 | $Items = array('(`T`.`ID` LIKE "%'.$Filter['Text'].'%")', '(`T`.`Entry` LIKE "%'.$Filter['Text'].'%")');
|
---|
128 | if($Filter['Group'] != 0)
|
---|
129 | foreach($TranslationTree[$Filter['Group']]['Items'] as $GroupItem)
|
---|
130 | if($GroupItem['Visible'] == 1)
|
---|
131 | $Items[] = '(`T`.`'.$GroupItem['Column'].'` LIKE "%'.$Filter['Text'].'%")';
|
---|
132 | $Filter['SQL'] .= ' AND ('.implode(' OR ', $Items).')';
|
---|
133 | }
|
---|
134 |
|
---|
135 | // Entry
|
---|
136 | $Filter['Entry'] = GetParameter('entry', '', false, true);
|
---|
137 | $Output .= '<td><input name="entry" type="text" style="width: 60px;" value="'.htmlentities($Filter['Entry']).'"></td>';
|
---|
138 | if($Filter['Entry'] != '')
|
---|
139 | {
|
---|
140 | $Filter['SQL'] .= ' AND (`Entry` = "'.$Filter['Entry'].'")';
|
---|
141 | }
|
---|
142 |
|
---|
143 | if($Filter['Group'] != 0)
|
---|
144 | {
|
---|
145 | $WithoutAlter = ' AND NOT EXISTS(SELECT 1 FROM `'.$Table.'` AS `Sub` WHERE '.
|
---|
146 | '(`Sub`.`Language` <> '.$this->System->Config['OriginalLanguage'].')'.$LanguageFilter.
|
---|
147 | ' AND (`Sub`.`Entry` = `T`.`Entry`) AND (`Sub`.`ID` != `T`.`ID`) AND (`Sub`.`Complete` = 1) AND '.
|
---|
148 | '(`Sub`.`VersionStart` = `T`.`VersionStart`) AND (`Sub`.`VersionEnd` = `T`.`VersionEnd`) LIMIT 1 ) ';
|
---|
149 | foreach($TranslationTree[$Filter['Group']]['Items'] as $GroupItem)
|
---|
150 | if($GroupItem['Visible'] == 1) {
|
---|
151 | $ItemsVar[] = 'LENGTH(`T`.`'.$GroupItem['Column'].'`) - LENGTH( REPLACE( `T`.`'.$GroupItem['Column'].'`, \'$\', \'\' ) ) '.
|
---|
152 | ' < ('.
|
---|
153 | 'SELECT LENGTH(`Sub`.`'.$GroupItem['Column'].'`) - LENGTH( REPLACE( `Sub`.`'.$GroupItem['Column'].'`, \'$\', \'\' ) ) FROM `'.$Table.'` AS `Sub` WHERE '.
|
---|
154 | ' `Sub`.`Entry` = `T`.`Entry` AND `Sub`.`Language` = '.$this->System->Config['OriginalLanguage'].' AND '.
|
---|
155 | '`Sub`.`VersionStart` = `T`.`VersionStart` AND `Sub`.`VersionEnd` = `T`.`VersionEnd` LIMIT 1 '.
|
---|
156 | ')';
|
---|
157 | }
|
---|
158 | if($Filter['State'] == 0) $Filter['SQL'] .= $UserFilter.$VersionFilter.'';
|
---|
159 | else if($Filter['State'] == 1) $Filter['SQL'] .= $VersionFilter.' AND (`T`.`Language` = '.$this->System->Config['OriginalLanguage'].') '.
|
---|
160 | 'AND NOT EXISTS(SELECT 1 FROM `'.$Table.'` AS `Sub` WHERE '.
|
---|
161 | '(`Sub`.`Language` = '.$Filter['Language'].')'.$UserFilter.
|
---|
162 | ' AND (`Sub`.`Entry` = `T`.`Entry`) AND (`Sub`.`Complete` = 1) AND '.
|
---|
163 | '(`Sub`.`VersionStart` = `T`.`VersionStart`) AND (`Sub`.`VersionEnd` = `T`.`VersionEnd`))';
|
---|
164 | else if($Filter['State'] == 2) $Filter['SQL'] .= $UserFilter.$LanguageFilter.$VersionFilter.' AND (`T`.`Complete` = 1)';
|
---|
165 | else if($Filter['State'] == 3) $Filter['SQL'] .= $UserFilter.$LanguageFilter.$VersionFilter.' AND (`T`.`Language` != '.$this->System->Config['OriginalLanguage'].
|
---|
166 | ') AND (`T`.`Complete` = 0)';
|
---|
167 | else if($Filter['State'] == 4) $Filter['SQL'] .= $VersionFilter.' AND (`T`.`Language` = '.$this->System->Config['OriginalLanguage'].')';
|
---|
168 | else if($Filter['State'] == 5) $Filter['SQL'] .= $UserFilter.$VersionFilter.$WithoutAlter.
|
---|
169 | ' AND (`T`.`Language` != '.$this->System->Config['OriginalLanguage'].
|
---|
170 | ') AND (`T`.`Complete` = 0)'.
|
---|
171 | '';
|
---|
172 | else if($Filter['State'] == 6) {
|
---|
173 | $Filter['SQL'] .= $UserFilter.$VersionFilter.' AND (`T`.`Complete` = 1) AND `T`.`Language` != '.$this->System->Config['OriginalLanguage'];
|
---|
174 | $Filter['SQL'] .= ' AND ('.implode(' OR ', $ItemsVar).') ';
|
---|
175 | }
|
---|
176 | else if($Filter['State'] == 7) {
|
---|
177 | $Filter['SQL'] .= $UserFilter.$VersionFilter.' AND (`T`.`Complete` = 1) AND `T`.`Language` != '.$this->System->Config['OriginalLanguage'];
|
---|
178 | $Filter['SQL'] .= ' '. $WithoutAlter;
|
---|
179 | $Filter['SQL'] .= ' AND ('.implode(' OR ', $ItemsVar).') ';
|
---|
180 | }
|
---|
181 | }
|
---|
182 |
|
---|
183 | /*
|
---|
184 | // Ownership
|
---|
185 | if(array_key_exists('owner', $_GET) and is_numeric($_GET['owner'])) $Filter['Owner'] = $_GET['owner'];
|
---|
186 | else $Filter['Owner'] = 0;
|
---|
187 | $Output .= ' <td><select name="owner">';
|
---|
188 | if($Filter['Owner'] == 0) $Selected = ' selected="selected"';
|
---|
189 | else $Selected = '';
|
---|
190 | $Output .= '<option value="0"'.$Selected.'>Všech</option>';
|
---|
191 | if($Filter['Owner'] == 1) $Selected = ' selected="selected"';
|
---|
192 | else $Selected = '';
|
---|
193 | $Output .= '<option value="1"'.$Selected.'>Překladatelův tým</option>';
|
---|
194 | if($Filter['Owner'] == 2) $Selected = ' selected="selected"';
|
---|
195 | else $Selected = '';
|
---|
196 | $Output .= '<option value="2"'.$Selected.'>Překladatele</option>';
|
---|
197 | $Output .= '</select></td>';
|
---|
198 | if(($Filter['Owner'] == 2) AND ($Filter['User'] != 0)) $Filter['SQL'] .= ' AND (`User` = '.$Filter['User'].')';
|
---|
199 | */
|
---|
200 |
|
---|
201 | $Output .= '<td><input type="submit" value="Filtrovat"/></td>';
|
---|
202 | $Output .= '</tr></table>';
|
---|
203 | $Output .= '</form><br/>';
|
---|
204 | $Filter['Output'] = $Output;
|
---|
205 | return($Filter);
|
---|
206 | }
|
---|
207 |
|
---|
208 | function ShowTranslationList($Filter)
|
---|
209 | {
|
---|
210 | global $TranslationTree;
|
---|
211 |
|
---|
212 | $Output = $Filter['Output'];
|
---|
213 | $Table = $TranslationTree[$Filter['Group']]['TablePrefix'];
|
---|
214 |
|
---|
215 | $Query = 'SELECT `T`.`ID`, `T`.`Entry`, `T`.`VersionStart`, `T`.`VersionEnd`, '.
|
---|
216 | '`T`.`'.$TranslationTree[$Filter['Group']]['Items'][0]['Column'].'`, '.
|
---|
217 | '`User`.`Name` AS `UserName`, `User`.`ID` AS `UserId`, '.
|
---|
218 | '`Language`.`Name` AS `LanguageName`, `TS`.`Version` AS `VersionStartText`, `TE`.`Version` AS `VersionEndText` '.
|
---|
219 | 'FROM `'.$Table.'` AS `T` '.
|
---|
220 | 'LEFT JOIN `User` ON `User`.`ID` = `T`.`User` '.
|
---|
221 | 'LEFT JOIN `Language` ON `Language`.`ID` = `T`.`Language` '.
|
---|
222 | 'LEFT JOIN `ClientVersion` AS `TS` ON `TS`.`BuildNumber` = `T`.`VersionStart` '.
|
---|
223 | 'LEFT JOIN `ClientVersion` AS `TE` ON `TE`.`BuildNumber` = `T`.`VersionEnd` '.
|
---|
224 | 'WHERE 1 '.$Filter['SQL'];
|
---|
225 |
|
---|
226 | // Get total item count
|
---|
227 | $DbResult = $this->Database->query('SELECT COUNT(*) FROM ('.$Query.') AS `TT`');
|
---|
228 | $DbRow = $DbResult->fetch_row();
|
---|
229 | $PageList = GetPageList($DbRow[0]);
|
---|
230 |
|
---|
231 | $Output .= $PageList['Output'];
|
---|
232 | $TableColumns = array(
|
---|
233 | array('Name' => 'ID', 'Title' => 'Číslo'),
|
---|
234 | array('Name' => 'Entry', 'Title' => 'Položka'),
|
---|
235 | array('Name' => $TranslationTree[$Filter['Group']]['Items'][0]['Column'], 'Title' => 'Název'),
|
---|
236 | array('Name' => 'VersionStart', 'Title' => 'Verze'),
|
---|
237 | array('Name' => 'LanguageName', 'Title' => 'Jazyk'),
|
---|
238 | array('Name' => 'UserName', 'Title' => 'Překladatel'),
|
---|
239 | );
|
---|
240 |
|
---|
241 | $Order = GetOrderTableHeader($TableColumns, 'VersionStart', 1);
|
---|
242 | $Output .= '<table class="BaseTable">'.
|
---|
243 | $Order['Output'];
|
---|
244 |
|
---|
245 | $DbResult = $this->Database->query($Query.' '.$Order['SQL'].' '.$PageList['SQLLimit']);
|
---|
246 | while($Line = $DbResult->fetch_assoc())
|
---|
247 | {
|
---|
248 | $Output .= '<tr><td><a href="form.php?group='.$Filter['Group'].'&ID='.$Line['ID'].'">'.$Line['ID'].'</a></td><td>'.$Line['Entry'].'</td>'.
|
---|
249 | '<td>'.htmlspecialchars($Line[$TranslationTree[$Filter['Group']]['Items'][0]['Column']]).'</td>'.
|
---|
250 | '<td>'.$Line['VersionStartText'].'-'.$Line['VersionEndText'].'</td>'.
|
---|
251 | '<td>'.$Line['LanguageName'].'</td>'.
|
---|
252 | '<td><a href="user.php?user='.$Line['UserId'].'">'.$Line['UserName'].'</a></td>';
|
---|
253 | '</tr>';
|
---|
254 | }
|
---|
255 | $Output .= '</table>'.
|
---|
256 | $PageList['Output'];
|
---|
257 | return($Output);
|
---|
258 | }
|
---|
259 |
|
---|
260 | function ShowGroupList($Filter)
|
---|
261 | {
|
---|
262 | global $TranslationTree;
|
---|
263 |
|
---|
264 | $Output = $Filter['Output'];
|
---|
265 |
|
---|
266 | $Output .= '<table class="BaseTable"><tr><th>Skupina</th><th>Počet</th></tr>';
|
---|
267 | $Total = 0;
|
---|
268 | foreach($TranslationTree as $Group)
|
---|
269 | if($Group['TablePrefix'] != '')
|
---|
270 | {
|
---|
271 | $Filter = $this->ShowFilter($Group['Id']);
|
---|
272 | $ID = $this->Database->query('SELECT COUNT(*) FROM `'.$Group['TablePrefix'].'` AS `T` WHERE 1 '.$Filter['SQL']);
|
---|
273 | $Line = $ID->fetch_row();
|
---|
274 | if ($Line[0] <> '0')
|
---|
275 | $Output .= '<tr><td><a href="?group='.$Group['Id'].'">'.$Group['Name'].'</td><td>'.$Line[0].'</a></tr>';
|
---|
276 | $Total += $Line[0];
|
---|
277 | }
|
---|
278 | $Output .= '<tr><td><strong>Celkem</strong></td><td><strong>'.$Total.'</strong></td></tr>'.
|
---|
279 | '</table>';
|
---|
280 | return($Output);
|
---|
281 | }
|
---|
282 |
|
---|
283 | function ShowGroupTypeList()
|
---|
284 | {
|
---|
285 | $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Group`');
|
---|
286 | $DbRow = $DbResult->fetch_row();
|
---|
287 | $PageList = GetPageList($DbRow[0]);
|
---|
288 | $Output = '<h3>Seznam překladových skupin</h3>'.
|
---|
289 | $PageList['Output'];
|
---|
290 |
|
---|
291 | $Output .= '<table class="BaseTable">';
|
---|
292 | $TableColumns = array(
|
---|
293 | array('Name' => 'Name', 'Title' => 'Jméno'),
|
---|
294 | array('Name' => 'SourceType', 'Title' => 'Typ zdroje'),
|
---|
295 | array('Name' => '', 'Title' => 'Zdroje'),
|
---|
296 | array('Name' => 'LastImport', 'Title' => 'Datum posledního importu'),
|
---|
297 | array('Name' => 'LastVersion', 'Title' => 'Verze posledního importu'),
|
---|
298 | );
|
---|
299 | if($this->System->User->Licence(LICENCE_ADMIN))
|
---|
300 | $TableColumns[] = array('Name' => '', 'Title' => 'Akce');
|
---|
301 |
|
---|
302 | $Order = GetOrderTableHeader($TableColumns, 'Name', 0);
|
---|
303 | $Output .= $Order['Output'];
|
---|
304 |
|
---|
305 | $DbResult = $this->Database->query('SELECT * FROM `Group`'.$Order['SQL'].$PageList['SQLLimit']);
|
---|
306 | while($Group = $DbResult->fetch_assoc())
|
---|
307 | {
|
---|
308 | $Output .= '<tr><td><a href="?group='.$Group['Id'].'&action=filter">'.$Group['Name'].'</a></td><td>'.$Group['SourceType'].'</td><td>';
|
---|
309 | if($Group['MangosTable'] != '') $Output .= $Group['MangosTable'].'.sql ';
|
---|
310 | if($Group['DBCFileName'] != '') $Output .= $Group['DBCFileName'].'.dbc ';
|
---|
311 | if($Group['LuaFileName'] != '') $Output .= $Group['LuaFileName'].'.lua ';
|
---|
312 | $Output .= '</td><td><a title="Změny po posledním importu u vybrané překladové skupiny" href="log.php?group='.
|
---|
313 | $Group['Id'].'&type=11">'.HumanDate($Group['LastImport']).'</a></td><td><a href="'.$this->System->Link('/client-version/?action=item&id='.GetVersionWOWId($Group['LastVersion'])).'">'.GetVersionWOW($Group['LastVersion']).'</a></td>';
|
---|
314 | if($this->System->User->Licence(LICENCE_ADMIN))
|
---|
315 | $Output .= '<td><a href="?action=groupdelete&id='.$Group['Id'].'">Smazat</a></td>';
|
---|
316 | $Output .= '</tr>';
|
---|
317 |
|
---|
318 | }
|
---|
319 | $Output .= '</table>'.
|
---|
320 | '<br /><a title="Záznam změn po importu" href="log.php?type=11">Záznam změn v textech při importu</a><br/>';
|
---|
321 | if($this->System->User->Licence(LICENCE_ADMIN)) $Output .= '<a href="?action=groupadd">Přidat překladovou skupinu</a>';
|
---|
322 | return($Output);
|
---|
323 | }
|
---|
324 |
|
---|
325 | function ShowMenu()
|
---|
326 | {
|
---|
327 | global $TranslationTree;
|
---|
328 |
|
---|
329 | $GroupId = GetParameter('group', 0, true);
|
---|
330 | if($GroupId == 0) $Output = ShowMessage('Skupina nenalezena', MESSAGE_CRITICAL);
|
---|
331 | else {
|
---|
332 | $Table = $TranslationTree[$GroupId]['TablePrefix'];
|
---|
333 |
|
---|
334 | $Output = '<h3>Základní filtrování textů</h3><br/>'.
|
---|
335 | '<table class="BaseTable"><tr><th>Odkaz</th><th>Popis</th></tr>'.
|
---|
336 | '<tr><td><a title="Všechny dostupné texty ve skupině" href="?group='.$GroupId.'&state=4">Všechny</a></td>'.
|
---|
337 | '<td>Zobrazit všechny dostupné anglické texty ve skupině.</td></tr>'.
|
---|
338 | '<tr><td><a title="Přeložené texty, můžete zde hlasovat, nebo text opravovat" href="?group='.$GroupId.'&state=2">Přeložené</a></td>'.
|
---|
339 | '<td>Zobrazit pouze již přeložené texty.</td></tr>'.
|
---|
340 | '<tr><td><a title="Nepřeložené texty" href="?group='.$GroupId.'&state=1">Nepřeložené</a></td>'.
|
---|
341 | '<td>Dosud nepřeložené texty, které je potřeba přeložit.</td></tr>'.
|
---|
342 | '<tr><td><a title="Nedokončené texty" href="?group='.$GroupId.'&state=3">Nedokončené</a></td>'.
|
---|
343 | '<td>Texty označené jako rozpracované.</td></tr>';
|
---|
344 |
|
---|
345 | if($this->System->User->Licence(LICENCE_USER))
|
---|
346 | {
|
---|
347 | $Output .= '<tr><td><a title="Nedokončené texty" href="?group='.$GroupId.'&state=3&user='.$this->System->User->Id.'">Moje nedokončené</a></td>
|
---|
348 | <td>Nedokončené texty přihlášeného uživatele</td></tr>
|
---|
349 | <tr><td><a title="Přeložené texty přihlášeného uživatele" href="?group='.$GroupId.'&state=2&user='.$this->System->User->Id.'">Moje přeložené</a></td>
|
---|
350 | <td>Přeložené texty přihlášeného uživatele</td></tr>';
|
---|
351 | }
|
---|
352 |
|
---|
353 | $Output .= '<tr><td><form action="?group='.$GroupId.'&entry=" method="post"><div>'.
|
---|
354 | '<input type="text" name="text" size="8" />'.
|
---|
355 | '<input type="submit" value="Hledat" />'.
|
---|
356 | '</div></form>'.
|
---|
357 | '</td><td>Vyhledat pomocí textu</td></tr>';
|
---|
358 |
|
---|
359 | $Output .= '<tr><td><form action="?group='.$GroupId.'&text=" method="post"><div>'.
|
---|
360 | '<input type="text" name="entry" size="8" />'.
|
---|
361 | '<input type="submit" value="Hledat" />'.
|
---|
362 | '</div></form>'.
|
---|
363 | '</td><td>Zobrazit podle ID textu v databázi MaNGOSu</td></tr>';
|
---|
364 |
|
---|
365 | $Output .= '</table>';
|
---|
366 | }
|
---|
367 | return($Output);
|
---|
368 | }
|
---|
369 |
|
---|
370 | function ShowGroupAdd()
|
---|
371 | {
|
---|
372 | if($this->System->User->Licence(LICENCE_ADMIN))
|
---|
373 | {
|
---|
374 | $Output = '<h3>Vložení nové překladové skupiny</h3>'.
|
---|
375 | '<form action="?action=groupaddfinish" method="post">'.
|
---|
376 | '<table>'.
|
---|
377 | '<tr><td>Název:</td><td><input type="text" name="Name"/></td></tr>'.
|
---|
378 | '<tr><td>Název tabulky v databázi:</td><td>Text<input type="text" name="TablePrefix"/></td></tr>'.
|
---|
379 | '<tr><td colspan="2"><input type="submit" name="add" value="Přidat"/></td></tr>'.
|
---|
380 | '</table></form>';
|
---|
381 | } else $Output = ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
|
---|
382 | return($Output);
|
---|
383 | }
|
---|
384 |
|
---|
385 | function ShowGroupAddFinish()
|
---|
386 | {
|
---|
387 | if($this->System->User->Licence(LICENCE_ADMIN))
|
---|
388 | {
|
---|
389 | $TableName = 'Text'.$_POST['TablePrefix'];
|
---|
390 | $DbResult = $this->System->Database->select('Group', 'Id', 'TablePrefix="'.$TableName.'"');
|
---|
391 | if($DbResult->num_rows == 0)
|
---|
392 | {
|
---|
393 |
|
---|
394 | $this->System->Database->query('CREATE TABLE IF NOT EXISTS `'.$TableName.'` (
|
---|
395 | `ID` int(11) NOT NULL AUTO_INCREMENT,
|
---|
396 | `Entry` int(11) NOT NULL,
|
---|
397 | `Name` varchar(255) NOT NULL,
|
---|
398 | `Language` int(11) NOT NULL DEFAULT "0",
|
---|
399 | `User` int(11) DEFAULT NULL,
|
---|
400 | `Complete` int(11) NOT NULL,
|
---|
401 | `CompleteParts` int(11) NOT NULL,
|
---|
402 | `Take` int(11) DEFAULT NULL,
|
---|
403 | `VersionStart` int(11) NOT NULL,
|
---|
404 | `VersionEnd` int(11) NOT NULL,
|
---|
405 | `ModifyTime` datetime NOT NULL,
|
---|
406 | PRIMARY KEY (`ID`),
|
---|
407 | KEY `Entry` (`Entry`),
|
---|
408 | KEY `User` (`User`),
|
---|
409 | KEY `Take` (`Take`),
|
---|
410 | KEY `Language` (`Language`),
|
---|
411 | KEY `Complete` (`Complete`),
|
---|
412 | KEY `VersionStart` (`VersionStart`),
|
---|
413 | KEY `VersionEnd` (`VersionEnd`),
|
---|
414 | KEY `ModifyTime` (`ModifyTime`)
|
---|
415 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;');
|
---|
416 |
|
---|
417 | $this->System->Database->query('ALTER TABLE `'.$TableName.'`
|
---|
418 | ADD CONSTRAINT `'.$TableName.'_ibfk_1` FOREIGN KEY (`Language`) REFERENCES `Language` (`Id`),
|
---|
419 | ADD CONSTRAINT `'.$TableName.'_ibfk_2` FOREIGN KEY (`User`) REFERENCES `User` (`ID`),
|
---|
420 | ADD CONSTRAINT `'.$TableName.'_ibfk_3` FOREIGN KEY (`Take`) REFERENCES `'.$TableName.'` (`ID`);');
|
---|
421 | $DbResult = $this->System->Database->insert('Group', array('Name' => $_POST['Name'],
|
---|
422 | 'TablePrefix' => $TableName, 'PrimaryKeyItem' => 'Entry'));
|
---|
423 | $Group = $this->System->Database->insert_id;
|
---|
424 | $this->System->Database->insert('GroupItem', array('Group' => $Group,
|
---|
425 | 'Name' => 'Jméno', 'Column' => 'Name', 'Visible' => 1));
|
---|
426 | $Output = ShowMessage('Překladová skupina vytvořena', MESSAGE_INFORMATION);
|
---|
427 | } else $Output = ShowMessage('Překladová skupina '.$TableName.' již existuje', MESSAGE_CRITICAL);
|
---|
428 | $Output .= $this->ShowGroupTypeList();
|
---|
429 | } else $Output = ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
|
---|
430 | return($Output);
|
---|
431 | }
|
---|
432 |
|
---|
433 | function ShowGroupDelete()
|
---|
434 | {
|
---|
435 | if($this->System->User->Licence(LICENCE_ADMIN))
|
---|
436 | {
|
---|
437 | $DbResult = $this->System->Database->select('Group', '*', 'Id='.$_GET['id']);
|
---|
438 | if($DbResult->num_rows == 1)
|
---|
439 | {
|
---|
440 | $Group = $DbResult->fetch_assoc();
|
---|
441 | $this->Database->query('DROP TABLE `'.$Group['TablePrefix'].'`');
|
---|
442 | $this->Database->query('DELETE FROM `GroupItem` WHERE `Group`='.$Group['Id']);
|
---|
443 | $this->Database->query('DELETE FROM `Group` WHERE `Id`='.$Group['Id']);
|
---|
444 | $Output = ShowMessage('Překladová skupina '.$Group['Name'].' smazána', MESSAGE_INFORMATION);
|
---|
445 | } else $Output = ShowMessage('Překladová skupina nenalezena', MESSAGE_CRITICAL);
|
---|
446 | } else $Output = ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
|
---|
447 | $Output .= $this->ShowGroupTypeList();
|
---|
448 | return($Output);
|
---|
449 | }
|
---|
450 |
|
---|
451 | function Show()
|
---|
452 | {
|
---|
453 | $this->Title = T('Translation groups');
|
---|
454 | $Action = GetParameter('action', '');
|
---|
455 | if($Action == 'filter') $Output = $this->ShowMenu();
|
---|
456 | else if($Action == 'grouplist') $Output = $this->ShowGroupTypeList();
|
---|
457 | else if($Action == 'groupadd') $Output = $this->ShowGroupAdd();
|
---|
458 | else if($Action == 'groupdelete') $Output = $this->ShowGroupDelete();
|
---|
459 | else if($Action == 'groupaddfinish') $Output = $this->ShowGroupAddFinish();
|
---|
460 | else
|
---|
461 | {
|
---|
462 | $Filter = $this->ShowFilter();
|
---|
463 | if($Filter['Group'] > 0) $Output = $this->ShowTranslationList($Filter);
|
---|
464 | else $Output = $this->ShowGroupList($Filter);
|
---|
465 | }
|
---|
466 | return($Output);
|
---|
467 | }
|
---|
468 | }
|
---|