Версия для слабовидящих
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>




