Skip to content
Snippets Groups Projects

#3244002 Add multilingual fields to term edit form

Closed #3244002 Add multilingual fields to term edit form
4 unresolved threads
Closed Martin Malovanets requested to merge issue/taxonomy_manager-3244002:2.0.x into 2.0.x
4 unresolved threads
2 files
+ 83
1
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -359,23 +359,59 @@ class TaxonomyManagerForm extends FormBase {
* AJAX callback handler for the term data form.
*/
public function termDataCallback($form, FormStateInterface $form_state) {
$taxonomy_term = $this->taxonomyTypeManager->load($form_state->getValue('load-term-data'));
$translatable = \Drupal::config('taxonomy_manager.settings')
->get('taxonomy_manager_translations');
$taxonomy_term = $this->taxonomyTypeManager->load($form_state->getValue('load-term-data'));
$term_form = $this->entityFormBuilder->getForm($taxonomy_term, 'default');
$fields = \Drupal::service('entity_field.manager')->getFieldDefinitions($taxonomy_term->getEntityTypeId(), $taxonomy_term->bundle());
// Move the term data form into a fieldset.
$term_form['fieldset']['#type'] = 'fieldset';
$term_form['fieldset']['#title'] = Html::escape($taxonomy_term->getName()) . ' (' . $taxonomy_term->id() . ')';
$term_form['fieldset']['#attributes'] = [];
foreach (Element::children($term_form) as $key) {
if ($key != 'fieldset') {
$term_form['fieldset'][$key] = $term_form[$key];
if ($translatable && $key !== 'langcode' && isset($fields[$key])) {
if ($fields[$key]->isTranslatable()) {
$widget = array_shift($term_form['fieldset'][$key]['widget']);
foreach (\Drupal::service('language_manager')->getLanguages() as $langcode => $language) {
if (!$language->isDefault()) {
if ($taxonomy_term->hasTranslation($langcode)) {
$data = $taxonomy_term->getTranslation($langcode)
->get($key)
->getValue();
foreach ($data as $delta => $values) {
if ($widget['#delta'] == $delta) {
foreach ($values as $value_key => $value) {
$widget['value']['#' . $value_key] = $value;
}
}
}
}
else {
$widget['value']['#value'] = '';
}
$widget['value']['#name'] = "taxonomy_manager_translations[" . $key . "][" . $langcode . "]";
}
$widget['value']['#title'] = $fields[$key]->getLabel() . " (" . $language->getName() . ")";
$term_form['fieldset'][$key]['widget'][$langcode] = $widget;
}
}
}
unset($term_form[$key]);
}
}
$term_form['#prefix'] = '<div id="taxonomy-term-data-form">';
$term_form['#suffix'] = '</div>';
$current_path = $this->currentPath->getPath();
// Change the form action url form the current site to the add form.
$term_form['#action'] = $this->urlGenerator
Loading