Xataface 2.0
Xataface Application Framework
actions/set_translation_status.php
Go to the documentation of this file.
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 ?>
 All Data Structures Namespaces Files Functions Variables Enumerations