X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fbetter_formats%2Fbetter_formats.module;fp=web%2Fmodules%2Fcontrib%2Fbetter_formats%2Fbetter_formats.module;h=7d50aa84facf1468f3f663f0fbf7be333f1268f8;hp=5680144c4ff5c70a1c019df1aa30f1368e79e271;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/web/modules/contrib/better_formats/better_formats.module b/web/modules/contrib/better_formats/better_formats.module index 5680144c4..7d50aa84f 100644 --- a/web/modules/contrib/better_formats/better_formats.module +++ b/web/modules/contrib/better_formats/better_formats.module @@ -9,6 +9,46 @@ use Drupal\Core\Config\Entity\ThirdPartySettingsInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\Element; +/** + * Implements hook_field_widget_form_alter(). + * + */ +function better_formats_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) { + + $field_definition = $context['items']->getFieldDefinition(); + + if (!$field_definition instanceof ThirdPartySettingsInterface) { + return; + } + + $betterFormatsSettings = $field_definition->getThirdPartySettings('better_formats'); + + if (empty($betterFormatsSettings)) { + return; + } + + $element['#better_formats']['settings'] = $betterFormatsSettings; + + $element['#better_formats']['existing_entity'] = FALSE; + + $entity = $context['items']->getEntity(); + + if (!empty($entity)) { + + // Determine if this is an existing entity. + if ($entity->id()) { + $element['#better_formats']['existing_entity'] = TRUE; + } + + $element['#better_formats']['entity_type'] = $entity->getEntityTypeId(); + + $default_value = $field_definition->getDefaultValue($entity); + $default_value = array_shift($default_value); + $element['#better_formats']['default_value'] = isset($default_value['format']) ? $default_value['format'] : NULL; + } + +} + /** * Implements hook_element_info_alter(). */ @@ -45,33 +85,23 @@ function better_formats_filter_process_format(array &$element, FormStateInterfac // format. $access_denied_for_security = isset($element['format']['format']['#access']) && !$element['format']['format']['#access']; - $form_object = $form_state->getFormObject(); - - if ($form_object instanceof Drupal\Core\Entity\ContentEntityForm) { - $entity = $form_state->getFormObject()->getEntity(); - $entity_type = $entity->getEntityTypeId(); - $field_name = reset($element['#parents']); - $field_definition = $entity->getFieldDefinition($field_name); - - if ($field_definition instanceof ThirdPartySettingsInterface) { - $bf = $field_definition->getThirdPartySettings('better_formats'); - - if (Drupal::config('better_formats.settings')->get('per_field_core')) { - $field_defaults = $field_definition->getDefaultValue($entity); - $default_value = array_shift($field_defaults); - better_formats_set_default_format($element, $default_value['format']); - } - } - } - elseif ($form_object instanceof Drupal\field_ui\Form\FieldConfigEditForm) { - $entity = $form_state->getFormObject()->getEntity(); - $entity_type = $entity->getTargetEntityTypeId(); - $bf = $entity->getThirdPartySettings('better_formats'); + if (!empty($element['#better_formats']['settings'])) { + $betterFormatsSettings = $element['#better_formats']['settings']; } else { return $element; } + if (!empty($element['#better_formats']['entity_type'])) { + $entity_type = $element['#better_formats']['entity_type']; + } + + // Whether use the core field module default value to set the default format. + // See /admin/config/content/formats/settings. + if (Drupal::config('better_formats.settings')->get('per_field_core')) { + better_formats_set_default_format($element, $element['#better_formats']['default_value']); + } + // Now hide several parts of the element for cosmetic reasons (depending on // the permissions of the current user). $user = \Drupal::currentUser(); @@ -112,11 +142,10 @@ function better_formats_filter_process_format(array &$element, FormStateInterfac // core will hide the format selector and force the field to be saved with its // current values, and we should not do anything to alter that process. if ($entity_type != NULL && !$access_denied_for_security) { - $eid = $entity->id(); // Need to only do this on create forms. - if (empty($eid) && isset($bf) && !empty($bf['default_order_toggle']) && !empty($bf['default_order_wrapper']['formats'])) { - $order = $bf['default_order_wrapper']['formats']; + if (!$element['#better_formats']['existing_entity'] && isset($betterFormatsSettings) && !empty($betterFormatsSettings['default_order_toggle']) && !empty($betterFormatsSettings['default_order_wrapper']['formats'])) { + $order = $betterFormatsSettings['default_order_wrapper']['formats']; uasort($order, 'better_formats_text_format_sort'); $options = []; @@ -134,9 +163,9 @@ function better_formats_filter_process_format(array &$element, FormStateInterfac better_formats_set_default_format($element, array_shift($options_keys)); } } - if (isset($bf) && !empty($bf['allowed_formats_toggle']) && !empty($bf['allowed_formats'])) { + if (isset($betterFormatsSettings) && !empty($betterFormatsSettings['allowed_formats_toggle']) && !empty($betterFormatsSettings['allowed_formats'])) { // Filter the list of available formats to those allowed on this field. - $allowed_fields = array_filter($bf['allowed_formats']); + $allowed_fields = array_filter($betterFormatsSettings['allowed_formats']); $options = &$element['format']['format']['#options']; $options = array_intersect_key($options, $allowed_fields); @@ -274,10 +303,10 @@ function better_formats_form_field_config_edit_form_alter(&$form, FormStateInter if ($text_processing) { // We have to set an explicit weight here so that we can put the allowed // formats list after it. - $bf_settings = $entity->getThirdPartySettings('better_formats') != NULL ? $entity->getThirdPartySettings('better_formats') : []; + $betterFormatsSettings = $entity->getThirdPartySettings('better_formats') != NULL ? $entity->getThirdPartySettings('better_formats') : []; // Add in the better formats table. - $form['third_party_settings'] += better_formats_field_settings_form($bf_settings); + $form['third_party_settings'] += better_formats_field_settings_form($betterFormatsSettings); $form['third_party_settings']['#weight'] = -4; } } @@ -343,7 +372,7 @@ function better_formats_field_settings_form($bf_form = []) { $form['better_formats']['default_order_toggle'] = [ '#type' => 'checkbox', '#title' => t('Override default order'), - '#description' => t('Override the gloabl order that will determine the default text format a user will get only on entity creation.'), + '#description' => t('Override the global order that will determine the default text format a user will get only on entity creation.'), '#weight' => 3, '#default_value' => $order_toggle_default, ];