Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

API Орфуса (rusec)
Author Message
rusec
Заглянувший



Joined: 20 Jul 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Quito, Ecuador

PostPosted: Fri Jul 20, 2007 11:00 pm (написано за 4 минуты 57 секунд)
   Post subject: Добавление сообщений орфуса в БД
Reply with quote

Хочу прикрутить орфус к библиотеке Либрусек (lib.rus.ec).
Сообщения об опечатках в книгах хочется складывать в базу данных, с некоторой дополнительной информацией, типа id книги.
В яваскрипте слаб, серверную часть напишу любую.
Не подскажите, что и как поправить?
Я так понимаю, при генерации ифрейма надо запихнуть дополнительные параметры, а потом вместо отсылки письма послать post?

Перенаправлять письма на ваш сайт не хочется - это будут тысячи сообщений в день ориентировочно.

Извините, что отрываю занятых людей, но самому в js копаться решительно некогда :(
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Jul 22, 2007 1:20 pm (спустя 1 день 14 часов 20 минут; написано за 4 минуты 26 секунд)
   Post subject:
Reply with quote

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

Может быть, Вам подойдет какое-нибудь API, к которому Вы сможете обращаться на сайте Орфуса? Например, RSS-канал, в котором будут приводиться все необработанные опечатки? Мы можем с Вами пообщаться на эту тему и совместно определить, какое именно API требуется. Возможно, оно и другим людям пригодится тоже.

ID книги наверняка можно выделить из URL страницы. Более того, можно сделать, чтобы перед посылкой сообщения сканировались все META-тэги на странице, и вместе с сообщением присылалось содержимое какого-нибудь META-тэга, например:

<meta name="orphus" content="book_id=123&some=other" />
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Fri Jul 27, 2007 8:21 am (спустя 4 дня 19 часов 28 секунд; написано за 6 минут 56 секунд)
   Post subject:
Reply with quote

давайте попробуем.
Такой вопрос.
есть текст:

<h1>Сказ о пулемётчике
<p o=2>Tra-ta-ta-ta
<h2 o=3>говорит пулемётчик
<p o=4>Tra-ta-ta-ta
<p o=5>говорит пулемёт

примерно в таком духе.
У каждого параграфа есть атрибут 'o' с числовым id.
Юзер выделил ошибку. Мне нужно получить id сбойного параграфа, чтобы в модуле редактирования не грузить всю книгу.
Если выделение зацепило несколько параграфов - значит все id (ну или первый и последний, они линейно возрастают.)
Id я расставляю при генерации html из fb2 и в принципе могу это делать произвольным образом.
Есть ли возможность выслать на сервер кроме собственно выделенного текста id параграфов?
Текст вокруг выделенного, очевидно, не нужен. Параграфы достаточно невелики.
Back to top
rusec
Заглянувший



Joined: 20 Jul 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Quito, Ecuador

PostPosted: Sat Jul 28, 2007 1:49 am (спустя 17 часов 27 минут; написано за 16 секунд)
   Post subject:
Reply with quote

В идеале вообще никому никаких сообщений не слать, а при нажатии хоткей вместо текущего параграфа открывать textarea с его исходным fb2 кодом. А по исправлению отсылать на сайт исправленный вариант. И там уже вести лог версий и все такое.
Как это реальзовать в ie я примерно понял, но у меня большинство посетителей, включая меня самого - ff. А у мозиллы как-то толком выделение не отрабатывается, или я не нашел как по выделению найти текущий параграф.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Jul 28, 2007 2:42 am (спустя 53 минуты; написано за 3 минуты 33 секунды)
   Post subject:
Reply with quote

1. Ну, атрибут o=..., конечно, не очень хорошо делать. Потому как он нестандартный, и в XHTML его тоже нет. Давайте просто будем делать id, и присылать вместе с выделением все id элементов, которое это выделение зацепляет? Это, по-моему, достаточно универсальный метод.

2. Если я правильно понял, Вы хотите, чтобы перед отсылкой любой сторонний пользователь мог ввести куда-то исправленный вариант, и уже потом отправлять. Я правильно понял? Сейчас Орфус этого не умеет, т.к. полагает, что все исправления имеет право делать только редактор (а иначе юзеры такого наисправляют...). Вопрос: КТО тот пользователь, который делает выделение? Совершенно произвольный, со стороны, или же сам администратор сайта?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Jul 28, 2007 2:44 am (спустя 1 минуту 51 секунду; написано за 15 секунд)
   Post subject:
Reply with quote

И Вы еще не ответили насчет экспорта элементов (например, в RSS).
Back to top
View user's profile Send private message Send e-mail
rusec
Заглянувший



Joined: 20 Jul 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Quito, Ecuador

PostPosted: Sat Jul 28, 2007 3:29 am (спустя 45 минут; написано за 20 минут 59 секунд)
   Post subject:
Reply with quote

1. Бог с ним, пусть будет id. Хотя это неправильно, потому как в FB2 у параграфа может уже быть id. Не очень понимаю, какая разница - написать selection.createRange().startContainer.o или selection.createRange().startContainer.id. Не важно. Пусть id.

2. В идеале - пользователь вводит правильный вариант, и оный вариант сохраняется в базе. Проблема простая. В библиотеке - сто тысяч книг. Пока. Будет больше.
И в каждой почти книге - ошибки сканирования, опечатки, и прочие глюки. Много. Несколько десятков на книгу. Всего потребны миллионы мелких исправлений.
Естественно, такой объем администратор сам править не сможет - жизни не хватит. Хочется автоматизации.
Хранить исходный вариант документа и список исправлений. Оный список администратор просматривает. Иногда. Если кто-нибудь начинает вандалить - он банится а его исправления откатываются или хотя-бы проверяются. Но, надеюсь, такого особо не будет. Во всяком случае исправления названий книг, имен авторов и т.п - уже работает, и проблем пока не было. Доступно всем.
Получается, нужно чтобы пользователь, заметив опечатку, ткнул в нужный параграф мышой, ткнул CtrlEnter, получил под курсором textarea с содержимым параграфа, с курсором в месте ошибки, поправил, ткнул save, поехал читать дальше. Минимально отвлекаясь. Или, если не хочет править, выделил ошибку мышой, ткнул, скажем, ShiftEnter, пошел читать дальше. В библиотеке на страничке замеченных опечаток появилась запись с ссылкой, любой пользователь в неё ткнул, получил textarea, поправил, ткнул кнопку (сохранить исправление и перейти к следующей ошибке). В переспективе подключить авторов читалок - чтоб сообшать об ошибке можно было прям с палма. Там есть о чем подумать, но невозможностей не видно.

Сейчас в лучшем случае это устроено так - выкачиваешь fb2, инсталируешь fb2-редактор, исправляешь, заливаешь обратно. Читая на пальме - отмечаешь ошибки на бумажке (я серьёзно!), далее по тексту. Понятно, что в таком режиме работают только совсем уж сугубые энтузиасты, а их мало. Никто из-за перепутанной буковки на такие труды не пойдет. Да и формат изучать ради этого как-то перебор. Хочется упростить до предела.

По поводу экспорта - честно говоря не понятно. Насколько быстро письмо дойдет до вашего сервера а rss вернется? Как это увязать с ajax-nline-редактированием?
Слаб я пока в интернет-технологиях, слова непонятные пугают. Извините.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Jul 28, 2007 12:19 pm (спустя 8 часов 49 минут; написано за 6 минут 54 секунды)
   Post subject:
Reply with quote

rusec wrote:
Не очень понимаю, какая разница - написать selection.createRange().startContainer.o или selection.createRange().startContainer.id
Потому что доработки в Орфусе делаются не конкретно под Вас, а делаются для универсальных целей, чтобы и другие люди могли ими пользоваться. Вы мне денег не платите за это, в конце концов. К тому же надо стремиться к соблюдению стандартов, а атрибут "o" ни в один стандарт не входит.

В принципе, есть еще вариант с микроформатами:

<p class="orphus_1234">текст</p>
<p id="some-id" class="orphus_6666">текст</p>

И сохранять вместе с текстом исправления также то, что идет после "orphus_". Это не будет конфликтовать с id-шниками. Вам такой вариант подходит?
rusec wrote:
Насколько быстро письмо дойдет до вашего сервера а rss вернется?
А зачем здесь скорость? Главное, чтобы база ошибок велась. Все равно ведь администратор (или скрипт) не будет просматривать этот RSS мгновенно. Но, в принципе, данные попадают в RSS сразу же, как они попали в базу. А в базу они попадают сразу же после аякс-запроса. Так что задержка тут - исключительно задержка кэшировани rss-потока, т.е., скажем, 1 минута.
rusec wrote:
Как это увязать с ajax-nline-редактированием?
А Вы что, хотите, чтобы любой читатель, изменив текст, СРАЗУ ЖЕ публиковал его на сайте, даже без одобрения администратора? По-моему, это не очень хорошая идея.

Мне кажется, пользователи сами ничего править не будут. Максимум, на что они способны, - это подсказать, где ошибка, а уж исправление должен проводить администратор или редакторы. В противном случае вандализма будет очень много - например, на текстах, где ошибок практически нет, 9/10 сообщений Орфуса - это баловство (у меня есть статистика).
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Sat Jul 28, 2007 12:59 pm (спустя 39 минут; написано за 4 минуты 1 секунду)
   Post subject:
Reply with quote

rusec
Я в нескольких проектах пользую www.google.ru/search?q=wikiwyg - очень удобно.

Насчёт параметров в className - хранить <имя:значение1:значениеN> становися стандартом де-факто.
Back to top
View user's profile Send private message
rusec
Заглянувший



Joined: 20 Jul 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Quito, Ecuador

PostPosted: Sun Jul 29, 2007 12:05 am (спустя 11 часов 6 минут; написано за 10 минут 22 секунды)
   Post subject:
Reply with quote

WingedFox wrote:
Я в нескольких проектах пользую www.google.ru/search?q=wikiwyg - очень удобно.
Не знаком к сожалению.
Пара вопросов.
1.Оно может каким-то образом редактировать часть документа?
У нас есть книга, она весит мегабайт, а то и несколько, надо исправить одно слово. Засасывать в textarea всю книгу, а потом всю ее гнать обратно и на сервере далать diff - неправильно как-то. И неоправданно долго. Даже на приличном канале пару мег туда, пару обратно - заметно.
2. Оно понимает fb2-разметку? Или имеет возможность подключения плугина?
Если да на оба вопрост - пойду смотреть. Если нет - какая-то вики у меня стоит, но для вычитки книг оно непригодно. Аннотации, описания авторов - для таких вещей используется успешно, но это не та область, с которой хочется сильно возится. Работает - и ладно.
Back to top
View user's profile Send private message
rusec
Заглянувший



Joined: 20 Jul 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Quito, Ecuador

PostPosted: Sun Jul 29, 2007 12:39 am (спустя 33 минуты; написано за 21 минуту 8 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
А Вы что, хотите, чтобы любой читатель, изменив текст, СРАЗУ ЖЕ публиковал его на сайте, даже без одобрения администратора? По-моему, это не очень хорошая идея.
Угу, хочу. Может быть, не любой пользователь, а некоторые. А может быть - и любой. В зависимости от редактируемого текста.
Так устроена wikipedia, и существует вполне успешно. Не без проблем, но премодерацию не заводит почему-то.
Дмитрий Котеров wrote:
Мне кажется, пользователи сами ничего править не будут. Максимум, на что они способны, - это подсказать, где ошибка, а уж исправление должен проводить администратор или редакторы. В противном случае вандализма будет очень много - например, на текстах, где ошибок практически нет, 9/10 сообщений Орфуса - это баловство (у меня есть статистика).
Можете полюбопытствовать lib.rus.ec/node/49.
Статистика исправления пользователями информации о книгах и авторах (видна только админам, но Вам могу открыть).
В кратце - за неделю существования данной возможности десяток пользователей сделали две сотни поправок. Вандализма не было. Вообще.
Что интересно, мой опыт использования орфуса несколько лет назад с Вашей статистикой не вяжется. Было по несколько десятков сообщений в день, баловства не было. Совсем.
Изредка попадались сообщения, где я не мог понять в чём ошибка или был несогласен с тем, что это ошибка - русский язык дело такое, многовариантное. Явного бреда не было.
Сейчас на либрусеке то же самое - сообщения есть, немного, но есть, практически все по делу.
Видимо, книголожцы - это очень специальный контингент. Нелюбопытный до баловства.
Потом, я же оставляю за админами возможность контроля и отката. А премодерация слишком всё усложняет.
Безусловно, могут найтись книги, в которых начнутся войны. Эти - закроем.

Ну ладно, если уж Вы так против inline редактирования, оставим пока эту идею до лучших времен. Попробуем с rss.
Куда и как там надо добавить BookId и ParagrafId, чтоб Вам было удобно, и где забирать RSS?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Sun Jul 29, 2007 10:41 am (спустя 10 часов 2 минуты; написано за 3 минуты 16 секунд)
   Post subject:
Reply with quote

rusec wrote:
Оно может каким-то образом редактировать часть документа?
demo.wikiwyg.net/wikiwyg/demo/standalone/
Двойной щелчок на любом параграфе.
rusec wrote:
Оно понимает fb2-разметку?
Первый раз про такую слышу. Там есть возможность описать правила разметки.
wikiwyg.net/docs/#subclassing
demo.wikiwyg.net/wikiwyg/demo/configure/

Last edited by WingedFox on Sun Jul 29, 2007 2:36 pm; edited 1 time in total
Back to top
View user's profile Send private message
rusec
Заглянувший



Joined: 20 Jul 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Quito, Ecuador

PostPosted: Sun Jul 29, 2007 11:16 am (спустя 34 минуты; написано за 4 минуты 2 секунды)
   Post subject:
Reply with quote

WingedFox wrote:
rusec wrote:
Оно может каким-то образом редактировать часть документа?
demo.wikiwyg.net/wikiwyg/demo/standalone/
Двойной щелчёк на любом параграфе.
Любопытно.
Пошел изучать, спасибо.
Back to top
View user's profile Send private message
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9990
   поощрить/наказать


PostPosted: Sun Jul 29, 2007 2:04 pm (спустя 2 часа 47 минут; написано за 47 секунд)
   Post subject:
Reply with quote

WingedFox wrote:
щелчёк
— вот она, «грамотность в интернете»...
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Sun Jul 29, 2007 2:36 pm (спустя 31 минуту; написано за 1 минуту 21 секунду)
   Post subject:
Reply with quote

bæv
Спасибо.
Вот что перманентная переписка на ино-языках помноженная на недосып делает.....
А в аттестате стоит пятёрка...
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Jul 31, 2007 1:42 am (спустя 1 день 11 часов 6 минут; написано за 9 минут 2 секунды)
   Post subject:
Reply with quote

rusec wrote:
Так устроена wikipedia, и существует вполне успешно. Не без проблем, но премодерацию не заводит почему-то.
Штука в том, что в wikipedia любую правку можно легко и быстро отменить. Можно также легко вернуться к одной из предыдущих версиях.
В Вашем же случае правки отменять будет достаточно тяжело. Либо надо делать версионность, но это уже совсем-совсем не Орфус.
WingedFox wrote:
хранить <имя:значение1:значениеN> становися стандартом де-факто
Отлично. Значит, будет class="orphus:id:123".
rusec wrote:
Куда и как там надо добавить BookId и ParagrafId, чтоб Вам было удобно, и где забирать RSS?
Например, так:

<div class="orphus:id:b123">
  ...
  <p class="orphus:id:p456">текст</p>
  ...
</div>

В этом случае Орфус будет спускаться вниз до корня, выделяя "orphus:id:*" и добавляя в общий список. Вам же в RSS придет для каждого выделения список вида "b123 p456" (в каком именно поле RSS, надо еще подумать), по нему легко восстановить место выделения. Кстати, возможно, лучше даже и не RSS использовать, а какой-нибудь собственный XML-формат, потому что в RSS мало полей. Например, формат такой:

<typo>
  <url>...</url>
  <pre>текст перед выделением</pre>
  <sel>текст выделения</sel>
  <suf>текст после выделения</suf>
  <ids>b123 p456</ids>
  ...
</typo>
<typo>
  ...
</typo>

Забирать его с адреса вида orphus.ru/ru/typos.xml (пока не работает, естественно), обновляется 1 раз в минуту.

Вопрос к Вам: достаточно ли Вам будет такого API? Лучше это сейчас выяснить, на этапе планирования, чем потом.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Jul 31, 2007 1:56 am (спустя 13 минут; написано за 1 минуту 17 секунд)
   Post subject:
Reply with quote

Кстати, на странице orphus.ru/ru/typos (смотреть после логина) планируется ввести редактируемое поле "правильная версия". Там можно будет предварительно вводить исправленную версию текста, и оно тоже будет экспортироваться в XML (например, в поле "cor").
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Mar 17, 2008 12:28 am (спустя 7 месяцев 16 дней 22 часа 32 минуты; написано за 29 секунд)
   Post subject:
Reply with quote

Добавился RSS-формат для экспорта опечаток из Орфуса.
В частности, можно экспортировать опечатки по определенному фильтру (поисковой строке).
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies. All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You can post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You can attach files in this forum. You can download files in this forum.
XML