ק
תיקון באג - כאשר תבנית משתמשת בqid מיישות שאינה הדף המקושר ההשוואה צריכה להיעשות עם היישות הנכונה
ק (rv) |
ק (תיקון באג - כאשר תבנית משתמשת בqid מיישות שאינה הדף המקושר ההשוואה צריכה להיעשות עם היישות הנכונה) |
||
| שורה 1: | שורה 1: | ||
local propertyLink = require('Module:PropertyLink') | local propertyLink = require('Module:PropertyLink') | ||
local WikidataCrossValidation = require('Module:WikidataCrossValidation') | |||
local Infobox = {} | local Infobox = {} | ||
function Infobox:new() | function Infobox:new() | ||
| שורה 22: | שורה 22: | ||
for k,v in pairs(self.templateParams) do | for k,v in pairs(self.templateParams) do | ||
if mw.ustring.match( k, '-ויקינתונים') then | if mw.ustring.match( k, '-ויקינתונים') then | ||
templateDocumentation = templateDocumentation .. '[[ | templateDocumentation = templateDocumentation .. '[[קטגוריה:תבניות מידע שמשתמשות בוויקינתונים]]' | ||
break | break | ||
end | end | ||
| שורה 63: | שורה 63: | ||
local titleCaption = self.root | local titleCaption = self.root | ||
:tag('caption') | :tag('caption') | ||
:attr('dir', 'auto') | |||
:addClass(self.args.titleclass) | :addClass(self.args.titleclass) | ||
:cssText(self.args.titlestyle) | :cssText(self.args.titlestyle) | ||
| שורה 101: | שורה 102: | ||
row:tag('table') | row:tag('table') | ||
:css('width','100%') | :css('width','100%') | ||
:css('display','table') | |||
:tag('tr') | :tag('tr') | ||
:tag('td') | :tag('td') | ||
| שורה 138: | שורה 140: | ||
--[[ | --[[ | ||
Adds edit links for easier editing of the template. If the template | Adds edit links for easier editing of the template. If the template use data from wikidata it also adds edit link in Wikidata | ||
]] | ]] | ||
function Infobox:renderEditLinks() | function Infobox:renderEditLinks() | ||
local wbEdit='' -- link to wikidata | local wbEdit='' -- link to wikidata | ||
if self.args.usingWikidata then | if self.args.usingWikidata then | ||
wbEdit = '[[File:Wikidata-logo S.svg|22px|link=d:'..self.args.entityId..'| | wbEdit = '[[File:Wikidata-logo S.svg|22px|link=d:'..self.args.entityId..'|לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית]]' | ||
wbEdit = wbEdit .. mw.ustring.format(' [[File:OOjs UI icon info big.svg|16px|link=%s]]', ' | wbEdit = wbEdit .. mw.ustring.format(' [[File:OOjs UI icon info big.svg|16px|link=%s]]', 'עזרה:תבנית מידע') | ||
end | end | ||
if #wbEdit > 0 then | if #wbEdit > 0 then | ||
| שורה 189: | שורה 191: | ||
:attr('scope', 'row') | :attr('scope', 'row') | ||
:attr('id', rowArgs.labelid) | :attr('id', rowArgs.labelid) | ||
:cssText(self.args.labelstyle) | :cssText(self.args.labelstyle) | ||
:cssText(rowArgs.labelstyle) | :cssText(rowArgs.labelstyle) | ||
| שורה 217: | שורה 218: | ||
--[[ | --[[ | ||
This function removes | This function removes redundent keys from templateStructure: nil entries and header entries with no data | ||
]] | ]] | ||
function Infobox:removeEmptyHeaders() | function Infobox:removeEmptyHeaders() | ||
local lastHeaderIndex=nil | local lastHeaderIndex=nil | ||
local | |||
local hasImage = (self.args.image~=nil and #self.args.image>0) | |||
hasImage = hasImage or (self.args.rightImage~=nil and #self.args.rightImage>0) | |||
hasImage = hasImage or (self.args.leftImage~=nil and #self.args.leftImage>0) | |||
local removeFirstHeader = nil | |||
if self.args.removeFirstHeader~=nil then | |||
removeFirstHeader = (not hasImage) and self.args.removeFirstHeader -- remove the first header if there are no images & the first header is generic | |||
else | |||
removeFirstHeader = (not hasImage)-- default, remove the first header if there are no images | |||
end | |||
local tempTemplateStructure = {} | local tempTemplateStructure = {} | ||
for i,v in pairs(self.templateStructure) do | for i,v in pairs(self.templateStructure) do | ||
| שורה 253: | שורה 264: | ||
errors = {} | errors = {} | ||
local templateName = mw.ustring.gsub(templateTitle, ' | local templateName = mw.ustring.gsub(templateTitle, 'תבנית:', '', 1) | ||
if mw.title.getCurrentTitle().namespace==0 then | if mw.title.getCurrentTitle().namespace==0 then | ||
table.insert(errors, '[[ | table.insert(errors, '[[קטגוריה:שגיאות פרמטריות בתבנית '..templateName..']]') | ||
table.insert(errors, '[[ | table.insert(errors, '[[קטגוריה:שגיאות פרמטריות בתבנית מידע]]') | ||
table.insert(errors, '[[ | table.insert(errors, '[[קטגוריה:שגיאות פרמטריות]]' ) | ||
else | else | ||
table.insert(errors, '[[ | table.insert(errors, '[[קטגוריה:שגיאות פרמטריות מחוץ למרחב הערכים]]') | ||
end | end | ||
local report = 'תבנית ריקה מתוכן. יש להזין פרמטרים בערך או בוויקינתונים. ' .. table.concat(errors, '') | local report = 'תבנית {{' .. templateName .. '}} ריקה מתוכן. יש להזין פרמטרים בערך או בוויקינתונים. ' .. table.concat(errors, '') | ||
local ParamValidator = require('Module:ParamValidator') | local ParamValidator = require('Module:ParamValidator') | ||
return ParamValidator.wrapReport(report, templateName, {}) | return ParamValidator.wrapReport(report, templateName, {}) | ||
| שורה 297: | שורה 308: | ||
This function adds image using valueArg, or if not specified by the user tries to get image from wikidata using property | This function adds image using valueArg, or if not specified by the user tries to get image from wikidata using property | ||
]] | ]] | ||
function getValueOrWikidataImage(valueArg | function getValueOrWikidataImage(args) | ||
valueArg = args.valueArg | |||
if valueArg and #valueArg>0 then | if valueArg and #valueArg>0 then | ||
if valueArg == '-' then | if valueArg == '-' then | ||
| שורה 305: | שורה 317: | ||
not mw.ustring.match(valueArg, '^ *%[%[') and | not mw.ustring.match(valueArg, '^ *%[%[') and | ||
not mw.ustring.match(valueArg, '^ *<') then | not mw.ustring.match(valueArg, '^ *<') then | ||
local imgSuffix = '| | local imgSuffix = '|'..args.width .. 'px' | ||
if imgDesc~=nil and #imgDesc>0 then | if args.imgDesc~=nil and #args.imgDesc>0 then | ||
imgSuffix = imgSuffix .. '|' .. imgDesc | imgSuffix = imgSuffix .. '|' .. args.imgDesc | ||
end | end | ||
imgSuffix = imgSuffix .. ']]' | imgSuffix = imgSuffix .. ']]' | ||
if mw.ustring.match(valueArg, '^[Ff]ile:') or | if mw.ustring.match(valueArg, '^[Ff]ile:') or | ||
mw.ustring.match(valueArg, '^[Ii]mage:') or | mw.ustring.match(valueArg, '^[Ii]mage:') or | ||
mw.ustring.match(valueArg, '^קובץ:') or | mw.ustring.match(valueArg, '^קובץ:') or | ||
mw.ustring.match(valueArg, '^תמונה:') then | mw.ustring.match(valueArg, '^תמונה:') then | ||
| שורה 318: | שורה 329: | ||
else | else | ||
valueArg = '[[File:' .. valueArg .. imgSuffix | valueArg = '[[File:' .. valueArg .. imgSuffix | ||
end | |||
elseif args.imgDesc~=nil and #args.imgDesc>0 and not mw.ustring.match(args.imgDesc, '%[%[קטגוריה:ערכים להחלפת תמונה בחופשית%]%]$') then | |||
if mw.ustring.match(valueArg, '^ *%[%[[Ff]ile:') or | |||
mw.ustring.match(valueArg, '^ *%[%[[Ii]mage:') or | |||
mw.ustring.match(valueArg, '^ *%[%[קובץ:') or | |||
mw.ustring.match(valueArg, '^ *%[%[תמונה:') then | |||
valueArg = mw.ustring.gsub(valueArg, "%]%]$", "") | |||
mw.log(args.imgDesc) | |||
local imgSuffix = '|' .. args.imgDesc .. ']]' | |||
valueArg = valueArg .. imgSuffix | |||
end | end | ||
end | end | ||
| שורה 323: | שורה 344: | ||
end | end | ||
end | end | ||
if wikidataArg then | if args.wikidataArg and args.args.entityId~=nil then | ||
return propertyLink.getImageLink(wikidataArg, width) | args.args.usingWikidata = true | ||
return propertyLink.getImageLink(args.wikidataArg, args.width, nil, nil,nil, args.args.entityId) | |||
end | end | ||
return '' | return '' | ||
| שורה 330: | שורה 352: | ||
end | end | ||
--[[ | |||
Split category links from value, return tuple of whether data exists and maitainance cats in case no data exists | |||
]] | |||
function splitMaintainceCategory(value) | function splitMaintainceCategory(value) | ||
local maintainceCats = nil | local maintainceCats = nil | ||
local hasData = #(mw.ustring.gsub(value, '%[%[ | local hasData = #(mw.ustring.gsub(value, '%[%[קטגוריה:.-%]%]', ''))>0 | ||
if not hasData then | if not hasData then | ||
maintainceCats = value | maintainceCats = value | ||
| שורה 343: | שורה 368: | ||
return nil | return nil | ||
end | end | ||
local res = propertyLink.getPropertyByOptions(propertyName, entityId, options) | local res = propertyLink.getPropertyByOptions(propertyName, entityId, options) | ||
if res then | if (res==nil) or (#res == 0) then | ||
local | return nil | ||
local link = | end | ||
local hasData, maintainceCats = splitMaintainceCategory(res) | |||
if hasData then | |||
local link = mw.title.makeTitle( 0, entityId, propertyName, 'wikidata' ):fullUrl('uselang=he') | |||
res = res .. mw.ustring.format(' [[File:Blue pencil RTL.svg|15px|link=%s|עריכת הנתון בוויקינתונים]]', link) | |||
end | |||
return res | |||
end | |||
--[[ | |||
Filters statements to statements with existing links only | |||
]] | |||
function filterExists( propertyVals ) | |||
local tempVals = {} | |||
for i, property in ipairs(propertyVals) do | |||
local propValue = property.mainsnak and property.mainsnak.datavalue | |||
if propValue and propValue.value then | |||
local linkTarget = mw.wikibase.sitelink( propValue.value['id'] ) | |||
if linkTarget then | |||
table.insert(tempVals, property) | |||
end | |||
end | end | ||
end | end | ||
return | return tempVals | ||
end | end | ||
| שורה 363: | שורה 407: | ||
local hasData=false | local hasData=false | ||
local maintainceCats = nil | local maintainceCats = nil | ||
local includeWikidataRef = frame and frame:getParent() | local includeWikidataRef = frame and frame:getParent() | ||
if entityId == nil then return inWikidata, maintainceCats end -- early terminate | |||
includeWikidataRef = includeWikidataRef and includeWikidataRef.args and includeWikidataRef.args['ויקינתונים-מקורות'] == 'כן' | includeWikidataRef = includeWikidataRef and includeWikidataRef.args and includeWikidataRef.args['ויקינתונים-מקורות'] == 'כן' | ||
local wikidataOptions = { | local wikidataOptions = { | ||
['entity-gender-aware'] = templateParams[missingParam..'-ויקינתונים-מגדר'] == 'כן', | ['entity-gender-aware'] = templateParams[missingParam..'-ויקינתונים-מגדר'] == 'כן', | ||
['source'] = includeWikidataRef | ['source'] = includeWikidataRef | ||
} | } | ||
if templateParams[missingParam..'-ויקינתונים-סינון'] == 'קיים' then | |||
wikidataOptions['filter'] = filterExists | |||
elseif templateParams[missingParam..'-ויקינתונים-סינון'] and mw.ustring.match(templateParams[missingParam..'-ויקינתונים-סינון'], 'filter[a-zA-Z]+') then | |||
local moduleTitle = mw.ustring.match( frame:getParent():getTitle(), 'תבנית:(.+)' ) | |||
moduleTitle = mw.ustring.format('יחידה:%s', moduleTitle) | |||
local filterFunc = mw.ustring.match(templateParams[missingParam..'-ויקינתונים-סינון'],'filter[a-zA-Z]+') | |||
wikidataOptions['filter'] = require(moduleTitle)[filterFunc] | |||
end | |||
if templateParams[missingParam..'-ויקינתונים-פרטים']~=nil then | |||
wikidataOptions['qualifiers'] = {} | |||
wikidataOptions['qualifiers-sep'] = templateParams[missingParam..'-ויקינתונים-פרטים-הפרדה'] or nil | |||
for v in string.gmatch(templateParams[missingParam..'-ויקינתונים-פרטים'], "[^,%s]+") do | |||
table.insert(wikidataOptions['qualifiers'], v) | |||
end | |||
end | |||
if templateParams[missingParam..'-ויקינתונים-תמונה-גודל']~=nil then | if templateParams[missingParam..'-ויקינתונים-תמונה-גודל']~=nil then | ||
wikidataOptions['img-width'] = templateParams[missingParam..'-ויקינתונים-תמונה-גודל'] | wikidataOptions['img-width'] = templateParams[missingParam..'-ויקינתונים-תמונה-גודל'] | ||
end | end | ||
if templateParams[missingParam..'-ויקינתונים'] then | if templateParams[missingParam..'-ויקינתונים'] then | ||
templateArg.data = getPropertyByOptions(templateParams[missingParam..'-ויקינתונים'], entityId, wikidataOptions) or nil | if templateParams[missingParam..'-ויקינתונים-יחידה'] then | ||
templateArg.data = require('Module:Convert').convert(mw.getCurrentFrame():newChild{ args = { | |||
['input'] = templateParams[missingParam..'-ויקינתונים'], | |||
[2] = templateParams[missingParam..'-ויקינתונים-יחידה'], | |||
['disp'] = 'out', | |||
['qid'] = entityId, | |||
['abbr']='off' | |||
} }:newChild{}) | |||
else | |||
templateArg.data = getPropertyByOptions(templateParams[missingParam..'-ויקינתונים'], entityId, wikidataOptions) or nil | |||
end | |||
inWikidata = templateArg.data and #(templateArg.data)>0 | inWikidata = templateArg.data and #(templateArg.data)>0 | ||
elseif templateParams[missingParam..'-ויקינתונים-מרובה'] then | elseif templateParams[missingParam..'-ויקינתונים-מרובה'] then | ||
wikidataOptions['allowMulti'] = true | wikidataOptions['allowMulti'] = true | ||
wikidataOptions['seperator'] = templateParams[missingParam..'-ויקינתונים-מרובה-הפרדה'] | wikidataOptions['seperator'] = templateParams[missingParam..'-ויקינתונים-מרובה-הפרדה'] | ||
wikidataOptions['sort'] = templateParams[missingParam..'-ויקינתונים-מרובה-מיון'] or nil | |||
paramsData = {} | |||
-- split multiple params to include all of them (e.g: "P1,P2") | |||
for paramToFetch in string.gmatch(templateParams[missingParam..'-ויקינתונים-מרובה'], '([^,]+)') do | |||
-- split optional params to include ONLY the first one of them (e.g: "P1/P2") | |||
for optionalParam in string.gmatch(paramToFetch, '([^/]+)') do | |||
if (string.sub(optionalParam, 1, 1) == 'P' or string.sub(optionalParam, 1, 1) == 'Q') then | |||
if getPropertyByOptions(optionalParam, entityId, wikidataOptions) then | |||
table.insert(paramsData, getPropertyByOptions(optionalParam, entityId, wikidataOptions) or nil) | |||
-- found one of the optionals - stop the loop | |||
break | |||
end | |||
else | |||
-- one of the optionals is static data - take it and stop the loop | |||
table.insert(paramsData, optionalParam) | |||
break | |||
end | |||
end | |||
end | |||
templateArg.data = table.concat(paramsData, wikidataOptions['seperator']) | |||
inWikidata = templateArg.data and #(templateArg.data)>0 | inWikidata = templateArg.data and #(templateArg.data)>0 | ||
elseif templateParams[missingParam..'-ויקינתונים-פשוט'] then | elseif templateParams[missingParam..'-ויקינתונים-פשוט'] then | ||
| שורה 392: | שורה 480: | ||
-- special cases | -- special cases | ||
elseif missingParam == 'קואורדינטות' then | elseif missingParam == 'קואורדינטות' then | ||
templateArg.data = propertyLink.getPropertyByOptions('P625', entityId, {['coord-display'] = 'title,inline' }) | |||
templateArg.data = propertyLink.getPropertyByOptions('P625', entityId, {['coord-display'] = templateParams['קואורדינטות-תצוגה'] or 'title,inline' }) | |||
inWikidata = templateArg.data and #(templateArg.data)>0 | inWikidata = templateArg.data and #(templateArg.data)>0 | ||
elseif missingParam == 'מפה' and templateParams['מפה-זום'] then | elseif missingParam == 'מפה' and templateParams['מפה-זום'] then | ||
| שורה 398: | שורה 487: | ||
if inWikidata then | if inWikidata then | ||
local defaultZoom = templateParams['מפה-זום'] | local defaultZoom = templateParams['מפה-זום'] | ||
templateArg.data = frame:expandTemplate{ title = 'מפה דינמית', args = { | templateArg.data = frame:expandTemplate{ title = 'מפה דינמית', args = { | ||
['יישור'] = 'center', | ['יישור'] = 'center', | ||
['זום ברירת מחדל'] = defaultZoom | ['זום ברירת מחדל'] = defaultZoom, | ||
['פריטים'] = entityId | |||
} } | } } | ||
end | end | ||
| שורה 420: | שורה 509: | ||
This function fills missing parameter using wikidata | This function fills missing parameter using wikidata | ||
]] | ]] | ||
function crossValidateWikidata(missingParam, templateParams, templateArg, frame | function crossValidateWikidata(missingParam, templateParams, templateArg, frame, entityId) | ||
local matching = nil | local matching = nil | ||
local propertyName | local propertyName | ||
if missingParam==nil then | |||
if entityId == nil or missingParam==nil then | |||
return nil | return nil | ||
end | end | ||
if templateParams[missingParam..'-ויקינתונים'] then | if templateParams[missingParam..'-ויקינתונים'] then | ||
propertyName = templateParams[missingParam..'-ויקינתונים'] | propertyName = templateParams[missingParam..'-ויקינתונים'] | ||
matching = WikidataCrossValidation.crossValidate(templateArg, propertyName) | matching = WikidataCrossValidation.crossValidate(templateArg, propertyName, entityId) | ||
elseif templateParams[missingParam..'-ויקינתונים-פשוט'] then | elseif templateParams[missingParam..'-ויקינתונים-פשוט'] then | ||
propertyName = templateParams[missingParam..'-ויקינתונים-פשוט'] | propertyName = templateParams[missingParam..'-ויקינתונים-פשוט'] | ||
matching = WikidataCrossValidation.crossValidate(templateArg, propertyName) | matching = WikidataCrossValidation.crossValidate(templateArg, propertyName, entityId) | ||
elseif templateParams[missingParam..'-ויקינתונים-מרובה'] then | elseif templateParams[missingParam..'-ויקינתונים-מרובה'] then | ||
local genderAware = templateParams[missingParam..'-ויקינתונים-מגדר'] == 'כן' | local genderAware = templateParams[missingParam..'-ויקינתונים-מגדר'] == 'כן' | ||
propertyName = templateParams[missingParam..'-ויקינתונים-מרובה'] | propertyName = templateParams[missingParam..'-ויקינתונים-מרובה'] | ||
matching = WikidataCrossValidation.crossValidate(templateArg, propertyName) | matching = WikidataCrossValidation.crossValidate(templateArg, propertyName, entityId) | ||
end | end | ||
| שורה 449: | שורה 537: | ||
]] | ]] | ||
function standardTitle(templateArgs, isSubTemplate, entityId) | function standardTitle(templateArgs, isSubTemplate, entityId) | ||
local name = templateArgs[' | local name = templateArgs['שם'] | ||
if name=='-' then return name end -- | if name=='-' then return name end -- | ||
if isSubTemplate then return name or '' end | if isSubTemplate then return name or '' end | ||
| שורה 458: | שורה 546: | ||
end | end | ||
local originName = templateArgs[' | local originName = templateArgs['שם בשפת המקור'] | ||
if originName == '-' then | if originName == '-' then | ||
originName = '' | originName = '' | ||
| שורה 471: | שורה 559: | ||
if propValue and propValue.value and propValue.value.text and propValue.value.text~=name then | if propValue and propValue.value and propValue.value.text and propValue.value.text~=name then | ||
originName = mw.ustring.format('<span lang="%s" title="%s">%s</span>', propValue.value.language, | originName = mw.ustring.format('<span lang="%s" title="%s">%s</span>', propValue.value.language, | ||
mw.language.fetchLanguageName( propValue.value.language , ' | mw.language.fetchLanguageName( propValue.value.language , 'he'), propValue.value.text) | ||
end | end | ||
end | end | ||
| שורה 491: | שורה 579: | ||
local templateStructure = {} | local templateStructure = {} | ||
args.subtemplate = frame.args['תת-תבנית'] | args.subtemplate = frame.args['תת-תבנית'] | ||
args.entityId = templateArgs['qid'] or mw.wikibase.getEntityIdForCurrentPage() | args.entityId = templateArgs['qid'] or templateParams['qid'] or mw.wikibase.getEntityIdForCurrentPage() | ||
-- disable wikidata fetching | |||
if args.entityId == '' or args.entityId == '-' then args.entityId = nil end | |||
args.title = frame.args['כותרת תבנית'] or standardTitle(templateArgs, args.subtemplate, args.entityId) | args.title = frame.args['כותרת תבנית'] or standardTitle(templateArgs, args.subtemplate, args.entityId) | ||
if args.title=='-' then args.subtemplate = true end | if args.title=='-' then args.subtemplate = true end | ||
args.titlestyle = | args.titlestyle = templateParams['כותרת תבנית-עיצוב'] | ||
args.titleclass = | args.titleclass = templateParams['כותרת תבנית-מחלקה'] | ||
args.subtitle = | args.subtitle = templateParams['תת כותרת תבנית'] | ||
args.subtitlestyle = | args.subtitlestyle = templateParams['תת כותרת תבנית-עיצוב'] | ||
args.subtitleclass = | args.subtitleclass = templateParams['תת כותרת תבנית-מחלקה'] | ||
args.rightImage = getValueOrWikidataImage | args.rightImage = getValueOrWikidataImage{ | ||
args.rightImageDesc = | valueArg=templateParams['תמונה ימין'], | ||
args.leftImage = getValueOrWikidataImage | wikidataArg=templateParams['תמונה ימין-ויקינתונים'], | ||
args.leftImageDesc = | width='100x80', | ||
args.imageDesc = | args=args | ||
args.image = getValueOrWikidataImage | } | ||
args. | args.rightImageDesc = templateParams['כיתוב ימין'] | ||
args.headerstyle = | args.leftImage = getValueOrWikidataImage{ | ||
args.rowsstyle = | valueArg=templateParams['תמונה שמאל'], | ||
args.labelstyle = | wikidataArg=templateParams['תמונה שמאל-ויקינתונים'], | ||
args.datastyle = | width='100x80', | ||
args.tablestyle = | args=args | ||
args.tableclass = | } | ||
local | args.leftImageDesc = templateParams['כיתוב שמאל'] | ||
self.autoDocumentation = | args.imageDesc = templateParams['כיתוב'] | ||
args.image = getValueOrWikidataImage{ | |||
valueArg=templateParams['תמונה'], | |||
wikidataArg=templateParams['תמונה-ויקינתונים'] or 'P18', | |||
width=templateParams['תמונה-גודל'] or '220', | |||
imgDesc=args.imageDesc, | |||
args=args | |||
} | |||
args.removeFirstHeader = false-- default based on vote on 18/7/21 | |||
-- explictly override the default | |||
if templateParams['כותרת כללית'] == 'כן' then | |||
args.removeFirstHeader = true | |||
elseif templateParams['כותרת כללית'] == 'לא' then | |||
args.removeFirstHeader = false | |||
end | |||
args.headerclass = templateParams['כותרת-מחלקה'] | |||
args.headerstyle = templateParams['כותרת-עיצוב'] | |||
args.rowsstyle = templateParams['שורה-עיצוב'] | |||
args.labelstyle = templateParams['תווית-עיצוב'] | |||
args.datastyle = templateParams['מידע-עיצוב'] | |||
args.tablestyle = templateArgs['טבלה-עיצוב'] or templateParams['טבלה-עיצוב'] | |||
args.tableclass = templateArgs['טבלה-מחלקה'] or templateParams['טבלה-מחלקה'] | |||
local pageNs = mw.title.getCurrentTitle().namespace | |||
local subpageText = mw.title.getCurrentTitle().subpageText | |||
local isSelfUse = (pageNs==10 and subpageText ~= "תיעוד") | |||
self.autoDocumentation = templateParams['תיעוד-אוטומטי'] | |||
local labelPrefix = 'תווית' | local labelPrefix = 'תווית' | ||
| שורה 522: | שורה 639: | ||
local rowStyleClassPrefix = 'מחלקה-שורה' | local rowStyleClassPrefix = 'מחלקה-שורה' | ||
local styleSuffix = '-עיצוב' | local styleSuffix = '-עיצוב' | ||
local explicitWikidata = '-ויקינתונים-מפורש' | |||
local k=0 | local k=0 | ||
local processedParams = {['0']=1} -- param0 may be used by Lua, not be template | local processedParams = {['0']=1} -- param0 may be used by Lua, not be template | ||
| שורה 559: | שורה 677: | ||
labelName = label_data_names | labelName = label_data_names | ||
label_data_names = mw.text.trim(label_data_names, '%[%]') | label_data_names = mw.text.trim(label_data_names, '%[%]') | ||
local hasContent = templateArgs[label_data_names] and #templateArgs[label_data_names]>0 | |||
-- + and use explicit wikidata replace the content with such if available from wikidata | |||
local isExplicitWikidataParam = templateParams[label_data_names..explicitWikidata] | |||
local isExplicitWikidataEnabled = false | |||
if isExplicitWikidataParam then | |||
isExplicitWikidataEnabled = templateArgs[label_data_names]~=nil and mw.ustring.match(templateArgs[label_data_names], '^ *+$') | |||
end | |||
local skipContent = false | |||
if hasContent and not isExplicitWikidataEnabled then | |||
dataTemplate = templateArgs[label_data_names] | dataTemplate = templateArgs[label_data_names] | ||
else | else | ||
if isExplicitWikidataParam and not isExplicitWikidataEnabled then | |||
skipContent = true | |||
end | |||
dataTemplate = '{{{' ..label_data_names.. '}}}' | dataTemplate = '{{{' ..label_data_names.. '}}}' | ||
end | end | ||
table.insert(templateStructure, {label=labelName, data=dataTemplate, rowstyle=templateParams[rowStylePrefix..i], rowclass=templateParams[rowStyleClassPrefix..i], datastyle=templateParams[dataPrefix..i..styleSuffix], | if not skipContent then | ||
table.insert(templateStructure, {label=labelName, data=dataTemplate, rowstyle=templateParams[rowStylePrefix..i], rowclass=templateParams[rowStyleClassPrefix..i], datastyle=templateParams[dataPrefix..i..styleSuffix], | |||
labelstyle=templateParams[labelPrefix..i..styleSuffix], indic=indic}) | labelstyle=templateParams[labelPrefix..i..styleSuffix], indic=indic}) | ||
end | |||
end | end | ||
end | end | ||
| שורה 600: | שורה 732: | ||
-- if data isn't available remove it | -- if data isn't available remove it | ||
table.insert(entriesToRemove, 1, k) | table.insert(entriesToRemove, 1, k) | ||
-- no need to cross validate it | |||
crossValidatedFields[m] = 1 | |||
end | end | ||
end | |||
end | |||
end | end | ||
end | end | ||
end | end | ||
for k,v in pairs(templateArgs) do | |||
if crossValidatedFields[k]==nil and v and #v>0 and k~= 'תמונה' then | if crossValidatedFields[k]==nil and v and #v>0 and pageNs==0 and k~= 'תמונה' then | ||
local maintainceCats = crossValidateWikidata(k,templateParams, v, frame) | local maintainceCats = crossValidateWikidata(k,templateParams, v, frame, args.entityId) | ||
if maintainceCats and #maintainceCats>0 then | if maintainceCats and #maintainceCats>0 then | ||
table.insert(wikidataCats, maintainceCats) | table.insert(wikidataCats, maintainceCats) | ||
end | end | ||
end | end | ||
end | end | ||
for k,v in pairs(entriesToRemove) do table.remove(templateStructure, v) end | for k,v in pairs(entriesToRemove) do table.remove(templateStructure, v) end | ||