|
|
| Строка 1: |
Строка 1: |
| // ____________________________________________________________________________________________ | | // ____________________________________________________________________________________________ |
| // | | | | // | | |
| // | Основано на версии 264413579 гаджета refToolbar.js | | | // | Основано на версии 622655288 гаджета refToolbar.js | |
| // | (http://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-refToolbar.js&oldid=264413579) | | | // | (http://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-refToolbar.js&oldid=622655288) | |
| // |____________________________________________________________________________________________| | | // |____________________________________________________________________________________________| |
| // | | // |
| // Imported from revision 264412998 as of 2009-01-16T05:53:39 from [[User:Mr.Z-man/refToolbar.js]] | | /** |
| // For a description, see [[User:Mr.Z-man/refToolbar]]
| | * RefToolbar |
| | | * |
| var numforms = 0;
| | * Adds tools for citing references to the edit toolbar. |
| var wikEdAutoUpdateUrl;
| | * See [[Wikipedia:RefToolbar]] for further documentation. One of |
| | | * three possible versions will load (Reftoolbar 2.0b, Reftoolbar 2.0a, |
| mwCustomEditButtons['reftools'] = [refbuttons, 'commons/e/ea/Button_easy_cite.png', 'Добавить шаблон цитирования']
| | * or Reftoolbar 1.0) depending on the user preferences (the |
| | | * usebetatoolbar and usebetatoolbar-cgd parameters). |
| | | * |
| | | * @see: [[Wikipedia:RefToolbar]] |
| function refbuttons() { | | * @see: [[MediaWiki:RefToolbar.js]] |
| if ( ! $('#citeselect').length )
| | * @see: [[MediaWiki:RefToolbarConfig.js]] |
| $('#editform').prepend(
| | * @see: [[MediaWiki:RefToolbarLegacy.js]] |
| '<div id="citeselect">'+
| | * @see: [[MediaWiki:RefToolbarMessages-en.js]] |
| '<input type=button value="Web" onclick="citeWeb()" />'+
| | * @see: [[MediaWiki:RefToolbarMessages-de.js]] |
| '<input type=button value="News" onclick="citeNews()" />'+
| | * @see: [[MediaWiki:RefToolbarNoDialogs.js]] |
| '<input type=button value="Книга" onclick="citeBook()" />'+
| | * @see: [[MediaWiki:Gadget-refToolbarBase.js]] |
| '<input type=button value="Статья" onclick="citeJournal()" />'+
| | * @author: [[User:Mr.Z-man]] |
| '<input type=button value="Именованные сноски" onclick="citeNamedRef()" />'+
| | * @author: [[User:Kaldari]] |
| '<input type=button value="Поиск ошибок" onclick="dispErrors()" />'+
| | */ |
| '<input type=button value="Отмена" onclick="hideInitial()" /></div>')
| | /*jshint browser: true, camelcase: true, curly: true, eqeqeq: true */ |
| else
| | /*global jQuery, mediaWiki, importScript */ |
| $('#citeselect').toggle()
| | ( function ( mw, $ ) { |
| } | | 'use strict'; |
| | | function initializeRefTools() { |
| | | if ( window.refToolbarInstalled || $( '#wpTextbox1[readonly]' ).length ){ |
| function hideInitial() { | | return; |
| document.getElementById('citeselect').style.display = 'none';
| | } |
| oldFormHide();
| | if ( mw.user.options.get( 'usebetatoolbar' ) === 1 ) { |
| } | | // Enhanced editing toolbar is on. Going to load RefToolbar 2.0a or 2.0b. |
| | | if ( mw.user.options.get( 'usebetatoolbar-cgd' ) === 1 ) { |
| function oldFormHide() {
| | // Dialogs are on. Loading 2.0b. (standard) |
| if (numforms != 0) {
| | // TODO: |
| document.getElementById('citediv'+numforms).style.display = 'none';
| | // * Explicitly declare global variables from [[MediaWiki:RefToolbar.js]] using window.* |
| }
| | // * Move [[MediaWiki:RefToolbar.js]] to [[MediaWiki:Gadget-refToolbarDialogs.js]] |
| if (document.getElementById('errorform') != null) {
| | // * Create the module 'ext.gadget.refToolbarDialogs' depending on 'ext.gadget.refToolbarBase' and 'ext.wikiEditor.toolbar' |
| document.getElementById('citeselect').removeChild(document.getElementById('errorform'));
| | // * Replace the code below by mw.loader.load( 'ext.gadget.refToolbarDialogs' ); |
| }
| | mw.loader.using( [ 'ext.gadget.refToolbarBase', 'ext.wikiEditor.toolbar' ], function () { |
| | importScript( 'MediaWiki:RefToolbar.js' ); |
| | } ); |
| | } else { |
| | // Dialogs are off. Loading 2.0a. |
| | mw.loader.using( 'ext.wikiEditor.toolbar', function () { |
| | importScript( 'MediaWiki:RefToolbarNoDialogs.js' ); |
| | } ); |
| | } |
| | |
| | // Скрываем таб из панели инструментов редактора кода |
| | mw.util.addCSS('.codeEditor-ui-toolbar .tabs span.tab-cites { display:none; }'); |
| | } else if ( mw.user.options.get( 'showtoolbar' ) === 1 ) { |
| | // Enhanced editing toolbar is off. Loading RefToolbar 1.0. (legacy) |
| | importScript( 'MediaWiki:RefToolbarLegacy.js' ); |
| | } else { |
| | return; |
| | } |
| | window.refToolbarInstalled = true; |
| } | | } |
|
| |
|
| function getTime() {
| | if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) { |
| var time = new Date();
| | $( initializeRefTools ); |
| var nowdate = time.getUTCDate();
| |
| if (nowdate<10) { nowdate = "0"+ nowdate.toString(); }
| |
| var nowmonth = time.getUTCMonth()+1;
| |
| if (nowmonth<10) { nowmonth = "0"+ nowmonth.toString(); }
| |
| var nowyear = time.getUTCFullYear();
| |
| newtime = nowyear + '-' + nowmonth + '-' + nowdate;
| |
| return (newtime);
| |
| } | | } |
|
| |
|
| function citeWeb() {
| | }( mediaWiki, jQuery ) ); |
| citeNewsWeb("cite web");
| |
| }
| |
| function citeNews() {
| |
| citeNewsWeb("cite news");
| |
| }
| |
| | |
| function citeNewsWeb(templatename) {
| |
| oldFormHide();
| |
| template = templatename;
| |
| var legend;
| |
| if (template == "cite web") {
| |
| legend = "Ссылка на источник из интернета";
| |
| } else {
| |
| legend = "Ссылка на новостной источник";
| |
| }
| |
| newtime = getTime();
| |
| numforms++;
| |
| form = '<div id="citediv'+numforms+'">'+
| |
| '<fieldset><legend>'+legend+'</legend>'+
| |
| '<table cellspacing="5">'+
| |
| '<input type="hidden" value="'+template+'" id="template">'+
| |
| '<tr><td width="120"><label for="url"> URL: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
| |
| '<td width="120"><label for="title"> Заголовок: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td></tr>'+
| |
| '<tr><td width="120"><label for="last"> Фамилия: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
| |
| '<td width="120"><label for="first"> Имя: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
| |
| '<tr><td width="120"><label for="author"> Автор: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="author"></td>'+
| |
| '<td width="120"><label for="coauthors"> Соавторы: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td></tr>'+
| |
| '<tr><td width="120"><label for="quote"> Цитата: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="quote"></td>'+
| |
| '<td width="120"><label for="date"> Дата публикации: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td></tr>'+
| |
| '<tr><td width="120"><label for="work"> Работа: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="work"></td>'+
| |
| '<td width="120"><label for="publisher"> Издатель: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td></tr>'+
| |
| '<tr><td width="120"><label for="format"> Формат: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="format"></td>'+
| |
| '<td width="120"><label for="description"> Описание: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="description"></td></tr>'+
| |
| '<tr><td width="120"><label for="pages"> Страницы: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
| |
| '<td width="120"><label for="lang"> Язык: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="lang"></td></tr>'+
| |
| '<tr><td width="120"><label for="accessdate"> Дата проверки: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate" value="'+ newtime +'"></td>'+
| |
| '<td width="120"><label for="refname"> Имя сноски: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
| |
| '<tr><td width="120"><label for="archiveurl"> Архивная копия: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="archiveurl"></td>'+
| |
| '<td width="120"><label for="archivedate"> Дата архивной копии: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="archivedate"></td></tr>'+
| |
| '</table>'+
| |
| '<input type="button" value="Добавить" onClick="addcites()">'+
| |
| '</fieldset></div>';
| |
| document.getElementById('citeselect').innerHTML += form;
| |
| }
| |
| | |
| function citeBook() {
| |
| oldFormHide();
| |
| template = "книга";
| |
| numforms++;
| |
| form = '<div id="citediv'+numforms+'">'+
| |
| '<fieldset><legend>Ссылка на книгу</legend>'+
| |
| '<table cellspacing="5">'+
| |
| '<input type="hidden" value="'+template+'" id="template">'+
| |
| '<tr><td width="120"><label for="автор"> Автор: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="автор"></td>'+
| |
| '<td width="120"><label for="часть"> Часть: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="часть"></td></tr>'+
| |
| '<tr><td width="120"><label for="заглавие"> Заглавие: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="заглавие"></td>'+
| |
| '<td width="120"><label for="оригинал"> Оригинал: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="оригинал"></td></tr>'+
| |
| '<tr><td width="120"><label for="ссылка"> Ссылка: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="ссылка"></td>'+
| |
| '<td width="120"><label for="ответственный"> Ответственный: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="ответственный"></td></tr>'+
| |
| '<tr><td width="120"><label for="издание"> Издание: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="издание"></td>'+
| |
| '<td width="120"><label for="место"> Место: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="место"></td></tr>'+
| |
| '<tr><td width="120"><label for="издательство"> Издательство: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="издательство"></td>'+
| |
| '<td width="120"><label for="год"> Год: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="год"></td></tr>'+
| |
| '<tr><td width="120"><label for="том"> Том: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="том"></td>'+
| |
| '<td width="120"><label for="серия"> Серия: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="серия"></td></tr>'+
| |
| '<tr><td width="120"><label for="страницы"> Страницы: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="страницы"></td>'+
| |
| '<td width="120"><label for="страниц"> Страниц всего: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="страниц"></td></tr>'+
| |
| '<tr><td width="120"><label for="pages"> Pages: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
| |
| '<td width="120"><label for="allpages"> All Pages: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="allpages"></td></tr>'+
| |
| '<tr><td width="120"><label for="isbn"> ISBN: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="isbn"></td>'+
| |
| '<td width="120"><label for="тираж"> Тираж: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="тираж"></td></tr>'+
| |
| '<td width="120"><label for="refname"> Имя сноски: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
| |
| '</table>'+
| |
| '<input type="button" value="Добавить" onClick="addcites()">'+
| |
| '</fieldset></div>';
| |
| document.getElementById('citeselect').innerHTML += form;
| |
| }
| |
| | |
| function citeJournal() {
| |
| oldFormHide();
| |
| template = "статья";
| |
| numforms++;
| |
| form = '<div id="citediv'+numforms+'">'+
| |
| '<fieldset><legend>Ссылка на статью</legend>'+
| |
| '<table cellspacing="5">'+
| |
| '<input type="hidden" value="'+template+'" id="template">'+
| |
| '<tr><td width="120"><label for="автор"> Автор: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="автор"></td>'+
| |
| '<td width="120"><label for="заглавие"> Заглавие: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="заглавие"></td></tr>'+
| |
| '<tr><td width="120"><label for="оригинал"> Оригинал: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="оригинал"></td>'+
| |
| '<td width="120"><label for="ссылка"> Ссылка: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="ссылка"></td></tr>'+
| |
| '<tr><td width="120"><label for="язык"> Язык: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="язык"></td>'+
| |
| '<td width="120"><label for="автор издания"> Автор издания: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="автор издания"></td></tr>'+
| |
| '<tr><td width="120"><label for="издание"> Издание: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="издание"></td>'+
| |
| '<td width="120"><label for="тип"> Тип: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="тип"></td></tr>'+
| |
| '<tr><td width="120"><label for="место"> Место: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="место"></td>'+
| |
| '<td width="120"><label for="издательство"> Издательство: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="издательство"></td></tr>'+
| |
| '<tr><td width="120"><label for="год"> Год: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="год"></td>'+
| |
| '<td width="120"><label for="том"> Том: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="том"></td></tr>'+
| |
| '<tr><td width="120"><label for="выпуск"> Выпуск: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="выпуск"></td>'+
| |
| '<td width="120"><label for="номер"> Номер: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="номер"></td></tr>'+
| |
| '<tr><td width="120"><label for="страницы"> Страницы: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="страницы"></td>'+
| |
| '<td width="120"><label for="issn"> ISSN: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="issn"></td></tr>'+
| |
| '<tr><td width="120"><label for="isbn"> ISBN: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="isbn"></td>'+
| |
| '<td width="120"><label for="doi"> DOI: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="doi"></td></tr>'+
| |
| '<tr><td width="120"><label for="pmid"> PMID: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pmid"></td>'+
| |
| '<td width="120"><label for="bibcode"> Bibcode: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="bibcode"></td></tr>'+
| |
| '<tr><td width="120"><label for="arXiv"> arXiv: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="arXiv"></td>'+
| |
| '<td width="120"><label for="refname"> Имя сноски: </label></td>'+
| |
| '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
| |
| '</table>'+
| |
| '<input type="button" value="Добавить" onClick="addcites()">'+
| |
| '</fieldset></div>';
| |
| document.getElementById('citeselect').innerHTML += form;
| |
| }
| |
| | |
| function addcites(template) {
| |
| cites = document.getElementById('citediv'+numforms).getElementsByTagName('input');
| |
| var citebegin = '<ref';
| |
| var citename = '';
| |
| var citeinner = '';
| |
| for (var i=0; i<cites.length-1; i++) {
| |
| if (cites[i].value != '' && cites[i].id != "refname" && cites[i].id != "template") {
| |
| citeinner += "|" + cites[i].id + "=" + cites[i].value.replace(/\|/g, '{{!}}');
| |
| }
| |
| else if (cites[i].value != '' && cites[i].id == "refname" && cites[i].id != "template") {
| |
| citebegin += ' name="' + cites[i].value + '"';
| |
| }
| |
| else if (cites[i].value != '' && cites[i].id != "refname" && cites[i].id == "template") {
| |
| citename = '>{{' + cites[i].value;
| |
| }
| |
| }
| |
| cite = citebegin + citename + citeinner + "}}</ref>";
| |
| $('#wpTextbox1')
| |
| .textSelection('encapsulateSelection', {'peri':cite})
| |
| .focus();
| |
| document.getElementById('citediv'+numforms).style.display = 'none';
| |
| }
| |
| | |
| function getNamedRefs(calls) {
| |
| if (typeof(wikEdUseWikEd) != 'undefined') {
| |
| if (wikEdUseWikEd == true) {
| |
| WikEdUpdateTextarea();
| |
| }
| |
| }
| |
| text = document.getElementById('wpTextbox1').value;
| |
| var regex;
| |
| if (calls) {
| |
| regex = /< *?ref +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)) *?\/ *?>/gi //'
| |
| } else {
| |
| regex = /< *?ref +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)) *?>/gi //'
| |
| }
| |
| var namedrefs = new Array();
| |
| var i=0;
| |
| var nr=true;
| |
| do {
| |
| ref = regex.exec(text);
| |
| if(ref != null){
| |
| if (ref[5]) {
| |
| namedrefs[i] = ref[5];
| |
| } else if (ref[3]) {
| |
| namedrefs[i] = ref[3];
| |
| } else {
| |
| namedrefs[i] = ref[6];
| |
| }
| |
| i++;
| |
| } else {
| |
| nr=false;
| |
| }
| |
| } while (nr==true);
| |
| return namedrefs;
| |
| }
| |
| | |
| function citeNamedRef() {
| |
| namedrefs = getNamedRefs(false);
| |
| if (namedrefs == '') {
| |
| oldFormHide();
| |
| numforms++;
| |
| out = '<div id="citediv'+numforms+'"><fieldset>'+
| |
| '<legend>Сноски в тексте</legend>В тексте отстутствуют именованные сноски (<tt><ref name="Name"></tt>)</fieldset></div>';
| |
| document.getElementById('citeselect').innerHTML += out;
| |
| }
| |
| else {
| |
| oldFormHide();
| |
| numforms++;
| |
| form = '<div id="citediv'+numforms+'">'+
| |
| '<fieldset><legend>Сноски в статье</legend>'+
| |
| '<table cellspacing="5">'+
| |
| '<tr><td><label for="namedrefs"> Именованные сноски:</label></td>'+
| |
| '<td><select name="namedrefs" id="namedrefs">';
| |
| for (var i=0;i<namedrefs.length;i++) {
| |
| form+= '<option value="'+namedrefs[i]+'">'+namedrefs[i]+'</option>';
| |
| }
| |
| form+= '</select>'+
| |
| '</td></tr></table>'+
| |
| '<input type="button" value="Добавить" onClick="addnamedcite()">'+
| |
| '</fieldset></div>';
| |
| document.getElementById('citeselect').innerHTML += form;
| |
| }
| |
| }
| |
| | |
| function addnamedcite() {
| |
| name = document.getElementById('citediv'+numforms).getElementsByTagName('select')[0].value;
| |
| ref = '<ref name="'+name+'"/>';
| |
| $('#wpTextbox1')
| |
| .textSelection('encapsulateSelection', {'peri':ref})
| |
| .focus();
| |
| document.getElementById('citediv'+numforms).style.display = 'none';
| |
| }
| |
| | |
| function getAllRefs() {
| |
| if (typeof(wikEdUseWikEd) != 'undefined') {
| |
| if (wikEdUseWikEd == true) {
| |
| WikEdUpdateTextarea();
| |
| }
| |
| }
| |
| text = document.getElementById('wpTextbox1').value;
| |
| regex = /< *?ref( +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)))? *?>((.|\n)*?)< *?\/? *?ref *?>/gim //"
| |
| var allrefs = new Array();
| |
| var i=0;
| |
| var nr=true;
| |
| do {
| |
| ref = regex.exec(text);
| |
| if(ref != null){
| |
| if (ref[0].search(/[^\s]{150}/) != -1) {
| |
| ref[0] = ref[0].replace(/\|([^\s])/g, "| $1");
| |
| }
| |
| ref[0] = ref[0].replace(/</g, "<");
| |
| ref[0] = ref[0].replace(/>/g, ">");
| |
| allrefs[i] = ref[0];
| |
| i++;
| |
| } else {
| |
| nr=false;
| |
| }
| |
| } while (nr==true);
| |
| return allrefs;
| |
| }
| |
| | |
| function NRcallError(namedrefs, refname) {
| |
| for (var i=0; i<namedrefs.length; i++) {
| |
| if (namedrefs[i] == refname) {
| |
| return true;
| |
| }
| |
| }
| |
| return false;
| |
| }
| |
| | |
| function errorCheck() {
| |
| var allrefs = getAllRefs();
| |
| var allrefscontent = new Array();
| |
| var samecontentexclude = new Array();
| |
| var sx=0;
| |
| var templateexclude = new Array();
| |
| var tx=0;
| |
| var skipcheck = false;
| |
| var namedrefcalls = getNamedRefs(true);
| |
| for (var i=0; i<allrefs.length; i++) {
| |
| allrefscontent[i] = allrefs[i].replace(/< *?ref( +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)))? *?>((.|\n)*?)< *?\/? *?ref *?>/gim, "$8"); //"
| |
| }
| |
| var namedrefs = getNamedRefs(false);
| |
| var errorlist = new Array();
| |
| var q=0;
| |
| unclosed = document.getElementById('unclosed').checked;
| |
| samecontent = document.getElementById('samecontent').checked;
| |
| templates = false //templates = document.getElementById('templates').checked;
| |
| repeated = document.getElementById('repeated').checked;
| |
| undef = document.getElementById('undef').checked;
| |
| for (var i=0; i<allrefs.length; i++) {
| |
| if (allrefs[i].search(/< *?\/ *?ref *?>/) == -1 && unclosed) {
| |
| errorlist[q] = '<tr><td width="75%"><tt>'+allrefs[i]+'</tt></td>';
| |
| errorlist[q] += '<td width="25%">Unclosed <tt><ref></tt> tag</td></tr>';
| |
| q++;
| |
| }
| |
| if (samecontent) {
| |
| for (var d=0; d<samecontentexclude.length; d++) {
| |
| if (allrefscontent[i] == samecontentexclude[d]) {
| |
| skipcheck = true;
| |
| }
| |
| }
| |
| var p=0;
| |
| while (p<allrefs.length && !skipcheck) {
| |
| if (allrefscontent[i] == allrefscontent[p] && i != p) {
| |
| errorlist[q] = '<tr><td width="75%"><tt>'+allrefscontent[i]+'</tt></td>';
| |
| errorlist[q] += '<td width="25%">Несколько сносок имеют одинаковое содержание, вместо этого надо использовать <a href="//ru.wikipedia.org/wiki/Википедия:Сноски#Повторное_использование_одной_и_той_же_сноски">именованные сноски</a></td></tr>';
| |
| q++;
| |
| samecontentexclude[sx] = allrefscontent[i]
| |
| sx++;
| |
| break;
| |
| }
| |
| p++;
| |
| }
| |
| skipcheck=false;
| |
| }
| |
| if (templates) {
| |
| if (allrefscontent[i].search(/\{\{cite/i) == -1 && allrefscontent[i].search(/\{\{citation/i) == -1 && allrefscontent[i].search(/\{\{Comic (book|strip) reference/i) == -1 && allrefscontent[i].search(/\{\{Editorial cartoon reference/i) == -1 && allrefscontent[i].search(/\{\{harv/i) == -1) {
| |
| for (var x=0; x<templateexclude.length; x++) {
| |
| if (allrefscontent[i] == templateexclude[x]) {
| |
| skipcheck = true;
| |
| }
| |
| }
| |
| if (!skipcheck) {
| |
| errorlist[q] = '<tr><td width="75%"><tt>'+allrefs[i]+'</tt></td>';
| |
| errorlist[q] += '<td width="25%">Does not use a <a href="//en.wikipedia.org/wiki/Wikipedia:Citation_templates">citation template</a></td></tr>';
| |
| q++;
| |
| templateexclude[tx] = allrefscontent[i];
| |
| tx++;
| |
| }
| |
| skipcheck = false;
| |
| }
| |
| }
| |
| }
| |
| if (repeated) {
| |
| var repeatnameexclude = new Array();
| |
| var rx=0;
| |
| for (var k=0; k<namedrefs.length; k++) {
| |
| for (var d=0; d<repeatnameexclude.length; d++) {
| |
| if (namedrefs[k] == repeatnameexclude[d]) {
| |
| skipcheck = true;
| |
| }
| |
| }
| |
| var z=0;
| |
| while (z<namedrefs.length && !skipcheck) {
| |
| if (namedrefs[k] == namedrefs[z] && k != z) {
| |
| errorlist[q] = '<tr><td width="75%"><tt>'+namedrefs[k]+'</tt></td>';
| |
| errorlist[q] += '<td width="25%">Повторяющиеся сноски с одинаковым <a href="//ru.wikipedia.org/wiki/Википедия:Сноски#Повторное_использование_одной_и_той_же_сноски">именем</a></td></tr>';
| |
| q++;
| |
| repeatnameexclude[rx] = namedrefs[z];
| |
| rx++;
| |
| break;
| |
| }
| |
| z++;
| |
| }
| |
| skipcheck = false;
| |
| }
| |
| }
| |
| if (undef) {
| |
| var undefexclude = new Array();
| |
| var ux=0;
| |
| for (var p=0; p<namedrefcalls.length; p++) {
| |
| for (var d=0; d<undefexclude.length; d++) {
| |
| if (allrefscontent[i] == undefexclude[d]) {
| |
| skipcheck = true;
| |
| }
| |
| }
| |
| if (!skipcheck) {
| |
| if (!NRcallError(namedrefs, namedrefcalls[p])) {
| |
| errorlist[q] = '<tr><td width="75%"><tt>'+namedrefcalls[p]+'</tt></td>';
| |
| errorlist[q] += '<td width="25%"><a href="//ru.wikipedia.org/wiki/Википедия:Сноски#Повторное_использование_одной_и_той_же_сноски">Именованная сноска</a> используется, но её текст не задан</td></tr>';
| |
| q++;
| |
| undefexclude[ux] = namedrefs[p];
| |
| ux++;
| |
| }
| |
| }
| |
| skipcheck = false;
| |
| }
| |
| }
| |
| if (q > 0) {
| |
| return errorlist;
| |
| } else {
| |
| return 0;
| |
| }
| |
| }
| |
| | |
| function dispErrors() {
| |
| oldFormHide();
| |
| form = '<div id="errorform"><fieldset>'+
| |
| '<legend>Поиск ошибок</legend>'+
| |
| '<b>Искать:</b><br/>'+
| |
| '<input type="checkbox" id="unclosed" /> Незакрытые теги <tt><ref></tt><br/>'+
| |
| '<input type="checkbox" id="samecontent" /> Сноски с одинаковым содержанием<br/>'+
| |
| '<input type="checkbox" id="repeated" /> Множественные сноски с одинаковым именем<br/>'+
| |
| '<input type="checkbox" id="undef" /> Пустые именнованные сноски<br/>'+
| |
| '<input type="button" id="errorchecksubmit" value="Искать выбранные ошибки" onclick="doErrorCheck()"/>'+
| |
| '</fieldset></div>';
| |
| document.getElementById('citeselect').innerHTML += form;
| |
| }
| |
| | |
| function doErrorCheck() {
| |
| var errors = errorCheck();
| |
| document.getElementById('citeselect').removeChild(document.getElementById('errorform'));
| |
| if (errors == 0) {
| |
| if (numforms != 0) {
| |
| document.getElementById('citediv'+numforms).style.display = 'none';
| |
| }
| |
| numforms++;
| |
| out = '<div id="citediv'+numforms+'"><fieldset>'+
| |
| '<legend>Поиск ошибок</legend>Ошибки не найдены.</fieldset></div>';
| |
| document.getElementById('citeselect').innerHTML += out;
| |
| }
| |
| else {
| |
| if (numforms != 0) {
| |
| document.getElementById('citediv'+numforms).style.display = 'none';
| |
| }
| |
| numforms++;
| |
| form = '<div id="citediv'+numforms+'">'+
| |
| '<fieldset><legend>Поиск ошибок</legend>'+
| |
| '<table border="1px">';
| |
| for (var i=0; i<errors.length; i++) {
| |
| form+=errors[i];
| |
| }
| |
| form+= '</table>'+
| |
| '</fieldset></div>';
| |
| document.getElementById('citeselect').innerHTML += form;
| |
| }
| |
| }
| |