/**
* Скрипт, добавляющий три дополнительные боковые панели со ссылками.
* Взят там: https://ru.wikipedia.org/wiki/User:VasilievVV/links.js
* Убрал неработающие ссылки.
*/
if( typeof( wfAnchorEncode ) != "function" ) {
function wfAnchorEncode(str) {
str = encodeURIComponent( str );
str = str.replace( /%/g, "." );
str = str.replace( /\.20/g, "_" );
str = str.replace( /\.3A/g, ":" );
return str;
}
}
var wgLinkMenus = {
'rqRFDs' : null,
'rqRFAs' : null,
'rqRFBs' : null,
'pageMenu' : {
'Журнал страницы' : {
'uri' : '?title=Special:Log&page=%%PAGE%%',
'id' : 'linkmenu-logs',
'tooltip' : 'Просмотреть журнал страницы',
'exists' : 1
},
'Статистика посещаемости' : {
/*'uri' : 'http://stats.grok.se/ru/latest/%%PAGE%%',*/
/* Пока так, ибо ссылка выше перестала работать. */
'uri' : 'http://greatmusiclover.github.io/statsview/?pagename=%%PAGE%%&daysago=30',
'id' : 'linkmenu-viewstats',
'tooltip' : 'Просмотреть статистику посещаемости',
'exists' : 1
},
'Статистика посещаемости 2' : {
'uri' : 'https://tools.wmflabs.org/pageviews/?project=ru.wikipedia.org&platform=all-access&agent=user&range=latest-30&pages=%%PAGE%%',
'id' : 'linkmenu-viewstats2',
'tooltip' : 'Просмотреть статистику посещаемости',
'exists' : 1
},
'Поиск копивио' : {
'uri' : 'https://tools.wmflabs.org/copyvios/?lang=ru&project=wikipedia&title=%%PAGE%%&oldid=&action=search&use_engine=1&use_links=0&turnitin=0',
'id' : 'linkmenu-copyvio',
'tooltip' : 'Поиск копивио',
'exists' : 1
},
'Анализ истории' : {
'uri' : 'http://vs.aka-online.de/cgi-bin/wppagehiststat.pl?lang=ru.wikipedia&page=%%PAGE%%',
'id' : 'linkmenu-historystats',
'tooltip' : 'Анализ истории правок',
'exists' : 1
},
'Подстраницы' : {
'uri' : '?title=Special:Prefixindex/%%PAGE%%/',
'id' : 'linkmenu-subpages',
'tooltip' : 'Просмотреть список подстраниц',
'exists' : 0
},
'Анализ страницы' : {
'uri' : 'http://ru.wikichecker.com/article/?a=%%PAGE%%',
'id' : 'linkmenu-pageanalysis',
'tooltip' : 'Анализ истории правок',
'exists' : 1
},
'Очистить кэш' : {
'uri' : '?title=%%PAGE%%&action=purge',
'id' : 'linkmenu-purge',
'tooltip' : 'Очистить кэш страницы',
'exists' : 0
},
'Последняя правка' : {
'uri' : '?title=%%PAGE%%&diff=0',
'id' : 'linkmenu-lastedit',
'tooltip' : 'Последняя правка страницы',
'exists' : 1
},
},
'userMenu' : {
'Описания правок' : {
'uri' : 'http://toolserver.org/~tparis/editsummary/index.php?lang=ru&wiki=wikipedia&name=%%USER%%',
'id' : 'linkmenu-editsummaries',
'tooltip' : 'Статистика использования участником описаний правок',
},
'Анализ вклада' : {
'uri' : 'http://ru.wikichecker.com/user/?l=all&t=%%USER%%',
'id' : 'linkmenu-useranalysis',
'tooltip' : 'Анализ вклада участника',
},
'Журнал прав (локальный)' : {
'uri' : '?title=Special:Log/rights&page=User:%%USER%%',
'id' : 'linkmenu-rightsloglocal',
'tooltip' : 'Журнал изменения прав участника',
},
'Журнал прав (Мета)' : {
'uri' : 'http://meta.wikimedia.org/w/index.php?title=Special:Log/rights&page=User:%%USER%%@ruwiki',
'id' : 'linkmenu-rightslogmeta',
'tooltip' : 'Журнал изменения прав участника стюардами',
},
},
'searchMenu' : {
'В архивах КУ' : {
'prefix' : 'Википедия:К удалению',
'id' : 'linkmenu-search-afd',
'tooltip' : 'Искать в архивах ВП:КУ'
},
'В архивах ЗКА' : {
'prefix' : 'Википедия:Запросы к администраторам',
'id' : 'linkmenu-search-ani',
'tooltip' : 'Искать в архивах ВП:ЗКА'
},
'В архивах ФА' : {
'prefix' : 'Википедия:Форум администраторов',
'id' : 'linkmenu-search-an',
'tooltip' : 'Искать в архивах ВП:ФА'
},
'В архивах ФП' : {
'prefix' : 'Википедия:Форум патрулирующих',
'id' : 'linkmenu-search-pn',
'tooltip' : 'Искать в архивах ВП:ФП'
},
'В архивах ВУ' : {
'prefix' : 'Википедия:Форум/Архив/Вниманию участников',
'id' : 'linkmenu-search-flameplace',
'tooltip' : 'Искать в архивах ВП:ВУ'
},
'В архивах форумов' : {
'prefix' : 'Википедия:Форум/Архив',
'id' : 'linkmenu-search-vp',
'tooltip' : 'Искать в архивах форума'
},
'В архивах АК' : {
'prefix' : 'Википедия:Заявки на арбитраж',
'id' : 'linkmenu-search-rfar',
'tooltip' : 'Искать в исках в АК'
},
'В архивах ЗЛВЧ' : {
'prefix' : 'Википедия:Проект:Знаете ли вы/Архив рубрики',
'id' : 'linkmenu-search-dyk',
'tooltip' : 'Искать в архивах рубрики "Знаете ли вы"'
},
'В архивах работы недели' : {
'prefix' : 'Википедия:Кандидаты на работу недели/Архив',
'id' : 'linkmenu-search-cotw',
'tooltip' : 'Искать в архивах "совместной работы недели"'
},
},
'portletHeaders' : {
'page' : 'Страница',
'search' : 'Поиск',
'user' : 'Участник',
},
'addTalkpageLinks' : function() {
talkpage = mw.config.get('wgFormattedNamespaces')[mw.config.get('wgNamespaceNumber') + 1] + ':' + mw.config.get('wgTitle');
wgLinkMenus.rqRFDs = new XMLHttpRequest();
var uri = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?action=raw&title=' + encodeURIComponent( talkpage );
wgLinkMenus.rqRFDs.onreadystatechange = wgLinkMenus.onTalkpageLoaded;
wgLinkMenus.rqRFDs.open( "GET", uri, true );
wgLinkMenus.rqRFDs.send( '' );
},
'onTalkpageLoaded' : function() {
if( this.readyState != 4 ) return;
if( this.status != 200 ) return;
pgtext = this.responseText;
var rfdRegex = /\{\{\s*(оставлен[оа]|kept)\s*\|\s*((\d?\d \S+ \d\d\d\d\|?)+)\s*\}\}/ig;
var facRegex = /\{\{\s*Сообщение ИС\s*\|\s*\d?\d \S+ \d\d\d\d\|([^|}]+)/ig;
var gacRegex = /\{\{\s*Сообщение ХС\s*\|\s*\d?\d \S+ \d\d\d\d/ig;
var dateRegex = /(\d\d \S+ \d\d\d\d)/ig;
var matches = pgtext.match( rfdRegex );
if( matches && matches.length > 0 ) {
matches = matches[0].match( dateRegex );
for( i = 0; i < matches.length; i++ ) {
rfdUri = 'http://ru.wikipedia.org/wiki/Википедия:К_удалению/' + matches[i] + '#' + wfAnchorEncode( mw.config.get('wgPageName') );
idx = i > 0 ? " (" + String(i + 1) + ")" : "";
mw.loader.using('mediawiki.util').done(function () {
mw.util.addPortletLink('p-linkmenu-page', rfdUri, "Обсуждение на ВП:КУ" + idx, "linkmenu-rfd" + i, "Ссылка на обсуждение об удалении статьи");
});
}
}
matches = pgtext.match( facRegex );
if( matches && matches.length > 0 ) {
for( i = 0; i < matches.length; i++ ) {
facName = matches[i].replace( /\{\{\s*Сообщение ИС\s*\|\s*\d?\d \S+ \d\d\d\d\|/ig, '' );
facUri = 'http://ru.wikipedia.org/wiki/Википедия:Кандидаты_в_избранные_статьи/' + encodeURIComponent( facName );
idx = i > 0 ? " (" + String(i + 1) + ")" : "";
mw.loader.using('mediawiki.util').done(function () {
mw.util.addPortletLink('p-linkmenu-page', facUri, "Обсуждение на ВП:КИС" + idx, "linkmenu-fac" + i, "Ссылка на обсуждение об избрании статьи в избранные");
});
}
}
matches = pgtext.match( gacRegex );
if( matches && matches.length > 0 ) {
matches = matches[0].match( dateRegex );
for( i = 0; i < matches.length; i++ ) {
gacUri = 'http://ru.wikipedia.org/wiki/Википедия:Кандидаты_в_хорошие_статьи/' + matches[i] + '#' + wfAnchorEncode( mw.config.get('wgPageName') );
idx = i > 0 ? " (" + String(i + 1) + ")" : "";
mw.loader.using('mediawiki.util').done(function () {
mw.util.addPortletLink('p-linkmenu-page', gacUri, "Обсуждение на ВП:КХС" + idx, "linkmenu-gac" + i, "Ссылка на обсуждение об избрании статьи в хорошие");
});
}
}
},
'addRFXLinks' : function() {
rfaPrefix = encodeURIComponent( 'Заявки_на_статус_администратора/' + mw.config.get('wgTitle') );
rfbPrefix = encodeURIComponent( 'Заявки_на_статус_бюрократа/' + mw.config.get('wgTitle') );
wgLinkMenus.rqRFAs = new XMLHttpRequest();
wgLinkMenus.rqRFBs = new XMLHttpRequest();
wgLinkMenus.rqRFAs.onreadystatechange = wgLinkMenus.onRFXLinks;
wgLinkMenus.rqRFAs.open( "GET", mw.config.get('wgScriptPath') + '/api.php?format=json&action=query&list=allpages&aplimit=100&apnamespace=4&apprefix=' + rfaPrefix, true );
wgLinkMenus.rqRFAs.typeR = 'администратора';
wgLinkMenus.rqRFAs.send( '' );
wgLinkMenus.rqRFBs.onreadystatechange = wgLinkMenus.onRFXLinks;
wgLinkMenus.rqRFBs.open( "GET", mw.config.get('wgScriptPath') + '/api.php?format=json&action=query&list=allpages&aplimit=100&apnamespace=4&apprefix=' + rfbPrefix, true );
wgLinkMenus.rqRFBs.typeR = 'бюрократа';
wgLinkMenus.rqRFBs.send( '' );
},
'onRFXLinks' : function() {
if( this.readyState != 4 ) return;
if( this.status != 200 ) return;
result = eval( '(' + this.responseText + ')' );
pages = result.query.allpages;
for( i = 0; i < pages.length; i++ ) {
title = pages[i].title;
rfxUri = mw.config.get('wgScript') + "?title=" + encodeURIComponent( title );
idx = i > 0 ? " (" + String(i + 1) + ")" : "";
mw.loader.using('mediawiki.util').done(function () {
mw.util.addPortletLink('p-linkmenu-user', rfxUri, "Заявка на статус " + this.typeR + idx, "linkmenu-rfx-" + i, "Выборы");
});
}
},
'addPortlets' : function( addUserLinks ) {
var portlets = [ 'page', 'search' ];
if( addUserLinks )
portlets[portlets.length] = 'user';
columnOne = document.getElementById( 'p-logo' ).parentElement;
interwikis = document.getElementById( 'p-lang' );
for( i = 0; i < portlets.length; i++ ) {
newPortletId = 'p-linkmenu-' + portlets[i];
newPortlet = document.createElement( 'div' );
newPortlet.setAttribute( 'id', newPortletId );
newPortlet.setAttribute( 'class', skin == 'vector' ? 'portal' : 'portlet' );
newPortlet.innerHTML = '<h3>' + wgLinkMenus.portletHeaders[portlets[i]] + '</h3><div class="' + (skin == 'vector' ? 'body' : 'pBody') + '"><ul></ul></div>';
if( interwikis )
columnOne.insertBefore( newPortlet, interwikis );
else
columnOne.appendChild( newPortlet );
}
},
'addLinks' : function() {
if( mw.config.get('wgNamespaceNumber') < 0 )
return;
userExists = !getElementsByClassName( document, '*', 'mw-userpage-userdoesnotexist' ).length;
var addUserLinks = ( mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3 ) && mw.config.get('wgTitle').indexOf( "/" ) == -1 && userExists;
var addTalkpageLinks = mw.config.get('wgNamespaceNumber') % 2 === 0;
wgLinkMenus.addPortlets( addUserLinks );
for( var title in wgLinkMenus.pageMenu ) {
elem = wgLinkMenus.pageMenu[title];
if( elem.exists && !mw.config.get('wgArticleId') )
continue;
uri = elem.uri;
uri = uri.replace( '%%PAGE%%', encodeURIComponent( mw.config.get('wgPageName') ) );
if( uri.substr( 0, 1 ) == '?' )
uri = mw.config.get('wgScript') + uri;
mw.loader.using('mediawiki.util').done(function () {
mw.util.addPortletLink('p-linkmenu-page', uri, title, elem.id, elem.tooltip);
});
}
if( addUserLinks ) {
for( title in wgLinkMenus.userMenu ) {
elem = wgLinkMenus.userMenu[title];
if( elem.exists && !userExists )
continue;
uri = elem.uri;
uri = uri.replace( '%%USER%%', encodeURIComponent( mw.config.get('wgTitle') ) );
if( uri.substr( 0, 1 ) == '?' )
uri = mw.config.get('wgScript') + uri;
mw.loader.using('mediawiki.util').done(function () {
mw.util.addPortletLink('p-linkmenu-user', uri, title, elem.id, elem.tooltip);
});
}
wgLinkMenus.addRFXLinks();
}
for( title in wgLinkMenus.searchMenu ) {
elem = wgLinkMenus.searchMenu[title];
uri = mw.config.get('wgScript') + '?title=Special:Search&fulltext=1&search=' + encodeURIComponent( mw.config.get('wgTitle') ) +
' prefix:' + encodeURIComponent( elem.prefix )
mw.loader.using('mediawiki.util').done(function () {
mw.util.addPortletLink('p-linkmenu-search', uri, title, elem.id, elem.tooltip);
});
}
if( addTalkpageLinks )
wgLinkMenus.addTalkpageLinks();
}
};
$( wgLinkMenus.addLinks );