Vorlage:Lead/Inner: Unterschied zwischen den Versionen
Aus Offene Naturführer
(Mit der vorigen Version, in der die zweite Variante von Common Names auskommentiert war, geland die Generierung des Brassica-Schlüssels. Hier Gegentest: Jetzt wieder vollständiges Template!) |
(Testweise zurück zu Version vom 21. Oktober 2010, 19:38 Uhr) |
||
Zeile 1: | Zeile 1: | ||
− | <noinclude> | + | <noinclude>Version 3.7. |
− | + | NEW: length estimate based on resulttext instead of resultlink (for empty result!!!) | |
− | + | Previous changes: | |
− | + | a) nested works now on parents with backlinks and alternatives (1 and 1*, 1 and 1'). 1 and 1- NEEDS TESTING! | |
− | + | b) result text+ empty result supported (non-linking result). | |
+ | d) nowrap on result/qualifier reworked! | ||
+ | d) result=http:... now works. | ||
+ | e) Nested subkey ok. Resultqualifier no longer in () | ||
− | + | '''See [[Template:Key Start/doc| Key Start]] for the main documentation.''' | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | [[Category:Single-access key templates]] | |
− | + | ||
− | ! | + | </noinclude><includeonly><!-- |
+ | // Creating additional space before starting a new couplet (but not between leads of the same couplet). Both this and truly unique id attributes on leads depend on "Extension:Variables" for saving the current couplet number to compare with previous to determine the position where a new couplet starts. | ||
+ | -->{{#ifeq: {{{leadID}}}|{{#var: decisiontreePreviousCouplet}}<!-- | ||
+ | THEN (2nd/3rd/etc lead in a couplet:) | ||
+ | -->|{{#vardefine: decisiontreeAlternative|{{#expr: {{#var: decisiontreeAlternative}}+1}}<!-- -->}}<!-- | ||
+ | --><tr id="L{{{keyID}}}_{{{leadID}}}_{{#var:decisiontreeAlternative}}_row" class="dt-row"><!-- | ||
+ | -->{{#if:{{{parentlead}}} | ||
+ | |<!--then insert two columns--><td></td><td></td><!-- | ||
+ | -->}}<!-- | ||
+ | --><td class="dt-nodeid">{{{displayID}}}</td><!-- | ||
+ | ELSE (first lead): | ||
+ | -->|{{#if: {{{parentlead}}}{{#ifeq: 0|{{#var: decisiontreePreviousCouplet}}|FIRSTCOUPLET|}}<!-- | ||
+ | then: no spacer row for nested subkey rows or before first couplet | ||
+ | -->|<!-- | ||
+ | else: insert spacer | ||
+ | -->|<tr class="dt-hspacer"><td colspan="6"></td></tr> | ||
+ | }}<!-- | ||
+ | -->{{#vardefine: decisiontreePreviousCouplet|{{{leadID}}}}}<!-- | ||
+ | -->{{#vardefine: decisiontreeAlternative|1}}<!-- | ||
+ | -->{{#if: {{{subheading}}}<!-- | ||
+ | -->|<tr class="dt-subheading"><!-- | ||
+ | --><td colspan="6" style="font-weight:bold;padding:0.5em 0.75em 0.3em 0.75em; <!-- | ||
+ | -->{{#switch: {{lc:{{{subheadingstyle}}}}} | ||
+ | |<!-- empty style parameter = next swwitch option = orange:--> | ||
+ | | orange = background-color:#FCFFEC; border:1px solid #ffc51a; | ||
+ | | green = background-color:#e5febe; border:1px solid #c5de9e; | ||
+ | <!-- | pink = background-color:#FCECFF; border:1px solid #c51aff; --> | ||
+ | | bigorange = background-color:#FCFFEC; border:2px solid #ffc51a; font-size:120%; | ||
+ | | biggreen = background-color:#e5febe; border:2px solid #c5de9e; font-size:120%; | ||
+ | | simple = | ||
+ | | #default = {{{subheadingstyle}}} | ||
+ | }}">{{{subheading}}}</td><!-- | ||
+ | --></tr><!-- | ||
+ | --><tr class="dt-hspacer"><td></td></tr><!-- | ||
+ | -->}}<!--END if subheading.--><!-- | ||
− | // | + | Next column is lead id. However, if parentlead is filled, it is indented 2 |
+ | columns (and the normal colspan=3 in 3rd col. is removed) | ||
+ | --><tr id="L{{{keyID}}}_{{{leadID}}}_row" class="dt-row"><!-- | ||
+ | -->{{#if: {{{parentlead}}}<!-- | ||
+ | -->|<!--then insert two columns--><td></td><td></td><!-- | ||
-->}}<!-- | -->}}<!-- | ||
+ | --><td id="L{{{keyID}}}_{{{leadID}}}" class="dt-nodeid">{{{displayID}}}</td> | ||
+ | }}<!-- End leadID == #var:decisiontreePreviousCouplet --><!-- | ||
+ | Second column contains either backlink or lead-differentiators (*, ', -, etc.); | ||
+ | if neither is present: output empty column: | ||
+ | --><td class="leadalt">{{{leadpart2}}}</td><!-- | ||
− | + | Third column is the main statement text plus the result. To make distribution of | |
− | -- | + | columns variable row-by-row, this uses a nested inner table: |
− | + | --><td class="lead-row1" {{#if:{{{parentlead}}}||colspan="3"}}><!-- | |
− | + | --><table class="nested {{#if: {{{detailtext}}}{{{image m}}}<!--make table collapsible if EXTRA txt/imgs exist:-->|<nowiki> </nowiki>collapsible collapsed}}" width="100%" cellspacing="0" cellpadding="0"><!-- | |
− | -->< | + | --><tr><!-- |
− | + | --><th class="leadtxt" {{#ifexpr:{{#len:{{{next}}}{{{resulttext}}} }} < 5 |width="95%"}}><!-- | |
− | + | --><span class="leadspan">{{Trim|1={{{statement}}}}} </span><!-- | |
− | + | --></th><!-- | |
− | --> | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | --> | + | |
− | // | + | Second column is a pointer to further leads and/or to a taxon/subkey result; both |
− | // | + | will be autolinked. "commonnames" is handled here as separate parameter to |
− | // | + | increase re-formatting options later on. |
− | -->< | + | -->{{#if:{{{resulttext}}}{{{nested}}}<!-- |
+ | depending on resultlink render plain text or link (to wiki taxon page or a dedicated subkey page): | ||
+ | THEN-->|<td class="leadresult"><!-- | ||
+ | -->{{#if: {{{commonnames}}}<!-- | ||
+ | Note: no-wrap does not works because commonnames can be multiple and long; | ||
+ | replace function makes blank to nbsp but reverts at commas; <nowiki> </nowiki> | ||
+ | and   are ways to create a blank that is not trimmed; nowiki works better in | ||
+ | find,   may work better in replace. ATTENTION: this is sensitive code, it | ||
+ | still behaves slightly strange but alternatives did not work at all. Also: | ||
+ | replacing with spans to have no-wrap and wrappable spans does not work in mw | ||
+ | 1.16, spans are "sanitized"! | ||
+ | THEN-->|<!-- commonnames == true | ||
+ | --><span class="commonnames"> <!-- | ||
+ | -->{{#replace:<!-- | ||
+ | -->{{#replace:<!-- | ||
+ | -->{{#replace:{{{commonnames}}}|,<nowiki> </nowiki>|,§§}}<!-- | ||
+ | -->|<nowiki> </nowiki>| }}<!-- | ||
+ | -->|§§| }}<!-- | ||
+ | -->{{#if:{{{image a}}}<!-- use br if side-bar images present, else blank:-->|<br />|<nowiki> </nowiki>}}<!-- | ||
+ | --></span><!-- | ||
+ | END if commonnames | ||
+ | -->}}<!-- | ||
+ | * Result text and qualifier need white background and (if together <40 char) a common nowrap: | ||
+ | --><span class="leadresults{{#ifexpr:{{#len:{{{resulttext}}}{{{resultqualifier}}} }} < 40|<nowiki> </nowiki>nowrap}}"><!-- | ||
+ | --><span class="leadout{{#ifexpr:{{#len:{{{resulttext}}} }} < 40|<nowiki> </nowiki>nowrap}}"> <!-- | ||
+ | -->{{#ifeq: {{#sub: {{{resultlink}}}|0|5}}|http:<!-- | ||
+ | http-link: | ||
+ | THEN -->|[{{{resultlink}}} {{{resulttext}}}]<!-- | ||
+ | ELSE -->|{{#if:{{{resultlink}}}<!-- | ||
+ | wiki-link: | ||
+ | -->|[[{{{resultlink}}}|{{{resulttext}}}]]<!-- | ||
+ | non-link: | ||
+ | -->|{{{resulttext}}}<!-- | ||
+ | END -->}}<!-- | ||
+ | END -->}}<!-- | ||
+ | --></span><!-- | ||
+ | -->{{#if: {{{resultqualifier}}}<!-- | ||
+ | THEN -->|{{#if:{{{image a}}}<!-- | ||
+ | use br if side-bar images present, else a wrappable blank: | ||
+ | -->|<br /><!-- | ||
+ | -->|<nowiki> </nowiki><!-- | ||
+ | -->}}<!-- | ||
+ | --><span class="resultqualifier{{#ifexpr:{{#len:{{{resultqualifier}}} }} < 40|<nowiki> </nowiki>nowrap}}"><!-- | ||
+ | --><nowiki> </nowiki>{{{resultqualifier}}}<!-- | ||
+ | --></span><!-- | ||
+ | end if res.qual., then closing nowrap span around result+qualif.: | ||
+ | END -->}}<!-- | ||
+ | --></span><!-- END span.leadresults | ||
+ | -->{{#if: {{{next}}}<!-- | ||
+ | NEXT-LEAD-POINTER in addition to "resultlink": (result+next-lead co-occur, e.g., | ||
+ | for species-result where key continues with subspecies. Always new line, double | ||
+ | arrow:) | ||
+ | THEN -->|<br /><span class="leadon"> [[#L{{{keyID}}}_{{{parentlead}}}{{{next}}}| ►► {{{next}}}]]</span><!-- | ||
+ | ELSE -->|{{#if:{{{nested}}}<!-- | ||
+ | nested (? pointer to indented subkey) | ||
+ | Note: leadpart2 could be a backlink... | ||
+ | THEN-->|<br /><!-- | ||
+ | --><span class="leadon"> [[#L{{{keyID}}}_{{{leadID}}}<!-- | ||
+ | -->{{#ifeq:{{#sub:{{{leadpart2}}}|0|1}}|[<!-- | ||
+ | -->|<!--THEN nothing | ||
+ | -->|<!--ELSE -->{{{leadpart2}}}<!-- | ||
+ | -->}}<!-- | ||
+ | -->{{{nested}}}<!-- | ||
+ | ELSE-->| ▼▼ {{{nested}}}]]<!-- | ||
+ | --></span><!-- | ||
+ | * Note on above: leadpart2 may be a * forbidden in ids; however, some step in mediawiki will convert * to .2A | ||
+ | END -->}}<!-- next | ||
+ | END -->}}<!-- nested | ||
+ | --></td><!-- td.leadresult | ||
+ | |||
+ | ELSE resulttext or nested | ||
+ | Only NEXT-LEAD-POINTER (without result); format as internal link: | ||
+ | -->|<td class="leadresult"><!-- | ||
+ | --><span class="leadon"> [[#L{{{keyID}}}_{{{parentlead|}}}{{{next}}}| ► {{{next}}}]]</span><!-- | ||
+ | --></td><!-- | ||
+ | END -->}}<!-- resulttext or nested | ||
+ | --></tr><!-- | ||
− | / | + | ADDITIONAL info below the statement/result line: |
− | --> | + | ERROR REPORTING: Any content in 4th and later unnamed parameters is an error. |
− | + | -->{{#if: {{{errors}}}<!-- | |
− | + | -->|<tr><th colspan="2" class="leaderror">{{{errors}}}</th></tr><!-- | |
− | + | -->}}<!-- | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | START EXTRA INFO and IMAGES: | |
− | + | Extra text and images from the optional parameters: "synonyms", "description", | |
− | + | "occurrence", "remarks" are already combined to detailtext here. "image | |
− | + | m/caption m" to "image r/caption r" are tested. For wrappable gallery images are | |
− | + | below detailtext | |
− | + | -->{{#if: {{{detailtext}}}{{{image m}}}<!-- | |
− | + | -->|<tr><td class="leadextras" colspan="2"><div class="leadextras">{{{detailtext}}}<!-- | |
− | + | -->{{#if: {{{image m}}}<!-- | |
− | + | At least 1 extra image present, after extra text or alone: START Secondary-IMAGE CONTENT | |
− | + | The wrapping table around float-left tables is necessary, with nothing or a div | |
− | + | the outer div will not be around, and the lines not displayed | |
− | -->|{{#if: {{{ | + | THEN-->|<table><tr><td><!-- |
− | + | -->{{#if: {{{image m}}}|{{Lead/GalleryItem|image={{{image m}}}|caption={{{caption m}}}|label={{{label m}}}|width={{Pixel2Number|{{{image m width}}}}}|height={{Pixel2Number|{{{image m height}}}}}|lines={{{captionlines}}}}}<!-- -->}}<!-- | |
− | + | -->{{#if: {{{image n}}}|{{Lead/GalleryItem|image={{{image n}}}|caption={{{caption n}}}|label={{{label n}}}|width={{Pixel2Number|{{{image n width}}}}}|height={{Pixel2Number|{{{image n height}}}}}|lines={{{captionlines}}}}}<!-- -->}}<!-- | |
− | + | -->{{#if: {{{image o}}}|{{Lead/GalleryItem|image={{{image o}}}|caption={{{caption o}}}|label={{{label o}}}|width={{Pixel2Number|{{{image o width}}}}}|height={{Pixel2Number|{{{image o height}}}}}|lines={{{captionlines}}}}}<!-- -->}}<!-- | |
− | + | -->{{#if: {{{image p}}}|{{Lead/GalleryItem|image={{{image p}}}|caption={{{caption p}}}|label={{{label p}}}|width={{Pixel2Number|{{{image p width}}}}}|height={{Pixel2Number|{{{image p height}}}}}|lines={{{captionlines}}}}}<!-- -->}}<!-- | |
− | --> | + | -->{{#if: {{{image q}}}|{{Lead/GalleryItem|image={{{image q}}}|caption={{{caption q}}}|label={{{label q}}}|width={{Pixel2Number|{{{image q width}}}}}|height={{Pixel2Number|{{{image q height}}}}}|lines={{{captionlines}}}}}<!-- -->}}<!-- |
− | + | -->{{#if: {{{image r}}}|{{Lead/GalleryItem|image={{{image r}}}|caption={{{caption r}}}|label={{{label r}}}|width={{Pixel2Number|{{{image r width}}}}}|height={{Pixel2Number|{{{image r height}}}}}|lines={{{captionlines}}}}}<!-- -->}}<!-- | |
− | + | --></td></tr><!-- | |
− | + | -->{{#if:{{{imagesfooter}}}<!-- | |
+ | -->|<tr><td colspan="10" style="text-align:right; font-size:80%; line-height:1em;">{{{imagesfooter}}}</td></tr><!-- | ||
-->}}<!-- | -->}}<!-- | ||
− | / | + | --></table><!-- |
− | + | -->}}<!-- END any image | |
+ | --></div></td></tr><!-- | ||
+ | -->}}<!-- END detailtext or image m in a second | ||
+ | --></table><!-- END of "nested" inner table --><!-- | ||
− | + | At least one larger, non-hide-able image below (image j/k): | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
-->{{#if:{{{image j}}}{{{image k}}}<!-- | -->{{#if:{{{image j}}}{{{image k}}}<!-- | ||
− | -->|<table class="nested"><tr style="vertical-align:top;"><td><!-- | + | -->|<table class="nested"><tr style="vertical-align:top;"><td><!-- |
− | -->{{#if: {{{image j}}}<!-- | + | -->{{#if: {{{image j}}}<!-- |
− | -->|<div style="padding:1em 1em 1em 0;float:left;width:{{#expr: {{Pixel2Number|{{{image j width}}}}}+15}}px;">[[{{Trim| {{{image j}}} }} |none|{{Pixel2Number|{{{image j width}}}}}x{{Pixel2Number|{{{image j height}}}}}px]]<!-- | + | -->|<!-- |
− | -->{{#if: {{{label j}}}|'''{{{label j}}}: '''}}{{{caption j}}}<!-- | + | --><div style="padding:1em 1em 1em 0;float:left;width:{{#expr: {{Pixel2Number|{{{image j width}}}}}+15}}px;">[[{{Trim| {{{image j}}} }} |none|{{Pixel2Number|{{{image j width}}}}}x{{Pixel2Number|{{{image j height}}}}}px]]<!-- |
+ | -->{{#if: {{{label j}}}|'''{{{label j}}}: '''}}{{{caption j}}}<!-- | ||
--></div><!-- | --></div><!-- | ||
− | -->}}<!-- | + | -->}}<!-- |
− | -->{{#if: {{{image k}}}<!-- | + | -->{{#if: {{{image k}}}<!-- |
− | -->|<div style="padding:1em 1em 1em 0;float:left;width:{{#expr: {{Pixel2Number|{{{image j width}}}}}+15}}px;">[[{{Trim| {{{image k}}} }} |none|{{Pixel2Number|{{{image k width}}}}}x{{Pixel2Number|{{{image k height}}}}}px]]<!-- | + | -->|<!-- |
− | -->{{#if: {{{label k}}}|'''{{{label k}}}: '''}}{{{caption k}}}<!-- | + | --><div style="padding:1em 1em 1em 0;float:left;width:{{#expr: {{Pixel2Number|{{{image j width}}}}}+15}}px;">[[{{Trim| {{{image k}}} }} |none|{{Pixel2Number|{{{image k width}}}}}x{{Pixel2Number|{{{image k height}}}}}px]]<!-- |
+ | -->{{#if: {{{label k}}}|'''{{{label k}}}: '''}}{{{caption k}}}<!-- | ||
--></div><!-- | --></div><!-- | ||
-->}}<!-- | -->}}<!-- | ||
− | --></td></tr><!-- | + | --></td></tr><!-- |
− | --></table><!-- | + | --></table><!-- end always-on image below: |
− | + | -->}}<!-- | |
− | -->}}<!-- | + | --></td><td><!-- |
− | --></td><td><!-- | + | |
+ | At least 1 sidebar image present (else empty td created): | ||
− | + | -->{{#if: {{{image a}}}<!-- | |
− | -->{{#if: {{{image a}}}<!-- | + | START RIGHT SIDEBAR IMAGE CONTENT, (image m... in contrast are hidden by default) |
− | + | up to 5 images, non-wrapping, Lead/GalleryItemNoCaption creates td! | |
− | + | → image a - e, caption a - e, image a - e width, primary images width and image | |
− | + | a - e height, primary images height (both for all images) | |
− | + | THEN-->|<table style="border:none; margin-top:0.1em;margin-left:1em;"><!-- | |
− | THEN-->|<table style="border:none; margin-top:0.1em;margin-left:1em;"><tr>{{ | + | --><tr><!-- |
− | #if: {{{image a}}}|{{Lead/GalleryItemNoCaption|image={{{image a}}}|caption={{{caption a}}}|label={{{label a}}}|width={{Pixel2Number|{{{image a width}}}}}|height={{Pixel2Number|{{{image a height}}}}}}}}}{{ | + | -->{{#if: {{{image a}}}|{{Lead/GalleryItemNoCaption|image={{{image a}}}|caption={{{caption a}}}|label={{{label a}}}|width={{Pixel2Number|{{{image a width}}}}}|height={{Pixel2Number|{{{image a height}}}}}}}<!-- -->}}<!-- |
− | #if: {{{image b}}}|{{Lead/GalleryItemNoCaption|image={{{image b}}}|caption={{{caption b}}}|label={{{label b}}}|width={{Pixel2Number|{{{image b width}}}}}|height={{Pixel2Number|{{{image b height}}}}}}}}}{{ | + | -->{{#if: {{{image b}}}|{{Lead/GalleryItemNoCaption|image={{{image b}}}|caption={{{caption b}}}|label={{{label b}}}|width={{Pixel2Number|{{{image b width}}}}}|height={{Pixel2Number|{{{image b height}}}}}}}<!-- -->}}<!-- |
− | #if: {{{image c}}}|{{Lead/GalleryItemNoCaption|image={{{image c}}}|caption={{{caption c}}}|label={{{label c}}}|width={{Pixel2Number|{{{image c width}}}}}|height={{Pixel2Number|{{{image c height}}}}}}}}}{{ | + | -->{{#if: {{{image c}}}|{{Lead/GalleryItemNoCaption|image={{{image c}}}|caption={{{caption c}}}|label={{{label c}}}|width={{Pixel2Number|{{{image c width}}}}}|height={{Pixel2Number|{{{image c height}}}}}}}<!-- -->}}<!-- |
− | #if: {{{image d}}}|{{Lead/GalleryItemNoCaption|image={{{image d}}}|caption={{{caption d}}}|label={{{label d}}}|width={{Pixel2Number|{{{image d width}}}}}|height={{Pixel2Number|{{{image d height}}}}}}}}}{{ | + | -->{{#if: {{{image d}}}|{{Lead/GalleryItemNoCaption|image={{{image d}}}|caption={{{caption d}}}|label={{{label d}}}|width={{Pixel2Number|{{{image d width}}}}}|height={{Pixel2Number|{{{image d height}}}}}}}<!-- -->}}<!-- |
− | #if: {{{image e}}}|{{Lead/GalleryItemNoCaption|image={{{image e}}}|caption={{{caption e}}}|label={{{label e}}}|width={{Pixel2Number|{{{image e width}}}}}|height={{Pixel2Number|{{{image e height}}}}}}}}}<!-- | + | -->{{#if: {{{image e}}}|{{Lead/GalleryItemNoCaption|image={{{image e}}}|caption={{{caption e}}}|label={{{label e}}}|width={{Pixel2Number|{{{image e width}}}}}|height={{Pixel2Number|{{{image e height}}}}}}}<!-- -->}}<!-- |
− | --></tr | + | --></tr><!-- |
− | + | --></table> | |
− | -->}}</td></tr></includeonly> | + | }}</td></tr></includeonly> |
Version vom 9. September 2012, 08:57 Uhr
Version 3.7.
NEW: length estimate based on resulttext instead of resultlink (for empty result!!!)
Previous changes: a) nested works now on parents with backlinks and alternatives (1 and 1*, 1 and 1'). 1 and 1- NEEDS TESTING! b) result text+ empty result supported (non-linking result). d) nowrap on result/qualifier reworked! d) result=http:... now works. e) Nested subkey ok. Resultqualifier no longer in ()
See Key Start for the main documentation.