refactor: finish ‘Referrers and Tooltips’ settings section

This commit is contained in:
Ben Goldsworthy 2021-08-07 16:45:47 +01:00
parent b14fbad0e5
commit 1183794170
27 changed files with 1965 additions and 1586 deletions

View file

@ -0,0 +1,105 @@
<?php
/**
* File providing the `TooltipTruncationSettingsGroup` class.
*
* @package footnotes
* @since 2.8.0
*/
declare(strict_types=1);
namespace footnotes\includes\settings\referrersandtooltips;
require_once plugin_dir_path( __DIR__ ) . 'class-settings-group.php';
use footnotes\includes\Settings;
use footnotes\includes\settings\Setting;
use footnotes\includes\settings\SettingsGroup;
/**
* Class defining the tooltip truncation settings.
*
* @package footnotes
* @since 2.8.0
*/
class TooltipTruncationSettingsGroup extends SettingsGroup {
/**
* Setting group ID.
*
* @var string
*
* @since 2.8.0
*/
const GROUP_ID = 'tooltip-truncation';
/**
* Settings container key to enable tooltip truncation.
*
* @var array
*
* @since 1.5.4
* @since 2.8.0 Move from `Settings` to `ReferenceContainerSettingsGroup`.
* Convert from `string` to `array`.
* Convert setting data type from `string` to `boolean`.
* @todo The mouse-over content truncation should be enabled by default to raise
* awareness of the functionality, prevent the screen from being filled on
* mouse-over, and allow the use of Continue Reading functionality.
*/
const FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED = array(
'key' => 'footnote_inputfield_custom_mouse_over_box_excerpt_enabled',
'name' => 'Truncate the Note in the Tooltip',
'default_value' => true,
'type' => 'boolean',
'input_type' => 'checkbox',
);
/**
* Settings container key for the mouse-over box to define the max. length of
* the enabled excerpt.
*
* The default truncation length is 200 chars.
*
* @var array
*
* @since 1.5.4
* @since 2.8.0 Move from `Settings` to `ReferenceContainerSettingsGroup`.
* Convert from `string` to `array`.
*/
const FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH = array(
'key' => 'footnote_inputfield_custom_mouse_over_box_excerpt_length',
'name' => 'Maximum Number of Characters in the Tooltip',
'description' => 'No weird cuts.',
'default_value' => 200,
'type' => 'number',
'input_type' => 'number',
'input_max' => 10000,
'input_min' => 3,
);
/**
* Settings container key for the label of the Read-on button in truncated tooltips.
*
* @var array
*
* @since 2.1.0
* @since 2.8.0 Move from `Settings` to `ReferenceContainerSettingsGroup`.
* Convert from `string` to `array`.
*/
const FOOTNOTES_TOOLTIP_READON_LABEL = array(
'key' => 'footnote_inputfield_readon_label',
'name' => '\'Read on\' Button Label',
'default_value' => 'Continue reading',
'type' => 'string',
'input_type' => 'text',
);
protected function add_settings( array|false $options ): void {
$this->settings = array(
self::FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED['key'] => $this->add_setting( self::FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED ),
self::FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH['key'] => $this->add_setting( self::FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH ),
self::FOOTNOTES_TOOLTIP_READON_LABEL['key'] => $this->add_setting( self::FOOTNOTES_TOOLTIP_READON_LABEL ),
);
$this->load_values( $options );
}
}