Многие знакомы с такой ситуацией, когда какой-нибудь нерадивый (или озлобленный на весь мир юзер) вместо нормального текста вводит слова неприлично большой длины типа "пппппппп...ппп" и тому подобное.
Порой длина таких "слов" доходит до 200 и более знаков, завися в основном от степени "озлобленности" подобного пользователя.
При этом дизайн любой страницы начинает "плыть" - разъезжаются по ширине блоки, заголовки, основной контент (или просто такая строка выезжает за пределы своего блока-родителя).
Дабы избежать таких казусов, разработал небольшой модуль long_text_filter. Как понятно из названия - это обычный фильтр ввода. После включения блока на странице настройки фильтров появляется новый чекбокс - "long text filter" включив который, на странице конфигурирования фильтра ввода можно будет указать максимальную длину слова в тексте, при превышении которого оно будет разбиваться пробелами на слова указанной длины.
Модуль для шестой версии, но можно применить и к пятой, если заменить info-файл.
Вложение | Размер |
---|---|
long_text_filter.zip | 1018 байт |
Комментарии
спасибо
Здорово! Маст хэв
на drupal.org отправляйте, мир должен знать!
А че-нибудь типа overflow:hidden не пойдет?
тоже в недоумении.Строчка в стилях против доп.модуля...я бы выбрал стили
Я за стили, ведь читать двадцать слов «пппппппппп» всё равно нет никакого смысла.
Кроме того, разрыв дизайна из-за таких длинных слов — минус прежде всего верстальщику/программисту, ибо никогда нельзя полагаться на корректность введенных юзером данных.
извините,а как с помощью одного CSS можно ограничить длину слова?
Если задачу ставить исключительно как сохранение вида страницы то да.
А если задачу расширить, то есть отобразить все таки ВЕСЬ пользовательский ввод то, как наверное тебе понятно, нет.
Весь фильтр это использование php ного wordwrap a
Ну так может кто ответит как с помощью overflow:hidden убрать строку?
К блоку с текстом добавляем стиль overflow:hidden. В результате блок не будет растягиваться под контент, а просто обрежет его
Спасибо за Ваши комментарии.
Я не буду спорить насчет насчет применения стилей и согласен, что overflow:hidden решает поставленную задачу в большинстве случаев.
Однако существуют моменты, когда применение overflow не оправдано.
В моей практике случались ситуации, когда к примеру административный блок с ссылками типа "изменить", "удалить", "одобрить" как раз и "уезжал" из-за таких длинных строк за пределы родительского блока и в случае применения overflow:hidden он бы просто исчезал а так он в любом случае показывается.
Я не навязываю свое мнение а просто предлагаю один из вариантов решения подобной задачи.
P.S. vic - тебе огромнейший привет...
Согласен!
Тогда уж "overflow:auto;" чтобы не просто обрезало а давало возможность скроллить.
Потому-что длинныйтекстбезпробелов не всегда может быть "злобным".
А изменять как-либо информацию пришедшую от пользователя считаю немного неправильно.
нужный модуль
А как этот модуль поступает со словами, которые введены через неразрывный пробел   ?? Просто у меня юзеры используя fckeditor частенько жмут shift+пробел и получается неразрывный пробел и слова получаются тоже длинными.
неразрывный пробел считается одним символом и если слова разделены этим символом, то фильтр считает такое сочетание слов одной строкой.
Обрезать длинные слова либо не показывать их вообще -- довольно прикольно, но это не решает проблему в общем случае.
То есть довольно часто клиент уже имеет свой контент в каком-нибудь ворд доке (или другом формате), и добавляет его на сайт простым копи-пейстом.
В итоге на сайт может попасть уродский текст большими буквами, курсивом и, к примеру, зеленый, по центру.
То что называется не пришей козе рукав (если ничего не путаю).
Конечно же речь идет об использовании FCKEditor либо TinyMCE - WYSIWYG редакторов, никаких там упрощенных HTML или BBCode.
Мне в голову приходит только идея об ограничении набора стилей, и пользователь может использовать на этой конкретной странице _только_ эти стили.
Когда-то был модуль htmlwrap, но его забросили на 4.7.x версии.
сейчас существует htmLawed
О, спасибо. Пока не нужен, но вмемориз.
хорошее предложение. наверное это поможет многим кто не хочет видет ненужных выражений
хорошее предложение. наверное это поможет многим кто не хочет видет ненужных выражений
Выражения то остануться они просто раздробятся
я все таки склоняюсь к overflow:hidden, потому что пользователь может добавить код картинки типа
<img width="2000"
и поламает весь дизайн, а с overflow:hidden этого не случится (ваш модуль к сожалению здесь не поможет)однозначно в меморы. спасибо.
Я тоже был согласен в начале с редактированием через overflow:hidden но потом появился вопрос а
"что делать с ссылками?" я про те которые очень длиныныеи нужные к примеру с google.
Скрыть не правильно и обрезать тем более...
мое мнение делать как сказал BMW делать
overflow:auto; - на мой взгляд самый идеальный вариант.
А вот такой вариант обработается? Он тоже воспринимается, как неразрывное слово.
:):) :):)
О, на drupal.ru стоит
overflow:hidden
для комментариев.Обрабатывается.
Отличный модуль! Спасибо! Именно то, что надо!
Кстати, здесь не упомянули про альтернативное решение, есть такое чудо-свойство в CSS3
word-wrap: break-word;
Возник вопрос. Установила этот модуль, все прекрасно работает.
Осталось одно неприятное НО: на заголовки это не распространяется. ((
поэтому любой нехороший человек может запросто сломать дизайн.
Как это можно решить?