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

Reply via email to