اذهب إلى المحتوى

Adnane Kadri

الأعضاء
  • المساهمات

    5129
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    51

كل منشورات العضو Adnane Kadri

  1. هل جربت whereMonth مع اعادة تنفيذ الاستعلام عن طريق get؟ @foreach ($project->comments->whereMonth('created_at' , $month )->get() as $comment) رغم ان ملفات العرض Views ليست المكان الجيد لتعريف الوظائف والتوابع. استعن بملفات النماذج Model لفعل هذا. ليكن مثلا التابع commentsOfMonth لملف النموذج Project كـ: public function commentsOfMonth($month) { return $this->comments->whereMonth('created_at' , $month )->get(); } تستعمل كـ: @foreach ($project->commentsOfMonth($month) as $comment)
  2. هلا قمت بتحديد عنصر القائمة بعد حدث الضغط وليس قبله؟ myButton.addEventListener("click", function(){ let yearSelect = document.getElementById("year-dropdown"); let year = yearSelect.value;
  3. يمكنك الاستعانة بموقع مستقل في توظيف من يقوم لك بكل ذلك.
  4. وعليكم السلام، يمكنك مباشرة جلب القيمة الخاصة بالحقل وفحصها والتحقق منها: var select = document.getElementById('select'); // جلب عنصر القائمة المستهدف var value = select.value; if (value.length > 0) { // تم اختيار قيمة من القائمة المنسدلة } ايضا يمكنك استعمال الخاصية required في HTML5 <select id="select" required="required"> <option value="">Choose an option</option> <option value="option1">Option1</option> <option value="option2">Option2</option> <option value="option3">Option3</option> </select> يتم اجبار المستخدم هنا على اختيار حقل قبل تقديم النموذج، يمكنك تخصيص التحقق بما يلائم حاجتك. وليكن مثلا التحقق من ما ان كان طرح تاريخ اليوم الى تاريخ ميلاد المستخدم يساوي او اكبر من 18 سنة.
  5. يقتضي هذا بشكل من الاشكال ان يتصلا بنفس قاعدة البيانات، على ان هاته البيانات المشتركة الموحدة (المحتوى والقالب مثلا) يجب ان يتم تخزينها في هاته القاعدة. يمكنك استعمال اتصال قاعدة بيانات خارجي، بجانب تخزين خارجي. لخدمة هاته الفكرة أكثر. تأكد فقط من اعداد اتصال قاعدة بيانات مماثل لكل من المواقع. وبالطبع فان هذين الموقعين يجب ان يقوما بنمذجة هاته البيانات وفق منطق واحد. فعلى سبيل المثال: لا يتطلب الموقع الاول الاتصال بجدول المنتجات في حين ان الثاني يطلب جدول قواعد بيانات آخر. ان كنت تستعمل وردبرس، يمكنك لحد ما تطبيق هاته الفكرة. اما ان كنت تستخدم تطبيقي ويب مختلفين تماما. فالأمر لن يكون بالبساطة التي وصف عليها.
  6. نعم، ذلك بسبب اختلاف النسخ المستخدمة. الصورة الأولى هي الموافقة لمحتوى الملف في نسخ 2.x في حين ان ما لديك هو الموافق للنسخ الأحدث أعلى من 6. فـ Program.cs لم يعد صنفا مثلما كان في النسخ السابقة. وهذا التغيير لا يخص اطار Net. نفسه بل هو سياق تم اطلاقه مع Net. 6 و #c النسخة التاسعة. يدعى السياق بـ top-level-statemens او بيانات المستوى الأعلى، وهو ميزة جاءت بيها #c حلت الكثير من المشاكل بسياقها. وقد وضع بشكل بسيط لتمكينك من البدء في كتابة الشيفرات والتكويد بشكل مباشر. أظنك تحتاجين متابعة كورس أحدث.
  7. GDPR في الاصل اختصار العبارة Global Data Protection Regulation او قانون حماية البيانات العامة. في مقابل CCPA عن California Consumer Privacy Act او قانون حماية خصوصية المستهلك. وهما قانونان يحميان بيانات المستخدمين والمستهلكين عبر الانترنت وينظم عملية تجميع البيانات حولهما. رغم انهما يختلفان من حيث المستخدم المحمي، نوع البيانات المقصود وحتى العقوبات على خرقها. الا انهما يقترنان احيانا كثيرا في المواقع والتطبيقات الالكترونية. تدعى المواقع والتطبيقات التي تحترم وتوافق هذين المعيارين ب CCPA/GDPR Compliant. من بين الطرق لجعل الموقع كذلك: تحدث في سياسة الخصوصية الخاصة بك عن كيف ولماذا وما هي المعلومات الشخصية التي تجمعها وتعالجها. تحدث في سياسة الخصوصية الخاصة بك عن كيفية طلب المستخدمين الوصول إلى بياناتهم الشخصية التي جمعتها مع امكانية تغييرها أو محوها. وقدم طرقا للتحقق من هوية الأشخاص الذين يقومون بذلك. بالمختصر، ستحتاج تحرير نص سياسة الخصوصية الخاصة بك privacy policy بحيث تتضمن كل هاته الأشياء. ان كنت لا تجمع اصلا اي بيانات فلا يجب عليك ذلك اصلا.
  8. استلهم افكارا اكثر حتى يمكنك ان تجد ما تمارس الجافاسكربت فيه. فأغلب المواقع تكون جافة لا تمتلك او تستغل القدرة التي تعرضها جافاسكربت. قلل استعمال المكتبات الخارجية واستعمل مكتباتك ووظائفك ودوالك الخاصة التي تكون على الجافاسكربت بدلا من ذلك. لأن فكرة تضمين مكتبة ب 20 ميزة مثلا من اجل استعمال ميزة واحدة لا يعد منطقيا اصلا، فيفضل بناء تلك الميزة من الصفر على ان تكون جاهزة وفق ما تقدمه تلك المكتبة او الاضافة. على سبيل المثال: اضافات مثل عارض شرائح، قوائم منسدلة، نوافذ منبثقة، تنبيهات منبثقة.. الخ. كل هذا يمكن انشاءه بالجافاسكربت بشكل جد عادي، ولا يحتاج كل منها اضافة او مكتبة خارجية. استعمل جافاسكربت في التحقق من المدخلات وفحص البيانات قبل ارسالها الى الخادم او الى واجهة التطبيق البرمجية. استعمل جافاسكربت في انشاء طلبات Ajax. استعمل نموذج كائن الوثيقة DOM للتلاعب بعناصر الوثيقة لجعل الصفحة تفاعلية اكثر. تعود على توظيف الجافاسكربت في موقعك، لأنك بتجنب ذلك ستضطر في يوم ما الى حشو موقع عميلك بعشرات الإضافات لخدمة أغراض وحالات استخدام معينة كان يمكن عملها بالجافاسكربت مباشرة.
  9. ليس تماما، لاحظ أنه يشترط اتمام أربع مسارات وليس أربع دورات والمسار في دورات الاكاديمية مختلف عن الدورة. فنقول مثلا: دورة علوم الحاسوب دورة تطوير التطبيقات باستخدام لغة Python ونقول أيضا: مسار أساسيات لغة PHP من دورة تطوير تطبيقات الويب باستخدام PHP مسار أنظمة التشغيل ونظام لينكس من دورة علوم الحاسوب فكل دورة مقسمة الى مسارات، وكل مسار الى تفرعات اخرى تنقسم هي الاخرى الى فيديوهات. من بين شروط اجتياز الامتحان اكمال أربع مسارات من دورة ما بغرض التخرج والحصول على شهادة التخرج منها. راجع: الامتحان والحصول على الشهادة
  10. على كل، لست المعني باستعمال ملفات تعريف الارتباط او التخزين المؤقت. فقوقل ادسنس ترسل ملف تعريف ارتباط إلى متصفح المستخدم بعد أي ظهور أو نقرة أو أي نشاط آخر ينتج عنه اتصال بخوادمها. تستعمل قوقل هذا لتحسين تجربة استخدامها ولتحسين عملية فلترة محتويات الاعلانات للمستخدمين. ولذلك فهي تدفع المستخدمين الى طلب موافقة الزوار من شروط استخدام ملفات تعريف الارتباط من المستخدمين اول مرة، وذلك كشرط لإظهار اعلاناتها واستخدام برنامجها. أي انك ستحتاج طلب ذلك، رغم انك لا تقوم به انت نفسك. لأن قوقل تستخدمه.
  11. فكرتك غير واضحة جيدا، ما الذي تحاول بناءه؟ وأي العناصر الذي تحاول اظهاره. يرجى ارفاق كامل الشيفرة مع تفاصيل اكثر
  12. النسبة للمثال الذي أرفقته، يحتمل ان يكون هنالك اسناد وظيفة تغيير اللغة عن طريق الأجاكس مثلا الى حدث تغيير العناصر في القائمة. على سبيل المثال: var mySelect = document.getElementById('#mySelect'); mySelect.onchange = (event) => { var lang = event.target.value; // changeLanguageViaAjax(lang); } أما بالنسبة لما قمت به انت، فهو صحيح يحتاج فقط تصويبا. تمرير معامل يكون كـ: Route::get('/setLang/{local}' .. أيضا المعامل الثاني الممرر الى التابع get يكون اما كـ: Route::get('/setLang/{local}' ,[SwichLanguage::class , 'swichLang']); او: Route::get('/setLang/{local}' ,'SwichLanguage@swichLang']); كتسمية سليمة اكثر لهذا المسار يمكنك انشاء تسمية ديناميكية بحقن قيمة المتغير local: ->name('switchLanguage' ,'{local}') ليكون كاملا: Route::get('/setLang/{local}' ,[SwichLanguage::class , 'swichLang'])->name('swicthLanguage' ,'{local}'); يكون الاستعمال مباشرة بحقن الرابط كـ: <a href="{{ route('switchLanguage' , 'ar') }}"> عربي </a> <a href="{{ route('switchLanguage' , 'en') }}"> عربي </a>
  13. يمكنك الاستعانة بموقع مستقل لتوظيف مطور برمجيات ليقوم لك بذلك.
  14. أظن أن امتلاك موقع ناجح يثق فيه العملاء والزوار ليس وليد لحظة، بل هو ناتج مدة مطولة من فهم وتحليل سلوك الزوار عبر الموقع لغرض تحسين تجربة استخدامهم وتصفحهم. نتحدث هنا عن جودة اكواد الموقع وسرعة تنفيذها وتفسيرها من قبل المتصفحات، وعن التصميم والمحتوى على حد سواء. بالنسبة لاختيار التصاميم والألوان، فهو الأمر الآخر الذي لا يكون عشوائيا. تعرف على ايحاءات الألوان ودلالية كل منها وتركيباتها. تعلم طرق استخلاص مجموعة الوان color pallete انطلاقا من لون او لونين اساسين والا استعن بالمواقع والتطبيقات التي تقوم بذلك عنك. اجعل عملية تغيير الألوان في الموقع سهلة واختبر تدرجات ألوان مختلفة. كل هذا سيساعدك في اختيار مجموعة الألوان الأساسية التي سيكون بها تصميم موقع. واكيد فالأهم والمهم جدا هو انك ستحتاج الى الكثير من التغذية البصرية لتحسين تصاميمك. سيتطلب عليك تصفح المواقع والتطبيقات بنظرة مصمم. حاول الحصول على الإلهام متى ما انطلقت في بناء شيء ما. ابحث عن أمثلة عن ما تحاول بناءه واستخلص نموذجا خاص من عدة نماذج تختبرها مثلا. استعن بمواقع الإلهام من مثل codepen أو webdesigninspiration او غيرها. دليلك لاختيار تركيبات الألوان عند تصميم مواقع للعملاء كيف تختار أنسب الألوان لمشاريعك التصميمية
  15. يحتمل ان يكون فقط مشكلا بتضمين ملفات التنسيقات الخاصة بالمكتبة. قم باضافة سطري تضمين ملفات التنسيقات المستهدفة في ملف resources/sass/app.scss: @import 'node_modules/swiper/swiper'; @import 'node_modules/swiper/modules/pagination/pagination'; تأكد ايضا من اعداد الوحدتين Navigation و Pagination مثلما وصف المدرب حسن. ثم أعد تحزيم ملفات التنسيقات والجافاسكربت عن طريق npm run dev او npm run build واستعرض النتيجة.
  16. بمثل هاته الحالات، اظن انه يتعين عليك الاستعانة بأحد واجهات التطبيق البرمجية التي توفر أسعار في الوقت الفعلي للذهب بعيارات مختلفة. بمعنى أن الامر في الغالب سيتطلب برمجة خاصة، لم استطع ايجاد اضافة وردبرس توفر مثل هاته الخدمة. اطلع على واجهة metals-api أو goldapi مثلا. توفر هاته الأخيرة نقاط وصول HTTP end points تعطي ردودا من الشكل: { "timestamp": 1591149337, "metal": "XAU", "currency": "USD", "ask": 1728.4, "bid": 1727.08, "price": 1727.75, "price_gram_22K": 63.75, "ch": 0.01, "chp": -0.02 } يمكنك الاستعانة بها لذلك.
  17. أكيد، يمكنك استخدام ذات المنطق في أي لغة واجهة خلفية أو اطار عمل. ستختلف طريقة التنفيذ وتبقى العملية واحدة.
  18. كفكرة يمكنك ارسال معامل يميز نافذة التبويب المفتوحة الى الواجهة الخلفية، ثم بعد استقباله اعادة ارساله مجددا الى الواجهة الامامية. سيمكن التعامل معه آنها لفتح نافذة التبويب المستهدفة. مثال: <div class="tab" id="add_users_tab"> <form> .. <input type="hidden" name="active_tab" value="add_users_tab" /> </form> </div> سيستقبله الخادم ويعيد ارساله في الرد كمتغير active_tab$ مثلا. ستعيد الواجهة الامامية استقباله كـ: <script> var active_tab = "<?php echo $active_tab; ?>"; </script> ثم سيتم البحث عن النافذة المرافقة واظهارها عن طريق الواجهة البرمجية لبوتستراب: <script> var active_tab = "<?php echo $active_tab; ?>"; var target = document.querySelector("#"+active_tab); var tab = new bootstrap.Tab(target) tab.show() </script> بالطبع فإن هاته فكرة اولية عن الموضوع، يمكنك تطويرها أكثر.
  19. هل تقصد أن هنالك العديد من نماذج الادخالات موزعة في نوافذ تبويب bootstrap. بعد تقديم نموذج ما منها يتم معالجته من قبل الواجهة الخلفية ثم يعاد المستخدم ويعرض له نفس نافذة التبويب التي قدم من عليها النموذج أي تلك التي كان فيها؟
  20. لا أظن ذلك، رغم أنه من العملي تدوين الملاحظات او خطوات العمل بخصوص هاته الاكواد. بدلا من ذلك، يمكنك كتابتها في ملفات خاصة بها وحفظها كمرجع شخصي. فعلى سبيل المثال، ان كنت تتعلم لغة HTML وتحتاج استذكار بعض الوسوم واستعمالاتها، يمكنك بدل تدوين كل نقطة إنشاء مرجع شخصي عبارة عن سلسلة من ملفات الـ HTML التي تشرح كل وسم على حدة. بهاته الطريقة ستكون طبقت هذا المفهوم عمليا بالإضافة الى حفظه بطريقتك الخاصة. وأكيد، لا عيب في كتابة الشيفرات في ورق او مذكرة ان كان ذلك جيدا لك. على أنه سيأخذ منك وقتا أطول مما ستأخذه منك كتابة الأكواد في محررات أكواد خاصة بها. سيمكنك بها إيجاد الكثير من الأدوات المساعدة مثل التدقيق والمسافات البادئة indents والتكملة التلقائية للشيفرات، مثل هاته الأمور لا تكون متوفرة على الورق.
  21. هنالك مشكلة بالصورة المرفقة، هلا قمت بإعادة ارفاقها؟
  22. لما لا تقوم فقط عن طريق الجافاسكربت بالتحقق من ما ان كان العنصر body يحوي الصنف rtl او لا؟ var isRtl = document.body.classList.contains('rtl') سيمكنك اسناد هاته القيمة البوليانية الى قيمة الخاصية rtl $('.testimonial-slider').slick({ .. rtl:isRtl,
  23. كتطبيق آخر، يمكنك ايضا تضمين الملف الرئيسي للتنسيقات وتحته ملف التنسيقات RTL كـ: <link rel="stylesheet" href="{{ asset($activeTemplateTrue.'css/custom.css') }}"> <link rel="stylesheet" href="{{ asset($activeTemplateTrue.'css/rtlcustom.css') }}"> على أن ملف تنسيقات rtlcustom سيقوم بتحديد العناصر عن طريق محددات العناصر السليلة descendant combinator التي تتفرع عن العنصر body الذي يمتلك الصنف rtl. بمعنى أن أصنافك ستكون كـ: body.rtl .my-custom-item{ // اية تنسيقات } بهاته الطريقة، لن يكون عليك كتابة التنسيقات من جديد، وانما ستحتاج فقط تجاوز التنسيقات الغير مضبوطة في الاتجاه rtl. لاحظ أن rtlcustom.css يجب تضمينه بعد custom.css ليمكن تجاوز اي تنسيقات معرفة في الملف الأول. وبطبيعة الحال فإننا سنضيف الصنف rtl للعنصر body بشكل شرطي: <body class="@if(app()->getLocale() == 'ar') rtl @endif"> محددات العناصر السليلة
  24. ان كانت المشكلة في اتجاه المكون فقط، فيمكنك استثناء اتجاه عارض الشرائح وضبطه باتجاهه الافتراضي الذي كان عليه دون باقي الصفحة. بما أنك تستعمل حزمة slick carousel فيمكنك الاستعانة بالخاصية rtl لضبط اتجاه عارض الشرائح على true او false (التي تكون مضبوطة افتراضا): $('.testimonial-slider').slick({ .. rtl:true, ايضا قد تحتاج تحديد الخاصية dir للعنصر testimonial-slider بما يوافق هذا التعديل.
  25. صحيح، لأنها موجودة كـ getLocale وليس كـ getLocal بدون e. لما تريد الوصول اليه؟ يمكنك الاستغناء عنه مؤقتا. لأنه لن يقوم بأي شيء سوى جلب اللغة الافتراضية من قاعدة البيانات. ونحن لا نقوم بهذا حاليا. بل نقوم بتعيينها من الجلسة فقط. راجع الإجابة السابقة.
×
×
  • أضف...