« Module:Infobox » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
Aucun résumé des modifications
0x010D (discussion | contributions)
nouvelle gestion des styles
Ligne 6 : Ligne 6 :


function Infobox:new( args )
function Infobox:new( args )
     --Object initialisation
     -- Initialisation de l'object
     local object = {
     local object = {
         text = "",
         text = "",
Ligne 20 : Ligne 20 :
     end
     end


     --Open main div
     -- Ouverture de l'élément principal de l'infobox
     if object.isPart then
     if object.isPart then
         return object --On retourne si on construit seulement un module
         return object -- On retourne si on construit seulement un module
     end
     end


     local str = '<div '
     local str = '<div '
     if args.class then
     if args.class then
        str = str .. ' class= "' .. args.class ..'"'
    if args.class ~= '' then
            str = str .. ' class= "' .. args.class ..'"'
        end
     else
     else
     str = str .. ' class= "infobox_v3"'
     str = str .. ' class= "infobox_v3"'
Ligne 40 : Ligne 42 :
end
end


function Infobox:addText( args )
if args.text then
self.text = self.text .. args.text
end
end
function Infobox:addFooter( args)
    local templatename = args.templatename
    local pagename = mw.title.getCurrentTitle().prefixedText
    local class = args.class
    if not class then
    class = ""
    end
    local itemlink = ''
    local item = args.item
    if item then
    itemlink = ' - [[d:' .. item .. '|modifier l\'élément Wikidata]]'
end
    text = '<p class="navbar noprint' .. class .. 'style=1px;">'
.. '<span class="plainlinks">'
.. '[' .. tostring(mw.uri.fullUrl(pagename,'&action=edit&section=0')) .. ' ' .. i18n['edit infobox'] .. ']'
.. itemlink
.. '</span>'
.. '[[Image:Gtk-dialog-info.svg|12px|link=' .. templatename .. '|' .. i18n['see doc'] .. ']]'
.. '</p>'
self.text = self.text .. text
end
function Infobox:addTitle( args )
function Infobox:addTitle( args )
     local str = '<p class="entete'
     local str = '<p'
    if args.icon then
        str = str .. ' icon ' .. args.icon
    end
     if args.class then
     if args.class then
         str = str .. ' ' .. args.class
         str = str .. ' class= "' .. args.class ..'"'
     end
     else
    str = str .. '"'
    str = str .. ' class= "entete"'
     if args.background then
    end 
 
     if args.background then -- à supprimer
         local style = {}
         local style = {}
         style['background-color'] = args.background
         style['background-color'] = args.background
Ligne 90 : Ligne 64 :
     end
     end
     str = str .. '>'
     str = str .. '>'
   
     if args.text and args.text ~= '' then
     if args.text and args.text ~= '' then
         str = str .. args.text
         str = str .. args.text
Ligne 95 : Ligne 70 :
         str = str .. mw.title.getCurrentTitle().text
         str = str .. mw.title.getCurrentTitle().text
     end
     end
   
    self.text = self.text .. str .. '</p>'
end
function Infobox:addText( args )
local str = '<p'
    if args.class then
        str = str .. ' class= "' .. args.class ..'"'
    end
   
    if args.style then
        str = str .. ' style= "' .. table.concat( args.style, '; ' ) .. '"'
    end
   
    if args.text then
        str = str .. args.text
    end
   
     self.text = self.text .. str .. '</p>'
     self.text = self.text .. str .. '</p>'
end
end


function Infobox:openTable( args )
function Infobox:openTable( args )
     local str = '<table'
     local str = '<table><caption'
    str = str .. '><caption'
 
     if args.class then
     if args.class then
         str = str .. ' class="' .. args.class .. '"'
         str = str .. ' class="' .. args.class .. '"'
     end
     end


    --Style of the caption
    local style = {}
    local extrastyle = ''
    if args.border then
        style['border-color'] = args.border
    end
    if args.background then
        style['background'] = args.background
        if args.color then
            style['color'] = args.color
        end
    end
     if args.style then
     if args.style then
    extrastyle = formatStyle( args.style )
         str = str .. ' style= "' .. table.concat( args.style, '; ' ) .. '"'
end
   
    if next( style ) then
         str = str .. ' style="' .. formatStyle( style ) .. ';' .. extrastyle .. '"'
     end
     end
 
      
     str = str .. '>'
     if args.text and args.text ~= '' then
     if args.text and args.text ~= '' then
         str = str .. args.text
         str = str .. args.text
Ligne 266 : Ligne 242 :
     self.text = self.text .. str
     self.text = self.text .. str
end
end
function Infobox:addFooter( args)
    local templatename = args.templatename
    local pagename = mw.title.getCurrentTitle().prefixedText
    local class = args.class
    if not class then
    class = ""
    end
    local itemlink = ''
    local item = args.item
    if item then
    itemlink = ' - [[d:' .. item .. '|modifier l\'élément Wikidata]]'
end
    text = '<p class="navbar noprint' .. class .. 'style=1px;">'
.. '<span class="plainlinks">'
.. '[' .. tostring(mw.uri.fullUrl(pagename,'&action=edit&section=0')) .. ' ' .. i18n['edit infobox'] .. ']'
.. itemlink
.. '</span>'
.. '[[Image:Gtk-dialog-info.svg|12px|link=' .. templatename .. '|' .. i18n['see doc'] .. ']]'
.. '</p>'
self.text = self.text .. text
end


function Infobox:tostring()
function Infobox:tostring()

Version du 19 janvier 2014 à 20:36

local Infobox = {} local i18n = { ['see doc'] = 'Documentation du modèle', ['edit infobox'] = 'Modifier l\'infobox', }

function Infobox:new( args )

   -- Initialisation de l'object
   local object = {
       text = "",
       isPart = false
   }
   setmetatable(object, {
       __index = Infobox,
       __tostring = function( self ) return self:tostring() end
   })
   if args.isPart then
       object.isPart = true
   end
   -- Ouverture de l'élément principal de l'infobox
   if object.isPart then
       return object -- On retourne si on construit seulement un module
   end

local str = '

'
   return object

end

function Infobox:addTitle( args )

   local str = '<p'
   if args.class then
       str = str .. ' class= "' .. args.class ..'"'
   else
   	str = str .. ' class= "entete"'
   end  
   if args.background then -- à supprimer
       local style = {}
       style['background-color'] = args.background
       if args['border-color'] then
           style['border-color'] = args['border-color']
       else
           style['border-color'] = args.background
       end
       if args.color then
           style['color'] = args.color
       end
       str = str .. ' style="' .. formatStyle( style ) .. '"'
   end
   str = str .. '>'
   
   if args.text and args.text ~=  then
       str = str .. args.text
   else
       str = str .. mw.title.getCurrentTitle().text
   end
   
self.text = self.text .. str .. '

'

end

function Infobox:addText( args ) local str = '<p'

   if args.class then
       str = str .. ' class= "' .. args.class ..'"'
   end
   
   if args.style then
       str = str .. ' style= "' .. table.concat( args.style, '; ' ) .. '"'
   end
   
   if args.text then 
       str = str .. args.text
   end
   
self.text = self.text .. str .. '

'

end

function Infobox:openTable( args )

local str = '<caption' if args.class then str = str .. ' class="' .. args.class .. '"' end if args.style then str = str .. ' style= "' .. table.concat( args.style, '; ' ) .. '"' end if args.text and args.text ~= then str = str .. args.text else str = str .. 'Données clés' end self.text = self.text .. str .. '' end function Infobox:closeTable( args ) self.text = self.text .. '
'

end

function Infobox:addMixedRow( args )

   if not args.value or args.value ==  then
   	if args.cat then 
   		self.text = self.text .. -- ajoute catégorie de maintenance
   	end
       return
   end
   if not args.label then
self.text = self.text .. 'Le paramètre label n\'est pas renseigné.'
       return
   end
local str = '' .. args.label .. ''
   if args.hidden and args.hidden == 1 then  -- option caché sélectionné: affichage de la valeur sera masqué
self.text = self.text .. ''
   elseif args.weblink and args.weblink ~=  then  -- option lien externe
self.text = self.text .. '[' .. args.weblink .. args.value .. ' ' .. args.value .. ']' else self.text = self.text .. args.value .. '' -- affichage normal de la valeur end end function Infobox:addDoubledRow( args ) if not args.value or args.value == then if args.cat then self.text = self.text .. -- ajoute catégorie de maintenance end return end if not args.label then self.text = self.text .. 'Le paramètre label n\'est pas renseigné!!!'
       return
   end
local str = '' .. args.label .. '' .. args.value ..''

end

function Infobox:addImages( args )

   --Get images
   local images = {}
   if not args.images then
       return
   end
   for i,conf in pairs( args.images ) do
       if conf.name and conf.name ~=  then
           table.insert( images, conf )
       end
   end
   if not next( images ) then
       return --Pas d'images
   end
   local imagesCount = table.maxn( images )
   local str = 
   if imagesCount == 2 then
str = '
'
   end
   for i,image in pairs( images ) do
   	-- hack pour enlever puis remettre la catégorie de tracking Wikidata du nom de fichier
   	local t = mw.text.split( image.name, '[[', true )
   	local imagename = t[1]
   	local cat = 
   	if t[2] then
   		cat = '[[' .. t[2]

end

       str = str .. cat ..  'alt=Description de ' if args.legend then str = str .. 'cette image, également commentée ci-après' else str = str .. 'l\'image ' .. image.name end end str = str .. ''
   end
   if imagesCount == 2 then
str = str .. '
'
   end
   if args.legend then
str = str .. '

' .. args.legend .. '

'
   end
   
   self.text = self.text .. str

end

function Infobox:addFooter( args)

   local templatename = args.templatename
   local pagename = mw.title.getCurrentTitle().prefixedText
   local class = args.class
   if not class then
   	class = ""
   end
   local itemlink = 
   local item = args.item
   if item then
   	itemlink = ' - modifier l\'élément Wikidata'

end

text = ''

self.text = self.text .. text end

function Infobox:tostring()

   if self.isPart then
       return self.text
   else
return self.text .. '

'

   end

end

--Create a style property value from an array CSS property = CSS value function formatStyle( args )

   local elems = {}
   for key, val in pairs( args ) do
       table.insert( elems, key .. ':' .. val )
   end
   return table.concat( elems, '; ' )

end

local p = {} function p.new( args )

   return Infobox:new( args )

end function p.test()

   local a = Infobox:new( {} )
   a:addTitle( {} )
   a:addImages( {
       images = {
           {
               name = 'Pellicule.jpg'
           },
           {
               name = 'Pellicule.jpg'
           }
       },
       legend = 'legend'
   } )
   a:openTable( {} )
   a:addMixedRow( {
       label = 'Test',
       value = 'test'
   } )
   a:closeTable( {} )
   return tostring(a)

end return p