« 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)
test pied de page
Ligne 33 : Ligne 33 :
     --str = str .. ' style="width: ' .. args.width .. '"'
     --str = str .. ' style="width: ' .. args.width .. '"'
     end
     end
     object.text = str .. '>'
    -- pied de page avec rétroliens
     object.text = str .. '<p class="navbar noprint' .. class or '' ..  'style=1px;"><span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit&section=0}} modifier]</span> [[Image:Gtk-dialog-info.svg|12px|link={{{1|}}}|Consultez la documentation du modèle]]</p>'
     return object
     return object
end
end

Version du 17 décembre 2013 à 09:59

local Infobox = {}

function Infobox:new( args )

   --Object initialisation
   local object = {
       text = "",
       isPart = false
   }
   setmetatable(object, {
       __index = Infobox,
       __tostring = function( self ) return self:tostring() end
   })
   if args.isPart then
       object.isPart = true
   end
   --Open main div
   if object.isPart then
       return object --On retourne si on construit seulement un module
   end
   local str = '<div class="'
   if args.typeInfobox then
       str = str .. args.typeInfobox
   else
   	str = str .. 'infobox_v3'
   end
   str = str ..'"'
   if args.styleInfobox then
       str = str .. ' style="' .. args.styleInfobox .. '"'
   -- else
   	--str = str .. ' style="width: ' .. args.width .. '"'
   end
   -- pied de page avec rétroliens

object.text = str .. '

'

   return object

end function Infobox:addText( args ) if args.text then self.text = self.text .. args.text end end


function Infobox:addTitle( args )

local 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:openTable( args )

   local str = '<table'
   str = str .. '><caption'
   if args.class then
       str = str .. ' class="' .. args.class .. '"'
   end
   --Style of the caption
   local style = {}
   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 next( style ) then
       str = str .. ' style="' .. formatStyle( style ) .. '"'
   end
   str = str .. '>'
   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
   if args.legend then

str = str .. '

' .. args.legend .. '

'

   end
   
   self.text = self.text .. str

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