public function CKEditor::getMetadata in Quick Edit 7
Implements QuickEditInPlaceEditorInterface::getMetadata().
Overrides QuickEditInPlaceEditorInterface::getMetadata
See also
Drupal 8's \Drupal\editor\Plugin\quickedit\editor\Editor::getMetadata().
File
- InPlaceEditors/
CKEditor.php, line 50
Class
- CKEditor
- Defines the CKEditor in-place editor.
Code
public function getMetadata(array $instance, array $items) {
$format_id = $items[0]['format'];
$metadata['format'] = $format_id;
$metadata['formatHasTransformations'] = (bool) count(array_intersect(array(
FILTER_TYPE_TRANSFORM_REVERSIBLE,
FILTER_TYPE_TRANSFORM_IRREVERSIBLE,
), filter_get_filter_types_by_format($format_id)));
// This part does not exist in the equivalent Drupal 8 code, because in Drupal
// 8 we leverage the new Text Editor module, which takes care of all of this
// for us. We could send this information in the attachments callback (like in
// Drupal 8), but this makes the metadata for each field nicely contained,
// which is simpler.
// @todo Consider moving this to the attachments callback.
module_load_include('inc', 'ckeditor', 'includes/ckeditor.lib');
if ($settings = ckeditor_profiles_compile($format_id)) {
// CKEditor.module stores the toolbar configuration as a non-standard JSON
// serialization. In case they one day fix that, we check if it is indeed
// still serialized.
// See http://drupal.org/node/1906490.
if (is_string($settings['toolbar'])) {
// This bizarre code comes from ckeditor_admin_profile_form_validate().
$toolbar = $settings['toolbar'];
$toolbar = str_replace("'", '"', $toolbar);
$toolbar = preg_replace('/(\\w*)\\s*\\:/', '"${1}":', $toolbar);
$settings['toolbar'] = json_decode($toolbar);
}
// For some reasons when ckeditor is in profiles/libraries ckeditor module
// defaults to the kama skin that doesn't exists in CKEditor 4 standard.
// @todo remove? might be too brutal.
if ($settings['skin'] == 'kama') {
$settings['skin'] = 'moono';
}
//[#1473010]
// @todo see if this is needed.
$field = field_info_field($instance['field_name']);
if (isset($settings['scayt_sLang'])) {
$settings['scayt_language'] = $settings['scayt_sLang'];
unset($settings['scayt_sLang']);
}
elseif (!empty($field["#language"]) && $field["#language"] != LANGUAGE_NONE) {
$settings['scayt_language'] = ckeditor_scayt_langcode($field["#language"]);
}
// Set the collected metadata.
$metadata['ckeditorSettings'] = $settings;
}
return $metadata;
}