إضافة الأحداث :التاريخ:

سأحاول إعادة إنتاج هذه المشكلة.

3 إعجابات

كيف يمكنني تنفيذ JavaScript بعد تحميل صفحة التقويم؟


تعديل: سأوضح حالتي.
طُلب مني إنشاء أحداث متعددة الألوان، مثل:

لا أريد إنشاء نسخة مشتقة (fork) من الإضافة، لذا حققت شيئًا مشابهًا باستخدام الكود التالي.
الألوان مرتبطة بوسوم الأحداث وتستبدل لون الفئة الافتراضي.

أضفت قائمة الوسوم في HTML الخاص بالحدث بهذه الطريقة: data-tags="{{event.topic.tags}}"

<script type="text/x-handlebars" data-template-name="javascripts/components/events-calendar-event">
<div class="{{event.classes}}" data-tags="{{event.topic.tags}}" {{action 'selectEvent' event.topic.url}} style="{{event.listStyle}}">
  {{#unless event.allDay}}
    <span style='{{event.dotStyle}}'>{{d-icon 'circle'}}</span>
  {{/unless}}
  {{#if event.time}}
    <span class="time">{{event.time}}</span>
  {{/if}}
  {{#if event.title}}
    <span class="title" style="{{event.titleStyle}}">{{replace-emoji event.title}}</span>
  {{/if}}
</div>

{{#if showEventCard}}
  {{events-calendar-card topic=event.topic selectEvent="selectEvent"}}
{{/if}}
</script>

أقوم بتوليد أنماط مخططة:

<script type="text/discourse-plugin" version="0.8.23">
api.onPageChange((url, title) => {
    // ألوان الوسوم
    let colors = {muni: "#91D0B5", road: "#8ABBE2", freestyle: "#CFB3D3"};

    let events = document.getElementsByClassName("event");
    for (var i = 0; i < events.length; i++) {
        let event = events[i];
        let gradient = "";
        let tags = event.getAttribute("data-tags").split(",");
        for (j = 1; j <= tags.length; j++) {
            gradient +=
                ", " +
                colors[tags[j - 1]] +
                " " +
                j * 8 +
                "px, " +
                colors[tags[j - 1]] +
                " " +
                (j * 8 + 8) +
                "px";
        }
        event.style.background = "repeating-linear-gradient(-45deg" + gradient + ")";
    }
});
</script>

وقمت أيضًا بإضافة بعض تنسيقات CSS.

النتيجة:
حدث بوسمين:

حدث بثلاثة وسوم:

المشكلة التي أواجهها هي أن جافا سكريبت الخاص بي يُنفذ عند تغيير الصفحة، ولا يطبق الألوان المخططة على أحداث الأشهر السابقة/التالية لأن التقويم يحمل محتواه ديناميكيًا.

إذا كنت في أكتوبر ونقرت مرتين على “التالي” للذهاب إلى ديسمبر، يظهر الأمر بهذا الشكل:

ولهذا السبب أود تنفيذ جافا سكريبت الخاص بي عند تحميل محتوى التقويم.

3 إعجابات

لقد جربت طريقة أخرى ونجحت في تحقيق تأثير الخطوط المتقطعة عن طريق تعديل الدالة eventsForDay في الملف /assets/javascripts/discourse/lib/date-utilities.js.es6:

استبدلت هذا السطر:

let tStyle = `width:calc((100%*${daysInRow}) - ${buffer}px);background-color:#${topic.category.color};`;

بـ:

let tStyle = `width:calc((100%*${daysInRow}) - ${buffer}px);`;

وأضفت ما يلي:

if (topic.tags.length > 0) {
  let colors = {muni: "#91D0B5", road: "#8ABBE2", freestyle: "#CFB3D3"};
  let gradient = "";
  for (let i = 1; i <= topic.tags.length; i++) {
    gradient +=
      ", " +
      colors[topic.tags[i - 1]] +
      " " +
      i * 8 +
      "px, " +
      colors[topic.tags[i - 1]] +
      " " +
      (i * 8 + 8) +
      "px";
  }
   attrs['listStyle'] += `background:repeating-linear-gradient(-45deg ${gradient});`;
}

تعمل هذه الطريقة بشكل ممتاز وهي أنظف لتنفيذ ما أريد تحقيقه. ومع ذلك، لا أعرف كيفية تجاوز هذه الدالة أو الملف دون الحاجة إلى إنشاء نسخة مطابقة (fork) من الإضافة…

إعجابَين (2)

يبدو أن الإضافة غير متوافقة مع أحدث إصدار من Discourse.
من ملف سجل إعادة البناء:

1: من /var/www/discourse/lib/plugin/instance.rb:417:in block in notify_after_initialize' /var/www/discourse/plugins/discourse-events/plugin.rb:190:in block in activate!': ثابت غير مهيأ #Class:0x0000562a2a10fa90::SCOPES
هل تقصد؟ Sprockets (NameError)

** إضافة غير متوافقة **

لا يمكنك بناء Discourse بسبب أخطاء في الإضافة في
/var/www/discourse/plugins/discourse-events

يرجى محاولة إزالة هذه الإضافة وإعادة البناء مرة أخرى!

4 إعجابات

يبدو أن المشكلة كانت في Discourse وليست في الإضافة.
في إصدار بيتا الأحدث من Discourse، تعمل الإضافة مرة أخرى على الأقل.

إعجابَين (2)

يمكنني تأكيد أنه لا يمكن حاليًا إعادة بناء أحدث إصدار مستقر من Discourse باستخدام إضافة الأحداث الحالية. :worried:

للأسف، لا يمكننا التبديل إلى tests-passed — لقد اخترنا الفرع المستقر تحديدًا لتجنب مثل هذه المشكلات. هل هناك شخص يتابع هذا الأمر؟

لقد جربت إعادة البناء باستخدام الإصدار v2.5.2 (الذي كان يعمل سابقًا) لكنه فشل بنفس الخطأ، لذا لست متأكدًا من مكان المشكلة. هل هناك التزام معين (من الإضافة أو من Discourse المستقر) يمكنني توجيه الحاوية إليه؟

إعجابَين (2)

سياسة الدعم لدينا تهدف إلى ضمان التوافق مع أحدث إصدار من discourse تم اختبار الاختبارات عليه tests-passed (نظرًا لأن هذا هو الإعداد الافتراضي في discourse_docker). ومع ذلك، نود فهم عدد مستخدمي عائلة إضافات Pavilion الذين يعملون على الفرع المستقر stable من discourse.

كما أننا نخطط لإلغاء دعم إضافة الأحداث لصالح إضافة الأحداث التابعة لفريق discourse في المستقبل القريب.

3 إعجابات

أنا أدرك أن المطورين بحاجة إلى النظر إلى المستقبل للحفاظ على التوافق مع مستقبل Discourse — وهذا أمر منطقي. ولكن إذا لم يكن هناك فرع مستقر من نوع ما للإضافة، فإن ذلك يترك الأشخاص الذين يبحثون عن إعداد مستقر في سيناريو ينهار فيه إعدادهم بسبب إصدار تجريبي لا يستخدمونه.

هل لديك أي نصائح حول أي تعهد (commit) هو الذي كسر التوافق؟ يمكنني محاولة العمل مع ذلك، لكنني مفقود بشأن التغيير الذي تسبب في هذا.

تعديل للإضافة: لأي شخص يواجه مشكلة مع هذا ويحتاج إلى حل مؤقت، يبدو أن هذا التعهد هو السبب.

3 إعجابات

كان هناك مشكلة في مفاتيح واجهة برمجة تطبيقات webcal وقد تم حلها.

شكرًا على البلاغ @md-misko

4 إعجابات

مرة أخرى، يبدو أن الإضافة غير متوافقة مع إصدار discourse الأحدث 2.6.0.beta5 ( 2bb7676ba4 ).
في هذه المرة، ينشئ صفحة فارغة فقط عند الوصول إلى الموقع. ولكن بخلاف المرة السابقة، لم يكن هناك خطأ عند استخدام admin/upgrade.
بعد تعطيل الإضافة وإعادة بناء الحاوية، يعمل Discourse بشكل صحيح مرة أخرى.

4 إعجابات

مرحباً، هل يقوم هذا الإضافة (Events) بإنشاء روابط “إضافة إلى التقويم” في أعلى المنشورات، مثلما هو الحال في هذه الصفحة:

https://community.namati.org/t/asia-pacific-justice-for-all-webinar-series/78084

أيضاً، ما هي آراء الناس في عام 2021 حول استخدام إضافة Pavilion Events مقارنة بإضافة التقويم الرسمية؟

أنا مهتم بشكل أساسي بإيجاد طرق لتسهيل تجميع عرض المواضيع على التقويم، وأود أيضاً تمكين مستخدمينا من إضافة الأحداث الفردية إلى تقويمات Google الخاصة بهم أو ملفات .ics.

تحياتي.

إعجاب واحد (1)

مرحبًا بك،

كما ذُكر في المنشور الأصلي:

يرجى أخذ لحظة للتفكير فيما إذا كانت ميزات الأحداث في إضافة Discourse Calendar التي طورتها فريق Discourse مناسبة لك. إذا كانت تلبي احتياجاتك، فنحن نوصي باستخدام تلك الإضافة. يجب عليك استخدام هذه الإضافة فقط إذا كنت قد فكرت أولاً في إضافة Discourse Calendar.

نوصي باستخدام إضافة Discourse Calendar إذا أمكنك ذلك. نحن ندعم هذه الإضافة فقط لحالات استخدام محددة لا تغطيها تلك الإضافة. ولحسن الحظ، تتضمن إضافة Calendar الميزتين اللتين ذكرتهما.

نعم، هذه هي وظيفة هذه الإضافة. ولكن، كما ذُكر، يبدو أن لديك حالة استخدام جيدة لإضافة Discourse Calendar، لذا نقترح عليك استخدامها.

داخليًا، نستخدم فعليًا إضافة Discourse Calendar لتنظيم الفعاليات لأعضائنا، بدلاً من هذه الإضافة. نحن ندعم حالات استخدام محددة لعدد قليل من العملاء، ونحن منفتحون على حالات استخدام محددة إذا كان لدى أي شخص أي منها، ولكن هذا كل شيء.

3 إعجابات

شكرًا لك يا أنغوس. لقد قرأت جميع تلك النصائح، وكنت أوجه لك السؤال تحديدًا لأن الأمر بدا وكأنك كنت مشاركًا في إعداد مجتمع شبكة التمكين القانوني المذكور، وأعجبتني طريقة عمله. لكنني سعيد لسماعك توصي بإضافة التقويم الرسمية؛ سأستكشف ذلك.

3 إعجابات

هل صحيح أن إضافة تقويم Discourse الرسمية لا تحتوي على شيء مثل فلتر “جدول الأعمال” في قائمة المواضيع؟ يُعد ترتيب قائمة المواضيع حسب تواريخ الأحداث الواردة في المواضيع أحد حالات الاستخدام الرئيسية التي أهتم بها. الأمر يتعلق أكثر بإدارة المشاريع (معاملة المواضيع كمهام وجدولتها وفقًا لذلك) منه بالفعاليات.

4 إعجابات

أفكّر في إضافة شيء مشابه لهذا أيضًا. هل توصلت إلى أي حلول؟

هذا ما يدور في ذهني: يجب اعتبار كل حدث ردًا، مثل تثبيت موضوع. يتحوّل زر إضافة حدث إلى قائمة منسدلة تُدرج جميع الأحداث في الموضوع.

إعجابَين (2)

سأتحقق وسأعود إليك.

إعجاب واحد (1)

نحن لا نطور ميزات جديدة لهذه الإضافة. لقد أوقفنا تطويرها لصالح ميزة الفعاليات الرسمية في إضافة discourse-calendar.

إعجابَين (2)

لا أعتقد أن هناك قائمة مواضيع بأسلوب جدول الأعمال في الإضافة الرسمية حتى الآن.

إعجاب واحد (1)

هل يعرف أحد ما إذا كان الرابط الجديد الذي كان يحتوي سابقًا على المحتوى في Pavilion قد اختفى؟

عند تشغيل هذه الإضافة في فئة مقيدة، نرى:

… لكن رابط التوثيق معطل ويؤدي إلى خطأ 404. لقد بحثت في الموقع المعني وفي هذا الموقع أيضًا، لكنني لا أعرف ما إذا كان هناك مكان آخر لهذه التعليمات للمستخدم.

إعجابَين (2)

نقلنا ذلك الموضوع إلى فئة مغلقة بطريقة ما. نحتاج إلى إعادته إلى النطاق العام. سنناقش الأمر ونعود قريبًا.

ب.م.
يجب أن تكون الصفحة قد عادت الآن.

3 إعجابات