Skip to content
Snippets Groups Projects
Commit 2e9e9cf6 authored by Andy Hebrank's avatar Andy Hebrank
Browse files

refactor, cleanup, clarify 'enhanced styling' setting

parent daca3acb
No related branches found
No related tags found
No related merge requests found
File moved
...@@ -14,11 +14,11 @@ div.soft-length-limit-tooltip.description { ...@@ -14,11 +14,11 @@ div.soft-length-limit-tooltip.description {
/* Min/Enhanced tooltip */ /* Min/Enhanced tooltip */
.fieldset-wrapper .form-item .soft-length-limit-tooltip.min-style-tooltip, .fieldset-wrapper .form-item .soft-length-limit-tooltip.min-style-tooltip,
.field-type-text .form-item .soft-length-limit-tooltip.min-style-tooltip, .field-type-text .form-item .soft-length-limit-tooltip.min-style-tooltip,
.form-item.form-type-textfield .soft-length-limit-tooltip.min-style-tooltip, .form-item.form-type--textfield .soft-length-limit-tooltip.min-style-tooltip,
.form-item.form-type-textarea .soft-length-limit-tooltip.min-style-tooltip { .form-item.form-type--textarea .soft-length-limit-tooltip.min-style-tooltip {
background-color: transparent; background-color: transparent;
background-image: url(../img/ico_socpub_confirm.png); background-image: url(../img/ico_socpub_confirm.png);
background-position: left top; background-position: left center;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 15px 15px; background-size: 15px 15px;
left: auto !important; left: auto !important;
...@@ -30,20 +30,20 @@ div.soft-length-limit-tooltip.description { ...@@ -30,20 +30,20 @@ div.soft-length-limit-tooltip.description {
right: 10px; right: 10px;
} }
.form-item.form-type-textfield .soft-length-limit-tooltip.min-style-tooltip { .form-item.form-type--textfield .soft-length-limit-tooltip.min-style-tooltip {
margin-left: 5px; margin-left: 5px;
} }
.fieldset-wrapper .form-item .soft-length-limit-tooltip.min-style-tooltip.under-min, .fieldset-wrapper .form-item .soft-length-limit-tooltip.min-style-tooltip.under-min,
.form-item.form-type-textfield .soft-length-limit-tooltip.min-style-tooltip.under-min, .form-item.form-type--textfield .soft-length-limit-tooltip.min-style-tooltip.under-min,
.field-type-text .form-item .soft-length-limit-tooltip.min-style-tooltip.under-min, .field-type-text .form-item .soft-length-limit-tooltip.min-style-tooltip.under-min,
.form-item.form-type-textarea .soft-length-limit-tooltip.min-style-tooltip.under-min { .form-item.form-type--textarea .soft-length-limit-tooltip.min-style-tooltip.under-min {
background-image: url(../img/ico_socpub_alert.png); background-image: url(../img/ico_socpub_alert.png);
} }
.fieldset-wrapper .form-item .soft-length-limit-tooltip.min-style-tooltip.exceeded, .fieldset-wrapper .form-item .soft-length-limit-tooltip.min-style-tooltip.exceeded,
.form-item.form-type-textfield .soft-length-limit-tooltip.min-style-tooltip.exceeded, .form-item.form-type--textfield .soft-length-limit-tooltip.min-style-tooltip.exceeded,
.field-type-text .form-item .soft-length-limit-tooltip.min-style-tooltip.exceeded, .field-type-text .form-item .soft-length-limit-tooltip.min-style-tooltip.exceeded,
.form-item.form-type-textarea .soft-length-limit-tooltip.min-style-tooltip.exceeded { .form-item.form-type--textarea .soft-length-limit-tooltip.min-style-tooltip.exceeded {
background-image: url(../img/ico_socpub_alert.png); background-image: url(../img/ico_socpub_alert.png);
} }
name: Soft Length Limit Migrate
type: module
description: Migration Support for soft_length_limit
package: Migrate
core_version_requirement: ^9 || ^10
<?php
/**
* @file
* Soft Length Limit Migrate module.
*/
use Drupal\migrate\Plugin\MigrateSourceInterface;
use Drupal\migrate\Plugin\MigrationInterface;
use Drupal\migrate\Row;
/**
* Implements hook_migrate_prepare_row().
*/
function soft_length_limit_migrate_migrate_prepare_row(Row $row, MigrateSourceInterface $source, MigrationInterface $migration) {
// Add migrate support to migrate D7 settings into D8 fields.
$text_fields = [
'text_textarea',
'text_textfield',
'text_textarea_with_summary',
'text_long',
];
if ($source->getPluginId() !== 'd7_field_instance_per_form_display' || !in_array($row->getSource()['type'], $text_fields)) {
return;
}
$widget_settings = $row->getSourceProperty('widget')['settings'];
if (!empty($widget_settings['soft_length_limit']) || !empty($widget_settings['soft_length_minimum'])) {
$constants = $row->getSourceProperty('constants');
$constants['third_party_settings']['soft_length_limit'] = [
'max_limit' => $widget_settings['soft_length_limit'],
'minimum_limit' => $widget_settings['soft_length_minimum'],
'style_select' => $widget_settings['soft_length_style_select'],
];
$row->setSourceProperty('constants', $constants);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="phpcs-standard">
<description>Codestyle ruleset for Drupal</description>
<!-- Specify standards. These assume "composer global require drupal/coder"-->
<rule ref="Drupal"/>
<rule ref="DrupalPractice"/>
<!-- Set ignore extensions. -->
<!-- @todo remove .css to check also the css files. -->
<!-- @see https://www.drupal.org/node/2867601#comment-12075633 -->
<arg name="ignore" value="*.css,*.md,*.txt"/>
</ruleset>
...@@ -10,58 +10,20 @@ declare(strict_types = 1); ...@@ -10,58 +10,20 @@ declare(strict_types = 1);
use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\WidgetInterface; use Drupal\Core\Field\WidgetInterface;
use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Form\FormStateInterface;
use Drupal\migrate\Plugin\MigrateSourceInterface; use Drupal\soft_length_limit\SoftLengthLimitWidgetSettings;
use Drupal\migrate\Plugin\MigrationInterface;
use Drupal\migrate\Row;
/**
* Returns the widget settings that can be used for a soft_length widget.
*
* @return array
* An array of settings and default values for each textfield type.
*/
function _soft_length_widget_settings(string $plugin_id): array {
$settings = [
'string_textfield' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
'string_textarea' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
'text_textfield' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
'text_textarea' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
'text_textarea_with_summary' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
];
return $settings[$plugin_id] ?? [];
}
/** /**
* Implements hook_field_widget_third_party_settings_form(). * Implements hook_field_widget_third_party_settings_form().
*/ */
function soft_length_limit_field_widget_third_party_settings_form(WidgetInterface $plugin, FieldDefinitionInterface $field_definition, $form_mode, $form, FormStateInterface $form_state) { function soft_length_limit_field_widget_third_party_settings_form(WidgetInterface $plugin, FieldDefinitionInterface $field_definition, $form_mode, $form, FormStateInterface $form_state) {
$plugin_id = $plugin->getPluginId(); if (!$allowed_settings = SoftLengthLimitWidgetSettings::allowedForPlugin($plugin->getPluginId())) {
if (!$allowed_settings = _soft_length_widget_settings($plugin_id)) { return;
return NULL;
} }
$element = []; $element = [
'#type' => 'fieldset',
'#title' => 'Soft length limit',
];
if ($allowed_settings['max_limit']) { if ($allowed_settings['max_limit']) {
$element['max_limit'] = [ $element['max_limit'] = [
'#type' => 'number', '#type' => 'number',
...@@ -87,9 +49,9 @@ function soft_length_limit_field_widget_third_party_settings_form(WidgetInterfac ...@@ -87,9 +49,9 @@ function soft_length_limit_field_widget_third_party_settings_form(WidgetInterfac
if ($allowed_settings['style_select']) { if ($allowed_settings['style_select']) {
$element['style_select'] = [ $element['style_select'] = [
'#type' => 'checkbox', '#type' => 'checkbox',
'#title' => t('Enable enhanced view'), '#title' => t('Minimal styling'),
'#default_value' => $plugin->getThirdPartySetting('soft_length_limit', 'style_select'), '#default_value' => $plugin->getThirdPartySetting('soft_length_limit', 'style_select'),
'#description' => t('Check this to enable an enhanced view of soft length states.'), '#description' => t('Enable a minimal view of limit state, with icons.'),
'#weight' => -1, '#weight' => -1,
]; ];
} }
...@@ -103,10 +65,8 @@ function soft_length_limit_field_widget_third_party_settings_form(WidgetInterfac ...@@ -103,10 +65,8 @@ function soft_length_limit_field_widget_third_party_settings_form(WidgetInterfac
function soft_length_limit_field_widget_settings_summary_alter(&$summary, $context) { function soft_length_limit_field_widget_settings_summary_alter(&$summary, $context) {
/* @var \Drupal\Core\Field\WidgetInterface $widget */ /* @var \Drupal\Core\Field\WidgetInterface $widget */
$widget = $context['widget']; $widget = $context['widget'];
$plugin_id = $widget->getPluginId(); if (!$allowed_settings = SoftLengthLimitWidgetSettings::allowedForPlugin($widget->getPluginId())) {
return;
if (!$allowed_settings = _soft_length_widget_settings($plugin_id)) {
return NULL;
} }
$max_limit = $allowed_settings['max_limit'] $max_limit = $allowed_settings['max_limit']
...@@ -126,7 +86,7 @@ function soft_length_limit_field_widget_settings_summary_alter(&$summary, $conte ...@@ -126,7 +86,7 @@ function soft_length_limit_field_widget_settings_summary_alter(&$summary, $conte
$summary[] = t('Minimum recommended length: @count', ['@count' => $minimum_limit]); $summary[] = t('Minimum recommended length: @count', ['@count' => $minimum_limit]);
} }
if ($style_select) { if ($style_select) {
$summary[] = t('Style select: @style', ['@style' => $style_select ? 'Enabled' : 'Disabled']); $summary[] = t('Minimal styling: @style', ['@style' => $style_select ? 'Enabled' : 'Disabled']);
} }
} }
...@@ -137,7 +97,7 @@ function soft_length_limit_field_widget_single_element_form_alter(&$element, For ...@@ -137,7 +97,7 @@ function soft_length_limit_field_widget_single_element_form_alter(&$element, For
$third_party_settings = $context['widget']->getThirdPartySettings(); $third_party_settings = $context['widget']->getThirdPartySettings();
if (empty($third_party_settings['soft_length_limit'])) { if (empty($third_party_settings['soft_length_limit'])) {
return NULL; return;
} }
$sll_config = $third_party_settings['soft_length_limit']; $sll_config = $third_party_settings['soft_length_limit'];
...@@ -155,37 +115,8 @@ function soft_length_limit_field_widget_single_element_form_alter(&$element, For ...@@ -155,37 +115,8 @@ function soft_length_limit_field_widget_single_element_form_alter(&$element, For
} }
if (isset($element['#type']) && $element['#type'] === 'text_format') { if (isset($element['#type']) && $element['#type'] === 'text_format') {
$element['#attributes'] = array_merge_recursive($element['#attributes'], $element['value']['#attributes']); $element['#attributes'] = array_merge_recursive($element['#attributes'] ?? [], $element['value']['#attributes'] ?? []);
} }
$element['#attached']['library'][] = 'soft_length_limit/soft_length_limit'; $element['#attached']['library'][] = 'soft_length_limit/soft_length_limit';
} }
/**
* Implements hook_migrate_prepare_row().
*/
function soft_length_limit_migrate_prepare_row(Row $row, MigrateSourceInterface $source, MigrationInterface $migration) {
// Add migrate support to migrate D7 settings into D8 fields.
$text_fields = [
'text_textarea',
'text_textfield',
'text_textarea_with_summary',
'text_long',
];
if ($source->getPluginId() !== 'd7_field_instance_per_form_display' || !in_array($row->getSource()['type'], $text_fields)) {
return;
}
$widget_settings = $row->getSourceProperty('widget')['settings'];
if (!empty($widget_settings['soft_length_limit']) || !empty($widget_settings['soft_length_minimum'])) {
$constants = $row->getSourceProperty('constants');
$constants['third_party_settings']['soft_length_limit'] = [
'max_limit' => $widget_settings['soft_length_limit'],
'minimum_limit' => $widget_settings['soft_length_minimum'],
'style_select' => $widget_settings['soft_length_style_select'],
];
$row->setSourceProperty('constants', $constants);
}
}
<?php
namespace Drupal\soft_length_limit;
/**
* Allowed settings helper.
*/
class SoftLengthLimitWidgetSettings {
/**
* Returns the widget settings that can be used for a soft_length widget.
*
* @return array
* An array of settings and default values for each textfield type.
*/
public static function allowedForPlugin(string $plugin_id): array {
$settings = [
'string_textfield' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
'string_textarea' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
'text_textfield' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
'text_textarea' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
'text_textarea_with_summary' => [
'max_limit' => TRUE,
'minimum_limit' => TRUE,
'style_select' => TRUE,
],
];
return $settings[$plugin_id] ?? [];
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment