MediaWiki:Common.js: различия между версиями
Перейти к навигации
Перейти к поиску
Fritz (обсуждение | вклад) Нет описания правки |
Fritz (обсуждение | вклад) Нет описания правки |
||
Строка 14: | Строка 14: | ||
} | } | ||
if (document.URL.indexOf('action=edit') > 0 || document.URL.indexOf('action=submit') > 0) { | if (document.URL.indexOf('action=edit') > 0 || document.URL.indexOf('action=submit') > 0) { | ||
document.write('<script type="text/javascript" src="https://ru.wikipedia.org/w/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript"></script>') | document.write('<script type="text/javascript" src="https://ru.wikipedia.org/w/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript"><\/script>') | ||
addOnloadHook(addWikifButton) | addOnloadHook(addWikifButton) | ||
} | } |
Версия от 23:56, 15 августа 2018
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */ /* Викификатор */ function addWikifButton(){ var toolbar = document.getElementById('toolbar') var textbox = document.getElementById('wpTextbox1') if (!textbox || !toolbar) return var i = document.createElement('img') i.src = 'https://upload.wikimedia.org/wikisource/ru/d/d1/Button-wikifikator.png' i.alt = i.title = 'Викификатор' i.onclick = Wikify i.style.cursor = 'pointer' toolbar.appendChild(i) } if (document.URL.indexOf('action=edit') > 0 || document.URL.indexOf('action=submit') > 0) { document.write('<script type="text/javascript" src="https://ru.wikipedia.org/w/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript"><\/script>') addOnloadHook(addWikifButton) } /* Кнопки «Поделиться» от Яндекса */ if (wgAction == 'view') { $(function(){ if( (wgNamespaceNumber != 0 && wgNamespaceNumber != 6 && wgNamespaceNumber != 100) || wgAction != 'view' || /(oldid|diff)=/.test(window.location) ) { return; } $.getScript('https://ruxpert.ru/skins/common/share.js', function( d, h, i ) { new Ya.share({ element: 'sharingbuttons', elementStyle: { 'type': 'button', 'border': true, 'quickServices': ['lj', 'twitter', 'vkontakte', 'facebook', 'gplus', 'moimir'] }, link: 'https://ruxpert.ru/' + wgPageName, title: wgTitle, popupStyle: { blocks: { 'Поделись-ка!': ['lj', 'twitter', 'vkontakte', 'facebook', 'gplus', 'yaru', 'moimir'] }, copyPasteField: false }, serviceSpecific: { lj: { link: '<a href="https://ruxpert.ru/' + wgPageName + '">' + wgPageName + ' — Русский эксперт</a>' } } });} ); $('#firstHeading').prepend( '<div style="font-size: 14px" id="sharingbuttons"></div>' ); }); } /* Таблификатор */ //Форматирует таблицу, скопированную из Excel, по правилам вики-разметки. //Часть кода позаимствована из httsp://ru.wikipedia.org/wiki/MediaWiki:Wikificator.js //Автор: X-romix var XRomix_Tablify_CantWork1 = 'Таблификатор не может работать в вашем браузере.\n\nTablificator cannot work in your browser' // английский текст для тех, кто не видит русские буквы var XRomix_Tablify_FullText1 = 'Эта кнопка предназначена для форматирования табличного текста, скопированного из табличного редактора (например, из Excel). Чтобы функция заработала, сначала выделите нужный фрагмент текста в окне редактирования.' //Добавляет кнопку function addTablifikatorButton1(){ var toolbar = document.getElementById('toolbar') var textbox = document.getElementById('wpTextbox1') if (!textbox || !toolbar) return var i = document.createElement('img') i.src = 'https://upload.wikimedia.org/wikipedia/ru/c/c1/Button-tablifikator.PNG' i.alt = i.title = 'Таблификатор' i.onclick = XRomix_Tablify1 i.style.cursor = 'pointer' toolbar.appendChild(i) } //Этот код выполняется в начале. if (wgAction == 'edit' || wgAction == 'submit'){ addOnloadHook(addTablifikatorButton1) } //Функция для оформления таблицы function XRomix_Tablify1(){ //Проверяем, поддерживает ли браузер регулярные выражения (RegExp) if (('code'.replace(/d/g, 'r') != 'core') || (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5)) { alert(XRomix_Tablify_CantWork1); return } //setWpSummary(); var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1 var winScroll = document.documentElement.scrollTop //remember window scroll wpTextbox1.focus() if (typeof wpTextbox1.selectionStart != 'undefined' && (navigator.productSub > 20031000 || is_safari)) { //Mozilla/Opera/Safari3 var textScroll = wpTextbox1.scrollTop var startPos = wpTextbox1.selectionStart var endPos = wpTextbox1.selectionEnd txt = wpTextbox1.value.substring(startPos, endPos) if (txt == '') {alert(XRomix_Tablify_FullText1); return} else{ processText() wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos) } wpTextbox1.selectionStart = startPos wpTextbox1.selectionEnd = startPos + txt.length wpTextbox1.scrollTop = textScroll }else if (document.selection && document.selection.createRange) { //IE var range = document.selection.createRange() txt = range.text if (txt == '') {alert(XRomix_Tablify_FullText1); return} else{ processText() range.text = txt //if (!window.opera) txt = txt.replace(/\r/g,'') if (range.moveStart) range.moveStart('character', - txt.length) range.select() } }else // Для браузеров, которые не умеют возвращать выделенный фрагмент, выдаем ошибку { alert(XRomix_Tablify_CantWork1); return } document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera //Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста function processText(){ var col1hdr=0; if (confirm('Вы хотите оформить первую колонку как заголовок?')) col1hdr=1; txt = txt.replace(/^\s+|\s+$/g, '') //Обрезаем пробелы слева и справа var arr1=txt.split("\n") txt='\n{| class="standard"\n' for (var i=0; i<arr1.length; i++){ txt = txt+"|-\n" s1=arr1[i]; var arr2=s1.split("\t") for (var j=0; j<arr2.length; j++){ var s2=arr2[j]; if ((col1hdr==1 && j==0)||i==0){ txt = txt+"! "+s2+"\n" }else{ txt = txt+"| "+s2+"\n" } } } txt = txt+"|}" } function setWpSummary(){ var wpSummary = document.getElementById('wpSummary') if(wpSummary){ var temp=wpSummary.value; temp=temp.replace(/\/\*.*?\*\// , ""); //комментарии temp=temp.replace(/[\s]*/ , ""); //пробелы if (temp==""){ wpSummary.value=wpSummary.value+" - [[User talk:X-romix/tablifikator.js|tablifikator.js]] - таблица из Excel/Calc"; } } } } //Scripts for supporting extension https://www.mediawiki.org/wiki/Extension:HarvardReferences var HrvHighlight = new function(){ var state = ""; function setBackground(prm_name){ var anchorTags = document.getElementsByTagName("li"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className=="harvBackground"){ ob1.className = ""; } } var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.id.indexOf("harv_note-"+prm_name)==0){ ob1.parentNode.className = "harvBackground"; }else if(ob1.id.indexOf("harv_note-")==0){ ob1.parentNode.className = ""; } } } function setBackground1(prm_name, prm_n){ var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.id.indexOf("harv_note-")==0){ ob1.parentNode.className = ""; } } var anchorTags = document.getElementsByTagName("li"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className=="harvBackground"){ ob1.className = ""; } if(ob1.id.indexOf("cite_note-"+prm_name+"-"+prm_n)==0){ ob1.className = "harvBackground"; }else if(ob1.id.indexOf("cite_note-")==0){ ob1.className = ""; } } } function setBackground2(prm_name){ var n=""; var arr=prm_name.split("-"); var arr1=arr[1].split("_"); if(arr[2]){ n="cite_note-"+arr1[0]+"-"+arr1[1]; }else{ n="cite_note-"+arr[1]; } var anchorTags = document.getElementsByTagName("li"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className=="harvBackground"){ ob1.className = ""; } if(ob1.id.indexOf("cite_note-")==0){ if(ob1.id==n){ ob1.className = "harvBackground"; }else{ ob1.className = ""; } } } } //when user clicks to harv ref in article text function whenUserClicksToHarvRef(prm_name, prm_n){ var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; } } var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.id=="harv_ref-"+prm_name+"-"+prm_n){ ob1.className = "harvVisitedLink"; }else if(ob1.id=="harv_note-"+prm_name+"-"+prm_n){ ob1.className = "harvReferenceLink"; }else if(ob1.id=="harv_note-"+prm_name){ ob1.className = "harvReferenceLink"; }else{ ob1.className = ""; } } setBackground(prm_name); } //when user clicks to big backlink from bibliography function whenUserClicksToHarvBigBacklink(prm_name){ var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; } } var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; } if(ob1.id.indexOf("harv_ref-"+prm_name+"-")==0){ ob1.className = "harvVisitedLink"; }else if(ob1.id=="harv_note-"+prm_name){ ob1.className = "harvReferenceLink"; } } setBackground(prm_name); } //when user clicks to small (number) backlink from bibliography function whenUserClicksToHarvSmallBacklink(prm_name, prm_n){ var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; } } var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; } if(ob1.id=="harv_ref-"+prm_name+"-"+prm_n){ ob1.className = "harvVisitedLink"; }else if(ob1.id=="harv_note-"+prm_name){ ob1.className = "harvReferenceLink"; }else if(ob1.id=="harv_note-"+prm_name+"-"+prm_n){ ob1.className = "harvReferenceLink"; } } setBackground(prm_name); } function showRefsMode(n){ var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.id.indexOf("harv_ref-")==0){ if(n==""){ ob1.style.display = ""; ob2=ob1.childNodes[0]; ob3=ob2.childNodes[0]; if(ob3.nodeValue.indexOf("*")>=0){ t=ob2.title; ob3.nodeValue=t; }; }else if(n=="hide"){ ob1.style.display = "none"; }else if (n=="short"){ ob1.style.display = ""; ob2=ob1.childNodes[0]; ob3=ob2.childNodes[0]; var t=ob3.nodeValue; if(ob1.childNodes.length>1){ var p=ob1.childNodes[1].nodeValue; t=t+ob1.childNodes[1].nodeValue; ob1.childNodes[1].nodeValue=""; } ob2.title=t; ob3.nodeValue="* "; }else{ ob1.style.display = ""; } } } } this.changeFormat = function(){ var s=state; if(s==""){ s="short"; }else if(s=="short"){ s="hide"; }else if(s=="hide"){ s=""; } state=s; showRefsMode(s); } //when user clicks to ref in article text whenUserClicksToRef function whenUserClicksToRef(prm_name, prm_n){ var anchorTags = document.getElementsByTagName("sup"); //alert('"#cite_ref'+prm_name+'-'+prm_n+'"'); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; //alert(ob1.id+"==="+ob1.id.indexOf('cite_ref-')); if(ob1.id.indexOf("cite_ref-")==0){ if(ob1.id=="cite_ref"+prm_name+"-"+prm_n){ ob1.className = "harvVisitedLink"; }else{ ob1.className = "harvNone"; } }else if(ob1.id.indexOf("harv_ref-")==0){ ob1.className = ""; }else if(ob1.id.indexOf("harv_note-")==0){ ob1.className = ""; } } //setBackground(prm_name); var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; var h=ob1.href; var p=h.lastIndexOf("#"); if(p==-1) continue; var h=h.substring(p, h.length); if(h.indexOf("#cite_ref-")==0){ if(h == "#cite_ref"+prm_name+"-"+prm_n){ ob1.className = "harvReferenceLink"; }else{ ob1.className = ""; } } } setBackground1(prm_name, prm_n); } function handler1(id){ var arr=id.split("-"); whenUserClicksToHarvRef(arr[1], arr[2]); } function handler2(id){ var arr=id.split("-"); if(arr[2]){ whenUserClicksToHarvSmallBacklink(arr[1], arr[2]); }else{ whenUserClicksToHarvBigBacklink(arr[1]); } } function handler3(id){ var arr=id.split("-"); if(arr[2]){ whenUserClicksToRef("-"+arr[1], arr[2]); }else{ whenUserClicksToRef("", arr[1]); } } function handler4(id, h){ var p=h.lastIndexOf("#"); if(p==-1) return; var h=h.substring(p+1, h.length); whenUserClicksToBackRef(h); } //when user clicks to ref in article text whenUserClicksToRef function whenUserClicksToBackRef(prm_href){ var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink"){ ob1.className = ""; } if(ob1.className == "harvVisitedLink"){ ob1.className = ""; } if(ob1.id.indexOf("cite_ref-")==0){ if(ob1.id==prm_href){ ob1.className = "harvVisitedLink"; }else{ ob1.className = ""; } } } var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; var h=ob1.href; var p=h.lastIndexOf("#"); if(p==-1) continue; var h=h.substring(p, h.length); if(h.indexOf("#cite_ref-")==0){ if(h == "#"+prm_href){ ob1.className = "harvReferenceLink"; }else{ ob1.className = ""; } } } setBackground2(prm_href); } //Main function on load page this.onLoad = function(){ if (wgAction=="view"){ //only for view pages var ok=0; //install events var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.href.indexOf("#harv_note-")>=0){ ob1.onclick= function(){handler1(this.parentNode.id)}; }else if(ob1.href.indexOf("#harv_ref-")>=0){ ob1.onclick= function(){handler2(this.parentNode.id)}; ok=1; }else if(ob1.href.indexOf("#cite_note-")>=0){ ob1.onclick= function(){handler3(this.parentNode.id)}; ok=1; }else if(ob1.href.indexOf("#cite_ref-")>=0){ ob1.onclick= function(){handler4(this.parentNode.id, this.href)}; ok=1; } } //install the portlet if(ok==1){ var hist; var url; if (!(hist = document.getElementById('ca-history') )) return; if (!(url = hist.getElementsByTagName('a')[0] )) return; if (!(url = url.href )) return; addPortletLink('p-cactions', 'javascript:HrvHighlight.changeFormat();', 'links', 'ca-harvrefs', 'Change format of harvard references', ''); var s=state; if(s!="") showRefsMode(s); } } } }//obj //Script is starting here if (doneOnloadHook) HrvHighlight.onLoad() else addOnloadHook(HrvHighlight.onLoad); /*******************/ /* */ /* Cloudpayments */ /* */ /*******************/ document.write('<script src="https://widget.cloudpayments.ru/bundles/cloudpayments"></script>') $(function () { $('#cloudpayments').html('<input value="Оформить регулярное пожертвование" type="button">'); }()); var payHandler = function () { //требуется библиотека jquery var widget = new cp.CloudPayments(); var data = {}; data.cloudPayments = {recurrent: { interval: 'Month', period: 1 }}; //создание ежемесячной подписки widget.charge({ // options publicId: 'pk_0301af503fe072af06e3e048912fc', //id из личного кабинета description: 'Ежемесячное пожертвование сайту Ruxpert.ru', //назначение amount: 300, //сумма currency: 'RUB', //валюта invoiceId: '1234567', //номер заказа (необязательно) accountId: 'user@example.com', //идентификатор плательщика (обязательно для создания подписки) data: data }, function (options) { // success //действие при успешной оплате }, function (reason, options) { // fail //действие при неуспешной оплате }); }; $("#cloudpayments").on("click", payHandler); //кнопка "Оплатить" /* widget.charge({ // options publicId: 'pk_0301af503fe072af06e3e048912fc', description: 'Оплата в ruxpert.ru', amount: 123.00, //сумма currency: 'RUB', invoiceId: '1234567', //номер заказа accountId: 'user@example.com', //плательщик }, function (options) { // success //действие при успешном платеже }, function (reason, options) { // fail //действие при неуспешном платеже }); }; $("#cloudpayments").on("click", payHandler); //кнопка "Оплатить" */