[{"data":1,"prerenderedAt":2103},["ShallowReactive",2],{"navigation_docs_ar":3,"blog-post-\u002Far\u002Fblog\u002Fkleeja-4-release":60,"blog-post-\u002Far\u002Fblog\u002Fkleeja-4-release-surround":2096},[4,25,45],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"البداية",false,"\u002Far\u002Fgetting-started","ar\u002F1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"مقدمة","\u002Far\u002Fgetting-started\u002Fintroduction","ar\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"التثبيت","\u002Far\u002Fgetting-started\u002Finstallation","ar\u002F1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"التحديث والترقية","\u002Far\u002Fgetting-started\u002Fupdate-upgrade","ar\u002F1.getting-started\u002F3.update-upgrade","i-lucide-arrow-up-circle",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"الأدلة","\u002Far\u002Fguides","ar\u002F2.guides",[30,35,40],{"title":31,"path":32,"stem":33,"icon":34},"تثبيت الستايلات","\u002Far\u002Fguides\u002Finstall-styles","ar\u002F2.guides\u002F1.install-styles","i-lucide-palette",{"title":36,"path":37,"stem":38,"icon":39},"تثبيت الإضافات","\u002Far\u002Fguides\u002Finstall-plugins","ar\u002F2.guides\u002F2.install-plugins","i-lucide-plug",{"title":41,"path":42,"stem":43,"icon":44},"ملف config.php","\u002Far\u002Fguides\u002Fconfig-file","ar\u002F2.guides\u002F3.config-file","i-lucide-file-cog",{"title":46,"icon":6,"path":47,"stem":48,"children":49,"page":6},"التطوير","\u002Far\u002Fdevelopment","ar\u002F3.development",[50,55],{"title":51,"path":52,"stem":53,"icon":54},"تطوير الإضافات","\u002Far\u002Fdevelopment\u002Fplugin-development","ar\u002F3.development\u002F1.plugin-development","i-lucide-blocks",{"title":56,"path":57,"stem":58,"icon":59},"تطوير الستايلات","\u002Far\u002Fdevelopment\u002Fstyles-development","ar\u002F3.development\u002F2.styles-development","i-lucide-paintbrush",{"id":61,"title":62,"author":63,"body":66,"date":2087,"description":2088,"extension":2089,"image":2090,"meta":2091,"navigation":1320,"path":2092,"seo":2093,"stem":2094,"__hash__":2095},"blog_ar\u002Far\u002Fblog\u002Fkleeja-4-release.md","كليجا 4: ما الجديد، وما الذي يتغير عند الترقية",{"name":64,"github":65},"Mitan Omar","MitanOmar",{"type":67,"value":68,"toc":2051},"minimark",[69,73,77,80,88,93,98,101,108,111,130,136,140,143,151,157,160,164,167,170,181,187,194,201,205,208,235,239,254,260,264,267,273,277,280,286,290,297,344,348,396,400,403,417,420,431,435,444,458,462,490,494,562,566,569,728,732,736,741,744,747,751,754,777,781,791,797,801,808,812,825,839,843,853,889,893,897,907,1102,1116,1137,1141,1211,1215,1228,1254,1258,1265,1428,1439,1443,1448,1472,1475,1607,1610,1643,1668,1672,1721,1837,1841,1847,1925,1950,1954,1958,2007,2010,2019,2022,2044,2047],[70,71,72],"warning",{},"يتحدث هذا المقال عن إصدار قادم. سيصدر كليجا 4 في 30 أكتوبر 2026.",[74,75,76],"p",{},"كليجا 4 هو أكبر إصدار نصدره منذ سنوات. أعدنا فيه بناء لوحة التحكم من الصفر، وأعدنا تصميم ستايل Bootstrap ليصبح الستايل الافتراضي، وكتبنا محرك القوالب والمحدّث التلقائي من جديد، ونظّفنا قاعدة البيانات من أعمدة لم يعد كليجا يقرؤها.",[74,78,79],{},"بعض هذه التغييرات يكسر التوافق مع إضافات وستايلات كُتبت لكليجا 3. لذلك قسمنا هذا المقال إلى أربعة أجزاء: ما الجديد في كليجا 4، والإضافات المتوفرة له، وما الذي قد يتعطل عندك بعد الترقية، وكيف تترقى بأمان. إن كان موقعك يعمل على كليجا 3، فاقرأ الجزأين الأخيرين قبل أن تبدأ.",[81,82,83,87],"note",{},[84,85,86],"strong",{},"متطلبات كليجا 4:"," PHP 8.2 أو أحدث، وامتداد PDO مع مشغّل MySQL\u002FMariaDB أو SQLite 3.35 أو أحدث. ويحتاج المحدّث التلقائي ومتجر الإضافات والستايلات إلى امتداد ZipArchive.",[89,90,92],"h2",{"id":91},"ما-الجديد-في-كليجا-4","ما الجديد في كليجا 4",[94,95,97],"h3",{"id":96},"لوحة-تحكم-جديدة-اسمها-damask","لوحة تحكم جديدة اسمها Damask",[74,99,100],{},"يحل Damask محل Masmak، ثيم لوحة التحكم الذي رافق كليجا سنوات طويلة. بنيناه على Bootstrap 5.3 وFont Awesome 7 دون jQuery، وهو يعمل بالعربية والإنجليزية في الاتجاهين، ويتكيف مع شاشات الهواتف.",[74,102,103],{},[104,105],"img",{"alt":106,"src":107},"صفحة البداية في لوحة التحكم Damask","\u002Fimages\u002Fdocs\u002Far\u002Fdashboard_1.png",[74,109,110],{},"أبرز ما ستجده فيه:",[112,113,114,118,121,124,127],"ul",{},[115,116,117],"li",{},"وضع فاتح ووضع داكن، ووضع تلقائي يتبع إعداد جهازك.",[115,119,120],{},"صفحة بداية تختار أنت الصناديق التي تظهر فيها، مع رسم بياني لعمليات الرفع.",[115,122,123],{},"تحديد جماعي للعناصر في الجداول، وأزرار لنسخ القيم مثل رابط المهام المجدولة (Cron).",[115,125,126],{},"تبويب «مدونة كليجا» في صفحة البداية، يعرض آخر مقالات هذه المدونة بلغة لوحتك.",[115,128,129],{},"صفحة «فريق تطوير كليجا» بتصميم جديد، تعرض المساهمين ونشاط المشروع على GitHub برسوم بيانية.",[74,131,132],{},[104,133],{"alt":134,"src":135},"صفحة البداية في Damask بالوضع الداكن","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fdashboard-dark.png",[94,137,139],{"id":138},"صفحة-مساعدة-داخل-لوحة-التحكم","صفحة مساعدة داخل لوحة التحكم",[74,141,142],{},"في آخر القائمة الجانبية صفحة جديدة اسمها «المساعدة». فيها دليل لكل صفحة من صفحات لوحة التحكم يشرح ما تفعله وخطوات استخدامها، مع نصائح وتحذيرات وأسئلة شائعة. وفيها أيضاً أدلة عامة، منها «الخطوات الأولى بعد التثبيت» و«روتين لإدارة خدمتك» و«حافظ على أمان خدمتك» و«حل المشاكل».",[74,144,145,146,150],{},"زر المساعدة في الشريط العلوي يفتح دليل الصفحة التي أنت فيها مباشرة. والبحث في صفحة المساعدة يتجاهل التشكيل واختلاف أشكال الحروف، فكلمة «اضافه» تجد «إضافة». اضغط ",[147,148,149],"code",{},"\u002F"," للانتقال إلى مربع البحث.",[74,152,153],{},[104,154],{"alt":155,"src":156},"صفحة المساعدة بعد البحث عن كلمة اضافه","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fhelp.png",[74,158,159],{},"تظهر الإضافات المثبتة في هذه الصفحة أيضاً، مع وصفها ورابط إعداداتها. ويستطيع مطور الإضافة أن يكتب لها دليلاً كاملاً، وسنشرح طريقته في قسم المطورين.",[94,161,163],{"id":162},"ستايل-bootstrap-جديد-وهو-الستايل-الافتراضي-الآن","ستايل Bootstrap جديد، وهو الستايل الافتراضي الآن",[74,165,166],{},"أعدنا تصميم ستايل Bootstrap بالكامل على Bootstrap 5.3 وبألوان هوية كليجا. صار هو الستايل الافتراضي للمواقع الجديدة، وهو أيضاً الستايل الاحتياطي: إن نقص قالبٌ من الستايل المفعّل، يأخذه كليجا من Bootstrap.",[74,168,169],{},"ما يلاحظه زوار موقعك:",[112,171,172,175,178],{},[115,173,174],{},"وضع فاتح وداكن وتلقائي، يختاره الزائر من الشريط العلوي.",[115,176,177],{},"يتحقق نموذج الرفع من نوع الملف وحجمه قبل إرساله، فلا ينتظر الزائر رفع ملف سيرفضه الخادم في النهاية.",[115,179,180],{},"أزرار لنسخ روابط الملفات بعد رفعها.",[74,182,183],{},[104,184],{"alt":185,"src":186},"نتائج الرفع في ستايل Bootstrap بالوضع الداكن، مع زر نسخ بجانب كل رابط","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fupload-result.png",[74,188,189,190,193],{},"لم يعد الستايل يحمل نسخته الخاصة من Bootstrap وjQuery، بل يحمّل Bootstrap وFont Awesome من مجلد ",[147,191,192],{},"includes\u002Fstatic_shared_files"," الذي يشاركه مع لوحة التحكم.",[74,195,196,197,200],{},"أما ستايل Default القديم فقد خرج من نواة كليجا، ونسخته الجديدة في المتجر باسم ",[147,198,199],{},"og_default",". نعود إليه في قسم التغييرات الكاسرة للتوافق.",[94,202,204],{"id":203},"محدّث-تلقائي-أكثر-أماناً","محدّث تلقائي أكثر أماناً",[74,206,207],{},"الترقية التي تفشل في منتصفها أسوأ من عدم الترقية، لذلك أعدنا كتابة المحدّث التلقائي. المحدّث الجديد:",[112,209,210,213,220,223,226,229,232],{},[115,211,212],{},"يتأكد أن كل ملف سيستبدله قابل للكتابة قبل أن يلمس أي ملف، ويعرض لك الملفات التي تحتاج إلى تعديل صلاحياتها.",[115,214,215,216,219],{},"يحفظ الملفات التي سيستبدلها أو يحذفها في ",[147,217,218],{},"cache\u002Fbackup.zip","، ويعيدها كما كانت إن فشل نسخ أي ملف.",[115,221,222],{},"يحذف ملفات النسخة القديمة التي لم تعد جزءاً من كليجا، مثل مجلد ثيم لوحة تحكم استُبدل.",[115,224,225],{},"يغلق الموقع للصيانة أثناء الترقية، ثم يعيده إلى حالته السابقة، فلا يفتح موقعاً كنت قد أغلقته بنفسك.",[115,227,228],{},"يتوقف عند أول تحديث فاشل في قاعدة البيانات ويعرض لك الخطأ، ثم يكمل منه في المحاولة التالية.",[115,230,231],{},"إن توقف تحديثٌ بعد نسخ الملفات وقبل أن يكمل قاعدة البيانات، يظهر للمؤسس في بداية لوحة كليجا تنبيه فيه زر «تحديث قاعدة البيانات» يكمل ما بقي.",[115,233,234],{},"يذكّرك بعد الترقية بتحديث الإضافات والستايلات، ويضع لك زرين يأخذانك إلى صفحتيهما.",[94,236,238],{"id":237},"متجر-خاص-بكليجا-4","متجر خاص بكليجا 4",[74,240,241,242,245,246,253],{},"لكليجا 4 قائمة مستقلة في متجر الإضافات والستايلات، هي الملف ",[147,243,244],{},"kleeja-4-catalog.json"," في مستودع ",[247,248,252],"a",{"href":249,"rel":250},"https:\u002F\u002Fgithub.com\u002Fkleeja\u002Fstore-catalog",[251],"nofollow","kleeja\u002Fstore-catalog",". يعرض المتجر الآن الإضافات والستايلات المتوافقة مع نسخة كليجا لديك فقط، فلن تثبّت إضافة ثم تكتشف أنها لا تعمل.",[74,255,256],{},[104,257],{"alt":258,"src":259},"تبويب متجر كليجا في صفحة الإضافات","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fstore.png",[94,261,263],{"id":262},"رسائل-بريد-بتصميم-جديد","رسائل بريد بتصميم جديد",[74,265,266],{},"صار كليجا يرسل رسائله بصيغة HTML، ومعها نسخة نصية لبرامج البريد التي لا تعرض HTML. أعدنا كتابة نصوص رسائل استعادة كلمة المرور، وإشعارات التبليغات ورسائل «اتصل بنا»، وردود الإدارة عليها. صارت أوضح، وفيها أزرار تأخذ المستلم إلى الصفحة المطلوبة.",[74,268,269],{},[104,270],{"alt":271,"src":272},"رسالة استعادة كلمة المرور بتصميمها الجديد","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Femail.png",[94,274,276],{"id":275},"رمز-تحقق-بهوية-كليجا","رمز تحقق بهوية كليجا",[74,278,279],{},"أعدنا رسم صورة رمز التحقق (Captcha) بألوان كليجا وشعارها. صار ارتفاعها مساوياً لارتفاع حقول النماذج، وتُرسم كل خانة فيها بزاوية مختلفة.",[74,281,282],{},[104,283],{"alt":284,"src":285},"رمز التحقق الجديد في نموذج اتصل بنا","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fcaptcha.png",[94,287,289],{"id":288},"محرك-قوالب-جديد","محرك قوالب جديد",[74,291,292,293,296],{},"محرك القوالب هو الجزء الذي يحول ملفات ",[147,294,295],{},".html"," في الستايلات إلى كود PHP. أعدنا كتابته ليكون أكثر أماناً وأوضح عند الأخطاء:",[112,298,299,302,313,316,325],{},[115,300,301],{},"لا يشغّل أي كود PHP لم يكتبه هو. الشرط الذي يحوي كود PHP يُعدّ شرطاً خاطئاً، ويظهر تحذير بذلك.",[115,303,304,305,308,309,312],{},"إن نسيت إغلاق ",[147,306,307],{},"\u003CIF>"," أو ",[147,310,311],{},"\u003CLOOP>","، يخبرك باسم القالب ورقم السطر بدلاً من خطأ PHP غامض.",[115,314,315],{},"يحفظ القوالب المترجمة بطريقة لا تسمح لطلب آخر بقراءة ملف لم تكتمل كتابته.",[115,317,318,319,321,322,324],{},"تعمل الحلقات المتداخلة (",[147,320,311],{}," داخل ",[147,323,311],{},") دون أن تفسد الحلقة الداخلية قيم الحلقة الخارجية.",[115,326,327,328,331,332,335,336,339,340,343],{},"أضفنا مرشحات للمخرجات: ",[147,329,330],{},"|e"," لترميز HTML، و",[147,333,334],{},"|url"," للروابط، و",[147,337,338],{},"|js"," لقيم JavaScript، و",[147,341,342],{},"|int"," للأرقام.",[94,345,347],{"id":346},"إصلاحات-يلاحظها-زوارك","إصلاحات يلاحظها زوارك",[112,349,350,353,356,366,377,380,390,393],{},[115,351,352],{},"استئناف التحميل يعمل الآن كما يجب، فيستطيع برنامج التحميل أن يكمل ملفاً انقطع تحميله.",[115,354,355],{},"تبقى أسماء الملفات العربية سليمة عند تحميلها في كل المتصفحات.",[115,357,358,359,308,362,365],{},"انتهت مشكلة النصوص المرمّزة مرتين، مثل ظهور ",[147,360,361],{},"&amp;amp;",[147,363,364],{},"&quot;"," في أسماء الملفات والأعضاء والمجموعات وفي الرسائل. نصلحها عند العرض دون أن نغيّر بياناتك.",[115,367,368,369,372,373,376],{},"إن ثبّتّ كليجا على ",[147,370,371],{},"http:\u002F\u002F"," ثم فعّلت HTTPS لاحقاً، ينقل كليجا رابط موقعك في الإعدادات إلى ",[147,374,375],{},"https:\u002F\u002F"," تلقائياً.",[115,378,379],{},"يبقى العضو مسجّل الدخول بعد أن يغيّر اسمه أو بريده أو كلمة مروره من ملفه الشخصي.",[115,381,382,383,308,386,389],{},"لا يقبل نموذج التبليغ إلا روابط تبدأ بـ ",[147,384,385],{},"http",[147,387,388],{},"https",".",[115,391,392],{},"يعمل حظر الأعضاء بالاسم مع الأسماء التي تحوي رموزاً خاصة.",[115,394,395],{},"تبقى روابط الإجراءات المحمية في لوحة التحكم، مثل روابط الحذف، صالحة ساعة إضافية، فلا يرفضها كليجا لأنك فتحت الصفحة قبل تغيّر الساعة بدقائق.",[94,397,399],{"id":398},"ما-وصل-بعد-كليجا-327","ما وصل بعد كليجا 3.2.7",[74,401,402],{},"كليجا 4 هو أول إصدار بعد 3.2.7، فهو يضم أيضاً ما أنجزناه بعدها ولم يصدر بعد:",[112,404,405,408,411,414],{},[115,406,407],{},"انتقلت طبقة قاعدة البيانات إلى PDO، وصارت الاستعلامات تمرر القيم معاملاتٍ مربوطة (Bound Parameters) بدلاً من دمجها في نص الاستعلام.",[115,409,410],{},"صفحة أخطاء جديدة بهوية كليجا.",[115,412,413],{},"معالج تثبيت بتصميم جديد، فيه وضع داكن، ويحمّل ملفاته من خادمك بدلاً من شبكات CDN.",[115,415,416],{},"رفع إضافة من ملف zip كما يولّده GitHub لإصدارات المستودعات.",[94,418,419],{"id":419},"تنظيف",[74,421,422,423,426,427,430],{},"حذفنا من قاعدة البيانات أعمدة لم يعد كليجا يقرؤها: عدادات الزيارات القديمة في جدول ",[147,424,425],{},"stats","، والعمود ",[147,428,429],{},"session_id"," في جدول الأعضاء، وخمسة أعمدة في جدول الإضافات. وحذفنا ملفات قديمة لم تعد مستخدمة، وأوقفنا دعم Internet Explorer في لوحة التحكم.",[89,432,434],{"id":433},"الإضافات-في-كليجا-4","الإضافات في كليجا 4",[74,436,437,438,443],{},"لكل إضافة رسمية مستودع خاص بها ",[247,439,442],{"href":440,"rel":441},"https:\u002F\u002Fgithub.com\u002Fkleeja",[251],"على GitHub"," وإصدارات خاصة بها، ويثبّت المتجر الإصدار المسجّل لها في قائمة كليجا 4. أصدرنا نسخاً جديدة من الإضافات الرسمية لكليجا 4، وكل واحدة منها:",[112,445,446,449,452,455],{},[115,447,448],{},"تعمل على كليجا 4 وPHP 8.2 وطبقة قاعدة البيانات الجديدة.",[115,450,451],{},"فيها صفحات إعدادات بتصميم Damask، مقسّمة إلى تبويبات.",[115,453,454],{},"لها دليل كامل في صفحة «المساعدة» بالعربية والإنجليزية.",[115,456,457],{},"لها أيقونة تظهر في المتجر وفي صفحة المساعدة.",[94,459,461],{"id":460},"إضافتان-جديدتان","إضافتان جديدتان",[112,463,464,481],{},[115,465,466,469,470,473,474,477],{},[84,467,468],{},"Kleeja SMTP Mailer"," (",[147,471,472],{},"kj_smtp_mailer",") 1.4: ترسل كل رسائل كليجا عبر خادم SMTP خاص بك بدلاً من دالة البريد في PHP، فتصل رسائل استعادة كلمة المرور وردودك بعيداً عن مجلد الرسائل المزعجة. فيها إعدادات جاهزة لـ Hostinger وGmail بضغطة واحدة، وتبويب يفحص الإعدادات ويرسل رسالة تجريبية ويعرض سبب رفض الخادم إن رفضها. وترسل الرسائل بتصميم كليجا الجديد، وتضع عنوان الزائر عنواناً للرد في تنبيهات الرسائل والتبليغات.",[475,476],"br",{},[104,478],{"alt":479,"src":480},"تبويب الفحص في Kleeja SMTP Mailer بعد رسالة تجريبية ناجحة","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fsmtp-mailer-test.png",[115,482,483,469,486,489],{},[84,484,485],{},"Kleeja Advanced Stats",[147,487,488],{},"kleeja_advanced_stats",") 1.3: تقرير عمّا حدث في خدمتك بين تاريخين: الرفع والمساحة والتحميلات والرسائل والتبليغات والأعضاء الجدد، مع مقارنة بالفترة السابقة ورسوم بيانية. يعرض أكثر الملفات تحميلاً وأكبرها وأكثرها تبليغاً، وأوقات الرفع حسب الساعة واليوم، ويحفظ التقرير ملف PDF من متصفحك. ويمكن للإضافات الأخرى أن تضيف إحصائياتها إليه في تبويب خاص بها، كما تفعل Kleeja Payment.",[94,491,493],{"id":492},"إضافات-فيها-جديد","إضافات فيها جديد",[112,495,496,511,526,541,553],{},[115,497,498,469,501,504,505,507],{},[84,499,500],{},"PDF Viewer",[147,502,503],{},"pdf_viewer",") 2.0: عارض جديد مبني على PDF.js من Mozilla بدلاً من العارض القديم. فيه شريط أدوات للتنقل بين الصفحات والتكبير، وملء الشاشة ووضع العرض التقديمي، ويمكن تحديد النص ونسخه. يفتح الملفات الكبيرة بسرعة لأنه يقرأ الصفحات التي يعرضها أولاً، ويتبع لغة الصفحة والوضع الداكن.",[475,506],{},[104,508],{"alt":509,"src":510},"عارض PDF الجديد في صفحة تحميل ملف","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fpdf-viewer.png",[115,512,513,469,516,519,520,522],{},[84,514,515],{},"Video & Audio Player",[147,517,518],{},"video_player",") 2.1: انتقل إلى أحدث إصدار من Video.js. فيه سرعة التشغيل وصورة داخل صورة واختصارات لوحة المفاتيح، والنقر المزدوج على شاشات اللمس للتقديم والتأخير، وشريط مضغوط للملفات الصوتية. ويأخذ صندوق الفيديو شكل الفيديو، فلا يظهر فيديو الهاتف العمودي صغيراً.",[475,521],{},[104,523],{"alt":524,"src":525},"مشغل الفيديو في صفحة تحميل ملف","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fvideo-player.png",[115,527,528,469,531,534,535,537],{},[84,529,530],{},"Kleeja Multi-FTP Uploading",[147,532,533],{},"kj_ftp",") 2.0: تبويب «اختبار الاتصال» يفحص حساب FTP من أوله إلى آخره: العنوان والمنفذ وFTPS وتسجيل الدخول والمجلد الرئيسي ورفع ملف وحذفه والرابط العام، ويسمّي الإعداد الخاطئ. وتدعم الإضافة FTPS والوضع السلبي (Passive) لكل حساب، ويشغّل مشغل الفيديو وعارض PDF الملفات المخزنة على خوادم FTP.",[475,536],{},[104,538],{"alt":539,"src":540},"تبويب اختبار الاتصال بعد نجاح كل الفحوص","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fftp-connection-test.png",[115,542,543,469,546,549,550,552],{},[84,544,545],{},"Kleeja Payment",[147,547,548],{},"kleeja_payment",") 2.0.4: خيارات دفع بتصميم البطاقات، ورسائل أوضح للمشترين، وإحصائيات المدفوعات داخل Kleeja Advanced Stats، ودعم ستايل ",[147,551,199],{},". وتأتي مكتبات PayPal وStripe داخل حزمة الإصدار التي يثبّتها المتجر.",[115,554,555,469,558,561],{},[84,556,557],{},"KJ Comment",[147,559,560],{},"kj_comment",") 1.1.4: تُحذف تعليقات الملف معه، سواء حذفته من لوحة التحكم، أو حذفه صاحبه، أو حُذف برابط الحذف أو بتنظيف الملفات القديمة.",[94,563,565],{"id":564},"بقية-الإضافات","بقية الإضافات",[74,567,568],{},"نقلنا هذه الإضافات إلى كليجا 4 مع التحسينات المشتركة أعلاه:",[570,571,572,588],"table",{},[573,574,575],"thead",{},[576,577,578,582,585],"tr",{},[579,580,581],"th",{},"الإضافة",[579,583,584],{},"الإصدار",[579,586,587],{},"ما تفعله",[589,590,591,607,621,635,648,661,675,688,702,715],"tbody",{},[576,592,593,601,604],{},[594,595,596,597,600],"td",{},"KJ reCaptcha (",[147,598,599],{},"kj_recaptcha",")",[594,602,603],{},"2.0",[594,605,606],{},"تضع reCAPTCHA من Google (مربع v2 أو الشارة المخفية أو v3) مكان رمز التحقق، وتحمي دخول لوحة التحكم",[576,608,609,615,618],{},[594,610,611,612,600],{},"Kleeja X SendFile (",[147,613,614],{},"kj_x_sendfile",[594,616,617],{},"1.1",[594,619,620],{},"تسلّم إرسال الملفات إلى Apache أو Nginx، فلا تبقى عملية PHP مشغولة طوال التحميل",[576,622,623,629,632],{},[594,624,625,626,600],{},"Advanced Watermark (",[147,627,628],{},"advanced_watermark",[594,630,631],{},"1.2",[594,633,634],{},"تختم الصور بشعارك أو بنص، مع معاينة قبل أن يرفع زوارك أي صورة",[576,636,637,643,645],{},[594,638,639,640,600],{},"Kleeja Admin Firewall (",[147,641,642],{},"kj_ban_admin",[594,644,617],{},[594,646,647],{},"تحظر عنوان IP بعد 10 كلمات مرور خاطئة في دخول لوحة التحكم",[576,649,650,656,658],{},[594,651,652,653,600],{},"KJ Download Speed Limit (",[147,654,655],{},"kj_download_speed_limit",[594,657,631],{},[594,659,660],{},"تحدد سرعة التحميل لكل مجموعة",[576,662,663,669,672],{},[594,664,665,666,600],{},"Meta SEO (",[147,667,668],{},"kj_meta_seo",[594,670,671],{},"1.2.0",[594,673,674],{},"تضيف الوصف والكلمات المفتاحية ووسوم Open Graph وX إلى كل صفحة",[576,676,677,683,685],{},[594,678,679,680,600],{},"KJ AMP SEO (",[147,681,682],{},"kj_amp_seo",[594,684,671],{},[594,686,687],{},"نسخة AMP سريعة لكل صفحة تحميل، مع أزرار المشاركة وإعلانات AdSense",[576,689,690,696,699],{},[594,691,692,693,600],{},"KJ SiteMap SEO (",[147,694,695],{},"kj_sitemap_seo",[594,697,698],{},"2.0.0",[594,700,701],{},"خريطة موقع XML لآخر 100 ملف وصورة",[576,703,704,710,712],{},[594,705,706,707,600],{},"Language Switch (",[147,708,709],{},"language_switch",[594,711,603],{},[594,713,714],{},"قائمة لغات في أعلى كل صفحة، بجانب قائمة وضع الألوان في ستايل Bootstrap",[576,716,717,723,725],{},[594,718,719,720,600],{},"Advanced Extras (",[147,721,722],{},"advanced_extras",[594,724,617],{},[594,726,727],{},"هيدر وفوتر إضافي لكل صفحة على حدة",[89,729,731],{"id":730},"التغييرات-الكاسرة-للتوافق","التغييرات الكاسرة للتوافق",[94,733,735],{"id":734},"لأصحاب-المواقع","لأصحاب المواقع",[737,738,740],"h4",{"id":739},"الحد-الأدنى-صار-php-82","الحد الأدنى صار PHP 8.2",[74,742,743],{},"لا يعمل كليجا 4 على PHP أقدم من 8.2، بينما كان كليجا 3.2.7 يعمل على PHP 8.0. إن رفعت ملفات كليجا 4 على خادم يعمل بـ PHP 8.0 أو 8.1، فسيعرض موقعك صفحة خطأ بدلاً من صفحاته.",[70,745,746],{},"المحدّث التلقائي في كليجا 3 يتحقق من وجود PHP 8 فقط، فقد يعرض عليك الترقية إلى كليجا 4 وموقعك يعمل على PHP 8.0. تأكد من إصدار PHP بنفسك قبل الترقية.",[737,748,750],{"id":749},"تعطيل-كل-الإضافات-بعد-الترقية","تعطيل كل الإضافات بعد الترقية",[74,752,753],{},"يعطّل تحديث قاعدة البيانات في كليجا 4 كل الإضافات المثبتة. إضافات كليجا 3 لم تُكتب لهذا الإصدار، وتشغيلها دون تحديث قد يعطل الموقع كله. تبقى بيانات الإضافات وإعداداتها في قاعدة البيانات، وتعيد أنت تفعيل كل إضافة بعد تحديثها.",[74,755,756,757,760,761,760,764,760,767,760,770,760,773,776],{},"معظم إضافات المتجر لها نسخة لكليجا 4، تجدها في قسم «الإضافات في كليجا 4» أعلاه. أما هذه الإضافات فليست لها نسخة لكليجا 4 حتى كتابة هذا المقال: ",[147,758,759],{},"menu_toggle"," و",[147,762,763],{},"rebrandly",[147,765,766],{},"vbulletin_integration",[147,768,769],{},"phpbb_integration",[147,771,772],{},"thumbs_generator",[147,774,775],{},"kjp_account_charger",". إن كان موقعك يعتمد على إحداها، فانتظر قبل الترقية.",[737,778,780],{"id":779},"ستايل-default-خرج-من-النواة","ستايل Default خرج من النواة",[74,782,783,784,787,788,790],{},"يحذف تحديث قاعدة البيانات مجلد ",[147,785,786],{},"styles\u002Fdefault",". إن كان موقعك يستخدم Default، أو ستايلاً مبنياً عليه، ينقله التحديث إلى ",[147,789,199],{}," بعد تنزيله من GitHub. وإن تعذّر التنزيل، ينقله إلى Bootstrap.",[74,792,793,794,796],{},"النتيجة أن الستايل المخصص المبني على Default لن يبقى مفعّلاً بعد الترقية، وأن أي تعديل كتبته داخل مجلد ",[147,795,786],{}," نفسه سيُحذف.",[737,798,800],{"id":799},"حذف-ثيم-masmak","حذف ثيم Masmak",[74,802,803,804,807],{},"حذفنا ثيم لوحة التحكم القديم Masmak. صفحات الإضافات في لوحة التحكم كُتبت له على Bootstrap 4 وjQuery، أما Damask فلا يحمّل jQuery. يحوّل Damask خصائص Bootstrap 4 الشائعة (مثل ",[147,805,806],{},"data-toggle",") إلى ما يقابلها في Bootstrap 5، لكن صفحة الإضافة التي تعتمد على jQuery لن تعمل كما يجب حتى تحدّث الإضافة.",[737,809,811],{"id":810},"ستايلات-كليجا-3-قد-تحتاج-إلى-تحديث","ستايلات كليجا 3 قد تحتاج إلى تحديث",[74,813,814,815,760,818,760,821,824],{},"لم يعد ستايل Bootstrap يأتي بالملفات ",[147,816,817],{},"css\u002Fbootstrap.min.css",[147,819,820],{},"js\u002Fjquery.min.js",[147,822,823],{},"js\u002Fbootstrap.min.js",". الستايلات المبنية عليه التي تحمّل هذه الملفات منه ستظهر دون تنسيق، أو تتعطل فيها أجزاء JavaScript. ومحرك القوالب الجديد أكثر صرامة، فالقالب الذي فيه وسم غير مغلق يعرض صفحة خطأ.",[74,826,827,828,760,830,760,833,760,836,389],{},"في المتجر نسخ لكليجا 4 من ",[147,829,199],{},[147,831,832],{},"bootstrap_black",[147,834,835],{},"dragdrop",[147,837,838],{},"kleeja_return",[737,840,842],{"id":841},"المحدّث-يحذف-ما-ليس-من-كليجا","المحدّث يحذف ما ليس من كليجا",[74,844,845,846,760,849,852],{},"من كليجا 4 فصاعداً، يحذف المحدّث التلقائي الملفات الموجودة في مجلدات كليجا نفسها (مثل ",[147,847,848],{},"admin",[147,850,851],{},"includes",") إن لم تكن جزءاً من الإصدار الجديد. ويستبدل كذلك أي ملف من ملفات النواة عدّلته بنفسك.",[74,854,855,856,760,859,760,862,760,865,760,868,760,871,874,875,878,879,760,882,885,886,888],{},"لا يلمس المحدّث المجلدات ",[147,857,858],{},"cache",[147,860,861],{},"plugins",[147,863,864],{},"uploads",[147,866,867],{},"styles",[147,869,870],{},"images",[147,872,873],{},"install","، ولا اللغات التي أضفتها إلى ",[147,876,877],{},"lang","، ولا الملفات في المجلد الرئيسي مثل ",[147,880,881],{},"config.php",[147,883,884],{},".htaccess",". والملفات التي يستبدلها أو يحذفها تبقى في ",[147,887,218],{}," حتى الترقية التالية.",[94,890,892],{"id":891},"لمطوري-الإضافات-والستايلات","لمطوري الإضافات والستايلات",[737,894,896],{"id":895},"أعلن-توافق-إضافتك-مع-كليجا-4","أعلن توافق إضافتك مع كليجا 4",[74,898,899,900,902,903,906],{},"يقرأ كليجا 4 متجره من ",[147,901,244],{},"، ولا يعرض منه إلا العناصر التي يشمل مجال توافقها (",[147,904,905],{},"kleeja_version",") نسخة كليجا المثبتة. أضف إضافتك أو ستايلك إلى هذا الملف بهذا الشكل:",[908,909,914],"pre",{"className":910,"code":911,"filename":244,"language":912,"meta":913,"style":913},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"type\": \"plugin\",\n  \"name\": \"my_plugin\",\n  \"kleeja_version\": {\n    \"min\": \"4.0.0\",\n    \"max\": \"4.9.9\"\n  },\n  \"file\": {\n    \"version\": \"2.0\",\n    \"url\": \"https:\u002F\u002Fgithub.com\u002Fme\u002Fmy_plugin\u002Farchive\u002F2.0.zip\"\n  }\n}\n","json","",[147,915,916,925,953,974,988,1011,1031,1037,1051,1071,1090,1096],{"__ignoreMap":913},[917,918,921],"span",{"class":919,"line":920},"line",1,[917,922,924],{"class":923},"sMK4o","{\n",[917,926,928,931,935,938,941,944,948,950],{"class":919,"line":927},2,[917,929,930],{"class":923},"  \"",[917,932,934],{"class":933},"spNyl","type",[917,936,937],{"class":923},"\"",[917,939,940],{"class":923},":",[917,942,943],{"class":923}," \"",[917,945,947],{"class":946},"sfazB","plugin",[917,949,937],{"class":923},[917,951,952],{"class":923},",\n",[917,954,956,958,961,963,965,967,970,972],{"class":919,"line":955},3,[917,957,930],{"class":923},[917,959,960],{"class":933},"name",[917,962,937],{"class":923},[917,964,940],{"class":923},[917,966,943],{"class":923},[917,968,969],{"class":946},"my_plugin",[917,971,937],{"class":923},[917,973,952],{"class":923},[917,975,977,979,981,983,985],{"class":919,"line":976},4,[917,978,930],{"class":923},[917,980,905],{"class":933},[917,982,937],{"class":923},[917,984,940],{"class":923},[917,986,987],{"class":923}," {\n",[917,989,991,994,998,1000,1002,1004,1007,1009],{"class":919,"line":990},5,[917,992,993],{"class":923},"    \"",[917,995,997],{"class":996},"sBMFI","min",[917,999,937],{"class":923},[917,1001,940],{"class":923},[917,1003,943],{"class":923},[917,1005,1006],{"class":946},"4.0.0",[917,1008,937],{"class":923},[917,1010,952],{"class":923},[917,1012,1014,1016,1019,1021,1023,1025,1028],{"class":919,"line":1013},6,[917,1015,993],{"class":923},[917,1017,1018],{"class":996},"max",[917,1020,937],{"class":923},[917,1022,940],{"class":923},[917,1024,943],{"class":923},[917,1026,1027],{"class":946},"4.9.9",[917,1029,1030],{"class":923},"\"\n",[917,1032,1034],{"class":919,"line":1033},7,[917,1035,1036],{"class":923},"  },\n",[917,1038,1040,1042,1045,1047,1049],{"class":919,"line":1039},8,[917,1041,930],{"class":923},[917,1043,1044],{"class":933},"file",[917,1046,937],{"class":923},[917,1048,940],{"class":923},[917,1050,987],{"class":923},[917,1052,1054,1056,1059,1061,1063,1065,1067,1069],{"class":919,"line":1053},9,[917,1055,993],{"class":923},[917,1057,1058],{"class":996},"version",[917,1060,937],{"class":923},[917,1062,940],{"class":923},[917,1064,943],{"class":923},[917,1066,603],{"class":946},[917,1068,937],{"class":923},[917,1070,952],{"class":923},[917,1072,1074,1076,1079,1081,1083,1085,1088],{"class":919,"line":1073},10,[917,1075,993],{"class":923},[917,1077,1078],{"class":996},"url",[917,1080,937],{"class":923},[917,1082,940],{"class":923},[917,1084,943],{"class":923},[917,1086,1087],{"class":946},"https:\u002F\u002Fgithub.com\u002Fme\u002Fmy_plugin\u002Farchive\u002F2.0.zip",[917,1089,1030],{"class":923},[917,1091,1093],{"class":919,"line":1092},11,[917,1094,1095],{"class":923},"  }\n",[917,1097,1099],{"class":919,"line":1098},12,[917,1100,1101],{"class":923},"}\n",[74,1103,1104,1105,760,1108,1111,1112,1115],{},"وحدّث ",[147,1106,1107],{},"plugin_kleeja_version_min",[147,1109,1110],{},"plugin_kleeja_version_max"," في ",[147,1113,1114],{},"init.php","، فكليجا يرفض تثبيت الإضافة خارج هذا المجال.",[1117,1118,1119,1120,1111,1123,1125,1126,1129,1130,1132,1133,1136],"tip",{},"أثناء التطوير، عرّف ",[147,1121,1122],{},"IGNORE_STORE_COMPATIBILITY",[147,1124,881],{}," ليعرض المتجر كل العناصر بغض النظر عن توافقها. وإن أضفت إلى إضافتك في القائمة مفتاح ",[147,1127,1128],{},"preview"," بنفس شكل ",[147,1131,1044],{},"، ينزّله الموقع الذي عرّف ",[147,1134,1135],{},"DEV_STAGE"," بدلاً من النسخة المنشورة، فتختبر نسختك الجديدة قبل نشرها.",[737,1138,1140],{"id":1139},"قاعدة-البيانات","قاعدة البيانات",[112,1142,1143,1154,1167],{},[115,1144,1145,1146,1149,1150,1153],{},"انتقلت طبقة قاعدة البيانات إلى PDO عبر الصنف ",[147,1147,1148],{},"KleejaDatabase",". مرّر القيم في ",[147,1151,1152],{},"BIND"," بدلاً من دمجها في نص الاستعلام.",[115,1155,1156,1157,1160,1161,760,1164,389],{},"صار المعامل الثاني للدالة ",[147,1158,1159],{},"$SQL->query()"," مصفوفة القيم المربوطة، بعد أن كان قيمة منطقية للمعاملات (Transactions). وحُذفت الدالتان ",[147,1162,1163],{},"set_names()",[147,1165,1166],{},"client_encoding()",[115,1168,1169,1170,760,1173,760,1176,760,1179,760,1182,1185,1186,1188,1189,1191,1192,760,1195,760,1198,760,1201,760,1204,1207,1208,389],{},"حذفنا من جدول الإضافات الأعمدة ",[147,1171,1172],{},"plg_icon",[147,1174,1175],{},"plg_uninstall",[147,1177,1178],{},"plg_instructions",[147,1180,1181],{},"plg_store",[147,1183,1184],{},"plg_files","، ومن جدول الأعضاء العمود ",[147,1187,429],{},"، ومن جدول ",[147,1190,425],{}," الأعمدة ",[147,1193,1194],{},"last_file",[147,1196,1197],{},"today",[147,1199,1200],{},"counter_today",[147,1202,1203],{},"counter_yesterday",[147,1205,1206],{},"counter_all",". أي استعلام يذكر أحدها سيفشل، وحُذف معها المتغير ",[147,1209,1210],{},"$stat_last_file",[737,1212,1214],{"id":1213},"صفحات-لوحة-التحكم","صفحات لوحة التحكم",[74,1216,1217,1218,760,1221,760,1224,1227],{},"يبني Damask صفحاته على Bootstrap 5.3 وFont Awesome 7، ولا يحمّل jQuery. انقل صفحات إضافتك إلى أصناف Bootstrap 5 وإلى JavaScript دون jQuery. ما زالت الدوال العامة القديمة مثل ",[147,1219,1220],{},"checkAll()",[147,1222,1223],{},"confirm_form()",[147,1225,1226],{},"get_kleeja_link()"," موجودة.",[74,1229,1230,1231,1234,1235,1238,1239,1242,1243,1246,1247,1250,1251,389],{},"أيقونات صفحات لوحة التحكم في ",[147,1232,1233],{},"$ext_icons"," صارت أسماء Font Awesome 7 دون البادئة ",[147,1236,1237],{},"fa-","، مثل ",[147,1240,1241],{},"folder-open"," بدلاً من ",[147,1244,1245],{},"folder-open-o",". ولعناصر القائمة الجانبية للموقع مفتاح جديد اسمه ",[147,1248,1249],{},"icon"," يأخذ اسم أيقونة بالطريقة نفسها، والعنصر الذي تضيفه إضافة دون أيقونة يأخذ الأيقونة ",[147,1252,1253],{},"puzzle-piece",[737,1255,1257],{"id":1256},"محرك-القوالب","محرك القوالب",[74,1259,1260,1261,1264],{},"الشرط الذي يحوي كود PHP، مثل اسم يبدأ بـ ",[147,1262,1263],{},"$"," أو استدعاء دالة، صار شرطاً خاطئاً دائماً. استخدم أسماء المتغيرات والمقارنات فقط:",[908,1266,1271],{"className":1267,"code":1268,"filename":1269,"language":1270,"meta":913,"style":913},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!-- لم يعد يعمل: كود PHP داخل الشرط -->\n\u003CIF NAME=\"$config['mod_writer']\">...\u003C\u002FIF>\n\n\u003C!-- اكتبه هكذا -->\n\u003CIF NAME=\"config.mod_writer == 1\">...\u003C\u002FIF>\n\n\u003C!-- المرشحات الجديدة -->\n\u003Ca href=\"{config.siteurl}?q={query|url}\">{title|e}\u003C\u002Fa>\n\u003Cscript>\n  var fileName = {file_name|js};\n\u003C\u002Fscript>\n","styles\u002Fmy_style\u002Findex_body.html","html",[147,1272,1273,1279,1316,1322,1327,1354,1358,1363,1392,1401,1420],{"__ignoreMap":913},[917,1274,1275],{"class":919,"line":920},[917,1276,1278],{"class":1277},"sHwdD","\u003C!-- لم يعد يعمل: كود PHP داخل الشرط -->\n",[917,1280,1281,1284,1288,1291,1294,1296,1299,1301,1304,1308,1311,1313],{"class":919,"line":927},[917,1282,1283],{"class":923},"\u003C",[917,1285,1287],{"class":1286},"swJcz","IF",[917,1289,1290],{"class":933}," NAME",[917,1292,1293],{"class":923},"=",[917,1295,937],{"class":923},[917,1297,1298],{"class":946},"$config['mod_writer']",[917,1300,937],{"class":923},[917,1302,1303],{"class":923},">",[917,1305,1307],{"class":1306},"sTEyZ","...",[917,1309,1310],{"class":923},"\u003C\u002F",[917,1312,1287],{"class":1286},[917,1314,1315],{"class":923},">\n",[917,1317,1318],{"class":919,"line":955},[917,1319,1321],{"emptyLinePlaceholder":1320},true,"\n",[917,1323,1324],{"class":919,"line":976},[917,1325,1326],{"class":1277},"\u003C!-- اكتبه هكذا -->\n",[917,1328,1329,1331,1333,1335,1337,1339,1342,1344,1346,1348,1350,1352],{"class":919,"line":990},[917,1330,1283],{"class":923},[917,1332,1287],{"class":1286},[917,1334,1290],{"class":933},[917,1336,1293],{"class":923},[917,1338,937],{"class":923},[917,1340,1341],{"class":946},"config.mod_writer == 1",[917,1343,937],{"class":923},[917,1345,1303],{"class":923},[917,1347,1307],{"class":1306},[917,1349,1310],{"class":923},[917,1351,1287],{"class":1286},[917,1353,1315],{"class":923},[917,1355,1356],{"class":919,"line":1013},[917,1357,1321],{"emptyLinePlaceholder":1320},[917,1359,1360],{"class":919,"line":1033},[917,1361,1362],{"class":1277},"\u003C!-- المرشحات الجديدة -->\n",[917,1364,1365,1367,1369,1372,1374,1376,1379,1381,1383,1386,1388,1390],{"class":919,"line":1039},[917,1366,1283],{"class":923},[917,1368,247],{"class":1286},[917,1370,1371],{"class":933}," href",[917,1373,1293],{"class":923},[917,1375,937],{"class":923},[917,1377,1378],{"class":946},"{config.siteurl}?q={query|url}",[917,1380,937],{"class":923},[917,1382,1303],{"class":923},[917,1384,1385],{"class":1306},"{title|e}",[917,1387,1310],{"class":923},[917,1389,247],{"class":1286},[917,1391,1315],{"class":923},[917,1393,1394,1396,1399],{"class":919,"line":1053},[917,1395,1283],{"class":923},[917,1397,1398],{"class":1286},"script",[917,1400,1315],{"class":923},[917,1402,1403,1406,1409,1411,1414,1417],{"class":919,"line":1073},[917,1404,1405],{"class":933},"  var",[917,1407,1408],{"class":1306}," fileName ",[917,1410,1293],{"class":923},[917,1412,1413],{"class":923}," {",[917,1415,1416],{"class":1306},"file_name|js",[917,1418,1419],{"class":923},"};\n",[917,1421,1422,1424,1426],{"class":919,"line":1092},[917,1423,1310],{"class":923},[917,1425,1398],{"class":1286},[917,1427,1315],{"class":923},[74,1429,1430,1431,1434,1435,1438],{},"وإن كانت إضافتك تضيف وسوماً خاصة إلى القوالب، فاستخدم الخطاف الجديد ",[147,1432,1433],{},"style_parse_func_step_2","، وأضف إلى المصفوفة ",[147,1436,1437],{},"$rep"," أزواج «تعبير نمطي ← بديل» تعمل على الكود بعد ترجمته.",[737,1440,1442],{"id":1441},"الستايلات-المبنية-على-default-أو-bootstrap","الستايلات المبنية على Default أو Bootstrap",[74,1444,1445,1446,940],{},"غيّر الستايل المبني على Default ليعتمد على Bootstrap أو على ",[147,1447,199],{},[908,1449,1454],{"className":1450,"code":1451,"filename":1452,"language":1453,"meta":913,"style":913},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# كان: depend_on = default\ndepend_on = bootstrap\n","styles\u002Fmy_style\u002Finfo.txt","ini",[147,1455,1456,1461],{"__ignoreMap":913},[917,1457,1458],{"class":919,"line":920},[917,1459,1460],{"class":1277},"# كان: depend_on = default\n",[917,1462,1463,1466,1469],{"class":919,"line":927},[917,1464,1465],{"class":1286},"depend_on",[917,1467,1468],{"class":923}," =",[917,1470,1471],{"class":1306}," bootstrap\n",[74,1473,1474],{},"وإن كان ستايلك يحمّل Bootstrap أو jQuery من ستايل Bootstrap، فحمّل Bootstrap 5.3 وFont Awesome من المجلد المشترك كما يفعل ستايل Bootstrap نفسه:",[908,1476,1479],{"className":1267,"code":1477,"filename":1478,"language":1270,"meta":913,"style":913},"\u003CIF NAME=\"lang.DIR==rtl\">\n\u003Clink rel=\"stylesheet\" href=\"{config.siteurl}includes\u002Fstatic_shared_files\u002Fbootstrap\u002Fcss\u002Fbootstrap.rtl.min.css\">\n\u003CELSE>\n\u003Clink rel=\"stylesheet\" href=\"{config.siteurl}includes\u002Fstatic_shared_files\u002Fbootstrap\u002Fcss\u002Fbootstrap.min.css\">\n\u003C\u002FIF>\n\u003Clink rel=\"stylesheet\" href=\"{config.siteurl}includes\u002Fstatic_shared_files\u002Ffontawesome\u002Fcss\u002Fall.min.css\">\n","styles\u002Fmy_style\u002Fheader.html",[147,1480,1481,1500,1532,1541,1570,1578],{"__ignoreMap":913},[917,1482,1483,1485,1487,1489,1491,1493,1496,1498],{"class":919,"line":920},[917,1484,1283],{"class":923},[917,1486,1287],{"class":1286},[917,1488,1290],{"class":933},[917,1490,1293],{"class":923},[917,1492,937],{"class":923},[917,1494,1495],{"class":946},"lang.DIR==rtl",[917,1497,937],{"class":923},[917,1499,1315],{"class":923},[917,1501,1502,1504,1507,1510,1512,1514,1517,1519,1521,1523,1525,1528,1530],{"class":919,"line":927},[917,1503,1283],{"class":923},[917,1505,1506],{"class":1286},"link",[917,1508,1509],{"class":933}," rel",[917,1511,1293],{"class":923},[917,1513,937],{"class":923},[917,1515,1516],{"class":946},"stylesheet",[917,1518,937],{"class":923},[917,1520,1371],{"class":933},[917,1522,1293],{"class":923},[917,1524,937],{"class":923},[917,1526,1527],{"class":946},"{config.siteurl}includes\u002Fstatic_shared_files\u002Fbootstrap\u002Fcss\u002Fbootstrap.rtl.min.css",[917,1529,937],{"class":923},[917,1531,1315],{"class":923},[917,1533,1534,1536,1539],{"class":919,"line":955},[917,1535,1283],{"class":923},[917,1537,1538],{"class":1286},"ELSE",[917,1540,1315],{"class":923},[917,1542,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1566,1568],{"class":919,"line":976},[917,1544,1283],{"class":923},[917,1546,1506],{"class":1286},[917,1548,1509],{"class":933},[917,1550,1293],{"class":923},[917,1552,937],{"class":923},[917,1554,1516],{"class":946},[917,1556,937],{"class":923},[917,1558,1371],{"class":933},[917,1560,1293],{"class":923},[917,1562,937],{"class":923},[917,1564,1565],{"class":946},"{config.siteurl}includes\u002Fstatic_shared_files\u002Fbootstrap\u002Fcss\u002Fbootstrap.min.css",[917,1567,937],{"class":923},[917,1569,1315],{"class":923},[917,1571,1572,1574,1576],{"class":919,"line":990},[917,1573,1310],{"class":923},[917,1575,1287],{"class":1286},[917,1577,1315],{"class":923},[917,1579,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600,1603,1605],{"class":919,"line":1013},[917,1581,1283],{"class":923},[917,1583,1506],{"class":1286},[917,1585,1509],{"class":933},[917,1587,1293],{"class":923},[917,1589,937],{"class":923},[917,1591,1516],{"class":946},[917,1593,937],{"class":923},[917,1595,1371],{"class":933},[917,1597,1293],{"class":923},[917,1599,937],{"class":923},[917,1601,1602],{"class":946},"{config.siteurl}includes\u002Fstatic_shared_files\u002Ffontawesome\u002Fcss\u002Fall.min.css",[917,1604,937],{"class":923},[917,1606,1315],{"class":923},[737,1608,1609],{"id":1609},"البريد",[74,1611,1612,1613,1616,1617,760,1620,760,1623,1626,1627,1630,1631,1634,1635,1638,1639,1642],{},"تقبل ",[147,1614,1615],{},"send_mail()"," الآن نصاً عادياً كما كانت، أو مصفوفة كتل من الأنواع ",[147,1618,1619],{},"text",[147,1621,1622],{},"button",[147,1624,1625],{},"alert"," تُعرض في قالب ",[147,1628,1629],{},"includes\u002Fmail_template.html",". تحصل خطافات ",[147,1632,1633],{},"send_mail"," على ",[147,1636,1637],{},"$body"," نصاً عادياً كما كانت، ومعه ",[147,1640,1641],{},"$html_body",". وإن كانت إضافتك ترسل البريد بنفسها، عبر SMTP مثلاً، فأرسل النسختين.",[74,1644,1645,1646,760,1649,760,1652,760,1655,760,1658,1661,1662,760,1665,389],{},"وحذفنا مفاتيح اللغة التي كانت تبني الرسائل القديمة: ",[147,1647,1648],{},"GET_LOSTPASS_MSG",[147,1650,1651],{},"U_REPORT_ON",[147,1653,1654],{},"BY_EMAIL",[147,1656,1657],{},"ADMIN_REPLIED",[147,1659,1660],{},"REPLIED_ON_CAL","، ومعها ",[147,1663,1664],{},"PHP_8_REQUIRED",[147,1666,1667],{},"PDO_EXT_REQUIRED",[737,1669,1671],{"id":1670},"أدوات-جديدة-للمطورين","أدوات جديدة للمطورين",[112,1673,1674,1697,1704,1710],{},[115,1675,1676,1679,1680,760,1683,760,1686,760,1689,1692,1693,1696],{},[147,1677,1678],{},"Plugins::installFromStore('name')"," تنزّل إضافة من المتجر وتثبتها وتفعّلها في خطوة واحدة، فتستطيع إضافتك أن تثبّت إضافة أخرى تعتمد عليها. ومعها ",[147,1681,1682],{},"Plugins::download()",[147,1684,1685],{},"install()",[147,1687,1688],{},"enable()",[147,1690,1691],{},"disable()","، و",[147,1694,1695],{},"Plugins::lastError()"," التي تخبرك بسبب الفشل.",[115,1698,1699,1700,1703],{},"الخطاف ",[147,1701,1702],{},"admin_help_guides"," يضيف دليل إضافتك إلى صفحة المساعدة. تجد مثالاً كاملاً في الدليل الأخير من صفحة المساعدة نفسها.",[115,1705,1699,1706,1709],{},[147,1707,1708],{},"kleeja_mail_template_func"," يغيّر قالب البريد.",[115,1711,1712,1713,1716,1717,1720],{},"الدالة ",[147,1714,1715],{},"kleeja_html_decode()"," تعيد النص كما كتبه صاحبه مهما تكرر ترميزه، والدالة ",[147,1718,1719],{},"kleeja_html_display()"," ترمّزه مرة واحدة لعرضه.",[908,1722,1727],{"className":1723,"code":1724,"filename":1725,"language":1726,"meta":913,"style":913},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","$kleeja_plugin['my_plugin']['install'] = function ($plg_id) {\n    \u002F\u002F ثبّت الإضافة التي تعتمد عليها إضافتك وفعّلها\n    if (!Plugins::installFromStore('kj_smtp_mailer')) {\n        kleeja_log(Plugins::lastError());\n    }\n};\n","plugins\u002Fmy_plugin\u002Finit.php","php",[147,1728,1729,1773,1778,1811,1828,1833],{"__ignoreMap":913},[917,1730,1731,1733,1736,1739,1742,1744,1746,1749,1751,1753,1755,1758,1760,1763,1766,1769,1771],{"class":919,"line":920},[917,1732,1263],{"class":923},[917,1734,1735],{"class":1306},"kleeja_plugin",[917,1737,1738],{"class":923},"[",[917,1740,1741],{"class":923},"'",[917,1743,969],{"class":946},[917,1745,1741],{"class":923},[917,1747,1748],{"class":923},"][",[917,1750,1741],{"class":923},[917,1752,873],{"class":946},[917,1754,1741],{"class":923},[917,1756,1757],{"class":923},"]",[917,1759,1468],{"class":923},[917,1761,1762],{"class":933}," function",[917,1764,1765],{"class":923}," ($",[917,1767,1768],{"class":1306},"plg_id",[917,1770,600],{"class":923},[917,1772,987],{"class":923},[917,1774,1775],{"class":919,"line":927},[917,1776,1777],{"class":1277},"    \u002F\u002F ثبّت الإضافة التي تعتمد عليها إضافتك وفعّلها\n",[917,1779,1780,1784,1787,1790,1793,1797,1800,1802,1804,1806,1809],{"class":919,"line":955},[917,1781,1783],{"class":1782},"s7zQu","    if",[917,1785,1786],{"class":923}," (!",[917,1788,1789],{"class":996},"Plugins",[917,1791,1792],{"class":923},"::",[917,1794,1796],{"class":1795},"s2Zo4","installFromStore",[917,1798,1799],{"class":923},"(",[917,1801,1741],{"class":923},[917,1803,472],{"class":946},[917,1805,1741],{"class":923},[917,1807,1808],{"class":923},"))",[917,1810,987],{"class":923},[917,1812,1813,1816,1818,1820,1822,1825],{"class":919,"line":976},[917,1814,1815],{"class":1795},"        kleeja_log",[917,1817,1799],{"class":923},[917,1819,1789],{"class":996},[917,1821,1792],{"class":923},[917,1823,1824],{"class":1795},"lastError",[917,1826,1827],{"class":923},"());\n",[917,1829,1830],{"class":919,"line":990},[917,1831,1832],{"class":923},"    }\n",[917,1834,1835],{"class":919,"line":1013},[917,1836,1419],{"class":923},[89,1838,1840],{"id":1839},"كيف-تترقى-إلى-كليجا-4-بأمان","كيف تترقى إلى كليجا 4 بأمان",[74,1842,1843,1844,1846],{},"تستطيع الترقية من كليجا 3 بزر التحديث في لوحة التحكم. ينسخ المحدّث ملفات كليجا 4، ثم يحدّث كليجا 4 قاعدة البيانات، ويحدّث ستايل Bootstrap من حزمة الإصدار، وينقل موقعك إلى ",[147,1845,199],{}," إن كان يستخدم Default، ويعيد فتح الموقع. الشرط الذي لا يتحقق منه المحدّث في كليجا 3 هو إصدار PHP، فتحقق منه بنفسك قبل أن تبدأ.",[1848,1849,1850,1854,1857,1861,1872,1876,1879,1883,1886,1890,1893,1901,1905,1912,1918,1922],"steps",{},[94,1851,1853],{"id":1852},"خذ-نسخة-احتياطية-كاملة","خذ نسخة احتياطية كاملة",[74,1855,1856],{},"انسخ كل ملفات موقعك، وصدّر قاعدة البيانات من لوحة الاستضافة. إن كان موقعك يعمل على SQLite، فملف قاعدة البيانات جزء من الملفات. لا تبدأ قبل أن تتأكد أنك تستطيع استعادة النسختين.",[94,1858,1860],{"id":1859},"تأكد-من-متطلبات-الخادم","تأكد من متطلبات الخادم",[74,1862,1863,1864,1867,1868,1871],{},"تحقق من لوحة الاستضافة أن إصدار PHP هو 8.2 أو أحدث، وأن امتدادَي PDO وZipArchive مفعّلان. إن لم يكن كذلك، فاطلب من شركة الاستضافة ترقية PHP قبل أي خطوة أخرى. وإن كان موقعك يعمل على SQLite، فتأكد أن إصدار مكتبة SQLite هو 3.35 أو أحدث (تجده في صفحة ",[147,1865,1866],{},"phpinfo()"," تحت ",[147,1869,1870],{},"pdo_sqlite",")، لأن كليجا 4 يحذف أعمدة من قاعدة البيانات، والإصدارات الأقدم لا تستطيع ذلك.",[94,1873,1875],{"id":1874},"راجع-إضافاتك-وستايلاتك","راجع إضافاتك وستايلاتك",[74,1877,1878],{},"اكتب قائمة بالإضافات والستايل الذي يستخدمه موقعك، وابحث عن كل منها في قسم «الإضافات في كليجا 4» أعلاه. إن كان موقعك يعتمد على إضافة ليست لها نسخة لكليجا 4، فأجّل الترقية. وإن كان عندك ستايل مخصص مبني على Default، أو عدّلت ملفات النواة بنفسك، فاحفظ تعديلاتك في مكان منفصل.",[94,1880,1882],{"id":1881},"جرّب-على-نسخة-تجريبية-أولاً","جرّب على نسخة تجريبية أولاً",[74,1884,1885],{},"انسخ موقعك وقاعدة بياناته إلى نطاق فرعي أو إلى جهازك، ونفّذ الترقية عليها. افتح صفحة الرفع وصفحة التحميل ولوحة التحكم، وجرّب رفع ملف وتحميله.",[94,1887,1889],{"id":1888},"حدّث-من-لوحة-التحكم","حدّث من لوحة التحكم",[74,1891,1892],{},"افتح صفحة «فحص عن تحديثات» في لوحة تحكم كليجا 3، ثم اضغط «تحديث الآن!». ينزّل المحدّث كليجا 4 ويستبدل الملفات ويحدّث قاعدة البيانات في ثلاث خطوات، ويغلق الموقع للصيانة أثناءها. لا تغلق الصفحة حتى تنتهي الخطوات الثلاث.",[74,1894,1895,1896,1898,1899,389],{},"يحذف تحديث قاعدة البيانات الأعمدة القديمة، ويعطّل الإضافات، وينقل موقعك من Default إلى ",[147,1897,199],{}," إن كان يستخدمه، ويحذف مجلدَي Masmak و",[147,1900,786],{},[94,1902,1904],{"id":1903},"أعد-تحميل-لوحة-التحكم","أعد تحميل لوحة التحكم",[74,1906,1907,1908,1911],{},"بعد انتهاء التحديث، أعد تحميل لوحة التحكم بالضغط على ",[147,1909,1910],{},"Ctrl+F5","، لأن Damask حلّ محل Masmak وتغيرت ملفات CSS وJavaScript. إن ظهر لك في بداية لوحة كليجا تنبيه «قاعدة البيانات تحتاج إلى تحديث»، فاضغط «تحديث قاعدة البيانات» فيه ليكمل كليجا ما بقي.",[74,1913,1914],{},[104,1915],{"alt":1916,"src":1917},"تنبيه تحديث قاعدة البيانات في بداية لوحة كليجا","\u002Fimages\u002Fblog\u002Fkleeja-4\u002Far\u002Fdb-update-notice.png",[94,1919,1921],{"id":1920},"حدّث-الإضافات-والستايلات-وفعّلها","حدّث الإضافات والستايلات وفعّلها",[74,1923,1924],{},"افتح صفحة «إضافات برمجية» في لوحة التحكم، وحدّث كل إضافة ثم فعّلها واحدة بعد الأخرى، وافتح موقعك بعد كل واحدة. إن تعطل شيء، فستعرف الإضافة المسؤولة. ثم افتح صفحة «الستايلات» وحدّث ستايلك.",[81,1926,1927,1930,1931,1936,1937,1939,1940,1943,1944,1946,1947,1949],{},[84,1928,1929],{},"الترقية اليدوية:"," إن لم يكن ZipArchive متوفراً على خادمك، أو لم يستطع المحدّث الكتابة على ملفات موقعك، فنزّل كليجا 4.0.0 من ",[247,1932,1935],{"href":1933,"rel":1934},"https:\u002F\u002Fgithub.com\u002Fkleeja\u002Fkleeja\u002Freleases",[251],"صفحة الإصدارات على GitHub"," وارفع ملفاتها فوق ملفات موقعك، بما فيها مجلد ",[147,1938,873],{},". ثم افتح ",[147,1941,1942],{},"\u002Finstall\u002Fupdate.php"," وادخل باسم المدير وكلمة مروره، واحذف مجلد ",[147,1945,873],{}," بعد انتهاء التحديث. لا تحوي الحزمة الملف ",[147,1948,881],{},"، فتبقى إعدادات الاتصال بقاعدة البيانات كما هي.",[1951,1952,1953],"caution",{},"إن فشلت الترقية، فلا تحاول إصلاح الموقع المباشر وهو نصف محدّث. استعد النسخة الاحتياطية من الملفات وقاعدة البيانات معاً، ثم أخبرنا بما حدث.",[94,1955,1957],{"id":1956},"نصائح-لمواجهة-التغييرات-الكاسرة","نصائح لمواجهة التغييرات الكاسرة",[112,1959,1960,1970,1979,1985,2001],{},[115,1961,1962,1965,1966,1969],{},[84,1963,1964],{},"انقل تعديلاتك إلى إضافة."," إن كنت تعدّل ملفات النواة مباشرة، فسيستبدلها المحدّث في كل ترقية. الخطافات (",[147,1967,1968],{},"runHook",") موجودة في كل صفحة تقريباً، والإضافة الصغيرة تحمي تعديلك من الترقيات القادمة.",[115,1971,1972,1975,1976,1978],{},[84,1973,1974],{},"ابنِ ستايلك على Bootstrap."," الستايل الذي يعتمد على Bootstrap عبر ",[147,1977,1465],{}," يرث كل قالب لم تعدّله، فتصلك إصلاحات القوالب مع كل ترقية دون أن تكتبها بنفسك.",[115,1980,1981,1984],{},[84,1982,1983],{},"لا تترقَّ وإضافة أساسية لموقعك ما زالت دون نسخة."," إن كانت خدمتك تعتمد على الربط بمنتدى مثلاً، فإبقاء موقعك على كليجا 3.2.7 حتى تصدر نسختها أفضل من موقع يعمل دونها.",[115,1986,1987,1993,1994,1997,1998,2000],{},[84,1988,1989,1990,1992],{},"فعّل ",[147,1991,1135],{}," في النسخة التجريبية."," أضف ",[147,1995,1996],{},"define('DEV_STAGE', true);"," إلى ",[147,1999,881],{}," فيها، فيعرض كليجا كل الأخطاء ويترجم القوالب في كل طلب. ستجد أخطاء الستايلات والإضافات بسرعة، لكن لا تفعّله في موقعك المباشر.",[115,2002,2003,2006],{},[84,2004,2005],{},"اقرأ صفحة المساعدة بعد الترقية."," دليل «تعرّف على لوحة التحكم» وأدلة الصفحات تختصر عليك التعرف على Damask.",[89,2008,2009],{"id":2009},"شكر",[74,2011,2012,2013,2018],{},"من مساهمات ",[247,2014,2017],{"href":2015,"rel":2016},"https:\u002F\u002Fgithub.com\u002FRouatbiH",[251],"Hani Rouatbi"," في هذا الإصدار: إصلاح استئناف التحميل، وتحديث بيانات الدخول بعد تعديل الملف الشخصي، والتحقق من رمز حذف الملفات، وعدد من الأخطاء الأخرى. شكراً لـ Hani، ولكل من أبلغ عن خطأ أو ترجم أو اقترح فكرة.",[89,2020,2021],{"id":2021},"روابط",[112,2023,2024,2031,2038],{},[115,2025,2026],{},[247,2027,2030],{"href":2028,"rel":2029},"https:\u002F\u002Fgithub.com\u002Fkleeja\u002Fkleeja",[251],"مستودع كليجا على GitHub",[115,2032,2033],{},[247,2034,2037],{"href":2035,"rel":2036},"https:\u002F\u002Fgithub.com\u002Fkleeja\u002Fkleeja\u002Fissues",[251],"الإبلاغ عن مشكلة",[115,2039,2040],{},[247,2041,2043],{"href":249,"rel":2042},[251],"قائمة المتجر",[74,2045,2046],{},"إن واجهتك مشكلة في الترقية، فافتح بلاغاً على GitHub واذكر فيه إصدار PHP ونوع قاعدة البيانات والإضافات التي كانت مفعّلة، وسنساعدك.",[2048,2049,2050],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":913,"searchDepth":927,"depth":927,"links":2052},[2053,2066,2071,2075,2085,2086],{"id":91,"depth":927,"text":92,"children":2054},[2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065],{"id":96,"depth":955,"text":97},{"id":138,"depth":955,"text":139},{"id":162,"depth":955,"text":163},{"id":203,"depth":955,"text":204},{"id":237,"depth":955,"text":238},{"id":262,"depth":955,"text":263},{"id":275,"depth":955,"text":276},{"id":288,"depth":955,"text":289},{"id":346,"depth":955,"text":347},{"id":398,"depth":955,"text":399},{"id":419,"depth":955,"text":419},{"id":433,"depth":927,"text":434,"children":2067},[2068,2069,2070],{"id":460,"depth":955,"text":461},{"id":492,"depth":955,"text":493},{"id":564,"depth":955,"text":565},{"id":730,"depth":927,"text":731,"children":2072},[2073,2074],{"id":734,"depth":955,"text":735},{"id":891,"depth":955,"text":892},{"id":1839,"depth":927,"text":1840,"children":2076},[2077,2078,2079,2080,2081,2082,2083,2084],{"id":1852,"depth":955,"text":1853},{"id":1859,"depth":955,"text":1860},{"id":1874,"depth":955,"text":1875},{"id":1881,"depth":955,"text":1882},{"id":1888,"depth":955,"text":1889},{"id":1903,"depth":955,"text":1904},{"id":1920,"depth":955,"text":1921},{"id":1956,"depth":955,"text":1957},{"id":2009,"depth":927,"text":2009},{"id":2021,"depth":927,"text":2021},"2026-10-10","جولة في كليجا 4: لوحة تحكم جديدة، وستايل Bootstrap جديد، ومحدّث أكثر أماناً، مع شرح التغييرات الكاسرة للتوافق وطريقة الترقية بأمان.","md","\u002Fimages\u002Fblog\u002Fkleeja-4-ar.png",{},"\u002Far\u002Fblog\u002Fkleeja-4-release",{"title":62,"description":2088},"ar\u002Fblog\u002Fkleeja-4-release","mOjRLPEy7MqpaJiY4ITifHXlKzN6B9iLBSRw7NCZvpw",[2097,2102],{"title":2098,"path":2099,"stem":2100,"description":2101,"children":-1},"مرحبًا بالعالم","\u002Far\u002Fblog\u002Fhello-world","ar\u002Fblog\u002Fhello-world","هذه أول تدوينة في مدونة كليجا.",null,1792539827368]