Line 14: |
Line 14: |
| pagename = title.prefixedText | | pagename = title.prefixedText |
| if action == 'autoreview' then | | if action == 'autoreview' then |
− | local level = mw.getCurrentFrame():callParserFunction('PENDINGCHANGELEVEL', pagename) | + | local level = mw.ext.FlaggedRevs.getStabilitySettings(title) |
| + | level = level and level.autoreview |
| if level == 'review' then | | if level == 'review' then |
| return 'reviewer' | | return 'reviewer' |
Line 22: |
Line 23: |
| return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review | | return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review |
| end | | end |
− | elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then | + | elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then |
− | error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 ) | + | error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 ) |
| end | | end |
| if title.namespace == 8 then -- MediaWiki namespace | | if title.namespace == 8 then -- MediaWiki namespace |
− | return 'sysop' | + | if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page |
− | elseif title.namespace == 2 and title.isSubpage and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) then -- user JS or CSS page | + | return 'interfaceadmin' |
| + | else -- any non-JS/CSS MediaWiki page |
| + | return 'sysop' |
| + | end |
| + | elseif title.namespace == 2 and title.isSubpage then |
| + | if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page |
| + | return 'interfaceadmin' |
| + | elseif title.contentModel == 'json' then -- user JSON page |
| + | return 'sysop' |
| + | end |
| + | end |
| + | if action == 'undelete' then |
| return 'sysop' | | return 'sysop' |
| end | | end |
Line 43: |
Line 55: |
| elseif title.namespace == 6 then | | elseif title.namespace == 6 then |
| return 'filemover' | | return 'filemover' |
| + | elseif level == 'extendedconfirmed' then |
| + | return 'extendedconfirmed' |
| else | | else |
| return 'autoconfirmed' | | return 'autoconfirmed' |
Line 49: |
Line 63: |
| local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) | | local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) |
| if blacklistentry then | | if blacklistentry then |
− | return blacklistentry.params.autoconfirmed and 'autoconfirmed' or 'templateeditor' | + | if not blacklistentry.params.autoconfirmed then |
| + | return 'templateeditor' |
| + | elseif level == 'extendedconfirmed' then |
| + | return 'extendedconfirmed' |
| + | else |
| + | return 'autoconfirmed' |
| + | end |
| elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason | | elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason |
| return 'autoconfirmed' | | return 'autoconfirmed' |