В четверг, 7 мая, около 16 часов (MSK) регистратор заморозил домен «cyclowiki.org» без уведомления владельцев. Сайт недоступен из большинства стран. Правление изучает возможности решения проблемы.

Участник:Товарищ Аарон/common.js

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
mw.loader.load('https://commons.wikimedia.org/w/index.php?title=User:Jack_who_built_the_house/convenientDiscussions.js&action=raw&ctype=text/javascript');

importScript('Участник:Jack who built the house/alignTemplateParameters.js');

importScript('Участник:Jack who built the house/copyWikilinks.js');

mw.loader.load( '/w/index.php?title=Участник:Урахара/logoswitcher.js&action=raw&ctype=text/javascript' );

mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );

console.log("COMMON.JS ЗАГРУЖЕН");

mw.loader.using('mediawiki.util').then(function () {

    // Список паттернов для подсветки
    const patterns = [
        { regex: /\bуничтож(ил|или|ено|ена|ить|енный)\b/gi, color: '#ff4d4d' },
        { regex: /\bразгром(ил|или|лен|)\b/gi, color: '#ff4d4d' },
        { regex: /\bпровал(ился|илась)?\b/gi, color: '#ff4d4d' },
        { regex: /\bликвидир(овал|овали|ован)\b/gi, color: '#ff4d4d' },

        { regex: /\bуспешн(о|ый|ая|ые)\b/gi, color: '#ff944d' },
        { regex: /\bэффективн(о|ый|ая)\b/gi, color: '#ff944d' },
        { regex: /\bзначительн(ый|ая|ое)\b/gi, color: '#ff944d' },
        { regex: /\bмощн(ый|ая)\b/gi, color: '#ff944d' },

        { regex: /\bдоказан(о|)\b/gi, color: '#4da6ff' },
        { regex: /\bочевидн(о|)\b/gi, color: '#4da6ff' },
        { regex: /\bподтвержда(ет|ют|ется)\b/gi, color: '#4da6ff' },

        { regex: /\bтеррорист(ы|)\b/gi, color: '#cc66ff' },
        { regex: /\bрежим\b/gi, color: '#cc66ff' }
    ];

    // Функция рекурсивной подсветки текстовых узлов
    function highlight(node) {
        if (node.nodeType === 3) { // текстовый узел
            let text = node.nodeValue;
            patterns.forEach(p => {
                if (p.regex.test(text)) {
                    const span = document.createElement('span');
                    span.innerHTML = text.replace(p.regex, match =>
                        `<mark style="background:${p.color}; padding:1px 2px;">${match}</mark>`
                    );
                    node.replaceWith(span);
                }
            });
        } else if (node.nodeType === 1 && node.tagName !== 'SCRIPT' && node.tagName !== 'STYLE') {
            // рекурсивно обходим всех потомков
            Array.from(node.childNodes).forEach(highlight);
        }
    }

    // Ищем все подходящие контейнеры для текста
    const containers = [
        document.querySelector('#mw-content-text'),   // старый Vector, Citizen
        document.querySelector('.mw-parser-output')   // Vector-2022 и Vector-2023
    ];

    containers.forEach(c => {
        if (c) highlight(c);
    });
    
    console.log("СКРИПТ РАБОТАЕТ");
});

var $titles = Array(); 
var $contents = Array(); 

function parseGET(str){  
  params = str.split('|');
  for (i=0; i<params.length; i++)  
  {  
    var keyval = params[i].split('=');  
    $titles[i] = keyval[0];
    $contents[i] = keyval[1];  
  }  
};  

function TabBuild(r){
  var $menu = "";
  for (i=1; i<$titles.length; i++)  
  {  
    if(r==i){
      $menu=$menu+" <b>"+$titles[i]+"</b> "; 
    }
    else
    {
      $menu=$menu+" <a href=# onClick='TabBuild("+i+");'>"+$titles[i]+"</a> ";
    }
  }
  $('#vsTabs').html($menu +"<br>"+ $contents[r]);

}

$(function(){
  var nhl = $('#vsArray')[0];
  if(nhl && !document.location.href.match("diff"))
  {
    parseGET( nhl.innerHTML ); 
    TabBuild(1);
  }
});




//Форматирует таблицу, скопированную из 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";
	    }
	 }
  } 
 
}