Examine individual changes
This page allows you to examine the variables generated by the Edit Filter for an individual change.
Variables generated for this change
Variable | Value |
---|---|
Edit count of the user (user_editcount ) | 62292 |
Name of the user account (user_name ) | 'Izno' |
Age of the user account (user_age ) | 454854002 |
Groups (including implicit) the user is in (user_groups ) | [
0 => 'interface-admin',
1 => 'sysop',
2 => '*',
3 => 'user',
4 => 'autoconfirmed'
] |
Rights that the user has (user_rights ) | [
0 => 'editinterface',
1 => 'editsitecss',
2 => 'editsitejson',
3 => 'editsitejs',
4 => 'editusercss',
5 => 'edituserjson',
6 => 'edituserjs',
7 => 'oathauth-enable',
8 => 'templateeditor',
9 => 'changetags',
10 => 'extendedconfirmed',
11 => 'suppressredirect',
12 => 'noratelimit',
13 => 'deleterevision',
14 => 'deletelogentry',
15 => 'editcontentmodel',
16 => 'block',
17 => 'createaccount',
18 => 'delete',
19 => 'deletedhistory',
20 => 'deletedtext',
21 => 'undelete',
22 => 'import',
23 => 'move',
24 => 'move-subpages',
25 => 'move-rootuserpages',
26 => 'move-categorypages',
27 => 'patrol',
28 => 'autopatrol',
29 => 'protect',
30 => 'editprotected',
31 => 'rollback',
32 => 'upload',
33 => 'reupload',
34 => 'reupload-shared',
35 => 'unwatchedpages',
36 => 'autoconfirmed',
37 => 'editsemiprotected',
38 => 'ipblock-exempt',
39 => 'blockemail',
40 => 'markbotedits',
41 => 'apihighlimits',
42 => 'browsearchive',
43 => 'movefile',
44 => 'mergehistory',
45 => 'managechangetags',
46 => 'deletechangetags',
47 => 'abusefilter-revert',
48 => 'autoreview',
49 => 'stablesettings',
50 => 'movestable',
51 => 'review',
52 => 'unreviewedpages',
53 => 'tboverride',
54 => 'titleblacklistlog',
55 => 'transcode-reset',
56 => 'transcode-status',
57 => 'globalblock-whitelist',
58 => 'nuke',
59 => 'skipcaptcha',
60 => 'override-antispoof',
61 => 'centralauth-createlocal',
62 => 'abusefilter-log-detail',
63 => 'abusefilter-view-private',
64 => 'abusefilter-log-private',
65 => 'abusefilter-modify-restricted',
66 => 'massmessage',
67 => 'read',
68 => 'edit',
69 => 'createtalk',
70 => 'writeapi',
71 => 'viewmywatchlist',
72 => 'editmywatchlist',
73 => 'viewmyprivateinfo',
74 => 'editmyprivateinfo',
75 => 'editmyoptions',
76 => 'centralauth-merge',
77 => 'abusefilter-view',
78 => 'abusefilter-log',
79 => 'vipsscaler-test',
80 => 'collectionsaveasuserpage',
81 => 'reupload-own',
82 => 'createpage',
83 => 'minoredit',
84 => 'editmyusercss',
85 => 'editmyuserjson',
86 => 'editmyuserjs',
87 => 'purge',
88 => 'sendemail',
89 => 'applychangetags',
90 => 'spamblacklistlog',
91 => 'mwoauthmanagemygrants',
92 => 'collectionsaveascommunitypage',
93 => 'createpagemainns'
] |
Whether the user is editing from mobile app (user_app ) | false |
Whether or not a user is editing through the mobile interface (user_mobile ) | false |
Page ID (page_id ) | 43454483 |
Page namespace (page_namespace ) | 828 |
Page title without namespace (page_title ) | 'Lockbox' |
Full page title (page_prefixedtitle ) | 'Module:Lockbox' |
Edit protection level of the page (page_restrictions_edit ) | [
0 => 'sysop'
] |
Page age in seconds (page_age ) | 213094441 |
Action (action ) | 'edit' |
Edit summary/reason (summary ) | 'swap to error' |
Old content model (old_content_model ) | 'Scribunto' |
New content model (new_content_model ) | 'Scribunto' |
Old page wikitext, before the edit (old_wikitext ) | 'local export = {}
-- XXX: OUTRAGEOUS ABUSE OF SCRIBUNTO API
-- Generates a transclusion without incrementing the "expensive function" count
local generate_transclusion
do
local mock_title = mw.title.new(mw.title.getCurrentTitle().id)
local getContent = mock_title.getContent
function generate_transclusion(title)
local full_text = type(title) == 'table' and title.fullText or title
rawset(mock_title, 'fullText', full_text)
getContent(mock_title)
end
end
local function make_wikitext_warning(msg)
return string.format('<strong class="warning">Warning: %s.</strong>', msg)
end
function export.lock(frame)
local warnings, transclusion_list = {}, {}
-- Check if the transcluding page is cascade-protected.
--
-- Only pages transcluded from a cascade-protected page appear in
-- CASCADINGSOURCES, so normally we would not be able to tell if the lockbox
-- itself is cascade-protected. To work around this, we generate a
-- transclusion from the lockbox to itself, so that it will have an entry
-- for itself in CASCADINGSOURCES.
--
-- We cannot generate this transclusion using the title object for the
-- parent title (the lockbox), as if the lockbox is transcluded on another
-- page, we will generate a transclusion *from* the lockbox *to* that page
-- as well, and the page will be cascade-protected. Instead we generate it
-- with the title object for the current title.
--
-- When the current title is the parent title (i.e. we are rendering the
-- lockbox page), this creates the required entry in the link table in the
-- database. When the current title is the grandparent title or up (i.e. we
-- are rendering a page transcluding the lockbox), transclusions are only
-- created from the page itself, not from the lockbox, and it is not
-- cascade-protected.
--
-- This creates an extaneous self-transclusion for all pages using the
-- module, but we treat that as a necessary evil.
do
mw.title.getCurrentTitle():getContent() -- Generate self-transclusion
local parent_title = frame:getParent():getTitle()
if not mw.title.new(parent_title).cascadingProtection.sources[1] then
warnings[#warnings + 1] = make_wikitext_warning(string.format(
'the page "%s" is not cascade-protected',
parent_title
))
end
end
-- Generate transclusions to the templates, and build the output list.
for i, item in ipairs(frame.args) do
item = mw.text.trim(item)
local title = mw.title.new(item)
if title then
local ns = title.namespace
local prefixed_text = title.prefixedText
if ns == 0 then
-- The item had no namespace text. If the item starts with a
-- colon, assume it is a mainspace page. Otherwise, assume it is
-- a template.
if item:sub(1, 1) == ':' then
generate_transclusion(title)
table.insert(transclusion_list, '* [[' .. prefixed_text .. ']]')
else
generate_transclusion('Template:' .. prefixed_text)
table.insert(transclusion_list, '* [[Template:' .. prefixed_text .. ']]')
end
elseif ns == 6 or ns == 14 then -- File or Category namespace
generate_transclusion(title)
table.insert(transclusion_list, '* [[:' .. prefixed_text .. ']]')
else
generate_transclusion(title)
table.insert(transclusion_list, '* [[' .. prefixed_text .. ']]')
end
else
warnings[#warnings + 1] = make_wikitext_warning(string.format(
'invalid title "%s" in argument #%d',
item,
i
))
end
end
if frame.args.silent then
return ''
else
-- If there were any warnings, show them at the top. Then show the list
-- of transcluded pages.
local ret = ''
if #warnings > 0 then
if #warnings > 1 then
for i, warning in ipairs(warnings) do
warnings[i] = '* ' .. warning
end
end
ret = ret .. table.concat(warnings, '\n') .. '\n\n'
end
return ret .. table.concat(transclusion_list, '\n')
end
end
return export' |
New page wikitext, after the edit (new_wikitext ) | 'local export = {}
-- XXX: OUTRAGEOUS ABUSE OF SCRIBUNTO API
-- Generates a transclusion without incrementing the "expensive function" count
local generate_transclusion
do
local mock_title = mw.title.new(mw.title.getCurrentTitle().id)
local getContent = mock_title.getContent
function generate_transclusion(title)
local full_text = type(title) == 'table' and title.fullText or title
rawset(mock_title, 'fullText', full_text)
getContent(mock_title)
end
end
local function make_wikitext_warning(msg)
return string.format('<strong class="error">Warning: %s.</strong>', msg)
end
function export.lock(frame)
local warnings, transclusion_list = {}, {}
-- Check if the transcluding page is cascade-protected.
--
-- Only pages transcluded from a cascade-protected page appear in
-- CASCADINGSOURCES, so normally we would not be able to tell if the lockbox
-- itself is cascade-protected. To work around this, we generate a
-- transclusion from the lockbox to itself, so that it will have an entry
-- for itself in CASCADINGSOURCES.
--
-- We cannot generate this transclusion using the title object for the
-- parent title (the lockbox), as if the lockbox is transcluded on another
-- page, we will generate a transclusion *from* the lockbox *to* that page
-- as well, and the page will be cascade-protected. Instead we generate it
-- with the title object for the current title.
--
-- When the current title is the parent title (i.e. we are rendering the
-- lockbox page), this creates the required entry in the link table in the
-- database. When the current title is the grandparent title or up (i.e. we
-- are rendering a page transcluding the lockbox), transclusions are only
-- created from the page itself, not from the lockbox, and it is not
-- cascade-protected.
--
-- This creates an extaneous self-transclusion for all pages using the
-- module, but we treat that as a necessary evil.
do
mw.title.getCurrentTitle():getContent() -- Generate self-transclusion
local parent_title = frame:getParent():getTitle()
if not mw.title.new(parent_title).cascadingProtection.sources[1] then
warnings[#warnings + 1] = make_wikitext_warning(string.format(
'the page "%s" is not cascade-protected',
parent_title
))
end
end
-- Generate transclusions to the templates, and build the output list.
for i, item in ipairs(frame.args) do
item = mw.text.trim(item)
local title = mw.title.new(item)
if title then
local ns = title.namespace
local prefixed_text = title.prefixedText
if ns == 0 then
-- The item had no namespace text. If the item starts with a
-- colon, assume it is a mainspace page. Otherwise, assume it is
-- a template.
if item:sub(1, 1) == ':' then
generate_transclusion(title)
table.insert(transclusion_list, '* [[' .. prefixed_text .. ']]')
else
generate_transclusion('Template:' .. prefixed_text)
table.insert(transclusion_list, '* [[Template:' .. prefixed_text .. ']]')
end
elseif ns == 6 or ns == 14 then -- File or Category namespace
generate_transclusion(title)
table.insert(transclusion_list, '* [[:' .. prefixed_text .. ']]')
else
generate_transclusion(title)
table.insert(transclusion_list, '* [[' .. prefixed_text .. ']]')
end
else
warnings[#warnings + 1] = make_wikitext_warning(string.format(
'invalid title "%s" in argument #%d',
item,
i
))
end
end
if frame.args.silent then
return ''
else
-- If there were any warnings, show them at the top. Then show the list
-- of transcluded pages.
local ret = ''
if #warnings > 0 then
if #warnings > 1 then
for i, warning in ipairs(warnings) do
warnings[i] = '* ' .. warning
end
end
ret = ret .. table.concat(warnings, '\n') .. '\n\n'
end
return ret .. table.concat(transclusion_list, '\n')
end
end
return export' |
Unified diff of changes made by edit (edit_diff ) | '@@ -15,5 +15,5 @@
local function make_wikitext_warning(msg)
- return string.format('<strong class="warning">Warning: %s.</strong>', msg)
+ return string.format('<strong class="error">Warning: %s.</strong>', msg)
end
' |
New page size (new_size ) | 3877 |
Old page size (old_size ) | 3879 |
Size change in edit (edit_delta ) | -2 |
Lines added in edit (added_lines ) | [
0 => ' return string.format('<strong class="error">Warning: %s.</strong>', msg)'
] |
External links added in the edit (added_links ) | [] |
External links in the page, before the edit (old_links ) | [] |
Whether or not the change was made through a Tor exit node (tor_exit_node ) | false |
Unix timestamp of change (timestamp ) | 1620066850 |
External links in the new text (new_links ) | [] |