Gamepedia Help Wiki
m (Undo revision 25641 by Tobi 406 (talk): Accidently saved)
Tag: Undo
Tobi 406 (talk | contribs)
No edit summary
Line 4: Line 4:
 
user_rights = 'User rights',
 
user_rights = 'User rights',
 
extension_ns = 'Extension',
 
extension_ns = 'Extension',
non_default_ext = 'From non-default extensions'
+
non_default_ext = 'From non-default extensions',
  +
groups = 'Groups',
  +
addgroups = 'Can add: ',
  +
rmvgroups = 'Can remove: ',
  +
middlesep = ', ',
  +
lastsep= ' and '
 
}
 
}
   
Line 84: Line 89:
 
text = text .. '<h3>' .. i18n['non_default_ext'] .. '</h3>\n' .. exttext
 
text = text .. '<h3>' .. i18n['non_default_ext'] .. '</h3>\n' .. exttext
 
end
 
end
  +
  +
-- prepare group tables
  +
local addgroups = {}
  +
local removegroups = {}
  +
local groupdata = mw.loadData('Module:Benutzergruppenrechte/groupdata')
  +
for i, tgroup in ipairs(groupdata) do
  +
for i2, a in ipairs(tgroup['addedby']) do
  +
if a == group then
  +
table.insert(addgroups, tgroup['group'])
  +
end
  +
end
  +
for i2, a in ipairs(tgroup['removedby']) do
  +
if a == group then
  +
table.insert(removegroups, tgroup['group'])
  +
end
  +
end
  +
end
  +
  +
-- sort group tables
  +
table.sort(addgroups, function(a, b) return a:byte() < b:byte() end)
  +
table.sort(removegroups, function(a, b) return a:byte() < b:byte() end)
  +
  +
  +
-- make group text
  +
local addgroupstext = ''
  +
for i, g in ipairs(addgroups) do
  +
g = '[[' .. frame:preprocess(mw.message.new('grouppage-' .. g):inLanguage(mw.getContentLanguage()):plain()) .. '|' .. frame:preprocess(mw.message.new('group-' .. g):inLanguage(mw.getContentLanguage()):plain()) .. ']]'
  +
if i == 1 then
  +
addgroupstext = g
  +
else
  +
if i == table.getn(addgroups) then
  +
addgroupstext = addgroupstext .. i18n['lastsep'] .. g
  +
else
  +
addgroupstext = addgroupstext .. i18n['middlesep'] .. g
  +
end
  +
end
  +
end
  +
  +
  +
local removegroupstext = ''
  +
for i, g in ipairs(removegroups) do
  +
g = '[[' .. frame:preprocess(mw.message.new('grouppage-' .. g):inLanguage(mw.getContentLanguage()):plain()) .. '|' .. frame:preprocess(mw.message.new('group-' .. g):inLanguage(mw.getContentLanguage()):plain()) .. ']]'
  +
if i == 1 then
  +
removegroupstext = g
  +
else
  +
if i == table.getn(removegroups) then
  +
removegroupstext = removegroupstext .. i18n['lastsep'] .. g
  +
else
  +
removegroupstext = removegroupstext .. i18n['middlesep'] .. g
  +
end
  +
end
  +
end
  +
  +
-- add group text
  +
if addgroupstext > '' or removegroupstext > '' then
  +
text = text .. '\n<h3>' .. i18n['groups'] .. '</h3>'
  +
if addgroupstext > '' then
  +
text = text .. '\n' .. i18n['addgroups'] .. addgroupstext
  +
end
  +
if removegroupstext > '' then
  +
text = text .. '\n\n' .. i18n['rmvgroups'] .. removegroupstext
  +
end
  +
end
  +
  +
 
return text
 
return text
 
end
 
end

Revision as of 16:11, 20 August 2019

Template-info Documentation

This module has three configurable variables:

  • user_rights = 'User rights',
  • extension_ns = 'Extension',
  • non_default_ext = 'From non-default extensions'

These should be updated to reflect the language-specific text.

Subpages

The above documentation is transcluded from Module:User group rights/doc.[edit | history | purge]

local p = {}

local i18n = {
	user_rights = 'User rights',
	extension_ns = 'Extension',
	non_default_ext = 'From non-default extensions',
	groups = 'Groups',
    addgroups = 'Can add: ',
    rmvgroups = 'Can remove: ',
    middlesep = ', ',
    lastsep= ' and '
}

function p.removeLinks(message)
	local cleanmsg = mw.text.trim(string.gsub(message,'%[%[[^%|%]]-%|([^%|%]]-)%]%]','%1'),'%p')
	return cleanmsg
end

function p.rightsSort(t1, t2) 
	local l1 = p.removeLinks(mw.message.new('right-' .. t1['right']):inLanguage(mw.getContentLanguage()):plain())
	local l2 = p.removeLinks(mw.message.new('right-' .. t2['right']):inLanguage(mw.getContentLanguage()):plain())
	if l1 < l2 then 
		return true
	end
	return false
end

function p.findIndex(et,ext)
	for i,v in ipairs(et) do
		if v.extName == ext then
			return i
		end
	end
	return -1
end

function p.extensionSort(t1,t2)
	if t1['extName'] < t2['extName'] then
		return true
	end
	return false
end

function p.main(frame)
	local rights = mw.loadData('Module:User_group_rights/data')
	local group = frame:getParent().args[1]
	local grouprights = {}
	local text = '<h2>' .. i18n['user_rights'] .. '</h2>\n'
	--get the rights in the selected group
	for i, right in ipairs(rights) do
		for i2, g in ipairs(right['groups']) do
			if g == group then
				table.insert(grouprights, right)
			end
		end
	end
	
	--now we sort the rights by the localized right description
	table.sort(grouprights,p.rightsSort)
	
	local extensionrights = {}
	--and now process default rights
	for i, right in ipairs(grouprights) do
		if right['extension'] == nil then
			text = text .. '* ' .. frame:preprocess(mw.message.new('right-' .. right['right']):inLanguage(mw.getContentLanguage()):plain()) .. ' <code>(' .. right['right'] .. ')</code>\n'
		else 
			local idx = p.findIndex(extensionrights, right['extension'])
			if idx == -1 then
				table.insert(extensionrights,{ extName = right['extension'], rights = {right} })
			else
				table.insert(extensionrights[idx]['rights'], right)
			end
		end
	end
	table.sort(extensionrights,p.extensionSort)
	local exttext = ''
	
	--and extension rights
	for i, extrights in ipairs(extensionrights) do
		local extension = extrights['extName']
		local rights = extrights['rights']
		exttext = exttext .. '\n<h4>[[' .. i18n['extension_ns'] .. ':'..extension..'|'..extension..']]</h4>\n'
		for i, right in ipairs(rights) do
			exttext = exttext .. '\n* ' .. frame:preprocess(mw.message.new('right-' .. right['right']):inLanguage(mw.getContentLanguage()):plain()) .. ' <code>(' .. right['right'] .. ')</code>'	
		end
	end
	
	if exttext > '' then
		text = text .. '<h3>' .. i18n['non_default_ext'] .. '</h3>\n'	.. exttext
	end
	
	-- prepare group tables
    local addgroups = {}
    local removegroups = {}
    local groupdata = mw.loadData('Module:Benutzergruppenrechte/groupdata')
    for i, tgroup in ipairs(groupdata) do
		for i2, a in ipairs(tgroup['addedby']) do
			if a == group then
				table.insert(addgroups, tgroup['group'])
			end
		end
		for i2, a in ipairs(tgroup['removedby']) do
			if a == group then
				table.insert(removegroups, tgroup['group'])
			end
		end
	end
	
	-- sort group tables
	table.sort(addgroups, function(a, b) return a:byte() < b:byte() end)
    table.sort(removegroups, function(a, b) return a:byte() < b:byte() end)
	
	
	-- make group text
    local addgroupstext = ''
    for i, g in ipairs(addgroups) do
        g = '[[' .. frame:preprocess(mw.message.new('grouppage-' .. g):inLanguage(mw.getContentLanguage()):plain()) .. '|' .. frame:preprocess(mw.message.new('group-' .. g):inLanguage(mw.getContentLanguage()):plain()) .. ']]'
        if i == 1 then
            addgroupstext = g
        else
            if i == table.getn(addgroups) then
            	addgroupstext = addgroupstext .. i18n['lastsep'] .. g
            else
            	addgroupstext = addgroupstext .. i18n['middlesep'] .. g
            end
    	end
    end


    local removegroupstext = ''
	for i, g in ipairs(removegroups) do
    	g = '[[' .. frame:preprocess(mw.message.new('grouppage-' .. g):inLanguage(mw.getContentLanguage()):plain()) .. '|' .. frame:preprocess(mw.message.new('group-' .. g):inLanguage(mw.getContentLanguage()):plain()) .. ']]'
        if i == 1 then
            removegroupstext = g
        else
            if i == table.getn(removegroups) then
                removegroupstext = removegroupstext .. i18n['lastsep'] .. g
            else
                removegroupstext = removegroupstext .. i18n['middlesep'] .. g
            end
        end
    end

	-- add group text
    if addgroupstext > '' or removegroupstext > '' then
        text = text .. '\n<h3>' .. i18n['groups'] .. '</h3>'
        if addgroupstext > '' then
            text = text .. '\n' .. i18n['addgroups'] .. addgroupstext
        end
        if removegroupstext > '' then
            text = text .. '\n\n' .. i18n['rmvgroups'] .. removegroupstext
        end
    end

	
	return text
end

return p