Files
RenewCMS/docs/design/screens/localization-list.md
T

5.0 KiB
Raw Blame History

Localization: article list and coverage

Board: RenewCMS Screens Localization. Frame: LocaleFrame. Data: locale-fixtures.js (single fixture source), tables in locale-spec.js. UI copy says "article", never "story". No revision numbers, IDs or HTTP status names in user-facing text.

L7 Article list and coverage

Route: /articles?site&lang&tab=all|missing|review&q&status&author&seo&page&size API: proposed: lang, tab=all|missing|review on GET /v1/article/ (same names as the URL)

Journal: 8 articles, 17 versions, page size 5. The list header shows the unit: "8 articles" (all languages, one row per article with its translations), "4 French versions" (language selected), "4 articles not in French" (missing tab), "7 articles need translation", "2 articles need review". Coverage chips: default language first, then other existing versions, then disabled-language versions, then dashed missing chips (only for languages the user can create). Chips collapse after 5 at 1440 and 4 at 1024 and 390, leaving a "+N" chip. Row actions are the same on every width: Open, Open another language, Add translation, Publish or Unpublish, Copy API URL, Delete version; every row has the row menu button. All state is in the URL.

ID State Trigger Selector Sizes Fixture
loc.l7.all All languages, page 1 5 of 8 articles LocaleFrame{s:{v:"li",x:"all"}} 1440, 1024, 390 Journal
loc.l7.page2 All languages, page 2 (last) 3 of 8 articles LocaleFrame{s:{v:"li",x:"page2"}} 1440, 1024, 390 Journal
loc.l7.fr French selected 4 French versions LocaleFrame{s:{v:"li",x:"fr"}} 1440, 1024, 390 Journal
loc.l7.frMissing Not in French 4 articles not in French LocaleFrame{s:{v:"li",x:"frMissing"}} 1440, 1024, 390 Journal
loc.l7.emptyMissing Nothing missing Press: all articles translated; no summary, no pager LocaleFrame{s:{v:"li",x:"emptyMissing"}} 1440, 1024, 390 Press
loc.l7.noResults No results Search "zinc"; every count 0 LocaleFrame{s:{v:"li",x:"noResults"}} 1440, 1024, 390 Journal
loc.l7.frLoading Loading Counts shown as – LocaleFrame{s:{v:"li",x:"frLoading"}} 1440, 1024, 390 Journal
loc.l7.listFail Failed Filters kept LocaleFrame{s:{v:"li",x:"listFail"}} 1440, 1024, 390 Journal
loc.l7.limited Limited access Reads English only, can't create: no dashed chips LocaleFrame{s:{v:"li",x:"limited"}} 1440, 1024, 390 Journal (limited scope)
loc.l7.review Needs review tab 2 articles need review LocaleFrame{s:{v:"li",x:"review"}} 1440, 1024, 390 Journal
loc.l7.author Author filter Marta Alves: 3 articles, chips and Clear all LocaleFrame{s:{v:"li",x:"author"}} 1440, 1024, 390 Journal
loc.l7.langFilter Language filter Enabled and Disabled groups LocaleFrame{s:{v:"li",x:"langFilter"}} 1440, 1024, 390 Journal
loc.l7.rowMenu Row menu Same actions on desktop and mobile LocaleFrame{s:{v:"li",x:"rowMenu"}} 1440, 1024, 390 Journal
loc.l7.filters Mobile filter sheet Journal, French, Draft: 2 results LocaleFrame{s:{v:"li",x:"filters"}} 1440, 1024, 390 Journal
loc.l7.tabsScroll Tabs scrolled Not in French reachable; fade and chevrons LocaleFrame{s:{v:"li",x:"tabsScroll"}} 1440, 390 Journal
loc.l7.long Eight languages, long labels, filters Atelier: chips collapse to +3, +4, +4; Draft and SEO filters LocaleFrame{s:{v:"li",x:"long"}} 1440, 1024, 390 Atelier

L7s Article list, single-language site

Route: /articles?site=archive&q&status&page&size API: GET /v1/article/?page=&size=&q=&status=&site= returns { items, total, page, size, counts }

Replaces the old Articles board frames as the pixel-gate reference for the list. A site with one language has no language filter, no coverage column, no Needs translation or Needs review tabs, and its menu labels name no language. The pager is AppPaginator: summary "Showing 1–5 of 5", rows-per-page select, first, previous, page numbers, next and last (390 px: summary and select, then Previous, "Page N of M", Next). Hidden controls when everything fits on one page; the summary stays.

ID State Trigger Selector Sizes Fixture
loc.l7s.default Default Archive: 5 articles on one page, no language filter, coverage column or tabs LocaleFrame{s:{v:"li",x:"single"}} 1440, 390 Archive
loc.l7s.draft Draft filter Status: Draft LocaleFrame{s:{v:"li",x:"singleDraft"}} 1440, 390 Archive
loc.l7s.noResults No results Search "zinc" LocaleFrame{s:{v:"li",x:"singleNoResults"}} 1440, 390 Archive
loc.l7s.empty Empty Gallery: no articles LocaleFrame{s:{v:"li",x:"singleEmpty"}} 1440, 390 Gallery
loc.l7s.loading Loading Counts shown as – LocaleFrame{s:{v:"li",x:"singleLoading"}} 1440, 390 Archive
loc.l7s.fail Failed Filters kept LocaleFrame{s:{v:"li",x:"singleFail"}} 1440, 390 Archive
loc.l7s.menu Row menu Open, Unpublish, Copy API URL, Delete article: no language named LocaleFrame{s:{v:"li",x:"singleMenu"}} 1440, 390 Archive