diff --git a/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php b/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php index 7debd12..e072f48 100644 --- a/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php +++ b/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php @@ -275,23 +275,25 @@ class InlineParagraphsWidget extends WidgetBase { ); } - $links['remove_button'] = array( - '#type' => 'submit', - '#value' => t('Remove'), - '#name' => strtr($id_prefix, '-', '_') . '_remove', - '#weight' => 500, - '#submit' => array(array(get_class($this), 'removeItemSubmit')), - '#limit_validation_errors' => array(array_merge($parents, array($field_name, 'add_more'))), - '#delta' => $delta, - '#ajax' => array( - 'callback' => array(get_class($this), 'itemAjax'), - 'wrapper' => $widget_state['ajax_wrapper_id'], - 'effect' => 'fade', - ), - '#access' => $paragraphs_entity->access('delete'), - '#prefix' => '
  • ', - '#suffix' => '
  • ', - ); + if ($paragraphs_entity->language()->getId() == $paragraphs_entity->getUntranslated()->language()->getId()) { + $links['remove_button'] = array( + '#type' => 'submit', + '#value' => t('Remove'), + '#name' => strtr($id_prefix, '-', '_') . '_remove', + '#weight' => 500, + '#submit' => array(array(get_class($this), 'removeItemSubmit')), + '#limit_validation_errors' => array(array_merge($parents, array($field_name, 'add_more'))), + '#delta' => $delta, + '#ajax' => array( + 'callback' => array(get_class($this), 'itemAjax'), + 'wrapper' => $widget_state['ajax_wrapper_id'], + 'effect' => 'fade', + ), + '#access' => $paragraphs_entity->access('delete'), + '#prefix' => '
  • ', + '#suffix' => '
  • ', + ); + } $info['edit_button_info'] = array( '#type' => 'markup', @@ -710,38 +712,80 @@ class InlineParagraphsWidget extends WidgetBase { } // Add 'add more' button, if not working with a programmed form. - if (($real_item_count < $cardinality || $cardinality == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) && !$form_state->isProgrammed()) { - $elements['add_more'] = array( - '#type' => 'container', - '#theme_wrappers' => array('paragraphs_dropbutton_wrapper'), - ); - - if (count($access_options)) { - if ($this->getSetting('add_mode') == 'button' || ($this->getSetting('add_mode') == 'dropdown' && count($access_options) === 1)) { + if ( $items->getEntity()->language()->getId() == $items->getEntity()->getUntranslated()->language()->getId()) { + if (($real_item_count < $cardinality || $cardinality == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) && !$form_state->isProgrammed()) { + $elements['add_more'] = array( + '#type' => 'container', + '#theme_wrappers' => array('paragraphs_dropbutton_wrapper'), + ); - foreach ($access_options as $machine_name => $label) { - $elements['add_more']['add_more_button_' . $machine_name] = array( - '#type' => 'submit', - '#name' => strtr($id_prefix, '-', '_') . '_' . $machine_name . '_add_more', - '#value' => t('Add !type', array('!type' => $label)), - '#attributes' => array('class' => array('field-add-more-submit')), - '#limit_validation_errors' => array(array_merge($parents, array($field_name, 'add_more'))), - '#submit' => array(array(get_class($this), 'addMoreSubmit')), - '#ajax' => array( - 'callback' => array(get_class($this), 'addMoreAjax'), - 'wrapper' => $wrapper_id, - 'effect' => 'fade', - ), - '#bundle_machine_name' => $machine_name, + if (count($access_options)) { + if ($this->getSetting('add_mode') == 'button' || ($this->getSetting('add_mode') == 'dropdown' && count($access_options) === 1)) { + + foreach ($access_options as $machine_name => $label) { + $elements['add_more']['add_more_button_' . $machine_name] = array( + '#type' => 'submit', + '#name' => strtr($id_prefix, '-', '_') . '_' . $machine_name . '_add_more', + '#value' => t('Add !type', array('!type' => $label)), + '#attributes' => array('class' => array('field-add-more-submit')), + '#limit_validation_errors' => array(array_merge($parents, array($field_name, 'add_more'))), + '#submit' => array(array(get_class($this), 'addMoreSubmit')), + '#ajax' => array( + 'callback' => array(get_class($this), 'addMoreAjax'), + 'wrapper' => $wrapper_id, + 'effect' => 'fade', + ), + '#bundle_machine_name' => $machine_name, + ); + } + } + elseif($this->getSetting('add_mode') == 'dropdown') { + foreach ($access_options as $machine_name => $label) { + $elements['add_more']['add_more_button_' . $machine_name] = array( + '#type' => 'submit', + '#name' => strtr($id_prefix, '-', '_') . '_' . $machine_name . '_add_more', + '#value' => t('Add !type', array('!type' => $label)), + '#attributes' => array('class' => array('field-add-more-submit')), + '#limit_validation_errors' => array(array_merge($parents, array($field_name, 'add_more'))), + '#submit' => array(array(get_class($this), 'addMoreSubmit')), + '#ajax' => array( + 'callback' => array(get_class($this), 'addMoreAjax'), + 'wrapper' => $wrapper_id, + 'effect' => 'fade', + ), + '#bundle_machine_name' => $machine_name, + '#prefix' => '
  • ', + '#suffix' => '
  • ', + ); + } + $elements['add_more']['#theme_wrappers'] = array('dropbutton_wrapper', 'paragraphs_dropbutton_wrapper'); + $elements['add_more']['prefix'] = array( + '#markup' => '', + '#weight' => 999, ); } - } - elseif($this->getSetting('add_mode') == 'dropdown') { - foreach ($access_options as $machine_name => $label) { - $elements['add_more']['add_more_button_' . $machine_name] = array( + else { + $elements['add_more']['add_more_select'] = array( + '#type' => 'select', + '#options' => $options, + '#title' => t('!title type', array('!title' => t($this->getSetting('title')))), + '#label_display' => 'hidden', + ); + + $text = t('Add !title', array('!title' => t($this->getSetting('title')))); + + if ($real_item_count > 0) { + $text = t('Add another !title', array('!title' => t($this->getSetting('title')))); + } + + $elements['add_more']['add_more_button'] = array( '#type' => 'submit', - '#name' => strtr($id_prefix, '-', '_') . '_' . $machine_name . '_add_more', - '#value' => t('Add !type', array('!type' => $label)), + '#name' => strtr($id_prefix, '-', '_') . '_add_more', + '#value' => $text, '#attributes' => array('class' => array('field-add-more-submit')), '#limit_validation_errors' => array(array_merge($parents, array($field_name, 'add_more'))), '#submit' => array(array(get_class($this), 'addMoreSubmit')), @@ -750,62 +794,22 @@ class InlineParagraphsWidget extends WidgetBase { 'wrapper' => $wrapper_id, 'effect' => 'fade', ), - '#bundle_machine_name' => $machine_name, - '#prefix' => '
  • ', - '#suffix' => '
  • ', ); } - $elements['add_more']['#theme_wrappers'] = array('dropbutton_wrapper', 'paragraphs_dropbutton_wrapper'); - $elements['add_more']['prefix'] = array( - '#markup' => '', - '#weight' => 999, - ); } else { - $elements['add_more']['add_more_select'] = array( - '#type' => 'select', - '#options' => $options, - '#title' => t('!title type', array('!title' => t($this->getSetting('title')))), - '#label_display' => 'hidden', - ); - - $text = t('Add !title', array('!title' => t($this->getSetting('title')))); - - if ($real_item_count > 0) { - $text = t('Add another !title', array('!title' => t($this->getSetting('title')))); + if (count($options)) { + $elements['add_more']['info'] = array( + '#type' => 'markup', + '#markup' => '' . t('You are not allowed to add any of the !title types.', array('!title' => t($this->getSetting('title')))) . '', + ); + } + else { + $elements['add_more']['info'] = array( + '#type' => 'markup', + '#markup' => '' . t('You did not add any !title types yet.', array('!title' => t($this->getSetting('title')))) . '', + ); } - - $elements['add_more']['add_more_button'] = array( - '#type' => 'submit', - '#name' => strtr($id_prefix, '-', '_') . '_add_more', - '#value' => $text, - '#attributes' => array('class' => array('field-add-more-submit')), - '#limit_validation_errors' => array(array_merge($parents, array($field_name, 'add_more'))), - '#submit' => array(array(get_class($this), 'addMoreSubmit')), - '#ajax' => array( - 'callback' => array(get_class($this), 'addMoreAjax'), - 'wrapper' => $wrapper_id, - 'effect' => 'fade', - ), - ); - } - } - else { - if (count($options)) { - $elements['add_more']['info'] = array( - '#type' => 'markup', - '#markup' => '' . t('You are not allowed to add any of the !title types.', array('!title' => t($this->getSetting('title')))) . '', - ); - } - else { - $elements['add_more']['info'] = array( - '#type' => 'markup', - '#markup' => '' . t('You did not add any !title types yet.', array('!title' => t($this->getSetting('title')))) . '', - ); } } }