You are here

class ReadMore in CKEditor Read More 8

Same name and namespace in other branches
  1. 2.x src/Plugin/CKEditorPlugin/ReadMore.php \Drupal\ckeditor_readmore\Plugin\CKEditorPlugin\ReadMore

Defines the "Google Search" plugin.

Plugin annotation


@CKEditorPlugin(
  id = "readmore",
  label = @Translation("Read more button"),
  module = "ckeditor_readmore"
)

Hierarchy

Expanded class hierarchy of ReadMore

File

src/Plugin/CKEditorPlugin/ReadMore.php, line 19

Namespace

Drupal\ckeditor_readmore\Plugin\CKEditorPlugin
View source
class ReadMore extends CKEditorPluginBase implements CKEditorPluginConfigurableInterface {

  /**
   * Returns the buttons that this plugin provides, along with metadata.
   *
   * The metadata is used by the CKEditor module to generate a visual CKEditor
   * toolbar builder UI.
   *
   * @return array
   *   An array of buttons that are provided by this plugin. This will
   *   only be used in the administrative section for assembling the toolbar.
   *   Each button should be keyed by its CKEditor button name (you can look up
   *   the button name up in the plugin.js file), and should contain an array of
   *   button properties, including:
   *   - label: A human-readable, translated button name.
   *   - image: An image for the button to be used in the toolbar.
   *   - image_rtl: If the image needs to have a right-to-left version, specify
   *     an alternative file that will be used in RTL editors.
   *   - image_alternative: If this button does not render as an image, specify
   *     an HTML string representing the contents of this button.
   *   - image_alternative_rtl: Similar to image_alternative, but a
   *     right-to-left version.
   *   - attributes: An array of HTML attributes which should be added to this
   *     button when rendering the button in the administrative section for
   *     assembling the toolbar.
   *   - multiple: Boolean value indicating if this button may be added multiple
   *     times to the toolbar. This typically is only applicable for dividers
   *     and group indicators.
   */
  public function getButtons() {
    return [
      'btn_readmore' => [
        'label' => $this
          ->t('Read more'),
        'image' => drupal_get_path('module', 'ckeditor_readmore') . '/src/readmore/icons/readmore.png',
      ],
    ];
  }

  /**
   * Returns the Drupal root-relative file path to the plugin JavaScript file.
   *
   * Note: this does not use a Drupal library because this uses CKEditor's API,
   * see http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.resourceManager.html#addExternal.
   *
   * @return string|false
   *   The Drupal root-relative path to the file, FALSE if an internal plugin.
   */
  public function getFile() {
    return drupal_get_path('module', 'ckeditor_readmore') . '/src/readmore/plugin.js';
  }

  /**
   * Returns the additions to CKEDITOR.config for a specific CKEditor instance.
   *
   * The editor's settings can be retrieved via $editor->getSettings(), but be
   * aware that it may not yet contain plugin-specific settings, because the
   * user may not yet have configured the form.
   * If there are plugin-specific settings (verify with isset()), they can be
   * found at
   * @code
   * $settings = $editor->getSettings();
   * $plugin_specific_settings = $settings['plugins'][$plugin_id];
   * @endcode
   *
   * @param \Drupal\editor\Entity\Editor $editor
   *   A configured text editor object.
   * @return array
   *   A keyed array, whose keys will end up as keys under CKEDITOR.config.
   */
  public function getConfig(Editor $editor) {
    $settings = $editor
      ->getSettings();
    $config = [];
    if (isset($settings['plugins']['readmore'])) {
      $config['readmore_type'] = $settings['plugins']['readmore']['type'];
      $config['readmore_more_text'] = $settings['plugins']['readmore']['more_text'];
      $config['readmore_less_text'] = $settings['plugins']['readmore']['less_text'];
    }
    return $config;
  }
  public function settingsForm(array $form, FormStateInterface $form_state, Editor $editor) {
    $settings = $editor
      ->getSettings();

    //dd($settings);
    $form['type'] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('Type of read more element'),
      '#description' => $this
        ->t('Choose between plain text and button'),
      '#required' => true,
      '#options' => [
        'text' => $this
          ->t('Plain text'),
        'button' => $this
          ->t('Button'),
      ],
      '#default_value' => isset($settings['plugins']['readmore']['type']) ? $settings['plugins']['readmore']['type'] : 'text',
    ];
    $form['more_text'] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Text in read more element'),
      '#description' => $this
        ->t('This text shows up in read more element'),
      '#required' => true,
      '#size' => 60,
      '#maxlength' => 128,
      '#default_value' => isset($settings['plugins']['readmore']['more_text']) ? $settings['plugins']['readmore']['more_text'] : $this
        ->t('Read more'),
    ];
    $form['less_text'] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Text in show less element'),
      '#description' => $this
        ->t('This text shows up in show less element'),
      '#required' => true,
      '#size' => 60,
      '#maxlength' => 128,
      '#default_value' => isset($settings['plugins']['readmore']['less_text']) ? $settings['plugins']['readmore']['less_text'] : $this
        ->t('Show less'),
    ];
    return $form;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CKEditorPluginBase::getDependencies public function Returns a list of plugins this plugin requires. Overrides CKEditorPluginInterface::getDependencies 1
CKEditorPluginBase::getLibraries public function Returns a list of libraries this plugin requires. Overrides CKEditorPluginInterface::getLibraries 4
CKEditorPluginBase::isInternal public function Indicates if this plugin is part of the optimized CKEditor build. Overrides CKEditorPluginInterface::isInternal 4
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 92
ReadMore::getButtons public function Returns the buttons that this plugin provides, along with metadata. Overrides CKEditorPluginButtonsInterface::getButtons
ReadMore::getConfig public function Returns the additions to CKEDITOR.config for a specific CKEditor instance. Overrides CKEditorPluginInterface::getConfig
ReadMore::getFile public function Returns the Drupal root-relative file path to the plugin JavaScript file. Overrides CKEditorPluginInterface::getFile
ReadMore::settingsForm public function Returns a settings form to configure this CKEditor plugin. Overrides CKEditorPluginConfigurableInterface::settingsForm
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.