source: trunk/TranslationList.php@ 432

Last change on this file since 432 was 432, checked in by george, 15 years ago
  • Upraveno: Raději zobrazovat ve verzích nejen verze ostatních, ale i vlastní.
File size: 18.5 KB
Line 
1<?php
2
3include('includes/global.php');
4
5function WriteQuests($Query)
6{
7 global $Database, $TranslationTree, $GroupId, $Table, $Action;
8
9 // Get total item count
10 $DbResult = $Database->SQLCommand('SELECT COUNT(*) FROM ('.$Query.') AS `T`');
11 $DbRow = mysql_fetch_row($DbResult);
12 $PageList = GetPageList($DbRow[0]);
13
14 echo($PageList['Output']);
15
16 $TableColumns = array(
17 array('Name' => 'ID', 'Title' => 'Pořadové číslo'),
18 array('Name' => 'Entry', 'Title' => 'Identifikační číslo'),
19 array('Name' => $TranslationTree[$GroupId]['Items'][0]['Column'], 'Title' => 'Název'),
20 array('Name' => 'VersionStart', 'Title' => 'Verze'),
21 );
22 if($Action == 'selection') $TableColumns[] = array('Name' => 'CountQuests', 'Title' => 'Výskyt');
23 else if($Action == 'connexion') $TableColumns[] = array('Name' => '', 'Title' => 'Již přeložil');
24 else if($Action <> 'notran') $TableColumns[] = array('Name' => 'UserName', 'Title' => 'Překladatel');
25
26 $Order = GetOrderTableHeader($TableColumns, 'VersionStart', 1);
27 echo('<table class="BaseTable">');
28 echo($Order['Output']);
29
30 $DbResult = $Database->SQLCommand($Query.' '.$Order['SQL'].' '.$PageList['SQLLimit']);
31 while($Line = mysql_fetch_assoc($DbResult))
32 {
33 echo('<tr><td><a href="form.php?group='.$GroupId.'&amp;ID='.$Line['ID'].'">'.$Line['ID'].'</a></td><td>'.$Line['Entry'].'</td>'.
34 '<td>'.htmlspecialchars($Line[$TranslationTree[$GroupId]['Items'][0]['Column']]).'</td>'.
35 '<td>'.GetVersionWOW($Line['VersionStart']).'-'.GetVersionWOW($Line['VersionEnd']).'</td>');
36 if($Action == 'selection') echo('<td>'.$Line['CountQuest'].'</td>');
37 else if($Action <> 'notran') echo('<td>'.$Line['UserName'].'</td>');
38 echo('</tr>');
39 }
40 echo('</table>');
41
42 echo($PageList['Output']);
43}
44
45function Nontranslated()
46{
47 global $GroupId, $Table;
48
49 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> -> '.
50 '<a title="Zde můžete začít překládat" href="?group='.$GroupId.'&amp;action=selection">Nepřeložené texty</a> - > '.
51 '<strong>Vypsání nepřeložených textů s limitem na stránku</strong><br /><br />');
52
53 WriteQuests('SELECT * FROM `'.$Table.'` AS `items` WHERE (`items`.`Language` = 0) AND NOT EXISTS(SELECT 1 FROM `'.$Table.'` AS `sub` WHERE (`sub`.`Language` <> 0) AND (`sub`.`Entry` = `items`.`Entry`) AND (`sub`.`Complete`=1) AND (`sub`.`VersionStart` = `items`.`VersionStart`) AND (`sub`.`VersionEnd` = `items`.`VersionEnd`))');
54}
55
56function Connexion()
57{
58 global $GroupId, $Table, $BuildNumber_max, $Database;
59
60 if(array_key_exists('connexion_id', $_GET)) $_SESSION['connexion_id'] = $_GET['connexion_id'];
61 if(array_key_exists('connexion_id', $_SESSION) and is_numeric($_SESSION['connexion_id']))
62 {
63 $DbResult = $Database->SQLCommand('SELECT `Name` FROM `connexion` WHERE `Id` = '.$_SESSION['connexion_id']);
64 if(mysql_num_rows($DbResult) > 0)
65 {
66 $Line = mysql_fetch_assoc($DbResult);
67 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
68 <a title="Zde je seznam souvislostí" href="?group='.$GroupId.'&amp;action=connexion">Souvislosti</a> - >
69 <strong>Vypsání souvislostí ze skupiny '.$Line['Name'].'</strong><br /><br />');
70
71 WriteQuests('SELECT *, (SELECT `Sub`.`User` FROM `'.$Table.'` AS `Sub` WHERE (`Sub`.`Entry` = `'.$Table.'`.`Entry`) AND (`Language` <> 0) LIMIT 1) AS `UserID`, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `UserID`) AS `UserName` FROM `'.$Table.'` WHERE (`Language` = 0) AND (`Entry` IN(SELECT `Entry` FROM `connexion_item` WHERE `connexion` = '.$_SESSION['connexion_id'].')) AND (`VersionEnd` = "'.$BuildNumber_max.'") AND (`VersionEnd` = "'.$BuildNumber_max.'")');
72 } else echo('Chybné id');
73 } else echo('Chybné id');
74}
75
76function ConnexionList()
77{
78 global $GroupId, $Table, $BuildNumber_max, $Database;
79
80 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> -> '.
81 '<a title="Zde je seznam souvislostí" href="?group='.$GroupId.'&amp;action=connexion">Souvislosti</a> - > '.
82 '<strong>Vypsání souvislostí</strong><br /><br />');
83 echo('<table class="BaseTable"><tr><th>Pořadové číslo</th><th>Název</th>');
84 echo('</tr>');
85 $ID = $Database->SQLCommand('SELECT * FROM `connexion` WHERE `Group` = '.$GroupId);
86 while($Line = mysql_fetch_assoc($ID))
87 {
88 echo('<tr><td><a href="?group='.$GroupId.'&amp;action=connexion&amp;connexion_id='.$Line['Id'].'">'.$Line['Id'].'</a></td>
89 <td>'.$Line['Name'].'</td>');
90 }
91 echo ('</table>');
92}
93
94function Noncomplete()
95{
96 global $GroupId, $Table, $BuildNumber_max, $Database;
97
98 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
99 <a title="Zde můžete začít překládat" href="?group='.$GroupId.'&amp;action=selection">nedokončené texty</a> - >
100 <strong>Vypsání nedokončených textů s limitem na stránku</strong><br /><br />');
101
102 WriteQuests('SELECT `items`.*, `User`.`Name` AS `UserName` FROM `'.$Table.'` AS `items` JOIN `User` ON `User`.`ID` = `items`.`User` WHERE (`items`.`Language` = 0) AND
103 NOT EXISTS(SELECT 1 FROM `'.$Table.'` AS `sub` WHERE (`sub`.`Language` <> 0) AND (`sub`.`Entry` = `items`.`Entry`) AND (`sub`.`Complete` = 1) AND (`VersionEnd` = '.$BuildNumber_max.')) AND
104 EXISTS(SELECT 1 FROM `'.$Table.'` AS `sub2` WHERE (`sub2`.`Language` <> 0) AND (`sub2`.`Entry` = `items`.`Entry`) AND (`sub2`.`Complete` = 0) AND (`VersionEnd` = '.$BuildNumber_max.')) AND (`items`.`VersionEnd` = '.$BuildNumber_max.')');
105}
106
107function Translate()
108{
109 global $GroupId, $Table, $BuildNumber_max, $Database;
110
111 echo('<a title="Zobrazit překlady podle vlasního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr překladů</a> ->
112 <a title="Přeložené texty, můžete zde hlasovat, nebo opravovat texty" href="?group='.$GroupId.'&amp;action=Translate">Přeložené texty</a><br /><br />');
113
114 WriteQuests('SELECT `'.$Table.'`.*, `User`.`Name` AS `UserName` FROM `'.$Table.'` JOIN `User` ON `User`.`ID` = `'.$Table.'`.`User` WHERE (`'.$Table.'`.`Language` <> 0) AND (`'.$Table.'`.`Complete` = 1)');
115}
116
117function UserTranslated()
118{
119 global $GroupId, $Table, $User;
120
121 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
122 <a title="Přeložené questy přilášeného uživatele" href="?group='.$GroupId.'&amp;action=my">Moje překlady</a><br /><br />');
123 WriteQuests('SELECT `'.$Table.'`.*, `User`.`Name` AS `UserName` FROM `'.$Table.'` JOIN `User` ON `User`.`id` = `'.$Table.'`.`User` WHERE `'.$Table.'`.`User` = '.$User->Id);
124}
125
126function UserUnfinished()
127{
128 global $GroupId, $Table, $User;
129
130 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
131 <a title="Nedokončené texty" href="?group='.$GroupId.'&amp;action=mydevelop">Rozepsané překlady</a><br /><br />');
132 WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE `User` = '.$User->Id.' AND `Complete` = 0');
133}
134
135function UserSelected()
136{
137 global $GroupId, $Table;
138
139 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
140 <strong>Vypsání textů od určitých uživatelů</strong><br /><br />');
141 if(array_key_exists('users', $_POST)) $users = $_POST['users'];
142 else $users = array();
143
144 $WhereUsers = '';
145 foreach($users as $Index => $User)
146 {
147 if($WhereUsers <> '') $WhereUsers .= ' OR `User` = '.$User;
148 else $WhereUsers .= ' `User` = '.$User;
149 }
150 if($WhereUsers == '') $WhereUsers = '0';
151
152 WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE '.$WhereUsers);
153}
154
155function UserAll()
156{
157 global $Database, $Table, $GroupId, $TranslationTree;
158
159 $ID = $Database->SQLCommand('SELECT `Name` FROM `User` WHERE `ID` = '.$_GET['user']);
160 $Line = mysql_fetch_row($ID);
161 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a>'.
162 ' -> <strong>Počty překladů uživatele '.$Line[0].': </strong><br /><br />');
163
164 echo('<table class="BaseTable"><tr><th>Skupina</th><th>Překladů</th></tr>');
165 $Total = 0;
166 foreach($TranslationTree as $Group)
167 if($Group['TablePrefix'] != '')
168 {
169 if(array_key_exists('not', $_GET))
170 {
171 $sql = 'SELECT COUNT(*) FROM `'.$Group['TablePrefix'].'` WHERE `Complete` = 0 AND `User`='.$_GET['user'];
172 $ID = $Database->SQLCommand($sql);
173 $Line = mysql_fetch_row($ID);
174 $GroupId = $Group['Id'];
175 echo('<tr><td><a href="?group='.$GroupId.'&amp;action=userid&amp;not&amp;user='.$_GET['user'].'">'.$Group['Name'].'</a></td><td>'.$Line[0].'</td></tr>');
176 $Total += $Line[0];
177 } else
178 {
179 $sql = 'SELECT COUNT(*) FROM `'.$Group['TablePrefix'].'` WHERE `User`='.$_GET['user'];
180 $ID = $Database->SQLCommand($sql);
181 $Line = mysql_fetch_row($ID);
182 $GroupId = $Group['Id'];
183 echo('<tr><td><a href="?group='.$GroupId.'&amp;action=userid&amp;user='.$_GET['user'].'">'.$Group['Name'].'</a></td><td>'.$Line[0].'</td></tr>');
184 $Total += $Line[0];
185 }
186 }
187 echo('<tr><td><strong>Celkem</strong></td><td><strong>'.$Total.'</strong></td></tr>');
188 echo('</table>');
189}
190
191function GroupList()
192{
193 global $Database;
194
195 $DbResult = $Database->SQLCommand('SELECT COUNT(*) FROM `Group`');
196 $DbRow = mysql_fetch_row($DbResult);
197 $PageList = GetPageList($DbRow[0]);
198 echo('<h3>Seznam překladových skupin</h3>');
199 echo($PageList['Output']);
200
201 echo('<table class="BaseTable">');
202 $TableColumns = array(
203 array('Name' => 'Name', 'Title' => 'Jméno'),
204 array('Name' => 'MangosTable', 'Title' => 'Tabulka MaNGOSu'),
205 array('Name' => 'DBCFileName', 'Title' => 'DBC soubor'),
206 array('Name' => 'LuaFileName', 'Title' => 'Lua soubor'),
207 array('Name' => 'LastImport', 'Title' => 'Datum posledního importu'),
208 array('Name' => 'LastVersion', 'Title' => 'Verze posledního importu'),
209 );
210
211 $Order = GetOrderTableHeader($TableColumns, 'Name', 0);
212 echo($Order['Output']);
213
214 $ID = $Database->SQLCommand('SELECT * FROM `Group`'.$Order['SQL'].$PageList['SQLLimit']);
215 while($Group = mysql_fetch_assoc($ID))
216 {
217 echo('<tr><td><a href="?group='.$Group['Id'].'&amp;action=filter">'.$Group['Name'].'</a></td><td>'.$Group['MangosTable'].'</td><td>'.$Group['DBCFileName'].'</td><td>'.$Group['LuaFileName'].'</td><td><a title="Změny po posledním importu u vybrané překladové skupiny" href="log.php?group='.$Group['Id'].'&amp;type=11">'.HumanDate($Group['LastImport']).'</a></td><td>'.GetVersionWOW($Group['LastVersion']).'</td></tr>');
218 }
219 echo('</table>');
220 echo('<br /><a title="Záznam změn po importu" href="log.php?type=11">Záznam změn v textech při importu</a>');
221}
222
223function TranslatedByUserId()
224{
225 global $Database, $Table, $GroupId;
226
227 if(array_key_exists('user', $_GET))
228 {
229 $ID = $Database->SQLCommand('SELECT `Name` FROM `User` WHERE `ID` = '.($_GET['user'] * 1));
230 if(mysql_num_rows($ID) > 0)
231 {
232 $Line = mysql_fetch_row($ID);
233 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> -> '.
234 '<strong>Vypis překladů uživatele '.$Line[0].': </strong><br /><br />');
235 if(array_key_exists('not', $_GET))
236 WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE (`Complete` = 0) AND (`User` = '.$_GET['user'].')');
237 else WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE `User` = '.$_GET['user']);
238 } else echo('Nebyl nalezen uživatel se zadaným id');
239 } else echo('Je nutno zadat id uživatele.');
240}
241
242function TranslatedSearch()
243{
244 global $Table, $GroupId, $TranslationTree;
245
246 if(array_key_exists('search', $_GET)) $Search = $_GET['search'];
247 else if(array_key_exists('search', $_POST)) $Search = $_POST['search'];
248 else ErrorMessage('Nebyl zadán text k vyhledání.');
249
250 $sql = 'SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE `ID` LIKE "%'.$Search.'%"
251 OR `Entry` LIKE "%'.$Search.'%"
252 OR `Language` LIKE "%'.$Search.'%"
253 OR `User` LIKE "%'.$Search.'%"
254 OR `Complete` LIKE "%'.$Search.'%"';
255 foreach($TranslationTree[$GroupId]['Items'] as $Item)
256 {
257 if($Item['Column'] != '') $sql .= ' OR `'.$Item['Column'].'` LIKE "%'.$Search.'%"';
258 }
259
260 WriteQuests($sql);
261}
262
263function SearchEntry()
264{
265 global $Table, $System;
266
267 if(array_key_exists('ID', $_GET) and is_numeric($_GET['ID'])) $Search = $_GET['ID'];
268 else if(array_key_exists('ID', $_POST) and is_numeric($_POST['ID'])) $Search = $_POST['ID'];
269 else ErrorMessage('Nebylo zadáno ID položky');
270
271 $DbResult = $System->Database->query('SELECT `Entry` FROM `'.$Table.'` WHERE `ID`='.$Search);
272 if($DbResult->num_rows > 0)
273 {
274 $DbRow = $DbResult->fetch_assoc();
275 $sql = 'SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE (`Entry` = '.$DbRow['Entry'].')'.
276 ' AND (`Complete` = 1) AND (`Language` != 0)'; // Do not show uncompleted user translation
277
278 WriteQuests($sql);
279 } else echo('Položka nenalezena');
280}
281
282function TranslatedAll()
283{
284 global $GroupId, $Table;
285
286 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
287 <a title="Zde můžete začít překládat" href="?group='.$GroupId.'&amp;action=selection">Nepřeložené texty</a> - >
288 <strong>Výpis všech textů s limitem na stránku</strong><br /><br />');
289
290 WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE (`'.$Table.'`.`Language` = 0)');
291}
292
293function TranslatedFilter()
294{
295 global $Table, $GroupId, $Database, $User;
296
297 echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a><br /><br /><br />'.
298 '<table class="BaseTable"><tr><th>Odkaz</th><th>Popis</th></tr>'.
299 '<tr><td><a title="Všechny dostupné texty ve skupině" href="?group='.$GroupId.'&amp;action=all">Všechny texty</a></td>'.
300 '<td>Zobrazit všechny dostupné texty ve skupině.</td></tr>'.
301 '<tr><td><a title="Přeložené texty, můžete zde hlasovat, nebo text opravovat" href="?group='.$GroupId.'&amp;action=Translate">Přeložené texty</a></td>'.
302 '<td>Zobrazit pouze již přeložené texty.</td></tr>'.
303 '<tr><td><a title="Nepřeložené texty" href="?group='.$GroupId.'&amp;action=notran">Nepřeložené texty</a></td>'.
304 '<td>Dosud nepřeložené texty, které je potřeba přeložit.</td></tr>'.
305 '<tr><td><a title="Nedokončené texty" href="?group='.$GroupId.'&amp;action=nocomplete">Nedokončené texty</a></td>'.
306 '<td>Texty označené jako rozpracované.</td></tr>');
307
308 if($User->Licence(LICENCE_USER))
309 {
310 echo('<tr><td><a title="Nedokončené texty" href="?group='.$GroupId.'&amp;action=mydevelop">Rozepsané texty</a></td>
311 <td>Nedokončené texty přihlášeného uživatele</td></tr>
312 <tr><td><a title="Přeložené texty přihlášeného uživatele" href="?group='.$GroupId.'&amp;action=my">Moje překlady</a></td>
313 <td>Přeložené texty přihlášeného uživatele</td></tr>');
314 }
315
316 echo('<tr><td><form action="?group='.$GroupId.'&amp;action=users" method="post"><div>'.
317 '<select name="users[]" size="10" multiple="multiple" class="UserList">');
318
319 $ID = $Database->SQLCommand('SELECT `Name`, `ID` FROM `User` WHERE
320 EXISTS(SELECT 1 FROM `'.$Table.'` WHERE `User` = `User`.`ID`) ORDER BY `Name`');
321 if($ID)
322 while($Line = mysql_fetch_assoc($ID))
323 echo('<option value="'.$Line['ID'].'">'.$Line['Name'].'</option>');
324
325 echo('</select><br />
326 <input type="submit" value="Vypsat" /></div></form></td>
327 <td>Vypsat pouze od těchto uživatalů<br />
328 Vybrat více uživatelů můžete pomocí CTRL+click</td></tr>');
329
330 echo('<tr><td><form action="?group='.$GroupId.'&amp;action=search" method="post"><div>'.
331 '<input type="text" name="search" size="8" />'.
332 '<input type="submit" value="Hledat" />'.
333 '</div></form>'.
334 '</td><td>Vyhledat pomocí textu</td></tr>');
335
336 echo('<tr><td><form action="?group='.$GroupId.'&amp;action=searchentry" method="post"><div>'.
337 '<input type="text" name="ID" size="8" />'.
338 '<input type="submit" value="Hledat" />'.
339 '</div></form>'.
340 '</td><td>Zobrazit podle ID textu v databázi MaNGOSu</td></tr>');
341
342 echo('</table>');
343}
344
345
346ShowPage();
347
348$GroupId = LoadGroupIdParameter();
349$Table = $TranslationTree[$GroupId]['TablePrefix'];
350if(array_key_exists('action', $_GET)) $Action = $_GET['action']; else $Action = '';
351
352$DbResult = $Database->SQLCommand('SELECT MAX(`VersionEnd`) FROM `'.$TranslationTree[$GroupId]['TablePrefix'].'`');
353$ID = mysql_fetch_row($DbResult);
354$BuildNumber_max = $ID[0];
355
356if(($Action != 'userall') and ($Action != 'grouplist'))
357 echo('Skupina: <strong>'.$TranslationTree[$GroupId]['Name'].'</strong><br />');
358
359if($Action == 'notran') Nontranslated();
360else if($Action == 'connexion') Connexion();
361else if($Action == 'connexion_list') ConnexionList();
362else if($Action == 'nocomplete') Noncomplete();
363else if($Action == 'Translate') Translate();
364else if(($Action == 'my') and $User->Licence(LICENCE_USER)) UserTranslated();
365else if(($Action == 'mydevelop') and $User->Licence(LICENCE_USER)) UserUnfinished();
366else if($Action == 'users') UserSelected();
367else if($Action == 'userall') UserAll();
368else if($Action == 'grouplist') GroupList();
369else if($Action == 'userid') TranslatedByUserId();
370else if($Action == 'search') TranslatedSearch();
371else if($Action == 'searchentry') SearchEntry();
372else if($Action == 'all') TranslatedAll();
373else if($Action == 'filter') TranslatedFilter();
374else echo('Neznámá akce');
375
376ShowFooter();
377
378?>
379
Note: See TracBrowser for help on using the repository browser.