[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 <?php 2 /**************************************************************************\ 3 * eGroupWare SiteMgr - Web Content Management * 4 * http://www.egroupware.org * 5 * -------------------------------------------- * 6 * This program is free software; you can redistribute it and/or modify it * 7 * under the terms of the GNU General Public License as published by the * 8 * Free Software Foundation; either version 2 of the License, or (at your * 9 * option) any later version. * 10 \**************************************************************************/ 11 12 /* $Id: class.Translations_UI.inc.php 20295 2006-02-15 12:31:25Z $ */ 13 14 class Translations_UI 15 { 16 var $t; 17 var $cat_bo; 18 var $acl; 19 var $sitelanguages; 20 var $common_ui; 21 var $pagebo; 22 var $contentbo; 23 var $modulebo; 24 25 var $public_functions = array 26 ( 27 'manage' => True, 28 'translateCategory' => True, 29 'translatePage' => True, 30 'translateSitecontent' => True, 31 ); 32 33 function Translations_UI() 34 { 35 $this->common_ui =& CreateObject('sitemgr.Common_UI',True); 36 $this->t = $GLOBALS['egw']->template; 37 $this->cat_bo = &$GLOBALS['Common_BO']->cats; 38 $this->acl = &$GLOBALS['Common_BO']->acl; 39 $this->sitelanguages = $GLOBALS['Common_BO']->sites->current_site['sitelanguages']; 40 $this->pagebo = &$GLOBALS['Common_BO']->pages; 41 $this->contentbo = &$GLOBALS['Common_BO']->content; 42 $this->modulebo = &$GLOBALS['Common_BO']->modules; 43 } 44 45 function manage() 46 { 47 $this->common_ui->DisplayHeader(lang('Translation Manager')); 48 49 $this->t->set_file('ManageTranslations', 'manage_translations.tpl'); 50 $this->t->set_block('ManageTranslations', 'PageBlock', 'PBlock'); 51 $this->t->set_block('PageBlock', 'langexistpage', 'langpageBlock'); 52 $this->t->set_block('ManageTranslations', 'CategoryBlock', 'CBlock'); 53 $this->t->set_block('CategoryBlock', 'langexistcat', 'langcatBlock'); 54 $this->t->set_block('ManageTranslations', 'sitelanguages', 'slBlock'); 55 56 foreach ($this->sitelanguages as $lang) 57 { 58 $this->t->set_var('sitelanguage',$lang); 59 $this->t->parse('slBlock', 'sitelanguages', true); 60 } 61 $link_data['menuaction'] = "sitemgr.Translations_UI.translateSitecontent"; 62 $this->t->set_var(Array( 63 // 'translation_manager' => lang('Translation Manager'), 64 'lang_catname' => lang('Category Name'), 65 'translate_site_content' => $GLOBALS['egw']->link('/index.php', $link_data), 66 'lang_site_content' => lang('Translate site-wide content blocks'), 67 'colspan' => (count($this->sitelanguages) + 2), 68 'action_url' => $GLOBALS['egw']->link('/index.php',array('menuaction'=>'sitemgr.Translations_UI.manage')), 69 )); 70 $cat_list = $this->cat_bo->getpermittedcatsWrite(); 71 if($cat_list) 72 { 73 for($i = 0; $i < sizeof($cat_list); $i++) 74 { 75 //setup entry in categorblock for translations of categories 76 $cat = $this->cat_bo->getCategory($cat_list[$i]); 77 if ($cat->depth) 78 { 79 $buffer = '-'; 80 } 81 else 82 { 83 $buffer = ''; 84 } 85 $buffer = str_pad('',$cat->depth*18, 86 ' ',STR_PAD_LEFT).$buffer; 87 $this->t->set_var('buffer', $buffer); 88 $this->t->set_var('category', $cat->name); 89 $category_id = $cat_list[$i]; 90 91 $availablelangsforcat = $this->cat_bo->getlangarrayforcategory($cat_list[$i]); 92 $this->t->set_var('langcatBlock',''); 93 foreach ($this->sitelanguages as $lang) 94 { 95 $this->t->set_var('catexistsinlang', in_array($lang,$availablelangsforcat) ? '�' : ' '); 96 $this->t->parse('langcatBlock', 'langexistcat', true); 97 } 98 99 $link_data['menuaction'] = 'sitemgr.Translations_UI.translateCategory'; 100 $link_data['cat_id'] = $cat_list[$i]; 101 $this->t->set_var('translatecat', 102 '<form action="' . $GLOBALS['egw']->link('/index.php',$link_data) . 103 '" method="POST"><input type="submit" name="btnTranslateCategory" value="' . lang('Translate') .'"></form>'); 104 105 //setup page list 106 $this->t->set_var('PBlock', ''); 107 $page_list = $this->pagebo->getPageIDList($cat_list[$i]); 108 if($page_list && sizeof($page_list)>0) 109 { 110 for($j = 0; $j < sizeof($page_list); $j++) 111 { 112 $page = $this->pagebo->getPage($page_list[$j],$this->sitelanguages[0]); 113 $page_description = '<i>' . lang('Page') . ': </i>'.$page->name.'<br><i>' . lang('Title') . ': </i>'.$page->title; 114 $this->t->set_var('page', $page_description); 115 116 $availablelangsforpage = $this->pagebo->getlangarrayforpage($page_list[$j]); 117 $this->t->set_var('langpageBlock',''); 118 foreach ($this->sitelanguages as $lang) 119 { 120 $this->t->set_var('pageexistsinlang', in_array($lang,$availablelangsforpage) ? '�' : ' '); 121 $this->t->parse('langpageBlock', 'langexistpage', true); 122 } 123 124 $link_data['page_id'] = $page_list[$j]; 125 $link_data['menuaction'] = 'sitemgr.Translations_UI.translatePage'; 126 $this->t->set_var('translatepage', 127 '<form action="' . $GLOBALS['egw']->link('/index.php',$link_data) . 128 '" method="POST"><input type="submit" name="btnTranslatePage" value="' . lang('Translate') .'"></form>'); 129 $this->t->parse('PBlock', 'PageBlock', true); 130 } 131 } 132 133 $this->t->parse('CBlock', 'CategoryBlock', true); 134 } 135 } 136 else 137 { 138 $this->t->set_var('category','No category is available'); 139 } 140 $this->t->pfp('out', 'ManageTranslations'); 141 142 $this->common_ui->DisplayFooter(); 143 } 144 145 function translateCategory() 146 { 147 $GLOBALS['Common_BO']->globalize(array('changelanguage','showlanguage','savelanguage','btnSaveCategory','savecatname','savecatdesc','btnSaveBlock','element','blockid','blocktitle')); 148 global $changelanguage, $showlanguage, $savelanguage, $btnSaveCategory, $savecatname, $savecatdesc,$btnSaveBlock; 149 $cat_id = $_GET['cat_id']; 150 151 if ($btnSaveCategory) 152 { 153 $this->cat_bo->saveCategoryLang($cat_id, $savecatname, $savecatdesc, $savelanguage); 154 } 155 elseif ($btnSaveBlock) 156 { 157 $this->save_block(); 158 } 159 160 $this->common_ui->DisplayHeader(lang('Translate Category')); 161 $this->t->set_file('TranslateCategory', 'translate_category.tpl'); 162 $this->t->set_file('Blocks','translate_block.tpl'); 163 $this->t->set_block('Blocks','Blocktranslator'); 164 $this->t->set_block('Blocktranslator','Version','Vblock'); 165 $this->t->set_block('Blocks','EditorElement','Eblock'); 166 167 if($error) 168 { 169 $this->t->set_var('error_msg',lang('You failed to fill in one or more required fields.')); 170 $cat->name = $savecatname; 171 $cat->description = $savecatdesc; 172 } 173 else 174 { 175 $cat = $this->cat_bo->getCategory($cat_id); 176 $showlanguage = $showlanguage ? $showlanguage : $this->sitelanguages[0]; 177 $showlangdata = $this->cat_bo->getCategory($cat_id,$showlanguage); 178 $savelanguage = $savelanguage ? $savelanguage : $this->sitelanguages[1]; 179 $savelangdata = $this->cat_bo->getCategory($cat_id,$savelanguage); 180 181 $this->templatehelper(); 182 $this->t->set_var(Array( 183 // 'translate' => lang('Translate Category'), 184 'catid' => $cat_id, 185 'lang_catname' => lang('Category Name'), 186 'showcatname' => $showlangdata->name, 187 'savecatname' => $savelangdata->name, 188 'lang_catdesc' => lang('Category Description'), 189 'showcatdesc' => $showlangdata->description, 190 'savecatdesc' => $savelangdata->description, 191 'lang_contentblocks' => lang('Content blocks for category'), 192 'action_url' => $GLOBALS['egw']->link('/index.php',array( 193 'menuaction'=>'sitemgr.Translations_UI.translateCategory', 194 'cat_id' => $cat_id, 195 )), 196 )); 197 198 //Content blocks 199 $this->process_blocks($this->contentbo->getblocksforscope($cat_id,0)); 200 $this->t->pfp('out','TranslateCategory'); 201 } 202 $this->common_ui->DisplayFooter(); 203 } 204 205 function translatePage() 206 { 207 $GLOBALS['Common_BO']->globalize(array('changelanguage','showlanguage','savelanguage','btnSavePage','savepagetitle','savepagesubtitle','btnSaveBlock','element','blockid','blocktitle')); 208 global $changelanguage, $showlanguage, $savelanguage, $btnSavePage, $savepagetitle, $savepagesubtitle,$btnSaveBlock; 209 $page_id = $_GET['page_id']; 210 211 if ($btnSavePage) 212 { 213 $page->id = $page_id; 214 $page->title = $savepagetitle; 215 $page->subtitle = $savepagesubtitle; 216 $this->pagebo->savePageLang($page, $savelanguage); 217 } 218 elseif ($btnSaveBlock) 219 { 220 $this->save_block(); 221 } 222 $this->t->set_file('TranslatePage', 'translate_page.tpl'); 223 $this->t->set_file('Blocks','translate_block.tpl'); 224 $this->t->set_block('Blocks','Blocktranslator'); 225 $this->t->set_block('Blocktranslator','Version','Vblock'); 226 $this->t->set_block('Blocks','EditorElement','Eblock'); 227 228 //TODO: error handling seems not correct 229 if($error) 230 { 231 $this->common_ui->DisplayHeader(lang('Translate Page').' '.$page->name); 232 $this->t->set_var('error_msg',lang('You failed to fill in one or more required fields.')); 233 $page->title = $savepagetitle; 234 $page->subtitle = $savepagesubtitle; 235 } 236 else 237 { 238 $page = $this->pagebo->getPage($page_id); 239 $showlanguage = $showlanguage ? $showlanguage : $this->sitelanguages[0]; 240 $showlangdata = $this->pagebo->getPage($page_id,$showlanguage); 241 $savelanguage = $savelanguage ? $savelanguage : $this->sitelanguages[1]; 242 $savelangdata = $this->pagebo->getPage($page_id,$savelanguage); 243 244 $this->templatehelper(); 245 $this->t->set_var(Array( 246 // 'translate' => lang('Translate Page'), 247 'pageid' => $page_id, 248 'lang_pagename' => lang('Page Name'), 249 // 'pagename' => $page->name, 250 'lang_pagetitle' => lang('Page Title'), 251 'showpagetitle' => $showlangdata->title, 252 'savepagetitle' => $savelangdata->title, 253 'lang_pagesubtitle' => lang('Page Subtitle'), 254 'showpagesubtitle' => $showlangdata->subtitle, 255 'savepagesubtitle' => $savelangdata->subtitle, 256 'lang_contentblocks' => lang('Content blocks for category'), 257 'action_url' => $GLOBALS['egw']->link('/index.php',array( 258 'menuaction'=>'sitemgr.Translations_UI.translatePage', 259 'page_id' => $page_id, 260 )), 261 )); 262 263 //Content blocks 264 $this->process_blocks($this->contentbo->getblocksforscope($page->cat_id,$page_id)); 265 $this->common_ui->DisplayHeader(lang('Translate Page')); 266 $this->t->pfp('out','TranslatePage'); 267 } 268 $this->common_ui->DisplayFooter(); 269 } 270 271 function translateSitecontent() 272 { 273 $GLOBALS['Common_BO']->globalize(array('changelanguage','showlanguage','savelanguage','btnSaveBlock','element','blockid','blocktitle')); 274 global $changelanguage, $showlanguage, $savelanguage, $btnSaveBlock; 275 276 if ($btnSaveBlock) 277 { 278 $this->save_block(); 279 } 280 281 $this->t->set_file('TranslateSitecontent', 'translate_sitecontent.tpl'); 282 $this->t->set_file('Blocks','translate_block.tpl'); 283 $this->t->set_block('Blocks','Blocktranslator'); 284 $this->t->set_block('Blocktranslator','Version','Vblock'); 285 $this->t->set_block('Blocks','EditorElement','Eblock'); 286 287 $showlanguage = $showlanguage ? $showlanguage : $this->sitelanguages[0]; 288 $savelanguage = $savelanguage ? $savelanguage : $this->sitelanguages[1]; 289 290 $this->templatehelper(); 291 292 $this->process_blocks($this->contentbo->getblocksforscope(CURRENT_SITE_ID,0)); 293 $this->common_ui->DisplayHeader(lang('Translate site-wide content blocks')); 294 $this->t->pfp('out','TranslateSitecontent'); 295 } 296 297 function process_blocks($blocks) 298 { 299 global $showlanguage,$savelanguage; 300 301 while (list($id,$block) = @each($blocks)) 302 { 303 $moduleobject =& $this->modulebo->createmodule($block->module_name); 304 $this->t->set_var('moduleinfo',($block->module_name)); 305 306 $savelangtitle = $this->contentbo->getlangblocktitle($id,$savelanguage); 307 $showlangtitle = $this->contentbo->getlangblocktitle($id,$showlanguage); 308 $savelangversions = $this->contentbo->getallversionsforblock($id,$savelanguage); 309 $showlangversions = $this->contentbo->getallversionsforblock($id,$showlanguage); 310 $translatorstandardelements = array( 311 array('label' => lang('Title'), 312 'value' => ($showlangtitle ? $showlangtitle : $moduleobject->title), 313 'form' => ('<input type="text" name="blocktitle" value="' . 314 ($savelangtitle ? $savelangtitle : $moduleobject->title) . '" />') 315 ) 316 ); 317 $moduleobject->set_block($block); 318 $saveblock = $block; 319 // $translatormoduleelements = $moduleobject->get_translation_interface($block,$saveblock); 320 321 // $interface = array_merge($translatorstandardelements,$translatormoduleelements); 322 323 $this->t->set_var('standardelements',''); 324 while (list(,$element) = each($translatorstandardelements)) 325 { 326 $this->t->set_var(Array( 327 'label' => $element['label'], 328 'value' => $element['value'], 329 'form' => $element['form'] 330 )); 331 $this->t->parse('standardelements','EditorElement', true); 332 } 333 $this->t->set_var('Vblock',''); 334 while (list($version_id,$version) = each($showlangversions)) 335 { 336 //set the version of the block which is referenced by the moduleobject, 337 //so that we retrieve a interface with the current version's arguments 338 $block->set_version($version); 339 $saveblock->set_version($savelangversions[$version_id]); 340 $translatormoduleelements = $moduleobject->get_translation_interface($block,$saveblock); 341 $this->t->set_var(array( 342 'version_id' => $version_id, 343 'version_state' => $GLOBALS['Common_BO']->state[$version['state']], 344 'versionelements' => '' 345 )); 346 while (list(,$element) = each($translatormoduleelements)) 347 { 348 $this->t->set_var(Array( 349 'label' => $element['label'], 350 'value' => $element['value'], 351 'form' => $element['form'] 352 )); 353 $this->t->parse('versionelements','EditorElement', true); 354 } 355 $this->t->parse('Vblock','Version', true); 356 } 357 $this->t->set_var(Array( 358 'blockid' => $id, 359 )); 360 $this->t->parse('blocks','Blocktranslator', true); 361 } 362 } 363 364 function save_block() 365 { 366 global $blockid, $element,$blocktitle,$savelanguage; 367 368 $block =& CreateObject('sitemgr.Block_SO',True); 369 $block->id = $blockid; 370 $block->title = $blocktitle; 371 $result = $this->contentbo->saveblockdatalang($block,$element,$savelanguage); 372 if ($result !== True) 373 { 374 $this->t->set_var('validationerror', $result); 375 } 376 } 377 378 function templatehelper() 379 { 380 global $showlanguage,$savelanguage; 381 382 $this->t->set_var(Array( 383 'lang_refresh' => '<input type="submit" value="' . lang('Refresh') .'" name="changelanguage">', 384 'savebutton' => '<input type="submit" value="Save" name="btnSaveBlock" />', 385 'lang_reset' => lang('Reset'), 386 'lang_save' => lang('Save') 387 )); 388 $select = '<select name="showlanguage">'; 389 foreach ($this->sitelanguages as $lang) 390 { 391 $selected= ''; 392 if ($lang == $showlanguage) 393 { 394 $selected = 'selected="selected" '; 395 } 396 $select .= '<option ' . $selected .'value="' . $lang . '">'. $GLOBALS['Common_BO']->getlangname($lang) . '</option>'; 397 } 398 $select .= '</select> '; 399 $this->t->set_var('showlang', $select); 400 401 $select = '<select name="savelanguage">'; 402 foreach ($this->sitelanguages as $lang) 403 { 404 $selected= ''; 405 if ($lang == $savelanguage) 406 { 407 $selected = 'selected="selected" '; 408 } 409 $select .= '<option ' . $selected .'value="' . $lang . '">'. $GLOBALS['Common_BO']->getlangname($lang) . '</option>'; 410 } 411 $select .= '</select>'; 412 $this->t->set_var('savelang', $select); 413 } 414 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |