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'); 12 13$multilinguallib = TikiLib::lib('multilingual'); 14include_once('modules/mod-func-translation.php'); 15 16require_once('lib/debug/Tracer.php'); 17 18execute_module_translation(); 19 20$access->check_feature('feature_multilingual'); 21 22if (! (isset($_REQUEST['page']) && $_REQUEST['page']) && ! (isset($_REQUEST['id']) && $_REQUEST['id'])) { 23 $smarty->assign('msg', tra("No object indicated")); 24 $smarty->display("error.tpl"); 25 die; 26} 27 28if (isset($_REQUEST['type'], $_REQUEST['id']) && $_REQUEST['type'] == 'wiki page') { 29 $_REQUEST['page'] = $tikilib->get_page_name_from_id($_REQUEST['id']); 30} 31 32include_once("lang/langmapping.php"); 33 34if ((! isset($_REQUEST['type']) || $_REQUEST['type'] == 'wiki page' || $_REQUEST['type'] == 'wiki') && isset($_REQUEST['page']) && $_REQUEST['page']) { 35 $info = $tikilib->get_page_info($_REQUEST['page']); 36 if (empty($info)) { 37 $smarty->assign('msg', tra("Page cannot be found")); 38 $smarty->display("error.tpl"); 39 die; 40 } 41 $name = $_REQUEST['page']; 42 $type = "wiki page"; 43 $objId = $info['page_id']; 44 $langpage = $info['lang']; 45 $fullLangName = $langmapping[$langpage][0]; 46 $smarty->assign('languageName', $fullLangName); 47 $cat_type = 'wiki page'; 48 $cat_objid = $name; 49 50 $edit_data = $info['data']; 51 $smarty->assign('pagedata', TikiLib::htmldecode($edit_data)); 52 53 if ($prefs['feature_translation_incomplete_notice'] == 'y') { 54 $smarty->assign('translate_message', "^" . tra("Translation of this page is incomplete.") . "^\n\n"); 55 } 56} elseif ($_REQUEST['id']) { 57 $smarty->assign('msg', tra("Only wiki pages are supported.")); 58 $smarty->display("error.tpl"); 59 die; 60} 61 62$smarty->assign('name', $name); 63$smarty->assign('type', $type); 64$smarty->assign('id', $objId); 65 66include_once 'categorize_list.php'; 67 68if (isset($_REQUEST['langpage']) && ! empty($_REQUEST['langpage']) && $_REQUEST['langpage'] != "NULL" 69 && $langpage != $_REQUEST['langpage']) { // update the language 70 $error = $multilinguallib->updateObjectLang($type, $objId, $_REQUEST['langpage']); 71 if ($error) { 72 $smarty->assign('error', $error); 73 } else { 74 $info['lang'] = $_REQUEST['langpage']; 75 $langpage = $_REQUEST['langpage']; 76 } 77 78 $fullLangName = $langmapping[$langpage][0]; 79 $smarty->assign('languageName', $fullLangName); 80} 81$smarty->assign('langpage', $langpage); 82 83if ($type == "wiki page") { 84 $tikilib->get_perm_object($name, 'wiki page', $info, true); 85 if (! ($tiki_p_edit == 'y' || ($prefs['wiki_creator_admin'] == 'y' && $user && $info['creator'] == $user) )) { 86 $smarty->assign('errortype', 401); 87 $smarty->assign('msg', tra("You do not have permission to edit this page.")); 88 $smarty->display("error.tpl"); 89 die; 90 } 91} 92 93$trads = $multilinguallib->getTranslations($type, $objId, $name, $langpage, true); 94 95$usedLang = []; 96foreach ($trads as $trad) { 97 $usedLang[] = $trad['lang']; 98} 99 100$langLib = TikiLib::lib('language'); 101$rawLangs = $langLib->list_languages(); 102$languages = []; 103foreach ($rawLangs as $langInfo) { 104 if (! in_array($langInfo['value'], $usedLang)) { 105 $languages[] = $langInfo; 106 } 107} 108$smarty->assign_by_ref('languages', $languages); 109if (count($languages) == 1) { 110 $smarty->assign('only_one_language_left', 'y'); 111} 112 113if (isset($_REQUEST['target_lang'])) { 114 smarty_assign_default_target_lang($langpage, $_REQUEST['target_lang'], $trads, $prefs['read_language']); 115} 116 117smarty_assign_translation_name(); 118 119ask_ticket('edit-translation'); 120 121// disallow robots to index page: 122$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW'); 123 124// Display the template 125$smarty->assign('mid', 'tiki-edit_translation.tpl'); 126$smarty->display("tiki.tpl"); 127 128function execute_module_translation() 129{ 130 $smarty = TikiLib::lib('smarty'); 131 $module_reference = [ 132 'name' => 'translation', 133 'params' => ['show_language' => 'n'], 134 'position' => 'r', 135 'ord' => 1, 136 'moduleId' => 0 137 ]; 138 139 $modlib = TikiLib::lib('mod'); 140 141 $out = $modlib->execute_module($module_reference); 142 $smarty->assign('content_of_update_translation_section', $out); 143} 144 145function smarty_assign_default_target_lang($src_lang, $targ_lang_requested, $existing_translations, $user_langs) 146{ 147 global $tracer; 148 $multilinguallib = TikiLib::lib('multilingual'); 149 $smarty = TikiLib::lib('smarty'); 150 151 $default_target_lang = $targ_lang_requested; 152 if (! isset($default_target_lang)) { 153 $collect_lang_callback = function ($translation) { 154 return $translation['lang']; 155 }; 156 $langs_already_translated = array_map($collect_lang_callback, $existing_translations); 157 $default_target_lang = $multilinguallib->defaultTargetLanguageForNewTranslation($src_lang, $langs_already_translated, $user_langs); 158 } 159 160 $smarty->assign('default_target_lang', $default_target_lang); 161} 162 163function smarty_assign_translation_name() 164{ 165 $smarty = TikiLib::lib('smarty'); 166 167 $translation_name = ''; 168 if (isset($_REQUEST['translation_name'])) { 169 $translation_name = $_REQUEST['translation_name']; 170 } 171 $smarty->assign('translation_name', $translation_name); 172} 173