VosCMS Зах Зээл

Өөрчлөлтийн түүх

v2.8.2 2026-10-12 · 7 өдрийн өмнө
Шинэчлэлт болон өөрчлөлтийн түүхийн хуудас зочдын хэлээр харагдана

Юу засагдсан бэ

  • •Шинэчлэгчийн алдаа: файл болон version.json бичихэд алдаа гарах, засвар болон өөрчлөлтийн урьдчилан харалтыг дэмжихгүй байх, репозиторт хандах боломжгүй байх, холболт амжилттай болох.
  • •Шинэчлэлтийн хуудас: серверийн хариултын алдаа, «N файл өөрчлөгдсөн · N коммит», дууссан, хэрэгжиж байна, ажил бүртгэгдсэн, хугацаа хэтэрсэн, буцаалт дууссан.
  • •Ажил бүртгэсэн тухай мэдэгдэл: шинэчлэлт, засвар эсвэл буцаалтын ажил дараалалд орсон тухай мессеж.
  • •Эрхтэй ажилтан (cron) үлдээдэг явцын мессеж болон амжилттай, амжилтгүй болсон мэдэгдэл одоо зөв хэлээр гарна.

Өөрчлөлтийн түүхийн хуудас (`/changelog`)

  • •«5 months ago» шиг харьцангуй цаг өмнө нь зөвхөн солонгос, англи хэлээр байсан бол одоо 13 хэлээр байна.

Хоосон жагсаалтын мэдэгдэл, «AI орчуулга» тэмдэглэгээ, «орчуулга алга — KO хэлээр харуулж байна» тайлбар, «хамгийн сүүлийн N-г л харуулж байна» зэргийг мөн орчуулав.

  • •Хуудасны хэлийг одоо сессийн утгаар бус, сайтын бодитоор ашиглаж буй хэлээр (?lang=, сесс, күүки, үндсэн хэл) тодорхойлно.

Өмнө нь анх зочлоход солонгос хэл рүү унаж, япон, англи сайтууд дээр солонгос бичиг холилддог байсан.

  • •Урт нэр болон зам (хоосон зайгүй текст) карт зүүгээс халин гарахгүй, баруун талын суулгах товчны доор орохгүй болов.

Мэдэж авах зүйл

  • •Эрхтэй ажилтанд нэвтэрсэн хэрэглэгч байхгүй тул хэл байхгүй. Тэр мессежээ сайтын үндсэн хэлээр бичнэ.

(Өмнө нь орчуулгын системийг эхлүүлдэггүй байсан тул updater.write_failed шиг түлхүүр хэвээрээ харагдаж болзошгүй байсан. Одоо ажилтан үүнийг эхлүүлнэ.)

  • •Серверийн лог (error_log) болон хөгжүүлэгчийн дебаг логийг оператор уншдаг тул хэвээр үлдээв.
  • •Суулгасан сайт дээр шинэчлэлтийг гүйцэтгэдэг нь аль хэдийн суулгасан хуучин шинэчлэгч тул эдгээр сайжруулалт 2.8.2 руу шилжсэний дараах шинэчлэлтээс харагдана.
v2.8.1 2026-10-12 · 7 өдрийн өмнө
Олон хэлний дэмжлэгийг сайжрууллаа (апп-ын нэр, хайлтын мэдээлэл, `?lang=`) · шинэчлэлт сайтын өөрийн цөмийн өөрчлөлтийг хамгаална

Олон хэл

  • •«Нүүр дэлгэцэнд нэмэх» болон суулгах зөвлөмж дэх апп-ын нэр, тайлбар одоо зочны хэлээр гарна. Өмнө нь хадгалсан утга (жишээ нь япон хэл) хэвээр нь харагддаг байсан.

Орчуулгыг rzx_translations дахь pwa.front.name зэрэг түлхүүрт хадгална. manifest.php одоо албан ёсны гаралт руу шилжүүлэхээс өөр юм хийхгүй.

  • •Бүтэцлэгдсэн өгөгдөл (JSON-LD): тохиргооны утгын орчуулгыг эхэлж харна. Навигацийн хоёр дахь зүйлд сайтын нэр хамт орж байсныг, мөн «Home» бүх хэл дээр англиар гарч байсныг засав.
  • •Статистик виджет: тоо болон нэгж (suffix) одоо шошготой адил хэл бүрийн утгыг хүлээн авна. Нэг утга урьдын адил ажиллана.
  • •Офлайн дэлгэц болон service worker-ийн сүүлчийн зөвлөмж текст одоо солонгос, япон, англи гурван хэлээр байна.

Service worker-ийн кэшийн хувилбар v5-аас v6 болж, суулгасан төхөөрөмжүүд шинэ дэлгэцийг хүлээн авна.

  • •Мессеж хайлтад «Илэрц олдсонгүй» гэдэг нь солонгос хэлээр шууд бичигдсэн байсныг 13 хэл рүү орчуулав.

Хайлтын систем ба AI

  • •<meta property="og:locale"> болон нэмэлт хэлүүдийг (og:locale:alternate) гаргана. Сошиал сүлжээнд хуваалцахад тухайн хуудас ямар хэлээр байгааг мэдэгдэнэ.
  • •Кодоор зурагдсан нийтийн системийн хуудас одоо sitemap.xml-д орно (өмнө нь орхигдсон байсан).
  • •llms.txt-ийн эхний мөр (сайтын тайлбар) зочны хэлээр гарна.
  • •Хуудас бүрийн robots тохиргоо (удирдлагын дэлгэцэнд оруулах талбар байсан ч хаана ч уншдаггүй байсан) одоо бодитоор хэрэгжинэ.

Засагдсан асуудал

  • •?lang= утгыг дэмжигдсэн хэлний жагсаалттай тулгасны дараа л хүлээн авна. Өмнө нь дэмжигдээгүй утга күүкид нэг жил үлдэж,

дараа нь тэр хэлийг нээхэд зочныг өөрийнх нь хүслээс үл хамааран тэр дэлгэц рүү шилжүүлж болзошгүй байсан. Хэл сонгогч мөн ижил дүрмийг дагана.

  • •Виджет бүтээгч: дэлгэцэнд оруулах талбаргүй хэлний орчуулга хадгалах бүрд устдаг байсан асуудал.
  • •Нийгэмлэгийн мессеж хайлт: нэр шифрлэгдэж хадгалагддаг тул ямар нэр оруулсан ч 0 илэрц гардаг байсан. Одоо эхлээд тайлж, дараа нь тулгана.

Шинэчлэлт сайтын өөрийн цөмийн өөрчлөлтийг хамгаална

  • •storage/custom/update-preserve.txt файлд мөр бүрт нэг замаар бичвэл (# нь тайлбар, хавтас бичиж болно) шинэчлэлт тэдгээр файлыг дарж бичихгүй.

Сайтад зориулсан нэвтрэх дүрэм зэрэг цөмийн файлд шууд оруулсан зүйлээ хамгаалахад ашиглана. Үнэмлэхүй зам болон ..-ийг хүлээн авахгүй,

мөн файлыг уншиж чадахгүй байсан ч шинэчлэлт зогсохгүй, үндсэн хамгаалалтын жагсаалтаар үргэлжилнэ.

  • •Мэдэж авах зүйл: шинэчлэлтийг гүйцэтгэж буй тал энэ чадвартай байж байж үр дүнтэй. Энэ нь 2.8.1 руу шилжсэний дараах шинэчлэлтээс хэрэгжинэ.
v2.8.0 2026-10-12 · 7 өдрийн өмнө
Төлбөрийн үйлчилгээ үзүүлэгчийг (PG) хавтас хийснээр нэмэх · Square-ийн дэмжлэг

Юу өөрчлөгдсөн бэ

Төлбөрийн модульд үйлчилгээ үзүүлэгч бүрийн файл урьд нь байсан ч «ямар үйлчилгээ үзүүлэгч байгаа» нь кодын хэд хэдэн газар бичигдсэн байв.

Шинэ үйлчилгээ үзүүлэгч нэмэхийн тулд төлбөрийн удирдлагын код, тохиргооны дэлгэц, webhook-ийг бүгдийг нь засах шаардлагатай байв.

  • •rzxlib/Modules/Payment/Gateways/ дотор хавтас (gateway.json ба хэрэгжүүлэлтийн файл) хийвэл цөм өөрөө таньна.

Удирдлагын тохиргооны дэлгэц дэх үйлчилгээ үзүүлэгчийн сонголт, түлхүүрийн талбар, webhook хаяг нь тэр тодорхойлолтоос үүснэ.

  • •Сайт тохиргооны дэлгэцээс урьдын адил нэг үйлчилгээ үзүүлэгч сонгоно. Хэд хэдэн үйлчилгээ үзүүлэгчийг зэрэг ашиглах чадвар биш.
  • •Үйлчилгээ үзүүлэгч нэмэх аргыг docs/PAYMENT_GATEWAYS.md-д тайлбарласан.

Square

  • •Картаар төлөх, буцаан олгох, лавлах, хадгалсан карт (давтан төлбөрийн хувьд) болон webhook (гарын үсэг шалгалттай)-ийг дэмжинэ.
  • •Картын оруулах маягт карт эзэмшигчийн баталгаажуулалт (SCA)-аар дамжиж, амжилтгүй болбол шалтгааныг дэлгэцэнд харуулна. 13 хэл.
  • •Удирдлагын тохиргооны дэлгэцэнд «Холболтын тест» товч нэмэгдлээ. Тестийн горимд бага дүнтэй төлбөр → лавлах → буцаан олголт хийж,

түлхүүрийн тохиргоо зөв эсэхийг шалгана. Бодит мөнгө хөдөлдөггүй бөгөөд бодит (live) горимд ажиллахгүй.

  • •Square-ийг сонгох хүртэл ямар ч сайтад нөлөөгүй.

Одоо байгаа үйлчилгээ үзүүлэгчид (PAY.JP, Stripe) хэвээрээ

  • •Хоёр үйлчилгээ үзүүлэгчийн хэрэгжүүлэлтийн файлд хүрээгүй. Хуучин тохиргоо (ганц түлхүүр, v2, v3) урьдын адил уншигдана.
  • •Тодорхойлолтын файлыг ямар нэг шалтгаанаар уншиж чадахгүй байсан ч PAY.JP, Stripe хуучин аргаараа үүсэх хамгаалалт хийсэн.
  • •Ажиллаж буй сайтуудын бодит тохиргоо болон олон хэлбэрийн зохиомол тохиргоогоор хуучин болон шинэ кодыг харьцуулж, тэд ижил үйлчилгээ үзүүлэгч, ижил горим, ижил түлхүүр

сонгодгийг баталгаажуулав (scripts/test-payment-parity.php).

Сайт бүрийн төлбөрийн тохиргоог унших

Нэг өгөгдлийн санд сайт бүрийн төлбөрийн тохиргоо тусдаа байвал төлбөрийн модуль одоо өөрийн сайтын тохиргоог уншина.

Өмнө нь аль сайтын тохиргоо сонгогдох нь тодорхойгүй байв. Сайт өөрийн тохиргоогүй бол урьдын адил ажиллана.

Мэдэж авах зүйл

  • •Нийтлэг webhook хаяг нэмэгдлээ (/api/webhook-payment.php?gateway=…). Одоо байгаа PAY.JP, Stripe-ийн webhook хаяг өөрчлөгдөхгүй.
  • •Тохиргооны дэлгэц дэх үйлчилгээ үзүүлэгчийн жагсаалт хуучин дарааллаа хадгалж, тодорхойлолтоор орж ирсэн үйлчилгээ үзүүлэгч түүний дараа нэмэгдэнэ.
v2.7.17 2026-09-21 · 28 өдрийн өмнө
Плагины-ийн агуулга хайлт болон AI системд харагдах боллоо

Юу нь асуудалтай байсан бэ

Сайтын газрын зураг (sitemap.xml) болон AI-д зориулсан гарын авлага (llms.txt)-д цөмийн мэддэг зүйл-ийг л оруулдаг байв.

Плагин өөрийн хуудсыг оруулахын тулд цөмийн файлыг шууд засахаас өөр арга байгаагүй бөгөөд тэр засвар

шинэчлэлт болгонд алга болдог байв. Үүн дээр цөм нь плагины хүснэгтийг таамаглан уншдаг байсан тул зарим газарт чимээгүйхэн хазайсан зүйл байв.

  • •Үл хөдлөх хөрөнгийн зар тусдаа хаяг (/properties-sitemap.xml)-аар л гардаг байсан тул, хаана ч тэр хаяг руу заагаагүй бол

хайлтын систем олж чаддаггүй байв.

  • •Зах зээлийн бараа сайтын газрын зурагт нэг ч удаа орж байгаагүй. Учир нь байхгүй багана хайдаг лавлагаа байсан.

Алдааг залгиад орхисон тул хэн ч мэдээгүй.

  • •Зарим сайт дэлгүүрийн хаягийг буруу хэлбэрээр оруулсан тул нээхэд байхгүй хуудас гардаг хаягийг хайлтын системд бүртгүүлж байв.

Плагин өөрийн хуудсаа өөрөө гаргана

  • •Плагины plugin.json-д seo гэж бичвэл цөм үүнийг уншиж, сайтын газрын зураг болон AI-ийн гарын авлагад нэгтгэнэ.

Виджет, байршил, интранет модультай адил арга бөгөөд ижил хаяг давхцвал цөм давамгайлна.

  • •Олон хэлний хаяг болон хэлний тэмдгийг цөм өөрөө залгана. Плагин зөвхөн хаягаа өгөхөд хангалттай.
  • •Нэг плагин эвдэрсэн ч сайтын газрын зураг бүхэлдээ унахгүй. Зөвхөн тэр плагины хэсэг л орхигдоно.
  • •Идэвхгүй болгосон плагины хаяг автоматаар хасагдана — идэвхгүй плагины хуудас ямар ч байсан нээгддэггүй.

Хятад хэлний орлуулах хаягийг үл тоодог байсан асуудал

Сайтын газрын зураг хэлний тэмдгийг zh_CN гэж бичсэн боловч стандарт нь zh-CN тул Google тэр мөрийг бүхэлд нь үл тоодог байв.

Хуудас өөрөө зөв бичигдсэн байсан тул нэг сайт хоёр газар өөр өөр зүйл хэлж байсан.

Хялбаршуулсан болон уламжлалт хятад хэлний орлуулах хаяг одоо зөв танигдана.

AI

  • •llms.txt нь үндсэн хэлээр нэг л хувь байв. Одоо ?lang=en шиг хэлний хувилбар гаргана.

Барааны нэр, тайлбар тэр хэлээр гарч, гарын авлагын эхэнд аль хэлний хувилбар болохыг бичнэ.

  • •Олон хэлт сайтад AI хариулагч систем хэл тус бүрийн хэрэглэгчдэд энэ сайтыг уншиж өгөх боломжтой болно.

Ажилтан өөрийн хүний нөөцийн картыг харна (интранет)

  • •Зөвхөн хүний нөөцийн ажилтан хардаг байсан картыг одоо өөрөө ч үзэх боломжтой. Дээд талын профайл цэснээс орно.
  • •Зөвхөн үзэх боломжтой. Засах зүйл байвал хүсэлт гаргаж, хүний нөөцийн ажилтан батлах урсгалыг бэлтгэж байна.
  • •Үнэлгээ нь өөрт нь харагдахгүй. Шагнал, сахилгын арга хэмжээ ч мөн адил. Хавсаргасан баримтаас зөвхөн жагсаалт харагдана.
  • •Хаягийн мөрийг засаад бусдын картыг нээх боломжгүй — хэний карт болохыг зөвхөн нэвтрэлтийн мэдээллээр тодорхойлно.
  • •Өөрийн хүний нөөцийн мэдээллийг хэн үзсэнийг өөрөө ч шалгаж болно.
v2.7.16 2026-09-21 · 28 өдрийн өмнө
Самбарын холбоосын суурь хаяг ба плагины байршил

Самбарын дэлгэцийг өөр бүрхүүлд ашиглах

Самбарын дэлгэц дэх бүх холбоос нэг утга ($boardUrl)-аас бүтдэг боловч цөм тэр утгыг үргэлж дарж бичдэг байв.

Тиймээс интранет шиг удирдлагын дэлгэцийн дотор самбар ашигладаг тал зурж дууссан дэлгэцийг тэмдэгт тэмдэгтээр нь солих хэрэгтэй болдог байв.

Цөм холбоосын хэлбэрийг жаахан өөрчлөхөд л чимээгүйхэн хазайдаг бүтэц байлаа.

  • •Дуудагч тал суурь хаягийг урьдчилан тогтоосон бол тэр утгыг хэрэглэнэ. Тогтоогоогүй бол өмнөхтэй яг адил.
  • •Арааны (самбарын тохиргоо) холбоосыг ч нэг газар шийднэ. Өмнө нь жагсаалт, FAQ, Q&A, холбоосын скин дөрвөн газар тус тусдаа бүтээдэг байв.

Байршлыг плагины дотор байлгах

  • •Байршлыг цөмийн skins/layouts/-оос эхэлж хайж, байхгүй бол плагины plugins/{id}/skins/layouts/-оос хайна.

Виджет, интранет модультай ижил дүрэм бөгөөд ижил нэр давхцвал цөм давамгайлна.

  • •Удирдлагын байршил сонгогчид плагины байршил мөн хамт гарна.
  • •Өнөөг хүртэл плагины тусгай байршлыг цөмийн хавтсанд байлгах хэрэгтэй байв. Шинэчлэлт үүнийг устгадаггүй ч,

хожим цөм ижил нэртэй байршил гаргавал дарагдаж, плагиныг өөр сайт руу зөөхдөө хавтсыг гараар авч явах шаардлагатай байв.

v2.7.15 2026-09-21 · 28 өдрийн өмнө
Плагин интранет модулийг өөрөө зарлана · огнооны оруулалтад Японы жилийн нэр

Плагин интранет модулийг өөрөө зарлана

Интранет дэлгэцийн (зүүн цэс, орох зам) жагсаалт цөмийн нэг тохиргооны файлд л байдаг байв.

Плагин өөрийн модулийг оруулахын тулд цөмийн файлыг засах хэрэгтэй байсан бөгөөд шинэчлэхэд тэр агуулга алга болдог байв.

  • •Плагины plugin.json-д intranet_module гэж бичвэл цөм уншиж нэгтгэнэ. Цэс, системийн хуудастай адил арга.
  • •Утгад массивыг шууд бичиж болох ба "data/intranet-module.php" шиг файлын зам бичиж ч болно.
  • •Ижил нэр давхцвал цөм давамгайлна. Плагин цөмийн модулийг булаан авч үндсэн үйлдлийг нь өөрчилж чадахгүй.
  • •Цөмд энэ жагсаалтыг уншдаг байсан 5 газрыг бүгдийг нь шинэ аргад шилжүүлсэн. Шинэчлэлт тохиргооны файлыг дарж бичсэн ч плагины модуль хэвээр үлдэнэ.

Огнооны оруулалтад Японы жилийн нэр (和暦)

  • •Япон хэлний дэлгэцийн огнооны талбарт жилийн нэр (令和, 平成, 昭和, 大正, 明治)-ийг сонгоод жилийн тоог оруулахад, он автоматаар бөглөгдөнө.

Төрсөн огноо шиг жилийн нэрээр санадаг утгыг тэр болгон хөрвүүлэх шаардлагагүй.

  • •Гарагийн харуулах талбар хэвээр байна.

Самбарын байршлын тохиргоо дэлгэцэнд тусдаггүй байсан асуудал

  • •Удирдлагад самбар бүрээр байршил сонгосон ч дэлгэцэнд сайтын үндсэн байршил гардаг байв.

Хадгалдаг газар болон уншдаг газар нь өөр байсан.

  • •Засвар: самбарыг хадгалахдаа дэлгэцийн уншдаг тохиргоонд бас хамт бичнэ.

Одоо байгаа самбарууд дахин хадгалагдах хүртэл яг одоогийнх шигээ харагдана (гадаад төрх гэнэт өөрчлөгдөхгүй).

v2.7.14 2026-09-20 · 29 өдрийн өмнө
Самбарт бичих болон хайлт хэвийн болов

Бичсэн нийтлэл хадгалагддаггүй байсан асуудал

  • •Нийтлэл хадгалахдаа гарчгийн баганыг орхигдуулдаг байсан тул тэр багана үлдсэн сайтад хадгалалт амжилтгүй болдог байв.

Дэлгэцэнд зөвхөн «Unexpected end of JSON input» гэж гарна.

  • •Засвар: багана үлдсэн бол түүнийг мөн хамт бөглөнө. Баганыг устгасан сайт өмнөх шигээ ажиллана.

Самбарын хайлт

  • •Хайлт хуучин баганыг хардаг байсан тул баганыг устгасан сайтад хайлтын үгийг оруулмагц жагсаалт бүхэлдээ нээгддэггүй байв.
  • •Багана үлдсэн сайтад ч асуудал байв. Нийтлэлийг засахад багана шинэчлэгддэггүй тул засахаас өмнөх агуулгаар л хайдаг байв.
  • •Засвар: хайлтыг орчуулгын хүснэгтээс хийнэ. Одоо үзэж буй хэл болон орчуулсан агуулгыг ч олно.

Жагсаалт, виджет, Миний хуудсанд нийтлэл харагддаггүй байсан асуудал

  • •Мэргэжлийн салбарын табын виджет болон самбарын тор виджет үргэлж хоосон жагсаалттай байв (алдааг дотор нь залгидаг байсан).
  • •Миний хуудасны «Миний сэтгэгдэл»-д самбарын сэтгэгдэл бүхэлдээ алга байв.
  • •Холбоосын самбарын скин нь гарчиг нь үргэлж хоосон байв.
  • •Засвар: бүгд гарчиг, агуулгыг орчуулгын хүснэгтээс уншдаг болов. Жижиг зургийг ч агуулгаас дахин олно.

AI орчуулга ба шинэ суулгалт

  • •Нийтлэлийн AI орчуулга эх бичвэрийг уншихдаа алдаж, орчуулгын бүх ажил амжилтгүй болдог байсныг засав.
  • •Шинээр суулгахад орох жишээ нийтлэлийн эх хэлний гарчиг, агуулга орчуулгын хүснэгтэд ордоггүй тул гарчиг хоосон харагддаг байсныг засав.

Бусад

  • •Самбарын эрэмбийг «санал болгосон дарааллаар» тохируулсан үед жагсаалт нээгддэггүй байсныг засав (байхгүй багана руу хандаж байсан).
v2.7.13 2026-09-20 · 29 өдрийн өмнө
Удирдлагын мэдэгдлийн цонх аюулгүй · Олон хэл

Мэдэгдлийн цонхонд бусдын бичсэн тэмдэгт шууд ордог байв

Удирдлагын дэлгэцийн нийтлэг мэдэгдлийн цонх (үр дүнгийн модал) нь цэсний нэр, загварын нэр, серверээс ирсэн бичвэрийг хэвээр нь хуудсанд буулгаж байв.

Нэрэндээ <script> мэтийг бичиж орхивол өөр админ тэр дэлгэцийг нээхэд ажиллах эрсдэлтэй байсан (хадгалагдсан XSS).

  • •Засвар: мэдэгдлийн цонхны бүх бичвэрийг (гарчиг, үндсэн хэсэг, товч, баталгаажуулах өгүүлбэр) оруулахын өмнө энгийн тэмдэгт болгон хувиргана.
  • •Өгөгдлийн сантай холбогдож чадаагүй үед гарах мэдэгдэл ч орчуулсан бичвэр ашиглаж, ижил хувиргалт дамждаг болов.

Мэдэгдлийн товч ямар ч хэл дээр солонгосоор гарч байв

  • •«Баталгаажуулах», «Цуцлах» гэдэг нь JavaScript дотор солонгосоор бичигдсэн байв. Одоо үзэж буй хэлээр гарна.

Сервер одоогийн хэлний бичвэрийг бэлдэж, скрипт түүнийг уншина.

Удирдлагын бичвэрийг 13 хэлээр

Загвар (skin), цэс, хуудасны тохиргооны дэлгэцэд солонгосоор шууд бичигдсэн байсан мэдэгдлийг орчуулгын түлхүүр болгож, 13 хэлээр бөглөв.

  • •Загвар: нэр солих, хуулах, устгах үр дүн; «загварын файл, тохиргоо бүрмөсөн устана» гэсэн баталгаажуулалт; зураг байршуулсан үр дүн
  • •Цэс: системийн хуудас зөвхөн цэснээс хасагдана гэсэн мэдэгдэл; «холбогдсон хуудас (самбар) ч хамт устана» гэсэн баталгаажуулалт
  • •Хуудасны тохиргоо: файлын төрөл, хадгалалт амжилтгүй, URL давхардсан тухай мэдэгдэл
v2.7.12 2026-09-19 · 1 сарын өмнө
Нууц нийтлэлийн хамгаалалт · Эхний дэлгэц хурдан

Нууц нийтлэл жагсаалтаар алдагдаж байсан

Нууц гэж тэмдэглэсэн нийтлэлийн гарчиг, нүүр зураг, хураангуй жагсаалтад хэвээр харагдаж байв. Зөвхөн үндсэн бичвэр нуугдсан байсан.

  • •Засвар: жагсаалтад ч зохиогч, админ, эсвэл нууц үг оруулсан хүн л гарчиг, урьдчилсан харагдацыг харна.
  • •Хавсралтын хаягаар агуулгыг харах боломжийг бас хаасан. Хавсралт ч ижил шалгуур мөрдөнө.
  • •Уншиж буй хуудасны өмнөх/дараах нийтлэлийн гарчгийг мөн нуудаг.
  • •Жагсаалт татдаг виджетүүд (самбарын карт, тор, таб) нууц нийтлэлийг эхнээсээ хасаж авдаг болов.

Эхний дэлгэц удаан гарч байсан

Гар утсанд эхний үсэг гарахад удаж байв. Шалтгаан нь фонт байлаа.

  • •Фонтын CSS (Google Fonts 152KB + Pretendard 29KB) зурагдалтыг зогсоож байв.

Одоо эхлээд системийн фонтоор зурж, вэб фонт ирмэгц сольдог.

  • •Pretendard-ыг зөвхөн солонгос хэлний дэлгэцэд ачаалдаг. Япон дэлгэцэд япон фонт түрүүлдэг тул зөвхөн хэсэгчлэн татаад хаядаг байв.
  • •Жижиг хоёр CSS (үсгийн хэмжээ, самбарын бичвэр) файлаар дуудахгүй, хуудсанд шууд оруулав.
  • •Анх зочлоход дэлгэцийн кэш (service worker)-ээс болж баримтыг хоёр удаа уншдаг байсныг арилгав.
  • •Хэвтээ гүйлгэх цэсний өргөний тооцоог хуудас ачаалж дууссаны дараа хийдэг болгов (өмнө нь 0.5 секунд царцаана).

Хайлтын робот, хиймэл оюун хэл тус бүрийн хуудсыг дагаж чаддаг болгов

  • •Хэл сонгох холбоосыг жинхэнэ хаяг (?lang=…) болгов. Өмнө нь JavaScript холбоос байсан тул робот дагаж чаддаггүй байв.

Удирдлагын дэлгэц

  • •Хуудасны жагсаалтад нэг хуудас хэлний тоогоор олон мөр гарч байсныг нэг мөр болгон нэгтгэв.
  • •Цэсний гарчгийг л засахад бусад хэлний орчуулга устдаг асуудлыг зассан. Холбосон хуудсыг сольсон тохиолдолд л цэвэрлэнэ.
  • •Блогийн товлосон нийтлэлд өнгөрсөн цаг оруулахад тэр хэвээр хадгалагддаг байсныг мэдэгдэл гаргаж, төлвийг хэвээр үлдээдэг болгов (13 хэл).

Мэдэгдэл, бичвэр

  • •Нийгэмлэгийн зурвасын мэдэгдлийн гарчиг солонгосоор тогтсон байв. Одоо хүлээн авагчийн хэлээр очно.
  • •Күүкийн мэдэгдлийн холбоосын үсэг бүдэг байсныг тодруулав.

Дотоод цэгцлэлт

  • •Андуурч хоёр хувь болсон удирдлагын дэлгэцийн хавтсуудыг (admin/site/site, admin/components/components) устгав.

Бодитоор ашиглагддаг нь эх хавтас юм. Түгээлтийн бүтээлтээс ч эдгээрийг хасав.

v2.7.11 2026-09-13 · 1 сарын өмнө
Сайтын зураглалаас хаалттай самбарыг хасав · Имэйлийн хүргэлтийг сайжруулав

Сайтын зураглалд хаалттай самбар орж байсан асуудал

Зөвхөн админ харах боломжтой самбарын (хүсэлт хүлээн авах хайрцаг г.м.) хаягууд хүртэл сайтын зураглалд орж байсан.

Хайлтын роботууд тэдгээр хаягаас зөвхөн 403 (хандах эрхгүй) хариу авч, хаалттай самбар байгаа нь ч ил болж байв.

  • •Засвар: гишүүн бус хүн харж болох самбарыг л оруулна. Жагсаалт болон нийтлэл унших эрх нь «Бүгд» гэж тохируулсан самбар шалгуур болно.
  • •Нууц нийтлэл болон самбарын тохиргоонд хайлтаас хассан (noindex) самбарыг мөн хасна.
  • •Самбартай ижил нэртэй хуудсыг самбарын талаас нь шийднэ. Учир нь хаягийг самбар түрүүлж эзэлдэг.
  • •Олон хэлний хуудсыг ч сайтын зураглалд оруулна.
  • •Сайт бүрт оруулахыг хүсэхгүй хуудсаа sitemap_exclude тохиргоонд бичнэ. llms.txt ч мөн адил тохиргоог дагана.

Илгээсэн имэйл спам руу орох эсвэл буцаж ирдэг байсан асуудал

  • •Имэйлд илгээсэн цаг (Date) болон имэйлийн давтагдашгүй дугаар (Message-ID) байхгүй байсан тул хүлээн авагч тал спам гэж ангилах магадлал өндөр байв.

Хоёуланг нь оруулж, үндсэн текстийг base64 хэлбэрээр илгээнэ. Урт мөр тасрах, мөрийн эхний «.»-ээс болж текст таслагдах асуудлыг ч давхар сэргийлнэ.

  • •Хүлээн авах хаяг илгээгчтэй ижил домэйнд байвал (жишээ нь компанийн хаяг руу илгээх хуулбар), тухайн домэйны шуудангийн хайрцаг хуурамч гэж үзээд татгалзаж байв.

Зөвхөн энэ тохиолдолд SMTP бүртгэлийн хаягаас илгээж, хариу нь анхны хаяг руу ирэхээр болгов.

SEO болон AI хайлтын тохиргоог сайжруулав

  • •Админы SEO тохиргоонд ажиллуулагчийн мэдээлэл (бүтэцжүүлсэн өгөгдөл Organization) оруулах талбар нэмэв. Утгагүй талбарыг гаргахгүй.
  • •Хуудас тус бүрийн SEO тохиргоог бодитоор ашиглаж, ижил агуулга олон хаягаар харагдах үед төлөөлөх хаяг (canonical)-ийг тогтооно.
  • •Bing сайтын баталгаажуулах код оруулах талбар нэмэв. ChatGPT-ийн хайлт Bing-ийн индексийг ашигладаг.
  • •Тайлбарыг хайлтын үр дүнгийн харагдах өргөнд тааруулж, өгүүлбэрийн дундаас биш төгсгөлд нь таслана.

Хэлний харагдах байдлыг цэгцлэв

  • •404 дэлгэц үргэлж солонгосоор гардаг байсан. Одоо үзэж буй хэлээр (япон, солонгос, англи; бусад хэлд англиар) гарна.
  • •Мэдэгдлийн хонхны «дөнгөж сая» гэсэн бичиг солонгосоор хатуу бичигдсэн байсныг засав.
  • •Япон дэлгэцэд япон фонтыг түрүүлж хэрэглэнэ. Хэл бүрийн фонтын туслах функцийг үргэлж ачаалдаг тул загварыг дамждаггүй дэлгэц (хуваалцах хуудас г.м.) ч фонтоос болж зогсохгүй.
  • •Миний хуудасны «Сонгосон хэл» жагсаалтад текстгүй хэлнүүд хүртэл гарч байсныг цэгцлэв.
  • •Бүртгүүлэх үедээ үзэж байсан дэлгэцийн хэлийг сонгосон хэл болгон хадгална (өмнө нь хоосон үлддэг байв). Нууц үг сэргээх имэйлийг ч тухайн хэлээр илгээнэ.

Оруулга ба нэвтрэлт

  • •Төрсөн огноо зэрэг огноог он, сар, өдөр гэсэн 3 нүдэнд оруулна. Өмнө нь хөтчийн хэлээс хамаарч харагдах байдал өөр байв.
  • •Загвараас хамааран нэвтрэх болон нууц үг сэргээх хэсэгт reCAPTCHA шалгалт алга болдог байсан асуудлыг засав.

Төлбөр

  • •Төлбөрийн үйлчилгээ үзүүлэгч (PG) бүрээр туршилтын түлхүүр болон бодит түлхүүрийг тусад нь хадгална. Туршилтын горимыг зөвхөн сонгоход хангалттай бөгөөд түлхүүр солих явцад алга болохгүй.

Виджет

  • •Hero виджетийн товчийг шинэ цонхонд нээх боломжтой боллоо.
  • •Виджет бүтээгчийн давтагдах зүйлсийг ч хэл тус бүрээр бичиж болно (бөмбөрцөг товч).

Бүтээлт (build)

  • •Тохиргооны файл (.env) болон түүний нөөц хуулбарыг нэрээс үл хамааран түгээлтийн хувилбарт оруулахгүй.
  • •Засварлах явцад үлдсэн нөөц файлыг (.bak, нэрийн ард огноо залгагдсаныг оруулаад) мөн оруулахгүй.
  • •Зөвхөн төв оффисын үйл ажиллагаанд хэрэглэдэг скриптүүд (сайт синк, хостинг, шуудангийн сервер, нөхцөл шинэчлэх г.м.) болон түгээлтийн хувилбарт ороогүй плагинд л хэрэглэгддэг cron-уудыг түгээлтийн хувилбараас хасав. Шинэчлэлт, суулгалт, орчуулгын ажиллуулагч зэрэг хэрэглэгчийн сайтад хэрэгтэй скриптүүд хэвээр орно.
  • •Zip үүсгэсний дараа дахин шалгаж, тохиргооны файл эсвэл нөөц файл орсон бол нийтлэлийг зогсооно.
  • •Туршилтын скриптүүд нууц үгийг файлд бичихгүй, тохиргооноос уншина.
v2.7.10 2026-08-23 · 2 сарын өмнө
Шинэчилсний дараа хувилбарын нэр хуучнаараа үлддэг байсан асуудал

Шинэчилсэн ч хувилбарын нэр, гарсан өдөр өөрчлөгддөггүй байсан

Зөвхөн дугаар нэмэгдэж, гарчиг өмнөх хувилбарынх хэвээр үлддэг байв.

Админы дэлгэц дээр «2.7.9 · Япон фонт · гэрээ сунгалтын мэдэгдэл…» гэх мэтээр дугаар, нэр хоёр зөрж харагдана.

Юу хүлээн авснаа зөвхөн дэлгэцээс харж мэдэх боломжгүй байв.

  • •Шалтгаан: version.json нь үйлчлүүлэгч бүрийн тусгай тохиргоог хамгаалахын тулд санаатайгаар дарж бичдэггүй файл юм.

Тиймээс шинэчлэгч өөрөө бөглөдөг боловч зөвхөн дугаар болон цагийг сольж, гарчиг болон гарсан өдрийг хэвээр үлдээж байв.

  • •Засвар: шинэ хувилбарын гарчиг, гарсан өдрийг хүлээн авсан багцаас уншиж хамт тусгана.

Багцгүй хэсэгчилсэн шинэчлэлийн үед түгээлтийн жагсаалт (manifest.json)-аас уншина.

Үйлчлүүлэгч бүрийн тохиргоо (github гэх мэт)-ыг хэвээр хамгаална.

Анхаарах нь — энэ хувилбар руу шинэчилсэн ч дэлгэц хуучин нэрээрээ харагдаж магадгүй. Шинэчлэлийг ажиллуулдаг нь

одоо суулгаастай хувилбарын шинэчлэгч учраас тэр.

2.7.10-ыг хүлээн авсан хувилбарын дараагийн хувилбараас зөв харагдана.

Build шалгалт

2.7.8-ын бүтээгч гацсан (2.7.9-д засагдсан) асуудал регрессийн тестийг шууд давсан.

Учир нь одоо байгаа шалгалтууд «файл байна уу · тэмдэгт мөр орсон уу» гэдгийг л харж байсан.

  • •Одоо бүтээгчид орох скриптийг бодитоор үүсгэж, синтакс шалгана (node --check).
  • •JS тэмдэгт мөр дотор олон мөрт файлыг яг тэр чигээр нь оруулсан код байвал мөрийн дугаарыг заан build-ийг зогсооно.
  • •2.7.8-ыг дахин үүсгэсэн файлаар туршиж, шалгалт үнэхээр барьж байгааг баталгаажууллаа.
v2.7.9 2026-08-23 · 2 сарын өмнө
Виджет бүтээгч ажиллахаа больсон асуудал (2.7.8-ын регресс)

Шинж тэмдэг

  • •Палитр дээр нэг ч виджет харагдахгүй
  • •Аль хэдийн байрлуулсан виджет зураг дээр зурагдахгүй — оруулсан видео, зураг зэрэг алга болсон мэт харагдана
  • •Хадгалагдахгүй

Шалтгаан

2.7.8-д фонтын зарлалтыг partials/fonts.php нэг газарт нэгтгэсэн. Гэтэл бүтээгчийн урьдчилан харалтыг үүсгэдэг газар нь

JS тэмдэгт мөрийн нэг мөр дотор байсан бөгөөд 33 мөрийн фонтын зарлал тэнд яг тэр чигээрээ орсон.

Мөр таслагдсан тэр агшинд тэмдэгт мөр тасарч, бүтээгчийн скрипт бүхэлдээ уншигдахаас өмнө үхсэн.

Файлыг бүхэлд нь унагадаг төрлийн алдаа учир «зарим чадвар хачин» биш бүтээгч юу ч хийхгүй байдалтай харагддаг.

2.7.5 ба түүнээс доош хувилбарт энэ асуудал байхгүй.

Яаж засав

Фонтын тодорхойлолтыг fonts.php нэг газарт нь хэвээр үлдээж, зөвхөн бүтээгчид оруулахдаа гаралтыг нэг мөр болгон нугалж хашилтыг боловсруулна.

Фонт засах газар өмнөх шигээ ганцхан хэвээр.

v2.7.8 2026-08-22 · 2 сарын өмнө
Япон фонт · гэрээ сунгалтын мэдэгдэл · 3-D Secure

Үндсэн фонтыг япон хэлэнд тулгуурлав

Өнөөг хүртэл үндсэн фонт солонгос хэлэнд тулгуурласан байсан. Гол хэрэглэгч нь Япон талд байхад дэлгэц эвгүй харагддаг,

хэл солиход фонт нь хэвээр үлддэг тул япон өгүүлбэр солонгос фонтоор хэвлэгдэж байв.

  • •Үндсэн утгыг гарчигт Минчо, үндсэн текстэд Pretendard JP болгон өөрчиллөө.
  • •Хэлний тохиргооны дэлгэцээс хэл тус бүрт фонтыг тусад нь зааж болно. Заагаагүй бол тухайн хэлэнд тохирсон үндсэн утга ашиглагдана.
  • •Админ, гишүүн, нүүр хэсгийн бүх дэлгэц болон скин (default, modern, minimal, shop) бүгдэд нэг дүрэм үйлчилнэ.

Гэрээ сунгалт, үнэгүй хугацаа дуусах мэдэгдэл

Гэрээний хугацаа өнгөрсний дараа л мэддэг тохиолдол байсан. Сунгах өдөр дөхөхөд урьдчилан мэдэгдэнэ.

  • •Сунгах хуваарь, үнэгүй хугацаа дуусахыг өдөр нь ирэхээс өмнө мэдэгдлээр харуулна.
  • •Нэг мөр cron (cron.d-voscms-contract-notice)-оор ажилладаг бөгөөд суулгах зааварт бүртгэх аргыг оруулсан.

Картын төлбөр

Японы картын компанийн баталгаажуулалт (3-D Secure)-ыг дамжсан төлбөр баталгаажуулалтыг давсан ч төлбөр авалт татгалзагдаж байсан асуудал.

  • •PAY.jp баталгаажуулалтад зориулж үүсгэсэн токеныг хэвээр нь үлдээвэл ашиглахыг хориглодог. Баталгаажуулалт давсны дараа сервер төгсгөлийн дуудлага хийж

байж л төлбөр авахад ашиглагдах бөгөөд тэр нэг алхам дутсан байв.

  • •Үйлчлүүлэгчийн мэдээлэл төлбөрийн компанийн талд үлдсэн эсэхийг урьдчилан шалгах замыг ч нээлээ — устгагдсан үйлчлүүлэгчээр төлбөр авахыг оролдож бүтэлгүйтэхээс сэргийлнэ.

Мэдэгдлийн хонх, буцаалтын журмын тэмдэглэл олон хэлээр

  • •Толгойн мэдэгдлийн хонх дээрх «Мэдэгдэл алга», «минутын өмнө» зэрэг солонгос хэлээр тогтсон байсан текстийг хэл тус бүрээр солигддог болголоо.
  • •Буцаалтын журмын зааврын үлдсэн тогтмол текстийг цэгцэллээ.

Нягтлан бодох бүртгэл

Японы хуулийн этгээдийн дэвтэрт воны гүйлгээ орж ирж, нийлбэр таарахгүй байв.

  • •Дэвтрийн валют (иен)-ээс өөр валютын баримтад бичилт үүсгэхгүй. Бичлэг үлдэх боловч дэвтэрт орохгүй.

Түгээлтийн цэгцлэлт

  • •Засварын үеэр үүссэн нөөц файл түгээлтэд орж гарч байсан (файлын нэр.php.bak.тоо хэлбэр).

Хасах дүрэм нь зөвхөн .bak-ыг шүүж, тоо залгасан нэрийг алгасдаг байв. Одоо .bak., .orig, *~-ыг ч хаалаа.

  • •THEVOS AI үйлчилгээний борлуулалтын материал (үнийн хүснэгт, багцын тооцоо, төлбөрийн тулгалтын cron)-ыг түгээлтээс хаслаа.

Тэдгээрийг уншдаг бүх хэсэг аль хэдийн хасагдсан тул түгээлтэд хэн ч ашигладаггүй файл байв.

v2.7.7 2026-08-10 · 2 сарын өмнө
Шинээр суулгахад гардаг байсан хоёр анхааруулга

«DB миграци шаардлагатай»

039_ai_knowledge_base нь NaitoWork X дэлгүүрийн зөвлөгөөний AI-ийн хүснэгтийг үүсгэдэг боловч

түгээлтэд яг тэр чигээрээ орж гарсан. Түүнчлэн энэ файлын сүүлийн нэг мөр нь

ALTER TABLE rzx_shop_inquiries ADD COLUMN IF NOT EXISTS ai_meta ...

rzx_shop_inquiries нь vos-store плагины үүсгэдэг хүснэгт юм.

Түгээлтэд vos-store байхгүй — цөм байхгүй плагины хүснэгтийг засах гэж оролдсон байна.

Иймээс шинэ суулгац бүр дээр: 4 хүснэгт үүсээд сүүлийн мөр дээр бүтэлгүйтнэ → эцэс хүртэл хүрээгүй тул

«хэрэгжсэн» гэж бүртгэгдэхгүй → баннер байнга гарч, дарсан ч нэг газар дээрээ дахин бүтэлгүйтдэг.

AI зөвлөгөө (RAG)-ийг түгээлтээс бүхэлд нь хаслаа:

039 · rzxlib/Core/AI/{Knowledge,Embedding,Generate} ·

scripts/{ai-kb-ingest,ai-rag-test,cron-ai-consult,hanesbot-ingest}.php

AI орчуулга (rzxlib/Core/AI/Translation)-ыг үлдээнэ. Энэ нь төлбөртэй vos-ai плагины
хөдөлгүүр бөгөөд нягтлан бодох бүртгэл, хостингийн адил «хөдөлгүүр цөмд, чадварыг плагин нээнэ» гэсэн дүрмийг дагана.

«1 плагин баталгаажаагүй байна (vos

Цөм нь «лицензгүйгээр ашиглагддаг хавсаргасан плагин»-ы жагсаалт барьдаг боловч тэр нь хоцрогдсон байв.

Кодын мэдэж байсан хавсралт | vos-autoinstall · vos-marketplace |

Бодитоор гарч буй хавсралт | vos-autoinstall · vos-community |

vos-marketplace түгээлтээс гарч, оронд нь vos-community орсон боловч

зөвхөн энэ жагсаалтыг засаагүй байсан. Хавсаргачихаад хавсралт гэдгээ мэдэхгүй тул анхааруулга гаргаж байсан юм.

Дахиж ийм зүйл болохгүйн тулд

Шалтгаан нь хавсралтын жагсаалт хоёр газар бичигдсэн байдаг явдал —

build скриптийн хасах жагсаалт болон LicenseStatus::BUNDLE_PLUGINS.

Build-д тулгах алхам нэмсэн. Хоёр нь зөрвөл zip үүсгэлгүй зогсоно.

Үүнийг хүн санаж явах ёсгүй.

v2.7.6 2026-08-10 · 2 сарын өмнө
Самбарын бичих товч · Олон хэлний гарчиг · Суулгах үеийн миграци

Самбарт бичих товч харагдахгүй байсан

Q&A·FAQ дээр бичих эрхтэй хүнд ч товч гарахгүй байв. Шалтгаан хоёр чиглэлтэй байв.

  • •Админ хаагдсан — бичих эрхийг шалгахдаа эхлээд гишүүн эсэхийг, дараа нь админыг шалгадаг байв.

Админ users-д байхгүй тул эхний шатанд л хаагдаж байв. Дарааллыг сольж, админыг эхэлж нэвтрүүлнэ.

  • •Нэг ч нийтлэл байхгүй бол товч хамт алга болдог байв — товч жагсаалтын дотор байсан тул

"нийтлэл алга" дэлгэц рүү шилжихэд товч хамт алга болдог байв. Анх бичих хүн бичиж чадахгүй.

Товчийг жагсаалтын гадна гаргав.

  • •FAQ нь бүр admin_id-г шууд шалгадаг байв — самбарын тохиргооны бичих эрхийг үл тоож байв.

Самбарын гарчиг, дэд гарчиг өөр хэлээр гарч байв

Солонгос дэлгэц атал зөвхөн дэд гарчиг япон хэлээр гарах асуудал.

  • •Орчуулгыг огт уншдаггүй байв. Гарчиг, дэд гарчиг загварын тохиргоонд ганц мөр текст болж хадгалагддаг ч

орчуулга нь rzx_translations-д тусдаа байдаг. Дэлгэц хадгалсан текстийг л хэвээр харуулдаг байв.

  • •Самбарыг ялгадаггүй байв. Орчуулгын түлхүүр skin_config.subtitle_text байсан тул Q&A болон FAQ

нэг нүдийг хуваан хэрэглэж байв. Нэгийг засахад нөгөө нь дагаж өөрчлөгддөг байв.

board.{board_no}.{item} болгож салгав.

  • •Хэл тогтохоос өмнө үндсэн хэсэг зурагдаж байв. Цөм нь эхлээд үндсэн хэсгийг үүсгээд толгой хэсгийг

дараа нь залгадаг ч хэл нь толгой хэсэгт тогтдог байв. Үндсэн хэсэгт эхэлж тогтоохоор шилжүүлэв.

Суулгах үед цөмийн миграци орхигдож байв

install-core.php нь database/migrations-ийг огт хардаггүй байв.

Шинээр суулгасан сайтад хэдэн хүснэгт анхнаасаа байхгүй байж, дараа нь тухайн функцийг асаахад тэр үед унадаг байв.

Миграци чимээгүй алгасдаг байсан асуудал (2.7.4 — ийн үргэлжлэл)

2.7.4-т нэг мөрийн тайлбарыг (--) боловсруулсан ч олон мөрийн тайлбар (/ /) үлдсэн байв.

Тэр блок доторх цэгтэй таслалаас болж файл нэг бөөн болж, нэг ч мөр ажиллахгүйгээр

«хэрэгжсэн» гэж бүртгэгддэг байв. Бодит хохирлыг баталгаажуулав — зарим суулгалтад 9 хүснэгт бүхэлдээ байхгүй байв.

Текст доторх -- эсвэл /* нь тайлбар биш. Хашилтыг тоолж байж арилгана.

Бусад

  • •Дэлгүүрийн толгой хэсэг — ангиллын унждаг цэсийн хамгийн дээр «Бүх ангилал»-ыг нэмэв.

Орж үзэхийг хүссэн хүнд очих газар байгаагүй.

  • •Виджет бүтээгч — давтагдах зүйлсийн (repeater) засварыг тусдаа файлд салгав.
  • •Интранэтийн хажуугийн самбар — нягтлан бодох бүртгэлийн бичвэрийг гурван төрөлд (салон·онлайн дэлгүүр·ерөнхий компани) бүгдэд нь хайна.

Зөвхөн нэгийг хардаг байсан тул өөр нягтлан бодох бүртгэл ашиглавал цэсэнд түүхий түлхүүр хэвээр гардаг байв.

  • •Миний хуудас — хяналтын самбарыг цэгцлэв.
  • •Төлбөртэй плагины тайлан — лицензийн шалгалтад асаалттай төлбөртэй плагинуудыг хамт илгээнэ.

Зөвхөн суулгаад асаагаагүйг илгээхгүй — төлбөр зөвхөн асаасанд тооцогдоно.

v2.7.5 2026-08-05 · 3 сарын өмнө
Түгээлтийн хувилбараас төв байрны тусгай системийн хуудсыг хассан

Төв байрны тусгай хуудас түгээлтийн хувилбарт орж гарч байсан

config/system-pages.php бүхлээрээ түгээлтийн хувилбарт орсноор үйлчлүүлэгчийн суулгацын админы «Системийн хуудас»-нд

дарж болох боловч юу ч байхгүй зургаан цэс үүссэн.

Хассан зүйлЯагаад

📥 downloads | Түгээлтийн хувилбарын татан авалт — зөвхөн төв байр түгээнэ |

📋 changelog | Төв байрны бүтээгдэхүүний түүх |

📧 contact | Үйлчлүүлэгч виджетээр өөрөө хийнэ (системийн хуудас биш) |

💼 recruit · 💃 casts | Шөнийн бизнесийн портал (NaitoWork X)-д зориулсан |

🎟 coupons | Маркетийн плагин өгнө |

  • •Бүтээлтийн [4e/8] шатыг нэмсэн (strip-system-pages.php). Устгасны дараа php -l-ээр синтаксийг шалгана —

энэ файл эвдэрвэл админы дэлгэц бүхэлдээ унана.

  • •Түгээлтийн хувилбарт үлдэх системийн хуудас найм: home · terms · privacy · data-policy ·

refund-policy · hosting-terms · tokushoho · funds-settlement

Плагины системийн хуудас

  • •site.pages.blog текстийг 13 хэлэнд нэмсэн.

Плагин системийн хуудас бүртгэсэн ч цөмд текст байхгүй бол дэлгэц дээр site.pages.blog хэвээрээ гарна.

  • •(vos-blog-ийн өөрийн plugin.json-ийн засвар маркетаар гарна — түгээлтийн хувилбарт ордоггүй плагин)

Аль хэдийн суулгасан сайт

Админы «Системийн хуудас»-нд ашигладаггүй зүйл харагдвал config/system-pages.php-аас тухайн блокийг устгаарай.

Хуудасны агуулга (rzx_page_contents) устахгүй — зөвхөн жагсаалтаас алга болно.

v2.7.4 2026-08-05 · 3 сарын өмнө
Миграци чимээгүйхэн алгасагдаж байсан асуудал

① Тайлбараар эхэлсэн миграци бүхэлдээ алгасагддаг байсан

  • •DatabaseMigrator::splitSql()-ийн тайлбарт «тайлбарыг хассаны дараа хуваана» гэж бичсэн боловч

үнэндээ зөвхөн цэгтэй таслалаар хуваадаг байсан.

  • •SQL файлын эхний мөр -- тайлбар бол файл бүхэлдээ нэг хэсэг болж,

гүйцэтгэх хэсгийн str_starts_with($stmt, '--')-д баригдан нэг ч өгүүлбэр ажиллахгүй.

  • •Гүйцэтгэл 0 бол алдаа ч 0 тул success гэж боловсруулагдаж, хэрэгжсэн гэж бүртгэгддэг.

Бүртгэл үлдсэн бол дахин ажиллахгүй тул хүснэгт байхгүй хэвээр мөнхөд тогтдог.

  • •Хохирлын хүрээ нь ---аар эхэлдэг бүх файл байсан. Хэмжилт: 9-ийн 6 нь 0 гүйцэтгэл, 2 нь хэсэгчилсэн гүйцэтгэл.
  • •Одоо --, # мөрийн тайлбар болон / / блокийг арилгасны дараа хуваана.

Тэмдэгт мөр доторх ---д хүрэхгүй ('a -- b' шиг утга тасарвал өгөгдөл эвдэрнэ).

② Шинэ суулгалт өсөлтийн миграцийг огт ажиллуулдаггүй байсан

  • •Суулгалтын скрипт migrations/core болон migrations/migrations-ийг л ажиллуулж,

дээд түвшний database/migrations/*.sql-ийг орхигдуулдаг байсан. Шинэчлэгч харин зөвхөн дээд түвшнийг мөрддөг.

  • •Тиймээс шинээр суулгахад 034~042 эхнээсээ байхгүй, дараагийн хувилбар гарах хүртэл хоосон байв.
  • •Суулгахад дээд түвшнийг ч ажиллуулж, хэрэгжсэн гэж бүртгэнэ (анхны шинэчлэл ижилийг дахин ажиллуулахгүйн тулд).

Аль хэдийн суулгасан сайт

Админ → Тохиргоо → Шинэчлэлт дээр Миграци ажиллуулах-ыг нэг удаа дарна уу.

Буруу бүртгэгдсэн нь дахин ажиллахгүй тул хүснэгт хоосон бол доор дурдсанаар шалгаж болно.

SELECT migration FROM rzx_migrations;      -- бүртгэл
SHOW TABLES LIKE 'rzx_home_notices';       -- бодит
v2.7.3 2026-08-05 · 3 сарын өмнө
Түгээлтийн хувилбарын плагин цэгцлэлт · дэлгүүрийн толгой · Миний хуудасны үлдэгдэл

Түгээлтийн хувилбараас хассан зүйл

  • •vos-cp (үйлчилгээний хяналтын самбар) болон vos-shopping (онлайн дэлгүүр) нь түгээлтийн хувилбарт дагаж орж байсан.

Хоёулаа шинээр хийсэн плагин бөгөөд хасах жагсаалтад ороогүй байсан төдий.

  • •vos-cp нь THEVOS-ийн өөрийн үйлчилгээнд зориулсан самбар. Үйлчлүүлэгчийн суулгацад байх шалтгаан байхгүй
  • •vos-shopping нь хөгжүүлэлтийн шатандаа (v0.1.0) байгаа бөгөөд плагиныг маркетаас худалдан авдаг нь зарчим
  • •vos-review-ыг ч хассан — ижил шалтгаанаар (эзэмшигчийн заавар).
  • •Түгээлтийн хувилбарт ордог плагин хоёулхан: vos-community, vos-autoinstall.

Бусад бүгдийг маркетаас авна.

Цөмд нэмсэн зүйл

  • •Дэлгүүрийн 2 шатлалт толгой (skins/layouts/shop) — бүх ангиллын унадаг цэс, хайлт, сагсны урьдчилан харалт,

нэвтэрсний дараах аватар цэс. Ангиллын унадаг цэсийн хамгийн дээр «Бүх ангилал»-ыг тавьж буцах замтай болголоо

  • •Миний хуудсанд хуримтлуулсан оноо, дэлгүүрийн кредит, гишүүний зэрэглэл-ийг харуулна. Нэрийг тохируулсан утгаараа хэрэглэнэ
  • •Плагины виджет дэмжлэг — плагин widgets/ хавтас тавьвал цөмийн бүтээгч автоматаар таньна
  • •Шуудангийн кодоор хаяг хайх нийтлэг бүрэлдэхүүн — захиалгын хуудас болон гишүүний мэдээлэл ижил бүрэлдэхүүнийг ашиглана
  • •Админы дээд мөрийн мэдэгдлийн хонх
  • •Админы консолын цэсний бүлгийг цэгцэлсэн (config/intranet-modules.php)
  • •Виджет бүтээгчийн давтагдах талбар (repeater)-ыг дэмжинэ

Зассан зүйл

  • •Олон хэлний оруулах талбар анхны өгөгдлийг дарж бичдэг байсан асуудал
  • •Дэлгүүрийн кредитийн дэвтэрийн бүртгэлийн согог
  • •Түгээлтийн хувилбарын шинэчлэл хостингийн хуудсыг 404 болгодог байсан асуудал

Суулгасан хувилбарт шалгах зүйл

Хуучин түгээлтийн хувилбараар суулгаж, зөвхөн шинэчлэл авч ирсэн сайтад ашиглаагүй плагины хавтас үлддэг

(шинэчлэл плагины хавтсыг устгадаггүй). Админ → Плагин дотор суулгаагүй гэж харагдаж буйг

plugins/-оос хавтсаар нь устгаж болно.

v2.7.2 2026-07-26 · 3 сарын өмнө
Үйлчилгээний хүсэлтийн чиглүүлэлтийн цэгцлэлт (цөмийг дахин бүтээв)

Changed

  • •Үйлчилгээний хүсэлтийн URL-ийн нэгдсэн чиглүүлэлт — /service/hosting, /service/mail, /service/domain → /service/order руу 302-оор холбоно (тусгай хүсэлтийн хуудас бэлэн болтол нэгдсэн хүсэлтийн хуудас руу чиглүүлж, дараа нь тусгай хуудсаар солих боломжтой).

Notes

  • •2.7.1-ийн цөмийн засвар (олон хэлний hreflang, шинэчлэгчийн чимээгүй бүтэлгүйтлээс сэргийлэх, үнийн /pricing-ийг /service/order руу нэгтгэх) нь 2.7.1-ийн багцад аль хэдийн зөв орсон байсан. 2.7.2 нь түүний дээр үйлчилгээний хүсэлтийн чиглүүлэлтийн цэгцлэлтийг нэмсэн дахин бүтээлт юм.
  • •Түгээлтийн хувилбарт зарчмын хувьд зөвхөн цэвэр цөм орно (төлбөртэй болон босоо чиглэлийн плагинг хассан). Төв байрны сайтууд (voscms.com, thevos.jp) нь түгээлтийн хувилбарын өөрийн шинэчлэлтийн объект биш бөгөөд эх код/git-ээр түгээнэ.
v2.7.1 2026-07-25 · 3 сарын өмнө
Олон хэлний SEO hreflang · шинэчлэгчийн тогтвортой байдал · үнийн цэгцлэлт

SEO

  • •Олон хэлний hreflang — хуудас бүрийн өөрийгөө заасан canonical + дэмжигдсэн хэлний hreflang автоматаар үүсгэх, ?lang=xx-ээр хэл тус бүрээр индексжүүлэх, үндсэн хэлний ?lang-ийг энгийн URL руу 301-ээр хэвийн болгох, sitemap-ийг өргөтгөх.

Fixed

  • •Шинэчлэгчийн чимээгүй бүтэлгүйтлийг засав — цөмийн файл болон version.json бичихэд алдаа гарахыг онцгой тохиолдол болгон боловсруулна. Эрх дутуу зэргээс хэрэгжилт бүтэлгүйтэхэд «SUCCESS» гэсэн буруу мэдээллийн оронд тодорхой алдаа болон автомат буцаалт хийнэ.
  • •Үнийн хуудсанд олон хэлний талбарыг htmlspecialchars-д массив болгон дамжуулж 500 алдаагаар унадаг байсныг сэргийлэв.

Changed

  • •reCAPTCHA v3-ийг маягт тус бүрээр асаах унтраалгыг өргөтгөв (blog_comment гэх мэт).
  • •Тохиргооны «Эзэмшигчийн консолын мэдэгдэл» табыг vos-store идэвхтэй үед л харуулна.
  • •Үнийн хуудас /pricing-ийг /service/order руу нэгтгэв (301), «Системийн хязгааргүй» багц зөвхөн админд зориулагдсан.
v2.7.0 2026-06-27 · 4 сарын өмнө
Түгээлтийн хувилбарыг цэвэр цөм болгон нягтруулж + виджет, тохиргоог эрс бэхжүүллээ

Түгээлтийн бүрэлдэхүүн

  • •Түгээлтийн хувилбарыг цэвэр цөм болгон нягтруулав — цөмийн 3 плагин (vos-autoinstall, vos-community, vos-review)-ыг л хавсаргав. Босоо чиглэлийн (шөнийн бизнес / салон / POS) плагин, виджет, скин (story)-ыг бүгдийг нь хассан. Насны баталгаажуулалт, күүкины баннер зэрэг ерөнхий чадвар нь цөм (rzxlib)-д хамаарах тул орсон.

Added/Changed (цөмийн виджет)

  • •location-map — түлхүүргүй суулгацыг (map_embed) дэмжиж API түлхүүрээс хамаарахыг арилгаж, газрын зургийн хэлийг locale-той холбов
  • •practice-tabs (мэргэжлийн салбарын таб) — шинэ хавсаргасан виджет
  • •Нийтийн хуудасны өргөний тохиргоо (widget_page_width) — виджет/баримтын хуудасны өргөнийг нэгтгэнэ
Хавсаргаагүй (bundled:false) сайтад зориулсан виджет (hero-slideshow, overlap-cards, office-intro, page-hero, content-head, consult-cta, board-grid, clients-logos, самбарын профайл скин) нь цөмийн түгээлтийн хувилбарт ордоггүй.

Removed

  • •Урьдчилан төлсөн виджет (prepaid-charge, prepaid-pass, prepaid-purchase) — vos-prepaid хавсаргаагүй тул түгээлтээс хассан

Added (тохиргоо ба цөм)

  • •Насны баталгаажуулалтын хаалгыг цөмийн ерөнхий тохиргоо болгон дэвшүүлэв
  • •Күүки зөвшөөрлийн баннерын дэвсгэрийн тунгалагийг тохируулах
  • •Хэл тус бүрийн лого зураг
  • •Бизнесийн мэдээлэлд банкны дансны мэдээлэл + банкаар шилжүүлэх зөвлөмж
  • •Төлбөрийн дэлгэц дээр «Ашиглах боломжтой карт» зөвлөмж (брэндийн дүрс) + админы тохиргоо

Fixed

  • •Хуудасны гарчиг, дэд гарчгийг зочны хэлээр орчуулах (page-scoped db_trans), content_width хэрэгжихгүй байсныг засав
  • •Виджет/админ/хуудасны олон согогийг засаж 13 хэлийг бэхжүүлэв
v2.6.24 2026-06-02 · 5 сарын өмнө
Шинэчлэх үед orphan (устгасан эх файл)-ыг автоматаар цэвэрлэх

Added

  • •Хуучирсан файлыг автоматаар цэвэрлэх — бүрэн багцын zip-ээр дарж бичих шинэчлэл нь эхээс хассан файлыг устгаж чаддаггүй тул түгээлтийн хувилбарт үлдэгдэл (orphan) үлддэг байв (жишээ нь рефакторын үед салгаж устгасан нэгдмэл settings.php хуучин суулгацад үлдсэн). Үүнийг цэвэрлэх тодорхой жагсаалтад суурилсан механизм нэмсэн.
  • •config/obsolete-files.php — устгах замын хуримтлагдсан жагсаалт (хэд хэдэн хувилбар алгассан суулгацыг ч нэг дор цэвэрлэнэ).
  • •Шинэчлэгчийн applyUpdate()-ийн дараа шууд cleanupObsoleteFiles() нь жагсаалтын файлыг аюулгүйгээр unlink хийнэ. Хадгалах зорилт (.env, storage гэх мэт), замын гарц, хавтсанд хэзээ ч хүрэхгүй.
  • •Анх бүртгэсэн: resources/views/admin/settings.php.
v2.6.23 2026-06-02 · 5 сарын өмнө
Хяналтын самбарын «Системийн тохиргоо» холбоосыг залруулав

Fixed

  • •Хяналтын самбарын «Системийн тохиргоо» холбоос — түргэн үйлдлийн холбоос нь салгаж устгасан хуучин зам /settings-ийг зааж, буруу (нөөц) хуудас руу шилждэг байв. Тохиргооны үндсэн орц /settings/general руу залруулав. (2.6.22 бүтээлтийн дараа орхигдсон хэсэг)
v2.6.22 2026-06-02 · 5 сарын өмнө
Миграци ажиллуулах үеийн CSRF болон бүртгэлийн согогийг засав

Fixed

  • •Хяналтын самбарын «DB миграци шаардлагатай» баннер — CSRF token invalid — дахин оролдох товч /update-api.php (run_migrations)-д CSRF токен илгээдэггүй тул 419-өөр татгалзагддаг байв. $_SESSION['csrf_token']-ийг баталгаажуулж, толгой болон биед хоёуланд нь илгээдэг болгов.
  • •Миграци ажиллуулсан ч баннер алга болдоггүй — DatabaseMigrator::recordMigration нь batch багана болон patch_ угтвар гэж таамагласан тул суулгацын төрлийн схем (migration/version/executed_at) дээр бүртгэлийн INSERT бүтэлгүйтэж, угтвараас болоод файлын нэр тулгах нь ч зөрдөг байв. Бодит баганад тохируулан файлын нэрийг хэвээр нь бүртгэдэг болгов. (2.6.20 шинэчлэлтийн үед миграци зөвхөн «OK» лог үлдээж хэрэгжээгүй байсны шалтгаан)
v2.6.21 2026-06-02 · 5 сарын өмнө
Суулгаагүй интранет модулийн замд түүхий lang түлхүүр харагддаг байсныг засав

Fixed

  • •Админы эрхийн удирдлага зэрэг цөмийн хуудасны sidebar дахь түүхий түлхүүр — config/intranet-modules.php-ийн route_prefixes-ээр л интранет layout-ыг идэвхжүүлдэг байсан тул холбогдох плагингүй сайтад (жишээ нь vos-salon суулгаагүй) цөмийн хуудас /staff/admins нь salon интранетийн sidebar-аар зурагдаж, salon.intranet., salon.section. түлхүүр түүхийгээрээ харагддаг байсныг засав.
  • •Нийтлэг туслах resolve_intranet_module()-ийг нэмсэн — модулийн lang нөөц (плагин) бодитоор суусан тохиолдолд л интранетийг идэвхжүүлж, суугаагүй бол цөмийн admin-sidebar руу буцна.
  • •_head.php / admin-sidebar.php-д давхардаж байсан илрүүлэх логикийг туслах функцэд нэгтгэсэн. Плагин суусан сайт (salon, store гэх мэт)-ийн ажиллагаа өөрчлөгдөхгүй.
v2.6.20 2026-06-02 · 5 сарын өмнө
Оноо/түвшин/бүлгийн схемийн нэгдсэн байдал (түвшин хадгалах алдаа шийдэгдсэн)

Fixed

  • •Оноон түвшин хадгалах алдаа — админы оноо модульд түвшинг хадгалахдаа Unknown column 'group_id' алдаагаар бүтэлгүйтдэг байсныг засав. Шалтгаан нь core/004 болон migrations/019(v190)-ийн point_levels/member_points схемийн зөрчил (019-ийн CREATE TABLE IF NOT EXISTS нь одоо байгаа хүснэгтэд шинэ багана нэмж чаддаггүй).
  • •migration 034_point_system_schema_reconcile (дээд түвшин, шинэчлэх үед автоматаар хэрэгжинэ):
  • •point_levels — group_id нэмж, name-д анхдагч утга өгч, level-д өвөрмөц индекс (upsert ажиллахын тулд).
  • •member_points — point/balance/total_accumulated/level нэмсэн.
  • •Бүгд additive (өгөгдөл алдагдахгүй), одоо байгаа багана болон ашиглагч талд (vos-prepaid гэх мэт) нөлөөгүй.
v2.6.19 2026-06-01 · 5 сарын өмнө
Урьдчилан төлсөн худалдан авалтын 3 виджет + барааны олон хэл, зураг + виджет бүтээгчийн палитрын өндрийн засвар

Added

  • •Худалдан авалтын 3 виджет — нэгдсэн (prepaid-purchase, харуулах зүйл бүгд/зөвхөн цэнэглэлт/зөвхөн эрхийн тасалбар сонгох) + зөвхөн цэнэглэлтийн (prepaid-charge) + зөвхөн эрхийн тасалбарын (prepaid-pass). Нийтлэг бүрэлдэхүүн purchase-widget.php ганц хувиар 3 виджетийг ажиллуулж (давхардал 0), $ppOnly шүүлтүүрээр салаална.
  • •Барааны дэвсгэр зураг — админы бараа нэмэх/засах modal-д чирж тавьж (товшиж ч) байршуулах боломж нэмж, Миний хуудас болон виджетийн картад дэвсгэрийг хэрэгжүүлнэ. migration 003 image_url.
  • •Барааны нэрийг олон хэлээр оруулах + AI орчуулга — нийтлэг multilang-modal-ыг дахин ашиглаж (дэлхийн дүрсний товч), rzx_translations дээр суурилан хадгалж, prepaid_name()-аар зочны хэлээр харуулна. AI орчуулга нь цөмийн /api/translations endpoint-ыг дахин ашиглана.
  • •Төлбөрийн маягтад картын эзэмшигчийн нэр оруулах талбар нэмсэн (PAY.jp-ийн createToken-д дамжуулна).
  • •Гар цэнэглэлтийн үед үйлчлүүлэгч сонгох — user_id-г шууд оруулдаг байснаас нэр/утас/имэйлээр хайх автоматаар нөхөх болгов (customer_search үйлдэл). Үйлчлүүлэгчийн байдлын жагсаалт ч user_id хэшийн оронд үйлчлүүлэгчийн нэр + имэйлийг харуулна.
  • •Идэвхжүүлэх унтраалга — барааны идэвхтэй чагтыг унтраалга болгов.

Changed

  • •Худалдан авалтын хайрцгийг 4 баганатай болгов — барааны картын тор 2→3→4 хариу үйлдэлтэй (lg:grid-cols-4), виджетийн өргөний max-w-3xl тогтмолыг хассан → байршуулах хэсгийн өргөнд тохируулна.

Fixed

  • •Виджет бүтээгчийн палитр, мега цэсний өндөр — бүтээгчийн мөрийн өндрийг calc(100vh - 88px) болгон тогтоож, зүүн талын ангилал болон flyout дэлгэцийн өндрөөр автоматаар эзэлж, мега цэсний зүйлс давхцахыг шийдлээ.
v2.6.18 2026-05-31 · 5 сарын өмнө
Зарлал илгээх маягтын URL шалгалт + ээлтэй оруулалтын UX

Added

  • •api/broadcast.php-ийн link шалгалт — схем дутуу бол https://-ийг эхэнд нь автоматаар залгана (example.com → https://example.com), filter_var FILTER_VALIDATE_URL-ийг давахгүй бол 400 + field: 'link' алдаа буцаана, 500 тэмдэгтээс хэтэрвэл татгалзана.
  • •Клиент талын бодит цагийн шалгалт — type="url", inputmode="url", оруулмагц:
  • •Схем дутуу → emerald гадна хүрээ + ✓ + «Илгээхэд автоматаар нөхнө: …» гэсэн зөвлөмж
  • •Хостод цэг (.) байхгүй эсвэл хэлбэр эвдэрсэн → red гадна хүрээ + ⚠ + «URL-ийн зөв хэлбэр биш байна»
  • •Хэвийн → emerald гадна хүрээ + ✓ + «Хүчинтэй URL байна»
  • •Клиент нь ч нөхсөний дараа илгээнэ → урьдчилан харалт болон бодит илгээсэн үндсэн текст таарахыг баталгаажуулна.

Added

  • •Хэсгийн гарчиг: ✉ Мессеж бичих / 📡 Илгээх суваг — харааны бүлэглэл + тайлбар.
  • •Тэмдэгтийн тоолуур (гарчиг 0/255, үндсэн текст 0/2000) — 70%-иас дээш бол amber, 90%-иас дээш бол red автоматаар өнгө солино.
  • •Мессежийн урьдчилан харах хайрцаг (цэгэн хүрээ) — гарчиг, үндсэн текст, холбоосыг нэгтгэвэл LINE-д хэрхэн харагдахыг бодит цагт зурна + нийт тэмдэгтийн тоолуур n/5000 (4500-аас хэтэрвэл red).
  • •Талбар бүрийн helper text:
  • •Гарчиг: «Гишүүний мессежийн хайрцаг болон LINE мэдэгдэлд зэрэг харагдана»
  • •Үндсэн текст: «Үндсэн текстэд URL бичвэл автоматаар богиносгож + товшилтыг мөрдөнө»
  • •Холбоос: «Үндсэн текстийн төгсгөлд нэг мөр завсарлаад автоматаар нэмнэ. Үндсэн текстэд бас бичвэл хоёр удаа харагдах тул анхаараарай»
  • •Холбоосын input-ийн баруун талын төлөвийн дүрс (absolute) — ✓ / ⚠ шууд харуулна.

Added

🔗 URL шалгалтын дүрэм (5 дахь хэсгийг шинээр нэмсэн):

  • •http:// / https://-оор эхлэх шаардлагатай → товшилт мөрдөх токен болгоно
  • •Схем дутуу бол автоматаар нөхнө
  • •Хостод цэггүй эсвэл хэлбэр эвдэрсэнийг татгалзана
  • •500 тэмдэгтийн хязгаар
  • •Жишээний хайрцаг: ✓ https://voscms.com/event / ✓ example.com/page → автоматаар нөхсөн / ✗ asdfasdf (хостод цэггүй)

Notes

  • •Бодит сайт (voscms-com) болон salon-ын синк дууссан. API/UI/i18n бүгд шууд хэрэгжинэ.
  • •13 хэлний i18n: community.broadcast.guide_url_, section_message, section_channels*, subject_hint, body_hint, link_hint, link_{invalid,autofixed,valid}, preview_{title,empty}.
v2.6.17 2026-05-30 · 5 сарын өмнө
Зарлал илгээх хуудасны баруун талд товлосон илгээлтийн зааврын хайрцаг

Added

  • •/theadmin/community/broadcast байршлын өөрчлөлт — өмнөх нэг картыг lg:grid-cols-3-аар хуваав. Үндсэн илгээлтийн маягт зүүн 2 багана (lg:col-span-2), баруун 1 баганад зааврын хайрцгийг шинээр нэмсэн (<aside>, sticky top-4).
  • •6 хэсэгтэй зааврын агуулга:

1. 📅 Товлосон илгээлт гэж юу вэ? — ирээдүйн цагт автоматаар илгээх, шөнө/амралтын өдөр/арга хэмжээнд ашиглах

2. 🛠 Хэрэглэх арга — 4 алхам (хүлээн авагч сонгох → LINE чагтлах → товлолт чагтлах → илгээх), дугаарласан тэмдэгтэй UI

3. ⏱ Илгээлтийн нарийвчлал — 5 минутын давтамжтай cron-ийн тайлбар + жишээ хайрцаг (10:00 → 10:00~10:05)

4. 🆚 Шууд ба товлосон харьцуулалт — хоёр горимын ажиллагааны ялгааг карт хэлбэрээр

5. 📋 Дараалалд хүлээж буйг шалгах — /history?status=queued руу очих товчлол товч

6. ⚠ Анхаарах зүйл — 30 секундээс дээш ирээдүйд байх, апп доторх/push-ыг товлох боломжгүй, cron-гүй хостингод ажиллахгүй, UI-аас цуцлахыг дэмжихгүй

  • •Индиго градиент дэвсгэр (from-indigo-50 to-blue-50) — зааврын хайрцаг үндсэн картаас харагдахуйц ялгарахын зэрэгцээ зөөлөн зохицно.
  • •13 хэлний i18n — community.broadcast.guide_* түлхүүр ойролцоогоор 20 (ko/en/ja/de/es/fr/id/mn/ru/tr/vi/zh_CN/zh_TW).
v2.6.16 2026-05-30 · 5 сарын өмнө
Миний хуудасны locale тохиргооны UI + илгээлтийн түүхийн нэгтгэл карт (CTR/variant/locale)

Added

  • •/mypage/settings-д «Сонгосон хэл» карт нэмсэн — 14 сонголттой select (автомат/13 хэл). Хадгалахад rzx_users.locale-ийг UPDATE хийж, $_SESSION['locale']-д шууд тусгана.
  • •Auth::loginUser hook — нэвтрэхэд $user['locale'] байгаа бөгөөд сессийн locale хоосон бол автоматаар бөглөнө. Хэрэглэгч сессийн үед гараар өөрчилсөн бол тэр утгыг түрүүлж хадгална.
  • •13 хэлний i18n — auth.settings.language.{title,description,label,auto,hint,save,success,error_invalid,error_save} (ko/en/ja/de/es/fr/id/mn/ru/tr/vi/zh_CN/zh_TW).
  • •Өөрчилсний дараа дараагийн хуудаснаас UI гишүүний хэлээр харагдах бөгөөд админ автомат илгээлтийн дүрэмд messages_by_locale тохируулсан бол тэр гишүүнд таарсан үндсэн текстийг LINE-аар илгээнэ.

Added

/theadmin/community/broadcast/history-ийн дээд хэсэгт 3 карт шинээр нэмсэн (одоо байгаа 4 картын дараа):

1. Нийт товшилтын хувь (CTR) — SUM(rzx_broadcast_clicks.click_count) / SUM(rzx_line_broadcasts.recipient_count WHERE status='sent') × 100. Том үсэгтэй emerald.

2. A/B тест (сүүлийн 30 хоног) — variant IS NOT NULL илгээлтэд variant тус бүрийн хүлээн авагч, товшилт, CTR-ийг нэгтгэнэ. CTR өндөр variant-ыг emerald-ээр онцолно.

3. locale-ээр хуваарилалт (сүүлийн 30 хоног) — зөвхөн source='auto_rule' AND messages_by_locale IS NOT NULL илгээлтэд дүрмийн messages_by_locale JSON-ийн түлхүүр болон broadcast үндсэн текстийн эхний 30 тэмдэгтийг харьцуулж locale тулгана → locale тус бүрийн хүлээн авагч/товшилт/CTR. ksort-оор эрэмбэлнэ.

  • •13 хэлний i18n: community.broadcast.stat_{ctr_title,ctr_breakdown,variant_title,variant_hint,locale_title,locale_hint,empty}.

Notes

  • •voscms-com болон salon-ын модны синк дууссан. Шинэ DB багана байхгүй (Step 4-ийн migration 008/009/010-д бүгд аль хэдийн орсон).
  • •locale тулгах логик нь үндсэн текстийн эхний 30 тэмдэгтийг харьцуулна — хувьсагч солисны дараах үндсэн текст таарвал ижил locale бүлэгт тоолно. Үндсэн текст хэт богино эсвэл хувьсагч солилтоор бүтнээрээ дүүрдэг бол тулгалтын хувь буурч болно (цаашид broadcast мөрөнд locale баганыг шууд нэмж болно).
v2.6.15 2026-05-30 · 5 сарын өмнө
Олон хэлний чиглүүлэлт (Step 4-C) + LINE автомат илгээлтийн 4 шат дууслаа

Added

  • •migration 010 — rzx_auto_broadcast_rules.messages_by_locale JSON NULL + rzx_users.locale VARCHAR(10) NULL + idx_locale индекс.
  • •AutoBroadcaster::lineUserIdsWithLocale — LINE userId болон гишүүний locale хосыг лавлана. users.locale багана байхгүй орчин lineUserIds руу буцна.
  • •AutoBroadcaster::pickLocaleMessage — эрэмбэ: гишүүний user.locale → сайтын үндсэн locale (rzx_settings.locale) → JSON-ийн эхний түлхүүр (бүгд алдвал null → A үндсэн текст рүү буцна).
  • •AutoBroadcaster::fire — messages_by_locale байвал гишүүн бүрийн locale-д таарсан үндсэн текстийг ашиглана, байхгүй бол A/B variant, тэр ч байхгүй бол ганц A. locale, variant, default нь ижил үндсэн текст өгвөл нэг бүлэг болгон multicast хийнэ (үр ашиг).
  • •Админы дүрмийн modal — <details>-ийг дэлгэж «Олон хэлний чиглүүлэлт идэвхтэй» болон JSON-ийг шууд оруулна. pretty-print-ээр харуулна. invalid_locale_json шалгалт.
  • •13 хэлний i18n — community.automation.locale_{toggle,placeholder,hint} + fields.messages_by_locale + error.invalid_locale_json (ko/en/ja/de/es/fr/id/mn/ru/tr/vi/zh_CN/zh_TW).

Notes

  • •Step 1~4 LINE илгээлтийн дэд бүтэц дууслаа (2.6.9~2.6.15):

1. Step 1 — CTA · utility stack · гар илгээлт · зэрэглэлээр audience · олон сонголт (7872c4b, 7c94a55, c4a3325)

2. Step 2 — Гишүүний бүлгийн автомат ангилал (b24979c)

3. Step 3 — Үйл явдлын автомат илгээлтийн дүрэм (60d47cd) + товлосон илгээлтийн cron (8cf02ad)

4. Step 4 — Товшилт мөрдөх (79c99a84) + A/B тест (86e19b0b) + олон хэлний чиглүүлэлт (энэ удаа)

  • •Бодит сайт (voscms.com)-д migration 010-ыг хэрэгжүүлсэн. users.locale нь шинэ багана — одоо байгаа бүх гишүүн NULL (сайтын үндсэн locale-ийг ашиглана → өмнөхтэй ижил ажиллагаа).
  • •Гишүүн өөрийн сонгосон locale-ийг шууд тохируулдаг Миний хуудасны UI нь дараагийн чухал үе шат.
  • •cron бүртгэхийг зөвлөнө: /5 /usr/bin/php8.3 /var/www/voscms-com/scripts/process-scheduled-broadcasts.php, 0 3 /usr/bin/php8.3 /var/www/voscms-com/scripts/recalculate-member-grades.php.
v2.6.14 2026-05-30 · 5 сарын өмнө
A/B тест (Step 4-B)

Added

  • •migration 009 — rzx_auto_broadcast_rules.message_template_b TEXT NULL, rzx_line_broadcasts.variant CHAR(1) NULL, rzx_broadcast_clicks.variant CHAR(1) NULL + индекс (source_rule_id, variant).
  • •AutoBroadcaster::fire — message_template_b хоосон биш бол LINE userId-г crc32 mod 2-оор A/B гэж 50:50 хуваана. variant бүрийн илгээлтийн түүхийг урьдчилан INSERT хийнэ (logQueued) → токен wrap → multicast → finalize. Ижил хэрэглэгч давтан илгээлтэд үргэлж ижил variant хүлээн авна (хэшийн тогтвортой байдал).
  • •Админы дүрмийн modal — <details>-ийг дэлгэж «A/B тест идэвхтэй» сонголт болон variant B оруулалт. Энгийн ганц илгээлт нь үндсэн, A/B нь тодорхой сонгож асаадаг.
  • •ClickTracker — variant мета мэдээллийг дамжуулна. broadcast_clicks.variant багана байвал INSERT үед бөглөнө. Байхгүй бол нөөц арга (migration 009 хэрэгжээгүй орчинтой нийцнэ).
  • •logQueued-ийн нөөц арга — variant багана байхгүй орчинд (migration 009 хэрэгжээгүй үед) ч ажиллана.
  • •13 хэлний i18n — community.automation.ab_{toggle,placeholder,hint} (ko/en/ja/de/es/fr/id/mn/ru/tr/vi/zh_CN/zh_TW).

Notes

  • •Бодит сайт (voscms.com)-д migration 009-ийн 3 ALTER-ийг тусад нь ажиллуулсан. Одоо байгаа дүрмийн message_template_b=NULL (ганц илгээлтийн ажиллагааг хадгална).
  • •Дүрэм засах → «A/B тест идэвхтэй» дэлгэц дээр variant B оруулах → зөвхөн хадгалахад дараагийн үйл явдлаас автоматаар A/B хуваарилна.
v2.6.13 2026-05-30 · 5 сарын өмнө
Илгээсэн URL-ийн товшилт мөрдөх (Step 4-A)

Added

  • •migration 008 (rzx_broadcast_clicks) — token (8 тэмдэгт base62, UNIQUE), broadcast_id, source_rule_id, original_url (2048), click_count, last_clicked_at, last_user_agent. Ижил (broadcast_id, original_url) хослолд токеныг дахин ашиглана.
  • •ClickTracker анги — wrap($pdo, $siteId, $body, $meta) нь үндсэн текстээс http/https URL-ийг тогтмол илэрхийллээр гарган авна → INSERT эсвэл дахин ашиглах → /t/{token}-оор солино. consume($pdo, $token, $ua) нь токеныг эх URL болгож, click_count-ийг нэмэгдүүлнэ.
  • •Зам /t/{token} (index.php:330) — тогтмол илэрхийллийн чиглүүлэгчид орно. ClickTracker::consume → эх URL руу 302 дахин чиглүүлнэ, байхгүй бол 404. URL токены шалгалт ([A-Za-z0-9]{4,16}).
  • •Автомат илгээлтийн дүрэмтэй нэгтгэсэн — AutoBroadcaster::fire() нь илгээхийн өмнө шууд logQueued → broadcast_id авах → ClickTracker::wrap → multicast → finalizeBroadcast дарааллаар ажиллана. Токен ↔ broadcast_id холбоосыг баталгаажуулна.
  • •Гар илгээлттэй нэгтгэсэн — api/broadcast.php-д шууд илгээх текстийг нэгтгэсний дараа шууд wrap хийнэ. scripts/process-scheduled-broadcasts.php-ийн дарааллаас илгээхийн өмнө мөн wrap хийнэ (broadcast_id мэдэгдэнэ).
  • •Мөрдөх домэйны тохиргоо — rzx_settings.click_track_domain-ийг эхэлж, байхгүй бол APP_URL. Богино домэйн (жишээ нь s.voscms.com) боломжтой.

Notes

  • •Бодит сайт (voscms.com)-д 008 миграцийг хэрэгжүүлсэн.
  • •wrap/consume нэгдсэн тест: үндсэн текст дэх 2 URL → 8 тэмдэгттэй 2 токен INSERT → consume дуудахад эх URL буцаж, click_count хэвийн нэмэгдсэн.
v2.6.12 2026-05-30 · 5 сарын өмнө
LINE илгээлт товлох + cron дараалал боловсруулах (Step 3-B)

Added

  • •migration 007 (rzx_line_broadcasts): scheduled_at DATETIME NULL, processed_at DATETIME NULL багана + (status, scheduled_at) индекс. scheduled_at NULL = шууд илгээх (өмнөх шигээ), ирээдүйн цаг = дараалалд оруулах.
  • •scripts/process-scheduled-broadcasts.php — cron-ийн орох цэг. status='queued' AND scheduled_at <= NOW() AND processed_at IS NULL нөхцөлтэй 50 зүйлийг авна → processed_at = NOW()-аар шууд түгжинэ (гүйлгээ) → audience тайлна (all / grade_N, broadcast.php-тэй ижил) → LineMessenger multicast-ыг 500 хүнээр → үр дүнгээр status шинэчилнэ. cron-ийн санал болгох давтамж: /5 *.
  • •broadcast.php UI: [Илгээлт товлох] чагт + datetime-local оруулалт. Чагтлахад анхдагч утга нь одоогийн цаг + 1 цаг (хэрэглэгчийн орон нутгийн цаг). Чагтлаагүй эсвэл хоосон бол өмнөх шигээ шууд илгээнэ. Зөвхөн LINE сувгийг товлож болно (апп доторх болон push шууд хэвээр).
  • •api/broadcast.php: scheduled_at POST параметрийг боловсруулна. Ирээдүйн цаг (> NOW + 30s) бөгөөд send_line үед LINE API дуудахгүйгээр rzx_line_broadcasts (status='queued', scheduled_at)-ийг л INSERT хийж, хариунд scheduled: true, scheduled_at буцаана.
  • •13 хэлний i18n: community.broadcast.schedule_{label,enable,hint,success} (ko/en/ja/de/es/fr/id/mn/ru/tr/vi/zh_CN/zh_TW).

Fixed

  • •rzx_line_broadcasts-ийн бодит схемд (title, body, audience varchar(20), recipient_count, status enum(queued|sent|failed)) тохируулан INSERT-ийн баганыг засав. Өмнө нь байхгүй баганын нэрээр (message_text, recipients_count, sent_count, failed_count, audience_value, partial) INSERT хийхийг оролдож, нөөц арга ч бүтэлгүйтсэнээс автомат илгээлтийн түүх дутаж байсан.

Notes

  • •Бодит сайт (voscms.com)-д 007 миграцийг хэрэгжүүлсэн. dry-run-аар pickup 0 зүйл байгааг баталгаажуулсан.
  • •Бодит сайт (voscms-com) болон salon-ын модны синк дууссан. .env-г хассан.
  • •cron бүртгэх нь хостингийн ажиллагааны талын шийдвэр (шаардлагатай бол /5 * /usr/bin/php8.3 /var/www/voscms-com/scripts/process-scheduled-broadcasts.php).
v2.6.11 2026-05-30 · 5 сарын өмнө
Үйл явдалд суурилсан LINE автомат илгээлтийн дүрэм (Step 3-A)

Added

  • •Автомат илгээлтийн дүрмийн хүснэгт (rzx_auto_broadcast_rules) — migration 005_auto_broadcast_rules.sql. Дүрмийг site_id тус бүрээр тусгаарласан бөгөөд trigger_type / trigger_filter (JSON) / audience (all|grade_X|custom) / message_template / is_enabled / fired_count / last_fired_at баганатай.
  • •AutoBroadcaster диспетчер (rzxlib/Core/Notification/AutoBroadcaster.php) — статик орох цэг AutoBroadcaster::fire($triggerType, $ctx). Идэвхтэй дүрэмтэй тулгах → загварын хувьсагчийг солих ({{title}}, {{url}}, {{author}}, {{board_name}}, {{site_name}}) → audience тайлах (broadcast.php-тэй ижил логик; is_default зэрэглэлд NULL гишүүдийг автоматаар оруулна) → rzx_user_social_accounts-аар LINE userId лавлах → 500 хүнээр multicast → rzx_line_broadcasts-д түүх бичих → дүрмийн статистикийг шинэчлэх.
  • •Самбарт шинэ нийтлэл гарахад автоматаар илгээх hook (api-posts.php:184) — нийтлэлийг INSERT хийсний дараа шууд (хувийн нийтлэлийг хасаад) AutoBroadcaster::fire('board_post', [post_id, board_id, title, url, author, board_name])-ийг дуудна. Илгээлт бүтэлгүйтсэн ч нийтлэлийн хариуд нөлөөлөхгүй.
  • •Админы дүрэм удирдах хуудас (/theadmin/community/automation) — картын торон UI. Дүрмийн CRUD + асаах/унтраах унтраалга + триггер тус бүрийн өнгөт тэмдэг (board_post=blue, review_created=amber, reservation_created=green). Триггер / шүүлтүүр (JSON) / зорилтот зэрэглэл / мессежийн загварыг modal дотор засна.
  • •rzx_line_broadcasts-ийн гарал үүслийг мөрдөх багана — migration 006_line_broadcasts_add_source.sql. source ('manual' | 'auto_rule') + source_rule_id (INT) + индекс. Автомат илгээлтийн түүхийг гар илгээлтээс нэг хүснэгтэд ялгаж харж болно.
  • •plugin.json-д зам болон миграци бүртгэсэн — community/automation зам, 003-ын дараа 004/005/006 миграцийг тодорхой заасан.
  • •13 хэлний i18n — community.automation.* түлхүүр бүгд (ko/en/ja/de/es/fr/id/mn/ru/tr/vi/zh_CN/zh_TW). Триггерийн шошго, талбар, зөвлөмж, амжилт/алдааны мессеж, үндсэн загвар.

Notes

  • •Бодит сайт (voscms.com)-д 005/006 миграцийг хэрэгжүүлсэн. Дүрэм хараахан бүртгэгдээгүй.
  • •Бодит сайт (voscms-com) болон salon-ын модны синк дууссан. .env-г хассан.
  • •Step 3-B (товлосон илгээлт scheduled_at + cron) нь дараагийн чухал үе шат.
v2.6.10 2026-05-30 · 5 сарын өмнө
Гишүүний зэрэглэлийн автомат ангилал + бүртгэхэд default зэрэглэл + админ дахин тооцоолох товч

Added

  • •Бүртгэхэд default зэрэглэлийг автоматаар оноох (rzxlib/Core/Auth/Auth.php::register()) — гишүүнээр бүртгүүлсэн даруйд rzx_member_grades-аас is_default=1 зэрэглэлийг лавлаж, шинэ гишүүний grade_id-г шууд бөглөнө. member_grades хүснэгтгүй сайтад (хуучин буюу тохируулаагүй) try-catch-аар чимээгүй алгасна. Одоо байгаа NULL гишүүдийг тусдаа дахин тооцоолох скрипт эсвэл товчоор бөглөнө.
  • •CLI зэрэглэл дахин тооцоолох скрипт (scripts/recalculate-member-grades.php) — rzx_payments-ийн төлбөрийн нийлбэр + rzx_reservations-ийн захиалгын тоо (хүснэгт байгаа үед л)-г үндэслэн sort_order DESC дарааллаар шалгаж, хангаж болох хамгийн өндөр зэрэглэлд оноодог. Дүрэм тохируулаагүй зэрэглэл (min_spent=0 AND min_reservations=0)-ийг автоматаар алгасна — тодорхой дүрэмтэй зэрэглэл л дэвших нэр дэвшигч болно. Нөхцөл хангаагүй гишүүн default руу буцна.
  • •Сонголт: --dry-run (бодитоор UPDATE хийхгүй загварчлал), --user-id=UUID (тодорхой гишүүнийг л).
  • •cron-ийн жишээ: 0 3 * /usr/bin/php8.3 /var/www/voscms/scripts/recalculate-member-grades.php
  • •Админы «Одоо дахин тооцоолох» товч (/theadmin/members/groups) — үйлдлийн мөрөнд маргад өнгөтэй товч нэмсэн. Дарахад баталгаажуулах modal → AJAX action=recalculate_grades → үр дүн (зорилт/дэвшсэн/буурсан/шинэ)-ийн мэдэгдэл → автоматаар дахин ачаална. Скриптийн адил логикийг inline-аар агуулсан тул PHP CLI эрхгүй орчинд ч ажиллана.
  • •13 хэлний i18n — members.groups.recalculate* түлхүүрүүдийг шинээр нэмсэн (ko/en/ja/de/es/fr/id/mn/ru/tr/vi/zh_CN/zh_TW): recalculate, recalculate_hint, confirm_recalculate, recalculate_stat.{total,upgraded,downgraded,fallback}, success.recalculated, error.{no_grades,no_default_grade}.

Notes

  • •Бодит сайт (voscms.com) дээр --dry-run → бодит ажиллуулалт → дүрэм сайжруулсны дараах дахин ажиллуулалтыг баталгаажуулсан. grade_id NULL байсан 5 гишүүн бүгд Normal (default)-д зөв оноогдсон. VIP/Gold/Silver нь дүрэм тохируулаагүй тул дүрэм нэмэх хүртэл 0 гишүүнтэй хэвээр байна (зорилготой).
  • •Бодит сайт (voscms-com) болон salon-ын модны синк дууссан. .env-г хассан.
v2.6.9 2026-05-30 · 5 сарын өмнө
LINE найз нэмэх CTA + нэгдсэн Utility Stack + LINE зарлал илгээх

Added

  • •Гишүүдэд зориулсан LINE найз нэмэх CTA бүрэлдэхүүн (resources/views/components/line-friend-cta.php) — 5 variant (card / button / bar / side-tab / bubble) × 6 байрлал (bottom-right/bottom-left/bottom-center/top-right/middle-right/middle-left) × 3 хэмжээ, хэрэглэгчийн сонгосон өнгө, харуулах саатал, 24 цагийн турш «хаасныг санах» (localStorage).
  • •Өөрчилж болох тохиргооны UI — /theadmin/settings/message-api дахь LINE сувгийн картын доод хэсэгт «LINE найз нэмэх CTA» хэсгийг шинээр нэмсэн. Basic ID, идэвхжүүлэх унтраалга, variant радио, position сонголт, хэмжээ, өнгө сонгогч, delay оруулалт.
  • •5 байршилд автоматаар харагдана — skins/layouts/{default,modern,minimal,modern-copy-260413}/footer.php-оос автоматаар include хийгдэнэ. Төлбөр, үйлчилгээний хүсэлт, суулгалтын урсгалын хуудсанд автоматаар алгасна.

Added

  • •Шинэ бүрэлдэхүүн resources/views/components/utility-floating-stack.php — thevos.jp-ийн cameron_plugin дизайны хэв маяг (баруун ирмэгт 80×80 дөрвөлжин stack + 1px зай + дүрс бүрийн онцлох өнгө). Байршил, хэмжээ, өнгийг оператор тохируулна.
  • •Хоёр горим зэрэгцэн оршино — utility_stack_mode = separate (үндсэн, CTA тус бүр дангаараа) / unified (PWA + LINE-ийг багцалж нэг stack болгон харуулна). Нэгдсэн горимд LINE CTA-ийн 5 variant-ыг автоматаар харуулахыг идэвхгүй болгож, PWA суулгах modal-ын автомат триггерүүд (setTimeout/DOMContentLoaded баннер)-ийг мөн идэвхгүй болгоно; modal нь зөвхөн stack доторх PWA дүрсийг дарахад нээгдэнэ.
  • •Ирээдүйд байгалийн жамаар өргөтгөх — зүйл бүртгэх хэв маягаар (Kakao суваг, WhatsApp, мэдээллийн товхимолд бүртгүүлэх, харанхуй горим унтраалга гэх мэт) тохиргооны түлхүүр нэмэхэд л stack-д нэгдэж болно.
  • •Автомат мөр таслалтыг баталгаажуулна — inline CSS word-break: break-all; overflow-wrap: anywhere; max-width: 72px нь Tailwind flex хүүхдийн өргөний хязгаарыг тойрно. CJK шошго ч хайрцаг дотор байгалийн жамаар мөр таслагдана.
  • •13 хэлний i18n — resources/lang/{13 locale}/messaging.php-д line_cta. бүлэг (22 түлхүүр) болон utility_stack. бүлэг (12 түлхүүр). Япон, хятад хэлэнд утгын нэгжийн хоосон зай («アプリとして インストール» гэх мэт)-аар мөр таслах байрлалыг байгалийн жамаар баталгаажууллаа.

Added

  • •LineMessenger::broadcast(messages) + broadcastText(text) — бүх найзад нэгэн зэрэг илгээнэ (дээд тал нь 5 мессежийн объект; LINE-ийн илгээлтийн хязгаараас хүлээн авагчийн тоо × мессежийн тоогоор хасагдана).
  • •LineMessenger::multicast(userIds[], messages) — заасан дээд тал нь 500 userId руу илгээнэ (бүлгээр илгээх дэд бүтэц).
  • •/theadmin/community/broadcast UI-г сайжруулсан — «LINE найзуудад бас илгээх» чагтыг (ногоон баннер) нэмсэн. Push илгээлтээс үл хамааран LINE найзуудад multicast/broadcast-аар автоматаар илгээнэ.
  • •Гишүүний зэрэглэлээр илгээх — rzx_member_grades-ийг динамикаар ачаалж, зэрэглэл тус бүрийн радио сонголтыг автоматаар харуулна (өнгөт цэг + slug + бодит цагийн тоо). audience нь grade_<id> хэлбэртэй.
  • •is_default=1 зэрэглэлд grade_id IS NULL гишүүдийг автоматаар оруулна — бүртгэхэд зэрэглэл автоматаар оноодоггүй сайтад ч default зэрэглэлийн тоо, илгээлтэд NULL гишүүд байгалийн жамаар багтана.
  • •rzx_line_broadcasts илгээлтийн түүхийн хүснэгт — site_id тусгаарлалт, method (broadcast/multicast), audience, title/body, recipient_count, line_request_id, api_status/error, status. Илгээхэд автоматаар INSERT хийгдэнэ.
  • •audience=all үед broadcast, бусад үед multicast-ыг автоматаар сонгоно — зорилтот хэрэглэгчдээс user_social_accounts.line_friend=1 бүхий LINE userId-г цуглуулж, 500-аар хэсэглэн илгээнэ.
  • •Өргөнийг нэгтгэв — broadcast.php-д max-w-3xl → max-w-7xl (бусад админ хуудастай тохирно).
  • •13 хэлний i18n — send_line_label/desc, audience_grade_group түлхүүрүүдийг нэмсэн.

Changed

  • •resources/views/admin/dashboard.php — толгойн тайлбар / pageTitle-ийн нөөц / RezlyX v... шинэчлэлтийн мэдэгдлийн баннерыг бүгдийг «VosCMS» болгон засав.
  • •resources/views/admin/partials/admin-topbar.php — толгойн тайлбарыг засав.

Fixed

  • •storage/.update_cache хуучин current: "2.6.4" кэш хадгалж байсан тул v2.6.8 руу шинэчлэгдсэний дараа ч хяналтын самбарт «Шинэ шинэчлэл бий» баннер гарсаар байв — кэшийг устгасны дараа дараагийн хүсэлтэд автоматаар дахин тооцоолно.
  • •dev → бодит сайтын хуримтлагдсан өөрчлөлт синк хийгдээгүй байв — энэ сессээс гадна install-core.php (#1~#7 согогийн засвар), version.json зэрэг олон файл бодит сайтад синк хийгдээгүй үлдэгдэл байв. rsync-ээр dev-ийг бодит сайт руу нэг дор синк хийв (342 файл өөрчлөгдсөн + 196 шинэ, 6.3MB, хэрэглэгчийн өгөгдөл, .env, storage/, uploads/, vendor/, .git/-ийг хассан).

Documentation

  • •docs/LINE_FRIEND_CTA_DESIGN_GUIDE.md — Part 3 (нэгдсэн Utility Floating Stack-ийн бодит хэрэгжүүлэлт), Part 4 (Phase 1 илгээлтийн ажиллагааны бодит хэрэгжүүлэлт), Part 5 (гадаад хэрэглэгчийн хувилбар — олон сонголтоор илгээхийн үнэ цэнийн шинжилгээ), Part 6 (Phase 2~4 ирээдүйн замын зураг)-ийг нэмсэн. Ойролцоогоор 631 → 920 мөр.

Regression Test

  • •utility-floating-stack.php болон line-friend-cta-ийн 5 variant partial файл байгаа эсэхийг шалгана.
  • •LineMessenger::broadcast/multicast метод байгаа эсэхийг шалгана.
  • •plugins/vos-community/migrations/004_line_broadcasts.sql миграцийн файл байгаа эсэхийг шалгана.
  • •13 хэлний messaging.utility_stack. + community.broadcast.send_line_ түлхүүр байгаа эсэхийг шалгана.
  • •dashboard.php / admin-topbar.php-д RezlyX-ийн үлдэгдэл байхгүй эсэхийг автоматаар шалгана.
v2.6.8 2026-05-29 · 5 сарын өмнө
Маркетплэйсийн лицензийг нэгтгэх + Зөвшөөрөлгүй суулгалт илрүүлэх самбар + Брэндийн засвар

Fixed

  • •vos-market лицензийн хүснэгт нэгтгэх — 6 API файл буруу {$pfx}vos_licenses хүснэгтийг асуудаг байсан тул төлбөр бүрт "Server error" 500 гарч байсныг засав. Бүх лицензийн баталгаажуулалтыг нэгдсэн мастер vcs_licenses (vos-license-server удирддаг) руу шилжүүлэв.
  • •sync.php-ийн баталгаажуулалтгүй мастер бүртгэлийн аюулгүй байдлын цоорхойг арилгав — Өмнөх кодыг vos_key баталгаажуулахгүйгээр vos_licenses руу UPSERT хийдэг байсан тул хэн ч дурын лицензийн түлхүүрийг энгийн POST хийгээд мастерт автоматаар бүртгүүлэх боломжтой байсныг арилгав. Хяналт одоо одоо байгаа rzx_mkt_sync_reports (per-item) хариуцна.
  • •migrations/007 хүчингүй болгов — rzx_vos_licenses үүсгэдэг буруу зохион бүтээсэн миграцыг no-op (SELECT 1) болгов, шалтгаан болон өөрчлөлтийн түүхийг комментоор тэмдэглэв.

Added

  • •4 статистикийн карт — Хянагдсан сайт / Анхаарал шаардсан сайт / Олон домэйн лиценз / Идэвхгүй 30+ хоног.
  • •Зөрчлийн таб (бүтээгдэхүүний түвшний мөр харуулах) — Ямар төлбөртэй виджет аль домэйнд лицензгүйгээр суусныг шууд харах боломжтой. Үнэ, хувилбар, vos_key, сүүлд үзсэн огноо харуулна.
  • •Олон домэйн таб — Нэг лицензийн түлхүүрийг олон домэйнээс мэдээлсэн тохиолдол.
  • •Идэвхгүй таб — 30+ хоног синк дохио байхгүй сайт.
  • •Зөрчлийн тодорхойлолтыг нарийвчилсан — unknown_product болон үнэгүй бүтээгдэхүүн хасагдсан. Зөвхөн зах зээлд бүртгэгдсэн төлбөртэй бүтээгдэхүүн лицензгүй төлөвт байгааг л зөрчилд тооцно.
  • •Өөрийн домэйнүүдийн цагаан жагсаалт — settings.mkt_owner_domains JSON массивт хадгалсан оператор өөрийн домэйнуудыг автоматаар тоооноос хасна.
  • •13 хэлний i18n — Хажуугийн самбар, карт, таб, тусламжийн текстийг бүгдийг зөв орчуулсан.

Changed

  • •settings/system/updates — Суулгасан хувилбар болон сүүлийн хувилбарын картыг "VosCMS vX.Y.Z" болгон зассан.
  • •updates/ajax.php — DB нэрийн fallback болон User-Agent зассан.

Regression Test

  • •vos-market 6 файлд vos_licenses SQL үлдэгдэл байхгүйг автоматаар шалгана
  • •sync.php-ийн INSERT аюулгүй байдлын цоорхойн дахин гарахыг илрүүлнэ
  • •migrations/007-ийн no-op төлөв хадгалагдаж байгааг шалгана
  • •Шинэчлэлтийн дэлгэцийн 3 файлд RezlyX үлдэгдэл байхгүйг автоматаар шалгана
v2.6.7 2026-05-29 · 5 сарын өмнө
install шидтэнг аюулгүй болгож, автомат регрессийн тест нэвтрүүлэв

Fixed

  • •site_url-ийг автоматаар суулгах — install шидтэн хэрэглэгчийн оруулсан siteUrl-ийг .env-ийн APP_URL-д л бичиж, DB-ийн rzx_settings.site_url-д оруулдаггүй байсан тул шинээр суулгасан сайтын site_url-ээс хамаарах бүх чадвар (автомат суулгалт, SEO, имэйлийн холбоос гэх мэт) эвдэрдэг байв. install-core.php-ийн $settings массивт site_url-ийг нэмж шийдлээ.
  • •rzx_site_domains-д автоматаар бүртгэх — install шидтэн одоогийн суулгалтын домэйныг site_domains хүснэгтэд автоматаар нэмдэггүй байсан тул SiteRouter домэйныг таньдаггүй байв. Суулгасан домэйныг site_id=1 primary болгон автоматаар INSERT хийнэ.
  • •.env-ийн MARKET_API_URL-ийг автоматаар бичих — Шинэ суулгалтад .env-д маркетийн API хаяг байхгүй тул InstallerService дуудах хаягаа олдоггүй байв. Одоо анхдагч утга https://market.voscms.com/api/market-ыг автоматаар бичнэ (лицензийн нэг мастер ашиглалт).
  • •Маркетийн install API-ийн хүснэгтийн нэрийн үсгийн алдаа — vos-market/views/api/item/install.php лиценз шалгахдаа байхгүй rzx_vos_licenses хүснэгтийг лавлаж байсан тул бүх автомат суулгалт «Server error» 500 хариу өгдөг байв. Бодит хүснэгт vcs_licenses (лицензийн мастер, угтваргүй тогтмол) болгож засав.
  • •widgets/plugins/themes хавтасны эрхийг автоматаар тохируулах — install-ийн дараа PHP-FPM хэрэглэгч эдгээр хавтсанд бичиж чаддаггүй тул автомат суулгалт чимээгүйхэн бүтэлгүйтдэг байв. install шидтэн setgid болон бүлгийн бичих эрхийг автоматаар олгоно (PHP-ийн ажиллах бүлгийг автоматаар илрүүлж, гадаад орчны олон янз байдалд зохицно).
  • •install-handler.php-ийн олон шатлалт нөөц арга — Олон сайтын орчинд site_url лавлагаа site_id шүүлтүүргүй LIMIT 1 байсан тул найдваргүй байв. SiteRouter → site_id=1 руу буцах → $_SERVER['HTTP_HOST'] гэсэн 3 шатлалт нөөц аргаар ямар ч орчинд домэйныг танихыг баталгаажуулна.

Added

  • •InstallerService::installTheme() — type=theme бүтээгдэхүүний theme.json-г уншиж, requires доторх plugin/widget/skin-ийг рекурсив байдлаар install хийнэ. 13 хэлний шалгалт болон идемпотент чанарыг (суусан зүйлийг алгасана) баталгаажуулна.
  • •runPostInstall — Сэдэв суусан даруйд post_install/settings.json / boards.json / pages.json-ийн seed-ийг автоматаар ажиллуулж, хуудас + виджетийн байршил + үндсэн тохиргоог бүхэлд нь нэг дор автоматаар тохируулна.
  • •13 хэлийг заавал байлгах (REQUIRED_LOCALES) — Олон хэлт обьект (name, description, хуудасны title, виджетийн config.title гэх мэт) 13 түлхүүрийг бүгдийг нь агуулсан тохиолдолд л албан ёсоор тэнцнэ. Дутуу locale-д сэрэмжлүүлнэ.
  • •vcs_licenses мастерыг нэгтгэв — Бүх лицензийн олголт, шалгалтыг бодит маркет (market.voscms.com)-ээр дамжуулан удирдана. dev/test орчин ч мөн адил мастерыг ашиглана.

Added

  • •Энэ 6 согогийг автоматаар шалгана — install шидтэний seed логик + хавтасны эрх + маркет API + лицензийн серверт хүрэх чадвар + InstallerService-ийн theme салаа + install-handler-ийн олон шатлалт нөөц арга зэрэг нийт 13 зүйл.
  • •build-voscms.sh-ийн автоматаар ажиллах hook — Бүтээлтийн төгсгөлд автоматаар дуудагдана. Нэг ч FAIL гарвал гарах код 0-ээс өөр болж, түгээлтийг хаана. Ижил согог дараагийн бүтээлтэд дахин гарсан ч шууд баригдана.

Documentation

  • •docs/theme-package/THEME_PACKAGE_SPEC.md — VosCMS-ийн сэдвийн багцын стандарт (theme.json)-ыг тодорхойлсон. Салоны нэгдсэн сэдвийн жишээ + post_install-ийн дэлгэрэнгүй схем + 13 хэлний дүрмийг тодорхой бичсэн.
v2.6.6 2026-05-27 · 5 сарын өмнө
Шинэчлэлтийн нөөцлөлтийн давхардлаас сэргийлэв

Fixed

  • •Шинэчлэлтийн нөөцлөлтийг хувилбар тус бүрд зөвхөн нэгийг хадгална — Backup::createFull() нөөцлөлт үүсгэхийн өмнө ижил хувилбарын одоо байгаа нөөцлөлтийг эхлээд устгадаг болов. Ижил хувилбар дээр шинэчлэл, буцаалтыг давтахад нөөцлөлтийн жагсаалтад тэр хувилбар давхардаж овоорох асуудлыг шийдлээ (шинэчлэлтийн өмнөх хамгийн сүүлийн төлөвийг л хадгална).
v2.6.5 2026-05-27 · 5 сарын өмнө
Шинэчлэлтийн системийг цэгцэлсэн (нэг суваг, сесс/эрх, түгээлтийн хувилбарын засвар)

Fixed

  • •Түгээлтийн хувилбар дахь алдагдсан update-api.php-г сэргээв — Бүтээлтийн скрипт шинэчлэлтийн backend болох update-api.php-г «dev файл» гэж андуурч түгээлтийн хувилбараас устгадаг байв. Үүний улмаас түгээлтийн бүх суулгацын шинэчлэлтийн таб «File not found» гэж ажиллахгүй байсан. Бүтээлтийн хасалтаас гаргаж, түгээлтийн хувилбарт зөв орох боллоо.
  • •Нэвтрэлтийн сесс таниагүй алдааг (Unauthorized) засав — update-api.php анхдагч сессийн хадгалах замыг (/var/lib/php/sessions) харж байсныг index.php-тэй адил storage/sessions болгов. Админаар нэвтэрсэн ч Unauthorized гардаг байсан асуудлыг шийдлээ.

Changed

  • •Core шинэчлэл нь өөрийн түгээлтийн manifest гэсэн ганц сувгийг л ашиглана — update-api.php дахь GitHub таг, токен, оношилгооны үлдэгдлийг устгав (check нь manifest-ийн үр дүнг GitHub тагаар дарж бичдэг замыг хаав). Маркетплейст Core байхгүй (зөвхөн плагин).
  • •Аюулгүй байдлыг бэхжүүлэв — update-api.php-д CSRF шалгалт болон мастер (эзэмшигч) эрхийн шалгалтыг нэмсэн.
  • •Шинэчлэлтийн хадгалах жагсаалтыг цэгцэлсэн — skins, config-ийг хадгалах жагсаалтаас хаслаа. applyUpdate нь зөвхөн хуулдаг тул түгээлтийн zip дэх цөмийн скин, config шинэчлэгдэх бол zip-д байхгүй үйлчлүүлэгчийн өөрийн файл хадгалагдана.

Changed

  • •Давхардсан «Шинэчлэл шалгах» товчийг устгав — хуудас нээхэд хамгийн сүүлийн хувилбарыг автоматаар шалгана.
  • •Түр алдааны үед нөөцлөлтийн жагсаалт алга болдог байсныг засав → хэсгийг хэвээр байлгаж хоосон төлөвөөр харуулна.
  • •Алдааны үед Unauthorized зэрэг түүхий мессежийн оронд «Та одоо хамгийн сүүлийн хувилбарыг ашиглаж байна» гэсэн зөвлөмж харуулна.
v2.6.4 2026-05-26 · 5 сарын өмнө
Нийгэмлэгийн дурдах цэсний i18n · Самбарын зохиогч холболт + /changelog дүрслэл ба олон хэлний сайжруулалт

Added

  • •13 хэлний um хэсэг нэмэв — vos-community/lang/{locale}.php-ийн бүх хэл (ko·en·ja·de·es·fr·id·mn·ru·tr·vi·zh_CN·zh_TW): follow·following·message·block·unblock·report·report_about·report_reason/detail/placeholder·reason_spam/harassment/inappropriate/other·report_submit/sent/failed·msg_title/placeholder/send/sent/failed·block/unblock_confirm·block/unblock_done·cancel·failed·network_error
  • •user-mention-menu.php-ийн бүрэн i18n — PHP HTML дахь солонгос хатуу кодыг бүгдийг __('community.um.*')-аар сольсон; JS ажиллах үеийн мөрүүдийг UM_LANG = <?= json_encode(...) ?> PHP объект болгон ялгаруулж, umT(key, name) туслахаар :name орлуулагчийг солино
  • •Нэвтрээгүй хэрэглэгчид дурдах цэсийг зөвшөөрөв — community-overlays.php-ийн хамгаалалтын бүтцийг шинэчлэв: админ/API замыг бүрэн хааж, user-mention-menu-г нэвтрээгүй үед ч оруулна (дагах/мэдээлэхэд нэвтрэхийг сануулна); хуудасны үйлдэл болон username хамгаалалт нэвтэрсэн хэрэглэгчид зориулагдсан хэвээр

Changed

  • •boardPreloadUsers(array $rows) функц нэмэв (board/_init.php) — user_id жагсаалтыг нэг удаагийн IN асуулгаар бөөнөөр ачаалж, $GLOBALS['_boardUserCache'] хуваалцсан кэшээр дамжуулна
  • •boardAuthorMention()-г өргөтгөв — data-user-username·data-user-avatar шинж чанар нэмэв (стори URL /story/{username}-г нарийн холбож, аватар зургийг харуулна). Урьдчилан ачаалсан кэшийн HIT-г эрхэмлэж, miss үед lazy ганц асуулга хийнэ
  • •board/list.php·board/read.php·skins/board/qna/_list-full.php — дүрслэхээс өмнө boardPreloadUsers()-г дуудаж N+1 асуулгаас сэргийлнэ

Fixed

  • •Харуулах задлагчийг өргөтгөв (resources/views/system/changelog/index.php) — код хашаа (``), хүснэгт (|...|), markdown холбоос (text), #### дэд гарчиг, хэвтээ зураас (---`)-ын дүрслэлийг нэмэв. Энэ синтаксийг ашигладаг зарим хувилбар (2.4.1·2.3.8·2.3.7 гэх мэт) markdown эх хэлбэрээрээ харагдаж байсан асуудлыг шийдэв
  • •Хувилбар тус бүрийн locale fallback — бүх жагсаалтыг нэг хэлээр бөөнөөр татдаг байсныг хувилбар тус бүрээр (одоогийн locale → en → ko) болгов. Одоо аль ч хэлээр харахад бүх хувилбар бүрэн харагдаж, орчуулагдаагүй хувилбар fallback хэлний тэмдгээр ялгагдана
  • •Блокын зааг тааруулалт (rzxlib/Core/Changelog/ChangelogParser.php) — огноогүй ## [Unreleased] гарчиг өмнөх хувилбарт (жишээ нь 1.5.0) шингэдэг асуудлыг бүх ## [-д блок хуваах замаар сэргийлэв
v2.6.3 2026-05-25 · 5 сарын өмнө
Түгээлтийн татан авалтын статистик · Hero виджет хуваах · Чирэх-буулгах бүтээгч

Added

  • •Шилжилт 056 dist_downloads хүснэгт (site_id·version·ip·user_agent·referrer·utm_*·is_bot·created_at)
  • •Татан авалтын эцсийн цэг api/dist-download.php — статик /download/*.zip шууд холбоосын оронд хүсэлт үүгээр дамжин хувилбар/өдөр/эх сурвалж (referrer·UTM)-аар статистик бүртгэж дараа нь 302 чиглүүлдэг. Ботын UA-г тусад нь тоолно; хувилбарын цагаан жагсаалт (зам халдлагаас хамгаалсан)
  • •Админ статистик хуудас resources/views/admin/dist-downloads.php (зөвхөн мастер, 13 хэл) — хураангуй карт (нийт/өнөөдөр/7х/30х), хувилбараар багана, өдрийн чиг хандлага (30х), эх сурвалжийн Топ-10, UTM. Өөрийн SVG/CSS график (гадаад сан ашиглаагүй)
  • •download-hero виджетийн татан авах холбоосыг тоолох эцсийн цэг рүү өөрчилсөн
  • •"Татан авалтын статистик" админ цэс нэмсэн (config/admin-menu.php, зөвхөн мастер)

Added

  • •hero-cta-text — дээд текст (бичих) хэсэг. Анхдагч утга нь ажиллаж буй hero-cta2-той ижил (13 хэл); хэрэглэгчийн тохиргоо давуу
  • •hero-cta-button — татах товч (хамгийн сүүлийн хувилбарыг автоматаар илрүүлж + татан авалтыг тоолно, тохиргоо шаардахгүй) дээр нэмээд сонголтот marketplace товч (хоосон бол нэг товч)
  • •Тохиргооны маягтын шошго ба анхдагч утгыг 13 хэлээр (бүтээгчийн getLabel обьект дэмжлэг)
  • •Татах товчны өнгө/дэвсгэрийг hero-cta2-той нэгтгэсэн (#2563eb)

Added

  • •Виджет нэмэхийн тулд палитрын картыг канвас руу чирнэ (SortableJS pull:'clone' бүлэг + канвасын onAdd дотор жинхэнэ блокоор солих). Одоо байгаа дарж нэмэх ба ↑↓/бариулаар эрэмбэлэхтэй зэрэг ажиллана
  • •Чирэх үед flyout нээлттэй хэвээр + канвасын буулгах бүсийг тодотгоно (wb-drop-active)

Changed

  • •Виджетүүдийн хоорондох хуудасны боодлын зайг хассан (type-widget.php py-2 → 0)
  • •Сэтгэгдлийн AI орчуулгын синхрон боловсруулалтыг тогтворжуулсан — nginx fastcgi_read_timeout 150s (форумын vhost) · PHP-FPM request_terminate_timeout 150 · set_time_limit 150, OllamaProvider keep_alive 30 мин (загвар санах ойд үлдэж, хүйтэн ачааллыг арилгана)
  • •Message API ба Сошиал нэвтрэх таб дээр Webhook URL ба Redirect URI-ийн хуулах товч нэмсэн (13 хэл, аюулгүй бус орчны нөөц хувилбартай)
v2.6.2 2026-05-14 · 5 сарын өмнө
Тооцооны татварын автоматжуулалт, маягтын салаалалт, системийн хуудсын SSOT

Added

  • •Мигр 036 — partner_earnings / payouts дахь withholding_tax · consumption_tax · tax_basis баганууд
  • •Мигр 037 — payouts дахь fx_rate · fx_amount · fx_currency баганууд (USD руу хөрвүүлсэн шилжүүлгийн бүртгэл)
  • •Мигр 038 — vcs_developers.paypal_email багана
  • •Хэлпэр rzxlib/Core/Helpers/MarketTax::calculate() — Японы стандарт хасалтын загвар

· Борлуулалтын үнэ татвар багтаасан (税込); зах зээл НӨАТ-ыг NTA-д шууд төлдөг

· freelance → 10.21%-ийн суутгал / invoice_eligible → худалдан авалтын татварын хөнгөлөлт / no_invoice → НӨАТ төлөхгүй

· Ангиллын болон өгөгдөлгүй → freelance-г заавал тавих (консерватив: дутуу төлбөрийг буцааж олгоно, илүү төлбөрийг нөхөн авах боломжгүй)

  • •scripts/market-tax-backfill.php дэвсгэр скрипт — одоогийн earnings/payouts-ийг дахин тооцоолно (status='paid' хамгаалдаг, --dry-run дэмждэг)
  • •Тооцоог 5 хэсгээр харуулах: орлого → комисс → НӨАТ хасах → суутгал (freelance) → цэвэр төлбөр
  • •rzx_mkt_settings шинэ түлхүүрүүд: min_payout_amount · consumption_tax_rate · default_commission_rate (бүх газар settings тэргүүлнэ; хатуу кодлосон fallback хасагдсан)

Added

  • •/theadmin/market/partners/payouts дахь тооцооны модал — prompt() × 2 + alert() → нэг модал

· vcs_developers JOIN-ийн тусламжтай банк/салбар/эзэмшигч/дансны дугаар/бизнесийн төрөл/T дугаарыг автоматаар урьдчилан дүүргэх (PII enc: автомат тайлалт)

· 5 хэсгийн автомат тооцоо + Японы хуулийн үндэслэлийн чип (freelance_withholding гэх мэт) + зүйл заалт (§204, нэхэмжлэхийн систем)

· Хуудсан дотор тост мэдэгдэл; модал хаасны дараа автомат дахин ачаалах

  • •Үйлдлийн улсаас гадуурх дансанд USD автомат хөрвүүлэлт (Мигр 037)

· Frankfurter API автомат ханш (storage cache TTL 24 цаг) + администраторын гар аргаар дарах (банкны TTS)

· method=paypal автомат сонгох

· Гадаадын хувьд: банкны данс карт нуугдаж, PayPal и-мэйл карт харагдана (bank_country == site_country)

  • •Хөгжүүлэгчийн тооцооны дүн заасан хэмжээ (/mypage/developer/earnings)

· Нийт үлдэгдэл → дүн оруулах + нийт дүнгийн товч + доод хэмжээний баталгаажуулалт

· Борлуулалтын түүхэнд 5 хэсгийн багана, тооцооны мэдээлэл хайрцаг (бизнесийн төрлөөс хамаарсан татварын хууль)

  • •Хуудсанд USD хөрвүүлэлт, ханшийн туслах мэдээлэл (администраторын болон хөгжүүлэгчийн дэлгэц хоёуланд)
  • •Борлуулалтын чиг хандлагын графикийг SVG туузан диаграмаар сольсон (div туузны харагдацын асуудлыг шийдсэн)

Added

  • •tax_review_status дээр суурилсан түгжилтийн бодлого (хөгжүүлэгчийн профайл)

· not_submitted / rejected → засах боломжтой

· pending / approved → засварын түгжилт (цоож + анхааруулга)

· rejected → засах боломжтой + "хадгалахад хянах дараалалд орно" зөвлөмж

· Серверийн хамгаалалт: HTTP 423 Locked (интерфейс тойрч гарахыг хаадаг)

  • •update.php хэсэгчилсэн шинэчлэлт аюулгүй болгосон — зөвхөн ирүүлсэн талбаруудыг динамик UPDATE (өмнө нь: бүх талбарыг дарж бичих — ирүүлэгдээгүй талбарт NULL болох эрсдэлтэй байсан)
  • •Официал баталгаажуулалтын сайтын холбоос (администраторын баталгаажуулалтын дэлгэц + хөгжүүлэгчийн профайл)

· 🇯🇵 NTA-ийн хуулийн этгээдийн дугаар нийтлэх сайт (https://www.houjin-bangou.nta.go.jp/)

· 🇯🇵 NTA-ийн зохих нэхэмжлэх гаргагчийн нийтлэх сайт (https://www.invoice-kohyo.nta.go.jp/regno-search/)

· 🇰🇷 Солонгосын Hometax бизнесийн бүртгэлийн төлөв шалгах

· Бизнесийн дугаар/T дугаарын хажууд нэг товшилтоор хуулах товч

Added

  • •Шинэ бүртгэл (/mypage/developer) — иргэний харьяалал сонголтыг маягтын дээд хэсэгт шилжүүлсэн, үйлдлийн улстай харьцуулах заавар

· country == site_country → 🏠 дотоодын маягт (бизнесийн төрөл / банкны данс)

· country != site_country → 🌐 гадаадын маягт (автомат freelance + PayPal и-мэйл заавал)

· Alpine.js isDomestic getter, OPERATING_COUNTRY дэлхийн тогтмол

  • •Профайл засах (/mypage/developer/profile) — ижил бүтэц ([feedback_admin_user_parity] дүрэм)

· Гадаадынхан: бизнесийн хэсэг нуугдана; тооцооны мэдээлэл = зөвхөн PayPal и-мэйл

· Харьяалал түгжигдсэн (өөрчлөхөд администраторт хандах), дэлгэцийн дээд хэсэгт горимын чип

  • •Бүртгэлийн API серверийн баталгаажуулалт — гадаадынхан PayPal и-мэйл заавал, freelance заавал тавигдах, бизнесийн/дансны утга үл тооцно

Added

  • •page.php дахь токен автомат орлуулалт — бүх системийн хуудсанд нэгтгэн хэрэглэсэн

· {{COMPANY_NAME}} {{COMPANY_ADDRESS}} {{COMPANY_PHONE}} {{COMPANY_EMAIL}} {{COMPANY_REG_NUMBER}} {{COMPANY_REPRESENTATIVE}}

· {{SITE_NAME}} {{SITE_URL}} {{DOMAIN}}

· Администраторын business_ эсвэл site_ settings-ийн автомат харицуулга

· page_title / page_subtitle тусгай утга ч токен орлуулалтаар дамжина

  • •{{DOMAIN}} тэргүүлэх дараалал — official_domain (нөхцөл, бодлогод зориулсан официал домэйн) → site_url хост

· Хөгжүүлэлтийн сервер vos.21ces.com дээр ч нөхцөлийн биед voscms.com гарсаар байна

Added

  • •rzx_page_contents дахь terms / privacy (13 мөр тус бүр) бүрэн сольсон — RezlyX захиалгын платформын нөхцөл → VosCMS үнэгүй программ хангамжийн нөхцөл
  • •18 зүйлтэй үйлчилгээний нөхцөл: зорилго · тодорхойлолт · нийтлэлт, засварлалт · нэмэлт дүрэм · гэрээ байгуулалт · нууцлал · мэдэгдэл · компанийн үүрэг · хэрэглэгчийн үүрэг · үйлчилгээ үзүүлэлт · өөрчлөлт · хязгаарлалт · лицензи (үнэгүй ашиглалт) · өгөгдлийн өмчлөл, хадгалалт · нийтлэлийн зохиогчийн эрх · хариуцлагын татгалзал (AS-IS) · нөхөн төлбөр · маргаан шийдвэрлэлт
  • •10 зүйлтэй нууцлалын бодлого: боловсруулалтын зорилго · ангилал · хадгалалтын хугацаа · гуравдагч этгээдэд шилжүүлэх, даалгавар · өгөгдлийн субъектийн эрх · аюулгүй байдлын арга хэмжээ · cookie · хамгаалалтын хариуцагч · зөрчлийн эрхийн нөхөн сэргээлт (PPC) · өөрчлөлт
  • •Японы хууль + Фукуокагийн дүүргийн шүүхийн онцгой харьяалал, APPI §33·§34·§35 иш татсан
  • •Компанийн мэдээлэл токен ашигладаг → администратор дахь нэг засварт нөхцөл, бодлого хоёр автоматаар синхрончлогдоно
  • •Японы хэлний хувилбар жинхэнэ эх бичвэр; 13 хэлэнд тус тусын хэл дээр официал орчуулга
  • •Компанийн мэдээлэл карт — зөвхөн 3 зүйл: хуулийн нэр, хаяг, утас (бүртгэлийн өөрчлөлтөд нөхцөл засах ачааллаас зайлсхийж, нэр/төлөөлөгч хасагдсан)
  • •Хадгалалтын скриптүүд: scripts/voscms-terms-update.php · scripts/voscms-privacy-update.php

Fixed

  • •/theadmin/site/menus дахь menus-api.php нь vos-оос 99 мөр хоцорч, цэс хадгалах, засварлах үед баталгаажуулалт, орчуулга алдагдаж байсан
  • •menus-api.php-г vos → market руу синхрончлосон:

· mn_link_target_exists() — товчлол (холбоос) цэсийг зорилтот хуудас (системийн хуудас · rzx_page_contents) байгааг шалгасны дараа л хадгалдаг

· Цэсийн ID дахин ашиглалтаас хамгаалах — шинэ ID-д rzx_translations.menu_item.{id}.* хуучин хог автоматаар цэвэрлэгдэнэ

· Орчуулгын INSERT арга: INSERT IGNORE → INSERT … ON DUPLICATE KEY UPDATE (дарж бичих боломжтой)

· title·url өөрчлөхөд: хуучин орчуулгыг бүрэн арилгах + системийн хуудастай таарахад (config/system-pages.php) орчуулга автоматаар дахин бүртгэгдэнэ

  • •sync-to-market.sh-ийн INCLUDES-д admin/site/menus*.php 4 файл нэмсэн

Fixed

  • •rzx_contact_messages хүснэгт байхгүй → 041_create_contact_messages.sql миграц нэмсэн (IF NOT EXISTS, vos дахь одоогийнхонд нөлөөгүй)
  • •contact-messages.php дахь давхар зохион байгуулалт — _head.php аль хэдийн sidebar+topbar гаргадаг боловч view нь дахин шууд include хийж, <body> давхар гарч, main давхарласан. vos загварын дагуу цэгцэлсэн (толгой = _head 1 удаа, хөл = _foot 1 удаа)

Added

  • •Мигр 040 040_create_developer_platform.sql — 7 хүснэгт нэгэн зэрэг үүсгэх: vcs_developers + vcs_developer_earnings/payouts/activity/notes + vcs_review_queue + rzx_mp_items (IF NOT EXISTS, ALTER 030~038 хэрэглэсний дараах эцсийн схем)

· vos.21ces.com дахь vcs_developers нь dump-д л байсан, CREATE TABLE миграцгүй — хожим үүсгэсэн сайтад ALTER 030 амжилтгүй болдог байсан асуудлыг шийдсэн

  • •mypage/profile-sidebar.php синхрончлол — хуучин rzx_mkt_partners хүсэлт → шинэ vcs_developers хүсэлт (миний хуудасны доторх хөгжүүлэгчийн үйл ажиллагаа нэгтгэл)
  • •market index.php маршрут засвар (гараар, бүтэн sync-оос зайлсхийж):

· /developer/ → /mypage/developer/ 301 дахин чиглүүлэлт (login/dashboard/my-items/submit/earnings/profile/logout харицуулга)

· mypage/developer/{register|items|items/new|earnings|profile} + mypage/developer/items/{N} + mypage/developer/items/{N}/edit маршрут

  • •040 миграц + profile-sidebar.php-г sync-to-market.sh-ийн INCLUDES-д нэмсэн
  • •market DB автомат нөөц (storage/backups/market-YYYYMMDD-HHMMSS/market_vos.sql) 040 хэрэглэхийн өмнө хийгдэнэ

Added

  • •market.21ces.com нөхцөл нь гуравдагч этгээдийн зах зээлийн загвар бөгөөд VosCMS үнэгүй программ хангамжийн нөхцөлөөс тусдаа
  • •18 зүйлтэй нөхцөл (зах зээлийн үйлдлийн дүрэм тусгасан):

· 8-р зүйл: худалдааны гэрээ худалдан авагч–хөгжүүлэгчийн хооронд байгуулагдана; компани нь төлбөр, хүргэлтийн зуучлагч

· 9-р зүйл: дижитал бүтээгдэхүүний 4 буцаан авах онцгой нөхцөл (татаж авахаас өмнө · тайлбар үл нийцэл 7 хоног · хортой программ баталгаажуулалт · системийн алдаа) — Японы Тусгай Арилжааны Хуулийн §15-2-ийн мэдээллийн шаардлагыг хангасан

· 10-р зүйл: тодорхой комиссийн хувиар заагаагүй ("тусдаа нийтэлсэн тарифт" иш татна; нөхцөл засалгүйгээр тариф тохируулах боломжтой)

· 10-р зүйл: Орлогын татварын хуулийн §204-ийн дагуу Японы 10.21% суутгал; T дугаартай бол НӨАТ-ыг зах зээл NTA-д шууд төлдөг; үйлдлийн улсаас гадуурх данс → USD-PayPal шилжүүлэлт

· 14-р зүйл: хөгжүүлэгчийн тусгай нөхцөл тэргүүлнэ — платформын үйлдэл (төлбөр, тооцоо, буцаан авах журам) -аас бусад тохиолдолд

· 17-р зүйл: нөхөн төлбөрийн дээд хязгаар: өмнөх 6 сарын нийт комисс/тооцоо

· 18-р зүйл: Японы хууль + Фукуокагийн дүүргийн шүүхийн онцгой харьяалал

  • •12 зүйлтэй нууцлалын бодлого (гуравдагч талын зах зээлийн өнцгөөс):

· Өгөгдлийн ангилал — нийтлэг / худалдан авагч / хөгжүүлэгч (нийтлэг) / Японд оршин суугч / гадаадад оршин суугч / хүргэлт: 6 ангилал

· Хадгалалтын хугацаа — гишүүн 1 жил · гүйлгээ 7 жил · тооцоо/суутгал 7 жил · үнэмлэх баталгаажуулалт 5 жил · лог 6 сар · хүсэлт 3 жил

· Боловсруулалтын гэрээт этгээд — Stripe · KOMOJU · PayPal · Frankfurter · SendGrid · NTA тодорхой нэрлэгдсэн

· Олон улсын шилжүүлэлт — АНУ (PayPal/Stripe/SendGrid) · ЕХ (ханш) · бусад улс (орон нутгийн gateway/банк) тодорхой нэрлэгдсэн

  • •Скриптүүд: scripts/market-terms-update.php · scripts/market-privacy-update.php (UPSERT — эхлээд UPDATE; мөр байхгүй бол INSERT)
  • •market DB шинэчлэгдсэн (terms/privacy, rzx_page_contents дахь 13 мөр тус бүр), page-i18n олон хэлний гарчиг, дэд гарчиг хэрэглэгдсэн

Added

  • •Скин тохиргооны (page_title · page_subtitle) харицуулга дутуу байсан — тохиргооны дэлгэцийн утга хуудсанд харагдахгүй байсан асуудлыг шийдсэн
  • •Дутуу _page-title-bg.php парциаль шинэ бичсэн (nginx error log-ийн include анхааруулгыг шийдсэн)
  • •title_bg_type-д color сонголт нэмсэн + title_bg_color талбар — зураг/видео хоосон үед өнгөний автомат fallback
  • •content_bg=transparent үед цагаан карт хайрцгийн fallback хасагдсан (max-w-5xl контент карт дотор нарийн харагддаг байсан асуудал шийдсэн)
  • •--page-content-width CSS хувьсагч автоматаар гарна — "Энэ хуудасны тухай" action bar (vos-community) зэрэг гаднаас include хийгдэх бүрэлдэхүүнүүд хуудасны content_width-тай ижил өргөнд байрлана

Fixed

  • •Тооцооны хуудсын PDOException — rzx_mkt_partners дахь байхгүй p.currency баганын лавлалтыг хасав
  • •Борлуулалтын чиг хандлагын график харагдахгүй — div туузны % өндөр нь орчноос хамаарч ойролцоогоор 0px харагддаг байсан → SVG viewBox суурилсан диаграмаар сольсон (хамгийн багадаа 4px харагдац хангагдсан)
v2.6.1 2026-05-13 · 5 сарын өмнө
Хөгжүүлэгчийн портал өргөтгөл · Маркет админ 13 хэл · Нийтийн хуудасны харилцан үйлдэл

Added

  • •Хөгжүүлэгчийн миний хуудас дахь аиймийн дэлгэрэнгүй дэлгэц (/mypage/developer/items/{id}) — статистик, хувилбарын түүх, татаж авах чиг хандлага
  • •Хөгжүүлэгчийн аймийг засах дэлгэц (/mypage/developer/items/{id}/edit) — items-new-тэй адил 3 табын UI, одоо байгаа утгуудыг урьдчилан бөглөх, шинэ ZIP байршуулах нь тусдаа дараалалтай
  • •Шинэ API: /api/developer/item-update — name(JSON), short/desc(JSON), tags(JSON), price, license, repo/demo URL, хамаарал, хамгийн бага хувилбар, icon, screenshots-г шинэчлэнэ
  • •Шинэ API: /api/developer/request-payout — тооцоо хийх хүсэлт
  • •Шинэ API: /api/developer/update-bank — өөрийн тооцооны дансыг шинэчлэх
  • •Шинэ API: /api/developer/issue-reply — Q&A хариу нийтлэх (хөгжүүлэгчийн өөрийн хариу өгөх суваг)
  • •Админ хөгжүүлэгчийн дэлгэрэнгүй дэлгэц (/theadmin/developers/show) — бизнес/данс/баримт бичгийн карт + баримт бичгийн хянан үзэх (зөвшөөрөх/татгалзах) горим
  • •Бүртгэл болон нэвтрэлтийн имэйл баталгаажуулалт (/verify-email) бэхжүүлэв + Auth::register-д company талбарыг хадгалав
  • •13 хэлний албан орчуулгын түлхүүрүүдийг нэмэв (show_edit_btn, items_edit_*, items_back_detail, api_updated гэх мэт)

Added

  • •Виджет дотор шүүмж, асуудал, Q&A бичих маягтыг шууд харуулах (тусдаа хуудас руу шилжихгүйгээр)
  • •Зөвхөн худалдан авагчид бичиж болно — худалдан аваагүй хэрэглэгчдэд маягт харагдах боловч илгээх үед мэдэгдэл гарна
  • •Q&A хариунд хэлхээ (хариунд хариу) дэмжлэг — DB миграц 035 (parent_reply_id)
  • •Шинэ API: /plugins/vos-market/views/api/item/post-issue.php, post-reply.php, post-review.php
  • •Коор rzxlib/Core/Helpers/Notifications.php — мэдэгдлийн туслах функц (DB миграц 034-тэй хосолдог)

Added

  • •/theadmin/market/licenses, sync, orders, settings, submissions, partners/payouts, items бүх дэлгэцэд 13 хэлний бүрэн дэмжлэг хэрэглэв
  • •Маркетийн тохиргооны дэлгэц — "Түнш" шошгыг "Хөгжүүлэгч" болгон нэгтгэв (зөвхөн харуулах текст; хувьсагчийн нэрс нийцтэй байдлаар хэвээр)
  • •Маркетийн аймийн нэр оруулалтад нийтлэг олон хэлний оролтын модал хэрэглэнэ — name_json-г 13 хэлэнд нэгэн зэрэг засварлана
  • •plugins/vos-market/lang/* — плагины түвшний шинэ хэлний цуглуулга
  • •resources/lang/*/marketplace.php — 13 хэлийг бүгдийг нь өөрийн хэлээр орчуулав (i18n бүрэн орчуулгын дүрэмд нийцсэн)

Added

  • •033_developer_notes_activity.sql — хөгжүүлэгч тус бүрийн тэмдэглэл, үйл ажиллагааны бүртгэл
  • •034_notifications.sql — rzx_notifications хүснэгт (хэрэглэгчийн мэдэгдлүүд)
  • •035_issue_reply_thread.sql — rzx_mkt_issue_replies.parent_reply_id баганыг нэмэв (хэлхээт хариулт)

Fixed

  • •/Market?item={slug} слаг дутуу — items-show-д зориулсан нэг баганын асуулгаар засав
  • •Аймийг шинэчлэх API-ийн icon_url баганын нэрийг бодит icon баганын нэрээр засав
  • •Маркетийн тохиргооны хуудас хоосон гарах — rzx_mkt_settings-ийн 005 миграцын алдагдсан хэсгийг хэрэглэв
v2.6.0 2026-05-06 · 6 сарын өмнө
Гишүүний хэрэглэгчийн нэр · vos-story залгаас · Миний хуудасны дахин дизайн · Гадаад зургийн толин тусгал · Хостингийн [Тохиргоо] нэгтгэл

Added

  • •VARCHAR(12) users.username + UsernameValidator (6+ тэмдэгт, тусгай тэмдэгт хязгаарлалт)
  • •Нэвтэрсний дараах анхны зочлолтод гарц модал (AJAX /api/username-set)
  • •13 хэлний бүрэн орчуулга (англи хэлний fallback хасагдав)

Added

  • •/profile/{uuid} → /story/{username} 301 дахин чиглүүлэлт
  • •Контекст цэсний шошго "Профайл харах" → "Стори харах" болж өөрчлөгдлөө

Added

  • •Коороос тусгаарлагдсан vos-story залгаас — /story/{username} зориулалттай
  • •Facebook загварын толгой + 5 тогтмол таб (Бүх / Мэдээлэл / Зурагнууд / Дагагчид / Дагаж буй)
  • •Нийтлэл CRUD + SNS фид (vos_story_posts, body_format = text/html)
  • •TEXT/EDIT тогглер + Summernote интеграци
  • •Зургийн хавсралт (олон) + Зурагнуудын табын тор
  • •Таалах + сэтгэгдлийн систем
  • •Story skin систем (skins/story/default) + хэрэглэгч тус бүрийн токен (/mypage/story)
  • •Администраторын бодлогын хуудас (/admin/vos-story/policy)
  • •Хуудасны үйлдлийн мөр: i18n + байрлал (үндсэн агуулгын төгсгөл) + агуулгын өргөний токен
  • •2:1 торлол (зөвхөн агуулгын хэсэг) — баруун тал: зар + найзууд (Дагагчид/Дагаж буй табууд)
  • •Толгойн үйлдлийн товчнууд — зөвхөн дүрс ([Миний Story тохиргоо] / [Профайл засах] / [Дагах])

Added

  • •D-1: 4 цэсний хажуу мөр (Самбар / Стори / Гишүүний мэдээлэл / Мессеж)
  • •D-2-A: Самбар шинэ — 8 статус карт + 8 табын навигаци + Гишүүний мэдээллийн таб
  • •D-2-B: Хадгалсан / Шуудан хайрцаг / Найзууд табууд (тус бүр "Бүгдийг харах" линктэй)
  • •D-2-C: Хадгалсан / Нийтлэлүүд / Сэтгэгдлүүд табууд (самбар + Story + хуудас нэгтгэсэн)
  • •D-2-D: Автомат нэвтрэлт (remember tokens) удирдлага

Added

  • •Нийтлэг туслах rzx_mirror_external_images() — cURL + SSRF хамгаалалт + GD хэмжээ өөрчлөлт
  • •E-1: Хадгалсан агшин зургийг авах + гадаад зургийг шингээх
  • •E-2: Story нийтлэл үүсгэх үед шингээх (story_attachments source багана)
  • •E-3: Самбарын нийтлэл үүсгэх үед шингээх
  • •E-4: Хуудасны агуулга үүсгэх үед шингээх
  • •Зургийн тэмдэглэгдэх: data-source-original, data-source-mirrored

Added

  • •Хостингийн удирдлагын хажуу мөрийн сүүлчийн [Тохиргоо] — үйлчилгээ захиалгын хуудасны 4 табд (general/domain/hosting/addons) хандана
  • •Буцаалтын бодлого → Системийн тохиргоо → Ерөнхий → тусдаа карт (татварын тохиргооноос тусгаарлагдсан)
  • •rzx_settings.refund_policy нэг түлхүүрээр хадгалах
  • •13 хэлний settings.refund.* түлхүүр

Added

  • •Миграци 009: page_contents.created_by / updated_by баганууд
  • •Бүх хуудас засварлах дэлгэцэд (admin/customer/system) автоматаар бүртгэгдэнэ

Added

  • •Нийтлэлийн тоолол — самбарын нийтлэлд зориулсан rzx_translations (board_post.{id}.title)-ийн тусдаа бүтцийг таньдаг

Added

  • •Администраторын тохиргоонд хостинг тус бүрийн багтаамжийн хязгаар / анхааруулгын босго / бодлого (block/notify/none)
  • •Миний хуудасны хэрэглээний тойрог диаграм
  • •scripts/db-quota-monitor.php ар дэвсгэр монитор

Added

  • •VosCMS дахин суулгах товч — администраторын хостингийн таб
  • •Хостингийн [Статус] өөрчлөх үйлдэл + бүртгэл
  • •"Серверийн холболтын мэдээлэл тохируулах" засварлах маягт устгагдлаа (шаардлагагүй мэдээлэл нээлттэй байхаас сэргийлэх)

Fixed

  • •Хадгалсан add_scrap сүлжээний алдаа — vos-story API файлын require зөрчил
  • •Хадгалсан карт — тойм + устгах/засах дүрс (хогийн сав)
  • •Нийтлэлийн тоо ба жагсаалтын зөрүү (статус шүүлтүүр дутуу)
  • •nick_name тохирол хасагдлаа (user_id NULL байх үрийн өгөгдлийг буруу таних байдлаас сэргийлэх)
  • •Миний хуудасны Story цэсний байрлал — top → main (залгаасыг автоматаар таних)
  • •Story цэсний дүрс корийн формат (бүрэн <path> тэг)
  • •Нэмэлт үйлчилгээний табын settings SELECT-д key багана дутуу (хоёр хэсэг нуугдсан)
  • •hosting_status үйлдэл 500 — туслах функцын тодорхойлолтын байрлал
  • •Хуудасны үйлдлийн мөр — агуулгын өргөний токен хэрэглэгдлээ
  • •Шинэ нийтлэл нийтлэх үед одоо байгаа нийтлэлүүд алга болдог алдаа (фид шуурхай шинэчлэгдэх)
v2.5.0 2026-05-01 · 6 сарын өмнө
Домэйн нэмэх модал + Нягтлан бодох бүртгэлийн дэвтэр + Нэмэлт үйлчилгээний төлбөр + Зөвлөгөөний дэд бүтэц

Added

  • •Хостингийн дэлгэрэнгүй → Домэйн таб → + Домэйн нэмэх товч → модал
  • •Сонголтууд: үнэгүй дэд домэйн / шинэ бүртгэл / одоо байгаа домэйн холбох
  • •WHOIS хайлт (/api/domain-check.php дахин ашигласан) + TLD-ээр үнэ харуулах
  • •Төлбөр: хадгалагдсан карт (хостингийн PAY.JP хэрэглэгчийг дахин ашиглах) эсвэл шинэ карт (PAY.JP Elements)
  • •10% хэрэглээний татварыг автоматаар тусгаарлах (дэд нийт / татвар / нийт)
  • •Төлбөр дууссан үед хостингийн sub-д metadata.added_domains[]-д нэмнэ (тусдаа sub үүсгэхгүй)
  • •Автомат буцаалтын аюулгүй байдлын тор — DB боловсруулалт амжилтгүй болвол PAY.JP цэнэглэлтийг автоматаар буцаана

Added

  • •Эхлэх огноо~дуусах хугацаа + Шалгах товч (DNS A/CNAME → манай зон эсвэл Cloudflare IP мужтай тохирох)
  • •Автомат сунгалтын сэлгэгч + Сунгалт хүсэх товч (домэйн тус бүр)
  • •registrar_pending / manual_attach_pending үед шалгах товч → "Хүлээгдэж байна" тэмдэг
  • •"Нэмсэн домэйн" ягаан тэмдэг

Added

  • •Хостингийн удирдлагын хажуугийн самбарт 2 дахь зүйл шинээр нэмэгдсэн
  • •Нэгдсэн жагсаалт: type='domain' sub + хостингийн sub.added_domains[] бүгдийг цаг хугацааны дарааллаар харуулна
  • •Статистикийн карт (нийт/хүлээгдэж буй/дууссан) + Шүүлтүүр (статус/сонголт/хайлт)
  • •Үйлдлүүд: [Бүртгэгдсэн гэж тэмдэглэх] / [Цуцлалт боловсруулах] (цуцлах үед: PAY.JP буцаалт + буцаалтын мөр INSERT)
  • •Хэрэглэгчийн нэрийг автоматаар тайлах

Added

  • •Хостингийн удирдлагын хажуугийн самбарт 3 дахь зүйл шинээр нэмэгдсэн
  • •rzx_payments дээр суурилсан гүйлгээний дэвтэр — орлого/буцаалт/цэвэр орлого/татварын статистикийн карт
  • •Японы хэрэглээний татварын тайланд нийт дүнгийн автомат тооцоо (татвар орсон үнэ → үндсэн = total × 100/110, татвар = total × 10/110)
  • •Сүүлийн 12 сарын чиг хандлагын хүснэгт + гүйлгээний дэвтрийн хүснэгт + шүүлтүүр/хуудаслалт

Added

  • •Миний хуудасны нэмэлт үйлчилгээний таб: "Хүсэлт гаргах боломжтой" хэсэг (бизнесийн имэйл автоматаар хасагдана)
  • •Үнээр үйлдэл:
  • •Үнэгүй (суулгалтын дэмжлэг): администраторын мэдэгдэл + order_logs
  • •Тооцоо (тусгайлсан хөгжүүлэлт): "Тооцоо хүсэх"
  • •Тогтмол үнэтэй давтагдах (1 жилийн техникийн дэмжлэг): карт төлбөрийн модал (_addon-pay-modal.php)
  • •Төлбөр дууссан үед addon sub автоматаар үүсгэгдэж, payments бичлэг нэмэгдэнэ
  • •Идэвхтэй sub-ийн шошго тохирвол хүсэлтийн товч автоматаар идэвхгүй болно
  • •install_info мөрийн баруун талд [Админ руу яв / Вэбсайт руу яв] товчнууд

Added

  • •DB схем: uk_payment_order UNIQUE устгагдаж → uk_payment_key (charge_id) UNIQUE-ээр солигдсон
  • •Нэг захиалгад олон төлбөрийн мөр зөвшөөрөгдсөн (хостинг + домэйн + нэмэлт үйлчилгээ хуримтлагдана)
  • •Буцаалтын үед: төлсөн мөрийг өөрчлөхгүй, тусдаа буцаалтын мөр INSERT (status='refund', нягтлан бодох бүртгэлийн бүрэн бүтэн байдал)
  • •Японы 7 жилийн хадгалах үүрэг + PAY.JP худалдаачны маргаан шийдвэрлэлтийн стандарт хангагдсан

Added

  • •composer require minishlink/web-push
  • •VAPID суурилсан admin/supervisor push илгээлтийн туслах
  • •Хугацаа дууссан endpoint-ийг автоматаар цэвэрлэх + rzx_push_messages-д автоматаар бүртгэх
  • •Дуудах цэгүүд: pay_domain (домэйн төлбөр дуусгавар), service-order (домэйн бүртгэлийн хүсэлт), request_addon

Added

  • •Манай зоны дэд домэйнийг автоматаар тохируулах (wildcard CNAME танигдана)
  • •Cloudflare IPv4 15 CIDR мужтай тохирох (proxy хариу үед)
  • •"already_refunded" хариуг амжилттай гэж боловсруулах (PAY.JP аль хэдийн буцаасан үед)

Added

  • •Дэд query-ээр rzx_payments нийлбэр хайна (paid − refunded)
  • •Хостингийн үндсэн төлбөр + домэйн нэмэлт + нэмэлт үйлчилгээний төлбөрийн хуримтлагдсан харагдац

Added

  • •admin_cancel_addon — sub status='cancelled' + PG буцаалт + буцаалтын мөр INSERT
  • •PG чиглүүлэлт: төлбөрийн мөрийн gateway баганад суурилсан (PG өөрчлөгдсөний дараа ч аюулгүй)

Removed

  • •Японы 7 жилийн хадгалах үүрэг + PAY.JP маргаан шийдвэрлэлтийн бодлогын дагуу администраторын UI-д байсан бүх "устгах" товч устгагдсан
  • •Хогийн сав дүрс + adminDeleteAddon JS + admin_delete_addon API + 13 хэлний 4 шошго бүгд устгагдсан
  • •Зөвхөн "Цуцлах" ашиглана — өгөгдлийн мөрийг хэзээ ч DELETE хийхгүй

Fixed

  • •Translator placeholder-ийн хоёр цэгийн угтвар зөрчил — [':count' => N] → ['count' => N] массаар засагдсан
  • •PayjpGateway::refund()-ийн metadata[refund_reason] PAY.JP-д татгалзагдсан → refund_reason болгон өөрчлөгдсөн
  • •service-manage.php администраторын эрх шалгалт — role === 'admin' → role IN ('admin','supervisor') 5 үйлдэлд нэгэн зэрэг засагдсан
  • •Үйлчилгээний захиалгын домэйн таб: буцаалтын дараа нягтлан бодох бүртгэлийн карт сөрөг тоо харуулсан → SQL логик засагдсан (status='paid' / 'refund' тусдаа нийлбэр)

Added

  • •ssh.21ces.com Cloudflare Tunnel бүртгэгдсэн (Public Hostname: SSH → localhost:22)
  • •Гадаад PC: cloudflared access ssh --hostname ssh.21ces.com эсвэл ~/.ssh/config дахь ProxyCommand
  • •Серверийн талд: PermitRootLogin no, thevos түлхүүр бүртгэгдсэн
v2.4.3 2026-04-29 · 6 сарын өмнө
VosCMS автомат суулгалт + Хостинг миний хуудас нөөцлөлт / phpMyAdmin

Added

HostingProvisioner.php installVoscms() нь zip deploy-ийн дараа install-core.php-г step 3 → step 4 дараалан дуудах болсон (өмнө нь зөвхөн step 2):

  • •Шинэ runInstallCoreSteps() — _db POST fallback ашиглан сессийг тойрч гарах + .installed маркер шалгах
  • •Шинэ callInstallCore() — HTTP loopback (port 80, Cloudflare edge SSL ашиглах; rate limit-ийн үед origin сертификат байхгүй байх тохиолдлыг зохицуулах)
  • •Шинэ appendHostingEnv() — install-core.php нь .env файлыг дарж бичсэний дараа HOSTING_* хувьсагчдыг дахин оруулах
  • •Суулгалт дууссан үед welcome.html-ийг автоматаар устгах (VosCMS index.php нь эхэлж ажиллахын тулд)
  • •Төлбөрийн урсгал service-order.php:567-576 — суулгалт амжилттай болсон үед addon metadata-д install_completed_at, install_admin_url-ийг автоматаар бичих (миний хуудас табыг харуулах тэмдэглэгч)

Added

admin/service-orders/detail.php:175-260 + partials/addon.php:

  • •Нэмэлт үйлчилгээний "Суулгалт дэмжлэг" addon-д хоёр товч:
  • •VosCMS суулгах (ягаан) — install_info байгаа бөгөөд install_completed_at байхгүй үед
  • •Админ хуудас (ногоон) — суулгалт дууссаны дараа шинэ цонхонд admin URL нээх
  • •API action admin_run_voscms_install — HostingProvisioner.installVoscms()-г шууд дуудах, DB итгэмжлэл metadata.server.db эсвэл хэрэглэгчийн .env fallback
  • •Амжилттай болсон үед: addon metadata + voscms_installed order_log бичлэг

Added

customer/mypage/service-partials/hosting.php:

  • •🟢 Сайт нөөцлөх товч — service-manage.php?action=request_backup (шинэ)
  • •mysqldump → DB dump + zip багцлалт (public_html, .env, sql)
  • •Гарын үсэглэсэн татаж авах URL (HMAC, 10 минут хугацаа) — api/backup-download.php шинэ
  • •7 хоногоос хуучин нөөцийг автоматаар цэвэрлэх
  • •🟣 phpMyAdmin нээх — https://pma.voscms.com/?lang=<user_locale> шинэ цонхонд
  • •nginx vhost: pma.voscms.com.conf шинэ (Cloudflare Tunnel *.voscms.com wildcard-аар автоматаар чиглүүлэх)
  • •Хэрэглэгчийн өөрийн DB итгэмжлэлээр нэвтрэх
  • •DB холболтын мэдээлэл харуулах (host / DB нэр / хэрэглэгч / нууц үг toggle)
  • •13 хэлний i18n: btn_site_backup, btn_open_phpmyadmin, confirm_site_backup, backup_in_progress, backup_ready, f_password, password_notice, f_protocol

Added

customer/mypage/service-partials/_setup-monitor.php:

  • •Хостинг тохиргоо → VosCMS автомат суулгалт алхмуудыг тусгаарлах
  • •system_imported захиалга (сис. хостингийн бүртгэл, жишээ нь vos.21ces.com) — шууд идэвхжүүлэлт, мониторинг хайрцаг харуулахгүй
  • •13 хэлний шинэ i18n: setup_step_voscms_install

Changed

rsync exclude нэмэлтүүд:

  • •5 дотоод plugin (хостинг хэрэглэгчийн сайтад орж болохгүй):
  • •vos-developer, vos-hosting, vos-license-server, vos-market, vos-salon
  • •7 reservation migration SQL (хостинг хэрэглэгч захиалгын систем суулгадаггүй):
  • •001_create_reservation_tables.sql, 011_seed_service_translations.sql, 012_seed_service_translations_p2.sql, 013_add_source_to_reservations.sql, 014_add_payment_status_to_reservations.sql, 015_create_reservation_core.sql (шинэ), 016_alter_reservation_services.sql, 024_reservations_bundle_columns.sql

dev файлуудыг устгах нэмэлтүүд:

  • •admin/ директор (offline.html үлдэгдэл) — хоосон директор nginx directory indexing-ээр 403 үүсгэдэг, зөвхөн root /offline.html-г sw.js дуудадаг
  • •Үндсэн кодчилол → obfuscate.php (өмнөх ionCube EVAL нь runtime hang үүсгэсэн, USE_IONCUBE=1 тохируулсан үед л ionCube)

Changed

001_create_base_tables.sql нь base + reservation хоёулангийнх нь хүснэгт нэг файлд үүсгэж байсан бүтцийг тусгаарлах:

  • •Засварласан: 001_create_base_tables.sql — зөвхөн 5 үндсэн хүснэгт (rzx_admins, rzx_users, rzx_member_grades, rzx_settings, rzx_migrations) + үндсэн seed (member_grades default, settings default)
  • •Шинэ: 015_create_reservation_core.sql — захиалгын 9 хүснэгт (rzx_categories, rzx_services, rzx_service_options, rzx_reservations, rzx_payments, rzx_point_transactions, rzx_business_hours, rzx_holidays, rzx_staff_positions, rzx_staff) + захиалгын seed (business_hours, point_*)

Хостинг dist build хийхэд 015 хасагддаг → rzx_reservations хүснэгт үүсдэггүй → admin/dashboard.php:25-27-д $hasReservations = false → календарь автоматаар харагдахгүй.

Захиалгын систем ашигладаг сайтуудад (voscms.com, RezlyX гэх мэт) хоёр SQL файл хоёулаа хэрэглэгддэг → өөрчлөлт байхгүй.

Changed

config/templates/nginx-vhost.conf.tpl + HostingProvisioner addHttpsToVhost():

  • •Өмнө нь: port 80 (HTTPS redirect) + port 443 (бодит контент) → Cloudflare Tunnel + 80→443 redirect-тэй хослоход давтагдах redirect loop үүсч байсан
  • •Шинэ: 80/443 нэгдсэн server блок, ижил контент үйлчилдэг, redirect байхгүй
  • •fastcgi_read_timeout 60s → 300s (том INSERT-ийн үед nginx timeout-оос сэргийлэх)

Changed

  • •provision-hosting.php (CLI backfill хэрэгсэл): хостинг захиалгын metadata-г автоматаар шинэчлэх (hosting_provisioned, server.{ftp,db,env}) — өмнө нь зөвхөн service-order.php-ийн _autoProvisionHosting-г гүйцэтгэж байсан
  • •5 дотоод plugin + admin/ директорыг автоматаар устгах

Added

scripts/install-cli.php шинэ:

  • •Хостинг provisioning-ийн дараа install-core.php автомат дуудалтын backfill
  • •DB итгэмжлэл: subscription metadata-г эхлээд ашиглах, байхгүй бол хэрэглэгчийн docroot-ийн .env fallback
  • •Хэрэглэх: sudo -u www-data php scripts/install-cli.php --order=<ORDER>
  • •Амжилттай болсон үед: addon metadata-д install_completed_at автоматаар бичих + order_logs-д voscms_installed action

Fixed

  • •Картаар төлөх салаанд _autoProvisionHosting() дуудалт дутсан байсан — нэмсэн
  • •Төлбөрийн metadata дахь install_info.admin_pw тодоор харагдаж байсан → миний хуудас / администратор хоёр тал дахь toggle (👁) хэв маягийг нэгтгэсэн

Migration Notes

  • •Гадаад хостинг хэрэглэгчид: тусдаа ажиллагаа шаардлагагүй. voscms-2.4.3.zip build нь цэвэр zip ашигладаг.
  • •Байгууллагын сайт (voscms.com): өөрчлөлт байхгүй (reservation SQL хоёр файл хоёулаа хэрэглэгдэж байгаа).
  • •Одоогийн хостинг хэрэглэгчид (dwhahn гэх мэт): deprovision + reprovision хийж цэвэр суулгах нь зөвлөмжтэй (тусгаарласны дараа шинэ zip ашиглах).
  • •Гараар цэвэрлэх: /etc/nginx/sites-available/pma.voscms.com.conf шинээр нэмэгдсэн — байгууллагын системд шууд deploy хийх (rsync-ийн гадна).
v2.4.2 2026-04-29 · 6 сарын өмнө
Хостингийн автоматжуулалтын төлбөрийн hook + Үйл ажиллагааны бүртгэлийн i18n

Added

service-order.php-д төлбөр дуусмагц шууд дуудагдана:

  • •Шинэ функц _autoProvisionHosting($pdo, $prefix, $orderId, $orderNumber) — төлбөрийн транзакцийн гадна ажиллана (DB бүрэн бүтэн байдал тусгаарлагдсан; алдаа гарсан ч захиалгад нөлөөлөхгүй)
  • •domain_option = 'free' л шууд тохируулагдана (Cloudflare дэд домэйн — DNS автомат бүртгэл дууссан тул боломжтой)
  • •new (домэйн худалдаж авсны дараа NS өөрчлөлт хүлээж байна) / existing (өөрийн домэйний NS өөрчлөлт хүлээж байна) нь deferred — администратор домэйн идэвхжүүлэх үед тусад нь дуудна
  • •'install' addon-д install_info байвал voscms файлуудыг deploy хийж + .env-г автоматаар үүсгэнэ (install-core.php-ийн алхам алхмаар сессийн урсгал (2–5-р алхам)-ийг автоматжуулах нь voscms-ийн суулгах дамжлагыг бүхэлд нь дахин дизайн хийх шаардлагатай томоохон ажил учраас Фаз 5-д тусад нь хийгдэнэ; хэрэглэгч төлбөр хийсний дараа https://<домэйн>/install.php-д хандаж → шид дэлгэцийг дагана (DB мэдээлэл .env-д урьдчилж оруулагдсан))
  • •ftp/db/env мэдээллийг хостингийн бүртгэлийн metadata.server-д автоматаар хадгална → Миний хуудасны хостингийн табд автоматаар харагдана (UI өөрчлөх шаардлагагүй)
  • •order_logs үйлдлүүд: hosting_provisioned / hosting_provision_skipped / hosting_provision_deferred / hosting_provision_failed

Дуудах дараалал: төлбөрийн commit → _autoProvisionHosting() → _autoProvisionMailDomain()

Added

Администраторын үйлчилгээний захиалгын дэлгэрэнгүй хуудасны (detail.php:498-528) $actionLabels 8-аас 31 болж өргөтгөгдлөө. Үйл ажиллагааны бүртгэлд код (mail_account_added гэх мэт) тэр чигээрээ харагдаж байсан асуудлыг засав.

Шинэ нэмэгдсэн үйлдлийн харьцуулалтууд:

  • •Шуудан: mail_account_added/deleted, mail_address_changed, mail_provisioned/_skipped/_failed, mail_domain_migrated/activated, bizmail_upgrade_request
  • •Хостинг: hosting_provisioned, hosting_provision_skipped/deferred/failed, hosting_deprovisioned
  • •Нэмэлт үйлчилгээ: admin_add_storage_addon, admin_delete_addon, storage_addon_paid/requested
  • •Систем: customer_notified, setup_email_sent, server_info_updated, bulk_extended, manual_capacity_period_fix

Үйлдэл бүрийн өнгөний утга: green (дууссан/эерэг), amber (хүлээгдэж буй/анхааруулга), red (амжилтгүй/устгасан), blue (мэдээлэл/мэдэгдэл), violet (администратор/тусгай), zinc (төвийг сахисан).

i18n түлхүүр 23 — services.admin_orders.act_* — ko/ja/en 3 хэлэнд нэмэгдлээ (операторын хуудас). Бусад 10 хэл англи хэлийг fallback болгоно.

Changed

Хостингийн автомат provisioning хийх үед VosCMS автомат суулгалт нь зөвхөн файл deploy + .env автомат үүсгэх хүртэл л хийгдэнэ. install-core.php-ийн алхам алхмаар сессийн урсгал (2–5-р алхам)-ийг автоматжуулах нь voscms-ийн суулгах дамжлагыг бүхэлд нь дахин дизайн хийх томоохон ажил учраас Фаз 5-д тусад нь хийгдэнэ. Хэрэглэгч төлбөр хийсний дараа https://<домэйн>/install.php-д хандаж → шид дэлгэцийг дагана (DB мэдээлэл .env-д урьдчилж оруулагдсан).

installVoscms() буцаах утга өөрчлөгдлөө — install_url + note мэдэгдлийн мессеж буцаадаг болов.

v2.4.1 2026-04-29 · 6 сарын өмнө
Хостингийн виртуалчлал автомат провижнинг (1–3-р үе шат)

Added

HostingProvisioner.php — Хостинг захиалахад автоматаар тохируулах үндсэн анги. 9 алхамт транзакц (алдаа гарвал урвуу дарааллаар буцаана):

  • •Linux хэрэглэгч үүсгэх (vos_<order_number>, 32 тэмдэгтийн хязгаарт, том/жижиг үсгийг хадгалсан)
  • •Директорийн бүтэц: /var/www/customers/<order>/{public_html,logs,tmp} (chmod 750/2775/750/1770)
  • •Дискийн квот (setquota -u <user> <soft> <hard>, hard = soft × 1.1)
  • •Директорийн зөрчил шалгах: одоо байгаа nginx vhost / reserved_subdomains-тай зөрчилдвөл татгалзана
  • •1.9TB SSD /var/www маунт (ext4 + noatime + usrquota,grpquota)
  • •Төвийн sudoers (/etc/sudoers.d/voscms-hosting-provisioner) — www-data нь useradd/setquota/nginx гэх мэт root тушаалуудыг NOPASSWD-ээр ажиллуулна
  • •Тушаал бүрийн аргументийн загварын хязгаарлалт (vos_, /var/www/customers/, *.conf) — visudo баталгаажуулалтыг давна

CLI хэрэгсэл scripts/provision-hosting.php:

php provision-hosting.php SVC260428AE7476 hotel.com 1GB
php provision-hosting.php --order SVC260428AE7476           # DB автомат хайлт
php provision-hosting.php --deprovision SVC260428AE7476 hotel.com
php provision-hosting.php --install-voscms <order> <domain> <capacity>

Загварууд config/templates/:

  • •nginx-vhost.conf.tpl — HTTP + ACME сорилтын байршил + хэрэглэгч бүрийн FPM сокет
  • •welcome.html.tpl — идэвхжүүлэлтийн угтах хуудас

Added

Хостинг бүр өөрийн хэрэглэгчийн эрхэр PHP ажиллуулна (сайт хоорондын халдлагаас хамгаална) + Cloudflare proxy-ийн цаана ч SSL автоматаар олгогдоно.

config/templates/php-fpm-pool.conf.tpl:

  • •user = vos_<order> / group = www-data — UID тусгаарлалт
  • •listen = /var/run/php/<order>.sock — хэрэглэгч бүрийн сокет
  • •pm = ondemand — бага трафиктай хостингт санах ойн хэрэглээ үр ашигтай
  • •php_admin_value[open_basedir] — зөвхөн сайтын директор + /tmp + /usr/share/php хандах
  • •disable_functions — exec, passthru, shell_exec, system, proc_open, popen, pcntl_exec
  • •session.save_path / upload_tmp_dir — хэрэглэгчийн директорт тусгаарласан
  • •env: HOSTING_ORDER / HOSTING_USER / HOSTING_DOMAIN

Let's Encrypt SSL — Cloudflare DNS-01 сорилт:

  • •python3-certbot-dns-cloudflare залгаас
  • •/etc/letsencrypt/cloudflare/credentials.ini (root 0600, .env-ийн CLOUDFLARE_API_TOKEN)
  • •Cloudflare proxy / гадаад хүртээмжээс үл хамааран олгогдоно
  • •HTTPS серверийн блок автоматаар нэмэгдэнэ (TLS 1.2/1.3, хүчтэй шифр, HSTS, X-Frame-Options, X-Content-Type-Options)
  • •HTTP → HTTPS 301 автомат дахин чиглүүлэлт
  • •certbot.timer өдөрт 2 удаа автоматаар шинэчилнэ (аль хэдийн идэвхтэй)

Added

Хостинг захиалга бүрт DB + хэрэглэгч тусгаарлалт.

  • •hosting_admin MySQL данс (1 удаа үүсгэнэ, ALL PRIVILEGES + GRANT OPTION) — зөвхөн DB удирдлагад
  • •DB нэр/хэрэглэгч = vos_<order> (Linux хэрэглэгчийн нэртэй адил)
  • •Нууц үг: 32 hex санамсаргүй (bin2hex(random_bytes(16)))
  • •GRANT ALL PRIVILEGES ON vos_<order>.* TO vos_<order>@localhost — зөвхөн өөрийн DB-д хандах
  • •Тусгаарлалт шалгах: бусад хостингийн DB / voscms_prod-д хандахад Access denied 1044 буцаана

VosCMS автомат суулгалт (installVoscms() — --install-voscms эсвэл addon-д install_info байхад ажиллана):

  • •voscms-dist/voscms-X.Y.Z.zip сүүлийн багцыг задалж → public_html
  • •.env автоматаар үүсгэнэ: APP_KEY=base64:<32 байт> / DB мэдээлэл / HOSTING_ORDER оруулсан
  • •Эрх: vos_:www-data, .env chmod 640
  • •install-core.php-г толгойгүй дуудах (одоогоор 301 дахин чиглүүлэлтийн асуудал байгаа, 4-р үе шатад шийдвэрлэх)

Verified

provision DEMO260429FULL demo07.21ces.com 1GB --install-voscms:

  • •✅ Хэрэглэгч vos_DEMO260429FULL (UID тусгаарлалт, www-data бүлэг)
  • •✅ Дискийн квот 1GB soft / 1.05GB hard
  • •✅ PHP-FPM pool өөрийн сокет
  • •✅ nginx vhost (HTTP + HTTPS, HSTS)
  • •✅ Let's Encrypt SSL (/etc/letsencrypt/live/demo07.21ces.com/)
  • •✅ MySQL DB vos_DEMO260429FULL + хэрэглэгч (тусгаарлалт баталгаажсан)
  • •✅ VosCMS 2.3.9 файлууд + .env байрлуулсан

deprovision: Бүх нөөцийг цэвэрхэн устгасан (хэрэглэгч/home/DB/FPM pool/nginx/SSL).

v2.4.0 2026-04-29 · 6 сарын өмнө
Хостингийн автоматжуулалтын дэд бүтэц + Хуанлийн тооцоо + Мэйл системийн бүрэн хэрэгжилт

Added

Салбарын стандарт anniversary аргын (бүртгэлийн өдрөөс 1 жилийн дараа) оронд хуанлийн сарын эцэс дуусгавар болгох (дараа сарын 1-нээс дуусах сарын сүүлийн өдөр хүртэл) аргад шилжив. Ижил сард бүртгүүлсэн хэрэглэгчид ижил дуусах хугацаатай болж, cron багцаар боловсруулах болон нягтлан бодох бүртгэлийн хаалт хялбарчлагдана. Японы хостингийн стандарт (月末締め翌月1日請求) загварыг дагана.

  • •DB: rzx_subscriptions.billing_start DATETIME NULL баганыг нэмэв (энгийн тооцоо эхлэх огноо)
  • •Туслах функцууд: _proratedFirstAmount (сарын нэгж ÷ 30 × үлдсэн өдрийн тоо), _calendarBillingStart (дараа сарын 1), _calendarExpires (сүүлийн өдөр 23:59:59)
  • •Захиалгын маягт: hosting_prorated-ийг хостингийн төлбөрийн зүйлд автоматаар нэмнэ (жишээ: 4/2-нд бүртгүүлж 12 сар ¥1,000/сар → эхний сар ¥967 + 12 сар энгийн ¥12,000 = ¥12,967)
  • •Домэйнүүд anniversary аргыг хадгалана (1 жилийн бүртгэлийн мөчлөг); хостинг, мэйл, засвар үйлчилгээ, нэмэлт үйлчилгээнүүд хуанлийн аргыг ашиглана
  • •service-order.php дахь -1 second → -1 day боловсруулалтыг мөн нэгтгэв
  • •Нэмэлт үйлчилгээнүүд (веб хадгалах зай нэмэх) мөн ижил өдрийн тооцоо + энгийн N сарын нийлбэрийг ашиглана. Хостингийн дуусах хугацаатай автоматаар синхрончлогдоно

Added

ConoHa VPS (133.117.72.149) дээр Postfix + Dovecot + Rspamd + Roundcube + OpenDKIM + Let's Encrypt суулгав. mail-tester 10/10, FCRDNS баталгаажсан. Захиалгын үед домэйн автоматаар тохируулагдана.

  • •DNS автомат бүртгэл (CloudflareDns.php) — A / MX / SPF / DKIM / DMARC 5 бичлэгийг нэг дор
  • •DKIM түлхүүр үүсгэх — mx1 SSH rspamadm dkim_keygen (тусгай ed25519 түлхүүр storage/keys/mailsync_ed25519, www-data эзэмшигч, 0700)
  • •3 горимт нөөцлөлт (MailDomainProvisioner.php): free (дэд домэйн шууд) / new (домэйн худалдаж авсан, администраторын идэвхжүүлэлт) / existing (NS өөрчлөх зааварчилгаа). existing_pending / new_pending / active горимын машин
  • •Нууц үг: SHA512-CRYPT ({SHA512-CRYPT}$6$...) — Dovecot-тай нийцтэй нэг чиглэлийн хэш. Хуучин enc: (encrypt функц) нууц үгийн шилжүүлгийн скрипт: scripts/migrate-mail-passwords.php
  • •mx1 синхрончлолын cron (scripts/mail-sync-to-mx1.php) — voscms_prod → mx1 mail_lookup virtual_users-ийг 5 минут тутамд синхрончилна. Мэйлийн үйлдлийн дараа шууд дэвсгэр синхрончлол хийх шуурхай идэвхжүүлэгч (triggerMailSyncToMx1()) мөн нэмэв
  • •cron автомат бүртгэл: /etc/cron.d/voscms-mail-sync
  • •Мэдэгдэл: администратор (нөөцлөлт шаардлагатай) / хэрэглэгч (мэйл бэлэн) HTML мэйлийн загвар (MailNotifier.php)

Added

Үндсэн мэйл / бизнес мэйлийг хостингтой хамт удирдана. Ижил хаяг mail subscription + hosting metadata хоёуланд хадгалагдаж UI-д давхардан харагдаж байсан асуудлыг засав (ганц эх сурвалж: mail subscription).

  • •Вэбмэйл товч — Roundcube ?_user=хаяг GET параметрийг ашиглан хэрэглэгчийн нэрийг урьдчилан бөглөх, target="_blank". URL тэргүүлэх дараалал: metadata.mail_server.webmail_url → WEBMAIL_URL env → өгөгдмөл https://mail.voscms.com/
  • •Имэйл өөрчлөх товч — алдаа засварын зориулалтаар. Домэйн хэвээр; зөвхөн орон нутгийн хэсэг өөрчлөгдөнө. Ижил захиалгын бүх mail + hosting metadata синхрончлогдоно
  • •Давхардал арилгах логик (mail.php) — _seenAddresses-ийг ашиглан давхардсан хаягийг зөвхөн нэг удаа харуулна, mail subscription тэргүүлнэ
  • •service-detail.php-ийн виртуал hosting → mail хувиргалт нь жинхэнэ mail subscription байхгүй үед л ажиллана (хуучин өгөгдлийн нийцтэй байдал)
  • •service-order.php нь шинэ бүртгэлд hosting metadata.mail_accounts-ийг хадгалахгүй болсон (mail subscription нь ганц эх сурвалж)

Added

Миний хуудасны нэмэлт үйлчилгээний табад хостингийн хадгалах зай нэмж төлбөр хийх. PAY.JP хэрэглэгч бүртгэл + chargeCustomer.

  • •Модаль: хадгалах зай сонголт (1GB/3GB/5GB) + картын мэдээлэл оруулах (payjp.js v2 Elements)
  • •Карт бүртгэх / өөр картаар төлөх / бүртгэлтэй карт руу буцах тогл
  • •Хугацаа дууссан/татгалзсан картыг автоматаар илрүүлэх (expired_card, card_declined, invalid_* гэх мэт PAY.JP-ийн алдааны кодууд) → картын маягт автоматаар нээгдэнэ + чиглэлийн баннер
  • •Картын эзэмшигчийн нэрийн оруулах талбар нэмэв (addon-card-holder) — токенд дамжуулахгүй, хэрэглэгчийн метадата болгон хадгална (PAY.JP v2 Elements нь name сонголтыг дэмждэггүй)
  • •Портал загвар: document.body.appendChild() ашиглан transform хязгаарлагдсан контейнерээс гарч viewport бүрийг бүрхэнэ (z-[9999])
  • •Шинэ хэрэглэгч үүсгэсний дараа charge амжилтгүй болвол: автомат буцаан олгох + хэрэглэгч устгах (өнчин бичлэг урьдчилан сэргийлэх)
  • •hosting metadata.extra_storage[]-д хуримтлуулагдана; hosting табын хадгалах зайн хэмжигч нийт дүнг харуулна

Added

StarServer болон бусад Японы хостинг компаниудын стандарт нөхцлийг лавлан 14 зүйл (тодорхойлолт, өргөдөл, төлбөр, автомат сунгалт, цуцлалт, үйлчилгээ, нөөцлөлт, хориглосон зүйл, зогсоолт, засвар үйлчилгээ, хувийн мэдээлэл, хариуцлага, өөрчлөлт, харьяалал) бүтэцжүүлэв. Хуанлийн тооцоо + эхний сарын өдрийн тооцоо + цуцлах үед ашиглагдаагүй сарын буцаан олгох бодлогыг тодорхойлов.

  • •Системийн хуудас бүртгэл: config/system-pages.php hosting-terms slug, 🖥️ индиго
  • •Хуудасны редакторын зураглал: pages-document.php — pageMetaMap['hosting-terms']
  • •DB суулгалт: ja (үндсэн) / ko / en 3 хэл (rzx_page_contents)
  • •i18n: site.pages.hosting_terms + hosting_terms_edit (editor_title/desc)

Added

  • •4 таб үргэлж харагдана (detail.php) — hosting/domain/mail/addon. Өгөгдөл байхгүй үед хоосон төлөвийн мессеж (empty_*) харагдана
  • •Нэмэлт үйлчилгээний таб — + Хадгалах зай нэмэх товч (администраторын үнэгүй олгох модаль, хадгалах зай сонгоход шууд active addon subscription үүсгэнэ, billing_amount=0, expires=хостингийн дуусах огноо) + зүйл бүрийн хогийн сав/устгах товч (зөөлөн устгах status=cancelled, hosting metadata.extra_storage[]-аас арилгана)
  • •Жагсаалт — өргөдлийн этгээдийг харуулах сайжруулалт (index.php) — supervisor/admin роль бүхий системийн администраторын захиалгуудыг user.name + ягаан хөндлөн гарчиг Супер администратор: [email protected] хэлбэрээр харуулна (FKzGx9SE7xG/2 гэх мэт хуучин шифрлэгдсэн applicant_name-ийн тайлалтын алдааг тойрно)
  • •Захиалга үүсгэх товч (+ New Order) — зөвхөн UI, функц дараа нэмэгдэнэ
  • •i18n 13 хэл: role_supervisor, role_admin, btn_create_order, empty_, btn_add_storage_addon, btn_delete_addon, modal_add_storage_, confirm_, alert_ болон 20 гаруй түлхүүр

Added

  • •subdomain-check.php — DB (reserved_subdomains) тэргүүлэх + Cloudflare API нөөц. JS checkSubdomain() сервер дуудаж үр дүнг тусгана
  • •service-order.php дахь төлбөрийн өмнөх серверийн дахин баталгаажуулалт — клиент талаас тойрч гарахаас сэргийлнэ
  • •reserved_subdomains автомат импорт — Cloudflare бүсийн 11 одоогийн бичлэг (vos/bestatech/bt/dev/ec430/ec431/salon/ssh/test/thevos/ai.21ces.com)
  • •Цэсний INSERT IGNORE алдааны засвар (menus-api.php):
  • •add_menu_item: INSERT-ийн дараа хуучирсан орчуулгыг цэвэрлэх + INSERT ... ON DUPLICATE KEY UPDATE-ээр дарж бичих
  • •update_menu_item: title/url өөрчлөлтийг илрүүлж, хуучин 13 орчуулгыг устгах + системийн хуудас бол дахин бүртгэх
  • •rename_menu_item: гарчиг өөрчлөгдөхөд хуучин орчуулгыг цэвэрлэх
  • •Хуучин цэс (id=38, "VosCMS танилцуулга")-ийн олон хэлний орчуулга шинэ хостингийн ашиглалтын нөхцлийн цэсийг зааж байсан регресс засав

Added

Дараах урсгалыг бүтээв: үйлчилгээний захиалга → төлбөр дуусгавар → мэйл домэйны автомат нөөцлөлт → хэрэглэгчид мэдэгдэл.

  • •_autoProvisionMailDomain() дуудалтыг service-order.php-д нэмэв — төлбөрийн гүйлгээний гадна ажиллана (DB бүрэн бүтэн байдлын тусгаарлалт)
  • •DB: rzx_reserved_subdomains (zone, subdomain, record_type, reserved_by, reason) — боломжийн кэш
  • •DKIM түлхүүрийг автоматаар үүсгэж, metadata.mail_provision-д mode/origin/domain/zone/subdomain/provisioned_at хэлбэрээр хадгална
  • •Нөөцлөлтийн горим дахь UI салбарлалт (service-detail.php): pending / new_pending / existing_pending — табуудыг нуух ба зөвхөн хяналтыг харуулна (_setup-monitor.php); зөвхөн active үед табуудыг харуулна

Fixed

PHP-ийн $arr['key'] ?? [] нь түр зуурын утгыг буцаадаг тул &$ref нь анхны массивт нөлөөлдөггүй. change_mail_password / change_mail_address нь амжилттай хариу буцааж байсан ч metadata UPDATE нь нөлөөгүй байсан — нууц үг болон хаягийн өөрчлөлтүүд чимээгүй бүтэлгүйтэж байв.

  • •Индекст суурилсан шууд шинэчлэлтийн загварт шилжив: foreach ($arr as $i => $item) { $arr[$i]['k'] = ... }
  • •service-order.php дахь шинэ мэйлийн нууц үгийн хадгалалтыг мөн encrypt() (хоёр чиглэлийн) → mail_password_hash() (SHA512-CRYPT) болгов

Fixed

  • •Төлбөрийн хураангуйн тод ногоон өнгө → цэвэр өнгө болгов: text-green-400 → text-green-600 dark:text-green-400 (7 байршил)
  • •Дэд домэйн боломжийн хариу мессежийн i18n түлхүүр дутсан (order.php-ийн PHP→JS i18n зураглал + :fqdn байрлалдагч нэгтгэв)
  • •Дуусах огноо тооцоог нарийвчлав: +N months -1 second (ижил өдөр) → +N months -1 day (яг 1 өдрийн өмнө) → эцэст нь хуанлийн аргад нэгтгэв

Database

  • •rzx_subscriptions.billing_start DATETIME NULL нэмэв (dev + prod)
  • •rzx_reserved_subdomains хүснэгт (Cloudflare бүсийн мөргөлдөөний кэш)
  • •rzx_page_contents-д hosting-terms (ja/ko/en) суулгав
v2.3.9 2026-04-27 · 6 сарын өмнө
Үйлчилгээний захиалгын олон хэл + 3 бүс цэсний систем

Added

Домэйн, хостинг, нэмэлт, хүсэлт гаргагч, төлбөр, нэгтгэл гэсэн 6 хэсэг болон төлбөр дуусгасан хуудасны бүх текстийг 13 хэлэнд орчуулав. JS талын alert/модалын текстийг PHP-аас var I18N = {...} + t(key, replace) хэлбэрээр оруулж өгдөг.

  • •Байршил: plugins/vos-hosting/lang/{13 locales}/services.php — services.order.* 200 гаруй түлхүүр
  • •Миний хуудас үйлчилгээний дэлгэрэнгүй: services.detail.* 70 гаруй түлхүүр, service-detail.php
  • •Админ захиалга удирдлага: services.admin_orders.* 115 гаруй түлхүүр, admin/service-orders/
  • •DB-д хадгалагдсан солонгос хэлний шошгонуудыг (хостинг план, засвар үйлчилгээ, нэмэлтүүд) _localizeLabel($sub) клоужерээр тохиргооны ID-тай уялдуулж db_trans() хэрэглэнэ → Миний хуудас/Админ хоёуланд нэг адил боловсруулдаг

Added

Төлбөрийн товч дарагдахад захиалгын дэлгэрэнгүй (домэйн/план/нэмэлт/хүсэлт гаргагч/нөхцөл) баталгаажуулж, нэгтгэлийн модал харуулна → хэрэглэгч баталгаажуулна → төлбөр үргэлжилнэ. Хоосон субдомэйн бүртгэх мэтийн алдаанаас урьдчилан сэргийлнэ.

  • •order.js — showOrderConfirmModal(), closeOrderConfirmModal(), confirmAndPay()
  • •Төлбөр дуусгасны дараа үлдсэн модалын давхаргуудыг устгахыг бэхжүүлэв (DOM устгах + body/documentElement overflow дахин тохируулах)

Added

Нэмэлтийн табт "Суулгалтын дэмжлэг" (_id='install') чагтлах үед админ ID/имэйл/нууц үг/сайтын нэрийн оролтын маягт гарч ирнэ. Нууц үг нуугдсан + нүдний дүрс товч + "суулгасны дараа өөрчил" мэдэгдэл. Утгуудыг захиалгын метадата дахь install_info хэлбэрээр хадгалж, Миний хуудас/Админ хоёуланд харуулна.

  • •Оролт: _addons.php
  • •Харуулалт: Миний хуудас/Админ partials/addon.php (цэнхэр арын дэвсгэртэй хайрцаг + нууц үгийн товч)

Added

Нэмэлтийн табтай холбоотой байсан тэмдэглэлийг захиалга (rzx_orders.admin_notes) түвшинд шилжүүлэв. Нэмэлт байгаа эсэхийг үл харгалзан баруун талын үйл ажиллагааны бүртгэлийн дээр 7 мөрт текст талбар хэлбэрээр байнга харуулна. AJAX update_order_memo үйлдлийг нэмэв.

Added

Коор цэс болон плагины цэсийг харааны хувьд ялгахын тулд section талбар (top/main/bottom, анхны утга main) нэвтрүүлэв. Бүсүүдийн хооронд автоматаар зааглал орж, аль нэг бүст харуулах боломжтой цэс байхгүй бол зааглалыг хамтад нь алгасна.

Админ хажуу самбар:

  • •top: Дашборд / Гишүүн удирдлага / Сайт удирдлага / Автомат суулгагч (vos-autoinstall)
  • •main: VosCMS лицензи (vos-license-manager) / Хостинг удирдлага (vos-hosting)
  • •bottom: Плагинууд / Тохиргоо
  • •Өөрчлөлт: config/admin-menu.php, admin-sidebar.php

Миний хуудасны хажуу самбар:

  • •top: Дашборд / Профайл / Мессеж
  • •main: Үйлчилгээ (vos-hosting автоматаар нэмэгдэнэ) — бусад плагинууд нэмэхэд автоматаар хуримтлагдана
  • •bottom: Тохиргоо / Нууц үг / Бүртгэл устгах / Гарах
  • •Өөрчлөлт: config/mypage-menu.php, mypage-sidebar.php

Плагины цэс бүртгэл: plugin.json-ий menus.admin / menus.mypage дахь section + position-оор бүсийг заана. services цэсийг коор mypage-menu.php → vos-hosting/plugin.json-руу шилжүүлэв (автомат бүртгэл).

Added

Лицензи баталгаажуулах API болон хөгжүүлэгчийн портал API коорт байсан тул бүх voscms сайтад тараагдахад гаднаас харагдах асуудал гарч байв. Хоёуланг шинэ штаб-квартирын онцгой плагин болгон тусгаарлав.

  • •vos-license-server (scope: hq_only): 7 лицензийн эндпойнт шилжүүлэв (check, register, verify, stats, updates, register-plugin, _init)
  • •vos-developer (scope: hq_only): 7 хөгжүүлэгчийн портал эндпойнт шилжүүлэв (register, login, submit, my-items, earnings, update-version, _init)
  • •api/_plugin_dispatch.php — коорын wrapper нь диспатчаас өмнө rzx_plugins.is_active шалгаж, идэвхгүй бол 404 буцаана
  • •Коорын /api/license/.php, /api/developer/.php нь wrapper-г л үлдээнэ (гаднын нийцтэй байдлыг хадгална)
  • •/api/notices.php-д HQ_HOSTS env цагаан жагсаалт нэмэв (зөвхөн штаб-квартирын voscms.com домэйнаас хариулна)
  • •Бүтэцлэх скрипт (build-voscms.sh) api/license, api/developer, api/notices.php, vos-license-manager-г аль хэдийн хасдаг

Fixed

  • •Хостингийн гэрээний дуусах хугацааны +1 өдрийн алдаа (+12 months → +12 months -1 second) — subscription/free/paid/bank 4 газарт хэрэглэв
  • •Бизнесийн имэйл 2 ба түүнээс дээш нэмж чаддаггүй байсан (сонгогч нь X товчийг барьж байсан)
  • •Захиалгын нэгтгэлд нэмэлт хадгалах орон зайг тооцдоггүй байсан (storage select-ийн name шинж чанар дутуу байсан)
  • •Хостинг планы шошго олон хэлд хөрвүүлэгдэхгүй байсан — service_hosting_plans._id-г db_trans()-тай тохируулснаар шийдэв
v2.3.8 2026-04-25 · 6 сарын өмнө
Самбарын олон хэлний бүрэн дэмжлэг + FAQ/Q&A скин

Added

_init.php нь rzx_translations-аас board.{id}.{title|description|header_content|footer_content|seo_keywords|seo_description}-г шууд хайна (одоогийн локаль → en → эх). list/read/write/settings аль ч хуудсанд $board[$field] автоматаар орчуулсан утгаар дүүргэгдэнэ. Самбарын тохиргооны хуудасны "← Буцах" товч мөн адил механизмаар автоматаар орчуулагдана.

Асуудлын самбар (id=6)-ын title + header_content-ийн 13 хэлний seed (HTML бүтцийг хадгалж, зөвхөн текст орчуулна, боловсруулах үеийн бэйджийг мөн тус тус хэлнээр харуулна). Seed скрипт: scripts/seed_issue_i18n.php + scripts/seed_issue_i18n_data.php.

Added

rzx_board_extra_vars-ийн тодорхойлолтыг (шошго/тайлбар/сонголтууд/анхдагч утга) 13 хэлнээ орчуулав. 4 талбар × 13 = 52 мөр.

  • •ExtraVarRenderer::renderAll($vars, $values, $mode, $boardId) — boardId аргумент нэмэв, applyDefTranslations() нэг хайлтаар бүх var-ийн орчуулгыг бөөнөөр ачаалана.
  • •ExtraVarRenderer::getOptionLabel($boardId, $varName, $value) — жагсаалтын харагдацын нэг сонголтын орчуулсан шошго хайх (статик кэш).
  • •renderStatusBadge($value, $size, $displayLabel = null) — өнгө нь эх (ko) зургийн зааврыг хэрэглэж, зөвхөн текстийг орчуулна → бүх хэлэнд өнгө нэгдмэл (хүлээн авсан=ягаан, шийдэгдсэн=изумруд).
  • •select/radio/checkbox: value=эх / label=орчуулга загвар. Нийтлэл хадгалахад үргэлж эх утга хадгалагдаж, өгөгдлийн нийцтэй байдлыг хангана.
  • •Дуудагчийн шинэчлэлт: read.php, write.php, _list-row.php, анхдагч скины _list-card/_list-webzine/_list-gallery.

Асуудлын самбарын статус нэмэлт хувьсагчийн 13 хэлний seed: scripts/seed_ev_status_i18n.php.

Added

extra_var_get API нь db_trans()-аар одоогийн локалийн орчуулсан утгыг localized объект болгон буцаана. JS модал localized.title || ev.title-г тэргүүлэн харуулна → Японы горимд модал нээхэд автоматаар "処理ステージ" харагдана.

extra_var_update нь локалиар салаалана:

  • •Эх локаль (ko) → эх мөрийг бүхэлд нь шинэчлэх (одоогийн зан авир)
  • •Эх бус локаль (ja/en/…) → зөвхөн мета (var_type/эрх/3 чек хайрцаг)-г эх рүү хадгалах; 4 орчуулгын талбар (title/description/options/default_value)-г одоогийн локалиар rzx_translations-д хадгалах → эх хоорондын нийцтэй байдал баталгаажсан

Нэмэлт хувьсагчийн жагсаалтын харагдацын нэрүүд мөн db_trans('board_ev.{boardId}.{varName}.title') ашиглана.

Added

Нэмэлт хувьсагч засварлах модалийн "Засварлах эрх" хэсгийг (шошго/унадаг жагсаалтын сонголт/тусламжийн текст) 13 хэлний lang файлд тусгаарлав. Шинэ түлхүүрүүд: site.boards.ev_permission, ev_perm_all, ev_perm_member, ev_perm_admin, ev_permission_help.

Added

Нэмэлт хувьсагч засварлах модалийн "Сонголтууд" талбарын хоёр талт нормалчлал:

  • •Модал ачаалах: DB-ийн JSON массивыг (["a","b","c"]) textarea-д харуулахад мөрийн завсар форматт хөрвүүлнэ (заавартай тохирох)
  • •Хадгалах API: ev_normalize_options() туслах мөрийн завсар эсвэл JSON оролтыг аль алийг нь хүлээн авч JSON массивт тогтмол хадгална. Өмнө нь мөрийн завсар оролт NULL болж хадгалагдаж байсан алдааг засав.

Added

Асуудал/мэдэгдлээс гадна шинэ агуулгын загварын хоёр скин нэмэв.

FAQ (skins/board/faq/) — нийтлэл = асуулт, агуулга = хариулт. Хайлтын мөр, ангиллын шүүлтүүр, хуудасчлалыг агуулна. Гарчгийн талбарын харагдац тогл, гарчиг/дэд гарчиг олон хэлтэй, дэвсгэр (зураг/видео/байхгүй) дэмжлэг, давхцлын тунгалагшилт тохируулга. v1.0.1.

Q&A (skins/board/qna/) — нийтлэл = асуулт (гарчиг+агуулга), сэтгэгдэл = хариулт. Хариулаагүй бэйдж, эхний зүйл автоматаар задрах, модны эрэмбэ (parent_id/depth) сэтгэгдлийн харагдац. Хариулт дахь хариултыг догол мөрийн + "↳ Хариулт" шошгоор (хамгийн дээд нь "А.") ялгана. Шугаман засварлах/хариулах маягт (зөвхөн зохиогч/администратор засварлах, perm_comment эрхтэй хариулах). v1.0.0.

Хоёр скин нийтлэг: Администраторын тохиргооны арааны дүрс тэмдгийг хайлтын мөрний доод баруун тийш байрлуулав (гарчгийн талбараас тусгаарлав). boardSkinFile() нь _list-full.php тэргүүлэх дарааллаар ажиллана.

Added

api-comments.php-д update үйлдэл нэмэв. Зөвхөн comment.user_id == одоогийн хэрэглэгч эсвэл администратор засварлах боломжтой. Тэмдэгтийн тоог шалгасны дараа content + updated_at-г шинэчлэнэ.

Added

Загварын тохиргооны copyright талбарт байгаа {year} токеныг рендерлэх үед автоматаар одоогийн жилээр солино. DB-д анхны ({year}-тай) хадгалагддаг тул жил бүр гараар засах шаардлагагүй. Хэрэгжүүлэлт: default/minimal/modern/base-footer.php. 4 layout.json-ийн зохиогчийн эрхийн тайлбарыг 13 хэлнээ өргөжүүлж, {year} ашиглах заавар мөн тус тус хэлнээр харуулав.

default/minimal хөлд $_lc['copyright']-г үл тоомсорлодог байсан алдааг мөн засав — загварын тохиргооны утга одоо бодитоор рендерлэгдэнэ.

Added

menu_item.38.title-ийн 13 хэлний seed (VosCMS танилцуулга / About VosCMS / VosCMSについて / Über VosCMS / Acerca de VosCMS / À propos de VosCMS / Tentang VosCMS / VosCMS-ийн тухай / О VosCMS / VosCMS Hakkında / Giới thiệu VosCMS / 关于 VosCMS / 關於 VosCMS).

Added

Боловсруулах үе шат тус бүрт нэг дэлгэц + байгаа нэг шийдэгдсэн = нийт 4. Тус бүр нийтлэлийн гарчиг/агуулгыг 13 хэлнээ орчуулав (104 мөр).

Үе шатГарчиг (ko)Төлөв
Хүлээн авсан[Алдаа] Мобайл дэх бургер цэсний X товч ажиллахгүйШинэ
Шалгаж байна[Функцын хүсэлт] Сэтгэгдэл бичихэд нийтлэлийн зохиогчид и-мэйл мэдэгдэлШинэ
Явцтай[Гүйцэтгэл] Зах зээлийн дэлгэрэнгүй хуудасны эхний ачааллын хурдыг сайжруулахШинэ
ШийдэгдсэнСамбарын нийтлэлд хавсаргасан зураг агуулгад оруулав...Байгаа

Байгаа post 34 (Tailwind шугаман стиль хуримтлагдсан туршилтын нийтлэл) устгав.

Fixed

customer/board/list.php нь 167-р мөрд rzx_admin_icons туслахыг require хийж байсан боловч 161-р мөрд скины файлыг include хийхэд return-ээр гарч байсан тул FAQ/Q&A скинд rzx_admin_icons() дуудахад 500 алдаа гарч байсан. require_once-г скины include-ийн дээр зөөв.

v2.3.7 2026-04-25 · 6 сарын өмнө
AutoInstall UX Integrated Overhaul

Changed

Хуучин /marketplace нэрний үлдсэн лавлагаануудыг устгав. Хайлтын маягт /marketplace руу GET-ээр илгээн dashboard руу дахин чиглүүлж байсан алдааг (хайлт/эрэмблэлт/шүүлтүүр өөрчлөхөд хуудас орхидог байсан) засав. browse.php, item-detail.php, item-submit.php, purchases.php, assets/js/marketplace.js бүгдийг /autoinstall-д нэгтгэв.

Added

install.php Алхам 4-д админ замын оруулах талбарын доор шар өнгийн зөвлөгөө + URL-н бодит цагийн урьдчилан харах + дэлгэдэг "Яагаад өөрчлөх хэрэгтэй вэ?" заавар нэмэв. Хэн ч ойлгох боломжтой хэлээр 3 шалтгааныг тайлбарлав: автомат хакинг оролдлого (brute force), эмзэг байдлын сканнердалт, хүчтэй нууц үгийн хязгаарлалт. 13 хэл бүгдэд хэрэглэв.

Added

install.php-н суулгалт дуусах алхамд vos-autoinstall плагиныг автоматаар бүртгэж идэвхжүүлнэ (PluginManager::install()-г шууд дуудан). Хэрэглэгч тусад нь суулгалтгүйгээр администратор самбарт нэвтрэн шууд маркетплейс ашиглах боломжтой.

Added

market.21ces.com/api/market/catalog ба /item-д ?locale=xx параметр дэмжлэг нэмэв. name, description, short_description, cat_name-н олон хэлний JSON-г серверээс нэг мөр болгон буцаана (fallback: хүссэн locale → en → анхны утга). VosCMS талын бүх json_decode + locale fallback давхардсан логикийг устгав (browse.php, item-detail.php, _components/item-card.php).

Added

Файл суурьтай маркетплейс API-н хариу кэшийн TTL-г PluginManager тохиргоонд нэгтгэн удирдана. Хатуу кодтой 30 минут → 5 минутын анхдагч, 1·5·10·30·60 минутын сонголттой. https://vos.21ces.com/theadmin/settings/general-н маркетплейс кэш хэсэг болон /theadmin/autoinstall/settings хоёулаа ижил тохиргоог уншиж/бичиж автоматаар синхрончлогдоно. AutoInstall хуудасны баруун дээд болон ерөнхий тохиргооны хуудас хоёулаа шуурхай кэш шинэчлэх товч нэмэв. TTL өөрчлөгдөхөд одоо байгаа кэш автоматаар хүчингүй болно.

Added

Маркетплейс администратортай адил өгөгдлийн төрөл / товч тайлбар / slug / Product Key / VosCMS·PHP-н хамгийн бага хувилбар / партнер / үнэ / лицензийн хүснэгтийг header-н дараа шууд харуулна. Зүүн:баруун контентийн харьцааг 2:1 → 3:1 болгон контентийн талбарыг өргөсгөв.

Added

Дэлгэрэнгүй хуудасны шүүмжийн табын баруун дээд хэсэгт "Шүүмж бичих" товч нэмэв. Одны үнэлгээ / нэр / текст оруулах модаль → VosCMS API → маркетплейс POST /api/market/item/review-д дамжуулна. VosCMS лицензийн түлхүүр + домэйн автоматаар хавсаргана, нэг домэйн дээр нэг удаа бичих хязгаарлалт, худалдагчид is_verified=1 автоматаар тохируулагдана. Шүүмж маркетплейсийн DB-д (rzx_mkt_reviews) status='pending'-ийн хэлбэрээр хадгалагдаж, операторын зөвшөөрлийн дараа нийтлэгдэнэ. Шинэ GET /api/market/item/reviews?slug=... endpoint нь зөвхөн зөвшөөрөгдсөн шүүмжийг буцаана. Домэйн хэсэгчилж нуун харуулна (mys***.com).

Added

Өмнөх Зөвхөн үнэгүй чекбокс → Бүгд / Үнэгүй / Төлбөртэй 3 дахин toggleд өргөтгөв. Маркет catalog API-д paid=1 параметр нэмэв (i.price>0). Хайлтын мөрөөс салгаж харагдацын toggle талбарын өмнө шилжүүлж, эрэмблэлтийн select-тай хамт header хэрэгслийн мөрт нэгтгэв.

Changed

Хайлтын input-н хүрээ border-2 border-emerald-300, зүүн хайлтын дүрсэнд ногоон дэвсгэр хайрцаг, хайлтын товч bg-emerald-500. Зөвхөн түлхүүр үгийн оруулалт үлдээж, эрэмблэлт·шүүлтүүр функцийг агуулгын headerт шилжүүлэн хайлтын мөрийг хялбарчлав.

Changed

ТөлөвХарагдац
ҮнэгүйСуулгах + Татах
Төлбөртэй (худалдаагүй)Худалдаж авах (маркетплейсийн PAY.JP төлбөрийн модаль)
Төлбөртэй (худалдаж авсан)Суулгах + Татах
Аль хэдийн суулгасан"Суулгасан"

Жагсаалт хуудасны 4 харагдацад (жагсаалт/вэбзин/карт/сараалж) ижил салаалалт хэрэглэнэ. Худалдаж авсан slug-уудын иж бүрдлийг хуудас нэвтрэх үед нэг удаа асуун дахин ашиглана. Төлбөрийг маркет POST /api/market/item/purchase хариуцаж PAY.JP тооцоо + лиценз олгоно.

Changed

  • •Харагдацын загварын toggle: текст шошго устгав → зөвхөн дүрс + title / aria-label (хүртээмж хадгалав)
  • •Төрлийн тэмдэг: bg-<color>-100 тод дэвсгэр → bg-zinc-900/85 backdrop-blur-sm харанхуй тунгалаг + өнгөт текст (зурган дээрх уншигдах байдлыг сайжруулав)
  • •Дэлгэцийн агшин хэсэг: header-н дараа шууд → табын агуулгын доор шилжүүлж, маркетплейстэй адил (тоо) гэж харуулав
  • •Дэлгэрэнгүй хуудасны dark:prose-invert ажиллахгүй байсан → CDN Tailwind-д typography плагин нэмэв
  • •Дэлгэрэнгүй хуудасны тайлбарын хэсэг: маркетплейс администратортай адил аргаар <script>/<iframe>/<style>/onXX зэрэг аюултай элементийг л устгаж, HTML разметкийг ямар байгаагаар нь рендерлэнэ

Fixed

  • •PAY.JP картын маягт оруулалт хүлээн авахгүй: нуусан төлөвт урьдчилж mount хийснээс iframe 0px-ээр зурагдсан. Залхуу эхлүүлэлт + requestAnimationFrame mount-аар засав
  • •Виджетийн thumbnail дутуу: маркетплейсийн DB-д 28 виджет бүртгэлтэй боловч /var/www/market/widgets/-д 12 үнэгүй виджет л хуулагдсан байсан. 14 дутуу байсан нь синхрончлов. Catalog/item API-д screenshots-н үнэмлэхүй URL хөрвүүлэлт + байхгүй файлуудыг автомат шүүх функц нэмэв
  • •Бандл плагиний зөвшөөрөлгүй анхааруулга: vos-autoinstall нь unauthorizedPlugins-д унаж байсан. LicenseStatus.php-д BUNDLE_PLUGINS = ['vos-autoinstall', 'vos-marketplace'] тогтмол нэмж active()/fromCache()/canUsePlugin() бүгдэд шүүлт хэрэглэв. Лицензийн сервер verify.php-д мөн адил боловсруулалт хийв
  • •Виджетийн давхардсан нэмэгдэх боломж: install.php-н seed нь зөвхөн INSERT IGNORE ашигласан боловч rzx_page_widgets-д UNIQUE хязгаарлалт байхгүйгээс давхардал боломжтой байсан. Seed-д INSERT-н өмнө DELETE FROM page_widgets WHERE page_slug='home' болгон өөрчлөв (самбарын виджет зэрэг санаатай давхардал байдаг тул DB UNIQUE хязгаарлалт нэмсэнгүй)

Migration Notes

  • •vos-autoinstall плагиний цэс/маршрут/шилжилтүүд шинэ суулгалтанд автоматаар идэвхждэг (одоо суулгасан нь администраторын самбараас нэг удаа идэвхжүүлэх хэрэгтэй)
  • •Маркетплейс API кэшийн анхдагч TTL 30 минут → 5 минут (үнэ·агуулгын өөрчлөлт хурдан тусах)
  • •vos-autoinstall.cache_ttl плагиний тохиргоо шинэ
v2.3.6 2026-04-21 · 6 сарын өмнө
Маркетплэйс API шууд холболт

Changed

  • •browse.php: локал DB асуулгаас market.21ces.com/api/market/catalog-д шууд API дуудлага руу шилжив
  • •item-detail.php: локал DB-аас /api/market/item болон /api/market/item/versions API дуудлага руу шилжив
  • •CatalogClient.php: API үндсэн URL-г /api/v1 → /api/market болгон өөрчилж, хариуны items[] → data[] талбарыг уялдуулав

Fixed

Асуудал: market.21ces.com/index.php-ийн макет хэрэглэх блокт $__noLayout = true тохиолдлын боловсруулалт дутуу байсан тул плагины API бүх маршрут (api/market/*) HTTP 200 + хоосон хариу буцааж байв.

Засвар: index.php-ийн төгсгөлд elseif ($__pageFile && $__noLayout) { include $__pageFile; } нэмэв. api/market/catalog, api/market/item, api/market/updates/check гэх мэт ажиллалт хэвийн болов.

Added

plugins/vos-market/views/api/catalog.php-д sort, free, featured параметрүүдийг нэмж, хариуны талбаруудыг өргөтгөв (sale_price, rating_avg, is_featured гэх мэт).

Added

mpApiFetch() туслах функц: 30 минутын TTL файл кэшээр маркетплэйс серверт хүсэлт тавихыг хамгийн бага болгодог. API хариу амжилтгүй болвол алдааны баннер харуулна.

v2.3.5 2026-04-21 · 6 сарын өмнө
Лицензийн автомат бүртгэлийн логик дуусгасан

Fixed

Асуудал: AdminRouter-т $licenseClient = new LicenseClient() инстанц үүсгэж автомат бүртгэл хийхийг оролдсоны дараа $_ENV['LICENSE_KEY'] шинэчлэлт инстанцын дотоод $this->licenseKey-д тусгагдаагүй — иймд ижил хүсэлтийн дотор check() дуудахад unregistered гэж буцааж байсан алдаа.

Changed

  • •check()-д орох үед $this->licenseKey хоосон байвал шуурхай /api/license/register дуудна
  • •Амжилттай бол: $this->licenseKey шинэчлэх + $_ENV['LICENSE_KEY'] шинэчлэх + .env файл хадгалж verify алхам руу үргэлжлүүлнэ
  • •Зөвхөн амжилтгүй бол (сервер хариу өгөхгүй) unregistered буцаана
  • •Шинэ saveKeyToEnv() арга: хоосон LICENSE_KEY= мөрийг (install.php амжилтгүй тохиолдол) бодит түлхүүрээр солино; хэрэв аль хэдийн хүчинтэй түлхүүр байвал алгасана

Үр дүн

  • •install.php-гүйгээр гараар суулгасан хэрэглэгчид → администраторт анх нэвтрэхэд автоматаар лицензийн бүртгэл хийгдэнэ
  • •Хуучин хувилбараас шинэчилсэн хэрэглэгчид (LICENSE_KEY байхгүй) → шинэчилсний дараа администраторт анх нэвтрэхэд автоматаар бүртгэнэ
  • •Дашбоардын "Лицензи бүртгэгдээгүй байна" мэдэгдэл нь лицензийн сервер өөрөө хариу өгөхгүй тохиолдолд л харагдана
v2.3.4 2026-04-20 · 6 сарын өмнө
Контент бохирдлыг цэвэрлэх + карт CSS устгах

Fixed

database/seeds/legal_pages.php seed файлд Tailwind CSS хувьсагчид (--tw-scale-x, --tw-pan-x гэх мэт, 400+) нь бүх <h1>/<h2>/<p> тэгийн style="" атрибутад шугамын дотор суулгагдсан байсан. Суулгах бүрт энэ бохирдол DB руу тархаж terms болон privacy хуудсыг томруулсан (ялангуяа privacy/ko нь 128KB хүрсэн; норм нь 2KB).

  • •database/seeds/legal_pages.php: 442KB → 131KB (70% багасгав, синтакс хүчинтэй)
  • •Хөгжлийн DB-д аль хэдийн бохирдсон 26 мөрийг цэвэрлэв: 1.04MB → 56KB (988KB устгагдав, −95%)
  • •scripts/clean-inline-styles.php шинэ — style="... --tw-* ..." бөөн цэвэрлэх хэрэгсэл (дахин гарвал ахин ашиглана)

Changed

.board-content CSS нь "h2-г карт толгой болгон, h2+p-г карт биет болгон" хүчээр хөрвүүлдэг дүрмийг агуулж байсан. Энэ нь Tailwind-аар шууд дизайн хийгдсэн хуудсуудын (жнь: Brand) hero бүтцийг эвдэж байсан.

  • •Карт блокийн 103 мөрийг устгав (149 → 45 мөр)
  • •Үлдсэн дүрмүүд: үндсэн типографи (p/h·/blockquote/code/ul/ol/table), OG холбоос карт, харанхуй горимын текст дарах
  • •Үр дүн: Brand хуудасны анхны дизайн сэргэв (зүүн цэнхэр зураасан h2, голлуулсан hero гэх мэт)
  • •Хуулийн баримтуудад (terms/privacy гэх мэт) стандарт <h1><h2><p> типографи хангалттай — карт хэлбэр хэт чимэглэл байсан
v2.3.3 2026-04-20 · 6 сарын өмнө
Хуудасны Орчуулгын Бүтцийн Буцаалт (Нэг Хүснэгт рүү Шилжих)

Changed

Шийдвэрийн үндэслэл: 2.3.1 хувилбарт хуудасны агуулгыг Солонгос эх текстийн rzx_page_contents болон Солонгос бус хэлний rzx_translations хэмээх хоёр хүснэгтэд тусгаарлаж, 2.3.2-т эдитор дахь хадгалах замыг нэмсэн боловч дизайны дахин хянасны дараа хоёр хүснэгт нь үндсэндээ ижил бүтцтэй (slug/key + locale + content) байхад дараах хохирол учруулж байгаа нь тодорхой болсон:

  • •Солонгос эх текст давхардан хадгалагдаж байна (db_trans fallback chain-ийн толь болгон)
  • •Эдиторын хадгалах логик нь ko vs. ko бус салаалалт шаарддаг
  • •Хуудасны удирдлагын UI дахь locale төлөвийг харуулахад хоёр хүснэгтийг JOIN хийх шаардлагатай
  • •Анхны үндэслэл ("AI орчуулгын дамжлагын нэгдсэн дараалал") нь хуудасны урт HTML (10KB) болон UI-ийн богино тэмдэгт мөр (20 байт) нь өөр өөр ажлын урсгал (хэсэгт хуваах, тэгийг хадгалах г.м.) шаарддаг учир нэгтгэх ач холбогдол бага

Буцаасан бүтэц: rzx_page_contents нэг хүснэгт, locale тутам 1 мөр (анхны дизайн)

Migration

  • •rzx_translations.page.{slug}.title/content × 7 slug × 12 ko бус locale (168 мөр) → rzx_page_contents-д сэргээгдсэн
  • •rzx_translations-аас page.* түлхүүрүүдийг бүгдийг устгасан (234 мөр)
  • •Зорилтот: Brand, terms, privacy, refund-policy, tokushoho, funds-settlement, data-policy
  • •Хөгжүүлэлт болон үйлдвэрлэлийн DB хоёрт хоёулаа хэрэгжүүлсэн

Changed

  • •resources/views/admin/site/pages-edit-content.php — ko/ko бус салаалалтыг хасаж, энгийн UPSERT болгосон
  • •resources/views/admin/site/pages-document.php — мөн адил
  • •resources/views/customer/page.php — db_trans('page.*.title/content')-г хасаж, page_contents-г шууд уншдаг болсон (fallback chain locale → en → ko хэвээр)
  • •resources/views/admin/site/pages.php — хуудасны жагсаалтын гарчиг ч page_contents.title-г шууд уншдаг болсон

Kept

rzx_translations өөрөө хадгалагдаж байна — дараах зориулалтаар ашиглагдсаар байна:

  • •Самбар (board_post.{id}.title/content)
  • •UI тэмдэгт мөрүүд (menu.*, тохиргооны шошгонууд)
  • •Хуудасны SEO мета (page.{slug}.browser_title|meta_keywords|meta_description) — богино тэмдэгт мөр, энд тохиромжтой

Зарчим: богино UI/мета тэмдэгт мөрүүд → rzx_translations; урт хуудасны бие агуулга → rzx_page_contents, өгөгдлийн онцлогт тохируулан тусдаа хадгалах.

v2.3.2 2026-04-20 · 6 сарын өмнө
Хуудасны редакторын орчуулга DB хадгалах логикийн уялдаа

Changed

2.3.1-д хуудасны агуулга хадгалах бүтцийг анхны ko (rzx_page_contents) + орчуулгын DB (rzx_translations) руу шилжүүлсний дараа администраторын редактор бүх локалийг зөвхөн rzx_page_contents-д INSERT/UPDATE хийж байсан — миграцийн форматтай зөрчилдөж, рендерийн талд db_trans() хайлт амжилтгүй болж байсан асуудлыг засав.

Салаалах дүрэм (эх локаль = $_ENV['DEFAULT_LOCALE'] ?? 'ko'):

localeхадгалах зорилт
ko (эх)rzx_page_contents + rzx_translations-д тусгалт (db_trans() нөөц болгох)
en/ja/zh_CN/...зөвхөн rzx_translations (page.{slug}.title, page.{slug}.content)

Эх бус локалийг хадгалахад rzx_page_contents-д эх мөр байхгүй бол stub мөрийг автоматаар үүсгэнэ (цэс/тохиргооны холбоо хадгалах). is_active эх мөрт нэгдсэн хэлбэрээр хэрэгжинэ.

Changed

Эх бус локалийн засварлах хуудсыг нээхэд:

1. rzx_translations-аас page.{slug}.title/content + locale-г эхлэн хайна

2. Олдохгүй бол хуучин rzx_page_contents мөрт нөөцлөнө (миграцийн хоцролт хуудасны нийцтэй байдал)

Эх локаль дахь rzx_page_contents-г өмнийнхөөрөө ашиглана.

Changed

  • •Хуудас устгах: rzx_translations WHERE lang_key LIKE 'page.{slug}.%'-г хамт устгах
  • •Slug өөрчлөх: rzx_translations.lang_key-д page.{old_slug}. → page.{new_slug}. бөөнөөр UPDATE
v2.3.1 2026-04-20 · 6 сарын өмнө
Page Translation DB Migration + UI Cleanup + Logo Assets

Changed

rzx_page_contents-д locale тутамд бүтэн контентын мөр хадгалж байсан аргыг эх ko + орчуулгын DB (rzx_translations) аргаар нэгтгэв. Самбарын (board_post.*) хадгалалтын бүтцийн нийцтэй байдлыг хангав.

7 зорилтот хуудас: Brand, terms, privacy, refund-policy, tokushoho, funds-settlement, data-policy

Before:

rzx_page_contents
├── Brand / ko  (бүтэн контент)
├── Brand / en  (бүтэн контент)
├── ... (13 locale мөр)

After:

rzx_page_contents
└── Brand / ko  (эх 1 мөр)

rzx_translations
├── page.Brand.title   × 13 locale (ko орно)
└── page.Brand.content × 13 locale

Шилжилтийн үр дүн:

  • •rzx_page_contents: 7 slug × 12 ko биш мөр = 84 мөр устгав
  • •rzx_translations: 7 slug × 13 locale × (title + content) = 182 мөр шилжүүлэв
  • •Хөгжүүлэлт болон үйлдвэрлэлийн DB хоёулаа хэрэглэв, рендер баталгаажуулалт давав (ko/en зэрэг locale тутамд зөв харагдав)

Changed

  • •"Шинэ хуудас" header товчийг устгав — ажиллахгүй байсан placeholder байсан. Хуудасыг цэс удирдлагаас үүсгэх нь ганц зөв эх сурвалж.
  • •Хогийн сав 🗑 дүрс + AJAX handler + deleteUserPage() JS устгав — цэс устгах үед хуудасыг хамт цэвэрлэдэг тул хуудасыг тусдаа устгах зам шаардлагагүй. Алдаатай устгалтаас болж цэс эвдрэхийг сэргийлнэ.
  • •Хадгалсан: тохиргоо ⚙ · засварлах ✏ · урьдчилан харах 👁 дүрсүүд

Fixed

  • •Тохиргоо > Сайт > Лого зураг оруулалт амжилтгүй: storage/logos/ дэд хавтас байхгүй тул move_uploaded_file() чимээгүй амжилтгүй болж байсан. Upload handler-т дэд хавтас автомат үүсгэх нэмэв + хөгжүүлэлт, үйлдвэрлэлийн серверт лавлах үүсгэв (www-data:www-data, 775).
  • •Макетын логоны тэргүүлэх дарааллыг сэргээв: "Сайтын тохиргоо тэргүүлэх" болгон эргүүлсэн боловч "макет дизайн хувийн лого" шаардлагад нийцүүлж макет > сайтын fallback болгон сэргээв. Макетад лого заагаагүй бол сайтын лого автоматаар хэрэглэгдэнэ.
  • •Зорилтот: skins/layouts/{default, minimal, modern, modern-copy-260413}/header.php ба footer.php

Fixed

  • •bi-guide / logo-guide slug-ийн давхардсан 2 мөрөөс хамгийн эхэнд үүсгэгдсэнийг хадгалав (id=186, 187), давхардсан id=193, 194-г устгав
  • •Хөгжүүлэлт болон үйлдвэрлэлд хоёулаа хэрэглэв. Цэсний API-д давхар INSERT-ийн алдаа v2.3.0-д засварласан

Added

/var/www/_upload/-д лого хөрөнгө үүсгэв — шаардлагатай бол үйлдвэрлэлд оруулна:

Дүрс тэмдэг (зөвхөн тэмдэглэгээ)

  • •voscms-logo-color-{256,512,1024}.png · өнгөт (deep·ocean·sky·ocean + голд deep)
  • •voscms-logo-mono-{256,512,1024}.png · sky нэг өнгө + opacity 1/0.7/0.48/0.7 градиент

Хэвтээ үгний тэмдэг (header-д) — 820×256 харьцаа

  • •voscms-wordmark-{128h,256h,512h}.png · гэрэл (Vos deep + CMS саарал)
  • •voscms-wordmark-dark-{128h,256h,512h}.png · харанхуй (Vos sky + CMS slate-300)

Босоо үгний тэмдэг (апп дүрс / OG зурагт) — 360×420 харьцаа

  • •voscms-stacked-light-{256h,512h,1024h}.png
  • •voscms-stacked-dark-{256h,512h,1024h}.png

SVG эх загваруудыг бүгдийг нь хадгалав. librsvg2-bin суулгасан нь rsvg-convert CLI-г гаргадаг. OKLCH өнгийг дэмжихгүй байсан асуудлыг hex хөрвүүлсэн хувилбараар (voscms-logo-mono-hex.svg) шийдвэрлэв.

v2.3.0 2026-04-20 · 6 сарын өмнө
Хуудасны тохиргооны табын дахин бүтэцжүүлэлт + Changelog систем

Added

  • •DB хүснэгт rzx_changelog шинэ — хувилбар × locale бүрт тусдаа бичлэг, translation_source (original/ai/manual) + source_hash хянах
  • •Парсер RzxLib\Core\Changelog\ChangelogParser — Keep a Changelog стандарт + дотоод хэсгийн цагаан жагсаалт (Infrastructure/Internal/Refactor/Chore/Docs/Test нь хувийн)
  • •Импортер ChangelogImporter — идэмпотент нэгтгэл, гар орчуулгыг хамгаалах, content_hash-ээр зөвхөн өөрчлөлт илрүүлэх
  • •CLI скрипт scripts/import-changelog.php — --file --locale --dry-run --silent сонголтууд, SemVer pre-release (2.1.1-hotfix) дэмжлэг
  • •Орчуулгын интерфейс RzxLib\Core\Translate\{TranslatorInterface, NullTranslator, TranslatorFactory} — Gemma 4 (ai.21ces.com) GPU бэлэн болсны дараа config/translator.php driver-ийг өөрчлөхөд л идэвхжинэ
  • •Системийн хуудас /changelog бүртгэгдлээ (config/system-pages.php), фронтэнд харагдац resources/views/system/changelog/index.php
  • •Тусгай skin skins/page/changelog/skin.json — картын загвар (filled/outlined/flat), хэсэг тус бүрийн өнгө, хувилбарын тэмдэг, огноо формат, харьцангуй цаг харуулах, дотоод хэсгийн харагдацын тогглер
  • •Засварлах хуудас /changelog/edit тусгаарлагдлаа — MD байршуулалтын урьдчилан харах, олон хэлний хамрах хүрээний матриц, хувилбар тус бүрийн тогглер/устгал, AI орчуулгын товч (тун удахгүй)
  • •Байршуулалтын автоматжуулалт — deploy-voscms.sh-д 1.5/5 Changelog import алхам нэмэгдлээ: ko + 12 locale .md файлуудыг автоматаар илрүүлж нэгтгэдэг
  • •Орчуулгын түлхүүр site.pages.changelog 13 locale-д нэмэгдлээ

Changed

  • •Табын дараалал өөрчлөгдлөө: [Үндсэн мэдээлэл] [Эрх] [Нэмэлт тохиргоо] [Skin] — системийн хуудаснууд сүүлд өөрийн таб нэмж болно
  • •settings_tabs схем нэвтрүүллээ (config/system-pages.php) — системийн хуудаснууд дээд түвшний табын массив зарлана, key/label/icon/view-ээр динамикаар дүрслэнэ. Хуучин settings_view доод include legacy-г арилгав
  • •Зарчим тогтоогдлоо: Тохиргоо = дүрс + функц / Засвар = өгөгдөл — байршуулалт, хувилбар, орчуулга зэрэг өгөгдөл удирдлагын UI-г /changelog/edit-д тусгаарлав
  • •MERGE хадгалалтын стратеги — save_settings хандлер одоо байгаа тохиргоотой нэгтгэнэ. Табуудаар хуваасан ч бусад табын өгөгдөл устахгүй
  • •saveSettings() JS — DOM-д байгаа талбаруудыг л илгээнэ. Хэсэг талбарууд дүрслэгдээгүй таб хуваасан орчинд аюулгүй
  • •Загвар/skin картын байрлал — үндсэн мэдээллийн табд буцааж байрлуулав (хэрэглэгчийн санал хүсэлтийг тусгав). Skin таб нь skin.json хувьсагчуудыг л хариуцана
  • •Хуудасны өргөний давхардлыг арилгав — үндсэн мэдээллийн табаас page_width талбарыг устгав (skin-ийн content_width-д нэгтгэв)
  • •service/order хоёрдогч дэд табуудыг хавтгайлгав — config/service-settings-tabs.php-ийн general/domain/hosting/addons-ийг settings_tabs-д шилжүүлж, дээд түвшний таб болгов

Changed

  • •/{slug}/settings, /{slug}/edit нь config/system-pages.php-г мөн таньдаг болов — өмнө нь зөвхөн rzx_page_contents DB-г асууж, системийн хуудаснууд 404 өгдөг байсан. Одоо DB → config дарааллаар асуудаг
  • •edit_view талбар шинэ — системийн хуудасны засварлах харагдацын файлын замыг шууд зааж өгнө. /{slug}/edit товшиход тухайн харагдацыг шууд include хийнэ (администраторын дахин чиглүүлэлтийг арилгав)
  • •pages-settings.php fallback — DB бичлэггүй системийн хуудаснууд мөн config-оос $pageData-г бүрдүүлж, хуудас удирдлагын жагсаалт руу дахин чиглүүлэхийг урьдчилан сэргийлдэг
  • •Администраторын дүрсний URL нэгдлээ — /{slug}/settings, /{slug}/edit нь фронтэнд стандарт URL ашигладаг болов

Fixed

  • •menus-api.php: external хуудасны төрлийн INSERT-ийн өмнөх давхардал шалгалт дутуу байсныг засав — цэс хадгалах товчийг 2 удаа дарахад rzx_page_contents-д давхардсан мөр үүсэх асуудал
  • •Цэс устгах үед external төрөл + widget-ийн page_contents цэвэрлэгдэхгүй байсан асуудлыг засав — өнчин бичлэгүүдийг урьдчилан сэргийлэх

Fixed

  • •Гарчгийн арын дэвсгэр (title_bg_type, title_bg_image, title_bg_video, title_bg_overlay, title_text_color), show_title, show_breadcrumb, custom_css, custom_header_html, custom_footer_html — бүх стандарт хуудасны skin хувьсагчид нийтийн харагдацад тусгагдах болов
  • •_page-title-bg.php partial нь $_contentWidth хувьсагчийг хүлээн авдаг болов — гарчгийн хэсэг агуулгын өргөнийг дагана
  • •Администраторын дүрсийг гарчгаас тусгаарлав — агуулгын баруун дээд хэсэгт бие даасан байрлалтай. show_title=0 байсан ч үргэлж харагдана
  • •Гарчгийн хэсгийн дээр 20px зай нэмэв (арын дэвсгэрийн тэнцвэрт байдал)

Added

  • •site.pages.contact орчуулгын түлхүүрийг 13 locale-д нэмэв (ko/en/ja/zh_CN/zh_TW/de/es/fr/id/mn/ru/tr/vi) — өмнөх дутагдлыг шийдлээ
  • •Хуудас удирдлагын системийн гарын авлага docs/PAGE_ADMIN_GUIDE.md шинэ — табын бүтэц, схем, чиглүүлэлт, эрх, өргөтгөл аргыг тусгав
v2.2.2 2026-04-19 · 6 сарын өмнө
stats виджет сайжруулалт + админ толгой засвар

Added

  • •Аймаг тус бүрд тоо, дагавар, шошго (олон хэл), дүрс тэмдэг, өнгө талбар
  • •Админ виджет бүтээгч дэх аймгуудыг нэмэх/засах/устгах боломж (stat_items төрлийн засах UI шинэ)
  • •16 төрлийн дүрс тэмдэг (users, chart, star, heart, check-circle, clock, calendar, globe, shield, lightning, trophy, cart, dollar, building, chat) + 10 төрлийн өнгө
  • •Viewport руу орох үед тоолох анимаци — IntersectionObserver + easeOutCubic 1.4s
  • •Зөвхөн тоон утгыг тоолно (24/7 гэх мэт мөр утгыг тэр хэвээр харуулна), таслалын формат болон арааны оронг хадгална
  • •widget.json v1.1.0 → v1.2.0

Fixed

  • •admin_name нь enc: угтвартай хадгалагдаж, тайлгалгүйгээр харагдаж байсан асуудлыг засав
  • •Аватар хайлт байхгүй staff хүснэгтийг LEFT JOIN хийж байсан асуудлыг засав — admin_id = users.id нэгтгэсэн бүтцэд тохируулан rzx_users.profile_image-г шууд хайхаар өөрчилсөн
  • •Харьцангуй замтай аватарт baseUrl угтварыг автоматаар нэмэв
v2.2.1 2026-04-19 · 6 сарын өмнө
URL дүрс авах (дэлгэцийн зураг / бүх хуудас)

Added

  • •Бүх самбарын <input type="url"> талбар (өргөтгөсөн хувьсагч url төрөл орно) хажууд [Дэлгэцийн зураг авах] [Бүх хуудасны зураг авах] товч автоматаар нэмэгдэнэ
  • •Дэлгэцийн зураг: 1280×960 анхны рендер → 800×600 гаралт (эхний дэлгэц)
  • •Бүх хуудасны зураг: 1280×бүх хуудас анхны рендер → 800×багасгасан гаралт (бүтэн гүйлгэх хуудас, бодит өндөр)
  • •Алхам алхамаар явцын мөр UI — Серверт холбогдох → Хуудас ачаалах → Дэлгэц авах → Зураг үүсгэх → Файл хадгалах → Хариу хүлээх
  • •Авсан дэлгэцийн зургийг автоматаар гол зургаар тохируулах — board_files.is_primary=1 гэж тэмдэглэгдэж, board-showcase виджет тэргүүлэн ашиглана
  • •Шинэ маршрут /board/api/url-capture?type={thumbnail|screenshot}&url=... + api-url-capture.php прокси
  • •/board/api/files-д set_primary үйлдэл нэмэв — одоо байгаа хавсралтуудаас нэгийг гол зургаар тохируулна

Changed

  • •Хавсралт зургийн асуулгыг ORDER BY is_primary DESC, id ASC болгов — авсан дэлгэцийн зургийг тэргүүлэн харуулна
  • •Бичлэг үүсгэхдээ primary_file_pos параметрээр серверт гол файлын индексийг дамжуулна
v2.2.0 2026-04-18 · 6 сарын өмнө
Маркетплейс тусгаарлалт

Changed

  • •Маркетплейс бүтээгдэхүүн тусгаарлалт: plugins/vos-marketplace/ плагинийн хуваалцдаг байсан функцуудыг бие даасан бүтээгдэхүүн болгон тусгаарлав → github.com/THEVOSjp/Marketplace шинэ репозитор, market.21ces.com дээр бие даасан байршуулалт
  • •Плагин зөвхөн "хэрэглэгч тал UI (хайх, худалдаж авах, суулгах, лиценз)" хэсгийг хадгалана — өгөгдөл, борлуулагч, тооцоо нь маркетплейс серверт хариуцуулна
  • •Core тал API интеграцийн цэгүүдийг шинэчлэв

Added

  • •Хэл сонгосны дараа модаль харуулах — .env + DB + storage/uploads/ нөөцлөлтийн шаардлага + APP_KEY алдагдвал тайлах боломжгүй болно гэсэн анхааруулга
  • •Хоёр алхмын баталгаажуулалт: checkbox + баталгаажуулах товч (болзолгүй суулгалт хориотой)
  • •13 хэл бүхэн дэх орчуулга нэмэв (backup_title/body/item_env/db/uploads/warn/check/confirm/cancel)

Added

  • •scripts/register-widgets-to-marketplace.php — файлд суурилсан 28 виджетийг rzx_mp_items-д багц бүртгэл хийнэ

Changed

  • •plugins/vos-marketplace/src/CatalogClient.php — өгөгдмөл API URL-ийг https://market.21ces.com/api/v1 болгов, fetchItem() зам шинэчлэв, checkUpdates() асуулгын формат шинэчлэв
  • •plugins/vos-marketplace/plugin.json — marketplace_api_url өгөгдмөл утгыг шинэчлэв
  • •rzxlib/Core/Modules/WidgetLoader.php — thumbnail URL-д ?v={mtime} кэш бастер нэмэв (Cloudflare immutable кэш дэмжлэг)

Fixed

  • •widgets/feature-tour/widget.json — талбарыг цэгцлэв
  • •Зарим виджетийн thumbnail-ийг шинэчлэв (staff, testimonials, feature-tour, shop-map, shop-ranking, stylebook)
v2.1.5 2026-04-17 · 6 сарын өмнө

Added

  • •contact-info (v0.1.0) — холбоо барих карт (хаяг/утас/имэйл/ажлын цаг + зураг + жижиг газрын зураг)
  • •location-map (v0.1.0) — хэвтээ газрын зураг (Google Maps + доор 3 баганын мэдээлэл, өргөн тохируулах боломжтой)

Added

  • •Зүйл илгээх хуудасны бүрэн шинэчлэл — 3 таб (үндсэн мэдээлэл / релиз / борлуулалт)
  • •Лиценз (GPL/LGPL/BSD/MIT/CC/PD/арилжааны), агуулахын URL, демо URL, хамааралтай плагин, баннер зураг
  • •Релизийн түүх, борлуулалтын мэдээлэл (нийтийн/төлбөртэй toggle, хямдрал/дуусах огноо), UX сайжруулалт

Added

  • •Хөгжүүлэгчийн цэс (ID:20) 13 хэлэнд, Hero CTA-н description/typing_words-г 12 хэлэнд нэмэв

Changed

  • •Виджетийн нэрийн ялгааг тодорхой болгов (газрын зураг / холбоо барих карт), page.php-д fullWidthTypes нэмэв
  • •contact-form ангилал → зөвхөн шошго (код устгав, виджетийн тохиргоо засварлах боломжтой)

Fixed

  • •board-contents/board-showcase: file_type → mime_type
  • •boards-api: is_shown_in_list дутуу + options JSON хязгаарлалт
  • •contact-form POST: ob буфер бүрэн цэвэрлэх
  • •Hero CTA: typing_words/description-д \n давхар зугталт

DB Changes

  • •rzx_mp_items: license, repo_url, demo_url нэмэв
  • •rzx_board_extra_vars: is_shown_in_list нэмэв
  • •rzx_contact_messages: шинэ хүснэгт
v2.1.4 2026-04-17 · 6 сарын өмнө

Added

  • •download-hero виджет — программ хангамжийн татаж авах хуудас (version.json-тэй шууд холболт, 4 хэл суулгасан, гол функц / системийн шаардлага / хувилбарын түүх)
  • •/downloads хуудас — widget төрлийн системийн хуудас, 13 хэлний цэсний орчуулга, is_system=1
  • •contact-form виджет (v0.1.0) — хувийн 1:1 асуулгын маягтын виджет (зочдод боломжтой, ангилал сонгох, honeypot спам хамгаалалт, AJAX дамжуулалт)
  • •contact-info виджет — холбоо барих мэдээлэл харуулах виджет
  • •location-map виджет — байршлын газрын зургийн виджет
  • •rzx_send_mail() нийтлэг туслах функц — rzxlib/Core/Helpers/mail.php-д SMTP шуудан илгээх функц шинээр нэмэв
  • •rzx_contact_messages хүснэгт — асуулга хадгалах DB хүснэгт
  • •/contact хуудас — widget төрлийн системийн хуудас, 13 хэлний цэсний орчуулга

Fixed

  • •Системийн хуудас устгалаас хамгаалах — цэснээс системийн хуудсыг устгахад хуудасны агуулга/виджетийг хадгалдаг (зөвхөн цэсний зүйлийг л устгана)
  • •menus-api.php: DB is_system + config/system-pages.php slug давхар шалгалт
  • •menus-js.php: системийн хуудас устгах үед "Зөвхөн цэснээс устгана" мэдэгдэл харуулдаг
  • •Системийн хуудасны цэсний олон хэлний дэмжлэг — системийн хуудсыг цэсэнд нэмэх үед site.pages.* орчуулгын түлхүүрүүдээс 13 хэлний шошго автоматаар бүртгэгддэг
  • •Татаж авах хуудасны орчуулга — site.pages.downloads 13 хэлний орчуулга нэмэв

Changed

  • •Нүүр хуудасны баатар хэсэг — Download товч → /download/voscms-latest.zip-с шууд татаж авах, хувилбарыг v2.1.1 болгон шинэчлэв
  • •Auth.php — sendSmtpMail-с өмнө rzx_send_mail() нийтлэг туслахыг дуудна (нөөцлөлтийг хадгалдаг)
  • •index.php — mail.php туслахыг автоматаар ачаалдаг болгов
v2.1.3 2026-04-17 · 6 сарын өмнө

Changed

  • •Хостингийн таб — товч карт + ашиглалтын явцын мөр + FTP/DB холболтын мэдээллийн хүснэгт (администратор тохируулсан үед автоматаар харагдана)
  • •Домэйны таб — домэйны карт + үндсэн тохиргоо + нэрийн серверийн мэдээллийн хүснэгт (администратор тохируулсан үед автоматаар харагдана)
  • •Мэйлийн таб — мэйл серверийн мэдээлэл (IMAP/SMTP) + дансаар карт + дотоод нууц үг өөрчлөлт
  • •Техник засварын таб — мэдээллийн карт + төлөвлөсөн огноо + ажлын түүх (администратор бичсэн үед автоматаар харагдана)
  • •Нэмэлт үйлчилгээний таб — картын бүдүүвчийг нэгтгэв
  • •Администраторын хэсэгтэй ижил мэдээллийн бүтцийг нэгтгэв (администратор metadata-д оруулна → миний хуудсанд автоматаар тусгана)

Changed

  • •Үйл ажиллагааны бүртгэлийн хэсгийг 1/3 → 1/5 харьцаагаар багасгав
  • •Администраторын домэйны табын NS өгөгдмөл утгын хатуу кодчиллыг арилгав (Cloudflare API интеграцид бэлдэж)

Changed

  • •Нөөцлөлтийн ажлын урсгалыг бүрэн шинэчлэв: дэд домэйн эхлэх → худалдаж авсан домэйнийг дараа холбох
  • •Нөөцлөлтийн ID дүрэм: дэд домэйны нэр эсвэл худалдаж авсан домэйны SLD
  • •Cloudflare wildcard туннелийг ашиглав (дэд домэйны A бичлэг нэмэх шаардлагагүй)
  • •Сервер 2-ын диск тохиргоог өөрчлөв: NVMe 256GB + SSD 2TB + HDD 8TB гурван диск систем
v2.1.2 2026-04-16 · 6 сарын өмнө

Added

  • •Үйлчилгээний ангиллын систем — service_class багана нэмэв (recurring/one_time/free), completed_at нэг удаагийн үйлчилгээний дуусгасан огноо
  • •Миний хуудас үйлчилгээний дэлгэрэнгүй — /mypage/services/{order} төрлөөр таб удирдлага (хостинг/домайн/мэйл/засвар үйлчилгээ/нэмэлт үйлчилгээ)
  • •Үйлчилгээний удирдлагын API — api/service-manage.php (автомат сунгалтын тогл, сунгалт хүсэх, үндсэн домайн тохируулах, мэйлийн нууц үг солих)
  • •Администраторын захиалгын удирдлага — /admin/service-orders захиалгын жагсаалт + дэлгэрэнгүй хуудас, нэг удаагийн төлөвийн модал (хүлээн авсан/явцтай/хойшлуулсан/цуцалсан/дууссан)
  • •Администраторын цэс — хажуугийн самбарт "Үйлчилгээний захиалга" цэс нэмэв (position: 65)

Added

  • •phone-display — утасны дугаар харуулах компонент (серверийн тал format_phone() туслах), JS хамааралгүй
  • •format_phone() — PHP олон улсын утасны дугаарын форматлах функц (Солонгос/Япон/АНУ/Хятад/Их Британи/Франц/Герман/Австрали гэх мэт)
  • •Үнэгүй домайн тохиргоо — администраторын тохиргоонд үнэгүй дэд домайны жагсаалт удирдах (service_free_domains), олон домайн сонголт дэмжих

Fixed

  • •Үнэгүй үйлчилгээний бүртгэл дутуу — үнэгүй захиалга хийхэд домайн/нэмэлт/засвар үйлчилгээний бүртгэл үүсдэггүй байсан → бүх үйлчилгээг нэгэн зэрэг үүсгэхээр рефакторинг хийв
  • •Төлбөрийн хэсгийн нөхцөл зөвшөөрөл — үнэгүй захиалгын үед нөхцөл чек нь төлбөрийн хэсэгтэй хамт нуугдаж байсан → хэсгийн гадна гаргав
  • •updateSubmitButton isFree илрүүлэлт — btn.closest('form') NULL → document.querySelector-ээр засав
  • •Администраторын хажуугийн самбарын идэвхтэй дэлгэц — $adminPath тодорхойлогдоогүйгээс бүх цэс идэвхгүй → хувьсагч зарлалт нэмэв
  • •Миний хуудасны avatar — services.php/service-detail.php-д use Auth + $user = Auth::user() дутуу байсан
  • •Нэмэлт үйлчилгээний нэг удаагийн шалгалт — администраторын тохиргооны one_time тугны захиалгын үед service_class-д тусгагдахаар засав
  • •Нэг удаагийн үйлчилгээний анхны төлөв — active-ийн оронд pending (хүлээн авсан) байдлаар үүсэхээр засав

Changed

  • •Захиалгын API рефакторинг — 3 төлбөрийн зам (үнэгүй/карт/шилжүүлэг)-ийн бүртгэл үүсгэх кодыг $subscriptionData + _insertSubscriptions() нийтлэг функцэд нэгтгэв
  • •Үйлчилгээний жагсаалтын UI — шугаман задлалт → карт холбоос + дэлгэрэнгүй хуудас салгав
  • •Утасны дугаарын харуулалт — профайл/гишүүний жагсаалт/ажилтны жагсаалтад format_phone() хэрэглэв
  • •Үнэгүй домайны динамик болгох — .21ces.net хатуу код → администраторын тохиргооны утга ашиглах
v2.1.1-hotfix 2026-04-16 · 6 сарын өмнө

Fixed

  • •Хөлийн цэсний 404 алдаа — rzx_page_contents хүснэгтэд хуулийн баримт бичгийн хуудсуудын (terms, privacy, refund-policy, data-policy, tokushoho, funds-settlement) өгөгдөл дутуу байсан → test DB-с эх хувийг сэргээв
  • •Виджет билдерийн зураг/видео байршуулалтын алдаа — фронт враппер (page-widget-builder.php)-аас ирсэн FormData POST-ийг AJAX хандлер руу дамжуулаагүй асуудлыг засав (файл байршуулах нөхцөл нэмэх + ob_end_clean/exit боловсруулалт)
  • •Байршуулах сангийн эрх — storage/uploads/widgets/ эзэмшигчийг www-data болгож PHP-FPM-д бичих эрх олгов

Added

  • •Үйлчилгээ захиалгын цэсний олон хэлний дэмжлэг — rzx_translations хүснэгтэд menu_item.19.title 13 хэлний орчуулга нэмэв
  • •Баатар CTA виджетийн олон хэлний дэмжлэг — Dev хуудасны баатар баннерийн title, subtitle, button text-т 13 хэлний орчуулга хэрэглэв
  • •Байршуулалтын статусын урьдчилан харах — зураг/видео байршуулах үед дэвшилтийн харааны санал хүсэлт нэмэв: боловсруулж байна (spinner), амжилттай (checkmark), амжилтгүй (алдааны мессеж)
v2.1.1 2026-04-12 · 6 сарын өмнө

Added

  • •0-р алхамын хэл сонгох дэлгэц — суулгалт эхлэхийн өмнө 13 хэлнээс сонгоно; тэр цагаас эхлэн бүх UI сонгосон хэлээр харагдана
  • •Суулгалтын орчуулгын файлуудыг тусгаарласан — resources/lang/install.php (13 хэл × 45 мөр)
  • •Гишүүний зэрэглэлийн олон хэл — Normal/Silver/Gold/VIP 13 хэлэнд автоматаар үүсгэгдсэн

Added

  • •config/admin-menu.php — Цөмийн администраторын цэсийг тохиргооны файл болгон тусгаарласан (Цөм шинэчлэх үед хадгалагдана)
  • •admin-sidebar.php дахин боловсруулалт — 731 мөр хатуу кодлогдсон → ~200 мөр динамик рендерлэгч (config + plugin.json суурилсан)
  • •vos-shop plugin.json — хатуу кодлогдсон цэсийг menus.admin форматад шилжүүлсэн

Added

  • •Гулсдаг цэс — гар утасны: аватар+нэрийн сэлгэх мөр → зүүн гулсдаг давхаргалал (300ms ease-out)
  • •Дэвсгэрийг бүдгэрүүлэх — дэвсгэр дарах эсвэл X товч дарж хаана; хуудасны гүйлт хаагдана

Added

  • •force_locale — үндсэн хэлийг хатуу хэрэгжүүлнэ (?lang=xx параметрээр хэрэглэгч өөрчлөх боломжтой)
  • •default_language — install.php ↔ Translator тохиргооны түлхүүр нэгдсэн
  • •URL параметр — ?lang=xx-г эхэлж илрүүлж, сесс/күүкид хадгалдаг

Fixed

  • •FAQ скин хэрэгжаагүй — миграцийн SQL нь install.php-ийн өмнө үндсэн самбарын INSERT-ийг чагнуулгагүй ажиллуулсан тул INSERT IGNORE чимээгүй үл тоогдсон асуудал засагдсан
  • •translations хүснэгтэд source_locale дутуу — цөмийн миграцид багана байхгүй → db_trans() бүрэн амжилтгүй → хэрэглэгчийн мэдээлэл/цэс/олон хэл харагдахгүй байсан асуудал засагдсан
  • •Тохиргооны таб хажуугийн самбарын идэвхтэй заалт — route_prefix атрибут нэмж тохиргооны цэс нь тохиргооны бүх дэд маршрутад идэвхтэй байхаар засагдсан
  • •Суулгалтын сессийн үлдэгдэл алдаа — .env байхгүй шинэ суулгалтад хуучин PHP сесс 0-р алхамыг алгасуулсан асуудал засагдсан
  • •nginx 403 — admin/ физик директор болон маршрутын зөрчил засагдсан (try_files $uri/ устгасан)
  • •Бүдгэрүүлэх скриптийн хувилбар хатуу кодлогдсон — obfuscate.php нь version.json-оос хувилбарыг динамикаар унших болсон

Changed

  • •Торон/board-contents виджетийн олон хэлний харагдац — rzx_translations хайлт нэмэгдсэн (одоогийн локаль → англи хэлний нөөц)
  • •Сайтын салбарын ангилал — 15-аас 26 болгон өргөтгөсөн (нэмэгдсэн: корпораци, худалдааны төв, хуулийн, нягтлан бодох бүртгэл, IT, медиа гэх мэт; 13 хэл)
  • •Торон виджетийн тохиргоо — grid-section render.php-г native нүдний төрөл (board-list) болгон өөрчилсөн; 13 хэлний гарчиг
  • •4-р алхамын хэл сонголт — 5-аас 13 хэл болгон өргөтгөсөн; суулгалтын хэлээр урьдчилан дүүргэгдсэн
  • •Цагийн бүсийн сонголт — 13 хэлний хэрэглэгчийн бүс нутгийг хамарсан 12 цагийн бүс болгон өргөтгөсөн
v1.26.0 2026-04-01 · 7 сарын өмнө

Added

  • •Үйлчилгээ сонгох дэлгэцийн дээд хэсэгт боодол (иж бүрдэл) үйлчилгээг 3 баганаар харуулав — хув шар өнгийн загвараар тус тусдаа үйлчилгээнээс харааны хувьд ялгав
  • •SET тэмдэг, хөнгөлөлтийн шошго, багтсан үйлчилгээний нэрс, боодлын үнэ, эх үнийн хас шугам, хөнгөлөлтийн хувь
  • •Боодол сонгоход багтсан үйлчилгээнүүдийг автоматаар сонгоно (үнэ нь боодлын үнээр тооцогдоно)
  • •Боодолд багтсан үйлчилгээг тус тусад нь нээж хаах боломжгүй (буруу үнийн тооцоо гарахаас урьдчилан сэргийлэх)
  • •Томилох горим: rzx_staff_bundles хүснэгтээр ажилтан тус бүрийн боодлыг шүүдэг
  • •bundles параметрийг баталгаажуулах хуудасруу дамжуулна
  • •Олон хэлний дэмжлэг: боодолтой холбоотой киоскийн орчуулгын түлхүүрүүдийг 13 хэлэнд нэмэв

Added

  • •Харагдах байдал солих товчнууд — дээд мөрөнд [Сар] [Долоо хоног] [Өдөр] товч (идэвхтэй төлөв: цэнхэр)
  • •Долоо хоногийн харагдах байдал — зүүн тэнхлэг = гаригууд, дээд тэнхлэг = цагийн тэнхлэг
  • •Хэвтээ гүйлгэх, захиалгын блокуудыг цагийн мөр хэлбэрээр харуулна
  • •Лэйн алгоритм: цагийн давхцлыг илрүүлж доод эгнээнд автоматаар байрлуулна, мөрийн өндөр хувьсах
  • •Зүүн хажуу самбар ↔ хүснэгтийн босоо гүйлгэлтийг синхрончлов
  • •Өдрийн харагдах байдал — хэвтээ = цагийн тэнхлэг, босоо = лэйн (долоо хоногийн харагдах байдалтай адил арга)
  • •Ажлын цагт суурилсан цагийн хүрээ — business_hour_start/business_hour_end тохиргоонд суурилсан; хүрээнээс гадуурх захиалгад автоматаар өргөтгөнө
  • •Хоосон нүд дарах үед цаг дамжуулах — долоо хоног/өдрийн харагдах байдалд X координат → 15 минутын нэгжийн цаг тооцох → захиалгын модалын эхлэх цагийг автоматаар бөглөх
  • •Дээд навигацийн мөрийг бэхлэв — overflow-x-hidden + sticky хэрэглэв; хэвтээ гүйлгэх үед цонхны доторх байрандаа үлдэнэ

Added

  • •Админ > Тохиргоо > Ерөнхий — ажлын эхлэх/дуусах цагийн тохиргооны UI нэмэв
  • •business_hour_start, business_hour_end DB тохиргооны түлхүүрүүд
  • •Хуанлийн долоо хоног/өдрийн харагдах байдлын анхны цагийн хүрээнд хэрэглэнэ

Fixed

  • •POS add-service-ийн дутуу талбарууд — start_time, end_time, staff_id, designation_fee, notes дамжуулалтыг нэмэв (өмнө нь: серверийн талд цаг хатуу кодлогдсон, ажилтан/тэмдэглэл дутуу байсан)
  • •end_time шөнө дундаас хэтрэхийг урьдчилан сэргийлэх — ReservationHelper, start-service API, захиалгын маягтын calcEnd() бүгдэд % 24 → min(23:59) дээд хязгаар хэрэглэв
  • •POS-ийн ашиглалтад байгаа эсэхийг шөнө дундаас хэтрэх тохиолдолд зохицуулах — CustomerBasedAdapter-д end_time < start_time тохиолдолд шөнө дундаас хэтрэлт гэж боловсруулна
  • •Захиалгын боодлын баталгаажуулалт — зөвхөн боодол сонгоод тус тусдаа үйлчилгээ сонгоогүй үед ч захиалга үүсгэх боломжтой болгож засав

Changed

  • •Табын нэр өөрчлөгдсөн: Бүртгэл / Бүртгэлийн жагсаалт / Захиалагчид
  • •Бүртгэлийн жагсаалт: walk_in, pos, kiosk, admin эх сурвалж — бүх статусыг харуулна
  • •Захиалагчид: phone, online эх сурвалж — бүх статусыг харуулна
  • •Эрэмбэлэх дараалал: Хүлээлгэй → Баталгаажсан → Ашиглалтад → Дуусгасан → Ирээгүй → Цуцалсан; ижил статус дотор цагийн дарааллаар
  • •Дуусгасан/Цуцалсан/Ирээгүй мөрүүд: opacity-50-аар бүдэгрүүлж, хуваарилагдаагүй тэмдэг харуулна

Changed

  • •Дуусгасан тэмдэг: саарлаас → ногоон болгон өөрчлөв
  • •Цуцалсан/ирээгүй тэмдгүүдийг нэмэв (тоо 0 үед нуудаг)

Added

  • •Картын доод хэсэг: хүлээлгийн статус дахь картуудад ирээгүй товч нэмэв (хориглох дүрс), цуцлах товчийг улаан болгов
  • •Дэлгэрэнгүй модал: pending болон confirmed хоёуланд нь ирээгүй үйлдлийн товч харуулна
  • •Бүлгийн нэгдсэн ирээгүй: POS.noShowAllServices() функц нэмэв

Fixed

  • •Захиалгын дэлгэрэнгүйгээс буцах навигаци — <a href="/reservations"> → history.back() болгон өөрчлөв, өмнөх хуудасруу буцана
  • •Олон хэл: хуанлийн харагдах байдал солих (сар/долоо хоног/өдөр), боодол, ажлын цагтай холбоотой түлхүүрүүдийг 13 хэлэнд нэмэв
v1.25.0 2026-04-01 · 7 сарын өмнө

Architecture

  • •POS-ийг бие даасан плагин бүтцэд салгасан
  • •resources/views/admin/reservations/pos-*.php → resources/views/admin/pos/ директорт зөөсөн
  • •pos/ директорийн байгаа эсэхэд тулгуурлан POS функцийг автоматаар идэвхжүүлэх/идэвхгүй болгох (is_dir() шалгалт)
  • •Хажуугийн цэс: pos/ директор байхгүй үед POS цэсийг автоматаар нуух
  • •index.php маршрутлалт: pos/ директор байхгүй үед POS маршрутыг идэвхгүй болгох
  • •pos/_init.php → захиалгын нийтлэг _init.php-д шилжүүлэх (DB, баталгаажуулалт, i18n хуваалцах)
  • •API endpoint-ууд reservations/_api.php-д хэвээр үлдэнэ (ухраах нийцтэй байдал баталгаатай)

Added

  • •Нэгдсэн төлбөрийн модал — оноо + бэлэн мөнгө + карт зэрэг ашиглах (нийлмэл төлбөр)
  • •Оноо: үлдэгдэл шалгах, гараар оруулах эсвэл бүгдийг ашиглах
  • •Бэлэн мөнгө: дүн оруулах
  • •Карт: дүн оруулах + "үлдэгдлийг бүгд ашиглах" автомат оруулах товч
  • •Хуваан төлбөр: нэг дор / 2–12 сар сонгох
  • •Нийт дүн, хариу мөнгө, дутуу дүнг бодит цагт автоматаар тооцоолох
  • •Stripe картын төлбөрт бэлэн мөнгө/оноог картын төлбөр амжилттай болсны дараа л боловсруулна (цуцлахад аюулгүй)
  • •Үйлчилгээний дэлгэрэнгүй модал — оноо харуулах
  • •Гишүүний оноо үлдэгдлийг толгойн хэсэгт байнга харуулна (үлдэгдэл 0 байсан ч харуулна)
  • •Үйлчилгээний дэлгэрэнгүй модал — ажилтны тэмдэглэгээ сайжруулсан
  • •Томилогдсон/чиглүүлсэн тэмдэглэгээг ажилтны нэрний өмнө харуулна (өмнө нь: нэрний доор)
  • •Баримт/хэвлэх товчийн байрлал өөрчлөгдсөн
  • •Үйлчлүүлэгчийн дэлгэрэнгүй мэдээллийн дээш зөөсөн, баримт (зүүн) + хэвлэх (баруун)
  • •Хэвлэх функцийг сайжруулсан
  • •Гадаад хуудас нээхийн оронд одоогийн үйлчилгээний дэлгэрэнгүй модалын агуулгыг хэвлэнэ

Changed

  • •Картын загвар — grid суурилсан → flex-wrap тогтмол хэмжээтэй карт
  • •Картын тогтмол хэмжээ: үндсэн 320×240px (small: 260×200, large: 380×280)
  • •Дэлгэцийн өргөнөөс хамааран картын хэмжээ өөрчлөгдөхгүй, автоматаар мөр дарна
  • •Картын төлбөрийн модал — өргөн 1030px, өндөр 800px болгон томруулсан

Fixed

  • •API cross-origin алдааг шийдвэрлэсэн
  • •$baseUrl нь .env-ийн APP_URL-д хатуу тогтоогдсон байсан тул өөр хост/HTTPS-ээс fetch амжилтгүй болдог байсан
  • •Хяналтын самбар: fetch URL-ийг харьцангуй замд (/update-api.php) өөрчилсөн
  • •Захиалгын _init.php: $baseUrl-ийг хоосон мөр болгосон тул бүх fetch харьцангуй зам ашиглана
  • •Cloudflare HTTPS прокси орчинд mixed-content асуудлыг бүрэн шийдвэрлэсэн
  • •DB шилжилтийн гүйцэтгэлийн алдаа — "Failed to fetch" шийдвэрлэсэн (cross-origin асуудал)
  • •Stripe нийлмэл төлбөр цуцлах үед бэлэн мөнгийг урьдчилан боловсруулах алдаа
  • •Өмнө: бэлэн мөнгийг эхлээд боловсруулдаг байсан → картын төлбөр цуцлагдахад бэлэн мөнгө аль хэдийн боловсруулагдсан
  • •Дараа: Stripe картын төлбөр амжилттай болсны дараа л бэлэн мөнгө/оноог боловсруулна

i18n

  • •pos_pay_after_points — оноо хасагдсаны дараах дүн
  • •pos_pay_proceed — төлбөр хийх
  • •pos_pay_remainder — бүх үлдэгдлийг ашиглах
  • •pos_pay_installment — хуваан төлбөр
  • •pos_pay_lump_sum — нэг дор төлбөр
  • •pos_pay_months — сар
  • •pos_pay_total_pay — нийт
  • •pos_pay_short — дутуу
  • •show_receipt — баримт
  • •show_print — хэвлэх
v1.18.0 2026-03-29 · 7 сарын өмнө

Added

  • •Олон хэлний огноо форматлах функц — formatReservationDate($dateString, $locale)
  • •13 хэлийг дэмжинэ (ko, en, ja, zh_CN, zh_TW, de, es, fr, id, mn, ru, tr, vi)
  • •Захиалгын дэлгэрэнгүй хуудсанд огноо болон гаригийг автоматаар орон нутгийн хэлэнд харуулна
  • •Fallback: дэмжигдээгүй locale → англи хэлний формат

Changed

  • •Захиалгын дэлгэрэнгүй хуудасны олон хэлний боловсруулалт
  • •Үйлчилгээний нэр, ажилтны нэр, боодлын нэрийг орон нутгийн хэлэнд хөрвүүлэв (DB-ийн translations хүснэгтэд суурилан)
  • •Огноо форматлах функцийг нэгтгэв
  • •Төлбөрийн статусын шошгыг орон нутгийн хэлэнд хөрвүүлэв (payment_status талбар)
  • •Төлбөрийн статусын олон хэлний дэмжлэг
  • •Бүх хэлний файлд (11 хэл) payment хэсгийг нэмэв
  • •төлөгдөөгүй, төлөгдсөн, хэсэгчлэн төлсөн, буцаагдсан гэсэн орчуулга

Fixed

  • •Захиалгын дэлгэрэнгүй хуудас: хөрвүүлэлт хэрэглэгдээгүй байсан ажилтны нэр, үйлчилгээний нэрийг зөв харуулах боллоо
  • •Төлбөрийн статусын шошго: зөвхөн солонгос хэлээр харагдаж байсан асуудлыг засав
  • •_tr() функцэд суурилсан олон хэлний боловсруулалтаар нэгтгэв

Layout & UI

  • •Хуудасны өргөнийг нэгтгэв (max-w-5xl → max-w-7xl)
  • •Самбарын хуудсууд (жагсаалт, унших, бичих): max-w-5xl → max-w-7xl
  • •Гадаад хуудас (page.php): анхны утга болон DB-ийн тохиргооны утгыг шинэчлэв
  • •Захиалгын дэлгэрэнгүй / захиалга хайх / ажилтны хуудсууд: DB-ийн тохиргооны утгыг шинэчлэв
  • •Үр дүн: бүх хуудасны өргөн захиалах хуудастай адил болж нэгдсэн

Documentation

  • •COMPONENT_MANUAL.md-д formatReservationDate() функцийн дэлгэрэнгүй баримтжуулалт нэмэв
  • •Дэмжигдэх хэлүүд болон форматын хүснэгт
  • •Хэрэглээний жишээ болон дотоод бүтэц
  • •Анхаарах зүйлс болон холбогдох функцүүд
v1.16.0 2026-03-23 · 7 сарын өмнө

Added

  • •Гар утасны доод цэсний мөр — Ажилтан / Захиалга / Нүүр / Нэвтрэх (эсвэл Минийх) / Бүртгүүлэх / Дэлгэрэнгүй, одоогийн хуудас тодруулагдана
  • •Гар утасны "Дэлгэрэнгүй" самбар — үндсэн цэс + Миний хуудас / Гарах
  • •Загвар/skin тохиргоо бодитоор хэрэглэгдэх болов — site_layout, site_page_skin, site_board_skin, site_member_skin → рендерт тусгагдана
  • •no_layout параметр — загваргүйгээр зөвхөн агуулга (урьдчилан харах зориулалттай)
  • •Орчуулгын түлхүүр нэмэгдлээ — common.nav.staff, common.nav.more (13 хэл)

Fixed

  • •Гишүүний хуудаст (login/register/forgot/reset) загвар хэрэглэв: skin-ийн <main> хэсгийг задлан давхардсан толгойг арилгав
  • •Гишүүний skin-д ImageCropper/ProfilePhotoCropper давхар зарлалтын алдааг засав
  • •Цэсний ачаалагч include_once асуудал: skin closure-д эхлээд ачаалагдах үед base-header цэс алга болдог байсныг засав
  • •apple-mobile-web-app-capable хуучирсан → mobile-web-app-capable (8 файл)
  • •Гар утасны толгой хэсгийн нэвтрэх/бүртгүүлэх товчийг нуув (доод цэсний мөрөөр солигдов)
  • •Доод цэсний мөрт iOS safe-area дэмжлэг нэмэв

Changed

  • •Гишүүний хуудсуудыг өөрийн загвараас үндсэн загварт нэгтгэв (login/register/forgot/reset)
  • •Нижнийн хөлийн доод зайг арилгав (гар утасны цэсний мөр fixed байрлал ашиглана)
v1.15.3 2026-03-22 · 7 сарын өмнө

Added

  • •Layouts-ийн дэлгэрэнгүй тохиргооны самбар — SkinConfigRenderer дээр суурилсан тохиргооны маягтыг AJAX-аар ачаалах
  • •Layout-ийн цэсний тохиргоо — layout.json-ийн menus хэсэг → DB sitemaps-ийн унадаг жагсаалтыг автоматаар үүсгэх
  • •SkinConfigRenderer таб дэмжлэг — vars-д tab шинжилгэх тохиолдолд таб UI автоматаар үүснэ
  • •SkinConfigRenderer рефакторинг — renderVar() нэгдсэн дан аргачлал, renderFormFlat/renderFormWithTabs салгалт, renderDependsOnJs нийтлэг болгосон
  • •layout.json өргөтгөл — menus (GNB/FNB), 14 vars (header/logo/өнгө/footer/custom), 13 хэл
  • •Layout урьдчилан харах холболт — "Идэвхгүй" сонгоход ?no_layout=1 параметртайгаар layout-гүй урьдчилан харуулна

Fixed

  • •Layout удирдлагын цэсний хайлт: rzx_menus → rzx_sitemaps хүснэгтийн нэр засварлав
  • •Голын самбарын өргөн тохируулга + акцийн холбоос whitespace-nowrap

Pending

  • •Layout/скин тохиргооны утгуудыг бодит хуудсанд хэрэгжүүлэх (дараагийн сесс)
v1.15.2 2026-03-22 · 7 сарын өмнө

Added

  • •Зохион байгуулалт удирдах хуудас — 3 самбарт бүтэц: зүүн урьдчилан харах+цэс, баруун скин жагсаалт, дэлгэрэнгүй тохиргооны самбар
  • •Скин бүрийн зүйл: эрхий зураг + дэлгэрэнгүй тохиргоо/хуулбар үүсгэх/устгах үйлдлийн холбоосууд
  • •"Идэвхгүй болгох" / "Өөр скин суулгах" сонголтууд
  • •4 ангиллаар хадгалах: зохион байгуулалт, хуудас, самбар, гишүүн (site_layout, site_page_skin, site_board_skin, site_member_skin)

Changed

  • •"Дизайн удирдлага" → "Зохион байгуулалт удирдлага" болж нэрийг өөрчилсөн (13 хэл: admin.php + site.php)
v1.15.1 2026-03-22 · 7 сарын өмнө

Changed

  • •Сайт удирдах 15 хуудас → _head.php нийтлэг header хэрэглэв
  • •Самбар: boards, boards-create, boards-edit, boards-trash
  • •Цэс: menus
  • •Дизайн: design
  • •Хуудас: pages, pages-settings, pages-edit-content, pages-document, pages-compliance, pages-widget-builder
  • •Виджет: widgets, widgets-create, widgets-marketplace
  • •Embed горимын хуудас (boards-edit, pages-settings, pages-edit-content) нь embed биш үед л _head.php-г хэрэглэнэ
  • •Бүх админ хуудасны header/макетыг нэгтгэх ажил дуусгавар болов
v1.15.0 2026-03-22 · 7 сарын өмнө

Added

  • •Системийн виджет модуль — 4 виджет: staff (ажилтны танилцуулга), booking (захиалга хийх), lookup (захиалга хайх), cta001 (захиалга урих баннер)
  • •Системийн хуудсууд — staff, booking, lookup DB-д бүртгэгдсэн (is_system=1) + чиглүүлэлт (/staff, /booking, /lookup)
  • •Виджет дээр суурилсан хуудас рендерлэлт — staff/booking/lookup хуудсууд виджет байрлуулсан үед виджетийг рендерлэнэ, байрлаагүй үед хуучин рендерлэлт руу буцна
  • •Виджет автоматаар DB-д бүртгэх — syncToDatabase() дуудсанаар виджет директор нэмэгдэхэд автоматаар бүртгэнэ
  • •Виджет категори system — 13 хэлэнд орчуулагдсан (widgets.categories + widget_builder.cat)
  • •Хуудасны жагсаалт нэгдсэн — системийн хуудасны давталт рендерлэлт + gear/засах/урьдчилан харах дүрс нэгдсэн
  • •Админ хуудасны толгой нэгдсэн — $pageSubTitle + $pageSubDesc (_head.php-ээр нийтлэг гаралт)
  • •Орчуулгын түлхүүрүүд нэмэгдсэн — staff.admins, staff.attendance.report/stats, points.description гэх мэт

Fixed

  • •Виджет билдэр дэх page_slug = 'home' хатуу кодлогдсон → $_GET['slug'] динамик боловсруулалт
  • •Виджет билдэр AJAX save/preview дэх home хатуу кодлогдсон → динамик $pageSlug
  • •Виджет билдэр урьдчилан харах URL → динамик $pageSlug (нүүр хуудас тогтмол → тус бүрийн хуудас)
  • •Виджет preview_widget дэх WidgetLoader require дутуу байсан — засагдсан
  • •Үйлчилгээний карт харагдацын зургийн зам (/storage/ угтвар)
  • •Киоскийн тохиргооны өргөн max-w-3xl → 100% нэгдсэн
  • •POS толгой "Захиалга удирдлага" → "POS" болж өөрчлөгдсөн

Changed

  • •Ажилтны удирдлагын 10 хуудас + гишүүний удирдлагын 4 хуудас → нийтлэг _head.php толгой хэрэглэгдсэн
  • •Киоск/бөөгнөрлийн хуудсуудад _head.php хэрэглэгдсэн
  • •Киоскийн хэлний тохиргоо grid → flex-wrap хариу үзүүлэлттэй
  • •Хуудасны жагсаалтад системийн хуудсуудыг өгөгдөлд суурилсан давталтаар рендерлэнэ
v1.14.1 2026-03-22 · 7 сарын өмнө

Added

  • •Хуудасны скин таб — скины үндсэн мэдээлэл + өргөтгөсөн хувьсагчийн тохиргоо (SkinConfigRenderer суурьтай)
  • •Бүх хуудасны төрөлд скин хэрэглэх — скины тохиргоог document/widget/external бүгдэд адилхан хэрэглэнэ
  • •Гарчгийн арын зургийн систем — зураг/видео арын дэвсгэр + overlay + текстийн өнгө (нийтлэг partial _page-title-bg.php)
  • •depends_on систем — skin.json-д талбарын хоорондын хамаарлыг тунхаглалтаар тодорхойлно, рендерер JS-г автоматаар үүсгэнэ (checkbox/radio дэмжлэг)
  • •Скин файл оруулах — multipart дамжуулалтаар зураг/видео оруулах (storage/skins/page/{skin}/)
  • •Картын хэлбэрийн макет/скин сонгогч — модулийн мэдээллийн табд thumbnail картын UI-д шилжүүлэв
  • •SEO систем — SEO туслагч, гарчгийн загвар, OG/Twitter мета тэгүүд, контент гаргаж авах
  • •OG Image оруулах — URL оруулах + файл оруулах + урьдчилан харах
  • •Нийтлэг үр дүнгийн модаль — хадгалах амжилт/бүтэлгүйтэл модалын UI нэгтгэв (13 хэл дэмжинэ)
  • •Үйлчилгээний картын харагдац — бүтэн арын зургийн карт + хүснэгт/карт харагдац сэлгэх товч
  • •Үйлчилгээний drag-and-drop дараалал — дараалал өөрчлөх + DB-д хадгалах хоёр харагдацад
  • •Захиалгын ажилтан томилох/нэрлэх — захиалгын дэлгэрэнгүйд томилох/нэрлэх 2 товч
  • •Захиалгын замын UI — утасны захиалга / биеэр ирэх / онлайн сонгох
  • •Утасны захиалгын тохиргоо — үйлчилгээний үндсэн тохиргоонд идэвхжүүлэх/идэвхгүй болгох toggle
  • •Аюулгүй байдлын header — X-Frame-Options + CSP frame-ancestors
  • •PAGE_SYSTEM.md — хуудасны системийн хөгжүүлэлтийн баримт бичиг
  • •PRD_OrderSystem.md — ширээний захиалгын системийн төлөвлөлтийн баримт бичиг
  • •PRD_KioskSystem.md — киоскын системийн төлөвлөлтийн баримт бичиг

Fixed

  • •Favicon-ийн DB тохиргоог хэрэглэв (фронт / админ / скин макет — 4 газар)
  • •Хянах самбарын шилжилтийн URL window.location.origin → $baseUrl (дэд хавтасны орчин)
  • •Хуудасны тохиргооны embed горимын API URL → admin замыг шууд заав
  • •Үр дүнгийн модалын i18n: API хариуны оронд хуудас рендерлэх үеийн locale мэдэгдэл ашиглана
  • •Скин табын хоосон скин утгын fallback ("" → default)
  • •pages-settings.php-ийн php://input хоёр дахин хэрэглэх асуудлыг шийдвэрлэв

Changed

  • •Киоск / киоскын тохиргоо / bundle хуудасууд → _head.php нийтлэг header хэрэглэв
  • •Скины тохиргоо хадгалах JSON → FormData (multipart) дамжуулалт (файл оруулах дэмжлэг)
  • •SkinConfigRenderer-д $baseUrl параметр нэмэв (зураг/видео урьдчилан харах)
  • •13 хэлний скин орчуулга (skin.json + site.php + common.php)
v1.13.0 2026-03-21 · 7 сарын өмнө

Added

  • •Хуудасны систем дуусгавар болсон — цэснээс баримт/виджет/гадаад хуудас үүсгэх үед автоматаар хуудас үүсгэнэ
  • •Динамик хуудасны рендерер — page.php (баримт→HTML, виджет→WidgetRenderer, гадаад→iframe/include)
  • •Хуудасны орчны тохиргоо — 3 таб (үндсэн / макет & скин / SEO), page_config_{slug} JSON хэлбэрээр хадгална
  • •Хуудасны контент засварлах — хэлний дагуу гарчиг & контент засварлах, slug өөрчлөх, төрөл өөрчлөх, устгах
  • •Динамик хуудас удирдах жагсаалт — DB-аас хэрэглэгчийн хуудсыг автоматаар ачаална, төрлийн дагуу дүрс & тэмдэг
  • •Фронт хэрэглэгч интерфэйсийн дүрс — шүд хүрд (тохиргоо) + засварлах (контент) тусад нь харуулна
  • •Гадаад хуудасны iframe — ачаалалт амжилтгүй болвол "шинэ цонхонд нээх" заавар харуулна
  • •Дотоод PHP/HTML файл — RezlyX макет дотор include-аар рендерлэнэ

Fixed

  • •Цэсний товчлол URL #menu_{id} → бодит цэсний URL хадгална
  • •Цэс засварлах үед үүсгэх үетэй ижил товчлолын UI бүтцийг харуулна
  • •Цэс хадгалах үед товчлолын URL-г тусгана (formMenuType → панелийн харагдах байдлын үндэс)
  • •13 хэлэнд цэсний орчуулга нэмэв (12 цэсний зүйл × 13 хэл)
  • •Хуудасны баримт засварлагчийн орчуулгын түлхүүр замыг засав (admin.site.pages. → site.pages.)

Changed

  • •DB rzx_page_contents-д page_type багана нэмэв (document/widget/external)
  • •Цэс устгах үед холбоотой хуудас + орчуулгын өгөгдлийг хамт устгана
v1.12.5 2026-03-21 · 7 сарын өмнө

Fixed

  • •Цэсний товчлол URL-г засав — #menu_{id} оронд жинхэнэ цэсний URL хадгалах болов
v1.12.4 2026-03-21 · 7 сарын өмнө

Fixed

  • •Скин тохиргооны жагсаалтын төрөл хэрэглэгдэхгүй байсан — localStorage кэш нь скин тохиргоог дарж бичиж байсан асуудлыг засав
  • •Загвар сэлгэлт идэвхгүй үед зөвхөн скин тохиргоог ашиглана, идэвхтэй үед localStorage давамгайлна
  • •checkbox-ийн нуугдмал талбарын давхар илгээлтийг арилгав (шалгаагүй төлөвийг JS дээр боловсруулна)
v1.12.3 2026-03-20 · 7 сарын өмнө

Fixed

  • •Самбарын англи/япон орчуулгын түлхүүрүүд дутуу байсныг засав (source_locale, reply, style, board_settings гэх мэт)
  • •Ангиллын нэрэнд олон хэлний fallback хэрэглэв (locale → en → эх)
  • •Самбарын жагсаалтын үндсэн текстэд олон хэлний дэмжлэг нэмэв (вебзин/карт/галерейн урьдчилан харах)
v1.12.2 2026-03-20 · 7 сарын өмнө

Fixed

  • •Самбарын жагсаалтын үндсэн текстийн олон хэлний орлуулалт — веб-зин/карт/галлерийн урьдчилан харахад орчуулсан текст хэрэглэх (локал → en → эх)
  • •Үйлдвэрлэлийн скин файлууд дутуу — FTP-ээр skins/default/board/ фолдер үүсгэж, skin.json/дэлгэцийн зураг байршуулав
v1.12.1 2026-03-20 · 7 сарын өмнө

Fixed

  • •Үйлдвэрлэлийн орчинд скин тохиргоо харагдахгүй байсан — бүрэн файл синхрончлолыг дахин зохион байгуулав
  • •CLAUDE.md + BOARD_SYSTEM.md файлын бүтцийг бүрэн шинэчиллэв
v1.12.0 2026-03-20 · 7 сарын өмнө

Added

  • •Скин тохиргооны систем дуусгав — skin.json дээр суурилсан динамик маягт үүсгэх + бодит самбарт хэрэглэх
  • •Хэсэг бүлэглэлт (үндсэн / жагсаалт / холбоосууд / дизайн / гарчгийн арын дэвсгэр / захиалгат)
  • •radio болон video оролтын төрлийг нэмэв
  • •Зураг/видео файл байршуулах (FormData multipart)
  • •Зураг/видео устгах функц
  • •Скиний мэдээллийн хүснэгт (зохиогч / URL / имэйл / огноо / хувилбар / жижиг зураг)
  • •Гарчгийн арын дэвсгэр зураг/видео — арын дэвсгэрийн төрөл, өндөр, оверлейн тунгалаг байдал, текстийн өнгийн тохиргоо
  • •Жагсаалтын 4 загвар — жагсаалт / вебзин / галерей / карт; скин файлуудыг тусгаарлав + хаяж тохируулах дэмжлэг
  • •Галерей: бүтэн зургийн cover + hover дээр шилжих хөдөлгөөн
  • •Вебзин: жижиг зураг + гарчиг + урьдчилан харах + мета мэдээллийн карт
  • •Зарлалын нийтлэлийг дээд жагсаалтад тусгаарлав (_list-notices.php)
  • •Скин тохиргоог хэрэглэв — primary_color, border_radius, posts_per_row, allow_style_switch, show_category, холбосон самбар, Font Awesome, захиалгат CSS/HTML
  • •skin.json анхны утгыг автоматаар нэгтгэх — DB-д хадгалаагүй ч skin.json-ий анхны утгыг хэрэглэнэ

Fixed

  • •skin_config DB-д хадгалагдахгүй байсан (boards-api.php-ийн update үйлдэлд skin_config дутуу байсан)
  • •Скин хадгалахыг URLSearchParams → FormData (multipart) болгон өөрчлөв (файл байршуулахыг дэмжих)
  • •$_POST['skin_config'] массивыг автоматаар задлах дэмжлэг нэмэв
v1.11.3 2026-03-20 · 7 сарын өмнө

Fixed

  • •Нийтлэлийн дэлгэрэнгүй хуудаст өмнөх/дараагийн нийтлэлийн гарчигт олон хэлний fallback хэрэглэв (locale → en → эх)
v1.11.2 2026-03-20 · 7 сарын өмнө

Fixed

  • •Самбарын жагсаалтын гарчгийн олон хэлний орлуулалт — бүх локалаас орчуулга хайх (Солонгос хэлний хязгаарлалт хасагдав), эх хэлийг харгалзсан англи хэлний орлуулалт
v1.11.1 2026-03-20 · 7 сарын өмнө

Fixed

  • •OG картын ганц URL илрүүлэлтийг сайжруулав — <font> / <span> зэрэг дотоод тагт орсон URL-ийг блок эцэг элемент хүртэл дагаж, зөв боловсруулдаг болгов
v1.11.0 2026-03-20 · 7 сарын өмнө

Added

  • •URL авто холбоос — самбарын нийтлэлийн агуулга/редактор дахь URL-ийг автоматаар илрүүлж → <a> тэгт хөрвүүлнэ
  • •OG холбоосны урьдчилан харах карт — SNS баннер хэлбэрийн (thumbnail + гарчиг + тайлбар + домэйн) картыг автоматаар үүсгэнэ
  • •Редактор: URL оруулах/буулгасны дараа Enter → OG API дуудах → карт оруулах
  • •Агуулга: ганцаарчилсан URL холбоос → OG карт болгон автоматаар хөрвүүлнэ
  • •OgFetcher модуль — OG/Twitter Card мета өгөгдөл гаргаж авах, favicon, кодчилол автоматаар боловсруулах
  • •OG API — /board/api/og цэг
  • •board-autolink.js — нэгтгэсэн авто холбоос + OG карт JS (base-header-ээс глобалаар ачаалагдана)
v1.10.2 2026-03-20 · 7 сарын өмнө

Fixed

  • •Редактор/контентын зургийн тэгшлэлт — Tailwind preflight-ийн img { display: block } -г дарж бичих
  • •board-content.css нийтлэг CSS үүсгэв (редактор + контент харуулалтыг нэгтгэв)
  • •base-header.php-аас глобалаар ачааллав (фронтэндийн бүх хуудас)
  • •multilang-modal.php-д глобал редакторын загвар нэмэв (админы бүх Summernote жишээ)
  • •Самбарын контентоос prose классыг хаслаа; редакторын инлайн загварууд 100% хадгалагдана

Changed

  • •CLAUDE.md-д самбарын контентын загварын дүрмийг тодорхойлов (board-content класс заавал шаардлагатай)
v1.10.1 2026-03-20 · 7 сарын өмнө

Fixed

  • •Самбарын ангилал нэмэхэд олон хэлний модалд өмнөх ангиллын өгөгдөл ачаалагддаг байсан алдааг засварлав (давтагдашгүй түр langKey үүсгэх болгосон)
  • •Миграц 021-д comment_max_depth-н анхдагч утга 3-ийг нэмэв
v1.10.0 2026-03-20 · 7 сарын өмнө

Added

  • •Самбарын өргөтгөсөн хувьсагч — ExtraVarRenderer бүрэлдэхүүний модуль (15 төрөл: төрлөөр input/display дүрслэл)
  • •Өргөтгөсөн хувьсагчийн олон хэл — өргөтгөсөн хувьсагчийн утгыг хэлээр тусдаа хадгалах (rzx_translations холболт, нөөц гинж)
  • •Самбарын нийтлэлийн олон хэлний тусгаарлагдсан хадгалалт — эх хэл дээр засварлахад board_posts-д шууд хадгалдаг; бусад хэлнүүдийг rzx_translations-д орчуулга болгон хадгалдаг
  • •Самбарын нийтлэл унших нөөц гинж — гарчиг/агуулга/өргөтгөсөн хувьсагчийг дарааллаар харуулна: одоогийн locale → en → эх хэл
  • •Дэд хариу — 3 түвшний дэд сэтгэгдэл дэмжлэг, рекурсив модоор эрэмбэлэл, шугаман хариу форм
  • •Сэтгэгдэлд таалагдсан/таалагдаагүй — сэтгэгдэл тус бүрт дуртай товч + API
  • •Самбарын тохиргооны фронтэнд хандалт — админ шүдэн тэмдэгт → /board/{slug}/settings фронтэнд бүдүүвч
  • •Самбарын админ гарчгийн холбоос — админ самбарын жагсаалтад гарчгийг дарахад тухайн самбар руу очно

Fixed

  • •Самбарын API админ зөвшөөрлийн шалгалт: $currentUser['role'] → $_SESSION['admin_id'] (4 файл засварласан)
  • •Эх хэлний мэдэгдлийг зөвхөн зохиогч/администратор харна
  • •Самбарын тохиргооны embed горимын таб холбоос фронтэнд URL дэмжинэ

Changed

  • •DB rzx_board_posts-д extra_vars JSON багана нэмэв
  • •comment_max_depth анхдагч утгыг 0 → 3 болгон өөрчиллөө
  • •Сэтгэгдлийн үйлдлийн мөрийг нэгтгэв (таалагдсан/таалагдаагүй/хариу/устгах дүрс)
v1.9.4 2026-03-20 · 7 сарын өмнө

Added

  • •Анхдагч самбарын өгөгдөл — Мэдэгдлийн самбар, Асуулт ба хариулт, Түгээмэл асуулт, Чөлөөт самбарын миграц (020_default_boards_v193.sql)
v1.9.3 2026-03-20 · 7 сарын өмнө

Added

  • •Гишүүний бүлэг шинэчлэх — өгөгдмөл өгөгдлөөр (7 бүлэг + 13 хэлний орчуулга) эхлүүлэх функц
  • •Оноо тохиргоо шинэчлэх — тохиргооны утга/түвшний оноо/бүлгийн холболтыг өгөгдмөл утгад буцаах (гишүүний үлдэгдэлд нөлөөлөхгүй)
  • •Гишүүний бүлгийн олон хэлний дэмжлэг — бүлгийн нэр/давуу тал тайлбарт rzx_multilang_input() нийтлэг бүрэлдэхүүнийг хэрэглэв
  • •Гишүүний бүлэг чирэх-буулгах — SortableJS карт дараалал өөрчлөх + автомат хадгалах

Fixed

  • •Гишүүний бүлгийн картын локалиар орчуулга харуулалт (карт харагдац + засах модаль)
  • •Гишүүний бүлгийн олон хэлний орчуулгын өгөгдлийн гэмтэл засав (PHP UTF-8 дахин хадгалах)
  • •Оноо модулийн тохиргооны самбарын баганы нэрийг засав (board_name → title)
  • •Оноо гишүүдийн жагсаалтын collation зөрчлийг шийдэв (utf8mb4_unicode_ci нэгтгэв)
  • •Үйлдвэрлэлийн DB шилжилт (019_point_system_v190.sql)
v1.9.0 2026-03-20 · 7 сарын өмнө

Added

  • •Урамшуулал (оноо) удирдлагын систем — 3 табтай бүтэц (Үндсэн тохиргоо / Модулийн тохиргоо / Гишүүний оноо жагсаалт)
  • •Оноо 3 талбарт бүтэц — point (үйл ажиллагааны оноо), balance (төлбөрийн урамшуулал), total_accumulated (нийлбэр оноо, түвшний суурь)
  • •Нийлбэр оноо жин — төлбөрийн жин / үйл ажиллагааны жин тусдаа, төлбөрт үйлчлүүлэгчид давуу эрхтэй дэвших
  • •Оноо солих — оноо → урамшуулал хөрвүүлэх (харьцаа, нэгж, доод оноо тохируулах боломжтой)
  • •17 оноо олгох/хасах ангилал — Rhymix-тэй адил бүтэц (устгасан үед буцааж авах, хугацааны хязгаар, зарлалаас хасах)
  • •Модулийн тохиргоо — самбар тус бүрд 15 оноо зүйлийг тус тусад нь тохируулах
  • •Гишүүний оноо жагсаалт — 4 баганатай (оноо/урамшуулал/нийлбэр/түвшин), хайлт, тус бүрийн засвар
  • •Түвшний оноо — томъёо тооцоолол, дээд түвшнийг динамикаар тохируулах, бүлэгтэй холбох
  • •Оноо системийн баримт бичиг — POINT_SYSTEM.md дэлгэрэнгүй дизайн баримт
  • •Гишүүн бүлэг чирж буулгах — SortableJS-ээр картын дараалал өөрчлөх + автомат хадгалах
  • •Гишүүн бүлэг олон хэл — rzx_multilang_input() нийтлэг компонентийг бүлгийн нэр/давуу тал тайлбарт ашиглав
  • •Гишүүн бүлгийн seed өгөгдөл — 7 бүлэг × 13 хэлний олон хэлний орчуулгын өгөгдөл

Changed

  • •DB rzx_member_points-д balance, total_accumulated баганыг нэмэв
  • •DB rzx_point_levels.group_id-г INT-ээс CHAR(36)-д өөрчилсөн (UUID-тэй нийцтэй)
  • •rzx_point_levels, rzx_member_points-ийн collation-г utf8mb4_unicode_ci-д нэгтгэсэн
  • •Цогц хуудасны зохион байгуулалтыг шинэчилсэн (sidebar-main-content → flex-1 ml-64 хяналтын самбар загвар)
  • •Цогц хуудасны мөнгөний нэгжийг засав $config['currency'] → $siteSettings['service_currency']
  • •Үйлчилгээний хугацааг select → input number + datalist болгон өөрчилсөн
  • •CLAUDE.md-д олон хэлний оруулах UI дүрмийг тэмдэглэсэн (rzx_multilang_input заавал ашиглах)
v1.8.3 2026-03-20 · 7 сарын өмнө

Added

  • •Багцын дэлгэрэнгүй удирдлагын хуудас — тусдаа багцын үндсэн мэдээлэл засах, нүүрлэх зураг байршуулах, үйлчилгээний бүтэц засах, ажилтан холбох, идэвхтэй/идэвхгүй сэлгэх
  • •Арга хэмжээний хөнгөлөлт — багцын арга хэмжээний үнэ, хугацаа (эхлэл/төгсгөл), шошгоны тохиргоо; хугацаанд автоматаар идэвхжинэ
  • •Багцын жагсаалтын карт дизайн — торон карт зохион байгуулалт, зургийн толгой, арга хэмжээ/хөнгөлөлтийн тэмдэг, доод хэсэгт бэхлэгдсэн үйлдлийн мөр
  • •Санал болгох багцын арын зураг — үйлчлүүлэгчийн ажилтны дэлгэрэнгүй хуудасны багцын картад нүүрлэх зургийн дэвсгэр + градиент давхаргалал
  • •Үйлчилгээний хугацааг шууд оруулах — select → тоон оруулалт (5–480 мин, 5 минутын алхам) + datalist зөвлөмжийн жагсаалт

Changed

  • •DB rzx_service_bundles-д баганууд нэмэгдсэн: event_price, event_start, event_end, event_label
  • •Багцын жагсаалтын API-д total_duration болон арга хэмжээний баганууд нэмэгдсэн
  • •Орчуулгын файлууд (ko, en, ja): багцын дэлгэрэнгүй удирдлага + арга хэмжээний хөнгөлөлтийн түлхүүрүүд нэмэгдсэн
v1.8.1 2026-03-19 · 7 сарын өмнө

Added

  • •POS тохиргооны хуудас — картын хэмжээ, зураг/үнэ/утас харуулах, тунгалаг байдал, үндсэн таб, автомат шинэчлэл, дохиолол дуу, ажилтан томилох шаардлагатай, автомат томилолт
  • •POS тохиргоо хэрэгжсэн — картын хэмжээ/зураг/үнэ/утас/тунгалаг байдал/автомат шинэчлэл/үндсэн таб бүгд POS-д тусгагдсан
  • •Ажилтан автомат томилолт — POS тохиргоонд идэвхжүүлсэн үед киоск бүртгэлийн үед автоматаар томилно (үйлчилгээ хийх чадвартай + өнөөдрийн захиалга хамгийн бага)
  • •POS картын ажилтны тэмдэг — томилогдсон/томилогдоогүй заалт; томилогдоогүй үед үргэлжлүүлэх товч идэвхгүй
  • •POS үйлчилгээний зургийн дэвсгэр — үйлчилгээний дэлгэрэнгүй модалын толгой + үйлчлүүлэгчийн бүсэд төлөөлөх үйлчилгээний зургийн дэвсгэр
  • •Ажилтан is_visible — жагсаалтад харагдах байдлыг удирдана; нуугдсан ажилтан захиалга/POS/киоскоос хасагдана
  • •Ажилтны карт баннер — админ ажилтны картад баннер зураг + статусын тэмдэг
  • •Киоск автомат томилолт — staff_id=NULL-тай бүртгэж, томилолтыг POS дахь админ хийнэ

Fixed

  • •POS ажилтан томилсны дараа үйлчилгээний жагсаалт даруй шинэчлэгдэх (кэш запобіганняgobігання)
  • •Ажилтан томилолтын API параметрийн засвар (reservation_id → reservation_ids[])
  • •Үйлдвэрлэлд олон дутуу хүснэгт/баганыг засварласан (018 миграц бэхжүүлсэн)
  • •Админ гарах маршрут нэмэгдсэн
  • •Киоск баталгаажуулалтын өмнөх маршрутын байршил
v1.7.0 2026-03-18 · 7 сарын өмнө

Added

  • •Үндсэн бүдүүвчийн систем — layouts/base-header.php + base-footer.php, index.php-д ob_start автоматаар хэрэгждэг, бүх хэрэглэгчийн хуудасны нийтлэг толгой/хөл
  • •Самбарын фронтэнд — жагсаалт, дэлгэрэнгүй, бичих/засах хуудас, Summernote редактор, чирж буулгах файл хавсралт
  • •Самбарын богино URL — /board/ угтваргүйгээр /free, /notice/3 гэх мэтэд хандах боломжтой; DB slug автомат тохируулга
  • •Захиалга хайх хуудас — /lookup богино URL, захиалгын дугаар/имэйл/утасны дугаараар хайх
  • •Захиалгын дэлгэрэнгүй хуудас — /booking/detail/{дугаар}, ажилтны мэндчилгээний бөмбөлөг, үйлчилгээ/төлбөр/цуцлалтын мэдээлэл
  • •Захиалга цуцлах хуудас — /booking/cancel/{дугаар}, цуцлах шалтгаан оруулах
  • •Миний хуудас дахь захиалгын дэлгэрэнгүй — /mypage/reservations/{id}, хажуугийн самбар + дэлгэрэнгүй мэдээлэл
  • •Самбарын олон хэлний дэмжлэг — original_locale (анх бичсэн хэл) + source_locale (одоогийн агуулгын хэл), буцах гинж (source → en → original)
  • •Ажилтны мэндчилгээ — greeting_before (үйлчилгээний өмнө) + greeting_after (үйлчилгээний дараа), олон хэлний дэмжлэгтэй, захиалгын төлөвөөс хамааран харагдана
  • •Администраторын профайлын цэс — профайлын зураг/үсэг + нэр + нүүр хуудас/миний хуудас/гарах холбоосууд
  • •Хэрэглэгчийн толгойн администратор холбоос — администраторын хуралдааны үед цэст администраторын хуудасны холбоос харагдана

Changed

  • •Бүх хэрэглэгчийн хуудасны бүдүүвчийг нэгтгэв (тус тусын HTML бүтцийг арилгаж, LayoutManager автоматаар хэрэгжүүлэв)
  • •Самбарын ангилал харуулах нөхцөлийг show_category → hide_categories болгов
  • •Самбарын URL-ийг /board/free → /free богино URL болгов (үндсэн тохиргоо)
  • •Администраторын дээд мөрийн "Admin" → бодит нэвтрэх нэр + профайлын зураг болгов

Fixed

  • •rzx_users.role багана байхгүй → $_SESSION['admin_id'] суурилсан администратор тодорхойлох
  • •rzx_users.nick_name багана байхгүй → name + Encryption тайлалт ашиглав
  • •rzx_staff.profile_image → avatar баганы нэрийг засав
  • •Service загварын category_id int→string төрлийн хөрвүүлэлт
  • •Захиалга хайхдаа имэйл/утасны дугаарыг энгийн текстээр хайна (шифрлэгдээгүй өгөгдөл)
v1.6.1 2026-03-18 · 7 сарын өмнө

Added

  • •Самбарын администраторын 6 таб — Үндсэн тохиргоо, Ангиллын удирдлага, Нэмэлт хувьсагч, Эрх тохиргоо, Нэмэлт тохиргоо, Скин
  • •Үндсэн тохиргооны табын нэгтгэл — Үндсэн мэдээлэл + SEO + Загвар сонголт + Скин сонголт + Харуулалт + Жагсаалт + Дэвшилтэт (нугалах/задлах)
  • •Нийтлэг компонентууд — 8 components/board/section-*.php файл (basic, seo, layout-select, skin-select, display, list, advanced, js), үүсгэх/засах хуудсанд дахин ашиглагдах
  • •Олон хэлний оролтын компонент — rzx_multilang_input() функц, текст/редактор горим, шугаман бөмбөрцгийн товч
  • •Ангиллын удирдлагын сайжруулалт — модны бүтэц (parent_id), засварлах модал (нэр/фонтын өнгө/тайлбар/зөвшөөрсөн бүлгүүд/задлах/анхдагч ангилал), SortableJS чирж эрэмбэлэх, гишүүний зэрэглэлийг DB-ээс динамикаар ачаалах
  • •Нэмэлт хувьсагчийн таб — rzx_board_extra_vars хүснэгт, 15 оролтын төрөл (text_multilang, textarea_multilang, textarea_editor орно), олон хэлний дэмжлэг, чирж эрэмбэлэх
  • •Эрх тохиргооны таб — Нэвтрэх эрх (all/member/grade:*/admin_staff/admin), модулийн администратор (нийтлэг хэрэглэгч хайлт, профайл зураг, эрхийн хамрах хүрээ), мэдэгдлийн и-мэйл мэдээлэл
  • •Нэмэлт тохиргооны таб — Нэгдсэн самбар, баримт (түүх/санал болгох/мэдэгдэх), сэтгэгдэл (тоо/гүн/зөвшөөрөл/санал болгох/мэдэгдэх), WYSIWYG редактор (эрхийн матриц), файл (татаж авах бүлэг), тэжээл (RSS нийтийн/зохиогчийн эрх)
  • •Скин систем — skin.json формат, SkinConfigRenderer, "multilang": true дэмжлэг, скин мэдээллийн карт
  • •Загварын систем — layout.json формат, үндсэн тохиргооноос картаар сонгох
  • •Нийтлэг хэрэглэгч хайлт — user-search.php компонент, шифрлэх/тайлах, профайл зураг, хаана ч дахин ашиглах боломжтой
  • •Модулийн администратор — rzx_board_admins хүснэгт, нийтлэл/сэтгэгдэл/тохиргооны эрх, мэдэгдэл хүлээн авах
  • •Дэвшилтэт тохиргооны өргөтгөл — администраторыг нэргүйгээс хасах, Data URL хязгаарлалт, Юникод буруу ашиглалт, нийтлэл/сэтгэгдэл хамгаалалт (сэтгэгдлийн тоо/хариу тоо/хугацаа), дээд администраторын хамгаалалт, илгээгчийн и-мэйл хаяг
  • •Тогл товчны UI — бүх тийм/үгүй зүйлсийг тогл болгон хөрвүүлэв (үндсэн + нэмэлт тохиргоо)
  • •Орчуулгын түлхүүрүүд — ойролцоогоор 300 түлхүүр, 13 хэл

Fixed

  • •Хогийн сагсны SQL алдаа — LIMIT ? холболтын мөр → бүхэл тоон утга
  • •Summernote рендер болохгүй — jQuery/Summernote JS ачаалах + модал харуулсны дараа эхлүүлэх
  • •Collation алдаа — board_admins JOIN хийхэд COLLATE utf8mb4_unicode_ci тодорхой заах
  • •Нугалах/задлах ажиллахгүй — toggleSection функцийг <head>-д урьдчилан тодорхойлох

Changed

  • •Бие даасан табуудыг (жагсаалт/дэвшилтэт) → үндсэн тохиргооны табд нугалах/задлахтайгаар нэгтгэв
  • •Скин сонголт → үндсэн тохиргооны табруу шилжүүлэв; скин таб зөвхөн тохиргоог харуулна
  • •Администраторын и-мэйл → дэвшилтэт тохиргооны "Илгээгчийн и-мэйл хаяг" болгон өөрчлөв
  • •Модулийн администратор → эрх тохиргооны табруу шилжүүлэв
  • •"Жагсаалтад ангилал харуулах" → ангиллын тохиргооноос хасав, скин тусгай тохиргоонд шилжүүлэв
  • •"Жагсаалтад ангилал харуулах" → ангиллын тохиргооноос хасав, скин тусгай тохиргоонд шилжүүлэв
  • •Бичих зөвшөөрсөн бүлгүүд → хатуу кодлохын оронд rzx_member_grades хүснэгтээс динамикаар ачаалах
v1.6.0 2026-03-17 · 7 сарын өмнө

Added

  • •Олон хэлний fallback систем: db_trans() функцэд суурилсан fallback гинж (тохируулсан хэл → en → үндсэн хэл → source_locale → аль ч орчуулга)
  • •Самбарын тохиргооны олон хэлний товч: үндсэн тохиргооны табын 6 талбарт олон хэлний (дэлхийн бөмбөрцөг) товч нэмэв
  • •Самбарын фронт харагдацын олон хэлний fallback: _init.php-д гарчиг, тайлбар, SEO, header/footer-ийн олон хэл хэрэглэв
  • •Виджетийн олон хэлний fallback: WidgetRenderer::t(), tBtn() хоосон мөр боловсруулалтыг сайжруулав
  • •PWA орчуулгын түлхүүр нэмэв (13 хэл: admin.pwa.update_available, update, later)

Fixed

  • •Features виджетийн хоосон картын асуудал: ?? оператор хоосон мөр ""-г хүчинтэй утга гэж үзэж байсан → !empty() суурьтай fallback-аар засав
  • •Үйлдвэрлэлийн Mixed Content алдаа: APP_URL http→https засав + JS протоколын автомат засвар
v1.5.2 2026-03-17 · 7 сарын өмнө

Added

  • •POS үйлчилгээний түүхээс үйлчилгээ устгах функц (устгах товч + API + DOM шуурхай шинэчлэл)
  • •13 хэлэнд үйлчилгээ устгалтын орчуулгын түлхүүрүүд нэмэв
v1.5.0 2026-03-17 · 7 сарын өмнө

Added

  • •Киоск бүртгэлийн систем: үйлчилгээ баталгаажуулах → үйлчлүүлэгчийн мэдээлэл → захиалга үүсгэх → дугаар олгох
  • •Ажилтны бэлэн байдлын тэмдэг: киоскийн ажилтан сонголтод завгүй/боломжтой гэдгийг бодит цагт харуулна
  • •Олон улсын утасны дугаарын модуль: киоск бүртгэлийн маягтад phone-input бүрэлдэхүүнийг хэрэглэв
  • •Захиалгын жишээ өгөгдлийн seed: database/seed_reservations.php (POS/киоск/онлайн 10 бичлэг)
  • •Киоскийн нийтлэг файлуудыг салгав (_styles.php, _bg.php, _scripts.php)
  • •13 хэлэнд киоскийн орчуулгын 11 түлхүүр нэмэв

Changed

  • •Киоскийн үйлчилгээ сонголт: ажилтны ур чадварт суурилсан шүүлт (томилох горим)
  • •Киоскийн ангиллын табыг голлуулав

Fixed

  • •Үйлдвэрлэлийн орчинд админ нэвтэрч чадахгүй байсан (нууц үгийн хэш эвдэрсэн — bash-ийн $ хувьсагч орлуулах асуудал)
  • •Шинэчлэлтийн системийг тогтворжуулсан: хадгалах жагсаалтыг өргөтгөж, эрүүл мэндийн шалгалт, DB хувилбарын синхрончлол
  • •Хувилбарын ганц эх сурвалжийг нэгтгэв (version.json → index.php, DB автомат синхрончлол)
VosCMS Зах Зээл
Нүүр Home 마켓플레이스 개발자 포털 Notice Free Board Q&A FAQ
Нэвтрэх Бүртгүүлэх
Монгол
한국어 English 日本語 中文(中国) 中文(臺灣) Deutsch Español Français Монгол Русский Türkçe Tiếng Việt Bahasa Indonesia