Template:Breadcrumbs

From Cosmoteer Wiki
Jump to navigation Jump to search
[[ Template:(({1Template:))} |]]

Examples

CalloutIconWarning.pngWarning
If used inline, the template will wrap onto the next line.

1. Breadcrumbs to the ship «Acolyte of Adhara» using its category hierarchy: ShipsCabal of Sol Ships (category) → Cabal of Sol Combat Ships (category)

2. Same as above, but with option to remove "Category: " from the page names that have them.

3. Same as first example, but with name overrides (override params are placed at the end of the template): (1) Cabal of Sol Ships (category) → Cabal of Sol, (2) Cabal of Sol Combat Ships (category) → Cabal of Sol

4. Same as first example, but with name overrides (override params placed after their respective links): (1) Cabal of Sol Ships (category) → Cabal of Sol, (2) Cabal of Sol Combat Ships (category) → Cabal of Sol


Allows to generate breadcrumbs for arbitrary paths.

Template parameters

This template prefers inline formatting of parameters.

ParameterDescriptionTypeStatus
Remove category from nameremove category name

If set removes "Category: " from category names.

Default
false
Booleansuggested
Page 1page 1 1

1st page.

Page namerequired
Page 1 name overridepage 1 name

An override for the 1st page name.

Lineoptional
Page 2page 2 2

2nd page.

Page namesuggested
Page 2 name overridepage 2 name

An override for the 2nd page name.

Lineoptional
Page 3page 3 3

3rd page.

Page namesuggested
Page 3 name overridepage 3 name

An override for the 3rd page name.

Lineoptional
Page 4page 4 4

4th page.

Page namesuggested
Page 4 name overridepage 4 name

An override for the 4th page name.

Lineoptional
Page 5page 5 5

5th page.

Page namesuggested
Page 5 name overridepage 5 name

An override for the 5th page name.

Lineoptional
Page 6page 6 6

6th page.

Page namesuggested
Page 6 name overridepage 6 name

An override for the 6th page name.

Lineoptional
Page 7page 7 7

7th page.

Page namesuggested
Page 7 name overridepage 7 name

An override for the 7th page name.

Lineoptional
Page 8page 8 8

8th page.

Page namesuggested
Page 8 name overridepage 8 name

An override for the 8th page name.

Lineoptional

Javascript script used to generate the template data

const recordsToGenerate = 8;

const templateData = {
    params: {
        "remove category name": {
            "label": "Remove category from name",
            "description": "If set removes \"Category: \" from category names.",
            "type": "boolean",
            "default": "false",
            "suggested": "true"
        }
    },
    description: "Allows to generate breadcrumbs for arbitrary paths.",
    paramOrder: [
        "remove category name"
    ],
    format: "inline"
};
for (let i = 1; i <= recordsToGenerate; i++) {
    const pageParamName = `page ${i}`;
    const pageNameOverrideParamName = `page ${i} name`;

    templateData.params[pageParamName] = {
        "aliases": [
            `${i}`
        ],
        "label": `Page ${i}`,
        "description": `${getOrdinalNum(i)} page.`,
        "type": "wiki-page-name",
        "required": i === 1,
        ...(i > 1 ? { suggested: true } : {})
    };

    templateData.params[pageNameOverrideParamName] = {
        "label": `Page ${i} name override`,
        "description": `An override for the ${getOrdinalNum(i)} page name.`,
        "type": "line",
    };


    templateData.paramOrder.push(pageParamName);
    templateData.paramOrder.push(pageNameOverrideParamName);
}

download(JSON.stringify(templateData, null, 4), 'result.json');


function getOrdinalNum(num) {
    switch (num) {
        case 1:
            return '1st';
        case 2:
            return '2nd';
        case 3:
            return '3rd';
        default:
            return `${num}th`
    }
}


function download(data, filename) {
    const file = new Blob([data], { type: 'text' });
    const link = document.createElement("a");
    const url = URL.createObjectURL(file);
    link.href = url;
    link.download = filename;
    document.body.appendChild(link);
    link.click();
    link.remove();
}