feat(gallery+editor): dedicated /gallery page, homepage teaser, in-content images
CI/CD / CI · dotnet build (push) Successful in 21s
CI/CD / Deploy · drsousan (push) Successful in 28s

Homepage gallery:
- Show only 3 before/after samples as a teaser (was: all items)
- Add "مشاهده گالری کامل (N نمونه)" CTA when more than 3 exist
- Remove the now-pointless category tabs from the teaser

New /gallery page:
- Full before/after grid with category filter tabs (deduped from data)
- Responsive cards with قبل/بعد labels + captions, empty state
- Added to sitemap.xml (priority 0.8)

Blog content editor:
- New 🖼 تصویر toolbar button inserts an uploaded image at the cursor
  (direct upload, no forced crop) — for richer post bodies
- Responsive img styling on the public post page

Note: the filler-lab-soorat cover not showing is a data issue — that
post has an empty featuredImage in the DB (verified); re-upload + save
fixes it. The upload/save path itself is correct.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-11 01:26:35 +03:30
parent 872e5c1818
commit 9c93b4e51a
7 changed files with 181 additions and 9 deletions
+36
View File
@@ -0,0 +1,36 @@
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using DrSousan.Api.Data;
using DrSousan.Api.Models;
namespace DrSousan.Api.Pages;
public class GalleryModel : PageModel
{
private readonly AppDbContext _db;
public GalleryModel(AppDbContext db) => _db = db;
public List<GalleryItem> Items { get; private set; } = new();
public List<string> Categories { get; private set; } = new();
public async Task OnGetAsync()
{
Items = await _db.GalleryItems
.Where(g => g.IsActive)
.OrderBy(g => g.Order)
.ToListAsync();
Categories = Items
.Where(i => !string.IsNullOrWhiteSpace(i.Category))
.Select(i => i.Category.Trim())
.Distinct()
.ToList();
var siteName = (await _db.SiteSettings
.FirstOrDefaultAsync(x => x.Section == "hero" && x.Key == "name"))?.Value
?? "دکتر سوسن آل‌طه";
ViewData["SiteName"] = siteName;
ViewData["Title"] = $"گالری نتایج قبل و بعد | {siteName}";
}
}