Обсуждение MediaWiki:Antier.js

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

MediaWiki:Antier.js — скрипт для экономии трафика, времени и нервов при конфликтах редактировиня. Он меняет поведение кнопки «Записать страницу» так, что она производит автоматическую проверку и разрешение конфликтов правок без перезагрузки страницы.

По всем вопросам, связанным с использоованием скипта обрщайтесь в User talk:Afinogenoff.

Документация[править код]

Поведение скрипта[править код]

Записать страницу…

Кнопка сохранения дополняется многоточием — индикатором того, что скрипт готов перехватить конфликт правок

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

Записать страницу…
Загрузка истории правок…

Так происходит проверка конфликтности

После нажатия кнопки «Записать страницу» скрипт загружает с сервера правки, сделанные после начала редактирования и отключает кнопку сохранения, чтобы избежать случайных двойных щелчков. Если правок за этот период сделано не было, сохранение просто продолжается обычным способом. А если правки есть, начинается самое интересное.

Записать страницу…
Обнаружен конфликт правок. Внесите показанные выше правки и нажмите сюда

Вот что выдаёт скрипт, наткнувшись на конфликт правок

Записать страницу…
Конфликтов не обнаружено. Сохранение…

После внесения правок страницу можно сохранять как обычно

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

Преимущества[править код]

Преимущества такого метода разрешения конфликтов правок очевидны:

  • При конфликтах редактирования расходуется гораздо меньше трафика (на огромных страницах форумов и обсуждений экономия может достигать двадцати и более раз);
  • Как следствие, загрузка происходит гораздо быстрее. Кроме того, во время загрузки можно продолжать редактирование;
  • Поле редактирования «помнит» изменения — можно использовать комбинацию Ctrl+Z.

Ситуации, когда MediaWiki сама устраняет конфликт[править код]

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

  • Редактирование одной секции в то время, как редактировались другие;
  • Добавление новой темы в конец обсуждения;
  • Добавление одного сообщения в обсуждение (срабатывает не всегда);
  • Конфликты с самим собой (правки из-под одной учётной записи с разных окон).

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

Как установить[править код]

Для простой установки достаточно поместить себе в monobook.js строчку

importScript('MediaWiki:Antier.js')

Для установки из других инсталляций MediaWiki можно воспользоваться строчкой

document.write(<script type="text/javascript" src="http://www.traditio.ru/index.php'+
               '?title=MediaWiki:Antier.js&action=raw&ctype=text/javascript"><\/script>)

Если вам не нравится многоточие на кнопке сохранения, напишите

acoNoEllipsis = true
importScript('MediaWiki:Antier.js')

Персональное оформление[править код]

Оформление сообщений скрипта может быть полностью управляемо при помощи персонального оформления. Для этого созданы идентификаторы и классы:

  • #acoConflictNotice — сообщение с общей информацией о конфликте редактирования;
  • #acoDiffHolder — элемент-контейнер для сравнения версий;
  • #acoDiv — сообщение под кнопкой «Записать страницу»:

Известные проблемы[править код]

  • Отмечается некорректная работа скрипта в той (редкой) ситуации, если за время создания новой страницы она была создана кем-то другим. Для восстановления работоспособности требуется перезагрузить страницу редактирования.

Примечания[править код]

  • Скрипт был проверен в Opera 9.24, Mozilla Firefox 2.0.0.9, Internet Explorer 6.0.
  • Скрипт может работать не только в Традиции, но и в других инсталляциях MediaWiki. Для этого достаточно работоспособности API.

Обсуждение[править код]