diff --git a/routers/web/repo/setting/licensing.go b/routers/web/repo/setting/licensing.go index 8cab32ec45..6135d10cdc 100644 --- a/routers/web/repo/setting/licensing.go +++ b/routers/web/repo/setting/licensing.go @@ -9,10 +9,10 @@ import ( // LicensingSettings redirects to the manifest page where licensing is now consolidated. func LicensingSettings(ctx *context.Context) { - ctx.Redirect(ctx.Repo.RepoLink + "/settings/metadata") + ctx.Redirect(ctx.Repo.RepoLink + "/settings/updateserver") } // LicensingSettingsPost redirects POST to the manifest page. func LicensingSettingsPost(ctx *context.Context) { - ctx.Redirect(ctx.Repo.RepoLink + "/settings/metadata") + ctx.Redirect(ctx.Repo.RepoLink + "/settings/updateserver") } diff --git a/routers/web/repo/setting/metadata.go b/routers/web/repo/setting/metadata.go index 9f98359303..dffc004147 100644 --- a/routers/web/repo/setting/metadata.go +++ b/routers/web/repo/setting/metadata.go @@ -11,7 +11,6 @@ import ( issues_model "code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/issues" repo_model "code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/repo" updateserver_model "code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/updateserver" - "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/log" "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/templates" "code.mokoconsulting.tech/MokoConsulting/MokoGitea/services/context" ) @@ -33,9 +32,6 @@ func Metadata(ctx *context.Context) { ctx.ServerError("GetRepoManifest", err) return } - if manifest == nil { - manifest = tryMigrateManifestXML(ctx) - } if manifest == nil { manifest = &repo_model.RepoManifest{ RepoID: repoID, @@ -78,8 +74,6 @@ func MetadataPost(ctx *context.Context) { switch ctx.FormString("action") { case "manifest": saveManifest(ctx) - case "updateserver": - saveLicensingSettings(ctx) case "customfields": saveCustomFields(ctx) default: @@ -138,41 +132,3 @@ func saveCustomFields(ctx *context.Context) { ctx.Redirect(ctx.Repo.RepoLink + "/settings/metadata") } -// saveLicensingSettings handles the update server form. -func saveLicensingSettings(ctx *context.Context) { - repo := ctx.Repo.Repository - - updatePlatform := ctx.FormString("update_platform") - if updatePlatform == "" { - updatePlatform = "joomla" - } - - enabled := ctx.FormString("enable_licensing") == "on" - - if !enabled { - if err := updateserver_model.DeleteRepoConfig(ctx, repo.ID); err != nil { - log.Error("DeleteRepoConfig: %v", err) - } - } else { - updateCfg := &updateserver_model.UpdateStreamConfig{ - OwnerID: repo.OwnerID, - RepoID: repo.ID, - Platform: updatePlatform, - LicensingEnabled: true, - RequireKey: ctx.FormString("require_update_key") == "on", - DownloadGating: ctx.FormString("download_gating"), - FeedVisibility: ctx.FormString("feed_visibility"), - SupportURL: ctx.FormString("support_url"), - StreamMode: "joomla", - } - - if err := updateserver_model.SaveConfig(ctx, updateCfg); err != nil { - log.Error("SaveConfig: %v", err) - ctx.ServerError("SaveConfig", err) - return - } - } - - ctx.Flash.Success("Update server settings saved") - ctx.Redirect(ctx.Repo.RepoLink + "/settings/metadata") -} diff --git a/routers/web/repo/setting/updateserver.go b/routers/web/repo/setting/updateserver.go new file mode 100644 index 0000000000..e826cd45df --- /dev/null +++ b/routers/web/repo/setting/updateserver.go @@ -0,0 +1,65 @@ +// Copyright 2026 Moko Consulting +// SPDX-License-Identifier: GPL-3.0-or-later + +package setting + +import ( + "net/http" + + updateserver_model "code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/updateserver" + "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/log" + "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/templates" + "code.mokoconsulting.tech/MokoConsulting/MokoGitea/services/context" +) + +const tplSettingsUpdateServer templates.TplName = "repo/settings/updateserver" + +// UpdateServerSettings displays the update server settings page. +func UpdateServerSettings(ctx *context.Context) { + ctx.Data["Title"] = "Update Server" + ctx.Data["PageIsSettingsUpdateServer"] = true + + repoCfg, _ := updateserver_model.GetRepoConfig(ctx, ctx.Repo.Repository.ID) + ctx.Data["RepoUpdateConfig"] = repoCfg + + ctx.HTML(http.StatusOK, tplSettingsUpdateServer) +} + +// UpdateServerSettingsPost saves update server settings. +func UpdateServerSettingsPost(ctx *context.Context) { + repo := ctx.Repo.Repository + + updatePlatform := ctx.FormString("update_platform") + if updatePlatform == "" { + updatePlatform = "joomla" + } + + enabled := ctx.FormString("enable_licensing") == "on" + + if !enabled { + if err := updateserver_model.DeleteRepoConfig(ctx, repo.ID); err != nil { + log.Error("DeleteRepoConfig: %v", err) + } + } else { + updateCfg := &updateserver_model.UpdateStreamConfig{ + OwnerID: repo.OwnerID, + RepoID: repo.ID, + Platform: updatePlatform, + LicensingEnabled: true, + RequireKey: ctx.FormString("require_update_key") == "on", + DownloadGating: ctx.FormString("download_gating"), + FeedVisibility: ctx.FormString("feed_visibility"), + SupportURL: ctx.FormString("support_url"), + StreamMode: "joomla", + } + + if err := updateserver_model.SaveConfig(ctx, updateCfg); err != nil { + log.Error("SaveConfig: %v", err) + ctx.ServerError("SaveConfig", err) + return + } + } + + ctx.Flash.Success("Update server settings saved") + ctx.Redirect(ctx.Repo.RepoLink + "/settings/updateserver") +} diff --git a/routers/web/web.go b/routers/web/web.go index a841479a90..1b5a323750 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -1230,8 +1230,9 @@ func registerWebRoutes(m *web.Router, webAuth *AuthMiddleware) { m.Combo("/advanced").Get(repo_setting.AdvancedSettings).Post(web.Bind(forms.RepoSettingForm{}), repo_setting.SettingsPost) }, repo_setting.SettingsCtxData) m.Combo("/metadata").Get(repo_setting.Metadata).Post(repo_setting.MetadataPost) - m.Combo("/manifest").Get(repo_setting.LicensingSettings).Post(repo_setting.LicensingSettingsPost) // redirect to metadata - m.Combo("/licensing").Get(repo_setting.LicensingSettings).Post(repo_setting.LicensingSettingsPost) // redirect to metadata + m.Combo("/updateserver").Get(repo_setting.UpdateServerSettings).Post(repo_setting.UpdateServerSettingsPost) + m.Combo("/manifest").Get(repo_setting.LicensingSettings).Post(repo_setting.LicensingSettingsPost) // redirect + m.Combo("/licensing").Get(repo_setting.LicensingSettings).Post(repo_setting.LicensingSettingsPost) // redirect m.Group("/security", func() { m.Combo("").Get(repo_setting.SecuritySettings).Post(repo_setting.SecuritySettingsPost) m.Post("/scan", repo_setting.SecurityScanNow) diff --git a/templates/repo/settings/metadata.tmpl b/templates/repo/settings/metadata.tmpl index 8bed79cb4f..353de1776c 100644 --- a/templates/repo/settings/metadata.tmpl +++ b/templates/repo/settings/metadata.tmpl @@ -136,76 +136,6 @@ -{{if .LicensingEnabled}} -

- {{svg "octicon-broadcast" 16}} Update Server -

-
-
- {{.CsrfTokenHtml}} - -
-
- - -
-

Serve update feeds from releases and show the Licenses tab for optional key management.

-
- -
- -
- - -
- -
- - -
- -
- - -
- - {{if and .RepoUpdateConfig (ne .RepoUpdateConfig.Platform "joomla") (ne .RepoUpdateConfig.Platform "both") (ne .RepoUpdateConfig.Platform "")}} -
-
- - -
-
- {{end}} - -
- - -
- -
- -
-
-
-{{end}} - {{if .CustomFieldDefs}}

{{svg "octicon-list-unordered" 16}} Custom Fields diff --git a/templates/repo/settings/navbar.tmpl b/templates/repo/settings/navbar.tmpl index b42b21ba1c..f6ee0126c6 100644 --- a/templates/repo/settings/navbar.tmpl +++ b/templates/repo/settings/navbar.tmpl @@ -10,6 +10,11 @@ {{svg "octicon-file-code"}} Metadata + {{if .LicensingEnabled}} + + {{svg "octicon-broadcast"}} Update Server + + {{end}} {{svg "octicon-shield"}} {{ctx.Locale.Tr "repo.settings.security"}} diff --git a/templates/repo/settings/updateserver.tmpl b/templates/repo/settings/updateserver.tmpl new file mode 100644 index 0000000000..c1ca5c767f --- /dev/null +++ b/templates/repo/settings/updateserver.tmpl @@ -0,0 +1,71 @@ +{{template "repo/settings/layout_head" (dict "pageClass" "repository settings updateserver")}} +
+

+ {{svg "octicon-broadcast" 16}} Update Server +

+
+
+ {{.CsrfTokenHtml}} + +
+
+ + +
+

Serve update feeds from releases and show the Licenses tab for optional key management.

+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + {{if and .RepoUpdateConfig (ne .RepoUpdateConfig.Platform "joomla") (ne .RepoUpdateConfig.Platform "both") (ne .RepoUpdateConfig.Platform "")}} +
+
+ + +
+
+ {{end}} + +
+ + +
+ +
+ +
+
+
+
+{{template "repo/settings/layout_footer" .}}