פתיחת התפריט הראשי
דף הבית
אקראי
כניסה לחשבון
הגדרות
אודות חב"דטקסט
חב"דטקסט
חיפוש
עריכת הדף "
יחידה:תבנית מידע/אישיות
"
אזהרה:
אינכם מחוברים לחשבון. כתובת ה־IP שלכם תוצג בפומבי אם תבצעו עריכות כלשהן. אם
תיכנסו לחשבון
או
תיצרו חשבון
, העריכות שלכם תיוחסנה לשם המשתמש שלכם ותקבלו גם יתרונות אחרים.
בדיקת אנטי־ספאם.
אין
למלא שדה זה!
local Infobox = require('Module:תבנית מידע').Infobox local LocationAndCountry = require('Module:LocationAndCountry') local PropertyLink = require('Module:PropertyLink') local ageModule = require('Module:גיל לערכי אישים') local Date = require('Module:תאריך') local hebrewDateModule = require('Module:תאריך עברי') local WikidataCrossValidation = require('Module:WikidataCrossValidation') --[[ Get general date if known, otherwise guess from hebrew date. ]] function getSpeculativeDate(generalDate, hebrewDate) if generalDate == '-' then return nil end if generalDate~=nil and generalDate~='' then return generalDate end if hebrewDate~=nil and hebrewDate~='' then local success, sepcDate = pcall(hebrewDateModule.pick, mw.getCurrentFrame():newChild{ args = {hebrew=hebrewDate, world='', exact='כן' } }) if not success or sepcDate=='' then return nil end return sepcDate end return nil end local function getDeathLabel(deathCause, entityId, gender) local result='' local fromWikidata=nil entityId = entityId or mw.wikibase.getEntityIdForCurrentPage() if ( deathCause == nil or deathCause =='' ) and entityId ~= nil then local deathCauseWikidata = mw.wikibase.getBestStatements(entityId, 'P1196') deathCauseWikidata = deathCauseWikidata and deathCauseWikidata[1] and deathCauseWikidata[1].mainsnak if deathCauseWikidata then deathCause = mw.wikibase.renderSnak(deathCauseWikidata) fromWikidata=true end end if deathCause and deathCause ~= '' then if deathCause == 'נהרג' or deathCause == 'נהרגה' or deathCause == 'מוות בקרב' or deathCause == 'נהרג בקרב' or deathCause == 'נהרגה בקרב' or deathCause == 'תאונה' or deathCause == 'טביעה' then return (gender=='נקבה' and 'נהרגה') or 'נהרג' elseif deathCause == 'נעדר' or deathCause == 'נעדרת' then return (gender=='נקבה' and 'נעדרת') or 'נעדר' elseif deathCause == 'נרצח' or deathCause == 'נרצחה' or deathCause == 'רצח' or deathCause == 'רצח המוני' or deathCause == 'רעל' then return (gender=='נקבה' and 'נרצחה') or 'נרצח' elseif deathCause == 'התאבד' or deathCause == 'התאבדה' or deathCause == 'התאבדות' then return (gender=='נקבה' and 'התאבדה') or 'התאבד' elseif deathCause == 'הוצא להורג' or deathCause == 'הוצאה להורג' or deathCause == 'עונש מוות' or deathCause == 'תלייה' then return 'הוצאה להורג' elseif not fromWikidata then result='[[קטגוריה:ערכים עם סיבת מוות שגויה בתבנית]]' end end return result .. 'פטירה' end function getEventDetails(generalDate, hebDate, eventPlace, propDate, propPlace, age, usingWikidata, infoObj) entityId = infoObj.args.entityId or mw.wikibase.getEntityIdForCurrentPage() age = age or '' local formattedEvent local placeDate = propDate if generalDate~=nil and generalDate~='' then local success, placeDateParsed = pcall(Date.newFromWikitext, generalDate) if success then placeDate = placeDateParsed end formattedEvent = generalDate .. age if hebDate~=nil and hebDate~='' then formattedEvent = formattedEvent ..'<br/>' ..hebDate end elseif hebDate~=nil and hebDate~='' then formattedEvent = hebDate .. age end if (eventPlace == nil or eventPlace == '') and entityId then local success, res = pcall(LocationAndCountry.displayFromParams, propPlace, entityId, placeDate , 1) if success and res and #res>0 then usingWikidata = true eventPlace = res end else local pageNs = mw.title.getCurrentTitle().namespace if pageNs==0 and not infoObj.isNonPerson then local matching = WikidataCrossValidation.crossValidate(eventPlace, propPlace, entityId ) if matching then table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, propPlace)) end end end if eventPlace~='' and eventPlace~=nil and eventPlace~='-' then formattedEvent = formattedEvent..'<br/>' ..eventPlace end if usingWikidata and entityId then formattedEvent = formattedEvent .. ' [[File:Blue pencil RTL.svg|15px|link=https://www.wikidata.org/wiki/'..entityId.. '?uselang=he#P569|עריכת הנתון בוויקינתונים]]' end return formattedEvent, usingWikidata end function addMissingImage(infoObj, birthDate, deathDate, gender) if infoObj.args.image ~= nil and #infoObj.args.image > 0 then return end -- there is already image local latestDate = deathDate or birthDate if latestDate == nil then return end local dateModule = require('Module:תאריך') local success, res = pcall(dateModule.parseDateRange, latestDate, 'raw') if success==false then return end -- there is no known VALID date local yearsEstimated = res/(60*60*24*365) if yearsEstimated>150 then return end local frame = mw.getCurrentFrame() infoObj.args.image = frame:expandTemplate{ title = 'אין תמונה', args = { gender, ['יישור'] = 'מרכז' } } end function fillWikidataParam(templateArgs, paramName, property, infoObj) local usingWikidata = false if infoObj.args.entityId == nil then local matching = WikidataCrossValidation.crossValidate(templateArgs[paramName], property, infoObj.args.entityId ) if matching then table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, property)) end return false -- no wikidata entity end if templateArgs[paramName]==nil or templateArgs[paramName]=='' then templateArgs[paramName] = PropertyLink.getPropertyByOptions( property, infoObj.args.entityId ) if templateArgs[paramName] and #templateArgs[paramName]>0 then usingWikidata = true end else local pageNs = mw.title.getCurrentTitle().namespace if pageNs==0 and not infoObj.isNonPerson then local matching = WikidataCrossValidation.crossValidate(templateArgs[paramName], property, infoObj.args.entityId ) if matching then table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, property)) end end end return usingWikidata end local function instanceOfViolation(infoObj) local pageNs = mw.title.getCurrentTitle().namespace if pageNs~=0 then return true end local wikidataInstanceOf = nil if infoObj.args.entityId ~= nil then wikidataInstanceOf = mw.wikibase.getBestStatements(infoObj.args.entityId, 'P31') wikidataInstanceOf = wikidataInstanceOf and wikidataInstanceOf[1] and wikidataInstanceOf[1].mainsnak end if wikidataInstanceOf == nil then local matching = WikidataCrossValidation.crossValidate('אדם', 'P31', infoObj.args.entityId ) if matching then mw.logObject(matching) table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, 'P31')) end else wikidataInstanceOf = wikidataInstanceOf.datavalue and wikidataInstanceOf.datavalue.value and wikidataInstanceOf.datavalue.value.id if wikidataInstanceOf ~= 'Q5' then table.insert(infoObj.wikidataCats, '[[קטגוריה: ויקינתונים - תבניות אישיות למופע לא מתאים]]') return true end end return false end function addPersonDetails(frame, infoObj) local templateArgs = frame:getParent().args local usingBirthWikidata = false local usingDeathWikidata = false local birthLabel = 'לידה' local deathLabel = 'פטירה' infoObj.isNonPerson = instanceOfViolation(infoObj) local wikidataGender = nil if not infoObj.isNonPerson then wikidataGender = PropertyLink.getItem( 'P21', infoObj.args.entityId ) if wikidataGender == nil then table.insert(infoObj.wikidataCats, '[[קטגוריה:אישים חסרי מגדר בוויקינתונים]]') else if (wikidataGender == "Q6581097") then -- male wikidataGender = 'זכר' elseif (wikidataGender == "Q2449503") then -- transgender male wikidataGender = 'זכר' elseif (wikidataGender == "Q15145778") then -- cisgender male wikidataGender = 'זכר' elseif (wikidataGender == "Q6581072") then -- female wikidataGender = 'נקבה' elseif (wikidataGender == "Q1052281") then -- transgender female wikidataGender = 'נקבה' elseif (wikidataGender == "Q15145779") then -- cisgender female wikidataGender = 'נקבה' elseif wikidataGender == 'Q1097630' -- intersex or wikidataGender == 'Q48270' -- non binary then wikidataGender = '' -- עד שתחליטו end end end -- fill birth/death dates from wikidata if missing usingBirthWikidata = fillWikidataParam(templateArgs, 'תאריך לידה', 'P569', infoObj) usingDeathWikidata = fillWikidataParam(templateArgs, 'תאריך פטירה', 'P570', infoObj) local birthDate = getSpeculativeDate(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי']) local deathDate = getSpeculativeDate(templateArgs['תאריך פטירה'], templateArgs['תאריך פטירה עברי']) if birthDate~=nil then local age = nil if deathDate==nil then age = ageModule.ageCalc(birthDate, nil, true, false, true, nil, wikidataGender) or '' end local birthDetails, usingBirthWikidataEvent = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי'], templateArgs['מקום לידה'], 'P569', 'P19', age, usingBirthWikidata, infoObj) table.insert(infoObj.templateStructure, 1, { label=birthLabel, data=birthDetails }) usingBirthWikidata = usingBirthWikidata or usingBirthWikidataEvent elseif templateArgs['מקום לידה']~= '-' then fillWikidataParam(templateArgs, 'מקום לידה', 'P19', infoObj) if templateArgs['מקום לידה']~= nil then -- only if we fill the parameter eventually - add to template table.insert(infoObj.templateStructure, 1, { label=birthLabel, data= templateArgs['מקום לידה'] }) end end deathLabel = getDeathLabel(templateArgs['סיבת המוות'], infoObj.args.entityId, wikidataGender) if deathDate~=nil then local age = ageModule.ageCalc(birthDate, deathDate, false, false, true) or '' local deathDetails, usingDeathWikidataEvent = getEventDetails(templateArgs['תאריך פטירה'], templateArgs['תאריך פטירה עברי'], templateArgs['מקום פטירה'], 'P570', 'P20', age, usingDeathWikidata, infoObj) table.insert(infoObj.templateStructure, 2, { label=deathLabel, data=deathDetails }) usingDeathWikidata = usingDeathWikidata or usingDeathWikidataEvent elseif templateArgs['מקום פטירה']~= '-' then fillWikidataParam(templateArgs, 'מקום פטירה', 'P20', infoObj) if templateArgs['מקום פטירה']~= nil then -- only if we fill the parameter eventually - add to template table.insert(infoObj.templateStructure, 2, { label=deathLabel, data= templateArgs['מקום פטירה'] }) end end if infoObj.isSelfUse then table.insert(infoObj.templateStructure, 1, { label=birthLabel, data='{{{תאריך לידה}}}<br/>{{{מקום לידה}}}' }) table.insert(infoObj.templateStructure, 2, { label=deathLabel, data='{{{תאריך פטירה}}} <br/>{{{מקום פטירה}}}' }) end if usingBirthWikidata or usingDeathWikidata then infoObj.args.usingWikidata = true end if frame.args['כותרת0'] then table.insert(infoObj.templateStructure, 1, { header=1, data=frame.args['כותרת0'], rowstyle=frame.args['עיצוב-שורה0'], rowclass=frame.args['מחלקה-שורה0'], headerstyle=frame.args['כותרת0-עיצוב'] }) end if frame.args['תמונה']~='-' then addMissingImage(infoObj, birthDate, deathDate, wikidataGender) end end function infobox(frame) local infoObj = Infobox:new() frame.args['תמונה-גודל'] = frame.args['תמונה-גודל'] or '220' infoObj:parseArgs(frame) if infoObj.args.title~='-' then addPersonDetails(frame, infoObj) end return infoObj:render() end return { ['מידע']=infobox, ['addPersonDetails'] = addPersonDetails }
תקציר:
לתשומת ליבך: תרומתך לאתר חב"דטקסט תפורסם לפי תנאי הרישיון רישיון חופשי למסמכים של גנו גרסה 1.3 או חדשה יותר (אפשר לעיין בדף
חב"דטקסט:זכויות יוצרים
לפרטים נוספים). אם אינך רוצה שעבודתך תהיה זמינה לעריכה על־ידי אחרים, שתופץ לעיני כול, ושאחרים יוכלו להעתיק ממנה תוך ציון המקור – אין לפרסם אותה פה.
כמו־כן, שמירת העריכה משמעה הבטחה שכתבת את הטקסט הזה בעצמך או העתקת אותו ממקור בנחלת הכלל (שאינו מוגבל בזכויות יוצרים) או מקור חופשי דומה.
אין לשלוח חומר מוגבל בזכויות יוצרים ללא רשות!
ביטול
עזרה בעריכה
(נפתח בחלון חדש)
תבנית המופיעה בדף זה:
יחידה:תבנית מידע/אישיות/תיעוד
(
עריכה
)