MediaWiki:Common.js: различия между версиями
Перейти к навигации
Перейти к поиску
Fritz (обсуждение | вклад) Нет описания правки |
Fritz (обсуждение | вклад) Нет описания правки |
||
Строка 13: | Строка 13: | ||
return link; | return link; | ||
} else { | } else { | ||
// | // Замена точек на процент-кодирование в части после "#" | ||
hashParts[1] = decodeURIComponent(hashParts[1] | var encodedHash = hashParts[1].replace(/\./g, '%'); | ||
// Попытка декодирования части URL после "#" | |||
try { | |||
hashParts[1] = decodeURIComponent(encodedHash); | |||
} catch (e) { | |||
console.error('Ошибка при декодировании: ', e); | |||
// Возвращаем исходную часть после "#", если декодирование не удалось | |||
hashParts[1] = encodedHash; | |||
} | |||
// Собираем обратно часть ссылки и добавляем описание, если оно есть | // Собираем обратно часть ссылки и добавляем описание, если оно есть | ||
return hashParts.join('#') + (parts[1] ? '|' + parts[1] : ''); | return hashParts.join('#') + (parts[1] ? '|' + parts[1] : ''); |
Версия от 22:35, 25 января 2024
/* */ /* Ссылкоправ */ /* */ // (исправляет все внутристатейные ссылки типа #.D0.92.D0.BE) function decodeSingleURL(link) { var parts = link.split('|'); // Разбиваем на части по символу "|" var urlPart = parts[0]; // Часть ссылки до "|" var hashParts = urlPart.split('#'); // Разбиваем часть ссылки до "|" на части по символу "#" if (hashParts.length === 1) { // Если нет символа "#", возвращаем ссылку неизменной return link; } else { // Замена точек на процент-кодирование в части после "#" var encodedHash = hashParts[1].replace(/\./g, '%'); // Попытка декодирования части URL после "#" try { hashParts[1] = decodeURIComponent(encodedHash); } catch (e) { console.error('Ошибка при декодировании: ', e); // Возвращаем исходную часть после "#", если декодирование не удалось hashParts[1] = encodedHash; } // Собираем обратно часть ссылки и добавляем описание, если оно есть return hashParts.join('#') + (parts[1] ? '|' + parts[1] : ''); } } function decode_links() { var editText = document.getElementById('wpTextbox1').value; alert('Исходный текст: ' + editText); // Регулярное выражение для поиска всех ссылок var regex = /\[\[([^\]]+)\]\]/g; // Применение функции декодирования к каждой ссылке var decodedText = editText.replace(regex, function(match, linkContent) { return '[[ ' + decodeSingleURL(linkContent) + ' ]]'; }); alert('Декодированный текст: ' + decodedText); } // Вешает кнопку на панель инструментов mw.loader.using(['mediawiki.util', 'mediawiki.user'], function () { setTimeout(function() { var formatGroup = document.querySelector('.wikiEditor-ui-toolbar .group.group-format'); if (!formatGroup) { console.error('Format group not found'); return; } // Создание новой кнопки var button = document.createElement('span'); button.className = 'tool oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-iconElement oo-ui-buttonWidget'; button.innerHTML = '<a class="oo-ui-buttonElement-button" role="button" title="Ссылкоправ" tabindex="0" rel="nofollow">' + '<span class="oo-ui-iconElement-icon" style="background-image: url(\'https://ruxpert.ru/images/7/72/Ссылкоправ.jpg\');"></span>' + '<span class="oo-ui-labelElement-label"></span>' + '</a>'; // Добавление обработчика клика для вызова функции decode_links button.onclick = function() { decode_links(); }; // Добавление кнопки в группу форматирования formatGroup.appendChild(button); }, 1000); }); /* */ /* WikiEditor/Викификатор */ /* */ if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) { mw.loader.load( '//ru.wikipedia.org/w/index.php?title=MediaWiki:Gadget-wikificator.js&action=raw&ctype=text/javascript' ); } var customizeToolbar = function() { $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'advanced', 'group': 'format', 'tools': { 'wikify': { label: 'Викификатор', type: 'button', icon: '//upload.wikimedia.org/wikipedia/commons/0/06/Wikify-toolbutton.png', action: { type: 'callback', execute: function(context){ Wikify(); } } } } } ); }; if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) { mw.loader.using( 'user.options', function () { if ( mw.user.options.get('usebetatoolbar') ) { mw.loader.using( 'ext.wikiEditor.toolbar', function () { $(document).ready( customizeToolbar ); } ); } } ); }; /*************************/ /* Реклама Яндекс Директ */ /*************************/ /* Реклама Яндекса не должна показываться на страницах редактирования статей, обсуждения статей и участников, страницах участников, служебных страницах, страницах с историей правок. */ var path = decodeURIComponent(window.location.pathname); if(path.indexOf("Участник:") === -1 && path.indexOf("Обсуждение") === -1 && path.indexOf("index.php") === -1 && path.indexOf("Служебная:") === -1 && path.indexOf("help.php") === -1 && path.indexOf("MediaWiki:") === -1) { /* Блок 1 */ (function() { $('#top').after('<div id="yandex_rtb_R-A-446933-1"></div>'); })(); (function(w, d, n, s, t) { w[n] = w[n] || []; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: "R-A-446933-1", renderTo: "yandex_rtb_R-A-446933-1", async: true }); }); t = d.getElementsByTagName("script")[0]; s = d.createElement("script"); s.type = "text/javascript"; s.src = "//an.yandex.ru/system/context.js"; s.async = true; t.parentNode.insertBefore(s, t); })(this, this.document, "yandexContextAsyncCallbacks"); /* Блок 2 */ (function() { $('#mw-content-text').after('<div id="yandex_rtb_R-A-446933-2"></div>'); })(); (function(w, d, n, s, t) { w[n] = w[n] || []; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: "R-A-446933-2", renderTo: "yandex_rtb_R-A-446933-2", async: true }); }); t = d.getElementsByTagName("script")[0]; s = d.createElement("script"); s.type = "text/javascript"; s.src = "//an.yandex.ru/system/context.js"; s.async = true; t.parentNode.insertBefore(s, t); })(this, this.document, "yandexContextAsyncCallbacks"); }