Template:Person: Difference between revisions

From elijah
Jump to navigation Jump to search
No edit summary
WikiSync push v1.0
 
(19 intermediate revisions by the same user not shown)
Line 1: Line 1:
<!-- https://elijahwiki.info/index.php/Template:Person -->
<!-- WikiSync | version=1.0 | updated=2026-04-27 -->
 
<includeonly>
<includeonly>
__NOFACTBOX__
__NOFACTBOX__
<!-- Categorize all described files (optional) -->
[[Category:People]]
[[Category:People]]


<!-- Store semantic data invisibly -->
<!-- ==========================================================
<div style="display:none;">
    DATA STORAGE (THE "SET" BLOCK)
{{#if:{{{HasType|PublicFigure}}}|[[HasType::{{#if:{{{HasType|}}}|{{{HasType}}}|PublicFigure}}]]}}
    We use #set to store data silently. No hidden divs needed.
{{#if:{{{HasName|}}}|[[HasName::{{{HasName}}}]]}}
    ========================================================== -->
{{#if:{{{HasAltName|}}}|[[HasAltName::{{{HasAltName}}}]]}}
{{#set:
{{#if:{{{HasHebName|}}}|[[HasHebName::{{{HasHebName}}}]]}}
|HasType={{{HasType|PublicFigure}}}
{{#if:{{{HasYiddishName|}}}|[[HasYiddishName::{{{HasYiddishName}}}]]}}
|HasName={{{HasName|}}}
{{#if:{{{HasDateOfBirth|}}}|[[HasDateOfBirth::{{{HasDateOfBirth}}}]]}}
|HasAltName={{{HasAltName|}}}
{{#if:{{{HasDateOfDeath|}}}|[[HasDateOfDeath::{{{HasDateOfDeath}}}]]}}
|HasHebName={{{HasHebName|}}}
{{#if:{{{HasPlaceOfBirth|}}}|[[HasPlaceOfBirth::{{{HasPlaceOfBirth}}}]]}}
|HasYiddishName={{{HasYiddishName|}}}
{{#if:{{{HasPlaceOfDeath|}}}|[[HasPlaceOfDeath::{{{HasPlaceOfDeath}}}]]}}
|HasDateOfBirth={{{HasDateOfBirth|}}}
{{#if:{{{HasWikidataID|}}}|[[HasWikidataID::{{{HasWikidataID}}}]]}}
|HasDateOfDeath={{{HasDateOfDeath|}}}
{{#if:{{{HasMazalID|}}}|[[HasMazalID::{{{HasMazalID}}}]]}}
|HasPlaceOfBirth={{{HasPlaceOfBirth|}}}
{{#if:{{{HasVIAFID|}}}|[[HasVIAFID::{{{HasVIAFID}}}]]}}
|HasPlaceOfDeath={{{HasPlaceOfDeath|}}}
{{#if:{{{HasImage|}}}|[[HasImage::{{{HasImage}}}]]}}
|HasWikidataID={{{HasWikidataID|}}}
{{#if:{{{HasArticle|}}}|[[HasArticle::{{{HasArticle}}}]]}}
|HasMazalID={{{HasMazalID|}}}
{{#if:{{{HasProfession|}}}|[[HasProfession::{{{HasProfession}}}]]}}
|HasVIAFID={{{HasVIAFID|}}}
|HasImage={{{HasImage|}}}
|HasArticle={{{HasArticle|}}}
|HasBibLink={{{HasBibLink|}}}
|HasYIVOLink={{{HasYIVOLink|}}}
|HasWikiLink={{{HasWikiLink|}}}
}}


{{#if:{{{HasURL|}}}|[[HasURL::{{{HasURL}}}]]}}
<!-- Handle List Properties (Split by semicolon or comma) -->
<!-- 1. External Resources: We assume raw text storage for JSON export simplicity,
    but validation happens on display. -->
{{#if:{{{HasExtResources|}}}|
  {{#arraymap:{{{HasExtResources|}}}|;|@@|{{#set:HasExtResources=@@}} }}
}}


<!--Take the value of HasURL, split it at every semicolon (;), and create one [[HasURL::URL]] triple per item -->
<!-- Handle Related Entries List -->
<!-- {{#arraymap:{{{HasURL|}}}|;|@@|[[HasURL::@@]]|}} -->
{{#if:{{{HasRelatedEntries|}}}|
  {{#arraymap:{{{HasRelatedEntries|}}}|;|@@|{{#set:HasRelatedEntries=@@}}|}}
}}


<!-- Multiple URLs separated by semicolon: validate each before storing -->
<!-- Handle Profession List (Controlled Vocabulary) -->
{{#arraymap:{{{HasURL|}}}|;|@@|
<!-- We split by semicolon so "Rabbi;Author" becomes two distinct data values -->
   {{#if: {{#rmatch:@@|^https?://}} |
{{#if:{{{HasProfession|}}}|
    [[HasURL::@@]]  <!-- valid, stored -->
   {{#arraymap:{{{HasProfession|}}}|;|@@|{{#set:HasProfession=@@}}|}}
  |
    <!-- invalid, not stored -->
  }}
}}
}}


</div>
<!-- ==========================================================
    VISUAL DISPLAY (THE CARD)
    ========================================================== -->
<div class="person-card" style="
  font-family: Georgia, 'Times New Roman', serif;
  border: 1px solid #c8d0d8;
  border-radius: 6px;
  background: #ffffff;
  width: 100%;
  margin: 0 0 1.5em 0;
  box-shadow: 0 2px 8px rgba(0,0,0,0.10);
  overflow: hidden;
  display: block;
  box-sizing: border-box;
">
 
  <!-- Card Header -->
  <div style="
    background: linear-gradient(135deg, #2c3e50 0%, #3d5166 100%);
    color: #ffffff;
    padding: 0.75em 1em 0.6em 1em;
  ">
    <div style="font-size:1.25em; font-weight:bold; letter-spacing:0.02em; line-height:1.2;">
      {{{HasName|{{PAGENAME}}}}}
    </div>
    {{#if:{{{HasAltName|}}}|
      <div style="font-size:0.82em; opacity:0.80; margin-top:0.2em;">{{{HasAltName}}}</div>
    }}
  </div>
 
  <!-- Body: two-column layout — data left, image right -->
  <div style="padding: 0.85em 1em 0.9em 1em; display:table; width:100%; box-sizing:border-box;">
 
    <!-- Left column: all data -->
    <div style="display:table-cell; vertical-align:top; text-align:left;">
 
      <!-- Hebrew / Yiddish Names -->
      {{#if:{{{HasHebName|}}}{{{HasYiddishName|}}}|
        <div style="margin-bottom:0.55em; font-size:0.9em; color:#444;">
          {{#if:{{{HasHebName|}}}|<span style="font-weight:bold; color:#555;">עב׳:</span>&nbsp;<span lang="he" dir="rtl" style="font-size:1.05em;">{{{HasHebName}}}</span>}}
          {{#if:{{{HasHebName|}}}{{{HasYiddishName|}}}|{{#if:{{{HasHebName|}}}|{{#if:{{{HasYiddishName|}}}|&ensp;&bull;&ensp;}}}}}}
          {{#if:{{{HasYiddishName|}}}|<span style="font-weight:bold; color:#555;">יידיש:</span>&nbsp;<span lang="yi" dir="rtl" style="font-size:1.05em;">{{{HasYiddishName}}}</span>}}
        </div>
      }}
 
      <!-- Vital Statistics — always show both rows -->
      <table style="border-collapse:collapse; font-size:0.88em; margin-bottom:0.55em;">
        <tr>
          <td style="color:#777; padding:0.12em 0.8em 0.12em 0; white-space:nowrap; vertical-align:top; text-align:left;">'''Born'''</td>
          <td style="color:#222; text-align:left;">
            {{#if:{{{HasDateOfBirth|}}}{{{HasPlaceOfBirth|}}}|
              {{#if:{{{HasDateOfBirth|}}}|{{{HasDateOfBirth}}}}}{{#if:{{{HasDateOfBirth|}}}{{{HasPlaceOfBirth|}}}|{{#if:{{{HasDateOfBirth|}}}|{{#if:{{{HasPlaceOfBirth|}}}|&ensp;·&ensp;}}}}}}{{#if:{{{HasPlaceOfBirth|}}}|[[{{{HasPlaceOfBirth}}}]]}}
            |<span style="color:#bbb;">—</span>}}
          </td>
        </tr>
        <tr>
          <td style="color:#777; padding:0.12em 0.8em 0.12em 0; white-space:nowrap; vertical-align:top; text-align:left;">'''Died'''</td>
          <td style="color:#222; text-align:left;">
            {{#if:{{{HasDateOfDeath|}}}{{{HasPlaceOfDeath|}}}|
              {{#if:{{{HasDateOfDeath|}}}|{{{HasDateOfDeath}}}}}{{#if:{{{HasDateOfDeath|}}}{{{HasPlaceOfDeath|}}}|{{#if:{{{HasDateOfDeath|}}}|{{#if:{{{HasPlaceOfDeath|}}}|&ensp;·&ensp;}}}}}}{{#if:{{{HasPlaceOfDeath|}}}|[[{{{HasPlaceOfDeath}}}]]}}
            |<span style="color:#bbb;">—</span>}}
          </td>
        </tr>
      </table>
 
      <!-- Professional Data -->
      {{#if:{{{HasProfession|}}}|
        <div style="font-size:0.88em; margin-bottom:0.55em; text-align:left;">
          <span style="color:#777;">'''Known for'''</span>
          <ul style="margin:0.2em 0 0 1.2em; padding:0;">
            <!-- {{#arraymap:{{{HasProfession|}}}|;|@@|[[Term:@@|@@]]|, }} --> <!-- Auto-links to Term:Namespace -->
            <!--
              We use [[HasProfession::@@]] syntax here.
              This displays the text "@@" (e.g. Rabbi), but clicking it
              searches the wiki for other people with that same property value.
            -->
            {{#arraymap:{{{HasProfession|}}}|;|@@|<li>[[HasProfession::@@]]</li>|}}
          </ul>
        </div>
      }}


<!-- Visible content: nicely formatted person card -->
      <!-- Related Article -->
<div class="person" style="border:1px solid #ddd; padding:.8em; background:#fafafa; margin:.8em 0; overflow:auto;">
      <div style="font-size:0.88em; margin-bottom:0.3em; text-align:left;">
        {{#if:{{{HasArticle|}}}|
          <span style="color:#777;">'''Related Article'''</span>&ensp;[[{{{HasArticle}}}]]
        |
          <span style="color:#aaa; font-style:italic;">No Related Article</span>
        }}
      </div>


  <!-- Float the image to the right -->
      <!-- Related Entries -->
  {{#if:{{{HasImage|}}}|
      {{#if:{{{HasRelatedEntries|}}}|
    <div style="float:right; margin:0 0 .5em .8em;">
        <div style="font-size:0.88em; margin-bottom:0.3em; text-align:left;">
      [[{{{HasImage}}}|thumb|200px|{{{HasName|}}}]]
          <span style="color:#777;">'''Related Entries'''</span>
    </div>
          <ul style="margin:0.2em 0 0 1.2em; padding:0;">
  }}
            {{#arraymap:{{{HasRelatedEntries|}}}|;|@@|<li>[[@@]]</li>|}}
          </ul>
        </div>
      }}


  <!-- Person details -->
      <!-- Bibliography & Encyclopaedia Links -->
  {{#if:{{{HasName|}}}|'''Name:''' {{{HasName}}}<br/>}}
      <div style="font-size:0.88em; margin-bottom:0.3em; text-align:left;">
  {{#if:{{{HasAltName|}}}|'''Alternative name:''' {{{HasAltName}}}<br/>}}
        {{#if:{{{HasBibLink|}}}|
  {{#if:{{{HasHebName|}}}|'''Hebrew name:''' {{{HasHebName}}}<br/>}}
          <span style="color:#777;">'''Selected bibliography'''</span>&ensp;[[{{{HasBibLink}}}]]
  {{#if:{{{HasYiddishName|}}}|'''Yiddish name:''' {{{HasYiddishName}}}<br/>}}
        |
  {{#if:{{{HasType|}}}|'''Type:''' {{{HasType}}}<br/>}}
          <span style="color:#aaa; font-style:italic;">No Selected bibliography</span>
  {{#if:{{{HasDateOfBirth|}}}|'''Date of birth:''' {{{HasDateOfBirth}}}<br/>}}
        }}
  {{#if:{{{HasPlaceOfBirth|}}}|'''Place of birth:''' {{{HasPlaceOfBirth}}}<br/>}}
      </div>
  {{#if:{{{HasDateOfDeath|}}}|'''Date of death:''' {{{HasDateOfDeath}}}<br/>}}
      <div style="font-size:0.88em; margin-bottom:0.3em; text-align:left;">
  {{#if:{{{HasPlaceOfDeath|}}}|'''Place of death:''' {{{HasPlaceOfDeath}}}<br/>}}
        {{#if:{{{HasYIVOLink|}}}|
  {{#if:{{{HasProfession|}}}|'''Known for:''' {{{HasProfession}}}<br/>}}
          <span style="color:#777;">'''YIVO Encyclopedia entry'''</span>&ensp;[[{{{HasYIVOLink}}}]]
  {{#if:{{{HasArticle|}}}|'''Related article:''' {{{HasArticle}}}<br/>}}
        |
  {{#if:{{{HasWikidataID|}}}|'''Wikidata ID:''' {{{HasWikidataID}}}<br/>}}
          <span style="color:#aaa; font-style:italic;">No YIVO Encyclopedia entry</span>
  {{#if:{{{HasMazalID|}}}|'''Mazal ID:''' {{{HasMazalID}}}<br/>}}
        }}
  {{#if:{{{HasVIAFID|}}}|'''VIAF ID:''' {{{HasVIAFID}}}<br/>}}
      </div>
  <!-- {{#if:{{{HasURL|}}}|'''External link:''' [{{{HasURL}}} link]<br/>}} -->
      <div style="font-size:0.88em; margin-bottom:0.55em; text-align:left;">
        {{#if:{{{HasWikiLink|}}}|
<!-- {{#if:{{{HasURL|}}}|   -->
          <span style="color:#777;">'''Wikipedia entry'''</span>&ensp;[[{{{HasWikiLink}}}]]
<!--    '''External links:''' -->
        |
<!--    {{#arraymap:{{{HasURL}}}|;|@@|[@@ link]|<br/>}}<br/>  -->
          <span style="color:#aaa; font-style:italic;">No Wikipedia entry</span>
<!--  }} -->  
        }}
      </div>


  <!-- External links with validation -->
      <!-- Other External Links with Validation -->
  {{#if:{{{HasURL|}}}|
      {{#if:{{{HasExtResources|}}}|
    '''External links:'''<br/>
        <div style="font-size:0.88em; margin-bottom:0.4em; text-align:left;">
          <span style="color:#777;">'''External Links'''</span><br/>
          {{#arraymap:{{{HasExtResources}}}|;|@@|
            {{#if: {{#rmatch:@@|^https?://}} | <div style="padding-left:0.6em;">[@@ @@]</div> | <!-- Invalid hidden --> }}
          |}}
        </div>
      }}


    <!-- Print valid URLs as links -->
      <!-- Identifiers (Crucial for TEI/MARC21 Interop) -->
    {{#arraymap:{{{HasURL}}}|;|@@|
      {{#if:{{{HasWikidataID|}}}{{{HasVIAFID|}}}{{{HasMazalID|}}}|
      {{#if: {{#rmatch:@@|^https?://}} |
        <div style="
        [@@ link]<br/>
          border-top: 1px solid #e4e8ec;
      |
          margin-top: 0.6em;
         <!-- Do not show invalid URLs here -->
          padding-top: 0.5em;
          font-size: 0.78em;
          color: #888;
          line-height: 1.7;
          text-align: left;
        ">
          {{#if:{{{HasWikidataID|}}}|<span>'''Wikidata:'''&nbsp;[https://www.wikidata.org/wiki/{{{HasWikidataID}}} {{{HasWikidataID}}}]</span>&emsp;}}
          {{#if:{{{HasVIAFID|}}}|<span>'''VIAF:'''&nbsp;[https://viaf.org/viaf/{{{HasVIAFID}}} {{{HasVIAFID}}}]</span>&emsp;}}
          {{#if:{{{HasMazalID|}}}|<span>'''Mazal:'''&nbsp;{{{HasMazalID}}}</span>}}
         </div>
       }}
       }}
    }}


     <!-- List invalid URLs -->
     </div><!-- /left column -->
     {{#arraymap:{{{HasURL}}}|;|@@|
 
      {{#if: {{#rmatch:@@|^https?://}} |
     <!-- Right column: image or placeholder -->
         <!-- valid; do nothing -->
    <div style="display:table-cell; vertical-align:top; padding-left:1em; width:160px; min-width:160px;">
      |
      {{#if:{{{HasImage|}}}|
        <span style="color:red; font-size:90%;">Invalid URL ignored: @@</span><br/>
        [[{{#show: {{{HasImage|}}} |?HasFile#-}}|thumb|150px|center|{{{HasName|}}}]]
      |
         <div style="
          width:150px;
          height:180px;
          background:#f0f2f5;
          border:1px dashed #c0c8d0;
          border-radius:4px;
          display:flex;
          align-items:center;
          justify-content:center;
          color:#b0b8c4;
          font-size:0.78em;
          text-align:center;
          line-height:1.4;
          box-sizing:border-box;
          padding:0.5em;
        ">No image<br/>available</div>
       }}
       }}
     }}
     </div><!-- /right column -->
  }}


  </div><!-- /body -->


</div>
</div>
Line 117: Line 244:
  |HasMazalID=MAZAL-000045
  |HasMazalID=MAZAL-000045
  |HasVIAFID=22945141
  |HasVIAFID=22945141
  |HasImage=File:Jacob_ben_Moses.jpg
  |HasImage=Image:Josef Perl
  |HasArticle=Article:The Jewish Council of Lviv
  |HasArticle=Article:The Jewish Council of Lviv
  |HasProfession=Community leader and rabbinical scholar
  |HasProfession=Community leader and rabbinical scholar
  |HasURL=https://example.org/persons/jacob_ben_moses; https://en.wikipedia.org/wiki/Jacob_ben_Moses
  |HasExtResources=https://example.org/persons/jacob_ben_moses; https://en.wikipedia.org/wiki/Jacob_ben_Moses
|HasRelatedEntries=Article:Haskalah; Article:Galician Jewry
|HasWikiLink=
|HasYIVOLink=
|HasBibLink=
}}
}}
</pre>
</pre>
</noinclude>
</noinclude>

Latest revision as of 20:21, 30 April 2026



Use this template on Person: pages to describe individual people.

Example:

{{Person
 |HasName=Perl ,Joseph
 |HasHebName=פרל, יוסף
 |HasYiddishName=פערל, יוסף
 |HasType=PublicFigure
 |HasDateOfBirth=1773
 |HasPlaceOfBirth=Community:Lviv
 |HasDateOfDeath=1839
 |HasPlaceOfDeath=Community:Brody
 |HasWikidataID=Q123456
 |HasMazalID=MAZAL-000045
 |HasVIAFID=22945141
 |HasImage=Image:Josef Perl
 |HasArticle=Article:The Jewish Council of Lviv
 |HasProfession=Community leader and rabbinical scholar
 |HasExtResources=https://example.org/persons/jacob_ben_moses; https://en.wikipedia.org/wiki/Jacob_ben_Moses
 |HasRelatedEntries=Article:Haskalah; Article:Galician Jewry
 |HasWikiLink=
 |HasYIVOLink=
 |HasBibLink=
}}