Repository navigation
DashWoo 1.6.0
Dwoo — هویت بصری تازه، خروجی محافظتشده، طراحی صفر، صفحههای دلخواه در منوی حساب و
بلوکهای آماده با چیدمان مستقل برای هر صفحه.
در یک نگاه
| نسخه | 1.6.0 |
| بستهٔ نصب | dashwoo-1.6.0.zip |
| php | ۸.۰ یا بالاتر |
| وردپرس | ۶.۴ یا بالاتر |
| ووکامرس | ۸.۵ یا بالاتر |
| المنتور | ۳.۲۴ یا بالاتر (پرو ۳.۱۹ یا بالاتر) |
| آزمونها | ۶۶۳ آزمون / ۸٬۹۹۸ بررسی — همه سبز |
| تأیید بسته | ۲۸ بررسی، ۰ خطا |
| نمایش صفحهها | ۸۸ صفحه (انگلیسی و فارسی) — ۰ ایراد چیدمان |
۱) هویت بصری: Dwoo
لوگو و هویت بصری پروژه Dwoo شد؛ نام محصول، تنظیمات و هویت فنی همان DashWoo است.
- نشان تازه: یک کاشی گرد با حرف «d» — بهصورت مسیر و شکل رسم شده، پس هیچوقت با قلم جانشین بدقعی نمیشود.
- لوگوتایپ هندسی «Dwoo»، در دو حالت روشن و تیره (برای پسزمینهٔ تیره).
- بنر، کارت مربع، کارت محصول و کارت عریض (webp) برای صفحههای عمومی فروشگاه.
- چهار تصویر استاندارد مخزن وردپرس در ریشهٔ افزونه:
icon-128x128.png،icon-256x256.png،banner-772x250.png،banner-1544x500.png. - نشان در سرصفحهٔ پیشخوان DashWoo، در ویجتهای حساب و در برگهٔ آیکون المنتور دیده میشود — همه بهصورت SVG درونخطی، بدون هیچ درخواست اضافه.
- همهٔ فایلها با یک فرمان بازتولید میشوند:
python3 tools/brand/make-dwoo.py.
۲) خروجی محافظتشده (کد قفلشده)
نسخهٔ منتشرشدهٔ افزونه کد خوانا نیست:
- هر فایل منطقی افزونه (۸۱ ماژول) به یک «پوکه» تبدیل میشود که بدنهٔ خودش را در زمان اجرا از هستهٔ ماژول (
includes/kernel.php) میگیرد؛ فقطdashwoo.phpو خود هسته خوانا میمانند — همان دو فایلی که وردپرس برای شناختن افزونه لازم دارد. - هر ماژول با کلید همان ساخت رمزگشایی میشود؛ محتوا به شناسهٔ ماژول گره خورده است، پس همان بایتها زیر شناسهٔ دیگر هم به دادهٔ بیمعنا میرسند.
- اگر فایلی دستکاری شود: همان ماژول از کار میافتد (کلاسش ساخته نمیشود، نه نیمهکاره)، نام فایل به مدیر گزارش میشود، افزونه خودش را غیرفعال میکند و سایت و دادهها دستنخورده میمانند.
- بدون کلید درست، محتوای ماژول خوانا نیست؛ کپیکردن فایلها یک کپی میدهد، نه یک افزونهٔ کارکننده.
- کلید میتواند بیرون از افزونه و در
wp-config.phpنگه داشته شود (فیلترdashwoo_kernel_key). - هیچ بررسی مجوز، هیچ تماس با سرور سازنده و هیچ قفل دامنهای وجود ندارد؛ فقط «نخواندنی + غیرقابلاستفاده».
- تأیید در خط تولید:
bin/build.phpهر محتوا را دوباره رمزگشایی میکند و بایتبهبایت باsrc/مقایسه میکند و اگر یک بایت فرق کند بسته ساخته نمیشود؛bin/verify-build.phpهمین کار را از روی خود بسته انجام میدهد (۲۸ بررسی، ۰ خطا).
نکتهٔ مهم: بستهٔ زیپی که نصب میکنید را نگه دارید. هر ساخت جدید کلید تازهای دارد؛ برای ترمیم یک نصب قدیمی فقط همان بستهٔ اول کار میکند.
۳) طراحی صفر (پیشفرض)
- افزونه در بخش کاربری سایت هیچ شیوهنامهای از خودش بارگذاری نمیکند: نه
dashwoo.css، نه بستهٔ طراحی حساب، نه ریست و نه متغیر درونخطی — مگر اینکه خودتان روشن کنید. - ویجتها فقط نشانهگذاری ساده با کلاسهای آماده بیرون میدهند تا پوسته، CSS شما یا المنتور همهچیز را قالببندی کند.
- کلید تازه در «سیستم → عمومی»: بارگذاری شیوهنامۀ پلتفرم DashWoo (پیشفرض: خاموش).
- توکنهای طراحی (رنگ، قلم، فاصله، گردی، سایه) دادهاند نه طراحی؛ آنها همیشه بارگذاری میشوند تا المنتور و پوسته بتوانند از
var(--dw-*)استفاده کنند. - یک نصب تازه یک بار رنگآمیزی میشود (تا شبیه یک صفحه باشد، نه یک فهرست خالی)؛ از اولین ذخیرهٔ تنظیمات به بعد، فقط چیزی بارگذاری میشود که خودتان روشن کردهاید.
۴) صفحهٔ عمومی پروژه
- صفحهٔ پروژه (
PROJECT.md) انگلیسی است با یک بخش فارسی در پایان و پیشنمایش درون خودش. - پیشنمایش، تصویر واقعی است: نه تصویر که از نمای واقعی افزونه و شیوهنامهٔ واقعی گرفته شدهاند — صفحهٔ تنظیمات، صفحهٔ طراحی حساب، پنل حساب با کارت منو و کارت محتوا، یک صفحهٔ سفارشی و راهانداز راهاندازی — هر کدام انگلیسی و فارسی.
- بنرها: صفحهٔ پروژه (README) با بنر کامل
1544×500باز میشود و صفحهٔ محصول/افزونه (PROJECT.md) با بنر کوچک772×250؛ هر دو تصویر در ریشهٔ افزونه هم هستند. - فهرست ویژگیها خلاصه شده (شش بند) و بخشهای Language، Integrity و The My Account kit از صفحهٔ پروژه برداشته شدهاند.
- Contributors: obsifox — تنها نامی که در هر دو صفحه و در
readme.txtمیآید. - خط تولید تصاویر هم در مخزن است:
tools/preview/(رندر نماها + عکسبرداری با Chromium).
۵) منو، صفحههای سفارشی و جعبهٔ محتوا
- فهرستهای تکرارشو در تنظیمات: یک ردیف برای هر صفحهٔ دلخواه با نشانی، برچسب، آیکون، ترتیب، نوع (صفحهٔ سایت یا پیوند)، دسترسی و نمایش/عدم نمایش در منو؛ در صفحهٔ تنظیمات میتوانید ردیف اضافه کنید، جابهجا کنید و حذف کنید.
- هر صفحهٔ دلخواه یک endpoint واقعی ووکامرس میشود و در منوی حساب مینشیند (پیشوند
dwpage-). یک صفحه میتواند برای همه، فقط کاربران واردشده یا فقط مدیران باشد، و میتواند از منو پنهان بماند ولی با نشانی مستقیم باز شود. - جعبهٔ محتوای هر صفحه (شامل پیشخوان) از چهار منبع تغذیه میشود — HTML، شورتکد، قالب المنتور یا فایل پوسته — و چهار قالب دارد: ساده، کارت، بخش، پوسته… یا هیچ قالبی، که پیشفرض است.
- منو و پیشخوان کاملاً جدا شدهاند: ظاهر منو از ظاهر محتوا مستقل است و هر کدام قالب خودش را دارد.
۶) راهانداز راهاندازی (فقط بار اول)
- همان لحظهٔ فعالسازی، یک راهانداز چهارگامی پیشنهاد میشود: زبان → رنگ → بخش حساب → پایان. هر گام قابل رد کردن است و راهانداز از منوی DashWoo هر وقت خواستید دوباره اجرا میشود.
- هر پاسخی که راهانداز مینویسد یک تنظیم معمولی است، از همان API صفحههای تنظیمات — نه یک لایهٔ جداگانه و نه دادهٔ پنهان.
- سایتی که از نسخهٔ پیش از ۱.۵ به ۱.۶ میرسد، یک بار پرسیده میشود («راهانداز از نسخهٔ ۱.۶.۰ اضافه شده؛ یک بار اجرایش کنید یا ببندید») و میتواند همین حالا ردش کند. سایتهایی که پیشتر ۱.۶ داشتهاند بیدلیل پیام نمیگیرند.
- نصبهای تازه هم هرگز بیش از یک بار پیشنهاد نمیگیرند: پاسخ (اجرا یا رد) در گزینهٔ
dashwoo_setupذخیره میشود.
۷) نمایش درست صفحههای تنظیمات
- رفع سرریز: فهرست تکرارشوی «صفحههای سفارشی» که ده ستون دارد، از کارت بیرون میزد و فیلدهای کنارش را میبرید. حالا هر ردیف یک شبکهٔ جمعشونده از سلولهای برچسبدار است: هر فیلد جای کافی دارد، برچسب خودش را بالای سرش میبیند (سرصفحه روی صفحه پنهان است ولی ساختار جدول و
roleها برای صفحهخوان باقی میماند) و هیچچیز از کارت بیرون نمیزند. - چهار نگهبان چیدمان در
admin.css: فرزندهای گرید اجازه ندارند از ستونشان پهنتر شوند، فرم تنظیمات ستون برچسب را ثابت نگه میدارد، هیچ کنترل از سلول خودش بزرگتر نمیشود (پس بلندترین گزینهٔ یک select اندازهٔ صفحه را تعیین نمیکند) و فهرستهای تکرارشو میپیچند. - رفع مارکآپ خراب: سه نشانهٔ ناوبری (
aria-label) و فیلد نام قلم، متن PHP خود را در HTML چاپ میکردند (aria-label=__( 'Subgroups', 'dashwoo' )) — نه ترجمهشده و نه معتبر؛ حالا متن ترجمهشده و درست است. - ابزار سنجش:
php tools/preview/audit.phpهمهٔ ۴۳ صفحه (۳۹ بخش تنظیمات، مدیر داراییها، راهانداز، پنل حساب و یک صفحهٔ سفارشی) را در دو زبان رندر میکند و در مرورگر بیسر میسنجد که چیزی از کادر بیرون نزده یا بریده نشده باشد — نتیجهٔ فعلی: ۸۲ صفحه، ۰ ایراد. - آزمونهای تازه:
tests/integration/RenderedMarkupTest.php(HTML سالم، شناسههای یکتا، برچسبهای درست، نگهبانهای چیدمان) وtests/unit/AssetsIntegrityTest.php(شیوهنامهها و اسکریپتها: بسته، بدون آدرس بیرونی، بدون وابستگی به jQuery).
۸) اصلاحها
- زبان: برچسبهای پیشفرض منوی حساب (مثل «سفارشها») اگر پیش از بارگذاری بستهٔ ترجمه خوانده میشدند، انگلیسی میماندند؛ حالا با رسیدن بستهٔ ترجمه، حافظهٔ تنظیمات پاک میشود و همهچیز در زبان درست بازخوانی میشود.
wp_register_styleدر محیط آزمون اضافه شد تا بارگذاری شرطی شیوهنامه دقیق آزمونپذیر باشد.
۹) بلوکهای آماده و چیدمان مستقل هر صفحه
حالا میتوانید صفحهٔ حساب را مثل یک صفحهٔ مدرن، تکهتکه بسازید — هم در المنتور، هم با
شورتکد — و برای هر اندپوینت چیدمان جداگانه بگذارید.
- سه بلوک تازه (و هر کدام یک شورتکد):
- کارت پروفایل مشتری —
[dashwoo_account_profile_card]با چهار چیدمان (هیرو، فشرده،
خطی، ساده)، تصویر یا حروف اول نام، «عضو از …»، خط واقعیتها و نوار پیشرفت؛ - کاشیهای آمار —
[dashwoo_account_stats]با تا شش ستون: تعداد سفارشها، مجموع خرید
(با قالب و واحد پول خودِ فروشگاه)، دانلودهای در دسترس و نشانیهای ذخیرهشده — همه از
دادهٔ خودِ مشتری، پس هیچ عددی کهنه نمیشود؛ - فهرست پیشرفت/دستاورد —
[dashwoo_account_progress]که هر ردیفش از عدد واقعی مشتری
پر میشود (سفارشها، مجموع خرید) یا از عددی که خودتان مینویسید.
- کارت پروفایل مشتری —
- کاشی خالی کشیده نمیشود: اگر مقداری برای نمایش نباشد، آن ردیف چاپ نمیشود؛ هیچ صفر
ساختگی و هیچ برچسب بیعدد. - بدون طراحی: بلوکها فقط نشانهگذاری و قلاب کلاس میدهند (
.dw-acc__profile-*،
.dw-acc__stat-*،.dw-acc__progress-*،data-dw-*)؛ رنگ، گردی و قلم از پوسته،
CSS خودتان یا المنتور میآید. تنها چیزی که دشوو تعیین میکند شمار ستونهای کاشیهاست،
چون با HTML نمیشود گفت «چهار ستون». - سرتیتر گروه در منو: در ردیفهای تکرارشوی منو، ردیفی که «— سرتیتر گروه —» را انتخاب
کند فقط یک عنوان بین آیتمها میشود (مثل ACCOUNT و PROFILE در طرحهای امروزی)، نه لینک. - چیدمان مستقل هر اندپوینت: در «قالبها» برای هر اندپوینت دو گزینه هست — «قالب المنتور
این صفحه» و «شکل قاب محتوا این صفحه». صفحهٔ سفارشی یا اندپوینت افزونهٔ دیگر هم فرقی
نمیکند؛ همهشان یک اندپوینت درجهیکاند.- قالب را از «قالبها → سازندهٔ پوستهٔ المنتور» بردارید و شناسهاش را بگذارید؛
- اگر قالب حذف شود یا خالی باشد، دشوو به نمایش عادی برمیگردد — هیچ صفحهای سفید
نمیشود؛ - جاهایی که این چیدمان اعمال میشود: پنل حساب، جعبهٔ محتوا، شورتکدها و ویجتها (بهجز
وقتی خودتان منبع را «فقط ووکامرس/خود دشوو» بگذارید).
- راههای دیگر گفتن یک فهرست به شورتکد: کنار JSON (که خودش
]دارد و در شورتکد دردسر
میسازد)، شکل سادهٔlabel:Orders|source:orders;;label:Spent|source:spentهم پذیرفته
میشود؛ و اگر ورودی خراب باشد، به همان کاشیهای پیشفرض برمیگردد. - ۶۵ رشتهٔ تازه ترجمه شد: شاخص کل ترجمه POT ۱٬۱۷۸ / PO ۱٬۱۷۸ / صفر گمشده.
۱۰) آزمونها و ابزارها
- ۶۶۳ آزمون / ۸٬۹۹۸ بررسی: واحد ۲۵۰، یکپارچه ۲۶۵، کارکردی ۱۲۸، رگرسیون ۲۰ — همه سبز، بدون هیچ وابستگی بیرونی.
- آزمونهای تازه:
KernelTest(هستهٔ ماژول)،ProtectedBuildTest(ساخت محافظتشده و خرابکردن عمدی آن)،BrandIdentityTest(کل کیت Dwoo)،ScreenshotsTest،ProjectPageTest،ZeroCssFlowTest(هیچ شیوهنامهای در بخش کاربری)،WizardFlowTest(راهانداز: بار اول، ارتقا از پیش از ۱.۵، ذخیرهٔ هر گام)،RenderedMarkupTestوAssetsIntegrityTest. php bin/lint.php: ۲۷۳ بررسی خودکار روی ۹۳ فایل افزونه — ۰ ایراد.- آزمونهای تازه:
AccountBlocksUnitTest،AccountBlocksTest،AccountBlocksFlowTest(بلوکها، منابع داده، سرتیتر گروه، قالب هر اندپوینت، مهمان، فیلترها) و آزمون پیام راهانداز (هیچ%2520ی در نشانی نمیماند). - هارنسهای جاوااسکریپت (node + jsdom): پنل ۵۴ بررسی، پیشخوان ۲۴ بررسی — هر دو سبز.
- نمایش صفحهها: ۸۸ صفحه (۴۴ انگلیسی + ۴۴ فارسی) — ۰ ایراد چیدمان؛ صفحهٔ بلوکهای ترکیبی هم اندازهگیری میشود.
- پیشنمایش: ۱۱ تصویر تازه در
screenshots/— از جمله صفحهٔ بلوکها (انگلیسی و فارسی).
بستهٔ نصب: dashwoo-1.6.0.zip — از بخش Releases همین مخزن قابل دانلود است.