37 lines
955 B
Lua
37 lines
955 B
Lua
local gui_util = {}
|
|
|
|
--- Parse `pagename?arg1=value1&arg2=value2` queries
|
|
--- @param query page query string
|
|
--- @return page_name, args_table
|
|
function gui_util.parse_query(query)
|
|
local args = {}
|
|
local name
|
|
|
|
local index = string.find(query, '?')
|
|
if index then
|
|
local argstr = string.sub(query, index + 1)
|
|
name = string.sub(query, 1, index - 1)
|
|
|
|
for key, value in string.gmatch(argstr, "([^=&]*)=([^&]*)") do
|
|
args[key] = value
|
|
end
|
|
else
|
|
name = query
|
|
end
|
|
return name, args
|
|
end
|
|
|
|
--- @param query page query string
|
|
--- @return document_id
|
|
function gui_util.load_page(query)
|
|
local name, args = gui_util.parse_query(query)
|
|
local filename = file.find(string.format("layouts/pages/%s.xml", name))
|
|
if filename then
|
|
name = file.prefix(filename)..":pages/"..name
|
|
gui.load_document(filename, name, args)
|
|
return name
|
|
end
|
|
end
|
|
|
|
return gui_util
|