Index: branches/5.0.x/core/units/phrases/phrases_config.php =================================================================== diff -u -r12614 -r12640 --- branches/5.0.x/core/units/phrases/phrases_config.php (.../phrases_config.php) (revision 12614) +++ branches/5.0.x/core/units/phrases/phrases_config.php (.../phrases_config.php) (revision 12640) @@ -1,6 +1,6 @@ Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => NULL), 'Translation' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'required' => 1, 'not_null' => 1, 'using_fck' => 1, 'default' => ''), - 'PhraseType' => Array ('type' => 'int', 'required'=>1,'formatter' => 'kOptionsFormatter', 'options'=>Array (0=>'la_PhraseType_Front',1=>'la_PhraseType_Admin',2=>'la_PhraseType_Both'), 'use_phrases' => 1, 'not_null' => 1, 'default' => 0), + 'PhraseType' => Array ( + 'type' => 'int', + 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'la_PhraseType_Front', 1 => 'la_PhraseType_Admin', 2 => 'la_PhraseType_Both'), 'use_phrases' => 1, + 'not_null' => 1, 'required' => 1, 'default' => 0 + ), 'PhraseId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), 'LanguageId' => Array ( @@ -156,8 +160,13 @@ ), 'VirtualFields' => Array ( - 'PrimaryTranslation' => Array (), - 'LangFile' => Array (), + 'PrimaryTranslation' => Array ('type' => 'string', 'default' => ''), + 'LangFile' => Array ( + 'type' => 'string', + 'formatter' => 'kUploadFormatter', + 'max_size' => MAX_UPLOAD_SIZE, 'upload_dir' => WRITEBALE_BASE . '/', + 'max_len' => 255, 'default' => '' + ), 'ImportOverwrite' => Array ('type' => 'int', 'default' => 0), 'DoNotEncode' => Array (), 'PackName' => Array ( Index: branches/5.0.x/core/units/phrases/phrases_event_handler.php =================================================================== diff -u -r12614 -r12640 --- branches/5.0.x/core/units/phrases/phrases_event_handler.php (.../phrases_event_handler.php) (revision 12614) +++ branches/5.0.x/core/units/phrases/phrases_event_handler.php (.../phrases_event_handler.php) (revision 12640) @@ -1,6 +1,6 @@ Special == 'import') { + $object->setRequired('LangFile', true); + $object->setRequired('Phrase', false); + $object->setRequired('Translation', false); + + // allow multiple phrase types to be selected during import + $field_options = $object->GetFieldOptions('PhraseType'); + $field_options['type'] = 'string'; + $object->SetFieldOptions('PhraseType', $field_options); + } } /** Index: branches/5.0.x/core/units/languages/languages_event_handler.php =================================================================== diff -u -r12596 -r12640 --- branches/5.0.x/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 12596) +++ branches/5.0.x/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 12640) @@ -1,6 +1,6 @@ Application->GetVar('phrases_import'); if ($items_info) { list ($id, $field_values) = each($items_info); - $object =& $this->Application->recallObject('phrases.import', 'phrases', Array('skip_autoload' => true) ); - $object->SetFieldsFromHash($field_values); - $filename = getArrayValue($field_values, 'LangFile', 'tmp_name'); - if ( filesize($filename) ) { - $language_import_helper =& $this->Application->recallObject('LanguageImportHelper'); - /* @var $language_import_helper LanguageImportHelper */ + $object =& $this->Application->recallObject('phrases.import', 'phrases', Array('skip_autoload' => true)); + /* @var $object kDBItem */ - $modules = getArrayValue($field_values, 'Module'); - $language_import_helper->performImport($filename, $field_values['PhraseType'], $modules, $field_values['ImportOverwrite'] ? LANG_OVERWRITE_EXISTING : LANG_SKIP_EXISTING); + $object->setID($id); + $object->SetFieldsFromHash($field_values); - $event->SetRedirectParam('opener', 'u'); + if (!$object->Validate()) { + $event->status = erFAIL; + return ; } - else { - $object =& $this->Application->recallObject('phrases.import'); + + $filename = $object->GetField('LangFile', 'full_path'); + + if (!filesize($filename)) { $object->SetError('LangFile', 'la_empty_file', 'la_EmptyFile'); $event->status = erFAIL; } + + $language_import_helper =& $this->Application->recallObject('LanguageImportHelper'); + /* @var $language_import_helper LanguageImportHelper */ + + $language_import_helper->performImport( + $filename, + $object->GetDBField('PhraseType'), + $object->GetDBField('Module'), + $object->GetDBField('ImportOverwrite') ? LANG_OVERWRITE_EXISTING : LANG_SKIP_EXISTING + ); + + // delete uploaded language pack after import is finished + unlink($filename); + + $event->SetRedirectParam('opener', 'u'); } }