Вікіпедія:Персональні скрипти/Навігації
Матеріал з Вікіпедії — вільної енциклопедії.
Зміст |
[ред.] Виринаючі вікна
При наведенні курсора мишки на внутрішнє посилання скрипт показує відповідну сторінку Вікіпедії у виринаючому віконці.
Імовірно, це найпопулярніший персональний скрипт в проектах Вікімедії.
Документація: en:Wikipedia:Tools/Navigation_popups, вказано багато додаткових параметрів.
Встановлення:
importScript('User:Js/popups.js');
Приклад зазначення додаткових параметрів:
popupDelay = 1.5; // затримка на півтори секунди перед випливанням вікна popupStructure = 'fancy'; // не об'єднувати навігаційні посилання у випадні списки imagePopupsForImages = false; // не випливати на ілюстраціях popupMaxWidth = 400; // ширина випливаючого вікна popupMaxPreviewSentences = 10; // більше пропозицій у вікні popupMaxPreviewCharacters = 666; // більше символів у вікні popupPreviewFirstParOnly = false; // цитується не тільки перший абзац popupPreviewKillTemplates = false; // шаблони показувати, хай і сирими
[ред.] Список спостереження
[ред.] Тільки нові зміни
Цей простий, але дуже корисний скрипт дозволяє набагато зручніше стежити за змінами сторінок у вашому списку спостереження:
importScript('User:Ilmari_Karonen/watchsince.js','en');
Інструкція: перейдіть до свого списку спостереження і прогляньте усі цікаві вам зміни, не йдучи з цієї сторінки (наприклад використовуючи «Навігаційні віконця» або відкриваючи зміни в нових вікнах браузера).
Потім натисніть на нове посилання «Changes since last load», яка повинна бути праворуч від посилання «Приховати малі редагування». Сторінка спостереження покаже вам тільки нові зміни. Далі продовжуйте натискати посилання «Changes since last load»; важливо при цьому не йти із сторінки спостереження.
Примітка: використовуваний скриптом параметр days можна використовувати і «вручну». Якщо ви запустили бравзер і зайшли на сторінку списку спостереження, і пам'ятаєте, що востаннє преверялі його 2 години тому, то можете дописати в адресному рядку браузера ?days=0.1 і натиснути Enter. Це покаже вам зміни за останніх 24/10 = 2.4 години
[ред.] Додання посилань скасування спостереження до елементів зі списку спостереження
Цей скрипт додає "(скасувати)" до кожного елементу списку спостереження, так що його навігація виглядає так: (різн.) (історія) (скас.). Корисно для користувачів з багатьма статтями у списку спостереження.
addOnloadHook(function () {
// Check if we're on the watchlist
if (!wgCanonicalSpecialPageName || wgCanonicalSpecialPageName != "Watchlist") return;
if (!document.forms[0] || !document.forms[0].namespace) return;
// Unwatch links go back to watchlist with "Removing requested items from watchlist..." message
var query_prefix = "title="+encodeURIComponent(wgPageName)+"&action=submit&remove=1&id[]=";
// ...or...
// Unwatch links go to "Removed from watchlist" page
//var query_prefix = "action=unwatch&title=";
// get list of all links in content:
var links = document.getElementById('content').getElementsByTagName('a');
// make a static copy of the nodelist and lose the original for speed
// while we're at it, prune the uninteresting links from the list
var linksCopy = new Array ();
for (var i = 0; i < links.length; i++) {
if (/[?&]action=history([&#]|$)/.test(links[i].href)) linksCopy.push(links[i]);
}
links = linksCopy;
for (var i = 0; i < links.length; i++) {
// create unwatch link and append it after history link
var unwatch = document.createElement('a');
unwatch.href = wgServer + wgScriptPath + "/index.php?" + query_prefix + encodeURIComponent(links[i].title);
unwatch.title = "Скасувати спостереження за "+links[i].title;
unwatch.appendChild(document.createTextNode("скас."));
links[i].parentNode.insertBefore(unwatch, links[i].nextSibling);
// insert a delimiter between the two links
var delim = links[i].previousSibling;
delimText = (delim.nodeType == 3 ? delim.nodeValue : ""); // kluge to handle case where "diff" is unlinked
delim = document.createTextNode(delimText.replace(/^.*diff/, ""));
links[i].parentNode.insertBefore(delim, unwatch);
}
});
</nowiki>
[ред.] Додаткові посилання
Підсторінки поточної сторінки
if (wgNamespaceNumber >= 0)
addOnloadHook(function(){
addPortletLink('p-tb', '/wiki/Special:Prefixindex/' + wgPageName + '/', 'Підсторінки');
})
[ред.] Пошук
[ред.] Auto Complete
Джерело: pl:Wikipedysta:Adziura/AutoComplete.js. Під час вписування в полі „Пошук” до нього додається випадаючий список статей, назви яких починаються з вписаних літер. Вираз «nie znaleziono» у вашому монобуці можна замінити на «не знайдено».
[ред.] Швидкий пошук у просторах
Перейти знайти у… ν
Вибір простору у стандартному блоці пошуку
if (!window.searchInNewWindow) searchInNewWindow = false;
var searchNS = [
[,'найти в…'],
[-5,'(у цьому вікні)'],
[-1,'За замовчуванням'],
[0,'Статті'],
[1,'Статті (обг)'],
[2,'Користувач'],
[3,'Користувач (обг)'],
[4,'Вікіпедія'],
[5,'Вікіпедія (обг)'],
[6,'Зображення'],
[7,'Зобр. (обг)'],
[8,'Mediawiki'],
[9,'Mediawiki (обг)'],
[10,'Шаблон'],
[11,'Шаблон (обг)']
]
addOnloadHook(searchCreateMenu);
function searchCreateMenu() {
searchForm = document.getElementById('searchform') //global var
if (!searchForm) return;
//create hidden input
searchHidden = document.createElement('input'); //global var
searchHidden.type = 'hidden';
searchHidden.value = '1';
searchForm.fulltext.parentNode.appendChild(searchHidden);
//create select
searchSel = document.createElement('select'); //global var
for (var i in searchNS)
searchSel.options[searchSel.options.length] = new Option(searchNS[i][1], searchNS[i][0]);
searchSetTarget();
searchSel.style.margin = '0';
searchSel.style.marginTop = '2px';
searchSel.style.fontSize = '90%';
searchSel.onchange = searchOnSelect;
searchForm.fulltext.parentNode.insertBefore(searchSel, searchHidden);
//hide normal Search button if not IE
if (is_opera
[ред.] Кількість статей
Джерело: ru:Участник:Morpheios Melas/articlecount.js
Скрипт розміщує на логотипі Вікіпедії живий лічильник статей. Оновлюється що 10 секунд.
var basecount=195133; var basetime=new Date(Date.UTC(2007, 7, 14, 12, 31, 0, 0)) var curcount=0; var updrest=10;
function LiveCountReq() {
req.onreadystatechange = processCount;
req.open("GET", "http://uk.wikipedia.org/wiki/Special:Statistics?action=raw&randomseed="+Math.floor(Math.random()*10000000), true);
req.send(null);
}
function processCount() {
if (req.readyState == 4) {
if (req.status == 200) {
curcount=req.responseText.substring(req.responseText.indexOf('good=',1)+5,
req.responseText.indexOf(';views=',1));
var curtime=new Date;
var progn=(250000-basecount)*
(curtime.valueOf()-basetime.valueOf())/
(curcount-basecount)+basetime.valueOf();
var progd=new Date(progn);
document.getElementById('articlecount').innerHTML=curcount;
var secs=Math.floor((progd-curtime)/1000)
var days=Math.floor(secs/24/60/60);
var hours=Math.floor((secs-days*24*60*60)/60/60);
var mins=Math.floor((secs-days*24*60*60-hours*60*60)/60);
var lsecs=Math.floor(secs-days*24*60*60-hours*60*60-mins*60);
document.getElementById('articlecountdown').innerHTML=Math.floor(days/10)++days%10+'d '+Math.floor(hours/10)+hours%10+':'+Math.floor(mins/10)+mins%10+':'+Math.floor(lsecs/10)+lsecs%10;
} else {
document.getElementById('articlecount').innerHTML='??????';
document.getElementById('articlecountdown').innerHTML='??????';
}
updrest-=1;
if (updrest>0) {
setTimeout('LiveCountReq();',60000);
} else {
document.getElementById('articlecount').innerHTML='??????';
document.getElementById('articlecountdown').innerHTML='??????';
}
}
}
function updateLastMouse(e) {
if (updrest<1) {
updrest=10;
setTimeout('LiveCountReq();',1000);
} else {
updrest=10;
}
}
function addLiveCount()
{
req = null;
if (window.XMLHttpRequest) {
try {
req = new XMLHttpRequest();
} catch (e){}
} else if (window.ActiveXObject) {
try {
req = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e){
try {
req = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){}
}
}
if (req) {
document.getElementById('p-logo').innerHTML='<a style="background-image: url(http://upload.wikimedia.org/wikipedia/uk/b/bc/Wiki.png);" href="/Головна_стаття" title="Перейти до Головної сторінки [z]" accesskey="z"></a>
if (window.addEventListener)
window.addEventListener("mousemove", updateLastMouse, false);
else
if (window.attachEvent)
window.attachEvent("mousemove", updateLastMouse);
LiveCountReq();
}
}
addOnloadHook(addLiveCount);
[ред.] Покращений вигляд журналів
Джерело: ru:Участник:Alex Smotrov/logpage.js
[ред.] Текст скрипта
В український Вікіпедії скрипт працює неправильно.
[ред.] Виділення підписів адміністраторів
importScript('Користувач:Ahonc/markadmins.js')
Наприклад, Oleksii0 стане Oleksii0(A), а Yakudza — Yakudza(B)

