Jump to content

Module:Infobox: Difference between revisions

66 bytes removed ,  10 years ago
update to use mw.html instead of Module:HtmlBuilder - conversion courtesy of User:WOSlinker
m>Mr. Stradivarius
(allow setting ids for rows, headers, labels and data fields, per protected edit request by User:Czarkoff)
m>Mr. Stradivarius
(update to use mw.html instead of Module:HtmlBuilder - conversion courtesy of User:WOSlinker)
Line 4: Line 4:
   
   
local p = {}
local p = {}
 
local HtmlBuilder = require('Module:HtmlBuilder')
local args = {}
local args = {}
local origArgs
local origArgs
local root
local root
 
local function union(t1, t2)
local function union(t1, t2)
     -- Returns the union of the values of two tables, as a sequence.
     -- Returns the union of the values of two tables, as a sequence.
Line 45: Line 43:
     if rowArgs.header then
     if rowArgs.header then
         root
         root
             .tag('tr')
             :tag('tr')
                 .addClass(rowArgs.rowclass)
                 :addClass(rowArgs.rowclass)
                 .attr('id', rowArgs.rowid)
                 :attr('id', rowArgs.rowid)
                 .tag('th')
                 :tag('th')
                     .attr('colspan', 2)
                     :attr('colspan', 2)
                     .attr('id', rowArgs.headerid)
                     :attr('id', rowArgs.headerid)
                     .addClass(rowArgs.class)
                     :addClass(rowArgs.class)
                     .addClass(args.headerclass)
                     :addClass(args.headerclass)
                     .css('text-align', 'center')
                     :css('text-align', 'center')
                     .cssText(args.headerstyle)
                     :cssText(args.headerstyle)
                     .wikitext(rowArgs.header)
                     :wikitext(rowArgs.header)
     elseif rowArgs.data then
     elseif rowArgs.data then
         local row = root.tag('tr')
         local row = root:tag('tr')
         row.addClass(rowArgs.rowclass)
         row:addClass(rowArgs.rowclass)
         row.attr('id', rowArgs.rowid)
         row:attr('id', rowArgs.rowid)
         if rowArgs.label then
         if rowArgs.label then
             row
             row
                 .tag('th')
                 :tag('th')
                     .attr('scope', 'row')
                     :attr('scope', 'row')
                     .attr('id', rowArgs.labelid)
                     :attr('id', rowArgs.labelid)
                     .css('text-align', 'left')
                     :css('text-align', 'left')
                     .cssText(args.labelstyle)
                     :cssText(args.labelstyle)
                     .wikitext(rowArgs.label)
                     :wikitext(rowArgs.label)
                     .done()
                     :done()
         end
         end
          
          
         local dataCell = row.tag('td')
         local dataCell = row:tag('td')
         if not rowArgs.label then  
         if not rowArgs.label then  
             dataCell
             dataCell
                 .attr('colspan', 2)
                 :attr('colspan', 2)
                 .css('text-align', 'center')  
                 :css('text-align', 'center')  
         end
         end
         dataCell
         dataCell
             .attr('id', rowArgs.dataid)
             :attr('id', rowArgs.dataid)
             .addClass(rowArgs.class)
             :addClass(rowArgs.class)
             .cssText(rowArgs.datastyle)
             :cssText(rowArgs.datastyle)
             .newline()
             :newline()
             .wikitext(rowArgs.data)
             :wikitext(rowArgs.data)
     end
     end
end
end
Line 90: Line 88:


     root
     root
         .tag('caption')
         :tag('caption')
             .addClass(args.titleclass)
             :addClass(args.titleclass)
             .cssText(args.titlestyle)
             :cssText(args.titlestyle)
             .wikitext(args.title)
             :wikitext(args.title)
end
end


Line 100: Line 98:
      
      
     root
     root
         .tag('tr')
         :tag('tr')
             .tag('th')
             :tag('th')
                 .attr('colspan', 2)
                 :attr('colspan', 2)
                 .addClass(args.aboveclass)
                 :addClass(args.aboveclass)
                 .css('text-align', 'center')
                 :css('text-align', 'center')
                 .css('font-size', '125%')
                 :css('font-size', '125%')
                 .css('font-weight', 'bold')
                 :css('font-weight', 'bold')
                 .cssText(args.abovestyle)
                 :cssText(args.abovestyle)
                 .wikitext(args.above)
                 :wikitext(args.above)
end
end


Line 115: Line 113:
      
      
     root
     root
         .tag('tr')
         :tag('tr')
             .tag('td')
             :tag('td')
                 .attr('colspan', '2')
                 :attr('colspan', '2')
                 .addClass(args.belowclass)
                 :addClass(args.belowclass)
                 .css('text-align', 'center')
                 :css('text-align', 'center')
                 .cssText(args.belowstyle)
                 :cssText(args.belowstyle)
                 .newline()
                 :newline()
                 .wikitext(args.below)
                 :wikitext(args.below)
end
end


Line 153: Line 151:
     for k, num in ipairs(imagenums) do
     for k, num in ipairs(imagenums) do
         local caption = args['caption' .. tostring(num)]
         local caption = args['caption' .. tostring(num)]
         local data = HtmlBuilder.create().wikitext(args['image' .. tostring(num)])
         local data = mw.html.create():wikitext(args['image' .. tostring(num)])
         if caption then
         if caption then
             data
             data
                 .tag('div')
                 :tag('div')
                     .cssText(args.captionstyle)
                     :cssText(args.captionstyle)
                     .wikitext(caption)
                     :wikitext(caption)
         end
         end
         addRow({
         addRow({
Line 194: Line 192:
      
      
     root
     root
         .tag('tr')
         :tag('tr')
             .tag('td')
             :tag('td')
                 .attr('colspan', '2')
                 :attr('colspan', '2')
                 .css('text-align', 'right')
                 :css('text-align', 'right')
                 .wikitext(mw.getCurrentFrame():expandTemplate({  
                 :wikitext(mw.getCurrentFrame():expandTemplate({  
                     title = 'navbar',  
                     title = 'navbar',  
                     args = { args.name, mini = 1 }
                     args = { args.name, mini = 1 }
Line 207: Line 205:
     local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
     local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
     if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
     if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
         root.wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))
         root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))
     end
     end
end
end
Line 214: Line 212:
     if args.decat ~= 'yes' then
     if args.decat ~= 'yes' then
         if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
         if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
             root.wikitext('[[Category:Articles which use infobox templates with no data rows]]')
             root:wikitext('[[Category:Articles which use infobox templates with no data rows]]')
         end
         end
         if args.child == 'yes' and args.title then
         if args.child == 'yes' and args.title then
             root.wikitext('[[Category:Articles which use embedded infobox templates with the title parameter]]')
             root:wikitext('[[Category:Articles which use embedded infobox templates with the title parameter]]')
         end
         end
     end
     end
Line 226: Line 224:
     -- if the infobox is used as a 'child' inside another infobox.
     -- if the infobox is used as a 'child' inside another infobox.
     if args.child ~= 'yes' then
     if args.child ~= 'yes' then
         root = HtmlBuilder.create('table')
         root = mw.html.create('table')
          
          
         root
         root
             .addClass('infobox')
             :addClass('infobox')
             .addClass(args.bodyclass)
             :addClass(args.bodyclass)
             .attr('cellspacing', 3)
             :attr('cellspacing', 3)
             .css('border-spacing', '3px')
             :css('border-spacing', '3px')
              
              
             if args.subbox == 'yes' then
             if args.subbox == 'yes' then
                 root
                 root
                     .css('padding', '0')
                     :css('padding', '0')
                     .css('border', 'none')
                     :css('border', 'none')
                     .css('margin', '-3px')
                     :css('margin', '-3px')
                     .css('width', 'auto')
                     :css('width', 'auto')
                     .css('min-width', '100%')
                     :css('min-width', '100%')
                     .css('font-size', '100%')
                     :css('font-size', '100%')
                     .css('clear', 'none')
                     :css('clear', 'none')
                     .css('float', 'none')
                     :css('float', 'none')
                     .css('background-color', 'transparent')
                     :css('background-color', 'transparent')
             else
             else
                 root
                 root
                     .css('width', '22em')
                     :css('width', '22em')
             end
             end
         root
         root
             .cssText(args.bodystyle)
             :cssText(args.bodystyle)
      
      
         renderTitle()
         renderTitle()
         renderAboveRow()
         renderAboveRow()
     else
     else
         root = HtmlBuilder.create()
         root = mw.html.create()
          
          
         root
         root
             .wikitext(args.title)
             :wikitext(args.title)
     end
     end


Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.