9c93b4e51a
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>
37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
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}";
|
|
}
|
|
}
|