parsav  Diff

Differences From Artifact [79b6da76d7]:

To Artifact [1b75d5dd6d]:


    35     35   				body:free()
    36     36   			else [invoker] end
    37     37   		end
    38     38   	end
    39     39   end
    40     40   
    41     41   local terra 
    42         -render_conf([co], [path])
           42  +render_conf([co], [path], notify: pstr)
    43     43   	var menu: lib.str.acc menu:init(64):lpush('<hr>') defer menu:free()
    44     44   
    45     45   	-- build menu
    46     46   	do var p = co.who.rights.powers
    47     47   		if p.config() then menu:lpush '<a href="/conf/srv">server settings</a>' end
    48     48   		if p.rebrand() then menu:lpush '<a href="/conf/brand">instance branding</a>' end
    49     49   		if p.censor() then menu:lpush '<a href="/conf/censor">badthink alerts</a>' end
................................................................................
    58     58   	var mptr = pstr { ptr = menu.buf, ct = menu.sz }
    59     59   	if menu.sz <= 4 then mptr.ct = 0 end -- 🙄
    60     60   	var pg = data.view.conf {
    61     61   		menu = mptr;
    62     62   		panel = panel;
    63     63   	}
    64     64   
    65         -	var pgt = pg:tostr() defer pgt:free()
           65  +	var pgt: pstr
           66  +	if notify:ref() then
           67  +		var fnpg: lib.str.acc
           68  +		fnpg:compose('<div class="flashmsg">', notify, '</div>')
           69  +		pg:append(&fnpg)
           70  +		pgt = fnpg:finalize()
           71  +	else pgt = pg:tostr() end
           72  +	defer pgt:free()
           73  +
    66     74   	co:stdpage([lib.srv.convo.page] {
    67     75   		title = 'configure'; body = pgt;
    68     76   		class = lib.str.plit 'conf';
    69     77   		cache = false;
    70     78   	})
    71     79   
    72     80   	if panel.ct ~= 0 then panel:free() end
    73     81   end
    74     82   
    75     83   return render_conf