تحويل زر "New Topic" ليحتوي على قائمة فرعية

مرحباً يا رفاق،

هل يعرف أي شخص كيف يمكنني جعل زر “موضوع جديد” يحتوي على قائمة فرعية في فئات معينة؟

لدي حاليًا هذا

لكن كنت آمل في الحصول على شيء كهذا عند النقر على زر “موضوع جديد”

يمكنني التفكير في عدد قليل من الطرق للقيام بذلك ولكن لست متأكدًا مما إذا كنت أفكر كثيرًا، وإخفاء الزر الافتراضي وإضافة زر جديد بالكامل مع القائمة المنسدلة كان أحد الأفكار التي خطرت ببالي.

هذا هو الكود الحالي الذي لدي، قبل أن أفعله بالطريقة التي قلتها، هل هناك طريقة لإضافة إدخال قائمة بسهولة؟

<script type="text/x-handlebars" data-template-name="/connectors/before-create-topic-button/syncbutton">
  <button onclick="window.location.href='/w/issue-with-sync3'" class="btn-default btn btn-icon-text ember-view customnewtopicbtn" title="إنشاء موضوع جديد باستخدام نموذج مشكلة SYNC 3">
    <svg class="fa d-icon d-icon-plus svg-icon svg-string" xmlns="http://www.w3.org/2000/svg">
      <use xlink:href="#plus"></use>
    </svg>
    <span class="d-button-label">مشكلة مزامنة جديدة</span>
  </button>
</script>

أيضًا، إذا قمت بإخفاء زر “إنشاء موضوع”، فهل هناك أي متغير أو دالة يمكنني استخدامها لاسترداد رابط زر “موضوع جديد”؟

تعديل: أو بالأحرى، كيف يتم فتح قسم “موضوع جديد”، اعتقدت أنه سيكون من خلال النقر على الزر المطابق لمعرف أو فئة ولكن يبدو أن هذا ليس هو الحال؟

شكرا

إعجابَين (2)

يمكنك إلقاء نظرة على مكون السمة هذا:

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

3 إعجابات

شكراً، قد ينجح هذا، سأبحث في الأمر.

أعتقد أن مشكلتي الآن هي كيفية وضع ذلك في أزرار قائمة الموضوعات، حيث يبدو أنه لا يمكنك استخدام DecorateWidget مع منافذ الإضافات.

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

آه نعم، الآن أتذكر لماذا لم أنشره.. كنت لا أزال أرغب في جعله أكثر مرونة وتقديم إمكانية إدراج الزر في أماكن مختلفة. لكنني لم أكتشف كيفية إضافة الأداة عندما يكون هناك منفذ إضافي فقط. ربما يعرف شخص ما نهجًا جيدًا لهذا؟

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

هههه :slight_smile: وجدت هذا، لكن مهاراتي ليست حقًا في جافاسكريبت :ضحك: لذلك لست متأكدًا مما إذا كان أي فائدة

عمل رائع حتى الآن :slight_smile:

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

أوه، لقد فعلت شيئًا كهذا الأسبوع الماضي…

في سمة، يمكنك إضافة هذا إلى javascripts/discourse/components/new-topic-dropdown.js

import { action } from "@ember/object";
import { getOwner } from "discourse-common/lib/get-owner";
import Composer from "discourse/models/composer";
import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box";
import { computed } from "@ember/object";

export default DropdownSelectBoxComponent.extend({
  classNames: ["new-topic-dropdown"],

  selectKitOptions: {
    icons: ["plus"],
    showFullTitle: true,
    autoFilterable: false,
    filterable: false,
    showCaret: true,
    none: "topic.create",
  },

  content: computed(function () {
    const items = [
      {
        id: "new_discussion",
        name: "New Topic",
        description: "Start a new discussion",
        icon: "comment",
      },
    ];

    items.push({
      id: "new_ticket",
      name: "Support ticket",
      description: "Start a support request",
      icon: "tag",
    });

    return items;
  }),

  @action
  onChange(selectedAction) {
    const composerController = getOwner(this).lookup("controller:composer");

    let tags = null;
    let categoryId = this.category ? this.category.id : null;

    if (selectedAction === "new_ticket") {
      tags = "ticket";
    }

    composerController.open({
      action: Composer.CREATE_TOPIC,
      draftKey: Composer.DRAFT,
      categoryId: categoryId,
      tags: tags,
    });
  },
});

هذا يضيف خيارات “موضوع جديد” و “تذكرة دعم” إلى زر القائمة المنسدلة… “موضوع جديد” يفتح المنشئ كالمعتاد، و “تذكرة دعم” يفتح المنشئ مع إضافة العلامة “تذكرة”.

… ثم في javascripts/discourse/connectors/after-create-topic-button/new-topic-dropdown.hbs

{{#if currentUser}}
  {{new-topic-dropdown category=category}}
{{/if}}

… ثم مع بعض CSS، ستحتاج على الأرجح إلى إخفاء الزر الافتراضي:

.navigation-controls {
  #create-topic {
    display: none;
  }
}
19 إعجابًا

أسطورة حقيقية :slight_smile: شكراً

3 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.