Posted 11 сентября, 20213 yr comment_172371 Скачал плагин для ckeditor - simple-button С админки постятся красиво оформленные кнопочки, с аккаунта пользователя - нет, вырезается где-то треть атрибутов и стилей, нужно включать разрешение на публикацию html.. Думал ошибка в плагине или типа того, но даже свой простейший плагин с аккаунта пользователя заюзать не получится: Думал что у ckeditor в config.js что-то не прописано, но методом научного тыка понял, что это не так (возможно ошибаюсь) Начал копаться в файлах движка, в поисках некого вайт-листа, но быстро понял, что дело это крайне долгое, докопался лишь до инициализации такой функции: public function htmlParsingEnforced() { return (boolean) $this->post_htmlstate > 0; } Дальнейших обработчиков пока не нашёл Может кто делал разрешение на использование определённых классов/атрибутов/тэгов обычным пользователям, не через разрешение публикации html?
11 сентября, 20213 yr Author comment_172372 Upd:по пути /forum/system/3rd_party/HTMLPurifier/HTMLPurifier/ConfigSchema/schema нашёл файлы которые начинаются на HTML.Allowed.. и CSS.Allowed.. Пока не разобрался что с ними делать
11 сентября, 20213 yr comment_172375 Нашел, как разрешить бордер-радиусы.. но это надо прописывать прямо в коде.
11 сентября, 20213 yr comment_172377 Хукайте метод getAllowedCssClasses в классе \IPS\Text\Parser А ну или в настройках можно так же указать разрешенные css-классы. Тогда ничего не будет урезать при сохранении.
11 сентября, 20213 yr comment_172378 Есть файлик, schema.ser, там опции CSS.AllowImportant, CSS.AllowTricky и CSS.Proprietary - они определяют, как обрабатывать некоторые css в сообщении. Если их поставить в 1, то появятся все стили, которые есть на превьюшке кнопки. А вот опция cursor: pointer не появляется, ее вообще нет в определениях. Можно добавить $this->info['cursor'] = new HTMLPurifier_AttrDef_Enum( array('pointer'), false ); Появится последний пропадающий css Edited 11 сентября, 20213 yr by Desti
11 сентября, 20213 yr comment_172379 3 часа назад, WaNted сказал: Хукайте метод getAllowedCssClasses в классе \IPS\Text\Parser А ну или в настройках можно так же указать разрешенные css-классы. Тогда ничего не будет урезать при сохранении. ага, без этого ни один инородный класс выводиться не будет. Еще можно и атрибуты пропускать нужные этой функцией: /** * Customize HTML Purifier HTML Definition * * @param HTMLPurifier_HTMLDefinition $def The definition * @return void */ protected function _htmlPurifierModifyHtmlDefinition( $def )
11 сентября, 20213 yr Author comment_172396 Desti Вроде бы выставил 1, но всё как было, так и осталось Что я не так делаю?
11 сентября, 20213 yr Author comment_172398 12 часов назад, WaNted сказал: Хукайте метод getAllowedCssClasses в классе \IPS\Text\Parser А ну или в настройках можно так же указать разрешенные css-классы. Тогда ничего не будет урезать при сохранении. Классы - это хорошо, можно сделать кучу полезного через custom.css Проблема в том, что всё равно режутся стили, которые могут принимать пользовательские значения, тот же бордер-радиус должно быть <a class="simple-button-plugin" target="_blank" style="display:inline-block;background-color:#27AE61;border:1px solid #27AE61;color:#fff !important;padding:5px 10px;border-radius:5px;font-size:14px;text-decoration: none !important; cursor: pointer;" href="">Unsubscribe</a> вывод: <a class="simple-button-plugin" href="" style="background-color:#27AE61;border:1px solid #27AE61;color:#fff;padding:5px 10px;font-size:14px;text-decoration:none;" rel="">Unsubscribe</a> 10 часов назад, ZIKURIK сказал: ага, без этого ни один инородный класс выводиться не будет. Еще можно и атрибуты пропускать нужные этой функцией: Спасибо, получилось пропустить атрибут target
11 сентября, 20213 yr comment_172399 41 минуту назад, cliva сказал: Вроде бы выставил 1, но всё как было, так и осталось Их там несколько.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.