Опишем концепт интерфейса контекстного ввода цитат. Речь будет не про те облака, о которых все подумали. Облака — типа бенчмарка «Heaven», 4-я версия которого недавно вышла (рис. слева) или Небесного замка Лапута, а цитатник — элемент интерфейса типа летающих островов. На поверхности этих островов теплится жизнь, а сами они могут летать. В нашем случае — перемещаться мышью. Опору их составляют камни, а у нас — контекстные кнопки.
Как создаётся летающий остров? Выделяем мышью контекст. Выделение создаёт основу поверхности — цитату. Под ней появляется кнопка, едва заметная, полупрозрачная, которую мы привыкли видеть в Ворде, начиная с «2007». Она может вскоре исчезнуть, и правильно, если выделение текста создавалось для других целей. Но если навести мышь — создаётся опора нашего будущего цитатника, парящего в облаках.
Зачем нужен цитатник? Оказывается, целей может быть много. Цитаты нужны, если хотим ответить на высказывание в статье. Если хотим запомнить цитату. Если хотим сообщить об ошибке в тексте или обсудить цитату в письме. Даже комментарий к статье часто удобнее писать рядом с контекстом, как и всё остальное. Так и рождается летающий замок — лёгкий и компактный, мгновенно передвигаемый и возникающий вновь по одному движению мыши. Если его нарисовали в фильме, то почему бы не нарисовать в HTML?
Список цитат и исправлений, созданных в статье, отображается в виде списка ссылок над блоком цитаты. Буква ссылки отображает тип цитаты (цитата, логическая ошибка, грамматическая, пунктуационная, опечатка или стилистическая). Им соответствуют характерные цвета для каждого типа исправлений. Расцветки нужны корректору (человеку, создающему цитаты) чтобы быстро ориентироваться в наборе цитат:
Ц — Цитата — преобладает в обсуждениях;
ш — оШибка логическая/фактическая. Встречаются редко;
Г — Грамматическая — наиболее частая;
П — Пунктуационная — вторая по частоте;
О — Опечатка — 2-3-я по частоте;
С — Стилистическая — отмечается редко.
Для часто встречающихся грамматических и пунктуационных ошибок выбраны наиболее контрастные, различимые цвета, имеющие ассоциации по пометкам в Ворде. Места ошибок логики и стилистики в цитатах выделяются более длинно, поэтому для них — цвета более спокойные.
Способ ввода ошибок, мест их и текстов замены сделан максимально «ленивым», использующим минимум операционных элементов. Специальные поля ввода ошибок не создаются. Пользователя не заставляют переписывать или копировать текст или даже читать 2 копии — неправильную и правильную. Вместо этого просто сначала кликают на кнопку типа ошибки (или кнопку цитаты). Таких кнопок — шесть. Над цитатой создаётся новый значок цитаты и размещается в ряду ранее созданных знаков в порядке следования в тексте.
В цитате может быть одна или несколько ошибок. Поэтому буквы типов ошибок соединяются вместе и выглядят как слог или слово: сколько букв, столько ошибок отмечено в одной цитате. И если цитата имеет ошибки, то буквы «Ц» для неё не требуется.
Как выглядит процесс цитирования
1) Выделяют цитату для комментирования или с одной или несколькими ошибками. Алгоритм сам захватит в цитату частично захваченные слова и добавит строчку до и после, если цитата выбрана короткая (менее 1 строки);
2) Нажимают контекстную кнопку — тип ошибки (1 из 5) или «комментарий» ("<_>"). Выделенный текст немедленно оформится в цитату — текст без форматирования в блоке приблизительно квадратных очертаний. Над цитатой появляется список ранее созданных цитат для данной статьи. Символ для новой цитаты занимает место среди других в порядке следования цитаты в статье. В этом же списке — «Просмотреть цитаты к другим статьям», если такие есть в хранилище.
3) Под цитатой появляется пустое поле ввода для внесения исправлений или комментария. Для комментария достаточно просто вводить свой текст (поле ввода будет расти). Для исправления — в цитате выделяют ошибочные символы. Допустимо захватить соседние, чтобы выделение в письме было заметным.
4) После выделения в поле ввода появляется копия выделения. Это — те символы, которые затем заменяют на правильный вариант. Если надо сказать, что эти символы — лишние — их удаляют. Если нужно исправить или дополнить — вставляют свои символы. Всё, можно повторить пункты 2-3-4 снова, чтобы описать ещё одну ошибку или комментарий.
5) Все символы в поле ввода немедленно запоминаются как правка. Не нужно нажимать кнопки, вводить Enter или Ctrl-Entrer. Чтобы завершить операцию правки, достаточно выйти из контекстного ввода комментария кликом, в том числе, случайным, по другому месту окна. Она легко продолжается выбором правки из списка над цитатой. Текущая цитата запоминается, возврат к ней выполняется по кнопке возврата: "<_".
6) При возврате к правке или при выборе прежней правки восстанавливается весь контекст цитаты: цитата, комментарий и все ошибки (замены), отмеченные в цитате.
7) Чтобы исправить комментарий к цитате, достаточно повторно выбрать цитату и переписать комментарий. Чтобы исправить содержание ошибки, нужно кликнуть на области ошибки и исправить текст замены. Чтобы удалить цитату или отметку ошибки в ней, используется жест — выбрасывание цитаты из списка или области ошибки из цитаты. Ни границ цитаты, ни границ ошибок исправить нельзя, можно только удалить их и создать заново.
Так, непринуждённо отмечая ошибки, корректор не задумывается об отправке письма до тех пор, пока интуиция не подскажет, что «пора». Нет проблемы. Цитаты запоминаются в хранилище, поэтому они доступны из браузера на компьютере постоянно, из любого окна, с возможными выключениями браузера и компьютера. Они постоянно видны в контекстном окне редактирования. При переходе на другие статьи имеется кнопка для показа всего списка сохранённых цитат.
Отметки цитат в статье
Если необходимо, цитаты выглядят как участки текста, выделенные в (неисправленном) тексте статьи. Все они имеют хотя бы 1 символ, поэтому на участке помещается ссылка, кликнув которую, возвращаются к правке ошибки. Для удобства клика и будущего чтения, 2-3 символа вокруг ошибки выделяются автоматически, если выделение занимает 1-3 символа. Визуально выделение выглядит как подчёркивание и более бледное выделение участка текста фоновым цветом, соответствующим типу ошибки.
Для переноса цитат в другой браузер или компьютер — кнопка «Экспорт/импорт». Следовательно, если диалог не требует немедленного начала и быстрой отправки, возможно отправить написанное с другого компьютера.
Если автор статьи принял исправления и исправил в точности, цитаты перестают отыскиваться в прежнем виде, но отыскиваются в новом — они отмечаются как принятые и удаляются из статьи. Если перестали отыскиваться вообще — отмечаются как «потерянные», а место их отметки помечается выделением фона до рассмотрения.
Для статистики и наблюдения, на скрипт возлагается задача подсчитать число типов ошибок и сообщить эту статистику кратко в начале письма.
Способ передачи цитат
Старомодный способ. Кодировка не будет видна адресату. Ему придёт письмо, в вежливой форме представляющее места ошибок и возможные исправления. В конечном письме цвета ошибок будут только иллюстрировать их места в цитатах и помогать визуально отыскивать.
Модерн. Автору приходит список правок в JSON, которые отображаются у него в статье тоже как выделения текста. В контекстной цитате появляется список не только своих цитат (если есть), но и пришедших. Для принятия их нажимается кнопка «принять» (всю цитату или отдельные ошибки). Открывается плавающий фрейм с формой редактирования статьи, и в тексте отыскивается указанная цитата или ошибка, переписывается на тексты замены.
Если автор с заменой согласен частично, он меняет текст исправления. Комментатору идёт ответ с изменением. Если он не согласен с заменой, выбрасывает её жестом мыши из цитаты. В любом случае, комментатору приходит ответ.
Комментарии к цитате (в том числе и с ошибками) приходят в виде текстов после цитаты. Автор имеет возможность править не только цитату своего текста, но и править пришедший комментарий, в том числе и указанием на ошибки. Написать свой комментарий — это означает продолжить дискуссию. Создаётся, фактически, ветка комментариев на цитате. Комментарии цитат «принимаются» той же кнопкой, которая в данном случае означает «прочитано». Действий над текстом нет, отправляется лишь сообщение комментатору. Если предусмотреть несколько «эмоциональных» кнопок, создаётся механизм оценивания цитаты или комментария к ней.
(О таком способе комментирования где-то давно писали и даже сделали реализацию, предлагая выделять места комментариев жёлтым цветом. Ещё шутили в ответах, что со временем вся статья станет жёлтой.)
Хранилища обсуждений
К футуристическому интерфейсу обсуждений дорисуем оффтоп: инфраструктуру. Создаётся механизм комментирования, привязанный к цитатам, механизм исправления и обсуждения ошибок и цитат, и он не обязательно привязан к автору статьи или конкретному сайту. В адресатах комментатора не обязательно указывается автор, а, например, круг знакомых или коллег, с которыми обсуждается произвольная страница. Весь интересующий текст и ход обсуждения запоминается в память компьютеров заинтересованных сторон. Кнопка ответа на начальную подачу статьи — это оценка, говорящая публично, будет ли адресат запоминать к себе эту страницу и участвовать в дискуссии по ней.
В результате, получается система из смеси Digg, Reddit, Disqus и обычных форумов и соцсетей. Да ещё с примесью P2P, что существенно. На стороне дискуссии источники информации в принципе не участвуют. От них требуется однократная подача истока. Если в серверо-центрированных СМИ пользователи зависят от политики источников, то здесь они сами управляют источниками. Сайты стараются выделить подходящую аудиторию, разогнать неподходящую. Здесь эта задача возлагается на сами группы. Каждый человек ценен собственным багажом знаний и умением обработать чужие.
На стороне источника статей, остаётся пассивный приём и регистрация дискуссий, если источнику это интересно. Если дискуссии не регистрируются, всё сохранение их держится на заинтересованных участниках. Участники получают контроль над прочитанным и над своими сообщениями. Если читателю интересно, он запоминает статью в личный архив. Личные архивы работают в оффлайне, при потере головного источника распространяются по p2p.
Автор: spmbt