Участник:Жеводанский зверь/monobook.js
Материал из Lurkmore
Перейти к навигацииПерейти к поиску
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
window.addEventListener("DOMContentLoaded",function(){
$=jQuery;
$(function(){
// Helpers
function postEditForm(form,submit,action,callback) {
var req='',boundary = '--------ololololo';
function addData(n,v) {req+='--'+boundary+'\nContent-Disposition: form-data; name="'+n+'"\n\n'+(v||'')+'\n'}
$(form[0].elements).each(function(){
switch(this.type){
case'submit':break;
case'checkbox':if(!this.checked)break;
default:addData(this.name,this.value)
}
})
addData(submit,submit);
req+='--'+boundary
$.ajax({
type:'POST',
url:action,
contentType:'multipart/form-data; boundary='+boundary,
data:req,
processData:false,
success:function(s){$('body').css('cursor','default');callback(s)},
error:function(s){$('body').css('cursor','default');alert('Error '+textstat+'\nWhile sending data to '+action+'\n'+'Request body:\n'+req)}
})
}
// -----
// Edit tools
var TabSwitchTimer=null;
var TabSwitchGlobState=0;
var MyEditTools = {
extraCSS : "\
#switcher { font-family: sans-serif; }\
#switcher div { padding: 0px 3px; top: 1px; position: relative; z-index:3; margin: 0 0.3em 0 0; overflow-y: visible; background: #ffffff; border: 1px solid #aaaaaa; display: inline; display: inline-block; margin-right: 2px; margin-left: 2px; font-size: 95%; cursor:pointer;}\
#switcher div.selected { padding: 3px 3px 0px 3px; font-weight: normal; border: 1px solid #fabd23; border-bottom: none; top: 2px; margin-right: 2px; margin-left: 2px; background-color: #ffffff; text-decoration: none;}\
#switcher div.fixed { padding: 2px 3px 0px 3px; font-weight: bold; border: 1px solid #009933; border-bottom: dotted 1px #009933; top: 1px; margin-right: 2px; margin-left: 2px; }\
#switcher div u { text-decoration:none; }\
#switcher div.swoff { font-weight: bold; float:right; text-decoration: underline; color: blue; border: none; }\
#switcher div.swon { font-weight: bold; float:right; text-decoration: underline; color: blue; }\
#switcher div#pageHelp { padding-left: 10pt; border: none; font-weight: bold; float:right; text-decoration: underline; color: blue; }\
#editpage-specialchars table { width: 100%; border:solid 1px #aaaaaa; }\
#editpage-specialchars table tr { z-index: 0; }\
#editpage-specialchars table tr td:first-child { width: 9em; }\
#editpage-specialchars table tr.first { height: 9ex; }\
#editpage-specialchars table tr.visible { display: table-row; }\
#editpage-specialchars table tr.hidden { display: none; }\
",
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 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();
},150);
},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="pageHelp"><a href="http://lurkmore.ru/Lurkmore:FAQ">Справка</a></div>')
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);
}))
}
$.globcss(MyEditTools.extraCSS);
$('#toolbar').before($('#editpage-specialchars'));
}
};
// -----
// Misc UI tweaks
if(window.location.search.match('action=render')){
wgScript="/index.php";
wgNamespaceNumber=0;
wgPageName=window.location.search.replace(/title=(.*)?&/,'$1')
wgAction='render'
}
if(wgAction=='edit')MyEditTools.init()
var r=$('#n-recentchanges');r.html((r.html()||'').replace("Свежие правки","Несвежие правки"));
$('#p-logo a').css('background-image',"url('/images/6/65/Magenlurk.png')")
if(location.href.match(/diff=/))
$('#p-cactions .pBody ul').append('<li><a href="'+location.href.replace(/^(.+\?).*&?(diff=(?:\d+|prev|next)).*?(&oldid=\d+)?.*$/,"$1$2$3")+'">diff</a></li>')
// -----
// Style fixes
$('dl:odd').css({'border-top':'solid 1px #F0F080','border-left':'solid 1px #F0F080','background':'#F8FCF0'});$('dl:even').css('background','#F8FCFE');
$.globcss(":target+*{background:#def}ol.references{display:none}.tooltip{overflow:hidden;width:40ex;font-size:90%;border-width:1px 2px 2px 1px;border-style:solid;padding:2px;background:#ffb;position:absolute;display:none;z-index:9999}")
$.globcss(".lm_b_link a{color:#FF6600}.bpost:target{background-color:#eedacb !important;border:#ee6600 dashed 2px !important}");
// -----
// Image and movies pop-ups
_createImgPopups($('.thumb .image'),function(e){var f=e.find('img').attr('src');if(f.match("thumb/"))f=f.replace("thumb/","").replace(/(.*)\/.*/,'$1');return{full:f,title:e.attr('title')}});
$('object').each(function(){
var w=800, h=600;
var em=$(this).find('embed').clone().width(w).height(h);
var dlg=$('<div/>').append(em).dialog({width:w,height:h+18,resizable:true,autoOpen:false});
$(this).replaceWith(
$('<img/>')
.attr('src',em.attr('src').replace(/.*\/(.*)/,'http://i.ytimg.com/vi/$1/default.jpg'))
.width($(this).attr('width')).height($(this).attr('height')-16).css('border','solid 3px red')
.click(function(e){dlg.dialog('open');$(this).effect('transfer',{to:dlg.parent()},300)})
);
});
// -----
// Refoyobstvo lol
var baaaaad=$('.references li,s').size();
if(baaaaad>10) {
var warning=$('<div class="ui-state-error"/>')
.html('Статья подозрительно похожа на говно!<br/><span style="font-size:80%;">Общее количество рефов и страйков: '+baaaaad+'. </span>');
$('span',warning).append($('<a/>').attr('href',wgScript+'?'+$.param({title:wgPageName,action:'edit'})).text("Исправить?"));
$('#content').prepend(warning)
}
// -----
// Ref tooltips
$('.reference a').live('click',function(e){_ev(e);var x=$(this).addClass('areference'),par=x.parent(),i=$('.tooltip').hide(250),o=par.offset(),l=o.left,t=o.top,b=$('body'),mh=b.height(),mw=b.width(),c=$(x.attr('href')).clone().find('a:first').remove().end().html();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())}).dequeue()}).show(250)});
$(window).click(function(e){if(!($(e.target).hasClass('areference')||$(e.target).hasClass('tooltip')))$('.tooltip').hide(250);});
// -----
// Live preview
if(wgAction=="edit") {
$('#wpPreview').click(function(e) {
if(e.ctrlKey) return;
_ev(e);
var t=$("#wpTextbox1"),txt=t.val(), sel=t.getSelection();
if(sel.length) t.val(sel.text)
postEditForm($("#editform"),'wpSave',wgScript+'?'+$.param({title:wgPageName,action:'submit'})+'&live',function(d){
var p=$($('preview',d).text()).wrapAll('<div/>').parent();
$('h2:first,.previewnote',p).remove()
p.css({'overflow':'auto','background':'white','padding':'5px'}).dialog({height:600,width:800})
})
t.val(txt)
})
}
// -----
})},false);