Joomla 3.7.x - если не работает плагин TinyMCE

Если не работает TinyMCE плагин и в консоле разработчика выдает вот такие ошибки:

TypeError: Joomla.optionsStorage is undefined - tinymce-builder.js:278:1
TypeError: Joomla.optionsStorage is undefined - tinymce.min.js:1:361

, это значит что плагин не может вытащить параметры передаваемые Joomla в json формате

Не стал долго и упорно выяснять причину и ковыряться во всей джумловской каше, а попросту написал свой парсер в обход core.js. Не стоит забывать, что это временное решение и с обновлением скорей всего слетит, а может это мой косяк в движке. В общем не удивлюсь, что вскоре косяк исправят.

И так приступим:

находим кусок кода в файле /media/editors/tinymce/js/tinymce-builder.js (стр. 277-278):

        var options = Joomla.getOptions ? Joomla.getOptions('plg_editors_tinymce_builder', {})
        			:  (Joomla.optionsStorage.plg_editors_tinymce_builder || {});

заменяем на:

		if (!Joomla.optionsStorage && !Joomla.getOptions)
		{
			var elements = document.querySelectorAll(".joomla-script-options.new"),options,option=0;
			for (var i=0,l=elements.length;i<l;i++)
			{
				option = JSON.parse(elements[i].text || elements[i].textContent);
				if(option)
				{
					options = option;
				}
			}
			options = options['plg_editors_tinymce_builder'];
		} else {
			var options = Joomla.getOptions ? Joomla.getOptions('plg_editors_tinymce_builder', {})
						:  (Joomla.optionsStorage.plg_editors_tinymce_builder || {});
		}

Чтобы лишний раз не искать и править подгрузку min версии, скопируем содржимое /media/editors/tinymce/js/tinymce.js в /media/editors/tinymce/js/tinymce.min.js и правим его (стр. 28-30):

			var pluginOptions = Joomla.getOptions ? Joomla.getOptions('plg_editor_tinymce', {})
					:  (Joomla.optionsStorage.plg_editor_tinymce || {}),
				editors = target.querySelectorAll('.js-editor-tinymce');

заменяем на:

			if (!Joomla.optionsStorage && !Joomla.getOptions)
			{
				var elements = document.querySelectorAll(".joomla-script-options.new"),options,option=0;
				for (var i=0,l=elements.length;i<l;i++)
				{
					option = JSON.parse(elements[i].text || elements[i].textContent);
					if(option)
					{
						options = option;
					}
				}
				pluginOptions = options['plg_editor_tinymce'];
			} else {
				var pluginOptions = Joomla.getOptions ? Joomla.getOptions('plg_editor_tinymce', {})
						:  (Joomla.optionsStorage.plg_editor_tinymce || {});
			}
			var editors = target.querySelectorAll('.js-editor-tinymce');

Собственно вот и все.

более предпочтительный вариант - TypeError: Joomla.optionsStorage is undefined - быстрый fix