CKEditorPluginInterface.php
3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
/**
* @file
* Contains \Drupal\ckeditor\CKEditorPluginInterface.
*/
namespace Drupal\ckeditor;
use Drupal\Component\Plugin\PluginInspectionInterface;
use Drupal\editor\Entity\Editor;
/**
* Defines an interface for (loading of) CKEditor plugins.
*
* This is the most basic CKEditor plugin interface; it provides the bare
* minimum information. Solely implementing this interface is not sufficient to
* be able to enable the plugin though — a CKEditor plugin can either be enabled
* automatically when a button it provides is present in the toolbar, or when
* some programmatically defined condition is true. In the former case,
* implement the CKEditorPluginButtonsInterface interface, in the latter case,
* implement the CKEditorPluginContextualInterface interface. It is also
* possible to implement both, for advanced use cases.
*
* Finally, if your plugin must be configurable, you can also implement the
* CKEditorPluginConfigurableInterface interface.
*
* @see \Drupal\ckeditor\CKEditorPluginButtonsInterface
* @see \Drupal\ckeditor\CKEditorPluginContextualInterface
* @see \Drupal\ckeditor\CKEditorPluginConfigurableInterface
* @see \Drupal\ckeditor\CKEditorPluginBase
* @see \Drupal\ckeditor\CKEditorPluginManager
* @see \Drupal\ckeditor\Annotation\CKEditorPlugin
* @see plugin_api
*/
interface CKEditorPluginInterface extends PluginInspectionInterface {
/**
* Indicates if this plugin is part of the optimized CKEditor build.
*
* Plugins marked as internal are implicitly loaded as part of CKEditor.
*
* @return bool
*/
public function isInternal();
/**
* Returns a list of plugins this plugin requires.
*
* @param \Drupal\editor\Entity\Editor $editor
* A configured text editor object.
* @return array
* An unindexed array of plugin names this plugin requires. Each plugin is
* is identified by its annotated ID.
*/
public function getDependencies(Editor $editor);
/**
* Returns a list of libraries this plugin requires.
*
* These libraries will be attached to the text_format element on which the
* editor is being loaded.
*
* @param \Drupal\editor\Entity\Editor $editor
* A configured text editor object.
* @return array
* An array of libraries suitable for usage in a render API #attached
* property.
*/
public function getLibraries(Editor $editor);
/**
* 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();
/**
* 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);
}