[ Index ]
 

Code source de eGroupWare 1.2.106-2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/sitemgr/inc/ -> class.Translations_UI.inc.php (source)

   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                          '&nbsp;',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) ? '�' : '&nbsp;');
  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) ? '�' : '&nbsp;');
 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      }


Généré le : Sun Feb 25 17:20:01 2007 par Balluche grâce à PHPXref 0.7