<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AAfC%2Fsandbox</id>
	<title>Module:AfC/sandbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AAfC%2Fsandbox"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:AfC/sandbox&amp;action=history"/>
	<updated>2026-04-03T17:45:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:AfC/sandbox&amp;diff=135176&amp;oldid=prev</id>
		<title>imported&gt;Oshwah: Oshwah moved page Module:AfC statistics row/sandbox to Module:AfC/sandbox without leaving a redirect: Undoing move (see Module talk:AfC) - the move broke a ton of template pages for AFC.</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:AfC/sandbox&amp;diff=135176&amp;oldid=prev"/>
		<updated>2018-07-04T22:31:57Z</updated>

		<summary type="html">&lt;p&gt;Oshwah moved page &lt;a href=&quot;/index.php?title=Module:AfC_statistics_row/sandbox&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:AfC statistics row/sandbox (page does not exist)&quot;&gt;Module:AfC statistics row/sandbox&lt;/a&gt; to &lt;a href=&quot;/research/Module:AfC/sandbox&quot; title=&quot;Module:AfC/sandbox&quot;&gt;Module:AfC/sandbox&lt;/a&gt; without leaving a redirect: Undoing move (see &lt;a href=&quot;/index.php?title=Module_talk:AfC&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module talk:AfC (page does not exist)&quot;&gt;Module talk:AfC&lt;/a&gt;) - the move broke a ton of template pages for AFC.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
revlib = require(&amp;quot;Module:Revision&amp;quot;);&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local status = frame.args[&amp;quot;s&amp;quot;]&lt;br /&gt;
    local title = frame.args[&amp;quot;t&amp;quot;]&lt;br /&gt;
    local short = p.shorttitle(title, 40)&lt;br /&gt;
    local size = frame.args[&amp;quot;z&amp;quot;]&lt;br /&gt;
    local modified_by = frame.args[&amp;quot;mr&amp;quot;]&lt;br /&gt;
    local modified_at = frame.args[&amp;quot;md&amp;quot;]&lt;br /&gt;
    local old_id = frame.args[&amp;quot;mi&amp;quot;]&lt;br /&gt;
    local special_user = frame.args[&amp;quot;sr&amp;quot;]&lt;br /&gt;
    local special_time = frame.args[&amp;quot;sd&amp;quot;]&lt;br /&gt;
    local special_id = tonumber(frame.args[&amp;quot;si&amp;quot;])&lt;br /&gt;
    local display_notes = tonumber(frame.args[&amp;quot;n&amp;quot;])&lt;br /&gt;
    local rowtemplate = &amp;quot;&amp;lt;tr style=\&amp;quot;background-color:%s\&amp;quot;&amp;gt; %s &amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
    local colorthing =  p.color(status, false)&lt;br /&gt;
    local cols = {}&lt;br /&gt;
    cols[1] = string.format(&amp;quot;[[:%s|%s]]&amp;quot;, title, short)&lt;br /&gt;
    cols[2] = string.format(&amp;#039;&amp;lt;span style=&amp;quot;display:none&amp;quot; class=&amp;quot;sortkey&amp;quot;&amp;gt;%d&amp;lt;/span&amp;gt;%.1f kB&amp;#039;, size, size / 1000)&lt;br /&gt;
    &lt;br /&gt;
    local is_userspace = string.sub(frame.args[&amp;quot;t&amp;quot;], 1, 4) == &amp;quot;User&amp;quot;&lt;br /&gt;
    if is_userspace then display_notes = 1 end&lt;br /&gt;
    &lt;br /&gt;
    if display_notes then cols[3] = p.notes(frame) else cols[3] = &amp;quot;&amp;quot; end&lt;br /&gt;
    &lt;br /&gt;
    if special_id then&lt;br /&gt;
        cols[4] = p.printuser(special_user)&lt;br /&gt;
        cols[5] = string.format(&amp;#039;&amp;lt;span style=&amp;quot;display:none&amp;quot; class=&amp;quot;sortkey&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;%s&amp;#039;, special_id, p.invoke(&amp;quot;Module:Revision&amp;quot;, &amp;quot;diff&amp;quot;, frame, title, &amp;quot;prev&amp;quot;, special_id, special_time))&lt;br /&gt;
    else&lt;br /&gt;
        cols[4] = &amp;quot;Unknown&amp;quot;&lt;br /&gt;
        cols[5] = &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
            &lt;br /&gt;
    cols[6] = p.printuser(modified_by)&lt;br /&gt;
    cols[7] = string.format(&amp;#039;&amp;lt;span style=&amp;quot;display:none&amp;quot; class=&amp;quot;sortkey&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;%s&amp;#039;, old_id, p.invoke(&amp;quot;Module:Revision&amp;quot;, &amp;quot;diff&amp;quot;, frame, title, &amp;quot;prev&amp;quot;, old_id, modified_at))&lt;br /&gt;
    local colstring = &amp;quot;&amp;quot;&lt;br /&gt;
    for i=1, 7 do colstring = colstring .. string.format(&amp;quot;&amp;lt;td&amp;gt;%s&amp;lt;/td&amp;gt;&amp;quot;, cols[i]) end&lt;br /&gt;
    return string.format(rowtemplate, colorthing, colstring)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
    local result = &amp;quot;&amp;quot;&lt;br /&gt;
    local is_suspected_copyvio = tonumber(frame.args[&amp;quot;nc&amp;quot;])&lt;br /&gt;
    local is_unsourced = tonumber(frame.args[&amp;quot;nu&amp;quot;])&lt;br /&gt;
    local no_inline = tonumber(frame.args[&amp;quot;ni&amp;quot;])&lt;br /&gt;
    local is_short = tonumber(frame.args[&amp;quot;ns&amp;quot;])&lt;br /&gt;
    local is_resubmit = tonumber(frame.args[&amp;quot;nr&amp;quot;])&lt;br /&gt;
    local is_old = tonumber(frame.args[&amp;quot;no&amp;quot;])&lt;br /&gt;
    local submitter_is_blocked = tonumber(frame.args[&amp;quot;nb&amp;quot;])&lt;br /&gt;
    local is_userspace = string.sub(frame.args[&amp;quot;t&amp;quot;], 1, 4) == &amp;quot;User&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if is_suspected_copyvio then result = result .. &amp;quot;&amp;lt;abbr title=\&amp;quot;Submission is a suspected copyright violation\&amp;quot;&amp;gt;copyvio&amp;lt;/abbr&amp;gt;&amp;amp;#32;&amp;amp;#32;&amp;quot; end&lt;br /&gt;
    if is_unsourced then result = result .. &amp;quot;&amp;lt;abbr title=\&amp;quot;Submission lacks references completely\&amp;quot;&amp;gt;unsourced&amp;lt;/abbr&amp;gt;&amp;amp;#32;&amp;amp;#32;&amp;quot; end&lt;br /&gt;
    if no_inline then result = result .. &amp;quot;&amp;lt;abbr title=\&amp;quot;Submission has no inline citations\&amp;quot;&amp;gt;no-inline&amp;lt;/abbr&amp;gt;&amp;amp;#32;&amp;amp;#32;&amp;quot; end&lt;br /&gt;
    if is_short then result  = result ..&amp;quot;&amp;lt;abbr title=\&amp;quot;Submission is less than a kilobyte in length\&amp;quot;&amp;gt;short&amp;lt;/abbr&amp;gt;&amp;amp;#32;&amp;amp;#32;&amp;quot; end&lt;br /&gt;
    if is_resubmit then result  = result .. &amp;quot;&amp;lt;abbr title=\&amp;quot;Submission was resubmitted after a previous decline\&amp;quot;&amp;gt;resubmit&amp;lt;/abbr&amp;gt;&amp;amp;#32;&amp;amp;#32;&amp;quot; end&lt;br /&gt;
    if is_old then result  = result .. &amp;quot;&amp;lt;abbr title=\&amp;quot;Submission has not been touched in over four days\&amp;quot;&amp;gt;old&amp;lt;/abbr&amp;gt;&amp;amp;#32;&amp;amp;#32;&amp;quot; end&lt;br /&gt;
    if submitter_is_blocked then result  = result .. &amp;quot;&amp;lt;abbr title=\&amp;quot;Submitter is currently blocked\&amp;quot;&amp;gt;blocked&amp;lt;/abbr&amp;gt;&amp;amp;#32;&amp;amp;#32;&amp;quot; end&lt;br /&gt;
    if is_userspace then result  = result .. &amp;quot;&amp;lt;abbr title=\&amp;quot;Submission is located in the User or User Talk space\&amp;quot;&amp;gt;userspace&amp;lt;/abbr&amp;gt;&amp;amp;#32;&amp;amp;#32;&amp;quot; end&lt;br /&gt;
        &lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.color(status, dark)&lt;br /&gt;
    local result&lt;br /&gt;
    local dark_colors = {&lt;br /&gt;
        p = &amp;quot;#979158&amp;quot;,&lt;br /&gt;
        d = &amp;quot;#a07980&amp;quot;,&lt;br /&gt;
        r = &amp;quot;#708a92&amp;quot;,&lt;br /&gt;
        a = &amp;quot;#5f9e5f&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    local normal_colors = {&lt;br /&gt;
        p = &amp;quot;#f3eba3&amp;quot;,&lt;br /&gt;
        d = &amp;quot;#ffcdd5&amp;quot;,&lt;br /&gt;
        r = &amp;quot;#b1dae8&amp;quot;,&lt;br /&gt;
        a = &amp;quot;#adfcad&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    if dark then&lt;br /&gt;
        return dark_colors[status] or &amp;quot;#7e7f7a&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        return normal_colors[status] or &amp;quot;#d2d3cc&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.printuser(user)&lt;br /&gt;
  return string.format(&amp;quot;[[User:%s|%s]] ([[User talk:%s|t]])&amp;quot;, user, user, user)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.shorttitle(fulltitle, maxlength)&lt;br /&gt;
    --strip off namespace:basepage/ if it exists and anything is left&lt;br /&gt;
    --if not, strip off namespace&lt;br /&gt;
    --truncate to maxlength&lt;br /&gt;
    local startindex, size, namespace, basetitle, subtitle = mw.ustring.find(fulltitle, &amp;quot;([^:]*):([^\/]*)\/?(.*)&amp;quot;)&lt;br /&gt;
    local effective_title = subtitle or basetitle&lt;br /&gt;
    if (effective_title == nil or string.len(effective_title) == 0) then effective_title = fulltitle end&lt;br /&gt;
    effective_title = string.gsub(effective_title, &amp;quot;^Submissions/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    -- return mw.text.truncate( effective_title, maxlength ) (mw.text is not yet deployed!)&lt;br /&gt;
    if (mw.ustring.len(effective_title) &amp;gt; maxlength) then&lt;br /&gt;
        return mw.ustring.sub(effective_title, 1, maxlength - 3) .. &amp;quot;...&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        return effective_title&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--equivalent of {{#Invoke:module|function|arg1|arg2|namedarg=arg3|namedarg2=arg4}} becomes&lt;br /&gt;
--p.invoke(&amp;quot;module&amp;quot;, &amp;quot;function&amp;quot;, frame, arg1, arg2, {namedarg=arg3}, {namedarg2=arg4})&lt;br /&gt;
function p.invoke(modname, call, frame, ...)&lt;br /&gt;
    local mymod = require(modname)&lt;br /&gt;
    local nargs = {}&lt;br /&gt;
    for i,v in ipairs(arg) do&lt;br /&gt;
        if type(v) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            local argname, argv = ipairs(v)&lt;br /&gt;
            nargs[argname] = tostring(argv)&lt;br /&gt;
        else&lt;br /&gt;
            nargs[i] = tostring(v)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    local childframe = frame:newChild{title = nil, args = nargs}&lt;br /&gt;
    return mymod[call](childframe)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Oshwah</name></author>
	</entry>
</feed>