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

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

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

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

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

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

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

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

Комментарии

Аватар пользователя volocuga volocuga 20 августа 2009 в 23:53
"Химический Али" wrote:

А че-нибудь типа overflow:hidden не пойдет?

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

Аватар пользователя kyky kyky 21 августа 2009 в 2:15

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

Аватар пользователя Demimurych Demimurych 21 августа 2009 в 3:54
"Химический Али" wrote:

А че-нибудь типа overflow:hidden не пойдет?

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

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

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

Аватар пользователя vic vic 21 августа 2009 в 7:47
"olmar" wrote:

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

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

<div style="width:200px; overflow:hidden">Ппппппппппппппппппппппппппппппппппппппппппппппппппп</div>
Аватар пользователя stenli21 stenli21 21 августа 2009 в 9:19

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

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

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

Аватар пользователя BMW BMW 21 августа 2009 в 12:06

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

Аватар пользователя stddos stddos 21 августа 2009 в 12:47

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

Аватар пользователя stenli21 stenli21 21 августа 2009 в 14:21

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

Аватар пользователя esurov esurov 21 августа 2009 в 15:35

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

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

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

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

Аватар пользователя volzanin volzanin 23 августа 2009 в 10:33

хорошее предложение. наверное это поможет многим кто не хочет видет ненужных выражений

Аватар пользователя Oleksa@drupal.org Oleksa@drupal.org 24 августа 2009 в 10:00
volzanin
хорошее предложение. наверное это поможет многим кто не хочет видет ненужных выражений

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

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

Аватар пользователя mario8 mario8 30 августа 2009 в 17:36

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

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

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

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

Аватар пользователя kost kost 10 сентября 2009 в 16:58

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

:) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :):) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :):) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)

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

Аватар пользователя stddos stddos 16 ноября 2009 в 22:18

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

word-wrap: break-word;

Аватар пользователя kirya kirya 6 декабря 2009 в 2:34

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