Add support for arbitrary many categories
This commit is contained in:
parent
d9a903f890
commit
5c2a4a0b3f
43
init.lua
43
init.lua
@ -198,7 +198,7 @@ function doc.show_doc(playername)
|
|||||||
minetest.show_formspec(playername, "doc:error_no_categories", doc.formspec_error_no_categories())
|
minetest.show_formspec(playername, "doc:error_no_categories", doc.formspec_error_no_categories())
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local formspec = doc.formspec_core()..doc.formspec_main()
|
local formspec = doc.formspec_core()..doc.formspec_main(playername)
|
||||||
minetest.show_formspec(playername, "doc:main", formspec)
|
minetest.show_formspec(playername, "doc:main", formspec)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -478,7 +478,7 @@ function doc.formspec_core(tab)
|
|||||||
..tab..";true;false]"
|
..tab..";true;false]"
|
||||||
end
|
end
|
||||||
|
|
||||||
function doc.formspec_main()
|
function doc.formspec_main(playername)
|
||||||
local formstring = "label[0,0;"..minetest.formspec_escape(doc_intro) .. "\n"
|
local formstring = "label[0,0;"..minetest.formspec_escape(doc_intro) .. "\n"
|
||||||
if doc.get_category_count() >= 1 then
|
if doc.get_category_count() >= 1 then
|
||||||
formstring = formstring .. F("Please select a category you wish to learn more about:").."]"
|
formstring = formstring .. F("Please select a category you wish to learn more about:").."]"
|
||||||
@ -513,6 +513,7 @@ function doc.formspec_main()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
formstring = formstring .. ";]"
|
formstring = formstring .. ";]"
|
||||||
|
formstring = formstring .. "button[0,8;3,1;doc_button_goto_category;"..F("Show category").."]"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return formstring
|
return formstring
|
||||||
@ -760,7 +761,7 @@ function doc.process_form(player,formname,fields)
|
|||||||
cid = doc.data.players[playername].category
|
cid = doc.data.players[playername].category
|
||||||
eid = doc.data.players[playername].entry
|
eid = doc.data.players[playername].entry
|
||||||
if(tab==1) then
|
if(tab==1) then
|
||||||
contents = doc.formspec_main()
|
contents = doc.formspec_main(playername)
|
||||||
subformname = "main"
|
subformname = "main"
|
||||||
elseif(tab==2) then
|
elseif(tab==2) then
|
||||||
contents = doc.formspec_category(cid, playername)
|
contents = doc.formspec_category(cid, playername)
|
||||||
@ -778,16 +779,40 @@ function doc.process_form(player,formname,fields)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if(formname == "doc:main") then
|
if(formname == "doc:main") then
|
||||||
for id,_ in pairs(doc.data.categories) do
|
for cid,_ in pairs(doc.data.categories) do
|
||||||
if fields["doc_button_category_"..id] then
|
if fields["doc_button_category_"..cid] then
|
||||||
local formspec = doc.formspec_core(2)..doc.formspec_category(id, playername)
|
local formspec = doc.formspec_core(2)..doc.formspec_category(cid, playername)
|
||||||
doc.data.players[playername].catsel = nil
|
doc.data.players[playername].catsel = nil
|
||||||
doc.data.players[playername].category = id
|
doc.data.players[playername].category = cid
|
||||||
doc.data.players[playername].entry = nil
|
doc.data.players[playername].entry = nil
|
||||||
minetest.show_formspec(playername, "doc:category", formspec)
|
minetest.show_formspec(playername, "doc:category", formspec)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if fields["doc_mainlist"] then
|
||||||
|
local event = minetest.explode_textlist_event(fields["doc_mainlist"])
|
||||||
|
local cid = doc.data.category_order[event.index]
|
||||||
|
if cid ~= nil then
|
||||||
|
if event.type == "CHG" then
|
||||||
|
doc.data.players[playername].catsel = nil
|
||||||
|
doc.data.players[playername].category = cid
|
||||||
|
doc.data.players[playername].entry = nil
|
||||||
|
elseif event.type == "DCL" then
|
||||||
|
local formspec = doc.formspec_core(2)..doc.formspec_category(cid, playername)
|
||||||
|
doc.data.players[playername].catsel = nil
|
||||||
|
doc.data.players[playername].category = cid
|
||||||
|
doc.data.players[playername].entry = nil
|
||||||
|
minetest.show_formspec(playername, "doc:category", formspec)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if fields["doc_button_goto_category"] then
|
||||||
|
local cid = doc.data.players[playername].category
|
||||||
|
if cid ~= nil then
|
||||||
|
local formspec = doc.formspec_core(2)..doc.formspec_category(cid, playername)
|
||||||
|
minetest.show_formspec(playername, "doc:category", formspec)
|
||||||
|
end
|
||||||
|
end
|
||||||
elseif(formname == "doc:category") then
|
elseif(formname == "doc:category") then
|
||||||
if fields["doc_button_goto_entry"] then
|
if fields["doc_button_goto_entry"] then
|
||||||
local cid = doc.data.players[playername].category
|
local cid = doc.data.players[playername].category
|
||||||
@ -803,7 +828,7 @@ function doc.process_form(player,formname,fields)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if fields["doc_button_goto_main"] then
|
if fields["doc_button_goto_main"] then
|
||||||
local formspec = doc.formspec_core(1)..doc.formspec_main()
|
local formspec = doc.formspec_core(1)..doc.formspec_main(playername)
|
||||||
minetest.show_formspec(playername, "doc:main", formspec)
|
minetest.show_formspec(playername, "doc:main", formspec)
|
||||||
end
|
end
|
||||||
if fields["doc_catlist"] then
|
if fields["doc_catlist"] then
|
||||||
@ -825,7 +850,7 @@ function doc.process_form(player,formname,fields)
|
|||||||
end
|
end
|
||||||
elseif(formname == "doc:entry") then
|
elseif(formname == "doc:entry") then
|
||||||
if fields["doc_button_goto_main"] then
|
if fields["doc_button_goto_main"] then
|
||||||
local formspec = doc.formspec_core(1)..doc.formspec_main()
|
local formspec = doc.formspec_core(1)..doc.formspec_main(playername)
|
||||||
minetest.show_formspec(playername, "doc:main", formspec)
|
minetest.show_formspec(playername, "doc:main", formspec)
|
||||||
elseif fields["doc_button_goto_category"] then
|
elseif fields["doc_button_goto_category"] then
|
||||||
local formspec = doc.formspec_core(2)..doc.formspec_category(doc.data.players[playername].category, playername)
|
local formspec = doc.formspec_core(2)..doc.formspec_category(doc.data.players[playername].category, playername)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user