Template:Sidebar/doc
This is a documentation subpage for
Template documentation[edit]
Template sandbox and testcases for TEMPLATE_NAME[edit]Overview[edit]This page provides a clean workflow to safely edit and validate TEMPLATE_NAME:
Use this page to:
Quick links[edit]
How to test[edit]1. Edit the sandbox at Template:TEMPLATE_NAME/sandbox. 2. Open this test page and click “Show preview” to render the sandbox with inputs below. 3. Verify each testcase: Does the “Actual output” match the “Expected output”? 4. If all pass, consider copying sandbox to live using an edit summary like: “Sync from /sandbox: passes all /testcases as of YYYY-MM-DD.” Previewing tips[edit]
Test harness[edit]The following sections render the sandbox template against curated inputs. Each testcase shows:
Testcase A: Minimal invocation[edit]Parameters: {{TEMPLATE_NAME}} Expected output: [Minimal successful output with defaults: e.g., a neutral message or basic box] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase B: Common parameters[edit]Parameters: {{TEMPLATE_NAME | param1 = Alpha | param2 = Beta | flag = yes }} Expected output: [Example: shows "Alpha" and "Beta" in designated slots; flag toggles enhanced styling] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase C: Edge values and escaping[edit]Parameters: {{TEMPLATE_NAME | param1 = [[Linked target|Visible text]] | param2 = {{subst:CURRENTTIMESTAMP}} | raw = <code><span class="x">escaped</span></code> }} Expected output: [Links render correctly; timestamp subst is literal in expected; raw shows escaped markup] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase D: Internationalization (i18n)[edit]Parameters: {{TEMPLATE_NAME | lang = ja | text = こんにちは世界 }} Expected output: [Text displays correctly for non-ASCII; applies lang attribute or rtl/ltr where applicable] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase E: Error handling[edit]Parameters: {{TEMPLATE_NAME | param1 = | required = <!-- intentionally omitted --> }} Expected output: [Shows a gentle error or maintenance category; does not break page layout] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Maintenance[edit]
Categories[edit]Copy-paste skeletons[edit]Below are ready-to-use skeletons for the sandbox and testcases subpages. Skeleton: Template:TEMPLATE_NAME/sandbox[edit]<!-- Sandbox for TEMPLATE_NAME --> <!-- Copy the entire template source here; edit safely. --> {{#if:{{{required|}}} | <!-- normal output --> <div class="tmpl"> <b>{{{param1|}}}</b> · <i>{{{param2|}}}</i> {{#if:{{{flag|}}}|<span class="flag">✓</span>|}} {{#if:{{{raw|}}}|<span class="raw">{{{raw}}}</span>|}} </div> | <!-- error / missing required --> <span class="error">TEMPLATE_NAME: missing required parameter</span> [[Category:Pages with TEMPLATE_NAME errors]] }} Skeleton: Template:TEMPLATE_NAME/testcases[edit]<!-- Testcases for TEMPLATE_NAME; render against /sandbox --> ; Minimal : {{TEMPLATE_NAME/sandbox}} ; Common params : {{TEMPLATE_NAME/sandbox | param1 = Alpha | param2 = Beta | flag = yes }} ; Edge and escaping : {{TEMPLATE_NAME/sandbox | param1 = [[Linked target|Visible text]] | param2 = 20250101T000000Z | raw = <code><span class="x">escaped</span></code> }} ; I18n : {{TEMPLATE_NAME/sandbox | lang = ja | text = こんにちは世界 }} ; Error handling : {{TEMPLATE_NAME/sandbox | required = }} Review checklist[edit]
Template:Terminate sentence ensures a sentence ends with a specified terminator (default: a period). It avoids adding duplicate terminators and can optionally trim trailing spaces. It attempts to ignore trailing closing quotes or brackets when deciding whether a terminator is already present. Usage[edit]Basic: {{Terminate sentence|This is a sentence}}
→ This is a sentence.
Named parameters: {{Terminate sentence
|text=He said "Hello"
|term=.
}}
→ He said "Hello".
Custom terminator: {{Terminate sentence|text=Warning|term=!}}
→ Warning!
Avoid duplicate terminator: {{Terminate sentence|text=Already done.|term=.}}
→ Already done.
Trim trailing spaces: {{Terminate sentence|text=Ends with space |trim=yes}}
→ Ends with space.
Skip processing: {{Terminate sentence|text=No changes here|skip=yes}}
→ No changes here
Append a note: {{Terminate sentence|text=Complete|note=(source: 2025)}}
→ Complete. (source: 2025)
Parameters[edit]
Behavior details[edit]
Examples[edit]
{{Terminate sentence|text=He whispered "hush"|term=.}}
→ He whispered "hush".
{{Terminate sentence|text=Complete (verified)|term=.}}
→ Complete (verified).
{{Terminate sentence|text=Alert|term=!}}
→ Alert!
{{Terminate sentence|text=Wait...|term=.|allowdup=yes}}
→ Wait.... Best practices[edit]
Lua-powered variant (optional)[edit]For more robust detection (including multilingual quotes and punctuation), create -- Module:TerminateUtil
local M = {}
local closing = {
[")"] = true, ["]"] = true, ["}"] = true,
['"'] = true, ["'"] = true, ["”"] = true, ["’"] = true, ["»"] = true, ["›"] = true
}
local function trimRight(s)
return (s:gsub("%s+$",""))
end
function M.lastVisibleChar(args)
local s = args.s or ""
s = trimRight(s)
local i = #s
while i > 0 do
local c = s:sub(i,i)
if closing[c] then
i = i - 1
else
return c
end
end
return ""
end
return M
Then update the template to call: {{#invoke:TerminateUtil|lastVisibleChar|s=text}}
This improves detection for closing quotes and brackets. See also[edit]It may contain usage information, categories and other content that is not part of the original template page. |
This template is intended as a metatemplate for sidebar templates (vertically-aligned navigation (navbox) templates usually positioned on the right-hand sides of pages) in the same spirit as {{Infobox}} for infobox templates and {{Navbox}} for navbox templates.
{{Sidebar with collapsible lists}} adds collapsibility to a Sidebar's sections, i.e. the means to show or hide sections by clicking links beside their headings.
Usage
[edit]| {{{topimage}}} {{{topcaption}}} |
| {{{pretitle}}} |
| {{{title}}} |
|---|
| {{{image}}} |
| {{{heading1}}} |
| {{{content1}}} |
| {{{heading2}}} |
| {{{content2}}} |
| {{{heading3}}} |
| {{{content3}}} |
| ................ |
| {{{heading35}}} |
| {{{content35}}} |
| {{{below}}} |
Parameters with infrequent use omitted.
{{sidebar
| name = {{subst:PAGENAME}}
| outertitle =
| topimage =
| pretitle =
| title =
| image =
| headingstyle =
| contentstyle =
| heading1 =
| content1 =
| heading2 =
| content2 =
| heading3 =
| content3 =
...
| heading35 =
| content35 =
}}
Parameters
[edit]No parameters are required unless {{navbar}} links (V - T - E) are to appear at the bottom of the sidebar, in which case the |name= parameter is needed (see entry in the table immediately below).
Principal
[edit]| Parameter | Explanation |
|---|---|
|name= |
The sidebar's name, i.e., the name following "Template:" in the page's name. Required for the {{navbar}} links at the bottom of the sidebar to function correctly, unless these are omitted (see |navbar= at the bottom of this table). It is recommended to use {{subst:PAGENAME}} for this field. |
|outertitle= |
Use to place a title for the sidebar immediately above the sidebar. |
|topimage= |
Use to place an image at the top of the sidebar, i.e., above any |title= included.Full wikisyntax expected (i.e., |
|pretitle= |
Use to place a line such as "Part of the X series on" before the title. |
|title= |
Use to place a title for the sidebar at the top of the sidebar (immediately below the |topimage=, if used). |
|image= |
Use to place an image between the |title= (if used) and first section.As with |
|headingstyle= |
Use to alter the default CSS styling set for section headings. To alter the CSS styling for a specific section's heading, use |
|contentstyle= |
Use to alter the default CSS styling set for section content. To alter the CSS styling for a particular section's content, use |
|heading1= | First section's heading (if needed). |
|content1= | First section's content (required). |
|heading2= | Second section's heading (if needed). |
|content2= | Second section's content (if needed). |
|heading3= | Third section's heading (if needed). |
|content3= | Third section's content (if needed). |
| ...... etc ...... | |
|heading35= | Currently, the last possible section heading and/or content (if needed). |
|content35= | |
Other parameters
[edit]| Parameter | Explanation |
|---|---|
|above= |
above= offered by {{Navbox}}. |
|
Microformat classes for the corresponding parameters. |
|below= |
Use to e.g., add one or more portal links to the bottom of the template (by default in bold). |
|
Use to alter default CSS styling for the corresponding parameters. |
|cellspacing= |
Use to amend the default cellspacing set for the infobox-class table with which the sidebar is built. |
|cellpadding= |
Ditto the default cellpadding. |
|navbar= (or |tnavbar=) |
Set to "none" (without the quotes) to remove the {{navbar}} links appearing at the bottom of the sidebar. |
|navbaroptions= (or |tnavbaroptions=) |
Use to specify more options for the navbar at the bottom of the sidebar (see {{navbar}} for options available). |
Handling long links
[edit]{{Normalwraplink}} may be used to handle links that should wrap within the sidebar or otherwise need to be made to wrap in order to prevent the sidebar becoming too wide. Use {{Normalwraplink|longlinkname}}, where |longlinkname is the long link without its square brackets.
Use the |wraplinks=true parameter to turn link wrapping off for the whole template.
Full blank syntax
[edit](omitting sections 4 to penultimate)
{{Sidebar
| name = {{subst:PAGENAME}}
| bodyclass = <!--or class-->
| bodystyle = <!--or style-->
| width =
| cellspacing =
| cellpadding =
| outertitle =
| outertitleclass =
| outertitlestyle =
| topimage =
| topimageclass =
| topimagestyle =
| topcaption =
| topcaptionstyle =
| pretitle =
| pretitleclass =
| pretitlestyle =
| title =
| titleclass =
| image =
| imageclass =
| imagestyle =
| caption =
| captionstyle =
| above =
| aboveclass =
| headingclass =
| headingstyle =
| contentclass =
| contentstyle =
| heading1style =
| heading1 =
| content1style =
| content1 =
| heading2style =
| heading2 =
| content2style =
| content2 =
| heading3style =
| heading3 =
| content3style =
| content3 =
<!--etc.-->
| heading35style =
| heading35 =
| content35style =
| content35 =
| below =
| belowclass =
| navbar = <!--or tnavbar-->
| navbarstyle = <!--or tnavbarstyle-->
| navbaroptions = <!--or tnavbaroptions-->
| wraplinks = true/false
}}