Не даем "ломать" дизайн

20 августа 2009 в 16:31
Аватар пользователя stenli21 stenli21 0 29

Многие знакомы с такой ситуацией, когда какой-нибудь нерадивый (или озлобленный на весь мир юзер) вместо нормального текста вводит слова неприлично большой длины типа "пппппппп...ппп" и тому подобное.

Порой длина таких "слов" доходит до 200 и более знаков, завися в основном от степени "озлобленности" подобного пользователя.

При этом дизайн любой страницы начинает "плыть" - разъезжаются по ширине блоки, заголовки, основной контент (или просто такая строка выезжает за пределы своего блока-родителя).

Дабы избежать таких казусов, разработал небольшой модуль long_text_filter. Как понятно из названия - это обычный фильтр ввода. После включения блока на странице настройки фильтров появляется новый чекбокс - "long text filter" включив который, на странице конфигурирования фильтра ввода можно будет указать максимальную длину слова в тексте, при превышении которого оно будет разбиваться пробелами на слова указанной длины.

Модуль для шестой версии, но можно применить и к пятой, если заменить info-файл.

ВложениеРазмер
Иконка пакета long_text_filter.zip1018 байт

Комментарии

"Химический Али" wrote:
А че-нибудь типа overflow:hidden не пойдет?

тоже в недоумении.Строчка в стилях против доп.модуля...я бы выбрал стили

20 августа 2009 в 23:53

Я за стили, ведь читать двадцать слов «пппппппппп» всё равно нет никакого смысла.
Кроме того, разрыв дизайна из-за таких длинных слов — минус прежде всего верстальщику/программисту, ибо никогда нельзя полагаться на корректность введенных юзером данных.

21 августа 2009 в 2:15

"Химический Али" wrote:
А че-нибудь типа overflow:hidden не пойдет?

Если задачу ставить исключительно как сохранение вида страницы то да.

А если задачу расширить, то есть отобразить все таки ВЕСЬ пользовательский ввод то, как наверное тебе понятно, нет.

Весь фильтр это использование php ного wordwrap a

21 августа 2009 в 3:54
Аватар пользователя vic vic 0

"olmar" wrote:
Ну так может кто ответит как с помощью overflow:hidden убрать строку?

К блоку с текстом добавляем стиль overflow:hidden. В результате блок не будет растягиваться под контент, а просто обрежет его

<div style="width:200px; overflow:hidden">Ппппппппппппппппппппппппппппппппппппппппппппппппппп</div>
21 августа 2009 в 7:47

Спасибо за Ваши комментарии.
Я не буду спорить насчет насчет применения стилей и согласен, что overflow:hidden решает поставленную задачу в большинстве случаев.
Однако существуют моменты, когда применение overflow не оправдано.
В моей практике случались ситуации, когда к примеру административный блок с ссылками типа "изменить", "удалить", "одобрить" как раз и "уезжал" из-за таких длинных строк за пределы родительского блока и в случае применения overflow:hidden он бы просто исчезал а так он в любом случае показывается.

Я не навязываю свое мнение а просто предлагаю один из вариантов решения подобной задачи.

P.S. vic - тебе огромнейший привет...

21 августа 2009 в 9:19
Аватар пользователя BMW BMW 0

Тогда уж "overflow:auto;" чтобы не просто обрезало а давало возможность скроллить.
Потому-что длинныйтекстбезпробелов не всегда может быть "злобным".
А изменять как-либо информацию пришедшую от пользователя считаю немного неправильно.

21 августа 2009 в 12:06

А как этот модуль поступает со словами, которые введены через неразрывный пробел &nbsp ?? Просто у меня юзеры используя fckeditor частенько жмут shift+пробел и получается неразрывный пробел и слова получаются тоже длинными.

21 августа 2009 в 12:47

неразрывный пробел   считается одним символом и если слова разделены этим символом, то фильтр считает такое сочетание слов одной строкой.

21 августа 2009 в 14:21

Обрезать длинные слова либо не показывать их вообще -- довольно прикольно, но это не решает проблему в общем случае.
То есть довольно часто клиент уже имеет свой контент в каком-нибудь ворд доке (или другом формате), и добавляет его на сайт простым копи-пейстом.

В итоге на сайт может попасть уродский текст большими буквами, курсивом и, к примеру, зеленый, по центру.
То что называется не пришей козе рукав (если ничего не путаю).

Конечно же речь идет об использовании FCKEditor либо TinyMCE - WYSIWYG редакторов, никаких там упрощенных HTML или BBCode.

Мне в голову приходит только идея об ограничении набора стилей, и пользователь может использовать на этой конкретной странице _только_ эти стили.

21 августа 2009 в 15:35
volzanin
хорошее предложение. наверное это поможет многим кто не хочет видет ненужных выражений

Выражения то остануться они просто раздробятся

я все таки склоняюсь к overflow:hidden, потому что пользователь может добавить код картинки типа <img width="2000" и поламает весь дизайн, а с overflow:hidden этого не случится (ваш модуль к сожалению здесь не поможет)

24 августа 2009 в 10:00

Я тоже был согласен в начале с редактированием через overflow:hidden но потом появился вопрос а
"что делать с ссылками?" я про те которые очень длиныныеи нужные к примеру с google.

Скрыть не правильно и обрезать тем более...

мое мнение делать как сказал BMW делать

overflow:auto; - на мой взгляд самый идеальный вариант.

30 августа 2009 в 17:36

А вот такой вариант обработается? Он тоже воспринимается, как неразрывное слово.

Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile :):) Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile :):) Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile Smile

О, на drupal.ru стоит overflow:hidden для комментариев.

10 сентября 2009 в 16:58

Кстати, здесь не упомянули про альтернативное решение, есть такое чудо-свойство в CSS3

word-wrap: break-word;

16 ноября 2009 в 22:18

Возник вопрос. Установила этот модуль, все прекрасно работает.
Осталось одно неприятное НО: на заголовки это не распространяется. ((
поэтому любой нехороший человек может запросто сломать дизайн.
Как это можно решить?

6 декабря 2009 в 2:34