2 /****************************************************************/
4 /****************************************************************/
5 /* Copyright (c) 2002-2003 by Greg Gay & Joel Kronenberg */
6 /* Adaptive Technology Resource Centre / University of Toronto */
9 /* This program is free software. You can redistribute it and/or*/
10 /* modify it under the terms of the GNU General Public License */
11 /* as published by the Free Software Foundation. */
12 /****************************************************************/
15 if ( !isset($db) || !defined('AT_INCLUDE_PATH') || !isset($_SESSION['language']) ) { echo 'xx'; exit; }
17 if ($_POST['function'] == 'edit_term') {
18 if ($_POST['submit2']) {
19 delete_term($_POST['v'], $_POST['k']);
21 $success_error = update_term($_POST['text'], $_POST['context'], $_POST['v'], $_POST['k']);
23 } else if ($_POST['function'] == 'add_term') {
24 $success_error = add_term($_POST['text'], $_POST['context'], $_POST['v'], $_POST['k']);
25 $_REQUEST['page'] = 'none';
29 $n = ' checked="checked"';
32 $u = ' checked="checked"';
35 if ($_SESSION['language'] != 'en') {
36 echo '<li>Choose the New and Updated filters to display only language that has not been translated, or language that needs to be modified<br />';
38 echo '<table border="0" cellspacing="0" cellpadding="2" style="border: 1px solid #cccccc;"><tr><td bgcolor="#eeeeee" nowrap="nowrap"><h5 class="heading2">Filter</h5></td><td>';
39 echo '<form method="get" action="'.$_SERVER['PHP_SELF'].'">
40 <input type="hidden" name="v" value="'.$_REQUEST['v'].'" />
41 <input type="hidden" name="f" value="'.$_REQUEST['f'].'" /><input type="checkbox" name="n" id="n" value="1" '.$n.' /><label for="n">New Language</label>, <input type="checkbox" name="u" id="u" value="1" '.$u.'/><label for="u">Updated Language</label> <input type="submit" name="filter" value="Apply" class="submit" /></form></td></tr></table><br />';
46 <!--//display messages and templates, with option to add new language terms/messages//-->
47 <li>Choose Template, Msgs, or Modules to display a list of language variables. Click on a variable name to display its associated language.
49 <?php foreach ($variables as $row) { ?>
51 <?php echo '<a href="'.$_SERVER['PHP_SELF'].'?v='.$row.SEP.'f='.$_REQUEST['f'].SEP.'n='.$_REQUEST['n'].SEP.'u='.$_REQUEST['u'].'">';
52 echo ucwords(str_replace('_', '', $row));
54 if ($_SESSION['status'] == $_USER_ADMIN && ($_SESSION['language'] == 'en')) {
55 echo ' | <a href="'.$_SERVER['PHP_SELF'].'?v='.$row.SEP.'new=1">new</a>';
65 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
66 <input type="text" name="search_term" value="<?php echo htmlspecialchars($stripslashes($_REQUEST['search_term'])); ?>" /> <input type="submit" name="search" value="Search Phrase" class="submit" />
72 <?php if (($_REQUEST['new'] == 1) && $_SESSION['status'] == $_USER_ADMIN) { ?>
74 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>#anchor">
75 <input type="hidden" name="search_term" value="<?php echo htmlspecialchars($stripslashes($_REQUEST['search_term'])); ?>" />
76 <input type="hidden" name="v" value="<?php echo $_REQUEST['v']; ?>" />
77 <input type="hidden" name="page" value="<?php echo $_REQUEST['page']; ?>" />
78 <input type="hidden" name="function" value="add_term" />
80 <table border="0" cellspacing="0" cellpadding="3" width="75%" align="center" class="box">
82 <th colspan="2" class="box">New</th>
85 <td align="right"><b>Variable:</b></td>
86 <td><tt><?php echo $_REQUEST['v'];?></tt></td>
89 <td align="right"><b>Term:</b></td>
90 <td><input type="text" name="k" class="input" /></td>
93 <td align="right"><b>Context:</b></td>
94 <td><input type="text" name="context" class="input" /></td>
97 <td valign="top" align="right" nowrap="nowrap"><b><tt><?php echo $langs[$_SESSION['language']]['name'];?></tt> text:</b></td>
98 <td><textarea cols="45" rows="5" name="text" class="input2"><?php echo $row2['text'];?></textarea></td>
101 <td colspan="2" align="center"><input type="submit" name="submit" value="Save ALT-S" class="submit" accesskey="s" /></td>
107 if ($_REQUEST['v'] && $_REQUEST['k']) {
108 $sql = "SELECT * FROM ".TABLE_PREFIX."language_text WHERE term='$_REQUEST[k]' AND variable='$_REQUEST[v]' AND `language_code`='$_REQUEST[f]'";
109 $result = mysql_query($sql, $db);
110 $row = mysql_fetch_assoc($result);
112 echo '<p>The source language was not found for that item (try using the English source).</p>';
113 require (AT_INCLUDE_PATH.'footer.inc.php');
117 if ($_SESSION['language'] == 'en') {
120 $sql = "SELECT text FROM ".TABLE_PREFIX."language_text WHERE term='$_REQUEST[k]' AND variable='$_REQUEST[v]' AND `language_code`='$_SESSION[language]'";
123 $result = mysql_query($sql, $db);
124 $row2 = mysql_fetch_array($result);
126 function trans_form($page) {
131 global $success_error;
135 global $stripslashes;
138 <a name="anchor"></a>
139 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>#anchor">
140 <input type="hidden" name="v" value="<?php echo $row['variable']; ?>" />
141 <input type="hidden" name="k" value="<?php echo $row['term']; ?>" />
142 <input type="hidden" name="f" value="<?php echo $_REQUEST['f']; ?>" />
143 <input type="hidden" name="search_term" value="<?php echo htmlspecialchars($stripslashes($_REQUEST['search_term'])); ?>" />
144 <input type="hidden" name="page" value="<?php echo $page; ?>" />
145 <input type="hidden" name="function" value="edit_term" />
149 <table border="0" cellspacing="0" cellpadding="2" width="90%" align="center" class="box">
151 <th class="box" colspan="2">Edit</th>
154 <td align="right"><b>Context:</b></td>
156 if ($_SESSION['language'] == 'en') {
157 echo '<input type="text" name="context" class="input" value="'.$row['context'].'" size="45" />';
159 if ($row['context'] == '') {
160 echo '<em>None specified.</em>';
162 echo $row['context'];
167 <td valign="top" align="right" nowrap="nowrap"><b>Pages:</b></td>
169 $sql = "SELECT * FROM ".TABLE_PREFIX."language_pages WHERE `term`='$_REQUEST[k]' ORDER BY page LIMIT 11";
170 $result = mysql_query($sql, $db);
172 if (mysql_num_rows($result) > 10) {
173 echo '<em>Global (more than 10 pages)</em>';
175 while ($page_row = mysql_fetch_array($result)) {
176 echo $page_row['page'] . '<br />';
184 <td valign="top" align="right" nowrap="nowrap"><b><tt><?php echo $langs[$_REQUEST['f']]['name'];?></tt> text:</b></td>
185 <td><?php echo nl2br(htmlspecialchars($row['text'])); ?></td>
188 <td valign="top" align="right" nowrap="nowrap"><b><tt><?php echo $langs[$_SESSION['language']]['name'];?></tt> text:</b></td>
189 <td><textarea cols="55" rows="8" name="text" class="input2"><?php echo $row2['text'];?></textarea></td>
192 <td colspan="2" align="center"><input type="submit" name="submit" value="Save ALT-S" class="submit" accesskey="s" />
193 <?php if ($_SESSION['language'] == 'en' && $_SESSION['status'] == $_USER_ADMIN): ?>
194 <input type="submit" name="submit2" value="Delete" onClick="return confirm('Do you really want to delete?');" class="submit" />
205 //displaying templates
206 if (!$_REQUEST['search_term'] && ($_REQUEST['v'] == $variables[0])) {
209 echo '<li><a href="'.$_SERVER['PHP_SELF'].'?v='.$_REQUEST['v'].SEP.'page=all'.SEP.'f='.$_REQUEST['f'].SEP.'n='.$_REQUEST['n'].SEP.'u='.$_REQUEST['u'].'#anchor1">View All Terms</a>';
211 if ($_REQUEST['page'] == 'all') {
212 echo '<a name="anchor1"></a>';
213 display_all_terms($_REQUEST['v'], $_REQUEST['k'], $_REQUEST['f'], $_REQUEST['n'], $_REQUEST['u']);
217 echo '<li><a href="'.$_SERVER['PHP_SELF'].'?v='.$_REQUEST['v'].SEP.'page=none'.SEP.'f='.$_REQUEST['f'].SEP.'n='.$_REQUEST['n'].SEP.'u='.$_REQUEST['u'].'#anchor1">View Unused Terms</a>';
219 if ($_REQUEST['page'] == 'none') {
220 echo '<a name="anchor1"></a>';
221 display_unused_terms($_REQUEST['v'], $_REQUEST['k'], $_REQUEST['f'], $_REQUEST['n'], $_REQUEST['u']);
225 $sql0 = "SELECT DISTINCT page FROM ".TABLE_PREFIX."language_pages ORDER BY page";
226 $result0 = mysql_query($sql0, $db);
228 while ($row0 = mysql_fetch_assoc($result0)) {
230 if ($_REQUEST['page'] == $row0['page']) {
231 display_page_terms($_REQUEST['v'], $_REQUEST['k'], $_REQUEST['f'], $_REQUEST['n'], $_REQUEST['u'], $row0['page']);
234 echo '<li><a href="'.$_SERVER['PHP_SELF'].'?v='.$_REQUEST['v'].SEP.'page='.urlencode($row0['page']).SEP.'f='.$_REQUEST['f'].SEP.'n='.$_REQUEST['n'].SEP.'u='.$_REQUEST['u'].'#anchor1">'.$row0['page'].'</a></li>';
238 } else if (!$_REQUEST['search_term'] && ($_REQUEST['v'] == $variables[1])){
239 //displaying messages
240 display_all_terms($_REQUEST['v'], $_REQUEST['k'], $_REQUEST['f'], $_REQUEST['n'], $_REQUEST['u']);
241 } else if (!$_REQUEST['search_term'] && ($_REQUEST['v'] == $variables[2])){
242 display_all_terms($_REQUEST['v'], $_REQUEST['k'], $_REQUEST['f'], $_REQUEST['n'], $_REQUEST['u']);
243 } else if ($_REQUEST['search_term']) {
244 display_search_terms($_REQUEST['v'], $_REQUEST['k'], $_REQUEST['f'], $_REQUEST['n'], $_REQUEST['u']);
248 function delete_term($variable, $term) {
251 $sql = "DELETE FROM ".TABLE_PREFIX."language_text WHERE variable='$variable' AND term='$term'";
252 $result = mysql_query($sql, $db);
254 $sql3 = "DELETE FROM ".TABLE_PREFIX."language_pages WHERE term='$term'";
255 $result3 = mysql_query($sql3, $db);
257 unset($_REQUEST['k']);
258 echo '<div class="feedback2"">Success: deleted.</div>';
261 function update_term($text, $context, $variable, $term) {
262 global $addslashes, $db;
264 $term = $addslashes(trim($term));
265 $text = $addslashes(trim($text));
266 $context = $addslashes(trim($context));
268 if ($_SESSION['language'] == 'en') {
269 $sql = "UPDATE ".TABLE_PREFIX."language_text SET `text`='$text', revised_date=NOW(), context='$context' WHERE variable='$variable' AND term='$term' AND language_code='en'";
273 $sql = "REPLACE INTO ".TABLE_PREFIX."language_text VALUES ('$_SESSION[language]', '$variable', '$term', '$text', NOW(), '')";
275 $trans = get_html_translation_table(HTML_ENTITIES);
276 $trans = array_flip($trans);
277 $sql = strtr($sql, $trans);
280 $result = mysql_query($sql, $db);
283 echo mysql_error($db);
284 echo '<div class="error">Error: changes not saved!</div>';
285 $success_error = '<div class="error">Error: changes not saved!</div>';
286 return $success_error;
289 echo '<div class="feedback2"">Success: changes saved.</div>';
290 $success_error = '<div class="feedback2"">Success: changes saved.</div>';
291 return $success_error;
295 function add_term($text, $context, $variable, $term) {
296 global $addslashes, $db;
298 $term = $addslashes(trim($term));
299 $text = $addslashes(trim($text));
300 $context = $addslashes(trim($context));
302 $sql = "INSERT INTO ".TABLE_PREFIX."language_text VALUES ('en', '$variable', '$term', '$text', NOW(), '$context')";
303 $result = mysql_query($sql, $db);
306 echo '<div class="error">Error: that term already exists!</div>';
309 echo '<div class="feedback2"">Success: term added.</div>';
310 $success_error = '<div class="feedback2"">Success: term added.</div>';
311 return $success_error;
315 function display_page_terms ($variable, $term1, $lang_code, $new, $updated, $page) {
318 echo '<li><a name="anchor1"></a>';
319 echo '<a href="'.$_SERVER['PHP_SELF'].'?v='.$variable.SEP.'page='.urlencode($page).SEP.'f='.$lang_code.SEP.'n='.$new.SEP.'u='.updated.'#anchor">'.$page.'</a>';
321 $sql1 = "SELECT term FROM ".TABLE_PREFIX."language_pages WHERE page='$page' ORDER BY term";
322 $result1 = mysql_query($sql1, $db);
324 $term_list = array();
326 while ($row1 = mysql_fetch_assoc($result1)) {
328 if ($_SESSION['language'] != 'en') {
329 $sql = "SELECT term, revised_date+0 AS r_date FROM ".TABLE_PREFIX."language_text WHERE variable='$variable' AND `language_code`='$_SESSION[language]' AND term='$row1[term]' ORDER BY `term`";
330 $result = mysql_query($sql, $db);
332 while ($row = mysql_fetch_assoc($result)) {
333 $t_keys[$row['term']] = $row['r_date'];
336 $term_list[] = $row1['term'];
341 foreach ($term_list as $term) {
343 if ($_REQUEST['f'] == 'en') {
344 $sql = "SELECT *, revised_date+0 AS r_date FROM ".TABLE_PREFIX."language_text WHERE variable='$_REQUEST[v]' AND language_code='en' AND term='$term'";
346 $sql = "SELECT * FROM ".TABLE_PREFIX."language_text WHERE variable='$_REQUEST[v]' AND language_code='$_REQUEST[f]' AND term='$term'";
349 $result = mysql_query($sql, $db);
350 $row = mysql_fetch_assoc($result);
352 if ($_SESSION['language'] != 'en') {
353 if ($new && $updated) {
354 if ((!($t_keys[$row['term']] == '')) && (!(($t_keys[$row['term']] < $row['r_date']) && $t_keys[$row['term']]))) {
358 if (!($t_keys[$row['term']] == '')) {
361 } else if ($updated) {
362 if (!(($t_keys[$row['term']] < $row['r_date']) && $t_keys[$row['term']])) {
368 if ($term == $term1) {
370 echo '<li class="selected">';
376 if ($_SESSION['language'] != 'en') {
377 if ($t_keys[$row['term']] == '') {
378 echo '<b>*New*</b> ';
379 } else if ($t_keys[$term] < $row['r_date']) {
380 echo '<b>*Updated*</b> ';
384 if ($term != $term1) {
385 echo '<a href="'.$_SERVER['PHP_SELF'].'?v='.$variable.SEP.'k='.$term.SEP.'f='.$lang_code.SEP.'n='.$new.SEP.'u='.$updated.SEP.'page='.urlencode($page).'#anchor">';
398 function display_all_terms ($variable, $term1, $lang_code, $new, $updated) {
401 if ($_SESSION['language'] != 'en') {
402 $sql = "SELECT term, revised_date+0 AS r_date FROM ".TABLE_PREFIX."language_text WHERE variable='$variable' AND `language_code`='$_SESSION[language]' ORDER BY `term`";
403 $result = mysql_query($sql, $db);
406 while ($row = mysql_fetch_assoc($result)) {
407 $t_keys[$row['term']] = $row['r_date'];
411 if ($lang_code == 'en') {
412 $sql = "SELECT *, revised_date+0 AS r_date FROM ".TABLE_PREFIX."language_text WHERE variable='$variable' AND language_code='en' ORDER BY term";
414 $sql = "SELECT * FROM ".TABLE_PREFIX."language_text WHERE variable='$variable' AND language_code='$lang_code' ORDER BY term";
416 $result = mysql_query($sql, $db);
419 while ($row = mysql_fetch_assoc($result)) {
420 if ($_SESSION['language'] != 'en') {
421 if ($new && $updated) {
422 if ((!($t_keys[$row['term']] == '')) && (!(($t_keys[$row['term']] < $row['r_date']) && $t_keys[$row['term']]))) {
426 if (!($t_keys[$row['term']] == '')) {
429 } else if ($updated) {
430 if (!(($t_keys[$row['term']] < $row['r_date']) && $t_keys[$row['term']])) {
437 if ($row['term'] == $term1) {
439 echo '<li class="selected">';
445 if ($_SESSION['language'] != 'en') {
446 if ($t_keys[$row['term']] == '') {
447 echo '<b>*New*</b> ';
448 } else if ($t_keys[$row['term']] < $row['r_date']) {
449 echo '<b>*Updated*</b> ';
453 if ($row['term'] != $term1) {
454 echo '<a href="'.$_SERVER['PHP_SELF'].'?v='.$variable.SEP.'k='.$row['term'].SEP.'page=all'.SEP.'f='.$lang_code.SEP.'n='.$new.SEP.'u='.$updated.'#anchor">';
466 function display_unused_terms ($variable, $term1, $lang_code, $new, $updated) {
469 if ($_SESSION['language'] != 'en') {
470 $sql = "SELECT term, revised_date+0 AS r_date FROM ".TABLE_PREFIX."language_text WHERE variable='$variable' AND `language_code`='$_SESSION[language]' ORDER BY `term`";
471 $result = mysql_query($sql, $db);
474 while ($row = mysql_fetch_assoc($result)) {
475 $t_keys[$row['term']] = $row['r_date'];
479 if ($lang_code == 'en') {
480 $sql = "SELECT lt.*, lt.revised_date+0 AS r_date FROM ".TABLE_PREFIX."language_text lt LEFT JOIN ".TABLE_PREFIX."language_pages lp ON lt.term = lp.term WHERE lp.term IS NULL AND lt.variable='$variable' AND lt.language_code='en' ORDER BY lt.term";
482 $sql = "SELECT lt.* FROM ".TABLE_PREFIX."language_text lt LEFT JOIN ".TABLE_PREFIX."language_pages lp ON lt.term = NULL WHERE lt.variable='$variable' AND lt.language_code='$lang_code' ORDER BY lt.term";
484 $result = mysql_query($sql, $db);
487 while ($row = mysql_fetch_assoc($result)) {
488 if ($_SESSION['language'] != 'en') {
489 if ($new && $updated) {
490 if ((!($t_keys[$row['term']] == '')) && (!(($t_keys[$row['term']] < $row['r_date']) && $t_keys[$row['term']]))) {
494 if (!($t_keys[$row['term']] == '')) {
497 } else if ($updated) {
498 if (!(($t_keys[$row['term']] < $row['r_date']) && $t_keys[$row['term']])) {
505 if ($row['term'] == $term1) {
507 echo '<li class="selected">';
513 if ($_SESSION['language'] != 'en') {
514 if ($t_keys[$row['term']] == '') {
515 echo '<b>*New*</b> ';
516 } else if ($t_keys[$row['term']] < $row['r_date']) {
517 echo '<b>*Updated*</b> ';
521 if ($row['term'] != $term1) {
522 echo '<a href="'.$_SERVER['PHP_SELF'].'?v='.$variable.SEP.'k='.urlencode($row['term']).SEP.'page=none'.SEP.'f='.$lang_code.SEP.'n='.$new.SEP.'u='.$updated.'#anchor">';
535 function display_search_terms ($variable, $term1, $lang_code, $new, $updated) {
536 global $db, $addslashes, $stripslashes;
538 $_REQUEST['search_term'] = $addslashes($_REQUEST['search_term']);
540 $sql = "SELECT term, revised_date+0 AS r_date FROM ".TABLE_PREFIX."language_text WHERE (variable LIKE '%$_REQUEST[search_term]%' OR text LIKE '%$_REQUEST[search_term]%') AND (`language_code`='$_SESSION[language]' OR `language_code`='en') GROUP BY `term` ORDER BY `term`";
541 $result = mysql_query($sql, $db);
544 while ($row = mysql_fetch_assoc($result)) {
545 $t_keys[$row['term']] = $row['r_date'];
548 $sql = "SELECT *, revised_date+0 AS r_date FROM ".TABLE_PREFIX."language_text WHERE (variable LIKE '%$_REQUEST[search_term]%' OR text LIKE '%$_REQUEST[search_term]%') AND (language_code='en' OR language_code='$_SESSION[language]') GROUP BY `term` ORDER BY term";
549 $result = mysql_query($sql, $db);
551 if (mysql_num_rows($result) == 0) {
552 echo '<ul><li>No results found.</li></ul>';
555 while ($row = mysql_fetch_assoc($result)) {
556 if ($_SESSION['language'] != 'en') {
557 if ($new && $updated) {
558 if ((!($t_keys[$row['term']] == '')) && (!(($t_keys[$row['term']] < $row['r_date']) && $t_keys[$row['term']]))) {
562 if (!($t_keys[$row['term']] == '')) {
565 } else if ($updated) {
566 if (!(($t_keys[$row['term']] < $row['r_date']) && $t_keys[$row['term']])) {
573 if ($row['term'] == $term1) {
574 trans_form('search');
575 echo '<li class="selected">';
581 if ($_SESSION['language'] != 'en') {
582 if ($t_keys[$row['term']] == '') {
583 echo '<b>*New*</b> ';
584 } else if ($t_keys[$row['term']] < $row['r_date']) {
585 echo '<b>*Updated*</b> ';
589 if ($row['term'] != $term1) {
590 echo '<a href="'.$_SERVER['PHP_SELF'].'?v='.$row['variable'].SEP.'search=1'.SEP.'search_term='.urlencode($stripslashes($_REQUEST['search_term'])).SEP.'k='.$row['term'].SEP.'f='.$lang_code.SEP.'n='.$new.SEP.'u='.$updated.'#anchor">';