diff --git a/models/blog/blog_post.go b/models/blog/blog_post.go index e5a17aa48e..8e2b0d61a1 100644 --- a/models/blog/blog_post.go +++ b/models/blog/blog_post.go @@ -410,6 +410,12 @@ func CountPublishedBlogsByRepoID(ctx context.Context, repoID int64) (int64, erro return db.GetEngine(ctx).Where("repo_id = ? AND status >= ?", repoID, BlogPostPublic).Count(new(BlogPost)) } +// HasSubscriptionOnlyBlogPosts returns true if the repo has any published subscription-only blog posts. +func HasSubscriptionOnlyBlogPosts(ctx context.Context, repoID int64) (bool, error) { + count, err := db.GetEngine(ctx).Where("repo_id = ? AND status >= ? AND subscription_only = ?", repoID, BlogPostPublic, true).Count(new(BlogPost)) + return count > 0, err +} + // CreateBlogPost inserts a new blog post. func CreateBlogPost(ctx context.Context, p *BlogPost) error { _, err := db.GetEngine(ctx).Insert(p) diff --git a/options/locale/locale_en-US.json b/options/locale/locale_en-US.json index e4b6121f00..2b2979380d 100644 --- a/options/locale/locale_en-US.json +++ b/options/locale/locale_en-US.json @@ -4293,6 +4293,7 @@ "repo.settings.subscriptions.no_clients": "No subscribers yet.", "repo.subscribe.title": "Subscribe to %s", "repo.subscribe.description": "This repository requires a subscription to access the source code.", + "repo.subscribe.description_with_blogs": "This repository requires a subscription to access the source code and premium blog content.", "repo.subscribe.buy": "Subscribe", "repo.subscribe.payment_required": "A subscription is required to view this repository's source code.", "repo.subscribe.button": "Subscribe for Access", diff --git a/routers/web/repo/subscribe.go b/routers/web/repo/subscribe.go index b57fb453ff..e8f63447bf 100644 --- a/routers/web/repo/subscribe.go +++ b/routers/web/repo/subscribe.go @@ -6,6 +6,7 @@ package repo import ( "net/http" + blog_model "code.gitcaddy.com/server/v3/models/blog" monetize_model "code.gitcaddy.com/server/v3/models/monetize" "code.gitcaddy.com/server/v3/modules/log" monetize_module "code.gitcaddy.com/server/v3/modules/monetize" @@ -37,6 +38,16 @@ func Subscribe(ctx *context.Context) { ctx.Data["PayPalClientID"] = settings.PayPalClientID ctx.Data["PayPalSandbox"] = settings.PayPalSandbox + // Check if repo has subscription-only blog posts + if ctx.Repo.Repository.BlogEnabled { + hasPaidBlogs, err := blog_model.HasSubscriptionOnlyBlogPosts(ctx, ctx.Repo.Repository.ID) + if err != nil { + log.Error("HasSubscriptionOnlyBlogPosts: %v", err) + } else { + ctx.Data["HasPaidBlogs"] = hasPaidBlogs + } + } + ctx.HTML(http.StatusOK, tplSubscribe) } diff --git a/templates/explore/blogs.tmpl b/templates/explore/blogs.tmpl index 76f800fbbb..2470e9707b 100644 --- a/templates/explore/blogs.tmpl +++ b/templates/explore/blogs.tmpl @@ -16,21 +16,12 @@
{{.FeaturedPost.Subtitle}}
{{end}} @@ -156,30 +147,28 @@