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

From Team Fortress Wiki
Jump to: navigation, search
m (Auto: WordFilter(team colou?red → team-colored) (Review RC#1785105))
(blanked due to deadlinks)
(Tag: Blanking)
 
Line 1: Line 1:
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|startframe}}') -- 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 .. '|url}}'))
 
 
            span_image_map_n = output_view
 
                .tag('span')
 
                .addClass('viewer-3d-map-' .. i)
 
                .wikitext(utils.expandWikitext('{{File:' .. image_n .. '|map}}'))
 
        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('{{2D viewer|' .. image_2d .. '|' .. (args['imagewidth'] or '250px') .. '}}'))
 
 
    -- 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 .. '|url}}'))
 
 
            span_image_map_n = viewer_container
 
                .tag('span')
 
                .addClass('viewer-3d-map-' .. i)
 
                .wikitext(utils.expandWikitext('{{File:' .. image_n .. image_postfix .. '|map}}'))
 
 
            -- 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('[[:File:' .. image_n .. image_postfix .. '|' .. viewname_n .. viewname_postfix .. ']]'))
 
        end
 
 
        i = i + 1
 
    end
 
 
    return tostring(output_view)
 
end
 
 
return p
 

Latest revision as of 01:40, 16 October 2020