Все мы знаем, какой пиздец сейчас происходит с Украиной и одной известной вам страной-победительницей-фашизма. Если вы хотите почитать об этом, помочь актуализировать информацию или высказать свое мнение — можете сделать это в статье Война в Украине и в обсуждении.
MediaWiki:Common.js
Материал из Urbanculture
Версия от 00:56, 13 ноября 2011; Munhgauzen (обсуждение | вклад)
Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
- Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
- Opera: Выберите очистку кэша в меню Инструменты → Настройки
/** Misc common defines ****/ /** Frame *** function frame_resize(){ document.getElementById('frame').width='100%'; document.getElementById('frame').height=document.getElementById('frame').contentWindow.document.body.scrollHeight; } */ /* Неоднократно нужные проверки: */ /*** _is_editpage - я на странице редактирования? */ /*** _is_editable - у меня есть права на правку текущей страницы? */ /*** _is_autoconfirmed - я - илита лурки? */ var _is_editpage = wgAction == 'edit' || wgAction == 'submit'; var _is_editable = (function isEditable() { var restrict = (typeof wgRestrictionEdit !== 'undefined'?wgRestrictionEdit:wgRestrictionCreate); if (restrict.length < 1) return true; if (!wgUserGroups) return false; for(var g=0; g<wgUserGroups.length; g++) if ($.inArray(wgUserGroups[g], restrict)!=-1) return true; return false; })(); var _is_autoconfirmed = wgUserGroups && ($.inArray('autoconfirmed', wgUserGroups) != -1); var f5s=('localStorage' in window) && window['localStorage']!==null ? window['localStorage'] : false; /** /Misc common defines ****/ /** Processing queue ****/ /**** Queue.addOnce(function(){}, condition = true) - adds function to run once on page load */ /**** Queue.addEachFragment(function(scope){}, condtion = true) - adds function to run on page load AND on each AJAX loaded fragment */ /**** Function must take a single parameter - currently processed fragment */ /**** Both functions take optional second parameter - if false, function won't be run on current page */ /**** Queue.runOnce - self-descriptive, shouldn't be run directly */ /**** Queue.runEachFragment(scope) - scope can be an html element or array of elements */ var Queue = { _once: [], _each: [], addOnce: function(f, pre) { if (pre !== false) this._once.push(f); return this; }, addEachFragment: function(f, pre) { if (pre !== false) this._each.push(f); return this; }, runOnce: function() { $.each(this._once, function(i, f) { f() }) return this; }, runEachFragment: function(sc) { var que = this._each, sc = sc || document; $(sc).each(function(x, e) { $.each(que, function(i, f) { f(e) }) }); return this; } }; addOnloadHook(function() { Queue.runOnce().runEachFragment(document); }) /** /Processing queue ****/ /** Collapsible tables ****/ /* Description: Allows tables to be collapsed, showing only the header. */ /* Authors: rewrite by [[User:Tachikoma]] based on [[Wikipedia:NavFrame]] */ // Используется в коллапсерах var autoCollapse = 2; var collapseCaption = "скрыть"; var expandCaption = "показать"; function createTableCollapsers(scope) { function collapseTable(tbl) { var rows = $('tr', tbl).not('tr:first') var btn = $('a.collapselink', tbl) if (btn.text() == collapseCaption) { rows.hide(); btn.text(expandCaption) } else { rows.show(); btn.text(collapseCaption) } } var autocollapse_count = 0; $('table.collapsible', scope).each(function(i, e) { var header = $('tr th:first', e) if (!header.size()) return; autocollapse_count++; var collapselink = $('<a href="#" class="collapselink"/>').text(collapseCaption) collapselink.click(function(ev) { ev.preventDefault(); collapseTable(e) }) var collapsebutton = $('<span style="float:right; text-align:right; width:6em; font-weight:normal">[<a></a>]</span>') $('a', collapsebutton).replaceWith(collapselink) header.prepend(collapsebutton) if ($(e).hasClass('collapsed') || ( autocollapse_count >= autoCollapse && $(e).hasClass('autocollapsible'))) collapseTable(e) }); }; Queue.addEachFragment( createTableCollapsers ); /** /Collapsible tables ****/ /** Dynamic Navigation Bars (experimental) ************************************* * * Description: See [[Wikipedia:NavFrame]]. * Authors: rewrite by [[User:Tachikoma]] based on [[Wikipedia:NavFrame]] */ function createHiderButtons(scope) { // set up the words in your language var NavigationBarHide = '[' + collapseCaption + ']'; var NavigationBarShow = '[' + expandCaption + ']'; $('div.NavFrame', scope).each(function(i, e) { var _ = $(this), head = _.children('.NavHead') if(!head.size()) return; var shown = true; var NavToggle = $('<a href="#"></a>').text(NavigationBarHide) function toggle() { shown = !shown; if(shown) { _.children('.NavContent').show(); _.children('.NavPic').show(); NavToggle.text(NavigationBarHide) } else { _.children('.NavContent').hide(); _.children('.NavPic').hide(); NavToggle.text(NavigationBarShow) }; } NavToggle.click(function(ev) { ev.preventDefault(); toggle(); }) head.append(NavToggle); if($(this).hasClass('NavHideByDefault')) toggle(); }) } Queue.addEachFragment( createHiderButtons ); /** /Dynamic Navigation Bars ****/ /** NSFW Gallery Items ****/ /* Description: Hides images with |NSFW in description from galleries */ /* Authors: [[User:Anotubus]], [[User:Obvious]] */ function processNSFWGalleryItems(scope) { $('div.gallerytext', scope).each(function(i, el) { var descP = $('p:first', el) if (!descP.size()) return; var desc = descP.html() if (desc.match(/(?:\|NSFW|NSFW\||^NSFW\s$)/i)) { descP.html(desc.replace(/(.*)(?:\|NSFW|NSFW\||^NSFW\s$)(.*)/i,'$1$2')); var NSFWFrame = $(el).parent().find('div:first') NSFWFrame.children().css('visibility', 'hidden') NSFWFrame.css({'background':'url(/skins/common/images/nsfw.png) no-repeat center center', 'cursor':'pointer'}) NSFWFrame.click(function(e) { NSFWFrame.css({'background':'none', 'cursor':'default'}) NSFWFrame.children().css('visibility', 'visible') }) } }) }; Queue.addEachFragment(processNSFWGalleryItems); /** /NSFW Gallery Items ****/ /** 0sectionedit ****/ function Sect0Edit(){ var editlink = $("#ca-edit a") if (!editlink.size()) return; var spansect0span = $('<span class="editsection">[<a>править</a>]</span>') $('a', spansect0span).attr('href', editlink.attr('href')+"§ion=0") $(".firstHeading").append(spansect0span) }; Queue.addOnce(Sect0Edit, wgIsArticle == true && skin!='impetus') /** /0sectionedit ****/ /** Morph LM Edition ************************************* * * Description: слайдер скрытого контента * Stolen^W Made by: hikki-zadrot, Tachikoma, Anotubus */ function createMorphObjects(scope) { $('.morphcontainer', scope).each(function() { var _this = this, all = $('*', this) var containers = $('* .morphcontainer', this); containers.each(function() { all = all.not($('*', this)) }) var morphlinks = all.filter('.morphlink') var morphcontents = all.filter('.morphcontent') var morphlink_hilight = $(_this).children('.morphlink_hilight').size()? $(_this).children('.morphlink_hilight').eq(0).attr('style'):'color:blue; text-decoration:underline; cursor: pointer;', morphlink_default = $(_this).children('.morphlink_default').size()? $(_this).children('.morphlink_default').eq(0).attr('style'):'color:blue; cursor: pointer;', selmethod = $(_this).hasClass('hover') ? 'mouseover' : 'click', currentsel = 0; $(morphcontents).hide(); $(_this).children('.morphlink_hilight, .morphlink_default').remove(); $(morphlinks).attr('style', morphlink_default).each(function(i, e) { var assocmorphcontents = $(''); if ($(_this).hasClass('manualsort')) { var morphlinkers = $(e).attr('class').replace(/(.*)morphlink(.*)/, '$1$2').match(/morph\S+/g); for (x in morphlinkers) assocmorphcontents = $(assocmorphcontents).add($(morphcontents).filter('.' + morphlinkers[x])); } else { assocmorphcontents = $(assocmorphcontents).add($(morphcontents).eq(i)); } $(e).bind(selmethod, function() { $(morphlinks).attr('style', morphlink_default); $(e).attr('style', morphlink_hilight); $(morphcontents).hide(); $(assocmorphcontents).show(); currentsel = i; }); }); all.filter('.morphprev, .morphnext').click(function() { var totrigger = $(this).hasClass('morphprev') ? (currentsel - 1) : ((currentsel + 1)); if (totrigger < 0) totrigger = morphlinks.size() - 1; if (totrigger > morphlinks.size() - 1) totrigger = 0; $(morphlinks).eq(totrigger).triggerHandler(selmethod); }); $(morphlinks).eq(currentsel).triggerHandler(selmethod); }); } Queue.addEachFragment(createMorphObjects); /** /Morph LM Edition ****/ /** Tabbed Edittools ************************************* * * Description: Делает из таблицы edittools страницы с табами. * Made by: Tachikoma, Anotubus */ (function(){ var TabSwitchTimer = null var TabSwitchGlobState = 0 var MyEditTools = { updateFirstVisible: function() { $('.first').removeClass('first'); $("#editpage-specialchars table tr:visible").eq(0).addClass('first') }, setAll: function(t) { var rows = $('#editpage-specialchars table tr'), sw = $("#switcher div") if (t) { var cl = t>0?"visible":"hidden"; rows.each(function(i) { if (!TabSwitchGlobState) $(this).data('prevstate', this.className); this.className = cl }) var cl = t>0?"fixed":""; sw.each(function(i) { if (!TabSwitchGlobState) $(this).data('prevstate', this.className); this.className = cl }) } else { rows.each(function(i) { this.className = $(this).data('prevstate') || '' }) sw.each(function(i) { this.className = $(this).data('prevstate') || '' }) } TabSwitchGlobState = t $('#pageShowAll').attr('class', t > 0 ? 'swon' : 'swoff'); $('#pageHideAll').attr('class', t < 0 ? 'swon' : 'swoff') MyEditTools.updateFirstVisible() }, clearTimer: function() { if (TabSwitchTimer) { window.clearTimeout(TabSwitchTimer); TabSwitchTimer = null } }, clearSelected: function() { $('#switcher div.selected').removeClass('selected') $('#editpage-specialchars table tr.selected').removeClass('visible').addClass('hidden').removeClass('selected') }, init: function() { if (!$('#editpage-specialchars').size()) return $('#editpage-specialchars').css('border', "none") //var switcher = $('<div id="switcher"/>').insertBefore($("#editpage-specialchars table")) var switcher = $('<caption style="text-align:left" id="switcher"/>').prependTo($("#editpage-specialchars table")); var rows = $("#editpage-specialchars table tr") rows.each(function(i) { var id = "page"+i,td = $('td:first', this) var row = $(this).attr('id', 'r'+id).addClass(i == 0 ? "visible" : "hidden").toggleClass("first", !i).toggleClass("selected",!i) var sw = $('<div/>') .attr("id", "sw"+id).html((td.html() || '').replace(/:/, '')) .hover(function(e) { MyEditTools.clearTimer() if (sw.hasClass("fixed")) return TabSwitchTimer = window.setTimeout(function() { MyEditTools.clearSelected() sw.addClass('selected'); row.addClass('selected').removeClass('hidden').addClass('visible') MyEditTools.updateFirstVisible() }, 50) }, MyEditTools.clearTimer) .click(function(e){ MyEditTools.clearTimer() if (!sw.hasClass('fixed')) { sw.removeClass("selected").addClass("fixed") row.removeClass("selected").removeClass("hidden").addClass("visible") } else { MyEditTools.clearSelected() sw.removeClass("fixed").addClass("selected") } MyEditTools.updateFirstVisible() }) .appendTo(switcher) .toggleClass("selected", !i) }) with(switcher){ append($('<div id="pageHideAll" class="swoff">Hide All</div>').click(function() { MyEditTools.clearTimer(); MyEditTools.setAll(TabSwitchGlobState<0?0:-1) })) append($('<div id="pageShowAll" class="swoff">Show All</div>').click(function() { MyEditTools.clearTimer(); MyEditTools.setAll(TabSwitchGlobState>0?0:1) })) } $('#toolbar').before($('.mw-editTools')) } } Queue.addOnce(MyEditTools.init); })(); /** /Tabbed Edittools ****/ /** Ref tooltips****************************************** * * Description: Replace references with JQuery-based tooltips * Made by: Tachikoma */ Queue.addOnce(function() { $(window).click(function(e) { if (!($(e.target).hasClass('areference') || $(e.target).parents().andSelf().hasClass('tooltip'))) { $('.tooltip').hide(250); $('.curreference').removeClass('curreference') } }) }).addEachFragment(function(scope) { var refs = $('ol.references', scope) if (!refs.size()) return; refs.before($('<a href="#">[показать примечания]</a>').click(function(e) { e.preventDefault(); refs.toggle() } )).hide() $('.reference a', scope).click(function(e) { e.preventDefault(); var x = $(this), iscurrent = x.hasClass('curreference'), i = $('.tooltip').hide(250) $('.curreference').removeClass('curreference'); if (iscurrent) return; var par = x.parent(), o = par.offset(), l = o.left, t = o.top+13 var b = $('body'), mh = b.height(), mw = b.width() var c=$(x.attr('href'), refs).clone().find('a:first').remove().end().html() x.addClass('areference').addClass('curreference') if (!i.size()) i = $('<div/>').addClass('tooltip') i.appendTo(b).queue(function() { i.empty().append(c).css({ 'left': l-((l+i.width() >= mw) && i.width()), 'top': t-((t+i.height() >= mh) && (i.height()+26)) }).dequeue() }).show(250) }) }) /** /Ref tooltips****************************************/ /** Linkchecker **********************************************************/ function linkchecker(scope) { $('.linkchecker', scope).each(function(i, e) { var lc_if = $(".linkcheckerif a", this) var lc_then = $(".linkcheckerthen", this) var lc_else = $(".linkcheckerelse", this) if (lc_if.size() && lc_then.size()) { if (lc_if.hasClass('new')) lc_then.hide(); else lc_else.hide(); lc_if.parent().hide() } else $(this).hide() }) }; Queue.addEachFragment(linkchecker); /** /Linkchecker ****/ /** ShortDiffURL ****/ function shortdiffurl() { if ($("#ca-history").size() > 0 ){ $("#ca-history").after('<li><a href="'+location.href.replace(/^(.+\?).*&?(diff=(?:\d+|prev|next|curr)).*?(&oldid=\d+)?.*$/,"$1$2$3")+'" title="Короткая ссылка на дифф">url</a></li>'); } }; Queue.addOnce(shortdiffurl, location.href.indexOf("diff=") != -1) /** /ShortDiffURL ****/ /** Needed page **/ Queue.addOnce(function() { $('.mw-redirect').addClass('neededpagerdrcts'); $('ul').addClass('neededpagelist'); }, wgPageName == 'Urbanculture:Нужные_статьи') /** /Needed page **/ /** Gay-roller **/ Queue.addOnce(function() { if (Math.random() > 0.5) { $("img[src='/images/6/68/S%D0%BEtilas_test.jpg']").attr('src', '/images/5/51/Sotilas_test.jpg') } else { $("img[src='/images/5/51/Sotilas_test.jpg']").attr('src', '/images/6/68/S%D0%BEtilas_test.jpg') } }, wgPageName == 'Финский_армейский_тест') /** /Gay-roller **/ /** Summary buttons ************************************* */ function insertSummary(text) { var sum = document.getElementById('wpSummary') if (sum.value.indexOf(text) != -1) return if (sum.value.match(/[^,; \/]$/)) sum.value += ',' if (sum.value.match(/[^ ]$/)) sum.value += ' ' sum.value += text } function addSumButton(name, text, title) { var btn = document.createElement('a') btn.appendChild(document.createTextNode(name)) btn.title = title || text btn.onclick = function(){insertSummary(text)} document.getElementById('userSummaryButtonsA').appendChild(btn) } function SummaryButtons(){ var sum = document.getElementById('wpSummary') if (!sum || (sum.form.wpSection && sum.form.wpSection.value == 'new')) return var sp = document.createElement('span'); sp.id = 'userSummaryButtonsA' sum.parentNode.insertBefore(sp, sum.nextSibling) sum.parentNode.insertBefore(document.createElement('br'), sum.nextSibling) addSumButton('викиф.','викификация','Тыц на кнопочку') addSumButton('оформл.','оформление','Оформление отремонтировано') addSumButton('стиль','стиль','Поправлен стиль статей, текстов и постов') addSumButton('орфогр.','орфография','Поправлена орфографика и пунктуация') addSumButton('пруфлинк','пруфлинк','Добавлены пруфлинки') addSumButton('кат.','категория','Исправлена категория') addSumButton('шаб.','шаблон','Гы! Шаблончег!') addSumButton('доп.','дополнение','Добавлены новые свѣденiя') addSumButton('картинка','картинка','Пруфпик, десу') addSumButton('обнов.','упдейт','Обновлены устаревшие данные') addSumButton('shitty','+{{говно}}','Ваша статья говно! Я гарантирую это!') addSumButton('moar','+{{moar}}','Требуются пруфлинки, пруфпики и косплееры-лесбиянки') } Queue.addOnce(SummaryButtons, _is_editpage); /** /Summary buttons ****/ /** Wikificator ************************************* */ if (wgAction == "edit" || wgAction == "submit" || wgPageName == "Special:Upload") //scripts specific to editing pages { importScriptURI("/skins/common/wikificator.js"); } function wikification() { $('<button id="Wikifybutton" onclick="Wikify();" type="button">Викифицировать</button>').insertBefore($('#wpSave')); if(wgNamespaceNumber==-1 || wgNamespaceNumber==102) {$('#Wikifybutton').attr('disabled','disabled');} $('#editpage-copywarn').insertAfter('.editOptions'); } Queue.addOnce(wikification); /** /Wikificator ************************************* */ /** Image Categorizer ************************************* */ /** Author: Anotubus */ if ( (wgCanonicalNamespace == 'File' || wgNamespaceNumber == 6) && _is_autoconfirmed && _is_editable ) importScriptURI("/skins/common/imgcat.js"); /** Image Categorizer ************************************* */ /** Section menus ****************************************** */ /* Authors: [[User:Tachikoma]], [[User:T_kns]], [[User:Мопец Ципельман]] */ // SectionToolbar.addButton(function(elt, out) { var button = $(elt).find('something'); $(out).doAnythingWith(button); }) // SectionToolbar.appendButton(function(elt) { var button = $(elt).find('something'); return button; } var SectionToolbar = { _buttons: [], addButton: function(fn) { this._buttons.push(fn); return this }, appendButton: function(fn) { this._buttons.push(function(elt, out) { $(out).append(fn(elt)) }); return this }, _run: function(elt, out) { var btn = this._buttons; for(var i in btn) btn[i](elt, out) } } function addSectionMenus() { if (!wgIsArticle) return; var editimg = '<img src="/skins/Impetus/pencil.png" width="16" height="16" alt="Править" title="Править"/>' var viewimg = '<img src="/skins/Impetus/magnifier.png" width="16" height="16" alt="Просмотр" title="Просмотр"/>' var new_header = $('<h1 class="firstHeading" id="firstHeading"></h1>') var headline = $('<span></span>').text($('#firstHeading').text()).appendTo(new_header) var toolbar = $('<div class="showmenu"/>').appendTo(new_header).hide() var toolsline = $('<div class="toolsline"/>') var headtext = $('<span class="headtext"/>').html(headline.html()) var div = $('<div class="redact"/>'), link = $('<a/>').attr('href', wgScript+'?'+$.param({ title: wgPageName, action: 'edit', section: 0 })) $('.firstHeading').replaceWith(new_header); toolbar.append(toolsline.append(headtext).append(div.append(link.append(_is_editable ? editimg : viewimg)))) $(toolbar).css({'position': 'fixed', 'left':0, 'top':0}) $(new_header).hover( function() { var pos = headline.offset(); toolbar.show().offset({left:pos.left-6, top:pos.top-6}) }, function() { toolbar.hide() }) $(':header:has(.mw-headline)').each(function(i, e) { var new_header = $(e).clone(true); new_header.children().remove(':not(.mw-headline)') var headline = $('.mw-headline', new_header) var toolbar = $('<div class="showmenu"/>').appendTo(new_header).hide() var toolsline = $('<div class="toolsline"/>') var headtext = $('<span class="headtext"/>').html(headline.html()) toolsline.append(headtext) var original_link = $('.editsection a',e) if (original_link.size()) { var div = $('<div class="redact"/>'), link = $('<a/>').attr('href', $('.editsection a',e).attr('href')) toolsline.append(div.append(link.append(original_link.hasClass('viewlink')? viewimg : editimg))) } toolbar.append(toolsline) var buttons = $('<div class="buttons-line"/>').appendTo(toolsline) SectionToolbar._run(e, toolsline); $(e).replaceWith(new_header); toolbar.css({'position': 'fixed', 'left':0, 'top':0}).attr('rel','noClick'); var timer; var interval; $(new_header).hover( function() { if(toolbar.attr('rel') == 'hoverout') { clearInterval(interval); toolbar.attr('rel','hoverin');} timer = setTimeout(function(){ var pos = headline.offset(); toolbar.show().offset({left:pos.left-6, top:pos.top-6}); }, 300); }, function() { clearTimeout(timer); toolbar.attr('rel','hoverout'); interval = setInterval(function(){ if(toolbar.attr('rel') == 'hoverout') {clearInterval(interval); toolbar.hide();} else {toolbar.attr('rel','hoverout');}}, 1000); } ) }); $(window).scroll(function(){$('.showmenu').hide()}) } SectionToolbar.addButton(function(elt, out) { var div = $('<div class="shorturl" />'), input = $('<input class="shortlink" type="text" value="http://tinyurl.com/..." readonly="readonly" />').css('color', '#bbb').mousedown(function(e) {if(e.which == 3) {$(this).parent().parent().parent('.showmenu').attr('rel','rightClick');}}).hide(), url_out = $('<a href="#"><img src="/skins/Impetus/url_out.png" width="16" height="16" alt="TinyURL" title="TinyURL"></a>'), url_in = $('<a href="#"><img src="/skins/Impetus/url_in.png" width="16" height="16" alt="Внутренняя ссылка" title="Внутренняя ссылка"></a>') function gentlyEncode(string) { return ( encodeURIComponent ? encodeURIComponent(string).replace(/%20(\D)?/g, "+$1").replace(/'/g, escape("'")) : escape(string).replace(/\+/g, "%2B").replace(/%20/g, "+") ); } var href = /^([^#]+)#?.*$/.exec(location.href)[1]+'#'+$('.mw-headline',elt).attr('id') function getTinyLink(evt) { evt.preventDefault() $.ajax({ url:"http://json-tinyurl.appspot.com/?callback=?&url=" + gentlyEncode(href), dataType: 'json', success: function(data) { var tinyurl = data.tinyurl; input.val(tinyurl).css('color', 'black').show().select() url_out.click(function(e) { e.preventDefault(); input.val(tinyurl).show().select() }) url_out.attr('href', tinyurl) }, error: function() { url_out.one('click', getTinyLink); input.val("http://tinyurl.com/... :(((").show() } }) } url_out.one('click', getTinyLink) var Url={decode:function(string){return this._utf8_decode(unescape(string));},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}return string;}} url_in.click(function(e) { e.preventDefault() input.val('[['+wgPageName.replace(/_/g, ' ')+'#'+Url.decode( $('.mw-headline',elt).attr('id').replace(/\.([0-9A-F]{2})/g, '%$1').replace(/_/g, ' ') )+']]').css('color', 'black').show().select() }) url_in.attr('href', href) input.select().focus(function(e){ this.select() }) $('.buttons-line', out).append(url_out).append(url_in) $(out).append(div.append(input)) }) Queue.addOnce(addSectionMenus, skin=='impetus'); /** /Section menus ***************************************** */ /** Autochange skin ***************************************** */ function addcurskintolinks() { $('a:not([href*="useskin"])').each(function(i){ var hd = /^([^\#]*)(\#?.*)$/.exec($(this).attr('href')); var h = hd[1]; if (/^(?:\/|http:\/\/urbanculture\.in)/.test(h)) { h += (h.indexOf("?") == -1)?'?':'&'; h += 'useskin=' + skin.toLowerCase(); $(this).attr('href',h+hd[2]); } }); } Queue.addOnce(addcurskintolinks, location.href.indexOf("useskin=") > 0) /** /Autochange skin ***************************************** */ /** collapsibledivs *****/ ;(function(){ function fromStorage() { var items = {}; var saved = f5s && typeof localStorage.clpsd !== 'undefined' && localStorage.clpsd != null && localStorage.clpsd; if (saved) { if (saved.indexOf(':')!=-1) { saved = saved.replace(/(.+?):\d+/g, '$1'); localStorage.clpsd = saved; } $.each(saved.split('|'), function(i, e) { items[e] = true }) } return items; } function toStorage(items) { var t = []; $.each(items, function(i, e) { if (e) t.push(i); }) t = t.join('|').replace(/(?:^[\s\|]*|\|{2,}|[\s\|]*$)/g,'') if (t!='') localStorage.clpsd = t; else delete localStorage.clpsd; } var saved = fromStorage(); function togglest(th) { saved[th.attr('id')] = !(saved[th.attr('id')] === true); th.children('.pBody').slideToggle(); th.children('h5').attr('class',(saved[th.attr('id')]===true)?'portlet-title-minimized':'portlet-title-maximized'); toStorage(saved); } function maxiorminiicon(cur) { return (cur)?'/skins/common/images/Maximize.png':'/skins/common/images/Minimize.png'; } function maxiorminiclass(cur) { return (cur)?'maximinibutton maximinibutton-minimized':'maximinibutton maximinibutton-maximized'; } function minimizediv(o, tdv, save) { tdv.slideToggle('fast'); var itval = o.attr('src').indexOf('Maximize')==-1; o.attr('src',maxiorminiicon(itval)); o.attr('class',maxiorminiclass(itval)); if (save && f5s) { var id1 = tdv.attr('id').replace(/\:/g,' '); saved[id1] = itval; toStorage(saved) } } Queue.addOnce(function() { $('div.collapsiblediv').each(function(i) { var _this = $(this), id = _this.attr('id'); var save = !(id === undefined || id.length == 0) if(save) id = id.replace(/\:/g,' '); var itval = save && saved && saved[id] === true; var img = $('<img alt="_"></img>').attr('src', maxiorminiicon(itval)).attr('class',maxiorminiclass(itval)).click(function(){minimizediv(img, _this, save); return false;}) $(this).before($('<div class="maximinipanel"></div>').append(img)); if (itval) $(this).hide(); }); }) Queue.addOnce(function() { $('div.portlet').each(function() { if($.inArray($(this).attr('id'),['p-categories','p-navigation','p-tb','p-lang','p-autor']) != -1) { var _this = $(this); $('h5',this).css('cursor','pointer').click(function(){togglest(_this);return false;}); if(saved[$(this).attr('id')] === true) {$('.pBody',this).hide();$('h5',this).attr('class','portlet-title-minimized');} else {$('h5',this).attr('class','portlet-title-maximized');} } }); },skin != 'impetusmobile'); })() /** /collapsibledivs ****/ /* empty pagename ****/ Queue.addOnce(function() { $('#bodySearch').submit(function(e) { var wrap = $(this).children(".bodySearchWrap") if(/^\s*$/.test(wrap.children('#bodySearchInput').val())) { if(wrap.children('.pagenameneeded').size() == 0) { wrap.append($('<p class="pagenameneeded">Введите имя статьи</p>').delay(1500).fadeOut('slow',function() {$(this).remove();})); } return false; } }); }, wgPageName == "Urbanculture:Новая_статья"); /* /empty pagename ****/ /* b-yauser ****/ Queue.addEachFragment(function(sc) { $('.b-yauser a', sc).each(function(i) { $(this).html($(this).html().replace(/^([^<])/,'<b>$1</b>')); }); }); /* /b-yauser ****/ /** Ajaxed **** * * Description: динамическая подгрузка произвольных страниц * Authors: [[User:Tachikoma]], [[User:T_kns]] */ Queue.addEachFragment(function(scope) { var placeholder = $('<div style="text-align:center;"><img src="/skins/common/images/ajax-loader.gif" alt="l" /></div>') $(".ajaxed", scope).each(function(i, links){ var contcl = /\bajaxtarget(\S+?)(?:\s|$)/.exec(this.className) if(!contcl) return; contcl[1] = contcl[1].replace(/(:|\.|\\|\/)/g,'\\$1'); var lastshown, add_hider = false; if($(this).hasClass('ajax_addhider')) { add_hider = $(".ajax_addhider.ajaxhide"+contcl[1], scope).eq(0); if(!add_hider.length) add_hider = false; } var target = $(".ajaxcont"+contcl[1], scope).eq(0) function show(cont, tgt) { if(lastshown == cont[0]) { if(!tgt.is(':visible')) tgt.show(); return }; lastshown = cont[0] var d = cont.data('remote'); if(!d) return; tgt.empty().append( d.clone() ) if(add_hider) tgt.append( $('<div style="clear:both;"/>').append( add_hider.clone().click(function(e) { e.preventDefault(); target.toggle(); if ( window.pageYOffset > ($(links).offset().top+$(links).height())) $('html,body').animate({scrollTop:$(links).offset().top}, 350); })) ); Queue.runEachFragment(tgt); tgt.show() } $("a:not(.external):not(.new)", this).addClass('ajaxlink').one('click', function(e) { $('.ajaxinclude'+contcl[1]).css("display","block"); e.preventDefault() var $this = $(this) $this.data('remote', placeholder.clone()) target.empty().append(placeholder.clone()); $.ajax({ url:'/'+wgScriptPath+'/api.php'+'?action=parse&format=json&redirects&prop=text&page='+encodeURIComponent($(this).attr('title')), dataType: 'json', success: function(data) { var d = $(data.parse.text["*"]).wrap('<p/>'), inc; inc = $('.ajaxinclude'+contcl[1], d); inc = inc.length ? inc : $('.ajaxinclude', d) if(inc.length) d = inc; $this.data('remote', d) show($this, target) } }) $this.click(function(e){ e.preventDefault(); show($this, target); }) }) $(".ajaxhide"+contcl[1], scope).click(function(e) { e.preventDefault(); target.toggle(); }) }) }); /** /Ajaxed ****/ /* prettyPhoto ****/ Queue.addOnce(function() { var wpisid = (wgVersion=='1.17')?'#wpImageSize':'#mw-input-thumbsize'; $(wpisid).parent().parent().parent().append('<tr class="mw-htmlform-field-HTMLSelectField"><td class="mw-label"></td><td class="mw-input"><input type="checkbox" id="mw-gallery-slide-show"> <label for="mw-gallery-slide-show">Использовать улучшенную галерею и предпросмотр миниатюр (требуется JavaScript)</label></td></tr>'); if (localStorage.getItem('gallery_slideshow') != 'false') { $('#mw-gallery-slide-show').prop("checked", true); }; var wpsbtnid = (wgVersion=='1.17')?'input.btnSavePrefs':'#prefcontrol'; $(wpsbtnid).click( function () { if ( $('#mw-gallery-slide-show:checked').size() > 0 ) { localStorage.setItem('gallery_slideshow', 'true'); } else { localStorage.setItem('gallery_slideshow', 'false'); }; }); }, f5s && wgCanonicalSpecialPageName == "Preferences"); function gallerySlideshow(scope) { $.ajax({ url:'/skins/common/jquery.prettyPhoto.js', dataType: 'script', cache:true, success: function() { var usecoralcdn = false; var imagepath = '/'+(usecoralcdn?'.nyud.net':'')+'/images/'; $('a.internal[href^="/images/"]', scope).each(function() { if(/\.(?:jpe?g|png|gif|svg)$/i.test($(this).attr('href'))) { $(this) .attr({'rel':'prettyPhoto','alt':$(this).attr('href')}) .addClass('mediafile') .data('htmlDesc',(/^(?:Media|Медиа):/i.test($(this).text()) || $(this).text() == $(this).attr('title'))?'':$(this).html()); } }); $('div.thumbinner > a.image > img[src^="/images/"]', scope).each(function() { var src; if($(this).parent('a').hasClass('image') && (src=/^\/images(?:\/thumb)?\/(.\/..\/[^\/]+)/.exec($(this).attr('src'))[1])) { var descr; title = ((descr=$(this).parent().parent().children('div.thumbcaption')).size()>0?descr.text().replace(/\s*(?:\|NSFW|NSFW\||^NSFW\s$|\[\d+\])\s*/g,''):''); desc = descr.clone(); desc.children('div.magnify,sup.reference').remove(); $(this).parent('a') .data('htmlDesc',desc.html()) .attr({ 'title':title, 'alt':imagepath+src, 'rel':'prettyPhoto' }); } }); $('table.gallery, div.morphfileimages', scope).each(function(galnum) { $('a.image > img[src^="/images/"]',this).each(function() { var src; var descr; var title; if($(this).parent('a').hasClass('image') && (src=/^\/images(?:\/thumb)?\/(.\/..\/[^\/]+)/.exec($(this).attr('src'))[1]) && (title = ((descr =$(this).closest('div.gallerybox, div.morphcontent').children('div.gallerytext')).children('p').size()>0?descr.children('p').text().replace(/\s*(?:\|NSFW|NSFW\||^NSFW\s$|\[\d+\])\s*/g,''):''))!==false) { desc = descr.children('p').clone(); desc.children('sup.reference').remove(); descr.prepend('<div class="magnify"><a href="'+$(this).parent('a').attr('href')+'" class="internal" title="Увеличить"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt=""></a></div>') $(this).parent('a') .data('htmlDesc',desc.html()) .attr({ 'title':title, 'alt':imagepath+src, 'rel':'prettyPhoto[gallery_'+galnum+']' }); } }); }); $("a[rel^='prettyPhoto']", scope).prettyPhoto({ modal:false, deeplinking:false, animation_speed: 'fast', opacity:0, gallery_markup:'', social_tools:false, ie6_fallback: false, show_title:false, changepicturecallback: function(){ var desc = (arguments[1]=='prettyPhoto')?arguments[0].data('htmlDesc'):$('a.image[rel="'+arguments[1].replace(/([\]\[])/g,'\\$1')+'"]',scope).eq(arguments[3]).data('htmlDesc'); var fname = decodeURIComponent(/images\/.\/..\/(.+)$/.exec($('#fullResImage').attr('src'))[1]) var edesc = $('<div class="imagepagelink"/>') .append($('<a/>') .attr('href','/'+'/Файл:'+fname) .text(/^(.{0,30})/ .exec(fname)[1] // .replace(/\.([^\.]+)$/,'') .replace(/_/g,' '))); $('.pp_description') .html($('.pp_description').is(':hidden')?'':desc) .append(edesc).show(); if($('#fullResImage').width() < 145) { $('.pp_pic_holder,.pp_default,.ppt,.pp_hoverContainer,.pp_details') .css('width','+=200'); // jQuery 1.6 } } }); } }); } Queue.addEachFragment( gallerySlideshow, f5s && localStorage.getItem('gallery_slideshow') != 'false' ); /* /prettyPhoto ****/ /* By ****/ Queue.addOnce(function() { $('body').addClass('ns-talk'); },wgPageName == "Urbanculture:Вниманию_участников"); /* /By ****/ /* Spoilers ****/ Queue.addEachFragment(function(scope) { $('.spoiler',scope).click(function() { $(this).toggleClass('spoilered'); }); }); /* /Spoilers ****/ /* new gallerytemplate ****/ function newgallerytemplate(scope) { $('table.gallerytemplate table.gallery > tbody,table.gallerytemplate table.videogallery > tbody',scope).each(function() { var params = { 'min_visible_rows':1, 'max_visible_rows':2, 'collapsible':true, 'expand_caption':'Показать', 'collapse_caption':'Скрыть', 'rows_in_table':$('> tr',this).size(), 'collapsible_rows':{} } /******************************************* *******************************************/ if($(this).parent().parent('td').size() > 0 && ($(this).parent().parent('td').attr('class') == 'gallerytemplate-preview' || $(this).parent().parent('td').attr('class') == 'gallerytemplate-content')) { var paramblock = $(this).parent().parent().parent().parent().children('tr[class="gallerytemplate-params"]'); $('td',paramblock).each(function() { params[$(this).attr('title')] = $(this).text(); }); if(params['min_visible_rows'] < 1) {params['min_visible_rows'] = 1} if(params['collapsible'] == 'no' || params['collapsible'] == 'false' || params['collapsible'] == 0) { params['collapsible'] = false; } else { params['collapsible'] = true; } } else { /************************/ return true; /************************/ } /******************************************* *******************************************/ if(params['rows_in_table'] < params['max_visible_rows'] || params['rows_in_table'] <= params['min_visible_rows'] /* || params['min_visible_rows'] > params['max_visible_rows'] */ || params['collapsible'] == false) { return true; } /******************************************* *******************************************/ var expandgal = $('<th/>') .attr({'colspan':$('tr:first > td',this).size(),'class':'galpreview-showhidebutton'}) .append($('<span/>').text(params['expand_caption'])) .click(function() { if($('span',this).text() == params['expand_caption']) { params['collapsible_rows'].show(); $('span',this).text(params['collapse_caption']) } else { params['collapsible_rows'].hide(); $('span',this).text(params['expand_caption']) } }); $('> tr',this) .slice(0,params['min_visible_rows']) .attr('class','galpreview'); $('tr.galpreview:last',this).after($('<tr class="galpreview"/>').append(expandgal)); params['collapsible_rows'] = $('> tr:not(.galpreview)',this); params['collapsible_rows'].hide(); }); } Queue.addEachFragment(newgallerytemplate); /* /new gallerytemplate ****/ var scrollmenu=false; $(document).ready(function() { $(document).scroll(function () { if((scrollmenu==false) && ($(window).scrollTop()>112)){ $(".editbox").css('position','fixed'); $(".editbox").css('top','0'); scrollmenu=true; }else if((scrollmenu==true) && ($(window).scrollTop()<113)){ $(".editbox").css('position','absolute'); $(".editbox").css('top',''); scrollmenu=false; } }); });