')
+ if user.ptr.rights.rank > 0 and (co.who.rights.powers.elevate() or co.who.rights.powers.demote()) then
+ var max = co.who.rights.rank
+ if not co.who.rights.powers.elevate() then max = user.ptr.rights.rank end
+ var min = co.srv.cfg.nranks
+ if not co.who.rights.powers.demote() then min = user.ptr.rights.rank end
+
+ push_num_field(cinp, 'rank', 'rank', max, min, user.ptr.rights.rank, user.ptr.id == co.who.id)
+ end
if co.who.rights.powers.herald() then
var sanitized: pstr
if user.ptr.epithet == nil
then sanitized = pstr {ptr='', ct=0}
else sanitized = lib.html.sanitize(cs(user.ptr.epithet),true)
end
cinp:lpush('
')
if user.ptr.epithet ~= nil then sanitized:free() end
end
- if user.ptr.rights.rank > 0 and (co.who.rights.powers.elevate() or co.who.rights.powers.demote()) then
- var max = co.who.rights.rank
- if not co.who.rights.powers.elevate() then max = user.ptr.rights.rank end
- var min = co.srv.cfg.nranks
- if not co.who.rights.powers.demote() then min = user.ptr.rights.rank end
-
- num_field(cinp, 'rank', 'rank', max, min, user.ptr.rights.rank)
- end
if co.who.rights.powers.invite() or co.who.rights.powers.discipline() then
var min = 0
if not (co.who.rights.powers.discipline() or
co.who.rights.powers.demote() and co.who.rights.powers.invite())
then min = user.ptr.rights.invites end
var max = co.srv.cfg.maxinvites
if not co.who.rights.powers.invite() then max = user.ptr.rights.invites end
- num_field(cinp, 'invites', 'invites', min, max, user.ptr.rights.invites)
+ push_num_field(cinp, 'invites', 'invites', min, max, user.ptr.rights.invites, false)
end
- cinp:lpush('
')
- if (user.ptr.rights.rank == 0 and co.who.rights.powers.elevate()) or
- (user.ptr.rights.rank > 0 and co.who.rights.powers.demote()) then
- push_checkbox(&cinp, 'staff', 'site staff member', user.ptr.rights.rank > 0, true)
+ if user.ptr.id ~= co.who.id and
+ ((user.ptr.rights.rank == 0 and co.who.rights.powers.elevate()) or
+ (user.ptr.rights.rank > 0 and co.who.rights.powers.demote())) then
+ push_checkbox(&cinp, 'staff', pstr.null(), 'site staff member', user.ptr.rights.rank > 0, true, pstr.null())
end
- cinp:lpush('
')
+ cinp:lpush('
')
- if co.who.rights.powers.elevate() or
- co.who.rights.powers.demote() then
+ if (co.who.rights.powers.elevate() or
+ co.who.rights.powers.demote()) and user.ptr.id ~= co.who.id then
var map = array([lib.store.privmap])
- cinp:lpush('')
+ cinp:lpush('
powers
')
for i=0, [map.type.N] do
- if (co.who.rights.powers and map[i].priv) == map[i].priv then
- var name: int8[64]
- var on = (user.ptr.rights.powers and map[i].priv) == map[i].priv
- var enabled = (on and co.who.rights.powers.demote()) or
+ if (co.who.rights.powers and map[i].priv):sz() > 0 then
+ var on = (user.ptr.rights.powers and map[i].priv):sz() > 0
+ var enabled = ( on and co.who.rights.powers.demote() ) or
((not on) and co.who.rights.powers.elevate())
- lib.str.cpy(&name[0], 'allow-')
- lib.str.ncpy(&name[6], map[i].name.ptr, map[i].name.ct)
- push_checkbox(&cinp, pstr{ptr=&name[0],ct=map[i].name.ct+6},
- map[i].name, on, enabled)
+ var namea: lib.str.acc namea:compose('power-', map[i].name)
+ var name = namea:finalize()
+ push_pickbox(&cinp, name, pstr.null(), map[i].name, on, enabled, pstr.null())
+ name:free()
end
end
- cinp:lpush('
')
+ cinp:lpush(' ')
end
-- TODO black mark system? e.g. resolution option for badthink reports
-- adds a black mark to the offending user; they can be automatically banned
-- or brought up for review after a certain number of offenses; possibly lower
-- set of default privs for marked users
var cinpp = cinp:finalize() defer cinpp:free()
var clnkp: pstr
- if islinkct then clnkp = clnk:finalize() else
+ if clnk.sz > 0 then clnkp = clnk:finalize() else
clnk:free()
clnkp = pstr { ptr='', ct=0 }
end
var unym: lib.str.acc unym:init(64)
unym:lpush('