This script has been superceded by features in core MediaWiki software
Now that all Wikia wikis have been upgraded from MediaWiki 1.16 to 1.19, collapsible elements are supported by default in core MediaWiki. See Help:Collapsing for more details. All users are highly advised to phase out usage of this script and begin using mw-collapsible class instead. This will allow you to remove outdated code from your wiki (this script), which in turn makes maintaining your code base easier and makes pages load faster.
ShowHide is a script for collapsible tables and divs.
Feature overview
- Localization
- Customize button labels according to site (or user) language preference.
- Show all / Hide all
- [show all] and [hide all] buttons can be placed anywhere on a page and in multiple locations.
- All NavFrame blocks on the page are affected however, collapsible tables are not affected by these buttons. This behavior is by design.
- Specify collapsed by default
- A NavFrame block or collapsible table that also uses the collapsed class will be hidden by default but can always be manually expanded.
- Auto-collapse threshold
- When the specified number of NavFrame blocks or collapsible tables with the autocollapse class are present on a page then all will collapse by default. The counts are handled separately, so one NavFrame and one collapsible table will not be considered 2.
- Can be overridden for specific NavFrames if the noautocollapse class is also used.
- Specify non-collapsible rows of a table
- Using class="nocollapse" on a row will prevent that row from collapsing.
- Nesting collapsible content
- Nesting collapsible tables is supported.
- Nesting NavFrame blocks is supported.
- A complementary pair of NavContent blocks enables
- In-place magnify/shrink of an image.
- Author-specified word-wrap for both image sizes.
Configuration
To use ShowHide please include ShowHide/code.js in your site's MediaWiki:Common.js using:
importScriptPage('ShowHide/code.js', 'dev');
Perhaps the function importScriptPage
is not available. In this case, insert the following additional code.
function importScriptPage (page, server) {
var url = '/index.php?title=' + encodeURIComponent(page.replace(/ /g,'_')).replace('%2F','/').replace('%3A',':') + '&action=raw&ctype=text/javascript';
if (typeof server == "string") url = (server.indexOf('://') == -1)?'http://' + server + '.wikia.com' + url:server + url;
return importScriptURI(url);
}
You can change the configuration of ShowHide by creating a ShowHideConfig object inside either:
- your site's MediaWiki:Common.js or
- your personal User:USERNAME/wikia.js or User:USERNAME/monobook.js depending on what skin you are using.
- autoCollapse
- ShowHideConfig.autoCollapse sets the threshold for default collapse of all collapsible content on a page. When the number of NavFrames or collapsible tables with the autocollapse on the page is equal to or greater than specified number then auto-collapse is triggered.
- By default this is set to 2 meaning for example "If there are two or more NavFrames on the page, then hide them all by default", and likewise for collapsible tables with autocollapse on them.
- You can change this to any number.
- Setting it to 0 will make it so things are always collapsed by default.
- setting it to Infinity will make it so things never auto-collapse. (Note: Infinity is case-sensitive)
- NavFrames with the noautocollapse class do count toward the NavFrame threshold and are never auto-collapsed but can always be manually collapsed.
- NavFrames with the collapsed class do count toward the NavFrame threshold and are always initially collapsed but can always be manually expanded.
- userLang
- (true|false) ShowHide is smart about what language to use to display show/hide messages. Currently by default it will prefer the user's language, but use the content language otherwise, and fall back to English if there are no messages in a desired language. You can disable this by setting the ShowHideConfig.userLang option to false.
- langCode
- Messages for localization of the language used in button labels can be added using the two-character language code as a key (e.g. ShowHideConfig.en or ShowHideConfig.ja) and then creating an object for four messages. The four messages used are "show", "hide", "showAll", and "hideAll". See example below for how to override the default labels used for the English language. Translations for missing languages can be posted to the talkpage.
- linkBefore
- Set to true to have ShowHide prepend links to NavFrame instead of appending them.
- brackets
- Allows changing the style of the brackets around the "show" and "hide" buttons from the default
[]
.
Example
var ShowHideConfig = { autoCollapse: Infinity };
importScriptPage('ShowHide/code.js', 'dev');
- If you prefer to override the default labels for, say, English language then you can use langCode key, en, to do so. This might be done in your personal User:USERNAME/wikia.js or User:USERNAME/monobook.js.
var ShowHideConfig = {
autoCollapse: 3,
en: {
show: "more",
hide: "less",
showAll: "expand all",
hideAll: "collapse all"
}
};
- If you would like to change the brackets from
[]
to say{}
,you can use:
var ShowHideConfig = {
brackets: '{}'
};
Styling
For CSS styling of the show/hide button, the class collapseLink
refers to what is inside the brackets, while the class collapseButton
refers to the whole button.
Collapsible table
Specify the class collapsible for the table. Optionally specify the class nocollapse for specific rows. viz.
- Nesting collapsible tables is supported.
- Use class="nocollapse" on the row where the nested table is located to ensure its header row (with the nested show/hide button) remains visible.
Wiki markup | Rendered | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{| class="collapsible" !colspan="2"| This is a test |- | Column 1 || Column 2 |} |
| ||||||||||||||||||||||
Table with certain rows specified "nocollapse" | |||||||||||||||||||||||
{| class="wikitable collapsible" !colspan="2"| Title |- class="nocollapse" | Column 1 || Column 2 |- class="nocollapse" | abc || def |- | 123 || 765 |- | xyz || 123 |- class="nocollapse" | pqr || 987 |- |} |
| ||||||||||||||||||||||
Nested tables | |||||||||||||||||||||||
{| class="wikitable collapsible" !colspan="2"| Title |- | Column 1 || Column 2 |- | abc || def |- | abc || def |- class="nocollapse" |colspan=2| {| class="toccolours collapsible" !colspan="2" BGCOLOR="#ffffff"| Embedded table |- class="nocollapse" | Column A || Column B |- class="nocollapse" ||the |quick |- ||brown |fox |- |} |- | xyz || 123 |- | pqr || 987 |- |} |
|
Use the following class definitions within tag pairs:
- NavGlobal
- for placing [show all] and [hide all] buttons anywhere on the page
- NavFrame
- defines a NavFrame block which is the outer wrapper for using the classes NavHead, NavContent and NavPic
- NavHead
- the header where the show/hide link will be placed
- NavContent
- block text content that is collapsible (may include a table)
- NavPic
- image content that is collapsible
- Nesting NavFrame blocks (tags using the NavFrame class) is supported.
- Check that all tags are closed. If you see progressive indentation then that is a symptom of a tag that was never closed.
Wiki markup | Rendered | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Default behavior and override behavior | |||||||||||||
; collapsed <div class="NavFrame collapsed"> <div class="NavHead"> [... Title of hidden content(1) ...] </div> <div class="NavContent"> [... This content(1) is initially hidden ...] </div> </div> ; noautocollapse <div class="NavFrame noautocollapse"> <div class="NavHead"> [... Title of hide-able content(2) ...] </div> <div class="NavContent"> [... This content(2) does not auto-collapse ...] </div> </div> ; default <div class="NavFrame"> <div class="NavHead"> [... Title of hidden content(3) ...] </div> <div class="NavContent"> [... This content(3) may auto-collapse ...]<br/> [... and contains a collapsible table ...] {| class="wikitable collapsible" !colspan="2"| Title |- class="nocollapse" | Column 1 || Column 2 |- class="nocollapse" | abc || def |- | 123 || 765 |- | xyz || 123 |- class="nocollapse" | pqr || 987 |- |} </div> </div> |
[... Title of hidden content(1) ...] [... This content(1) is initially hidden ...]
[... Title of hide-able content(2) ...] [... This content(2) does not auto-collapse ...]
[... Title of hidden content(3) ...] [... This content(3) may auto-collapse ...]
| ||||||||||||
Nested NavFrame blocks | |||||||||||||
<div class="NavFrame"> <div class="NavHead"> [... Title of hidden content(0) ...] </div> <div class="NavContent"> [... This content is initially hidden and ...]<br/> [--- contains the previous example ---] ; collapsed <div class="NavFrame collapsed"> <div class="NavHead"> [... Title of hidden content(1) ...] </div> <div class="NavContent"> [... This content(1) is initially hidden ...] </div> </div> ; noautocollapse <div class="NavFrame noautocollapse"> <div class="NavHead"> [... Title of hide-able content(2) ...] </div> <div class="NavContent"> [... This content(2) does not auto-collapse ...] </div> </div> ; default <div class="NavFrame"> <div class="NavHead"> [... Title of hidden content(3) ...] </div> <div class="NavContent"> [... This content(3) may auto-collapse ...]<br/> [... and contains a collapsible table ...] {| class="wikitable collapsible" !colspan="2"| Title |- class="nocollapse" | Column 1 || Column 2 |- class="nocollapse" | abc || def |- | 123 || 765 |- | xyz || 123 |- class="nocollapse" | pqr || 987 |- |} </div> </div> [--- previous example inserted above here ---] </div> </div> |
[... Title of hidden content(0) ...] [... This content is initially hidden and ...]
[... Title of hidden content(1) ...] [... This content(1) is initially hidden ...]
[... Title of hide-able content(2) ...] [... This content(2) does not auto-collapse ...]
[... Title of hidden content(3) ...] [... This content(3) may auto-collapse ...]
[--- previous example inserted above here ---] | ||||||||||||
NavGlobal DIV placed anywhere on page creates [show all] [hide all] buttons | |||||||||||||
<div class="NavGlobal"> <!-- place anywhere on page for [show all] [hide all] buttons --> </div> |
|
Magnify and shrink pictures without leaving the article
Normally, if you click on the magnify sprite, , located right-most inside the thumbnail image caption box you are taken away from the article you were browsing to a page in the File namespace where the detail and history for that image can be viewed. The size of the image displayed there may not be the precise size that the author wanted to show the reader. If you click on the image itself you are taken to that same details page.
- You can use ShowHide functionality to toggle between a small image and a magnified image in-situ - i.e. without leaving the currently displayed wiki article.
- The article text will adjust to flow around the expanded image in whichever way the author has designed it to.
- The author may specify the precise sizes of the smaller image and the larger image.
This is really just a special application of the NavFrame class but with:
- two NavContent div elements instead of just one
- a potentially confusing relationship between the
"display:none"
in-line style and thecollapsed
in-line class tag - careful placement of
{{clr}}
so as to disable text-wrap based on whichever image is currently visible
Note that using the NavPic class does not yield the same result. Indeed, the NavPic class currently serves no useful purpose.
- Caveat
- The style display:none will cause the content of that div element to never be displayed at a browser that has disabled (or does not support) javascript.
Wiki markup | Rendered |
---|---|
Note how the combined effect of "collapsed" and "display:none;" is for the 120px thumbnail to be initially VISIBLE with a show button displayed to reveal the larger, hidden image. | |
Duis aute ... <!-- "collapsed" will toggle the coded state of the in-line style "display:" --> <div class="NavFrame collapsed"> <div class="NavHead"></div> <!-- display:none + collapsed => initially VISIBLE small image --> <div class="NavContent" style="display:none;" > [[File:Tree.jpg|thumb|120px|Caption here]]</div> <!-- display:block + collapsed => initially INVISIBLE large image --> <div class="NavContent" style="display:block;"> [[File:Tree.jpg|thumb|360px|Caption here]]</div> </div> Lorem ipsum ... |
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. |
Notice that the {{clr}} has been placed inside the div associated with the larger 360px image.
| |
Duis aute ... <div class="NavFrame collapsed"> <div class="NavHead"></div> <div class="NavContent" style="display:none;" > [[File:Tree.jpg|thumb|120px|Caption here]]</div> <div class="NavContent" style="display:block;"> [[File:Tree.jpg|thumb|360px|Caption here]]{{clr}}</div> <!-- {{clr}} on this line would prevent text-wrap beside thumbnail --> </div> Lorem ipsum ... |
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. |
- Repeating the same two example but using Right instead of Thumb for the image and also floating the Show/Hide button right rather than the default.
Wiki markup | Rendered |
---|---|
Note how the combined effect of "collapsed" and "display:none;" is for the 120px thumbnail to be initially VISIBLE with a show button displayed to reveal the larger, hidden image. | |
Duis aute ... <!-- "collapsed" will toggle the coded state of the in-line style "display:" --> <div class="NavFrame collapsed"> <div class="NavHead" style="float:right;"></div> <!-- display:none + collapsed => initially VISIBLE small image --> <div class="NavContent" style="display:none;" > [[File:Tree.jpg|right|120px|Caption here]]</div> <!-- display:block + collapsed => initially INVISIBLE large image --> <div class="NavContent" style="display:block;"> [[File:Tree.jpg|right|360px|Caption here]]</div> </div> Lorem ipsum ... |
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. |
Notice that the {{clr}} has been placed inside the div associated with the larger 360px image.
| |
Duis aute ... <div class="NavFrame collapsed"> <div class="NavHead" style="float:right;"></div> <div class="NavContent" style="display:none;" > [[File:Tree.jpg|right|120px|Caption here]]</div> <div class="NavContent" style="display:block;"> [[File:Tree.jpg|right|360px|Caption here]]{{clr}}</div> <!-- {{clr}} on this line would prevent text-wrap beside thumbnail --> </div> Lorem ipsum ... |
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. |
Updates
|
See also
- Help:Dynamic navigation
- Joeyaa: Collapsible Templates. Written by User:Joeyaa.
- Collapsed table via NavFrame. Simple explanation and example of how show/hide capability was created with just one line added to a wiki's MediaWiki:Common.js page.
- ShowHide2
- MediaWiki Manual:Collapsible tables
- Forum:Need help with ShowHide script - implementing Show/Hide with the Oasis/Wikia skin.