Difference between revisions of "Module:3D Viewer/sandbox2"

From Team Fortress Wiki
Jump to: navigation, search
m (Attempting to fix infinite loop.)
m (Added viewname fixes.)
Line 14: Line 14:
 
         startframe_class = mw.text.trim(startframe)
 
         startframe_class = mw.text.trim(startframe)
 
     else
 
     else
         startframe_class = utils.expandWikitext('{{File:' .. (image_0 or image) .. ' 3D.jpg|startframe}}')
+
         startframe_class = utils.expandWikitext('{{File:' .. (image_0 or image) .. ' 3D.jpg|startframe}}') -- Note: This initial image must not be team-colored.
 
     end
 
     end
 
     local output_view = HtmlBuilder.create('div')
 
     local output_view = HtmlBuilder.create('div')
Line 103: Line 103:
 
     while utils.processArg(args['3d-image-' .. i]) ~= '' or colored == 1 do -- The "or colored == 1" ensures that if the last image pair is team-colored, it will still be processed.
 
     while utils.processArg(args['3d-image-' .. i]) ~= '' or colored == 1 do -- The "or colored == 1" ensures that if the last image pair is team-colored, it will still be processed.
 
         local image_postfix = ' 3D.jpg'
 
         local image_postfix = ' 3D.jpg'
         if colored == 1 then
+
        local viewname_postfix = ''
 +
         if colored == 1 then -- If we are the second half of a team colored image, use the details from the first half.
 
             i = i - 1
 
             i = i - 1
            image_postfix = ' BLU 3D.jpg'
 
 
         end
 
         end
 
         local image_n = utils.processArg(args['3d-image-' .. i])
 
         local image_n = utils.processArg(args['3d-image-' .. i])
Line 111: Line 111:
 
         local button_class = button_classes[button_n]
 
         local button_class = button_classes[button_n]
 
         local viewname_n = utils.processArg(args['3d-viewname-' .. i])
 
         local viewname_n = utils.processArg(args['3d-viewname-' .. i])
         if colored == 1 then -- This block resets the iterator after loading all the details from the previous args.
+
         if colored == 1 then
 
             i = i + 1
 
             i = i + 1
 
             colored = 0
 
             colored = 0
 +
image_postfix = ' BLU 3D.jpg'
 +
            viewname_postfix = ' BLU'
 
             button_class = 'view-selector-blu'
 
             button_class = 'view-selector-blu'
 
         elseif colored == 0 and button_n == 'colored' then
 
         elseif colored == 0 and button_n == 'colored' then
 
             colored = 1
 
             colored = 1
 
             image_postfix = ' RED 3D.jpg'
 
             image_postfix = ' RED 3D.jpg'
 +
            viewname_postfix = ' RED'
 
             button_class = 'view-selector-red'
 
             button_class = 'view-selector-red'
 
         end
 
         end
Line 146: Line 149:
 
                 .tag('li')
 
                 .tag('li')
 
                 .addClass(button_class)
 
                 .addClass(button_class)
                 .wikitext(utils.expandWikitext('[[:File:' .. image_n .. image_postfix .. '|' .. viewname_n .. ']]'))
+
                 .wikitext(utils.expandWikitext('[[:File:' .. image_n .. image_postfix .. '|' .. viewname_n .. viewname_postfix']]'))
 
         end
 
         end
  

Revision as of 06:52, 6 September 2014

local p = {}

local utils = require('Module:Utils') local HtmlBuilder = require('Module:HtmlBuilder')

function p.viewer(frame)

   local args = utils.get_args(frame)
   local startframe = utils.processArg(args['startframe'])
   local image = utils.processArg(args['image'])
   local image_0 = utils.processArg(args['image-0'])
   local fallback = utils.processArg(args['fallback'])
   local startframe_class
   if startframe ~=  then
       startframe_class = mw.text.trim(startframe)
   else
       startframe_class = utils.expandWikitext('File:' .. (image 0 or image) .. ' 3D.jpg') -- Note: This initial image must not be team-colored.
   end
   local output_view = HtmlBuilder.create('div')
       .addClass('viewer-3d')
       .addClass('startframe-' .. startframe_class)
       .wikitext(fallback)
   for i = 0,10 do
       local image_n = utils.processArg(args['image-' .. i], )
       if image_n ~=  then
           span_image_url_n = output_view
               .tag('span')
               .addClass('viewer-3d-url-' .. i)
               .wikitext(utils.expandWikitext('File:' .. image n .. ''))
           span_image_map_n = output_view
               .tag('span')
               .addClass('viewer-3d-map-' .. i)
               .wikitext(utils.expandWikitext('File:' .. image n .. ''))
       end
   end
   local viewer_3d_frame = output_view
       .tag('div')
       .addClass('viewer-3d-frame')
   local switch_to_2d = output_view
       .tag('div')
       .attr('id', 'switch-to-2d')
   return tostring(output_view)

end

function p.viewer_new(frame)

   local args = utils.get_args(frame)
   
   -- button classes mapping
   local button_classes = {
       red = 'view-selector-red',
       blu = 'view-selector-blu',
       default_half = 'view-selector-default-',
       default_full = 'view-selector-default-full',
       default = 'view-selector-default-full'
   }
   -- create output container
   local output_view = HtmlBuilder.create('div')
       .addClass('viewer-3d-container')
   
   -- create container for viewer
   local startframe = args['3d-startframe'] or utils.expandWikitext('{{File:' .. utils.processArg(args['3d-image-0']) .. ' 3D.jpg|startframe}}')
   local viewer_container = output_view
       .tag('div')
       .addClass('viewer-3d')
       .addClass('startframe-' .. startframe)
   -- add 3D and 2D selectors
   local viewer_3d_frame = viewer_container
       .tag('div')
       .addClass('viewer-3d-frame')
   local switch_to_2d = viewer_container
       .tag('div')
       .attr('id', 'switch-to-2d')
   -- create container for model selector buttons
   local buttons_container = output_view
       .tag('ul')
       .addClass('buttons-container-3d')
   -- create container for 2D image
   local image_2d
   if args['image'] then
       image_2d = args['image']
   elseif args['team-colors'] == 'yes' then
       image_2d = 'RED ' .. mw.title.getCurrentTitle().baseText .. '.png'
   else
       image_2d = mw.title.getCurrentTitle().baseText .. '.png'
   end
   local viewer_2d_frame = output_view
       .tag('div')

.wikitext(utils.expandWikitext('

'))

   -- row button counter for half width buttons
   local current_row_count = 0
   local colored = 0
   local i = 0
   while utils.processArg(args['3d-image-' .. i]) ~=  or colored == 1 do -- The "or colored == 1" ensures that if the last image pair is team-colored, it will still be processed.
       local image_postfix = ' 3D.jpg'
       local viewname_postfix = 
       if colored == 1 then -- If we are the second half of a team colored image, use the details from the first half.
           i = i - 1
       end
       local image_n = utils.processArg(args['3d-image-' .. i])
       local button_n = utils.processArg(args['3d-button-' .. i])
       local button_class = button_classes[button_n]
       local viewname_n = utils.processArg(args['3d-viewname-' .. i])
       if colored == 1 then
           i = i + 1
           colored = 0

image_postfix = ' BLU 3D.jpg'

           viewname_postfix = ' BLU'
           button_class = 'view-selector-blu'
       elseif colored == 0 and button_n == 'colored' then
           colored = 1
           image_postfix = ' RED 3D.jpg'
           viewname_postfix = ' RED'
           button_class = 'view-selector-red'
       end
       if image_n ~=  then
           span_image_url_n = viewer_container
               .tag('span')
               .addClass('viewer-3d-url-' .. i)
               .wikitext(utils.expandWikitext('File:' .. image n .. image postfix .. ''))
           span_image_map_n = viewer_container
               .tag('span')
               .addClass('viewer-3d-map-' .. i)
               .wikitext(utils.expandWikitext('File:' .. image n .. image postfix .. ''))
           -- add selector button for this model
           if button_n == 'default_half' then
               if current_row_count == 0 then
                   button_class = button_class .. 'left'
                   current_row_count = 1
               else
                   button_class = button_class .. 'right'
                   current_row_count = 0
               end
           end
           button_class = button_class .. ' selector-' .. i
           
           li_button_n = buttons_container
               .tag('li')
               .addClass(button_class)
               .wikitext(utils.expandWikitext('' .. viewname_n .. viewname_postfix''))
       end
       i = i + 1
   end
   return tostring(output_view)

end

return p