MediaWiki:Common.js: відмінності між версіями

Матеріал з Файна Меморії
Перейти до навігації Перейти до пошуку
доповнення (тест)
+ (тест)
Рядок 225: Рядок 225:
})();
})();


/** /Tabbed Edittools ************************************/
/** Tabbed Edittools *************************************
 
/** Ref tooltips******************************************
   *
   *
  *  Description: Replace references with JQuery-based tooltips
   *  Made by:  Tachikoma, Anotubus
   *  Made by:  Tachikoma
   */
   */


addOnloadHook(function() {
(function(){
    if(!($('ol.references').size())) return;
var TabSwitchTimer = null
    $('ol.references').before($('<a href="#">[показать примечания]</a>').click(function(e){e.preventDefault(); $('ol.references').toggle()})).hide()
var TabSwitchGlobState = 0
    $('.reference a').live('click', function(e) {  
var MyEditTools = {
        e.preventDefault();
        var x = $(this), iscurrent = x.hasClass('curreference'), i = $('.tooltip').hide(250)
updateFirstVisible: function() {
        $('.curreference').removeClass('curreference');
$('.first').removeClass('first'); $("#editpage-specialchars table tr:visible").eq(0).addClass('first')
        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()
setAll: function(t) {
        var c=$(x.attr('href')).clone().find('a:first').remove().end().html()
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


        x.addClass('areference').addClass('curreference')  
$('#editpage-specialchars').css('border', "none")
        if (!i.size()) i = $('<div/>').addClass('tooltip')
        i.appendTo(b).queue(function() {
//var switcher = $('<div id="switcher"/>').insertBefore($("#editpage-specialchars table"))
            i.empty().append(c).css({ 'left': l-((l+i.width() >= mw) && i.width()), 'top': t-((t+i.height() >= mh) && (i.height()+26)) }).dequeue()
            var switcher = $('<caption style="text-align:left" id="switcher"/>').prependTo($("#editpage-specialchars table"));
        }).show(250)
var rows = $("#editpage-specialchars table tr")
    })
rows.each(function(i) {
    $(window).click(function(e) {
var id = "page"+i,td = $('td:first', this)
        if (!($(e.target).hasClass('areference') || $(e.target).parents().andSelf().hasClass('tooltip'))) {
var row = $(this).attr('id', 'r'+id).addClass(i == 0 ? "visible" : "hidden").toggleClass("first", !i).toggleClass("selected",!i)
            $('.tooltip').hide(250); $('.curreference').removeClass('curreference')
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)
}))
}


/** /Ref tooltips****************************************/
$('#toolbar').before($('.mw-editTools'))
}
}
 
    addOnloadHook(MyEditTools.init);
})();
 
/** /Tabbed Edittools ************************************/

Версія за 20:00, 11 червня 2011

if (document.URL.indexOf("action=edit") > 0 || document.URL.indexOf("action=submit") > 0)
{
        if (wgCanonicalNamespace != "Special")
        {
              document.write('<script type="text/javascript" src="' 
              + 'http://ukrmemoria.com/w/index.php?title=MediaWiki:Onlyifediting.js' 
              + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); 
              addOnloadHook(function(){
              if (mwEditButtons.length < 3) return;
              mwEditButtons[0].imageFile = 'http://upload.wikimedia.org/wikipedia/commons/f/fa/Button_bold_ukr.png';
              mwEditButtons[1].imageFile = 'http://upload.wikimedia.org/wikipedia/commons/f/f3/Button_italic_ukr.png';
              mwEditButtons[2].imageFile = 'http://upload.wikimedia.org/wikipedia/commons/0/03/Button_internal_link_ukr.png';
              })
        }
}


   var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-7117465-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = 'http://www.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();


function ukrbash()
{
 if (document.getElementById('ukrbash')) (function(){var script=document.createElement('script');script.type='text/javascript';script.async=true;script.src='http://i.ukrbash.org/export/random.js';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(script,s)})();
}
addOnloadHook(ukrbash);

/** Collapsible tables *********************************************************
 *
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
 *  Maintainers: [[**MAINTAINERS**]]
 */
var autoCollapse = 2;
var collapseCaption = 'сховати';
var expandCaption = 'показати';
 
function collapseTable( tableIndex ) {
	var Button = document.getElementById( 'collapseButton' + tableIndex );
	var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 
	if ( !Table || !Button ) {
		return false;
	}
 
	var Rows = Table.rows;
 
	if ( Button.firstChild.data == collapseCaption ) {
		for ( var i = 1; i < Rows.length; i++ ) {
			Rows[i].style.display = 'none';
		}
		Button.firstChild.data = expandCaption;
	} else {
		for ( var i = 1; i < Rows.length; i++ ) {
			Rows[i].style.display = Rows[0].style.display;
		}
		Button.firstChild.data = collapseCaption;
	}
}
 
function createCollapseButtons() {
	var tableIndex = 0;
	var NavigationBoxes = new Object();
	var Tables = document.getElementsByTagName( 'table' );
 
	for ( var i = 0; i < Tables.length; i++ ) {
		if ( hasClass( Tables[i], 'collapsible' ) ) {
			/* only add button and increment count if there is a header row to work with */
			var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
			if( !HeaderRow ) continue;
			var Header = HeaderRow.getElementsByTagName( 'th' )[0];
			if( !Header ) continue;
 
			NavigationBoxes[tableIndex] = Tables[i];
			Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
 
			var Button     = document.createElement( 'span' );
			var ButtonLink = document.createElement( 'a' );
			var ButtonText = document.createTextNode( collapseCaption );
 
			Button.className = 'collapseButton'; // Styles are declared in MediaWiki:Common.css
 
			ButtonLink.style.color = Header.style.color;
			ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
			ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
			ButtonLink.appendChild( ButtonText );
 
			Button.appendChild( document.createTextNode( '[' ) );
			Button.appendChild( ButtonLink );
			Button.appendChild( document.createTextNode( ']' ) );
 
			Header.insertBefore( Button, Header.childNodes[0] );
			tableIndex++;
		}
	}
 
	for ( var i = 0;  i < tableIndex; i++ ) {
		if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
			collapseTable( i );
		}
	}
}
 
addOnloadHook( createCollapseButtons );
 
/** Test if an element has a certain class **************************************
 *
 * Description: Uses regular expressions and caching for better performance.
 * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
 */
 
var hasClass = (function() {
	var reCache = {};
	return function( element, className ) {
		return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
	};
})();
/* {{nologo}} */
function noLogo() { if(document.getElementById('nologo'))
  document.getElementById('p-logo').style.display = 'none';
}
addOnloadHook(onPageInit);
 
function onPageInit()
{
    noLogo();
}

/* Тестова частина сторінки. Буде видалена, якщо не працюватиме */
/** Tabbed 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'))
		}
	}

    addOnloadHook(MyEditTools.init);
})();

/** Tabbed 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'))
		}
	}

    addOnloadHook(MyEditTools.init);
})();

/** /Tabbed Edittools ************************************/