Версия для слабовидящих
MediaWiki:Common.js — различия между версиями
Материал из Ярославский педагогический университет
Wikiadmin (обсуждение | вклад) (Содержимое страницы заменено на «/* Размещённый здесь JavaScript код будет загружаться всем пользователям при о...») |
Wikiadmin (обсуждение | вклад) |
||
| Строка 6: | Строка 6: | ||
if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Search') | if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Search') | ||
importScript('MediaWiki:Search.js') | importScript('MediaWiki:Search.js') | ||
| + | |||
| + | /****************************************************************************************** | ||
| + | * | ||
| + | * Сворачивающиеся блоки для шаблонов {{Навигационная таблица}}, {{Навигационная полоса}} | ||
| + | * и для таблиц class="collapsible" (см. на [[Справка:Оформление таблиц]] пример). | ||
| + | * | ||
| + | * Код полностью переписал Mithgol the Webmaster на основе jQuery в начале августа 2009 г. | ||
| + | * | ||
| + | */ | ||
| + | |||
| + | 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> | //</source> | ||
Версия 13:20, 22 октября 2009
/* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждой странице */ //<source lang=javascript> //External search if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Search') importScript('MediaWiki:Search.js') /****************************************************************************************** * * Сворачивающиеся блоки для шаблонов {{Навигационная таблица}}, {{Навигационная полоса}} * и для таблиц class="collapsible" (см. на [[Справка:Оформление таблиц]] пример). * * Код полностью переписал Mithgol the Webmaster на основе jQuery в начале августа 2009 г. * */ 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>




