Ko‘rinish va tillar

Rebrending — bu bitta raqam. O‘n bir til to‘g‘ridan-to‘g‘ri paketda keladi, ulardan biri o‘ngdan-chapga yoziladi, va buni yoqish uchun hech narsa sozlash shart emas.

Mavjud v0.1.0

Palitra — bitta raqam

Butun admin rangi OKLCH’dagi bitta rang tusidan (hue) hosil qilinadi. Bunda hech qanday sborka bosqichi va forklash kerak bo‘ladigan stil jadvali yo‘q.

FastFortSettings(
    ui={"accent_hue": 232, "accent_chroma": 0.15},
)

accent_hue — 0 dan 360 gacha; accent_chroma — 0 dan 0.37 gacha. Har bir aksent, chegara, fokus halqasi, hover holati va soya shu ikkita qiymatdan kelib chiqadi — ikkala mavzuda ham.

HSL o‘rniga OKLCH tanlangan, chunki OKLCH’da namunani ochroq qilish uning xroma (chroma) qiymatini saqlab qoladi — HSL gradienti och tomonda kulrang tomon siljiydi, shuning uchun qo‘lda moslashtirilgan palitralar birgalikda saqlanishi kerak bo‘lgan qirqta HEX qiymatga aylanib qoladi.

Mavzular

ui={"theme": "system", "density": "comfortable"}

system · light · dark, shuningdek comfortable · compact. system — standart qiymat bo‘lib, brauzer sozlamasiga amal qiladi; foydalanuvchi buni admin sarlavhasining o‘zida o‘zgartirishi mumkin, va tanlov saqlanib qoladi.

Qaysi mavzu qo‘llanishini belgilaydigan flag boot.js tomonidan o‘rnatiladi — bu birinchi chizishdan oldin ishlaydigan yagona skript. Boshqa har qanday joyda bu bir kadr kech bo‘ladi, va bir kadr kechikish har bir o‘tishda noto‘g‘ri palitraning ko‘zga tashlanadigan yarq etishiga olib keladi.

O‘z CSS’ingiz

ui={"custom_css_url": "/static/admin-overrides.css"}

O‘rnatilgan stil jadvalidan keyin yuklanadi — u yettita kaskad qatlamidan (00-reset … 06-widgets) iborat bo‘lib, bitta javobga birlashtiriladi. Sizning faylingiz ularning barchasidan keyin joylashadi, shuning uchun oddiy selektor !importantsiz ham g‘alaba qozonadi.

Boyitilgan matn muharriri

ui={"richtext_url": "https://cdn.example.com/ckeditor.js"}

FastFort textareani render qiladi va uni data-ff-richtext bilan belgilaydi; bu ularni topadigan skriptning nomi. None oddiy textareani qoldiradi — buzilgan muharrir emas, balki ishlaydigan boshqaruv elementi.

Muharrirni paketga qo‘shish muqobil variant bo‘lardi, lekin bu noto‘g‘ri kelishuv: har bir loyiha uchun wheel ichida yarim megabayt muharrir, holbuki ko‘pchilik boshqa muharrirni yoki umuman hech qaysisini xohlamaydi. Agar URL boshqa manbada (origin) bo‘lsa, o‘sha manba CSP’ning script-srciga qo‘shiladi — shuning uchun bu sozlama, shablon ichidan kiritib bo‘ladigan narsa emas.

Muhit yorliqlari

ui={"environment_label": "PRODUCTION", "environment_tone": "danger"}

Sarlavhada info, warning yoki danger ohangida ko‘rsatiladi. Shu tufayli kimningdir ochiq turgan ikkita oynasi orasidagi farq o‘qimasdan ham ko‘rinadi.

Logotip va favicon

ui={"logo_url": "/static/logo.svg", "favicon_url": "/static/favicon.png"}

Tillar

O‘n bir til katalogi wheel ichida keladi: ingliz, o‘zbek, rus, turk, nemis, fransuz, ispan, xitoy, yapon, koreys va arab tillari.

Sozlash kerak bo‘lgan hech narsa yo‘q. Admin o‘rnatilgan zahoti allaqachon tarjima qilingan bo‘ladi va standart holda brauzerning Accept-Language sarlavhasiga amal qiladi.

ui={"language": None}      # follow the browser — the default
ui={"language": "uz"}      # pin every visitor to one language

None ataylab standart qiymat qilib olingan: adminini kim ochishidan qat’i nazar bitta tilda ko‘rishni xohlaydigan loyiha buni ochiq aytishi kerak — aks holda hamma jimgina ingliz tiliga qadab qo‘yiladi.

Arab tili joylashuvni teskari aylantiradi

Stil jadvali boshdan-oxir mantiqiy xususiyatlar (logical properties) yordamida yozilgan — left emas, inset-inline-start; padding-left emas, padding-inline. Bitta dir atributi butun adminni teskari aylantiradi: yon panelni, jadval tekislanishini, breadcrumb ajratkichlarini, saralash strelkalarini.

Test stil jadvalidagi fizik yo‘nalishlarni sanaydi va yangisi paydo bo‘lsa, muvaffaqiyatsiz tugaydi. Aynan ikkita ataylab qilingan istisno bor: checkbox belgisi (belgi — istalgan tilda ham belgi) va xarita, u skript tomonidan fizik piksellarda joylashtiriladigan koordinata fazosidir.

O‘z so‘zlaringizni tarjima qilish

FastFort o‘z interfeysini tarjima qiladi — tugmalarni, filtrlarni, xabarlarni. U sizning model nomlaringizni tarjima qilmaydi, va verbose_name katalog orqali o‘tkazilmaydi. Model nomi — bu sizning o‘z domeningiz uchun sizning so‘zingiz, va uni o‘n bir tilda taxmin qilish freymvork qilishga urinishi kerak bo‘lgan narsa emas. Django ham sizning model nomlaringizni tarjima qilmaydi.

O‘z satrlaringiz uchun:

ui={"locale_dir": "app/locale"}

Yozuvlari FastFortning o‘z yozuvlaridan ustun turadigan <language>.json fayllari joylashgan katalog.

{
  "Products": "Mahsulotlar",
  "Shipments": "Jo'natmalar",
  "Mark discontinued": "Ishlab chiqarishdan olindi deb belgilash"
}

Brauzer tomonidagi skript chizadigan satrlar

Vidjet o‘zi chizadigan har qanday narsa — taqvimdagi oy nomlari, davomiylik boshqaruv elementining yorliqlari, buyruqlar palitrasining placeholder’i — bu server yuboradigan satr bo‘lib, <html> ustidagi data-ff-t-* atributlari orqali uzatiladi.

Skript barcha tillar uchun keshlanadigan bitta fayl, shuning uchun unda foydalanuvchiga ko‘rinadigan ingliz tilidagi matn bo‘lishi mumkin emas. Test skriptning zaxira (fallback) jadvalini serverdagisi bilan solishtiradi, chunki mos kelmaslik biror boshqaruv elementini barcha tillarda ingliz tilida qoldirib ketadi va bu hech narsani muvaffaqiyatsiz qilmaydi.

Vaqt zonasi

ui={"timezone": "Asia/Tashkent"}

Sana-vaqtlar har doimgidek saqlanadi va shu vaqt zonasida ko‘rsatiladi.