Add teacher privilege

master
rubenwardy 2019-07-10 05:46:34 +01:00
parent b5ce7c66fc
commit 5926731f31
2 changed files with 38 additions and 1 deletions

35
gui.lua
View File

@ -24,9 +24,19 @@ local function get_group(context)
end
end
sfinv.register_page("edu", {
sfinv.register_page("classroom:edu", {
title = "Classroom",
check_perm = function(self, player)
return minetest.check_player_privs(player:get_player_name(), { teacher = true })
end,
is_in_nav = function(self, player, context)
return self:check_perm(player)
end,
get = function(self, player, context)
if not self:check_perm(player) then
return "label[0,0;Access denied]"
end
local fs = {
"tablecolumns[color;text"
}
@ -156,6 +166,11 @@ sfinv.register_page("edu", {
return sfinv.make_formspec(player, context, table.concat(fs, ""), false)
end,
on_player_receive_fields = function(self, player, context, fields)
if not self:check_perm(player) then
sfinv.set_page(player, sfinv.get_homepage_name(player))
return true
end
if fields.students then
local evt = minetest.explode_table_event(fields.students)
local i = (evt.row or 0) - 1
@ -212,3 +227,21 @@ sfinv.register_page("edu", {
end
end,
})
local function on_grant_revoke(grantee, granter, priv)
if priv ~= "teacher" then
return
end
local player = minetest.get_player_by_name(grantee)
if not player then
return
end
minetest.after(0, function()
sfinv.set_player_inventory_formspec(player)
end)
end
minetest.register_on_priv_grant(on_grant_revoke)
minetest.register_on_priv_revoke(on_grant_revoke)

View File

@ -3,3 +3,7 @@ classroom = {}
dofile(minetest.get_modpath("classroom") .. "/api.lua")
dofile(minetest.get_modpath("classroom") .. "/gui.lua")
dofile(minetest.get_modpath("classroom") .. "/actions.lua")
minetest.register_privilege("teacher", {
give_to_singleplayer = false
})