Skip to content

Feat: alt szöveg mező a csatolmányokra #75

Description

@Xentinus

Jelenség

Az Attachment modellen nincs alt szöveg mező:

public class Attachment
{
    public string Slug { get; set; } = "";
    public string FileName { get; set; } = "";
    public string ContentType { get; set; } = "";
    public byte[] Data { get; set; } = [];
    public DateTimeOffset CreatedAt { get; set; }
}

Ezért a publikus oldalon az alt kényszerből valami más mezőből származik:

  • WorkSection.vue:45:alt="tr(w.title)", vagyis a munka címe
  • AboutSection.vue:38:alt="about.name"
  • ArticleView.vue:148:alt="article.title"

Ez képernyőolvasónál a cím felolvasását duplikálja (a cím közvetlenül a kép mellett is ott van szövegként), és nem mondja meg, mi látszik a képen. A rich text testébe beágyazott képeknek (InlineImages) pedig egyáltalán nincs alt szövegük, hacsak a szerkesztő kézzel nem írja a HTML-be.

Javaslat

  1. Alt mező az Attachment-re (LocalizedText, mert az oldal kétnyelvű), migrációval. A ContentLimits-hez illeszkedő hosszkorláttal.
  2. Az admin feltöltési és média-könyvtár felületén szerkeszthető legyen: AttachmentLibrary.vue, CoverImagePicker.vue, ProfileImageCropper.vue. Feltöltés után egy egysoros beviteli mező, nem kötelező mező, de látható hiányjelzéssel (pl. sárga jelölés az alt nélküli elemeken).
  3. Az attachment lista/olvasó válaszban jöjjön vissza az Alt, hogy a publikus komponensek használhassák. Ehhez a mai resolveImageSrc(value) (ami csak stringet kap) helyett vagy egy alt-lookup kell a store-ban, vagy a tartalom DTO-ja hordozza a cover kép alt szövegét is — az utóbbi kevesebb kéréssel jár.
  4. Döntés kell a dekoratív képekről: ahol a kép tényleg csak dekoráció, alt="" a helyes, nem a cím. A WorkSection kártyaképe erős jelölt erre, mert a cím közvetlenül alatta van szövegként.
  5. A rich text editor kép-beszúrása (RichTextEditor.vue) kérje az alt szöveget, és a ContentSanitizer engedje át az alt attribútumot (ellenőrizni, hogy ma átmegy-e).

Kapcsolódik #47-hez (kép-attribútumok) és #49-hez (kép-variánsok) — ha a három egy körben megy, a <img> tageket csak egyszer kell átírni.

Érintett fájlok

  • PortfolioCMS.Core/Models/Attachment.cs, ContentLimits.cs
  • PortfolioCMS.Core/Migrations/ — új migráció
  • PortfolioCMS.Admin/Controllers/AttachmentsAdminController.cs
  • PortfolioCMS.Core/Dtos/ (attachment DTO)
  • PortfolioCMS.Core/Services/ContentSanitizer.cs, InlineImages.cs
  • portfoliocms.admin.client/src/components/admin/AttachmentLibrary.vue, CoverImagePicker.vue, RichTextEditor.vue
  • portfoliocms.client/src/components/home/WorkSection.vue, AboutSection.vue, src/views/ArticleView.vue

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions