diff --git a/builtin/mainmenu/content/contentdb.lua b/builtin/mainmenu/content/contentdb.lua index fbd94376d..147451993 100644 --- a/builtin/mainmenu/content/contentdb.lua +++ b/builtin/mainmenu/content/contentdb.lua @@ -623,6 +623,7 @@ end contentdb.get_full_package_info = get_package_info("full_info", "/for-client/") contentdb.get_package_reviews = get_package_info("reviews", "/for-client/reviews/") +contentdb.get_package_releases = get_package_info("releases", "/releases/") function contentdb.get_formspec_padding() diff --git a/builtin/mainmenu/content/dlg_package.lua b/builtin/mainmenu/content/dlg_package.lua index 500fb3f6c..ad6d01edd 100644 --- a/builtin/mainmenu/content/dlg_package.lua +++ b/builtin/mainmenu/content/dlg_package.lua @@ -131,6 +131,7 @@ local function get_formspec(data) fgettext("Description"), fgettext("Information"), fgettext("Reviews") .. core.formspec_escape(" [" .. review_count .. "]"), + fgettext("Releases"), } local tab_body_height = bottom_buttons_y - 2.8 @@ -232,6 +233,57 @@ local function get_formspec(data) else table.insert_all(formspec, {"label[2,2;", fgettext("Loading..."), "]"} ) end + elseif current_tab == 4 then + if not package.releases and not data.releases_error and not data.releases_loading then + data.releases_loading = true + + contentdb.get_package_releases(package, function(releases) + if not releases then + data.releases_error = true + end + ui.update() + end) + end + + local function markup(text) + text = text:gsub("%*%*([^%s][^*]-[^%s])%*%*", "%1") + text = text:gsub("%*([^%s][^*]-[^%s])%*", "%1") + text = text:gsub("* ", " ") + text = text:gsub("- ", " ") + return text + end + + local hypertext = {} + local insert = table.insert + if package.releases then + for _, def in pairs(package.releases) do + insert(hypertext, + ""..core.hypertext_escape(def.title).." ("..def.release_date:gsub("T.*", "")..")\n".. + fgettext("$1 downloads", + def.downloads)..".\n" + ) + + if def.release_notes then + insert(hypertext, core.hypertext_escape( + markup((def.release_notes + :gsub("