The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"глубина тредов; format=flowed"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Диалог с администрацией проекта
Изначальное сообщение [ Отслеживать ]

"глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 25-Сен-10, 18:08 
В топиках с сотнями сообщений (комменты к новостям) треды становятся часто настолько глубокие, что последние уровни все идут с одинаковым смещением от левого края, как бы линейно. Оно, конечно, сохраняет наследование, и можно переместиться к родительскому, но визуально это никак не видно. Решаема ли эта проблема?

Еще, заметил, что при редактировании ответов в цитатах строки обычно заканчиваются на пробелы. Скорее всего, это случайность, но она сразу напомнила о RFC2646/RFC3676 - параметр text/plain; format=flowed, который позволяет почтовым клиентам переформатировать абзацы цитат в духе <blockquote> (на http://joeclark.org/ffaq.html есть скриншоты). Подумалось, а что если это сделать хотя бы для присылаемыех на почту комментов? А то и на самом форуме, ведь нецитированные слова и сейчас занимают полную ширину и переформатируются в зависимости от размеров как полноценные параграфы.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "глубина тредов; format=flowed"  +/
Сообщение от Maxim Chirkov email(ok) on 26-Сен-10, 19:32 
>В топиках с сотнями сообщений (комменты к новостям) треды становятся часто настолько
>глубокие, что последние уровни все идут с одинаковым смещением от левого
>края, как бы линейно.

В подобном линейном виде отображаются ответы, с уровнем вложенности более 20 (это для страниц новостей, для страниц форума лимит чуть меньше). Это очень редкое явление, обычно далее такие обсуждения не ветвятся, а представляют собой почти линейных диалог нескольких людей. Но при уровне вложенности более 20 начинают проявляться проблемы с некоторыми браузерами, форматирование разъезжается или колонки становятся слишком узкими или вообще пропадают сообщения, хотя на странице они они есть.

>Оно, конечно, сохраняет наследование, и можно переместиться
>к родительскому, но визуально это никак не видно. Решаема ли эта
>проблема?

Например, можно визуально как-то отметить сообщения у которых нарушается непрерывный ход ответов.
Сейчас отследить подветки в длинных нитях можно по номерации. В начале заголовка указан номер сообщения, например, "29.580", где 29 уровень вложенности, а 580 - идентификатор. Если нарушается непрерывный порядок уровней, то значит началась новая подветвь, а родительское сообщение - ближайшее с уровнем на 1 меньше текущего.

>Еще, заметил, что при редактировании ответов в цитатах строки обычно заканчиваются на пробелы.

Вызывает ли это какие-то проблемы ? Это особенность функции обрезания строк при квотинге. Сейчас заметил, что длинные неразрывные строки квотятся без разбиения, хотя должны резаться по 80 символов. Разберусь в чем дело.

> Скорее всего, это случайность, но она сразу напомнила о RFC2646/RFC3676 - параметр text/plain; format=flowed,

Я правильно понял, что в Content-Type достаточно добавить "format="flowed" и почтовый клиент сам будет разбивать блоки начинающиеся с ">" ?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 26-Сен-10, 20:15 
>В подобном линейном виде отображаются ответы, с уровнем вложенности более 20 (это
>для страниц новостей, для страниц форума лимит чуть меньше). Это очень
>редкое явление, обычно далее такие обсуждения не ветвятся, а представляют собой
>почти линейных диалог нескольких людей. Но при уровне вложенности более 20
>начинают проявляться проблемы с некоторыми браузерами, форматирование разъезжается или колонки становятся
>слишком узкими или вообще пропадают сообщения, хотя на странице они они
>есть.

Думается, ЖЖ в том числе и поэтому по умолчанию треды сворачивает просто в заголовки. Но я не очень понял, как из страницы форума открыть просто подветку.

>>Оно, конечно, сохраняет наследование, и можно переместиться
>>к родительскому, но визуально это никак не видно. Решаема ли эта
>>проблема?
>
>Например, можно визуально как-то отметить сообщения у которых нарушается непрерывный ход ответов.

Может, цвета какие-нибудь?.. Аналогично как бывает подсветка разных уровней квотинга или четных/нечетных строк в таблице...

>Сейчас отследить подветки в длинных нитях можно по номерации. В начале заголовка
>указан номер сообщения, например, "29.580", где 29 уровень вложенности, а 580
>- идентификатор. Если нарушается непрерывный порядок уровней, то значит началась новая
>подветвь, а родительское сообщение - ближайшее с уровнем на 1 меньше
>текущего.

Хм, странно. Вот http://www.opennet.ru/openforum/vsluhforumID3/70525.html есть по меньшей мере один блок, где с такой вложенностью идет переписка более чем двух человек. Но там просто 409, не 20.409.

>>Еще, заметил, что при редактировании ответов в цитатах строки обычно заканчиваются на пробелы.
>
>Вызывает ли это какие-то проблемы ?

Нет, не вызывает. На вебе на это вообще абсолютно пофиг, есть они, нет... Просто это напомнило про соответствующий стандарт - использовать эту особенность, что ниже и написал.

>Это особенность функции обрезания строк при
>квотинге. Сейчас заметил, что длинные неразрывные строки квотятся без разбиения, хотя
>должны резаться по 80 символов. Разберусь в чем дело.

Кстати, не факт. Если там урл, то ему, может, лучше и остаться неразрезанным.

>> Скорее всего, это случайность, но она сразу напомнила о RFC2646/RFC3676 - параметр text/plain; format=flowed,
>
>Я правильно понял, что в Content-Type достаточно добавить "format="flowed" и почтовый клиент сам будет разбивать блоки начинающиеся с ">" ?

Не совсем. То есть, он их начинает разбивать, но это получается не вполне корректно, если пробелы стоят не так. Вот скриншот этого сообщения в почте (уже с flowed) и его оригинала на вебе:

http://disk.tom.ru/qc6etcq/1/54df9/opennet100926-2230flowed.jpg

Там видна первая цитата - она flow'ится как blockquote, но не целиком, а до слова "настолько", после которого жесткий перевод строки. В конце видна последняя цитата: на вебе это одна непрерывная строка (где номера RFC), в письме оно принудительно разбилось, вторая часть перестала быть цитатой - и выпала из зеленой подсветки.

Алгоритм там чуть более хитрый, но в целом не настолько сложный. Можно читать 2646, там чуть проще описано, 3676 в основном всякие проблемы языков справа налево описывает да цифровых сигнатур.

Хотя мое предложение касалось не столько почты, сколько веба - когда разбиение с пробелами будет удовлетворять format=flowed, алгоритмы почтовых клиентов можно будет реализовать уже в веб-движке для blockquote, чтоб браузер сам делал "красиво", как бывает на других форумах. При этом для пользователя и почты всё прозрачно и точно так же останется с ">". В почтовых клиентах при большей вложенности выглядит типа такого: http://disk.tom.ru/ew4eygq/1/fcf20/uafug-flowed091229.jpg

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "глубина тредов; format=flowed"  +/
Сообщение от Maxim Chirkov email(ok) on 27-Сен-10, 23:13 
Нашел несколько неприятных ошибок, надеюсь исправив их новых ошибок не добавил, так как переписал функцию квотинга с нуля. При цитировании новых сообщений теперь проблемы должны исчезнуть (квоты в уже написанных сообщениях останутся как есть).

> Думается, ЖЖ в том числе и поэтому по умолчанию треды сворачивает просто
> в заголовки. Но я не очень понял, как из страницы форума
> открыть просто подветку.

Не понял, с общей html-страницы или в режимах ajax/нитевидном  отобразить только часть обсуждения относительно определенного родительского сообщения ?

> Может, цвета какие-нибудь?.. Аналогично как бывает подсветка разных уровней квотинга или
> четных/нечетных строк в таблице...

Скорее всего, придется как-то цветом нарушение непрерывности цепочки вопрос/ответ выделять, только пока в голову не приходит как наиболее оптимально это сделать.

Например, есть нить:
1
-2
--3
---4
--5
---6
-7

Как-то нужно выделить нарушение цепочки ответов для сообщений 5 и 7, при этом показав, что они являются ответами на сообщения 2 и 1.

>> Сейчас отследить подветки в длинных нитях можно по номерации. В начале заголовка
>> указан номер сообщения, например, "29.580", где 29 уровень вложенности, а 580
>> - идентификатор. Если нарушается непрерывный порядок уровней, то значит началась новая
>> подветвь, а родительское сообщение - ближайшее с уровнем на 1 меньше
>> текущего.
> Хм, странно. Вот http://www.opennet.ru/openforum/vsluhforumID3/70525.html есть по
> меньшей мере один блок, где с такой вложенностью идет переписка более
> чем двух человек. Но там просто 409, не 20.409.

Верно, это только на странице с новостью.

> Хотя мое предложение касалось не столько почты, сколько веба - когда разбиение
> с пробелами будет удовлетворять format=flowed, алгоритмы почтовых клиентов можно будет
> реализовать уже в веб-движке для blockquote, чтоб браузер сам делал "красиво",

С этим нужно поэкспериментировать, но боюсь тогда съедет квотинг блоков фиксированной ширины (например, куски файлов конфигурации, участки исходных текстов и т.п.).


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 27-Сен-10, 15:54 
На текущий момент всё еще есть проблема в почте. На вебе строка цитаты непрерывная, в почте после нескольких с пробелом на конце (нормально отработал flowed) попадается строка, где 2 слова из предыдущей строки ("высказывание 2") жестко перенеслись без знака квоты, а потом снова продолжился flowed:
3E F2 C5 DE D8 20 C9 C4 │ C5 D4 20 CF 20 D4 CF CD  >Речь идет о том
2C 20 DE D4 CF 20 CF C4 │ CE C9 CD 20 C9 DA 20 CF  , что одним из о
D3 CE CF D7 CE D9 C8 20 │ F7 C1 DB C9 C8 20 C1 D2  сновных Ваших ар
C7 D5 CD C5 CE D4 CF D7 │ 20 D7 20 DC D4 C9 C8 20  гументов в этих
0D 0A 3E D3 C1 CD D9 C8 │ 20 D3 D0 CF D2 C1 C8 20  ♪◙>самых спорах
22 47 50 4C 20 76 73 20 │ 42 53 44 22 20 D1 D7 CC  "GPL vs BSD" явл
D1 C5 D4 D3 D1 20 2D 20 │ 22 DE D4 CF C2 20 D0 D2  яется - "чтоб пр
CF D0 D2 C9 C5 D4 C1 D2 │ DD C9 CB C9 20 C4 C5 CC  оприетарщики дел
C9 CC C9 D3 D8 20 D3 D7 │ CF C9 CD C9 20 0D 0A 3E  ились своими ♪◙>
C9 DA CD C5 CE C5 CE C9 │ D1 CD C9 22 2E 20 F0 CF  изменениями". По
DC D4 CF CD D5 20 CB CF │ C7 C4 C1 20 F7 D9 20 D7  этому когда Вы в
C4 D2 D5 C7 20 D0 C9 DB │ C5 D4 C5 20 D0 D2 CF D4  друг пишете прот
C9 D7 CE CF C5 20 D3 D7 │ CF C5 CA 20 D0 CF DA C9  ивное своей пози
C3 C9 C9 0D 0A D7 D9 D3 │ CB C1 DA D9 D7 C1 CE C9  ции♪◙высказывани
C5 20 22 32 29 0D 0A 3E │ F3 CB C1 D6 C9 D4 C5 2C  е "2)♪◙>Скажите,

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 04-Окт-10, 22:07 
Гм, наблюдаю интересный эффект: на http://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?quote... начиная со слов "Доставило." - вижу увеличенный шрифт, относительно предыдущего сообщения.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

6. "глубина тредов; format=flowed"  +/
Сообщение от Maxim Chirkov email(ok) on 05-Окт-10, 07:39 
> Гм, наблюдаю интересный эффект: на http://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?quote...
> начиная со слов "Доставило." - вижу увеличенный шрифт, относительно предыдущего сообщения.

В том сообщении случайно отквочен закрывающийся тег "[code ]", который в нити не виден, но в форме ответа проявляется.


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 10-Дек-10, 14:31 
Кстати, проблема в посте из #3 сохраняется: только что пришел ответ из http://www.opennet.ru/openforum/vsluhforumID4/378.html#2 - и там выглядит вот так:

"читаемые, попробовал масштабировать - либо не увелчииваются, либо на"
"некоторых размерах"
"тоже не отображаются."

Первая и третья строчка - форматирована как цитата, вторая - не как цитата, просто текст. То есть, в конце первой строчки отсутствует нужный по RFC пробел.

P.S. В догонку о недавних багах в цитировании - еще в конце любого сообщения добавляется пустая строка (а при цитировании и две...)

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

9. "глубина тредов; format=flowed"  +/
Сообщение от Maxim Chirkov email(ok) on 10-Дек-10, 14:57 
> Первая и третья строчка - форматирована как цитата, вторая - не как
> цитата, просто текст. То есть, в конце первой строчки отсутствует нужный
> по RFC пробел.

Точно, я недавно немного код квотинга переделал и пробелы убрал. Сейчас вернул и подписал комментарий, пробелы не трогать :-)
Пробелом должны оканчиваться все отквоченные строки или для последней его ставить не нужно ?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 10-Дек-10, 21:59 
>> Первая и третья строчка - форматирована как цитата, вторая - не как
>> цитата, просто текст. То есть, в конце первой строчки отсутствует нужный
>> по RFC пробел.
> Точно, я недавно немного код квотинга переделал и пробелы убрал. Сейчас вернул
> и подписал комментарий, пробелы не трогать :-)
> Пробелом должны оканчиваться все отквоченные строки или для последней его ставить не
> нужно ?

Чуть-чуть сложнее. Пробелами оканчиваются все строки, кроме последней строки параграфа. В квоте, понятно, параграфов может быть больше одного. См. http://tools.ietf.org/html/rfc2646.html#section-4.1 и 4.2, далее 4.5, чтобы не возникало проблемы из 3.1 (еще дальше есть примеры).

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "глубина тредов; format=flowed"  +/
Сообщение от Maxim Chirkov email(ok) on 10-Дек-10, 22:26 
>[оверквотинг удален]
>>> цитата, просто текст. То есть, в конце первой строчки отсутствует нужный
>>> по RFC пробел.
>> Точно, я недавно немного код квотинга переделал и пробелы убрал. Сейчас вернул
>> и подписал комментарий, пробелы не трогать :-)
>> Пробелом должны оканчиваться все отквоченные строки или для последней его ставить не
>> нужно ?
> Чуть-чуть сложнее. Пробелами оканчиваются все строки, кроме последней строки параграфа.
> В квоте, понятно, параграфов может быть больше одного. См. http://tools.ietf.org/html/rfc2646.html#section-4.1
> и 4.2, далее 4.5, чтобы не возникало проблемы из 3.1 (еще
> дальше есть примеры).

Вроде что-то похожее сделал, надеюсь не напутал ничего.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

13. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 10-Дек-10, 22:50 
>> Чуть-чуть сложнее. Пробелами оканчиваются все строки, кроме последней строки параграфа.
>> В квоте, понятно, параграфов может быть больше одного. См. http://tools.ietf.org/html/rfc2646.html#section-4.1
>> и 4.2, далее 4.5, чтобы не возникало проблемы из 3.1 (еще
>> дальше есть примеры).
> Вроде что-то похожее сделал, надеюсь не напутал ничего.

Увы, нет. В почту этот комментарий пришел так: длинная строка (пробелы склеили в параграф, да):

"и подписал комментарий, пробелы не трогать :-) Пробелом должны
оканчиваться все отквоченные строки или для последней его"

потом на отдельной строке "ставить не" без всякой квоты, потом "нужно?" снова в квоте.

А еще скрипт сделал жесткий перенос (без пробела) сразу после ссылки - хотя в оригинале строка (т.е. параграф) еще продолжается.

У меня подозрение, что код обрабатывает текст не параграфами, а как-то иначе :) Возможно, там в регэкспе /sm вместо split по \n и итерации по полученным параграфам?

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

15. "глубина тредов; format=flowed"  +/
Сообщение от Maxim Chirkov email(ok) on 10-Дек-10, 23:09 
>[оверквотинг удален]
> в параграф, да):
> "и подписал комментарий, пробелы не трогать :-) Пробелом должны
> оканчиваться все отквоченные строки или для последней его"
> потом на отдельной строке "ставить не" без всякой квоты, потом "нужно?" снова
> в квоте.
> А еще скрипт сделал жесткий перенос (без пробела) сразу после ссылки -
> хотя в оригинале строка (т.е. параграф) еще продолжается.
> У меня подозрение, что код обрабатывает текст не параграфами, а как-то иначе
> :) Возможно, там в регэкспе /sm вместо split по \n и
> итерации по полученным параграфам?

Не, там оказывает перед отправкой почтой еще дополнительный обрезатель по 80 символов в строке был, который убивал квотинг. Сейчас переделал немного, посмотрим как будет.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

17. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 10-Дек-10, 23:25 
>[оверквотинг удален]
>> потом на отдельной строке "ставить не" без всякой квоты, потом "нужно?" снова
>> в квоте.
>> А еще скрипт сделал жесткий перенос (без пробела) сразу после ссылки -
>> хотя в оригинале строка (т.е. параграф) еще продолжается.
>> У меня подозрение, что код обрабатывает текст не параграфами, а как-то иначе
>> :) Возможно, там в регэкспе /sm вместо split по \n и
>> итерации по полученным параграфам?
> Не, там оказывает перед отправкой почтой еще дополнительный обрезатель по 80 символов
> в строке был, который убивал квотинг. Сейчас переделал немного, посмотрим как
> будет.

Во, замечательно - этот на почту пришел полностью под flowed. Единственно что между параграфами потерялась отбивка пустыми строками - но это может и фича, а не бага, я в http://www.opennet.ru/openforum/vsluhforumID4/374.html#7 описывал...

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

14. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 10-Дек-10, 22:58 
> У меня подозрение, что код обрабатывает текст не параграфами, а как-то иначе :) Возможно, там в регэкспе /sm вместо split по \n и итерации по полученным параграфам?

Дело, кстати, еще может быть в том, что поддержка RFC не полная: там при интерпретации во внутреннем представлении необходимо удалять из каждой строки знаки цитаты, склеивать их в параграф, лишь у которого уже есть уровень квотинга. А потом параграф заново разбивается на строки с переносами-пробелами, в каждую из которых вставляется знак квоты. Я это проиллюстрировал в предыдущем абзаце - там только одна угловая скобка на весь абзац, а не на каждую строку, думаю, сейчас скрипт оставит квотой только её часть, а остальноей станет нецитированным (имею в виду почту - на вебе-то весь параграф отформатирован цветом квоты).

P.S. Кстати, если логика склеивания заново будет, то и blockquote прикрутить проще станет.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

7. "глубина тредов; format=flowed"  +/
Сообщение от nuclight email(ok) on 10-Дек-10, 14:24 
Это, видимо, из недавних изменений на форуме - работа квотинга на вебе изменилась: он теперь цитированный текст от нецитированного принудительно отделяет пустой строкой, а все цитированные слепляет друг с другом. В результате получается вот такая картина:

> Но позвольте - в оригинальной своей цитате Вы утверждали
> совсем другое:
>>> выделенный кусок изначального утверждения
> а теперь говорите нечто, скорее, противоположное.

Теперь, если блок с тремя угловыми отделить пустыми строками, чтоб визуально выделить оригинал - скрипт переправит всё на слепленное, первый раз подумал, что я ошибся, ан нет, после двух правок увидел.

Кроме того, еще теперь делается вот такое:

> идет очень длинная цитата, много текста, из которой цитируются только

[...]
> релевантные

[...]
> части

Так вот, скрипт перед  "[...]" принудительно вставляет пустую строку (причем после почему-то не вставляет), тогда как это одна цитата, получается не очень красиво. Я здесь вставляю "[...]" не в  цитате, чтоб показать, что это я фигурно отцитировал, а не у собеседника так (или оно само). Если их под квотой вставлять, то всё нормально.

В принципе, эти изменения - скорее положительные, теперь о форматировании можно не заботиться, и чужое кривое форматирование тоже поправит. Но вот в таких случаях - всё портится.

В принципе, первую проблему можно решить введением разных цветов для квотинга разного уровня. Достаточно добавить  только три цвета, вот как в slrn сделано, к примеру:

color quotes            "yellow"        "black"
color quotes1           "cyan"          "black"
color quotes2           "brown"         "black"
color quotes3           "blue"          "black"
color quotes4           "brown"         "black"
color quotes5           "brown"         "black"
color quotes6           "brown"         "black"
color quotes7           "brown"         "black"

Или всё же даже подумать о цитатах как blockquote?..

По второй проблеме - наверное, не делать отбивку пустой строкой, если первая строка нормального текста не содержит букв. Или начинается и кончается не с них (может быть, кто-то напишет "[...skip...]").

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру