Newer
Older
Dries Buytaert
committed
<?php
namespace Drupal\ckeditor_test\Plugin\CKEditorPlugin;
Dries Buytaert
committed
use Drupal\ckeditor\CKEditorPluginButtonsInterface;
use Drupal\ckeditor\CKEditorPluginContextualInterface;
use Drupal\ckeditor\CKEditorPluginConfigurableInterface;
Dries Buytaert
committed
use Drupal\Core\Form\FormStateInterface;
use Drupal\editor\Entity\Editor;
Dries Buytaert
committed
/**
* Defines a "LlamaContextualAndbutton" plugin, with a contextually OR toolbar
* builder-enabled "llama" feature.
*
* @CKEditorPlugin(
Dries Buytaert
committed
* id = "llama_contextual_and_button",
* label = @Translation("Contextual Llama With Button")
Dries Buytaert
committed
* )
*/
class LlamaContextualAndButton extends Llama implements CKEditorPluginContextualInterface, CKEditorPluginButtonsInterface, CKEditorPluginConfigurableInterface {
/**
* {@inheritdoc}
Dries Buytaert
committed
*/
public function isEnabled(Editor $editor) {
Dries Buytaert
committed
// Automatically enable this plugin if the Strike button is enabled.
Angie Byron
committed
$settings = $editor->getSettings();
foreach ($settings['toolbar']['rows'] as $row) {
Angie Byron
committed
foreach ($row as $group) {
if (in_array('Strike', $group['items'])) {
return TRUE;
}
Dries Buytaert
committed
}
}
return FALSE;
}
/**
* {@inheritdoc}
Dries Buytaert
committed
*/
public function getButtons() {
return [
'Llama' => [
Dries Buytaert
committed
'label' => t('Insert Llama'),
],
];
Dries Buytaert
committed
}
/**
* {@inheritdoc}
Dries Buytaert
committed
*/
public function getFile() {
Dries Buytaert
committed
return drupal_get_path('module', 'ckeditor_test') . '/js/llama_contextual_and_button.js';
}
/**
* {@inheritdoc}
Dries Buytaert
committed
*/
public function settingsForm(array $form, FormStateInterface $form_state, Editor $editor) {
Dries Buytaert
committed
// Defaults.
$config = ['ultra_llama_mode' => FALSE];
Angie Byron
committed
$settings = $editor->getSettings();
if (isset($settings['plugins']['llama_contextual_and_button'])) {
$config = $settings['plugins']['llama_contextual_and_button'];
Dries Buytaert
committed
}
$form['ultra_llama_mode'] = [
Dries Buytaert
committed
'#title' => t('Ultra llama mode'),
'#type' => 'checkbox',
'#default_value' => $config['ultra_llama_mode'],
];
Dries Buytaert
committed
return $form;
}
}