MarkItUp отваливается в одном из контекстов
        Всем привет. Не замечал данного бага, либо он появился не пойму. В общем источник бага я вроде определил, а вот причину — нет.После очистки кэша в одном контексте у меня работает MarkitUp, а в другом не работает. Перейдя в другой контекст и очистив кэш он начинает работать только в этом контексте, а в другом перестает.
Исследуя Firebug'ом я понял что MarkItUp не инициализируется (ошибка объекта undefined), т.к. не находит объект TicketsConfig.editor (в DOM его нет), т.е. не видит или не выполняется этот кусок в head:
Прошу помочь, кто сталкивался.     
    
    
                                                                                
            Исследуя Firebug'ом я понял что MarkItUp не инициализируется (ошибка объекта undefined), т.к. не находит объект TicketsConfig.editor (в DOM его нет), т.е. не видит или не выполняется этот кусок в head:
<script type="text/javascript">TicketsConfig.editor={ticket: {onTab: {keepDefault:false, replaceWith:"	"}
		,markupSet: [
			{name:"Bold", className: "btn-bold", key:"B", openWith:"<b>", closeWith:"</b>" }
			,{name:"Italic", className: "btn-italic", key:"I", openWith:"<i>", closeWith:"</i>"  }
			,{name:"Underline", className: "btn-underline", key:"U", openWith:"<u>", closeWith:"</u>" }
			,{name:"Stroke through", className: "btn-stroke", key:"S", openWith:"<s>", closeWith:"</s>" }
			,{separator:"---------------" }
			,{name:"Bulleted List", className: "btn-bulleted", openWith:"	<li>", closeWith:"</li>", multiline:true, openBlockWith:"<ul>\n", closeBlockWith:"\n</ul>"}
			,{name:"Numeric List", className: "btn-numeric", openWith:"	<li>", closeWith:"</li>", multiline:true, openBlockWith:"<ol>\n", closeBlockWith:"\n</ol>"}
			,{separator:"---------------" }
			,{name:"Quote", className: "btn-quote", openWith:"<blockquote>", closeWith:"</blockquote>"}
			,{name:"Code", className: "btn-code", openWith:"<code>", closeWith:"</code>"}
			,{name:"Link", className: "btn-link", openWith:"<a href=\"[![Link:!:http://]!]\">", closeWith:"</a>" }
			,{name:"Picture", className: "btn-picture", replaceWith:"<img src=\"[![Source:!:http://]!]\" />" }
			,{separator:"---------------" }
			,{name:"Cut", className: "btn-cut", openWith:"" }
		]},comment: {onTab: {keepDefault:false, replaceWith:"	"}
		,markupSet: [
			{name:"Bold", className: "btn-bold", key:"B", openWith:"<b>", closeWith:"</b>" }
			,{name:"Italic", className: "btn-italic", key:"I", openWith:"<i>", closeWith:"</i>"  }
			,{name:"Underline", className: "btn-underline", key:"U", openWith:"<u>", closeWith:"</u>" }
			,{name:"Stroke through", className: "btn-stroke", key:"S", openWith:"<s>", closeWith:"</s>" }
			,{separator:"---------------" }
			,{name:"Quote", className: "btn-quote", openWith:"<blockquote>", closeWith:"</blockquote>"}
			,{name:"Code", className: "btn-code", openWith:"<code>", closeWith:"</code>"}
			,{name:"Link", className: "btn-link", openWith:"<a href=\"[![Link:!:http://]!]\">", closeWith:"</a>" }
			,{name:"Picture", className: "btn-picture", replaceWith:"<img src=\"[![Source:!:http://]!]\" />" }
		]}};</script>Странно, ведь открыв исходный код страницы этот кусок присутствует.Прошу помочь, кто сталкивался.
Комментарии: 15
                Та же проблема, но в одном единственном контексте. Тоже не могу понять почему. Настройки TicketsConfig.editor пишутся в head, скрипт инициализации в конце body и он не видит TicketsConfig.editor.            
                    
                Да тут не только у нас ошибка, видел тоже темы, но без ответов… Не могу понять причём тут кэш. Получается при первом запуске после очистки код срабатывает и потом работает нормально всё время. НО потом я авторизуюсь на сайте и всё, на той же странице он уже не работает. Снова чищу — начинает работать, разлогиниваюсь — не работает, браузер игнорит объект. Позже попробую загнать объект в JS-файл, где инициализация идёт, вдруг что-то изменится.            
                    
                Подтверждаю, у меня тоже данная проблема возникает при login/logout.            
                    
                В общем-то сработал мой костыль. Вырезал из модели этот кусок с подключением скриптов:
Ждемс более интересного решения и объяснения причины бага…
                    $this->modx->regClientStartupScript('<script type="text/javascript">TicketsConfig.editor={ticket: ' . $this->modx->getOption('tickets.editor_config.ticket') . ',comment: ' . $this->modx->getOption('tickets.editor_config.comment') . '};</script>', true);И руками вбил эти настройки во фрондендовский JS Tickets, в начало.Ждемс более интересного решения и объяснения причины бага…
                Такая же история. Пришлось кеш подкрутить. Ручное добавление JS не спасает.            
                    
                Могу ещё порекомендовать, с минимальными изменениями. Скопируйте JS-файл тикетсов, укажите к нему путь в системных настройках тикетов (так обновление не повлияет на этот файл).
В этот файл в самое начало добавьте проверку объекта и при отстутствии его объявление (настройки MarkItUp смените по желанию, тут они по умолчанию):
                    В этот файл в самое начало добавьте проверку объекта и при отстутствии его объявление (настройки MarkItUp смените по желанию, тут они по умолчанию):
if (typeof TicketsConfig.editor == 'undefined') {
	TicketsConfig.editor = {
		ticket: {
			onTab: {keepDefault: false, replaceWith: "	"}
			, markupSet: [
				{name: "Bold", className: "btn-bold", key: "B", openWith: "<b>", closeWith: "</b>"}
				, {name: "Italic", className: "btn-italic", key: "I", openWith: "<i>", closeWith: "</i>"}
				, {name: "Underline", className: "btn-underline", key: "U", openWith: "<u>", closeWith: "</u>"}
				, {name: "Stroke through", className: "btn-stroke", key: "S", openWith: "<s>", closeWith: "</s>"}
				, {separator: "---------------"}
				, {
					name: "Bulleted List",
					className: "btn-bulleted",
					openWith: "	<li>",
					closeWith: "</li>",
					multiline: true,
					openBlockWith: "<ul>\n",
					closeBlockWith: "\n</ul>"
				}
				, {
					name: "Numeric List",
					className: "btn-numeric",
					openWith: "	<li>",
					closeWith: "</li>",
					multiline: true,
					openBlockWith: "<ol>\n",
					closeBlockWith: "\n</ol>"
				}
				, {separator: "---------------"}
				, {name: "Quote", className: "btn-quote", openWith: "<blockquote>", closeWith: "</blockquote>"}
				, {name: "Code", className: "btn-code", openWith: "<code>", closeWith: "</code>"}
				, {
					name: "Link",
					className: "btn-link",
					openWith: "<a href=\"[![Link:!:http://]!]\">",
					closeWith: "</a>"
				}
				, {name: "Picture", className: "btn-picture", replaceWith: "<img src=\"[![Source:!:http://]!]\" />"}
				, {separator: "---------------"}
				, {name: "Cut", className: "btn-cut", openWith: "<cut/>"}
			]
		}, comment: {
			onTab: {keepDefault: false, replaceWith: "	"}
			, markupSet: [
				{name: "Bold", className: "btn-bold", key: "B", openWith: "<b>", closeWith: "</b>"}
				, {name: "Italic", className: "btn-italic", key: "I", openWith: "<i>", closeWith: "</i>"}
				, {name: "Underline", className: "btn-underline", key: "U", openWith: "<u>", closeWith: "</u>"}
				, {name: "Stroke through", className: "btn-stroke", key: "S", openWith: "<s>", closeWith: "</s>"}
				, {separator: "---------------"}
				, {name: "Quote", className: "btn-quote", openWith: "<blockquote>", closeWith: "</blockquote>"}
				, {name: "Code", className: "btn-code", openWith: "<code>", closeWith: "</code>"}
				, {
					name: "Link",
					className: "btn-link",
					openWith: "<a href=\"[![Link:!:http://]!]\">",
					closeWith: "</a>"
				}
				, {name: "Picture", className: "btn-picture", replaceWith: "<img src=\"[![Source:!:http://]!]\" />"}
			]
		}
	};
}
//дальше ничего не изменено
var Tickets = {
	initialize: function() {
...            
                И прощай настройки редактора Tickets.
Попробую предложить еще минимальнее. В лексиконе Tickets поменять значение ключа tickets_message_close_all c «закрыть все» на «close all».
                    Попробую предложить еще минимальнее. В лексиконе Tickets поменять значение ключа tickets_message_close_all c «закрыть все» на «close all».
                Ну да, прощай… Попробуем, спасибо. А можешь прокомментировать это решение, почему?            
                    
                Выстрел наугад. ;) Попробуй. Мне самому интересно :)            
                    
                Добрался до компа, сам проверил. Теория с кодировкой ошибочна. Но нашёл причину. Проблема в кэшировании. Если отключить кэширование у ресурса, то все работает. 
Вот этот код всё ломает.
Причем проявляется не у всех. На этом сайте этой проблемы нет.
                    Вот этот код всё ломает.
Причем проявляется не у всех. На этом сайте этой проблемы нет.
                А я ещё не успел добраться. Спасибо. Стоит ли ждать исправление в следующей версии или на своих костылях ходить?)            
                    
                Тут есть какая-то неуловимая тонкость в настройке, которая от нас ускользает. Было бы неплохо, если бы Василий подключился и помог разобраться — здесь же скрипты Tickets загружаются заново, а не из кэша ресурса.            
                    
                Вот оказывается в чем проблема была. Переделал на некэшированный минифай. Все Ок.            
                    
                Ок, спасибо.            
                    
                Разобрал проблему. Если интересно, вот статья.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.