Ресурсы Grails не работают с выпуском CKEditor с очисткой кеша (4.5.5+)

Я не могу получить приложение Grails 2.5.2, использующее подключаемый модуль ресурсов для обработки изменения очистки кеша, внесенного в CKEditor. Плагин ресурсов настроен следующим образом:

grails.resources.adhoc.patterns = ['/js/*', '/images/*', '/css/*', '/plugins/*', '/thirdparty/*', '/templates/*']
grails.resources.adhoc.includes = ['/js/**', '/images/**', '/css/**', '/plugins/**', '/thirdparty/**', '/templates/**']

Код CKEditor находится под app-dir/web-app/thirdparty/ckeditor и в настоящее время имеет версию 4.5.9. Изменение очистки кеша было сделано в версии 4.5.5, а версия 4.5.4 отлично работает с Grails resources.

Я получаю следующую ошибку в консоли при запуске приложения с 4.5.9:

GET resource:/thirdparty/ckeditor/skins/moono/icons.png?t=a35abfe net::ERR_UNKNOWN_URL_SCHEME

Похоже, что плагин resources плохо справляется со значениями в файле editor.css ckeditor (файл, обслуживаемый приложением, указывает на app-dir/thirdparty/ckeditor/skins/moono/editor.css?t=G4CD как http://localhost:8080/app-dir/static/thirdparty/ckeditor/skins/moono/editor.css?t=G4CD). Если я посмотрю на этот файл напрямую, он содержит следующее для файлов icons.png и icons_hidpi.png, что указывает на то, что плагин resources неправильно заменяет ссылку на файл изображения (фактически все, кроме первого) на «resource:/. .." URL-адрес, которого не должно быть, и, следовательно, ошибка консоли. Любопытно, что только файлы icons.png и icons_hidpi.png с их параметром t изменяются таким образом, другие файлы изображений в том же файле editor.css остаются нетронутыми.

.cke_button__bold_icon {background: url(icons.png?t=a35abfe) no-repeat 0 -0px !important;}
.cke_button__italic_icon {background: url(resource:/thirdparty/ckeditor/skins/moono/icons.png?t=a35abfe) no-repeat 0 -24px !important;}
.cke_button__strike_icon {background: url(resource:/thirdparty/ckeditor/skins/moono/icons.png?t=a35abfe) no-repeat 0 -48px !important;}
.cke_button__subscript_icon {background: url(resource:/thirdparty/ckeditor/skins/moono/icons.png?t=a35abfe) no-repeat 0 -72px !important;}

Если я добавлю следующую конфигурацию, приложение будет работать и отображаться отлично.

grails.resources.processing.enabled = false

Если я использую

grails.resources.mappers.cssrewriter.excludes = ['/thirdparty/ckeditor/skins/moono/**']

в попытке предотвратить изменение resources файла ckeditor's editor.css ничего не меняется.

Что я могу сделать? Я не могу оставить ckeditor на 4.5.4, так как есть взаимодействие с ним, которое я пытаюсь исправить. Я уже использую ту же конфигурацию как рекомендовано в другом посте, но это не решает проблему. Полное отключение перезаписи css просто ломает другие плагины .


person ben3000    schedule 23.06.2016    source источник


Ответы (1)


Возможное решение (рекомендованное коллегой) состоит в том, чтобы исключить определенные файлы CSS из обработки grails resources:

resource url:"thirdparty/ckeditor/skins/moono/editor.css", exclude: "*"

Это позволяет избежать воздействия на другие файлы, на которые либо не повлиял обновленный CKEditor, либо на которые повлияла обработка, выполненная grails resources.

person ben3000    schedule 24.06.2016
comment
Попробовав множество других предложенных решений, у меня сработало только это (та же проблема, но с Font Awesome и Grails 2.5.5). Спасибо! - person Drey; 25.10.2016