class CodeMirror in CKEditor CodeMirror 8.2
Same name and namespace in other branches
- 8 src/Plugin/CKEditorPlugin/CodeMirror.php \Drupal\ckeditor_codemirror\Plugin\CKEditorPlugin\CodeMirror
Defines the "CodeMirror" plugin.
Plugin annotation
@CKEditorPlugin(
id = "codemirror",
label = @Translation("CodeMirror"),
module = "ckeditor_codemirror"
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\ckeditor\CKEditorPluginBase implements CKEditorPluginButtonsInterface, CKEditorPluginInterface
- class \Drupal\ckeditor_codemirror\Plugin\CKEditorPlugin\CodeMirror implements CKEditorPluginConfigurableInterface, CKEditorPluginContextualInterface, ContainerFactoryPluginInterface
- class \Drupal\ckeditor\CKEditorPluginBase implements CKEditorPluginButtonsInterface, CKEditorPluginInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of CodeMirror
File
- src/
Plugin/ CKEditorPlugin/ CodeMirror.php, line 23
Namespace
Drupal\ckeditor_codemirror\Plugin\CKEditorPluginView source
class CodeMirror extends CKEditorPluginBase implements CKEditorPluginConfigurableInterface, CKEditorPluginContextualInterface, ContainerFactoryPluginInterface {
/**
* File system service.
*
* @var \Drupal\Core\File\FileSystemInterface
*/
protected $fileSystem;
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, FileSystemInterface $file_system) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->fileSystem = $file_system;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('file_system'));
}
/**
* {@inheritdoc}
*/
public function getFile() {
return _ckeditor_codemirror_get_library_path() . '/codemirror/plugin.js';
}
/**
* {@inheritdoc}
*/
public function getDependencies(Editor $editor) : array {
return [];
}
/**
* {@inheritdoc}
*/
public function getLibraries(Editor $editor) : array {
return [];
}
/**
* {@inheritdoc}
*/
public function isInternal() : bool {
return FALSE;
}
/**
* {@inheritdoc}
*/
public function getButtons() : array {
return [];
}
/**
* {@inheritdoc}
*/
public function isEnabled(Editor $editor) : bool {
$settings = $editor
->getSettings();
if (isset($settings['plugins']['codemirror'])) {
return $editor
->getSettings()['plugins']['codemirror']['enable'];
}
return FALSE;
}
/**
* {@inheritdoc}
*/
public function getConfig(Editor $editor) : array {
$settings = $editor
->getSettings()['plugins']['codemirror'];
$config = [
'codemirror' => [
'enable' => $settings['enable'] ?? FALSE,
'mode' => $settings['mode'] ?? 'htmlmixed',
'theme' => $settings['theme'] ?? 'default',
],
'startupMode' => $settings['startupMode'] ?? 'wysiwyg',
];
foreach ($this
->options() as $option => $description) {
$config['codemirror'][$option] = $settings['options'][$option] ?? TRUE;
}
return $config;
}
/**
* Additional settings options.
*
* @return array
* An array of settings options and their descriptions.
*/
private function options() : array {
return [
'lineNumbers' => $this
->t('Show line numbers.'),
'lineWrapping' => $this
->t('Enable line wrapping.'),
'matchBrackets' => $this
->t('Highlight matching brackets.'),
'autoCloseTags' => $this
->t('Close tags automatically.'),
'autoCloseBrackets' => $this
->t('Close brackets automatically.'),
'enableSearchTools' => $this
->t('Enable search tools.'),
'enableCodeFolding' => $this
->t('Enable code folding.'),
'enableCodeFormatting' => $this
->t('Enable code formatting.'),
'autoFormatOnStart' => $this
->t('Format code on start.'),
'autoFormatOnModeChange' => $this
->t('Format code each time source is opened.'),
'autoFormatOnUncomment' => $this
->t('Format code when a line is uncommented.'),
];
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state, Editor $editor) : array {
$editor_settings = $editor
->getSettings();
if (isset($editor_settings['plugins']['codemirror'])) {
$settings = $editor_settings['plugins']['codemirror'];
}
$form['#attached']['library'][] = 'ckeditor_codemirror/ckeditor_codemirror.admin';
$form['enable'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Enable CodeMirror source view syntax highlighting.'),
'#default_value' => $settings['enable'] ?? FALSE,
];
$form['startupMode'] = [
'#type' => 'select',
'#title' => $this
->t('Editor startup Mode'),
'#options' => [
'wysiwyg' => $this
->t('WYSIWYG (default)'),
'source' => $this
->t('Source'),
],
'#default_value' => $settings['startupMode'] ?? 'wysiwyg',
];
$form['mode'] = [
'#type' => 'select',
'#title' => $this
->t('Mode'),
'#options' => [
'htmlmixed' => $this
->t('HTML (including css, xml and javascript)'),
'text/html' => $this
->t('HTML only'),
'application/x-httpd-php' => $this
->t('PHP (including HTML)'),
'text/javascript' => $this
->t('Javascript only'),
'css' => $this
->t('CSS'),
'text/x-scss' => $this
->t('SCSS'),
],
'#default_value' => $settings['mode'] ?? 'htmlmixed',
];
$theme_options = [
'default' => 'default',
];
$themes_directory = _ckeditor_codemirror_get_library_path() . '/codemirror/theme';
if (is_dir($themes_directory)) {
$theme_css_files = $this->fileSystem
->scanDirectory($themes_directory, '/\\.css/i');
foreach ($theme_css_files as $file) {
$theme_options[$file->name] = $file->name;
}
}
$form['theme'] = [
'#type' => 'select',
'#title' => $this
->t('Theme'),
'#options' => $theme_options,
'#default_value' => $settings['theme'] ?? 'default',
];
$form['options'] = [
'#type' => 'details',
'#title' => $this
->t('Additional settings'),
'#description' => $this
->t('Source highlighting and code formatting options:'),
'#open' => FALSE,
];
foreach ($this
->options() as $setting => $description) {
$form['options'][$setting] = [
'#type' => 'checkbox',
'#title' => $description,
'#default_value' => $settings['options'][$setting] ?? TRUE,
];
}
return $form;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CodeMirror:: |
protected | property | File system service. | |
CodeMirror:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
CodeMirror:: |
public | function |
Returns the buttons that this plugin provides, along with metadata. Overrides CKEditorPluginButtonsInterface:: |
|
CodeMirror:: |
public | function |
Returns the additions to CKEDITOR.config for a specific CKEditor instance. Overrides CKEditorPluginInterface:: |
|
CodeMirror:: |
public | function |
Returns a list of plugins this plugin requires. Overrides CKEditorPluginBase:: |
|
CodeMirror:: |
public | function |
Returns the Drupal root-relative file path to the plugin JavaScript file. Overrides CKEditorPluginInterface:: |
|
CodeMirror:: |
public | function |
Returns a list of libraries this plugin requires. Overrides CKEditorPluginBase:: |
|
CodeMirror:: |
public | function |
Checks if this plugin should be enabled based on the editor configuration. Overrides CKEditorPluginContextualInterface:: |
|
CodeMirror:: |
public | function |
Indicates if this plugin is part of the optimized CKEditor build. Overrides CKEditorPluginBase:: |
|
CodeMirror:: |
private | function | Additional settings options. | |
CodeMirror:: |
public | function |
Returns a settings form to configure this CKEditor plugin. Overrides CKEditorPluginConfigurableInterface:: |
|
CodeMirror:: |
public | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase:: |
|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |