Как заставить расширение Topbar работать с новейшей версией MediaWiki?

Я запускаю сайт MediaWiki, который использует расширение Topbar. Недавно я обновил установку до новейшей версии из основной ветки MediaWiki: версия 1.28.0-альфа (91e56cc).

После этого расширение Topbar больше не работает:

  • Обычно div верхней панели вообще не вставляется.
  • Иногда появляется div верхней панели, но ссылки не работают.

Последняя проблема может быть проблемой с моим CSS (я не знаю), но прерывистое поведение меня беспокоит. Итак, первое, что нужно сделать, — убедиться, что div верхней панели появляется каждый раз.

Это расширение представляет собой всего лишь небольшой javascript, который должен запускаться при загрузке страницы, чтобы добавить фрагмент HTML вверху (<div id="mw-writh-topbar" ...>). Это делается с помощью функции jQuery.

К сожалению, я на самом деле не веб-разработчик, поэтому даже эта простая процедура немного выше моего понимания.

Вот что я знаю:

  • Нет 500 ошибок сервера, нет явных проблем с PHP.
  • В какой-то момент в начале моего расследования консоль разработчика иногда жаловалась на Uncaught ReferenceError: jQuery is not defined, но сейчас я не могу это воспроизвести. Исследования смутно предположили, что это может быть связано с тем, что расширение не использует новый механизм ResourceLoader, поэтому я попытался перенести верхнюю панель для использования механизма ResourceLoader (через maintenance/convertExtensionToRegistration.php, а затем wfLoadExtension('Topbar') в LocalSettings.php), но этого не произошло. кажется, нет никакой разницы.
  • Хуки Topbar, кажется, вызываются, потому что css/Topbar.css добавляется на страницу. Но я понятия не имею, запускается ли когда-нибудь js/Topbar.js, и если да, то что происходит.

Итак: как я могу отладить это?


person ctrueden    schedule 24.05.2016    source источник
comment
Последняя часть, боюсь, не по теме. Однако, если вы удалите это, остальная часть вашего вопроса хороша.   -  person ArtOfCode    schedule 24.05.2016
comment
@ArtOfCode Достаточно честно — удалено.   -  person ctrueden    schedule 24.05.2016


Ответы (1)


Вам нужно преобразовать код для использования ResourceLoader — в настоящее время расширение добавляет код, используя addScriptFile() OutputPage, и просто предполагает, что jQuery будет доступен к моменту его запуска. Начиная с MediaWiki 1.26, все загружается асинхронно, поэтому это не работает, и, следовательно, необходимо преобразовать его в новую систему.

Инструкции для этого здесь:

Два примечания:

  1. Начиная с MediaWiki 1.25, расширения должны использовать так называемую «регистрацию расширения" вместо следуя приведенным выше руководствам, но это может потребовать дополнительной работы и опыта.
  2. Уродливое предупреждение о взломе: вы можете игнорировать все это и просто обернуть код в файл JS, используя RLQ.push( function(){ /* All of the code here */ } );. Это помещает все это в очередь ResourceLoader, поэтому он будет загружаться после того, как jQuery будет доступен. Я не рекомендую это, но покажу это здесь для полноты картины.
person Dror S.    schedule 25.05.2016
comment
Большое спасибо, что нашли время ответить. В итоге я перешел на другой скин, который имеет собственную горизонтальную верхнюю панель меню, управляемую MediaWiki:Sidebar (см. /1207769), так что моя потребность исправить расширение Topbar испарилась. Так что пока у меня нет времени тестировать эту процедуру сейчас, я принимаю ответ! Может быть, это помогает другим. - person ctrueden; 01.06.2016