function translation_form_alter in Internationalization 5
Same name and namespace in other branches
- 5.3 translation/translation.module \translation_form_alter()
- 5.2 translation/translation.module \translation_form_alter()
Implementation of hook_form_alter().
File
- translation/
translation.module, line 170
Code
function translation_form_alter($form_id, &$form) {
// Node add/edit form
if (isset($form['type']) && $form['type']['#value'] . '_node_form' == $form_id && variable_get('i18n_node_' . $form['type']['#value'], 0)) {
$node = $form['#node'];
// Allow node to set it's own language list
$languages = i18n_node_language_list($node);
// Translation workflow, default
if ($node->nid && $node->translation) {
$translations = $node->translation;
}
elseif (isset($_GET['translation']) && user_access('translate nodes')) {
// We are translating a node: node/add/type/translation/nid/lang
$translation_nid = $_GET['translation'];
$language = $_GET['language'];
// Load the node to be translated and populate fields
$trans = node_load($translation_nid);
$form['i18n']['translation_nid'] = array(
'#type' => 'hidden',
'#value' => $translation_nid,
);
$form['i18n']['language']['#default_value'] = $language;
// Do not allow language change
$form['i18n']['language']['#disabled'] = TRUE;
$form['i18n']['language']['#description'] = t('Language cannot be changed while creating a translation.');
if ($trans->trid) {
$form['i18n']['trid'] = array(
'#type' => 'hidden',
'#value' => $trans->trid,
);
}
// Translations are taken from source node
$translations = $trans->translation;
$translations[$trans->language] = $trans;
}
// Display translations and restrict languages
if ($translations) {
// Unset invalid languages
foreach (array_keys($translations) as $lang) {
unset($form['i18n']['language']['#options'][$lang]);
}
// Add translation list
$form['i18n']['#title'] = t('Language and translations');
$form['i18n']['translations'] = array(
'#type' => 'markup',
'#value' => theme('translation_node_list', $translations, FALSE),
);
}
// Translation workflow
if (variable_get('i18n_translation_workflow', 1) && (user_access('translate nodes') || user_access('administer nodes'))) {
$form['i18n']['i18n_status'] = array(
'#type' => 'select',
'#title' => t('Translation workflow'),
'#options' => _translation_status(),
'#description' => t('Use the translation workflow to keep track of content that needs translation.'),
);
if ($node->nid) {
$form['i18n']['i18n_status']['#default_value'] = isset($node->i18n_status) ? $node->i18n_status : TRANSLATION_STATUS_NONE;
}
elseif (isset($trans)) {
$form['i18n']['i18n_status']['#default_value'] = TRANSLATION_STATUS_WORKING;
}
}
else {
$form['i18n']['i18n_status'] = array(
'#type' => 'value',
'#value' => isset($node->i18n_status) ? $node->i18n_status : TRANSLATION_STATUS_NONE,
);
}
// Clone files for original node ?
if (isset($trans) && is_array($trans->files) && count($trans->files)) {
$form['i18n']['translation_files'] = array(
'#type' => 'fieldset',
'#title' => t('Files from translated content'),
'#tree' => TRUE,
'#prefix' => '<div class="attachments">',
'#suffix' => '</div>',
'#theme' => 'upload_form_current',
'#description' => t('You can remove the files for this translation or keep the original files and translate the description.'),
);
foreach ($trans->files as $key => $file) {
$description = file_create_url(strpos($file->fid, 'upload') === false ? $file->filepath : file_create_filename($file->filename, file_create_path()));
$description = "<small>" . check_plain($description) . "</small>";
$form['i18n']['translation_files'][$key]['description'] = array(
'#type' => 'textfield',
'#default_value' => strlen($file->description) ? $file->description : $file->filename,
'#maxlength' => 256,
'#description' => $description,
);
$form['i18n']['translation_files'][$key]['size'] = array(
'#type' => 'markup',
'#value' => format_size($file->filesize),
);
$form['i18n']['translation_files'][$key]['remove'] = array(
'#type' => 'checkbox',
'#default_value' => 0,
);
$form['i18n']['translation_files'][$key]['list'] = array(
'#type' => 'checkbox',
'#default_value' => $file->list,
);
$form['i18n']['translation_files'][$key]['fid'] = array(
'#type' => 'value',
'#value' => $file->fid,
);
}
}
}
}