function Ckeditor5Hooks::jsAlter
Implements hook_js_alter().
File
-
core/
modules/ ckeditor5/ src/ Hook/ Ckeditor5Hooks.php, line 303
Class
- Ckeditor5Hooks
- Hook implementations for ckeditor5.
Namespace
Drupal\ckeditor5\HookCode
public function jsAlter(&$javascript, AttachedAssetsInterface $assets, LanguageInterface $language) : void {
// This file means CKEditor 5 translations are in use on the page.
// @see locale_js_alter()
$placeholder_file = 'core/assets/vendor/ckeditor5/translation.js';
// This file is used to get a weight that will make it possible to aggregate
// all translation files in a single aggregate.
$ckeditor_dll_file = 'core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js';
if (isset($javascript[$placeholder_file])) {
// Use the placeholder file weight to set all the translations files weights
// so they can be aggregated together as expected.
$default_weight = $javascript[$placeholder_file]['weight'];
if (isset($javascript[$ckeditor_dll_file])) {
$default_weight = $javascript[$ckeditor_dll_file]['weight'];
}
// The placeholder file is not a real file, remove it from the list.
unset($javascript[$placeholder_file]);
// When the locale module isn't installed there are no translations.
if (!\Drupal::moduleHandler()->moduleExists('locale')) {
return;
}
$ckeditor5_language = _ckeditor5_get_langcode_mapping($language->getId());
// Remove all CKEditor 5 translations files that are not in the current
// language.
foreach ($javascript as $index => &$item) {
// This is not a CKEditor 5 translation file, skip it.
if (empty($item['ckeditor5_langcode'])) {
continue;
}
// This file is the correct translation for this page.
if ($item['ckeditor5_langcode'] === $ckeditor5_language) {
// Set the weight for the translation file to be able to have the
// translation files aggregated.
$item['weight'] = $default_weight;
}
else {
// Remove files that don't match the language requested.
unset($javascript[$index]);
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.