1<?php 2/** 3 * @package tikiwiki 4 */ 5// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project 6// 7// All Rights Reserved. See copyright.txt for details and a complete list of authors. 8// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. 9// $Id$ 10 11require_once('tiki-setup.php'); 12require_once('lib/language/Language.php'); 13require_once('lib/language/LanguageTranslations.php'); 14 15$access->check_feature('lang_use_db'); 16$access->check_permission('tiki_p_edit_languages'); 17 18// Get available languages 19$langLib = TikiLib::lib('language'); 20$languages = $langLib->list_languages(); 21$smarty->assign_by_ref('languages', $languages); 22 23// preserving variables 24if (isset($_REQUEST["edit_language"])) { 25 $smarty->assign('edit_language', $_REQUEST["edit_language"]); 26 $edit_language = $_REQUEST["edit_language"]; 27} else { 28 $smarty->assign('edit_language', $prefs['language']); 29 $edit_language = $prefs['language']; 30} 31 32$translations = new LanguageTranslations($edit_language); 33 34if (! isset($_REQUEST["action"])) { 35 $_REQUEST['action'] = 'edit_tran_sw'; 36} 37$smarty->assign('action', $_REQUEST["action"]); 38 39if (isset($_REQUEST['only_db_translations']) && $_REQUEST['only_db_translations'] != 'n') { 40 $smarty->assign('only_db_translations', 'y'); 41} else { 42 $smarty->assign('only_db_translations', 'n'); 43} 44 45if (isset($_REQUEST['only_db_untranslated']) && $_REQUEST['only_db_untranslated'] != 'n') { 46 $smarty->assign('only_db_untranslated', 'y'); 47} else { 48 $smarty->assign('only_db_untranslated', 'n'); 49} 50 51// Adding strings 52if (isset($_REQUEST["add_tran"])) { 53 check_ticket('edit-languages'); 54 $add_tran_source = $_REQUEST["add_tran_source"]; 55 $add_tran_tran = $_REQUEST["add_tran_tran"]; 56 57 if (strlen($add_tran_source) != 0 && strlen($add_tran_tran) != 0) { 58 $add_tran_source = strip_tags($add_tran_source); 59 $add_tran_tran = strip_tags($add_tran_tran); 60 61 $translations->updateTrans($add_tran_source, $add_tran_tran); 62 } 63} 64 65// Delete all db translations 66if (isset($_REQUEST['delete_all']) && $tiki_p_admin) { 67 $translations->deleteTranslations(); 68} 69 70//Selection for untranslated Strings and edit translations 71if (isset($_REQUEST["action"])) { 72 $action = $_REQUEST["action"]; 73} else { 74 $action = ""; 75} 76 77if ($action == "edit_rec_sw" || $action == "edit_tran_sw") { 78 check_ticket('edit-languages'); 79 80 $offset = isset($_REQUEST["offset"]) ? $_REQUEST['offset'] : 0; 81 $smarty->assign('offset', $offset); 82 83 $maxRecords = (isset($_REQUEST['maxRecords']) && $_REQUEST['maxRecords'] > 0) ? $_REQUEST['maxRecords'] : $prefs['maxRecords']; 84 $smarty->assign('maxRecords', $maxRecords); 85 86 //check if user has translated something 87 for ($i = 0; $i < $maxRecords; $i++) { 88 // Handle edits in untranslated strings 89 if (isset($_REQUEST["edit_tran_$i"]) || isset($_REQUEST['translate_all'])) { 90 // Handle edits in edit translations 91 if (strlen($_REQUEST["tran_$i"]) > 0 && strlen($_REQUEST["source_$i"]) > 0) { 92 if ($prefs['lang_control_contribution'] == 'y') { 93 if (! isset($_REQUEST["scope_$i"])) { 94 throw new Exception('scope parameter required'); 95 } elseif ($_REQUEST["scope_$i"] == '') { 96 $general = null; 97 } else { 98 $general = $_REQUEST["scope_$i"] == 'general'; 99 } 100 $optionalParameters = ['general' => $general]; 101 } else { 102 $optionalParameters = []; 103 } 104 $translations->updateTrans($_REQUEST["source_$i"], $_REQUEST["tran_$i"], $optionalParameters); 105 } 106 } elseif (isset($_REQUEST["del_tran_$i"])) { 107 // Handle deletes here 108 if (strlen($_REQUEST["source_$i"]) > 0) { 109 $translations->deleteTranslation($_REQUEST["source_$i"]); 110 } 111 } 112 } // end of for ... 113 // for resetting untranslated 114 if (isset($_REQUEST["tran_reset"])) { 115 $translations->deleteAllUntranslated(); 116 } 117 118 // update language array with new translations 119 $query = "select `source`, `tran` from `tiki_language` where `lang`=?"; 120 $result = $tikilib->fetchAll($query, [$edit_language]); 121 122 foreach ($result as $row) { 123 ${"lang_$edit_language"}[ $row['source'] ] = $row['tran']; 124 } 125 126 //Handle searches 127 $find = ''; 128 129 if (isset($_REQUEST['find']) && strlen($_REQUEST['find']) > 0) { 130 $find = $_REQUEST['find']; 131 $smarty->assign('find', $find); 132 } 133 134 $sort_mode = "source_asc"; 135 136 $data = []; 137 138 if ($action == "edit_rec_sw") { 139 if (isset($_REQUEST['only_db_untranslated']) && $_REQUEST['only_db_untranslated'] != 'n') { 140 // display only database stored untranslated strings 141 $data = $translations->getDbUntranslated($maxRecords, $offset, $find); 142 } else { 143 // display all untranslated strings (language.php + db) 144 $data = $translations->getAllUntranslated($maxRecords, $offset, $find); 145 } 146 } elseif ($action == "edit_tran_sw") { 147 if (isset($_REQUEST['only_db_translations']) && $_REQUEST['only_db_translations'] != 'n') { 148 // display only database stored translations 149 $data = $translations->getDbTranslations($sort_mode, $maxRecords, $offset, $find); 150 } else { 151 // display all available translations (db + custom.php + language.php) 152 $data = $translations->getAllTranslations($maxRecords, $offset, $find); 153 } 154 } 155 156 $smarty->assign_by_ref('translations', $data['translations']); 157 $smarty->assign('total', $data['total']); 158 $smarty->assign('hasDbTranslations', $translations->hasDbTranslations); 159} 160 161$db_languages = Language::getDbTranslatedLanguages(); 162$db_languages = $langLib->format_language_list($db_languages); 163$smarty->assign_by_ref('db_languages', $db_languages); 164 165ask_ticket('edit-languages'); 166 167// disallow robots to index page: 168$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW'); 169 170$headerlib->add_cssfile('themes/base_files/feature_css/admin.css'); 171$headerlib->add_jsfile('lib/language/js/tiki-edit_languages.js'); 172 173$headtitle = tra('Edit languages'); 174$description = tra('Edit or export languages'); 175$crumbs[] = new Breadcrumb($headtitle, $description, '', '', ''); 176$headtitle = breadcrumb_buildHeadTitle($crumbs); 177$smarty->assign('headtitle', $headtitle); 178$smarty->assign('trail', $crumbs); 179 180$smarty->assign('mid', 'tiki-edit_languages.tpl'); 181$smarty->display("tiki.tpl"); 182