Xataface  2.0alpha2
Xataface Application Framework
 All Data Structures Namespaces Files Functions Variables Groups Pages
set_translation_status.php
Go to the documentation of this file.
1 <?php
2 import( 'HTML/QuickForm.php');
3 import('Dataface/TranslationTool.php');
4 import( 'I18Nv2/Language.php');
6 
7  function handle(&$params){
9  $query =& $app->getQuery();
10 
11  $this->table =& Dataface_Table::loadTable($query['-table']);
12 
13 
14 
15  $translations =& $this->table->getTranslations();
16  foreach (array_keys($translations) as $trans){
17  $this->table->getTranslation($trans);
18  }
19  //print_r($translations);
20  if ( !isset($translations) || count($translations) < 2 ){
21  // there are no translations to be made
22  throw new Exception('Attempt to translate a record in a table "'.$this->table->tablename.'" that contains no translations.', E_USER_ERROR);
23  }
24 
25  $this->translatableLanguages = array_keys($translations);
26  $translatableLanguages =& $this->translatableLanguages;
27  $this->languageCodes = new I18Nv2_Language($app->_conf['lang']);
28  $languageCodes =& $this->languageCodes;
29  $currentLanguage = $languageCodes->getName( $app->_conf['lang']);
30 
31  if ( count($translatableLanguages) < 2 ){
32  return PEAR::raiseError(
33  df_translate('Not enough languages to translate',
34  'There aren\'t enough languages available to translate.'), DATAFACE_E_ERROR);
35 
36  }
37 
38  //$defaultSource = $translatableLanguages[0];
39  //$defaultDest = $translatableLanguages[1];
40 
41  $options = array();
42  foreach ($translatableLanguages as $lang){
43  $options[$lang] = $languageCodes->getName($lang);
44  }
45  unset($options[$app->_conf['default_language']]);
46 
47 
48  $tt = new Dataface_TranslationTool();
49 
50 
51  $form = new HTML_QuickForm('StatusForm', 'POST');
52  $form->addElement('select', '--language', 'Translation', $options);
53  $form->addElement('select','--status', 'Status', $tt->translation_status_codes);
54  //$form->setDefaults( array('-sourceLanguage'=>$defaultSource, '-destinationLanguage'=>$defaultDest));
55  $form->addElement('submit','--set_status','Set Status');
56  foreach ( $query as $key=>$value ){
57  $form->addElement('hidden', $key);
58 
59  $form->setDefaults(array($key=>$value));
60 
61 
62  }
63 
64  if ( $form->validate() ){
65  $res = $form->process( array(&$this, 'processForm'));
66  if ( PEAR::isError($res) ) return $res;
67  else {
68  $app->redirect($app->url('-action=list&-sourceLanguage=&-destinationLanguage=&-translate=').'&--msg='.urlencode('Translation status successfully set.'));
69  }
70  }
71 
72  ob_start();
73  $form->display();
74  $out = ob_get_contents();
75  ob_end_clean();
76  $records =& $this->getRecords();
77  df_display(array('form'=>$out, 'translationTool'=>&$tt, 'records'=>&$records,'translations'=>&$options, 'context'=>&$this), 'Dataface_set_translation_status.html');
78  }
79 
80  function printTranslationStatus(&$record, $language, &$translationTool){
81  $trec =& $translationTool->getTranslationRecord($record, $language);
82 
83  return $translationTool->translation_status_codes[$trec->val('translation_status')];
84  }
85 
86 
87  function processForm($values){
88 
89  $records =& $this->getRecords();
90  $tt = new Dataface_TranslationTool();
91  foreach ($records as $record){
92  $tt->setTranslationStatus($record, $values['--language'], $values['--status']);
93  }
94 
95 
96  }
97 
98  function &getRecords(){
100  $query = $app->getQuery();
101  $query['-skip'] = 0;
102  $query['-limit'] = 500;
103  $records =& df_get_records_array($query['-table'], $query);
104  return $records;
105  }
106 }
107 
108 ?>