Обсуждение участника:Kalan/aco.js

Материал из Википедии — свободной энциклопедии

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

Документация

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

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

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

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

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

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

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

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

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

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

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

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

Преимущества

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

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

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

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

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

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

Как установить

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

importScript('User:Kalan/aco.js')

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

document.write(<script type="text/javascript" src="http://ru.wikipedia.org/w/index.php'+
               '?title=User:Kalan/aco.js&action=raw&ctype=text/javascript"><\/script>)

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

acoNoEllipsis = true
importScript('User:Kalan/aco.js')

Персональное оформление

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

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

Известные проблемы

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

Примечания

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

Обсуждение

Возможные ошибки в связи с отключением wikibits.js

Kalan, обратите внимание, что код этого скрипта может содержать следующие ошибки, вызванные использованием устаревшего кода, удалённого из движка «Медиавики» (скрипта wikibits.js, см. технические новости):

  • Замените doneOnloadHook, onloadFuncts, addOnloadHook или runOnloadHook на следующий код:
    jQuery( function( $ ) {
      // ваш код
    } );
    
    $( название_функции );
    
Полный список возможных ошибок и их решений: Legacy Javascript § wikibits.js (на mediawiki.org, англ.).

Если это сообщение пришло по ошибке и в скрипте нет проблемного кода, проигнорируйте его.
Используйте {{

ping
|Saint Johann}}, чтобы получить дополнительные пояснения.


Отправлено
NapalmBot 22:22, 4 мая 2017 (UTC)[ответить]