![]() |
Xataface 2.0
Xataface Application Framework
|
00001 <?php 00002 import( 'HTML/QuickForm.php'); 00003 import('Dataface/TranslationTool.php'); 00004 import( 'I18Nv2/Language.php'); 00005 class dataface_actions_set_translation_status { 00006 00007 function handle(&$params){ 00008 $app =& Dataface_Application::getInstance(); 00009 $query =& $app->getQuery(); 00010 00011 $this->table =& Dataface_Table::loadTable($query['-table']); 00012 00013 00014 00015 $translations =& $this->table->getTranslations(); 00016 foreach (array_keys($translations) as $trans){ 00017 $this->table->getTranslation($trans); 00018 } 00019 //print_r($translations); 00020 if ( !isset($translations) || count($translations) < 2 ){ 00021 // there are no translations to be made 00022 throw new Exception('Attempt to translate a record in a table "'.$this->table->tablename.'" that contains no translations.', E_USER_ERROR); 00023 } 00024 00025 $this->translatableLanguages = array_keys($translations); 00026 $translatableLanguages =& $this->translatableLanguages; 00027 $this->languageCodes = new I18Nv2_Language($app->_conf['lang']); 00028 $languageCodes =& $this->languageCodes; 00029 $currentLanguage = $languageCodes->getName( $app->_conf['lang']); 00030 00031 if ( count($translatableLanguages) < 2 ){ 00032 return PEAR::raiseError( 00033 df_translate('Not enough languages to translate', 00034 'There aren\'t enough languages available to translate.'), DATAFACE_E_ERROR); 00035 00036 } 00037 00038 //$defaultSource = $translatableLanguages[0]; 00039 //$defaultDest = $translatableLanguages[1]; 00040 00041 $options = array(); 00042 foreach ($translatableLanguages as $lang){ 00043 $options[$lang] = $languageCodes->getName($lang); 00044 } 00045 unset($options[$app->_conf['default_language']]); 00046 00047 00048 $tt = new Dataface_TranslationTool(); 00049 00050 00051 $form = new HTML_QuickForm('StatusForm', 'POST'); 00052 $form->addElement('select', '--language', 'Translation', $options); 00053 $form->addElement('select','--status', 'Status', $tt->translation_status_codes); 00054 //$form->setDefaults( array('-sourceLanguage'=>$defaultSource, '-destinationLanguage'=>$defaultDest)); 00055 $form->addElement('submit','--set_status','Set Status'); 00056 foreach ( $query as $key=>$value ){ 00057 $form->addElement('hidden', $key); 00058 00059 $form->setDefaults(array($key=>$value)); 00060 00061 00062 } 00063 00064 if ( $form->validate() ){ 00065 $res = $form->process( array(&$this, 'processForm')); 00066 if ( PEAR::isError($res) ) return $res; 00067 else { 00068 $app->redirect($app->url('-action=list&-sourceLanguage=&-destinationLanguage=&-translate=').'&--msg='.urlencode('Translation status successfully set.')); 00069 } 00070 } 00071 00072 ob_start(); 00073 $form->display(); 00074 $out = ob_get_contents(); 00075 ob_end_clean(); 00076 $records =& $this->getRecords(); 00077 df_display(array('form'=>$out, 'translationTool'=>&$tt, 'records'=>&$records,'translations'=>&$options, 'context'=>&$this), 'Dataface_set_translation_status.html'); 00078 } 00079 00080 function printTranslationStatus(&$record, $language, &$translationTool){ 00081 $trec =& $translationTool->getTranslationRecord($record, $language); 00082 00083 return $translationTool->translation_status_codes[$trec->val('translation_status')]; 00084 } 00085 00086 00087 function processForm($values){ 00088 00089 $records =& $this->getRecords(); 00090 $tt = new Dataface_TranslationTool(); 00091 foreach ($records as $record){ 00092 $tt->setTranslationStatus($record, $values['--language'], $values['--status']); 00093 } 00094 00095 00096 } 00097 00098 function &getRecords(){ 00099 $app =& Dataface_Application::getInstance(); 00100 $query = $app->getQuery(); 00101 $query['-skip'] = 0; 00102 $query['-limit'] = 500; 00103 $records =& df_get_records_array($query['-table'], $query); 00104 return $records; 00105 } 00106 } 00107 00108 ?>