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

Главные вкладки

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

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

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

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

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

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

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

Комментарии

Аватар пользователя 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.

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

Аватар пользователя 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

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

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 для комментариев.

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

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