MediaWiki:Common.js: различия между версиями
Перейти к навигации
Перейти к поиску
Kilgore (обсуждение | вклад) Нет описания правки |
Fritz (обсуждение | вклад) Нет описания правки |
||
| Строка 25: | Строка 25: | ||
if( (wgNamespaceNumber != 0 && wgNamespaceNumber != 6 && wgNamespaceNumber != 100) | if( (wgNamespaceNumber != 0 && wgNamespaceNumber != 6 && wgNamespaceNumber != 100) | ||
|| wgAction != 'view' || /(oldid|diff)=/.test(window.location) ) return; | || wgAction != 'view' || /(oldid|diff)=/.test(window.location) ) return; | ||
$('#firstHeading').prepend( '<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareQuickServices="vkontakte,facebook,twitter,gplus"' + | $('#firstHeading').prepend( '<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareQuickServices="lj,vkontakte,facebook,twitter,gplus"' + | ||
' data-yashareTheme="counter"></div>' ); | ' data-yashareTheme="counter"></div>' ); | ||
}); | }); | ||
Версия от 20:03, 14 апреля 2014
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
/* Викификатор */
function addWikifButton(){
var toolbar = document.getElementById('toolbar')
var textbox = document.getElementById('wpTextbox1')
if (!textbox || !toolbar) return
var i = document.createElement('img')
i.src = 'http://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="http://ru.wikipedia.org/w/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript"><\/script>')
addOnloadHook(addWikifButton)
}
if (wgAction == 'view') {
$.getScript('http://yandex.st/share/share.js')
}
$(function(){
if( (wgNamespaceNumber != 0 && wgNamespaceNumber != 6 && wgNamespaceNumber != 100)
|| wgAction != 'view' || /(oldid|diff)=/.test(window.location) ) return;
$('#firstHeading').prepend( '<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareQuickServices="lj,vkontakte,facebook,twitter,gplus"' +
' data-yashareTheme="counter"></div>' );
});
/* Таблификатор */
//Форматирует таблицу, скопированную из Excel, по правилам вики-разметки.
//Часть кода позаимствована из http://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 = 'http://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 http://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);