Diskuse k MediaWiki:Common.js
Podpora pro navboxy
Pustil jsem se do zprovozňování šablon pro navigační šablony převzatý z en. Potřeboval bych upravit Common.js po vzoru en. Bohužel si nejsem úplně jistý, co všechno je třeba přejmout. Myslím, že jsou to zejména následující kód:
/** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * [[Wikipedia:NavFrame]]. * Maintainers: [[User:R. Koot]] */ var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show"; 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 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 ); } else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) { var element = NavigationBoxes[i]; while (element = element.parentNode) { if ( hasClass( element, "outercollapse" ) ) { collapseTable ( i ); break; } } } } }
Na en je zakončený ještě řádkem:
addOnloadHook( createCollapseButtons );
ale jestli to chápu dobře, na cs se tohle řeší přidáním řádku do function CustomizeCsWikipedia ():
createCollapseButtons();
Samozřejmě bude třeba ještě několik úprav. Kromě přepsání zakomentované hlavičky (klidně můžu být uveden jako maintainer; z popisu je třeba vyhodit odkaz na Wikipedia:NavFrame, který je stejně zastaralý, neboť systém využívá "collapsible tables" popsaný na en:Help:Collapsing), bude třeba přeložit collapseCaption a expandCaption, tedy měly by mít hodnotu "skryj" a "ukaž", resp. "skrýt" a "ukázat", pokud by se rozkazovací způsob nelíbil.
No a pak bude potřeba upravit MediaWiki:Common.css, tam bude potřeba vložit kód:
/* Default skin for navigation boxes */ table.navbox { /* Navbox container style */ border: 1px solid #aaa; width: 100%; margin: auto; clear: both; font-size: 88%; text-align: center; padding: 1px; } table.navbox + table.navbox { /* Single pixel border between adjacent navboxes */ margin-top: -1px; /* (doesn't work for IE6, but that's okay) */ } .navbox-title, .navbox-abovebelow, table.navbox th { text-align: center; /* Title and above/below styles */ padding-left: 1em; padding-right: 1em; } .navbox-group { /* Group style */ white-space: nowrap; text-align: right; font-weight: bold; padding-left: 1em; padding-right: 1em; } .navbox, .navbox-subgroup { background: #fdfdfd; /* Background color */ } .navbox-list { border-color: #fdfdfd; /* Must match background color */ } .navbox-title, table.navbox th { background: #ccccff; /* Level 1 color */ } .navbox-abovebelow, .navbox-group, .navbox-subgroup .navbox-title { background: #ddddff; /* Level 2 color */ } .navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow { background: #e6e6ff; /* Level 3 color */ } .navbox-even { background: #f7f7f7; /* Even row striping */ } .navbox-odd { background: transparent; /* Odd row striping */ } .collapseButton { /* 'show'/'hide' buttons created dynamically */ float: right; /* by the CollapsibleTables javascript in */ font-weight: normal; /* [[MediaWiki:Common.js]]are styled here */ text-align: right; /* so they can be customised. */ width: auto; } .navbox .collapseButton { /* In navboxes, the show/hide button balances */ width: 6em; /* the vde links from [[Template:Tnavbar]], */ } /* so they need to be the same width. */
Může mi s tím někdo pomoci a tyto věci přidat? Díky. Miraceti 26. 6. 2009, 12:42 (UTC)