Jump to content

Template:DOI: Difference between revisions

From TOE-E Archive
Created page with "<noinclude> = DOI Template = Displays internal and/or external DOIs for a paper/branch, and (optionally) stores them as Semantic MediaWiki properties. == Parameters == ; internal : Your TOE‑E internal DOI (e.g., 10.toe-e/0.0.3) ; external : External DOI from Zenodo / Crossref / DataCite (e.g., 10.5281/zenodo.1234567) ; store : yes/no (default yes). When "yes", sets Has internal DOI and Has external DOI. ; short : yes/no (default no). When "yes", renders..."
 
No edit summary
Line 1: Line 1:
<noinclude>
<noinclude>
= DOI Template =
= DOI Template =
Displays internal and/or external DOIs for a paper/branch, and (optionally) stores them as Semantic MediaWiki properties.
Variables-free version.


== Parameters ==
== Params ==
; internal : Your TOE‑E internal DOI (e.g., 10.toe-e/0.0.3)
; internal : TOE‑E internal DOI (e.g., 10.toe-e/0.0.2)
; external : External DOI from Zenodo / Crossref / DataCite (e.g., 10.5281/zenodo.1234567)
; external : External DOI (e.g., 10.5281/zenodo.1234567) or "pending"
; store    : yes/no (default yes). When "yes", sets [[Has internal DOI]] and [[Has external DOI]].
; store    : yes/no (default yes) sets [[Has internal DOI]] / [[Has external DOI]]
; short    : yes/no (default no). When "yes", renders a compact one‑liner.
; short    : yes/no (default no)
; label    : Optional custom label text (defaults to “DOI”).
; label    : defaults to "DOI"
 
== Examples ==
; Internal only
<nowiki>{{DOI|internal=10.toe-e/0.0.3}}</nowiki>
 
; Internal + external (Zenodo)
<nowiki>{{DOI|internal=10.toe-e/0.0.3|external=10.5281/zenodo.1234567}}</nowiki>
 
; External pending
<nowiki>{{DOI|internal=10.toe-e/0.0.3|external=pending}}</nowiki>
 
; Compact line
<nowiki>{{DOI|internal=10.toe-e/0.0.3|external=10.5281/zenodo.1234567|short=yes}}</nowiki>
 
== Properties required ==
Create once:
* [[Property:Has internal DOI]] → <nowiki>[[Has type::Text]]</nowiki>
* [[Property:Has external DOI]] → <nowiki>[[Has type::Text]]</nowiki>


== Properties to create once ==
* [[Property:Has internal DOI]] → [[Has type::Text]]
* [[Property:Has external DOI]] → [[Has type::Text]]
</noinclude><includeonly>
</noinclude><includeonly>
<!-- Normalize booleans -->
<!-- Semantic storage -->
{{#vardefine:_short|{{#switch:{{lc:{{{short|}}}}}|yes=1|true=1|1=1|#default=0}}}}
{{#if:{{{store|yes}}}|
{{#vardefine:_store|{{#switch:{{lc:{{{store|yes}}}}}|yes=1|true=1|1=1|#default=0}}}}
  {{#if:{{{internal|}}}|[[Has internal DOI::{{{internal}}}]]}}
 
  {{#if:{{{external|}}}|[[Has external DOI::{{{external}}}]]}}
<!-- Trim inputs -->
}}
{{#vardefine:i|{{{internal|}}}}}
{{#vardefine:e|{{{external|}}}}}
{{#vardefine:label|{{{label|DOI}}}}}
 
<!-- Optional semantic storage -->
{{#if:{{#var:i}}|{{#ifeq:{{#var:_store}}|1|[[Has internal DOI::{{#var:i}}]]}}}}
{{#if:{{#var:e}}|{{#ifeq:{{#var:_store}}|1|[[Has external DOI::{{#var:e}}]]}}}}


<!-- Derived display bits -->
<!-- Derived pieces -->
{{#vardefine:e_link|
{{#if:{{{short|}}}|
   {{#if:{{#var:e}}|
   {{#ifeq:{{lc:{{{short|}}}}}|yes|<!-- short=yes -->
     {{#switch:{{lc:{{#var:e}}}}
     {{#if:{{{internal|}}}{{{external|}}}|
       | pending =
       <span class="plainlinks"><b>{{{label|DOI}}}:</b>
        <!-- leave blank; render "pending" note -->
         {{#if:{{{internal|}}}|<code>{{{internal}}}</code>{{#if:{{{external|}}}| • |}}}}
      | =
        {{#if:{{{external|}}}|
         <!-- empty -->
          {{#ifeq:{{lc:{{{external}}}}}|pending|<i>(external DOI pending)</i>|[https://doi.org/{{{external}}} {{{external}}}]}}
      | #default = https://doi.org/{{#var:e}}
        }}
      </span>
      | <span style="color:#999;"><i>No DOI assigned.</i></span>
     }}
     }}
   }}
   | <!-- short != yes → fall through to box --> }}
}}
}}


<!-- Compact (short) rendering -->
{{#ifeq:{{lc:{{{short|}}}}}|yes|<!-- already rendered above -->|
{{#ifeq:{{#var:_short}}|1
  <div style="border:1px solid #ddd; background:#f9f9f9; padding:10px; margin:8px 0;">
| <!-- short=yes -->
    <span style="font-weight:600;">{{{label|DOI}}}</span><br/>
  {{#if:{{#var:i}}{{#var:e}}|
    {{#if:{{{internal|}}|<div>🔖 <span style="color:#555;">Internal:</span> <code>{{{internal}}}</code></div>}}
    <!-- If at least one present -->
    {{#if:{{{external|}}|
    <span class="plainlinks">
      <div>🌍 <span style="color:#555;">External:</span>
      <b>{{#var:label}}:</b>
        {{#ifeq:{{lc:{{{external}}}}}|pending|<i>(pending)</i>|<span class="plainlinks">[https://doi.org/{{{external}}} {{{external}}}]</span>}}
      {{#if:{{#var:i}}|<code>{{#var:i}}</code>{{#if:{{#var:e}}{{#var:i}}| • |}}}}
      </div>
      {{#if:{{#var:e}}|
    }}
        {{#ifeq:{{lc:{{#var:e}}}}|pending|<i>(external DOI pending)</i>|[{{#var:e_link}} {{#var:e}}]}}
    {{#if:{{{internal|}}}{{{external|}}}||<div style="color:#999;"><i>No DOI assigned.</i></div>}}
      }}
  </div>
    </span>
    |
    <span style="color:#999;"><i>No DOI assigned.</i></span>
  }}
| <!-- short=no (box) -->
  <div style="border:1px solid #ddd; background:#f9f9f9; padding:10px; margin:8px 0;">
    <span style="font-weight:600;">{{#var:label}}</span><br/>
    {{#if:{{#var:i}}|
      <div>🔖 <span style="color:#555;">Internal:</span> <code>{{#var:i}}</code></div>
    }}
    {{#if:{{#var:e}}|
      <div>🌍 <span style="color:#555;">External:</span>
        {{#ifeq:{{lc:{{#var:e}}}}|pending|<i>(pending)</i>|<span class="plainlinks">[{{#var:e_link}} {{#var:e}}]</span>}}
      </div>
    }}
    {{#if:{{#var:i}}{{#var:e}}||<div style="color:#999;"><i>No DOI assigned.</i></div>}}
  </div>
}}
}}
</includeonly>
</includeonly>

Revision as of 21:38, 22 August 2025

DOI Template

Variables-free version.

Params

internal
TOE‑E internal DOI (e.g., 10.toe-e/0.0.2)
external
External DOI (e.g., 10.5281/zenodo.1234567) or "pending"
store
yes/no (default yes) → sets Has internal DOI / Has external DOI
short
yes/no (default no)
label
defaults to "DOI"

Properties to create once