ArtReal's readme
personal unreality:  точка пушистости

Редактирование фрагментов

07.03.05 14:27 ◇ keywords: wiki, философское

А что, в Wiki нельзя выделить фрагмент, ткнуть в него мышкой (double click) и редактировать только его, а не всю страницу? Кошмар какой ;)

 [ link ] -1 +1

Comments   [ 17 ]
[ 1 ] Mash  / 07.03.2005 15:15
В принципе, на клиента можно повесить небольшой js, дающий серверу точки входа/выхода редактируемой части, но сам я такого не встречал, только разговоры слышал. Редактирование какого-либо абзаца — максимум, что доводилось мне видеть.

ArtReal: По абзацам — логичнее и надежнее.
Иначе интересной будет ситуация, когда два пользователя начнут одновременно редактировать.


[ 2 ] Oleg Marchuk  / 07.03.2005 15:28
Пока что такая возможность записана в идеях.

[ 3 ] Ilya Biman  / 07.03.2005 17:05
«выделить фрагмент, ткнуть в него мышкой (double click)»
как ты себе это представляешь?

ArtReal: Аааа! Гадкий браузер.
Впрочем, можно и кнопку нажать.


[ 4 ] kukutz  / 07.03.2005 17:07
А что, где-то в вебе можно?

Скажите где.

ArtReal: А нету инструментов работы с фрагментами текста (а не с целой страницей). Раньше, как я понимаю, это мало кого интересовало… однако, хочется. Особенно в Вики, как в активной системе.


[ 5 ] kukutz  / 07.03.2005 17:37
Да есть инструменты, но нетривиальные.

А вот инструменты, которые могли бы сопоставить выделенное там конкретному куску в БД на сервере, кстати, ещё более нетривиальные.

Было бы у меня две недели свободных — можно было бы пытаться. Но это нереально, у меня их нет и не будет.


[ 6 ] Mash  / 07.03.2005 18:09
[В принципе, kukutz уже сказал о сравнении с БД, но я уже написал комментарий. Не выкидывать же.]

Ну, с абзацами-то проще. Страница разбивается на части по какому-то критерию, при редактировании такой части вместе с правкой на сервер уходит и этот критерий (id или что-там-ещё).

А вот с даблкликом… Если подумать чуть дольше, чем я, при написании слов «небольшой js», то задача получается достаточно нетривиальной. Т.е., если яя захочу исправить ошибку двойного я, получая textarea лишь только с этими двумя «я», исправляя их на «я» и отсылая на сервер, то вряд ли сие получится осуществить.

Можно было бы вычислить точки входа/выхода «яя» (n символов от начала, например, блока id="content"), отправить их значения на сервер вместе с отредактированным текстом, сгенерировать на сервере страницу, которую я получал, найти там эти точки, изменить содержимое… (уже морока какая-то получается). Но… клиент-сайд такая ненадёжная штука. :) Например, значения этих точек может попортить какой-нибудь прокси или те же самые расширения mozilla, изменяющие код страниц.

Так что проще отрабатывать этот даблклик на предмет принадлежности «яя» тому же абзацу и пихать этот абзац в textarea для правки.

Хмм… Занятная тема. :)

2 kukutz, Oleg Marchuk: а где это уже обсуждалось, можно посмотреть?


[ 7 ] Oleg Marchuk  / 07.03.2005 18:14
[link]

[ 8 ] Mash  / 07.03.2005 18:38
Спасибо.

[ 9 ] A!e%  / 17.03.2005 00:06
Это, а что если сделать редактирование выделенного фрагментатак:
1. создаем жабоскриптом редактор
2. человек в нем редактирует выделенный текст
3. нажимает «послать»
4. тем же жабоскриптом фтыкаем фрагмент взад и отправляем серверу, как будто отредактировалась вся страничка.

Вроде должно работать вообще независимо от.


[ 10 ] kukutz  / 17.03.2005 10:11
Проблема сопоставления места в HTML-коде месту в wiki-разметке при этом никуда не делась, правда?

[ 11 ] A!e%  / 17.03.2005 10:29
Не понимаю, это так сложно? Предлагаю такой вариант: считаем индекс начала выделенной строки по символам, пропуская разметку — и там и там. С пробелами поступаем так — считаем s* за один пробел. И получаем однозначное сопоставление места там и тут. Естественно, есть проблема с тем, что выделение может начаться уже внутри разметки и одного из тегов (или обоих) — закрывающего или открывающего не увидим… Но настолько ли это фатально? Да и с этим тоже можно бороться, если нужно.

[ 12 ] kukutz  / 17.03.2005 11:20
Уточни, как мы пропускаем разметку. Опиши случаи ссылок и акшнов.

[ 13 ] A!e%  / 17.03.2005 13:18
Я абсолютно согласен, что идея не доработана. Изначально я вообще подумал о введении неких тегов, которые бы связывали HTML и Wiki-разметку. С их помощью можно обойти и actions и ссылки и вообще что угодно. Понятно, что напрямую в сложной системе не получится, мысль в том, что это реализуемо за небольшое количество размышлений.

[ 14 ] kukutz  / 17.03.2005 13:32
Эти «теги» — это абзацы (см. paragrafica в WackoWiki).

То есть задача решаемая. Просто времени не хватает её решить.


[ 15 ] Oleg Marchuk  / 17.03.2005 14:02
А если так:
1. При клике высчитываем высоту клиента в пикселях
2. Из высоты отнимает высоты заголовка и подвала
3. Высчитываем в процентах отступ места клика от «верха» страницы
4. При показе textarea скролируем ее на высчитаный процент

Конечно, будет не точно, но в первом приближении — самое то.


[ 16 ] kukutz  / 17.03.2005 14:30
Олег, нет. См. акшны.

[ 17 ] Oleg Marchuk  / 17.03.2005 14:39
Да, я знаю, что Акшены — в написании 1 строка разворачивается во много строк.
Но:
1. Акшины не столь часто используются
2. Высоту акшинов можно отнимать точно так же, как и высоту заголовка и подвала (во втором приближении).

Comments   [ 17 ]