Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

اپ گریڈنگ

اگر آپ پچھلے ورژن سے اپ گریڈ کر رہے ہیں تو براہ کرم Upgrade Guide میں ٹوٹی ہوئی تبدیلیوں اور ہجرت کے مراحل کو دیکھیں۔

تعارف

MJML ایک مارک اپ زبان ہے جو خاص طور پر جوابی ای میلز کو کوڈ کرنے کے عمل کو آسان بنانے کے لئے ڈیزائن کی گئی ہے۔ اس کی معنائی نحوی اس کی آسانی اور سادگی کو یقینی بناتی ہے، جبکہ اس کے معیاری اجزاء کی وسیع لائبریری ترقی کو تیز کرتی ہے اور آپ کے ای میل کوڈ بیس کی پیچیدگی کو کم کرتی ہے۔ MJML کا اوپن سورس انجن اعلیٰ معیار کی، جوابی HTML تخلیق کرتا ہے جو بہترین طریقوں کی پیروی کرتا ہے۔ اگر آپ نے آؤٹ لک کے ساتھ کام کرنے میں پریشانیوں کا سامنا کیا ہے تو، یہ پیکیج آپ کے لئے بنایا گیا ہے۔

ہمارا MJML عمل درآمد سرکاری MJML API کے لئے ایک ورپر کے طور پر کام کرتا ہے۔ یہ PHP کے اندر براہ راست MJML کو HTML میں تبدیل کرنے کے لئے سہولت فراہم کرتا ہے، NodeJS کی ضرورت کے بغیر۔ یہ پیکیج PHP ایپلیکیشنز کے لئے مثالی ہے جو MJML کو شامل کرنا چاہتی ہیں بغیر NodeJS اور MJML CLI کو انسٹال کرنے کی پریشانی کے۔

مثال

// بغیر لاراول
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// منیفائیڈ HTML
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// لاراول کے ساتھ
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// لاراول کے ساتھ اور منیفائیڈ HTML
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

تنصیب

  1. پہلے اپنے composer.json فائل میں درج ذیل شامل کریں تاکہ ہماری پیکیج کو یہ ہدایت ملے کہ جب ہماری پیکیج انسٹال ہو، تو آپ کے آپریٹنگ سسٹم کے لئے درست بینری کو کھینچیں۔ بینریاں ڈاؤن لوڈ ہو جائیں گی جب آپ install، update، یا dump-autoload چلاتے ہیں۔

    {
    "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]
    }

    MJML بینری ہمارے CDN سے حاصل کی جائے گی اور اس پیکیج کے "bin" فولڈر میں محفوظ کی جائے گی جب کمپوزر کا تنصیب یا اپ ڈیٹ ہوگا۔ یہ یقینی بنائیں کہ آپ کے مقامی اور پروڈکشن ماحول دونوں کے لئے مطلوبہ بینریاں لوڈ ہیں۔

    ڈیفالٹ کے طور پر، all ان تمام بینریوں کو کھینچتا ہے جن کی ہم حمایت کرتے ہیں۔ ہم تجویز کرتے ہیں کہ اس کو آپریٹنگ اور آرکیٹیکچر سسٹمز کے دائرے میں محدود کریں جن کی آپ کو بینڈوڈتھ اور انسٹالیشن کے وقت کی بچت کے لئے ضرورت ہے۔ دستیاب بینریاں مندرجہ ذیل ہیں۔

    آپریٹنگ سسٹم آرکیٹیکچر کمپوزر پوسٹ اپ ڈیٹ کمانڈ
    تمام تمام DefectiveCode\MJML\PullBinary::all
    ڈارون (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    ڈارون (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64
    لینکس (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    لینکس (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64
    لینکس (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-musl
    لینکس (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl
  2. اس کے بعد، PHP پیکیج کو انسٹال کرنے کے لئے درج ذیل کمپوزر کمانڈ چلائیں:

    composer require defectivecode/mjml
  3. بس اتنا ہی! اگر آپ لاراول استعمال کر رہے ہیں تو، ہماری پیکیج خود بخود لاراول کے پیکیج ڈسکوری کا استعمال کرتے ہوئے انسٹال ہو جائے گی۔

استعمال (بغیر لاراول)

اگر آپ لاراول استعمال کر رہے ہیں تو نیچے لاراول کے ساتھ استعمال دیکھیں۔

MJML کو رینڈر کرنا

MJML کو رینڈر کرنے کے لئے، اپنے MJML اسٹرنگ کو render طریقہ میں منتقل کریں:

use DefectiveCode\MJML;
 
$html = (new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

MJML کی توثیق کرنا

MJML کی توثیق کرنے کے لئے، اپنے MJML اسٹرنگ کو isValid طریقہ میں منتقل کریں:

use DefectiveCode\MJML;
 
$isValid = (new MJML)->isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

استعمال (لاراول کے ساتھ)

MJML کو رینڈر کرنا

MJML کو رینڈر کرنے کے لئے، اپنے MJML اسٹرنگ کو MJML فاسڈ کے render میں منتقل کریں:

use DefectiveCode\MJML\Facades\MJML;
 
$html = MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

MJML کی توثیق کرنا

MJML کی توثیق کرنے کے لئے، اپنے MJML اسٹرنگ کو MJML فاسڈ کے isValid طریقہ میں منتقل کریں:

use DefectiveCode\MJML\Facades\MJML;
 
$isValid = MJML::isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

تشکیل

آپ درج ذیل کمانڈ کا استعمال کرتے ہوئے تشکیل کی فائل شائع کر سکتے ہیں:

php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"

یہ آپ کے config فولڈر میں ایک mjml.php تشکیل کی فائل تخلیق کرے گا۔ تشکیل کی فائل میں درج تمام اختیارات MJML فاسڈ کے استعمال کے وقت config آبجیکٹ میں شامل ہوتے ہیں۔

تشکیل

تمام تشکیل کے اختیارات کو MJML آبجیکٹ پر براہ راست درج ذیل طریقے سے بلانے کے ذریعے سیٹ کیا جا سکتا ہے۔

use DefectiveCode\MJML;
 
$html = (new MJML)
->setMinify(true)
->setBeautify(false)
->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

ہمارا پیکیج ایک ہی تشکیل کی پیروی کرتا ہے جیسا کہ سرکاری MJML پیکیج کے علاوہ درج ذیل:

فونٹس

ہمارا پیکیج بطور ڈیفالٹ درج ذیل فونٹس استعمال کرتا ہے:

آپ درج ذیل طریقے کا استعمال کرکے فونٹس کو تبدیل کر سکتے ہیں:

تبصرے

بنیادی طور پر تبصرے محفوظ رکھے گئے ہیں۔ اگر آپ تبصرے ہٹانا چاہتے ہیں تو آپ removeComments() طریقے کا استعمال کر سکتے ہیں۔

آپ removeComments() کو واپس بھی کر سکتے ہیں keepComments() طریقے کو بلانے کے ذریعے۔

شامل کرنے سے نظر انداز کریں

بنیادی طور پر، ہمارا پیکیج کسی بھی mj-include ٹیکسٹ کو شامل کرے گا۔ آپ اس سلوک کو ignoreIncludes(bool $ignore) طریقہ کو کال کرکے ایڈجسٹ کر سکتے ہیں۔

خوبصورت بنانا

ہمارا پیکیج HTML کو js-beautify کا استعمال کرتے ہوئے خوبصورت بنائے گا جس کے پاس درج ذیل ڈیفالٹ اختیارات ہیں:

جبکہ js-beautify متبادل اختیارات فراہم کرنے کے لئے snake_case استعمال کرتا ہے، آپ کو ہماری پیکیج کے استعمال کے وقت camelCase استعمال کرنا چاہئے۔ ہم نے یہ انتخاب اس بات کو یقینی بنانے کے لئے کیا کہ ہماری پیکیج باقی تشکیل کے اختیارات کے ساتھ مستقل رہے۔ ہماری پیکیج خود بخود camelCase اختیارات کو snake_case میں تبدیل کرے گی۔

آپ شامل کرنے کے لئے کسی بھی اختیارات کو درست js-beautify تشکیل فراہم کرتے ہوئے اوورائیڈ کر سکتے ہیں:

منیفائی

ہمارا پیکیج HTML آؤٹ پٹ کو جب فعال ہو تو منیفائی کرے گا۔ منیفیکیشن درج ذیل کام کرتا ہے:

آپ minify(bool $minify) طریقے کو کال کرکے منیفیکیشن کو چالو یا غیر فعال کر سکتے ہیں۔

کیوں PHP-based منیفیکیشن؟ سرکاری MJML پیکیج منیفیکیشن کے لئے html-minifier استعمال کرتا ہے، جو کہ ایک جانا پہچانا ReDoS vulnerability (CVE-2022-37620) ہے جس کا کوئی حل دستیاب نہیں ہے کیونکہ یہ پیکیج غیرمینٹینڈ ہے۔ خطرناک انحصار کو باندھنے سے بچنے کے لئے، ہم نے PHP میں منیفیکشن منتقل کیا ہے ایک ہلکے پھلکے، محفوظ عمل درآمد کا استعمال کرتے ہوئے۔

توثیق کی سطح

ہمارا پیکیج ڈیفالٹ کے طور پر soft توثیق کی سطح کا استعمال کرتے ہوئے MJML کی توثیق کرے گا۔ آپ اسے استعمال کرکے validationLevel(ValidationLevel $validationLevel) طریقے کے ذریعہ تبدیل کر سکتے ہیں۔ درج ذیل توثیق کی سطحیں دستیاب ہیں:

فائل کا راستہ

ہمارا پیکیج بنیادی طور پر . ڈائریکٹری کا استعمال کرے گا۔ آپ اسے تبدیل کر سکتے ہیں filePath(string $path) طریقے کے ذریعے۔

جوس

ہم بنیادی طور پر کوئی juice options فراہم نہیں کرتے۔ آپ درج ذیل طریقوں کا استعمال کرتے ہوئے جوس کے اختیارات شامل کر سکتے ہیں:

سپورٹ کی رہنمائی

ہمارے اوپن سورس پیکیج کا انتخاب کرنے کے لیے شکریہ! براہ کرم ان سپورٹ رہنما خطوط پر ایک لمحہ صرف کریں۔ یہ آپ کو ہمارے پروجیکٹ سے زیادہ سے زیادہ فائدہ اٹھانے میں مدد کریں گے۔

کمیونٹی کی بنیاد پر مدد

ہمارا اوپن سورس پروجیکٹ ہماری شاندار کمیونٹی کی مدد سے چلتا ہے۔ اگر آپ کے پاس سوالات ہیں یا مدد کی ضرورت ہے تو، StackOverflow اور دیگر آن لائن وسائل آپ کے بہترین دوست ہیں۔

کیڑے اور فیچر کی ترجیحات

اوپن سورس پروجیکٹ کا انتظام کرنے کی حقیقت یہ ہے کہ ہم ہر رپورٹ شدہ کیڑے یا فیچر کی درخواست کو فوری طور پر نہیں حل کر سکتے۔ ہم مسائل کو درج ذیل ترتیب میں ترجیح دیتے ہیں:

1. ہماری ادائیگی شدہ مصنوعات پر اثر انداز ہونے والے کیڑے

وہ کیڑے جو ہماری ادائیگی شدہ مصنوعات پر اثر انداز ہوتے ہیں ہمیشہ ہماری پہلی ترجیح ہوں گے۔ کچھ معاملات میں، ہم صرف ان کیڑوں کو حل کریں گے جو براہ راست ہمیں متاثر کرتے ہیں۔

2. کمیونٹی کی طرف سے پول ریگسٹس

اگر آپ نے کسی کیڑے کی نشاندہی کی ہے اور آپ کے پاس حل ہے، تو براہ کرم پول ریگسٹس جمع کرائیں۔ اپنی مصنوعات سے متعلق مسائل کے بعد، ہم ان کمیونٹی کی بنیاد پر درستگیوں کو اگلی سب سے بڑی ترجیح دیتے ہیں۔ جائزہ لینے اور منظور ہونے کے بعد، ہم آپ کے حل کو ضم کریں گے اور آپ کی شراکت کو تسلیم کریں گے۔

3. مالی مدد

ذکر کردہ زمرے سے باہر کے مسائل کے لیے، آپ ان کا حل کرنے کے لئے مالی امداد فراہم کرنے کا انتخاب کر سکتے ہیں۔ ہر اوپن مسئلہ ایک آرڈر فارم سے منسلک ہے جہاں آپ مالی طور پر تعاون کر سکتے ہیں۔ ہم ان مسائل کو فراہم کردہ فنڈنگ کی رقم کی بنیاد پر ترجیح دیتے ہیں۔

کمیونٹی کی شراکتیں

اوپن سورس اس وقت بڑھتا ہے جب اس کی کمیونٹی فعال ہو۔ چاہے آپ کیڑے حل نہیں کر رہے ہوں، کوڈ کی بہتریوں، دستاویز کے اپ ڈیٹس، سبقیں، یا کمیونٹی چینلز میں دوسروں کی مدد کے ذریعے شراکت دینے پر غور کریں۔ ہم بالعموم سب کو، ایک کمیونٹی کے طور پر، اوپن سورس کام کی مدد کرنے کی ترغیب دیتے ہیں۔

دوہرانے کے لیے، DefectiveCode کیڑے کو اس بنیاد پر ترجیح دے گا کہ وہ ہمارے ادائیگی شدہ پروڈکٹس، کمیونٹی کی پول ریگسٹس اور مسائل کے لئے موصولہ مالی مدد پر کس طرح اثر انداز ہوتے ہیں۔

لائسنس - MIT لائسنس

کاپی رائٹ © Defective Code, LLC. تمام حقوق محفوظ ہیں

یہاں پر کسی بھی شخص کو یہ سافٹ ویئر اور اس سے وابستہ دستاویزات کی کاپی حاصل کرنے کی اجازت دی جاتی ہے (جسے "سافٹ ویئر" کہا جاتا ہے)، تاکہ وہ سافٹ ویئر میں کسی بھی پابندی کے بغیر کام کر سکے، بشمول بغیر کسی حد کے، استعمال کرنے، کاپی کرنے، ترمیم کرنے، یکجا کرنے، شائع کرنے، تقسیم کرنے، ذیلی لائسنس دینے اور/یا سافٹ ویئر کی کاپیوں کو بیچنے کے حقوق حاصل کرنے، اور ان لوگوں کو اجازت دینے کا کہ جنہیں سافٹ ویئر فراہم کیا گیا ہے، کہ وہ ایسا کرسکیں، مندرجہ ذیل شرائط کے تابع:

اوپر کا کاپی رائٹ نوٹس اور یہ اجازت نامہ سافٹ ویئر کی تمام کاپیوں یا اہم حصوں میں شامل کیا جائے گا۔

یہ سافٹ ویئر "جیسا ہے" فراہم کیا جاتا ہے، بغیر کسی قسم کی وارنٹی، واضح یا مضمر، بشمول لیکن محدود نہیں، مارکیٹ ایبیلٹی، کسی خاص مقصد کے لئے موزونیت اور خلاف ورزی کے وارنٹیوں کے۔ کسی بھی صورت میں مصنفین یا کاپی رائٹ ہولڈرز کسی بھی دعوے، نقصانات یا دیگر ذمہ داریوں کے لئے ذمہ دار نہیں ہوں گے، چاہے وہ معاہدے کے ایکشن، غلطی یا کسی اور طریقے سے ہو، جو سافٹ ویئر یا سافٹ ویئر کے استعمال یا دیگر معاملات سے پیدا ہو، یا اس سے متعلق ہو۔