Lucie Kaffee has uploaded a new change for review. https://gerrit.wikimedia.org/r/241065
Change subject: Merge branch 'master' of https://gerrit.wikimedia.org/r/mediawiki/extensions/ArticlePlaceholder into T109447 ...................................................................... Merge branch 'master' of https://gerrit.wikimedia.org/r/mediawiki/extensions/ArticlePlaceholder into T109447 Change-Id: I31bb1fb6c1069e0d9d2cb2c3af95cd77b4963d25 --- M ArticlePlaceholder.php M includes/Lua/EntityRenderer.lua 2 files changed, 71 insertions(+), 19 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ArticlePlaceholder refs/changes/65/241065/1 diff --git a/ArticlePlaceholder.php b/ArticlePlaceholder.php index 2d7e10c..e9074a8 100644 --- a/ArticlePlaceholder.php +++ b/ArticlePlaceholder.php @@ -37,4 +37,4 @@ $wgSpecialPages[ 'FancyUnicorn' ] = array( 'ArticlePlaceholder\Specials\SpecialFancyUnicorn', 'newFromGlobalState' -); +); \ No newline at end of file diff --git a/includes/Lua/EntityRenderer.lua b/includes/Lua/EntityRenderer.lua index 48720a7..2c88d43 100644 --- a/includes/Lua/EntityRenderer.lua +++ b/includes/Lua/EntityRenderer.lua @@ -1,5 +1,8 @@ local entityrenderer = {} +entityrenderer.imageProperty = 'P6' +entityrenderer.identifierProperties = {} + -- render an entity entityrenderer.render = function(frame) local entityID = mw.text.trim( frame.args[1] or "" ) @@ -7,13 +10,27 @@ result = "" local description = entityrenderer.descriptionRenderer( entityID ) + local image = entityrenderer.topImageRenderer( entity, entityrenderer.imageProperty, "right" ) local entityResult = entityrenderer.statementListRenderer( entity ) - result = result .. "Description: " .. description .. "<br/>" + result = result .. "Description: " .. description .. " " + result = result .. image .. "<br/>" result = result .. "<h1>Entity</h1>" .. "<br/>" .. entityResult - --local snak = entityrenderer.snakRenderer( ) return result +end + +entityrenderer.getBestStatements = function( entity, propertyId ) + local statement = "" + local bestStatements = entity:getBestStatements( propertyId ) + for _, stat in pairs( bestStatements ) do + if entityrenderer.getDatavalue( propertyId ) == "commonsMedia" then + statement = statement .. entityrenderer.imageRenderer( stat, "center" ) + else + statement = statement .. entityrenderer.statementRenderer(stat) + end + end + return statement end ----------------------------------- Implementation of Renderers ----------------------------------- @@ -24,15 +41,9 @@ local properties = entityrenderer.statementSorter( entity ) if properties ~= nil then for _, propertyId in pairs( properties ) do - if propertyId ~= nil then - result = result .. "<h2><b>" .. entityrenderer.labelRenderer(propertyId) .. "</b></h2>" .. "<br/>" - local bestStatements = entity:getBestStatements( propertyId ) - for _, stat in pairs(bestStatements) do - local statement = entityrenderer.statementRenderer(stat) - if statement ~= nil then - result = result .. " " .. statement - end - end + if propertyId ~= entityrenderer.imageProperty then + result = result .. "<h2><b>" .. entityrenderer.labelRenderer( propertyId ) .. "</b> </h2>" .. "<br/>" + result = result .. entityrenderer.getBestStatements( entity, propertyId ) end end end @@ -49,16 +60,57 @@ -- Renders a statement. entityrenderer.statementRenderer = function( statement ) local result = "" + local reference = "" + local qualifier = "" + local mainsnak = "" if statement ~= nil then for key, value in pairs( statement ) do - if key == "references" then result = result .. "<h3>Reference</h3>" .. "<br/>" .. entityrenderer.referenceRenderer( value ) - elseif key == "qualifiers" then result = result .. "<h3>Qualifier</h3>" .. "<br/>" .. entityrenderer.qualifierRenderer( value ) - --elseif key == "mainsnak" then result = result .. "Mainsnak:" .. "<br/>" .. entityrenderer.snakRenderer( value ) + if key == "mainsnak" then mainsnak = mw.wikibase.renderSnak( value, key ) + elseif key == "references" then reference = "<h3>Reference</h3>" .. "<br/>" .. entityrenderer.referenceRenderer( value ) + elseif key == "qualifiers" then qualifier = "<h3>Qualifier</h3>" .. "<br/>" .. entityrenderer.qualifierRenderer( value ) end end end + result = result .. mainsnak .. reference .. qualifier return result end + +-- Get the datavalue for a property. +entityrenderer.getDatavalue = function( propertyId ) + local property = mw.wikibase.getEntity( propertyId ) + return property['datatype'] +end + +-- Render the image. +-- @param String propertyId +-- @return String renderedImage +entityrenderer.imageRenderer = function( statement, orientationImage ) + local result = "" + local reference = "" + local qualifier = "" + local image = "" + if statement ~= nil then + for key, value in pairs( statement ) do + if key == "mainsnak" then image = mw.wikibase.renderSnak( value ) + elseif key == "references" then reference = "<h3>Reference</h3>" .. "<br/>" .. entityrenderer.referenceRenderer( value ) + elseif key == "qualifiers" then qualifier = "<h3>Qualifier</h3>" .. "<br/>" .. entityrenderer.qualifierRenderer( value ) + end + end + end + result = "[[File:" .. image .. "|thumb|" .. orientationImage .. "]] <br/>" + result = result .. qualifier .. "<br/>" .. reference + return result +end + +-- Render the image. +-- @param String propertyId +-- @return String renderedImage +entityrenderer.topImageRenderer = function( entity, propertyId, orientationImage ) + imageName = entity:formatPropertyValues( propertyId ).value + renderedImage = "[[File:" .. imageName .. "|thumb|" .. orientationImage .. "]]" + return renderedImage +end + -- Render the description. -- @param String entityId @@ -81,7 +133,7 @@ local i = 1 while referenceSnak[i] do for k, v in pairs( referenceSnak[i]['snaks'] ) do - result = result .. entityrenderer.labelRenderer( k ) .. " => " + result = result .. "<b>" .. entityrenderer.labelRenderer( k ) .. "</b>: " result = result .. entityrenderer.snakRenderer( v ) .. "<br/>" end i = i + 1 @@ -90,12 +142,12 @@ return result end --- Render a qualifier +-- Render a qualifier. entityrenderer.qualifierRenderer = function( qualifierSnak ) local result = "" if qualifierSnak ~= nil then for key, value in pairs(qualifierSnak) do - result = result .. entityrenderer.labelRenderer( key ) .. " => " --result = entityrenderer.snakRenderer( value ) + result = result .. "<b>" .. entityrenderer.labelRenderer( key ) .. "</b>: " result = result .. entityrenderer.snakRenderer( value ) .. "<br/>" end end @@ -104,7 +156,7 @@ -- Render a Snak. entityrenderer.snakRenderer = function( snak ) - local result = ""--snak .. "<br/>" + local result = "" if snak ~= nil and type(snak) == "table" then for key, value in pairs( snak ) do result = result .. mw.wikibase.renderSnak( value ) .. "<br/>" -- To view, visit https://gerrit.wikimedia.org/r/241065 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I31bb1fb6c1069e0d9d2cb2c3af95cd77b4963d25 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/ArticlePlaceholder Gerrit-Branch: master Gerrit-Owner: Lucie Kaffee <lucie.kaf...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits