Версия для слабовидящих
MediaWiki:Common.js — различия между версиями
Материал из Ярославский педагогический университет
Wikiadmin (обсуждение | вклад) |
Wikiadmin (обсуждение | вклад) |
||
Строка 9: | Строка 9: | ||
//Collapsiblе: [[ВП:СБ]] | //Collapsiblе: [[ВП:СБ]] | ||
− | var | + | var autoCollapse = 2; |
− | var | + | var collapseCaption = 'скрыть'; |
− | var | + | var expandCaption = 'показать'; |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
function collapsibleTables(){ | function collapsibleTables(){ | ||
− | + | var allTables = $('#content table.collapsible'); | |
− | + | ||
− | + | allTables.each(function(tblIdx){ | |
− | + | var HRow = $('tr:first', this); | |
− | + | if (HRow.length == 0){ | |
− | + | $(this).addClass('wontCollapse'); // no rows | |
− | + | return true; // continue next iteration of each() | |
− | + | } | |
− | + | if (HRow.parent().children().filter('tr').not(':first').length == 0){ | |
− | + | $(this).addClass('wontCollapse'); // no rows after the first | |
− | + | return true; // continue next iteration of each() | |
− | + | } | |
− | + | ||
− | + | var Header = $('th:last', HRow); | |
− | + | if (Header.length == 0){ | |
− | + | $(this).addClass('wontCollapse'); // no TH in the first row | |
− | + | return true; // continue next iteration of each() | |
− | + | } | |
− | + | ||
− | + | $(this).data('collapseIndex', tblIdx); | |
− | + | Header.prepend( | |
+ | '<span style="float: right; font-weight: normal;">'+ | ||
+ | '[<a id="collapseButton' + tblIdx + '" href="#" onClick="collapseTable(this); return false;">'+ | ||
+ | collapseCaption + '</a>]</span>'); | ||
+ | }); | ||
+ | |||
+ | var processedTables = allTables.not('.wontCollapse'); | ||
+ | if (processedTables.length > autoCollapse){ | ||
+ | processedTables.filter('.autocollapse').each(function(i){ | ||
+ | var linkIDX = $(this).data('collapseIndex'); | ||
+ | collapseTable($('a#collapseButton' + linkIDX, this).eq(0)); | ||
+ | }); | ||
+ | } | ||
+ | processedTables.filter('.collapsed').each(function(i){ | ||
+ | var linkIDX = $(this).data('collapseIndex'); | ||
+ | collapseTable($('a#collapseButton' + linkIDX, this).eq(0)); | ||
+ | }); | ||
} | } | ||
− | function collapseTable ( | + | function collapseTable(linkObject){ // accepts both raw and jQuery-wrapped objects |
− | + | var TheLink = $(linkObject); | |
− | + | var TableRows = TheLink.closest('tr').parent().children().filter('tr').not(':first'); | |
− | + | if (TableRows.length == 0) return; | |
− | + | ||
− | + | var isShown = (TheLink.text() == collapseCaption); | |
− | + | if (isShown) { | |
− | + | TheLink.text(expandCaption); | |
− | + | TableRows.each(function(i){ | |
− | + | $(this).fadeOut(1000); | |
+ | }); | ||
+ | } else { | ||
+ | TheLink.text(collapseCaption); | ||
+ | TableRows.each(function(i){ | ||
+ | $(this).fadeIn(1000); | ||
+ | }); | ||
+ | }; | ||
} | } | ||
+ | addOnloadHook(collapsibleTables); | ||
+ | |||
+ | var NavigationBarHide = '[' + collapseCaption + ']'; | ||
+ | var NavigationBarShow = '[' + expandCaption + ']'; | ||
+ | var NavigationBarShowDefault = autoCollapse; | ||
function collapsibleDivs(){ | function collapsibleDivs(){ | ||
− | + | var NavFrameList = $('#content div.NavFrame'); | |
− | + | NavFrameList.each(function(navIdx){ | |
− | + | var TheNavHead = $('.NavHead:first', this); | |
− | + | if (TheNavHead.length == 0) { | |
− | + | $(this).addClass('wontCollapse'); // no NavHead inside! | |
− | + | return true; // continue next iteration of each() | |
− | + | } | |
− | + | $(this).data('NavFrameIndex', navIdx); | |
− | + | TheNavHead.prepend('<a class="NavToggle" '+ | |
− | + | 'id="NavToggle' + navIdx + '" href="#" '+ | |
− | + | 'onClick="collapseDiv(this); return false;">'+ | |
− | + | NavigationBarHide + '</a>' | |
− | + | ); | |
− | + | }); | |
− | + | ||
− | + | var processedDivs = NavFrameList.not('.wontCollapse'); | |
− | + | if (processedDivs.length > NavigationBarShowDefault){ | |
− | + | processedDivs.not('.expanded').each(function(i){ | |
+ | var linkIDX = $(this).data('NavFrameIndex'); | ||
+ | collapseDiv($('a#NavToggle' + linkIDX, this).eq(0)); | ||
+ | }); | ||
+ | } | ||
+ | processedDivs.filter('.collapsed').each(function(i){ | ||
+ | var linkIDX = $(this).data('NavFrameIndex'); | ||
+ | collapseDiv($('a#NavToggle' + linkIDX, this).eq(0)); | ||
+ | }); | ||
} | } | ||
− | function collapseDiv( | + | function collapseDiv(toggleObject){ // accepts both raw and jQuery-wrapped objects |
− | + | var TheToggle = $(toggleObject); | |
− | + | var TheFrame = TheToggle.closest('div.NavFrame'); | |
− | + | if (TheFrame.length == 0) return false; | |
− | + | ||
− | + | TheToggle.text( (TheToggle.text() == NavigationBarHide) ? NavigationBarShow : NavigationBarHide); | |
− | + | ||
− | + | TheFrame.children().filter('.NavPic, .NavContent').each(function(i){ | |
− | + | $(this).slideToggle(1000); | |
− | + | }); | |
} | } | ||
+ | addOnloadHook(collapsibleDivs); | ||
//</source> | //</source> |
Версия 11:18, 22 октября 2009
/* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждой странице */ //<source lang=javascript> //External search if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Search') importScript('MediaWiki:Search.js') //Collapsiblе: [[ВП:СБ]] var autoCollapse = 2; var collapseCaption = 'скрыть'; var expandCaption = 'показать'; function collapsibleTables(){ var allTables = $('#content table.collapsible'); allTables.each(function(tblIdx){ var HRow = $('tr:first', this); if (HRow.length == 0){ $(this).addClass('wontCollapse'); // no rows return true; // continue next iteration of each() } if (HRow.parent().children().filter('tr').not(':first').length == 0){ $(this).addClass('wontCollapse'); // no rows after the first return true; // continue next iteration of each() } var Header = $('th:last', HRow); if (Header.length == 0){ $(this).addClass('wontCollapse'); // no TH in the first row return true; // continue next iteration of each() } $(this).data('collapseIndex', tblIdx); Header.prepend( '<span style="float: right; font-weight: normal;">'+ '[<a id="collapseButton' + tblIdx + '" href="#" onClick="collapseTable(this); return false;">'+ collapseCaption + '</a>]</span>'); }); var processedTables = allTables.not('.wontCollapse'); if (processedTables.length > autoCollapse){ processedTables.filter('.autocollapse').each(function(i){ var linkIDX = $(this).data('collapseIndex'); collapseTable($('a#collapseButton' + linkIDX, this).eq(0)); }); } processedTables.filter('.collapsed').each(function(i){ var linkIDX = $(this).data('collapseIndex'); collapseTable($('a#collapseButton' + linkIDX, this).eq(0)); }); } function collapseTable(linkObject){ // accepts both raw and jQuery-wrapped objects var TheLink = $(linkObject); var TableRows = TheLink.closest('tr').parent().children().filter('tr').not(':first'); if (TableRows.length == 0) return; var isShown = (TheLink.text() == collapseCaption); if (isShown) { TheLink.text(expandCaption); TableRows.each(function(i){ $(this).fadeOut(1000); }); } else { TheLink.text(collapseCaption); TableRows.each(function(i){ $(this).fadeIn(1000); }); }; } addOnloadHook(collapsibleTables); var NavigationBarHide = '[' + collapseCaption + ']'; var NavigationBarShow = '[' + expandCaption + ']'; var NavigationBarShowDefault = autoCollapse; function collapsibleDivs(){ var NavFrameList = $('#content div.NavFrame'); NavFrameList.each(function(navIdx){ var TheNavHead = $('.NavHead:first', this); if (TheNavHead.length == 0) { $(this).addClass('wontCollapse'); // no NavHead inside! return true; // continue next iteration of each() } $(this).data('NavFrameIndex', navIdx); TheNavHead.prepend('<a class="NavToggle" '+ 'id="NavToggle' + navIdx + '" href="#" '+ 'onClick="collapseDiv(this); return false;">'+ NavigationBarHide + '</a>' ); }); var processedDivs = NavFrameList.not('.wontCollapse'); if (processedDivs.length > NavigationBarShowDefault){ processedDivs.not('.expanded').each(function(i){ var linkIDX = $(this).data('NavFrameIndex'); collapseDiv($('a#NavToggle' + linkIDX, this).eq(0)); }); } processedDivs.filter('.collapsed').each(function(i){ var linkIDX = $(this).data('NavFrameIndex'); collapseDiv($('a#NavToggle' + linkIDX, this).eq(0)); }); } function collapseDiv(toggleObject){ // accepts both raw and jQuery-wrapped objects var TheToggle = $(toggleObject); var TheFrame = TheToggle.closest('div.NavFrame'); if (TheFrame.length == 0) return false; TheToggle.text( (TheToggle.text() == NavigationBarHide) ? NavigationBarShow : NavigationBarHide); TheFrame.children().filter('.NavPic, .NavContent').each(function(i){ $(this).slideToggle(1000); }); } addOnloadHook(collapsibleDivs); //</source>