New Topic Header Button

Полагаю, наилучшим поведением будет запуск композера с пустой категорией, если у пользователя нет прав на создание новой темы в текущей? Возможно, с модальным окном и уведомлением об этом.

Я тоже хотел иметь эту функциональность, поэтому я сделал форк репозитория и настроил отображение кнопки «Новая тема» как для анонимных, так и для авторизованных пользователей. Если анонимный пользователь нажимает на кнопку, его перенаправляют на модальное окно входа/регистрации.

Репозиторий: GitHub - Peterlollo/discourse-new-topic-button-for-all-users-theme-component: Adds new topic button to header and shows it to every user regardless of logged in status · GitHub

2 лайка

Некоторые имена классов устарели, поэтому стили отображаются не так, как задумано. Добавлен pull request для их обновления: FIX: update declarations by nolosb · Pull Request #6 · discourse/discourse-new-topic-button-theme-component · GitHub

4 лайка

Возможно ли обновить этот плагин до новой версии?

1 лайк

Я только что объединил рефакторинг этого компонента, чтобы он работал с этими обновлениями: Upcoming Header Changes - Preparing Themes and Plugins

Компонент должен функционировать как и раньше, с небольшими улучшениями (он будет отражать состояние черновика и реагировать на текущие разрешения для категорий и тегов). Если вы заметите какие-либо новые проблемы, пожалуйста, сообщите нам.

5 лайков

Я только что добавил новую настройку show_to_anon (по умолчанию отключена), которая реализует это.

3 лайка

Насколько «реализуемо» было бы добавить выпадающее меню, аналогичное компоненту выпадающего мастера в nolo’s dropdown wizard component?

Поскольку мы используем пользовательский мастер для создания новых тем в конкретных категориях, мы хотели бы по сути связать их с выпадающими меню. Кроме того, мы также хотели бы добавить в кнопку ссылки, доступные только сотрудникам (например, «Новая категория» и «Новая группа»).

Привет! Я не могу использовать бесплатный иконку “pencil” из Font Awesome в этом компоненте, даже после добавления её в настройки “подмножество SVG-икон”. Есть какие-то идеи?

1 лайк

Похоже, что в версии 5 бесплатной иконки pencil нет.

Кажется, в v5 для иконки карандаша используется pencil-alt.

4 лайка

Спасибо! Работает!

2 лайка

Пост был перенесен в новую тему: Кнопка «Без новой темы»

Привет,

Возможно ли обновить TC с помощью нового чернового обновления?

Спасибо

2 лайка

Запрос: добавить возможность настройки цветов кнопки (фон, текст и иконка) для светлой и тёмной тем. Поскольку создание новых тем способствует росту сообщества, цветная кнопка будет иметь больший визуальный эффект.

Спасибо

Это довольно легко сделать с помощью CSS:

(с помощью CSS можно нацеливаться на тёмную и светлую темы)


редактирование: добавляю правильный пример

#new-create-topic {
    background-color: light-dark(red,green);
}

Это установит цвет кнопки в красный для светлой темы и в зелёный для тёмной темы.

2 лайка

Я всё ещё не знаком с CSS в Discourse. Я знаком с CSS, но просто ещё не начал изучать его в контексте Discourse.
Где и как это добавить?

Я всё ещё считаю, что это может быть функцией, позволяющей избежать усложнения, и для людей, которые совсем не знакомы с CSS, это просто упростит настройку компонента.

1 лайк

Либо в вашей теме (темах), либо в новом компоненте темы — который затем должен быть включен в вашу тему (темы):


Я добавил CSS-код в своём сообщении выше.

1 лайк

Я также тестировал :hover, и он работает для кнопки и текста, но не для иконки, если только я не навожу курсор непосредственно на саму иконку. Подскажите, как настроить стилизацию иконки при наведении на кнопку, даже если курсор мыши находится не над иконкой?

#new-create-topic:hover {
    background-color: light-dark(red,red);
    color: light-dark(red,white);
}

#new-create-topic .d-icon:hover {
    color: light-dark(red,white);
}
1 лайк

Ваше второе правило означает, что вы нацеливаетесь на иконку при наведении на неё, а не на кнопку.

Используя синтаксис SCSS, который:

#new-create-topic:hover {
    background-color: light-dark(red,red);
    color: light-dark(red,white);
}
#new-create-topic:hover .d-icon {
    color: light-dark(red,white);
}

(также нет необходимости использовать light-dark(red,red);, если вы применяете один и тот же цвет для светлой и тёмной тем)

Я рекомендую SCSS, так как с ним проще привести наш удобный код в порядок, но это требует изучения чего-то нового 😄
#new-create-topic:hover {
    background-color: light-dark(red,red);
    .d-icon, & {
        color: light-dark(red,white);
    }
}
1 лайк

Вы правы. Моя ошибка… Спасибо!

Это просто тесты. На самом деле я использую тему по умолчанию и не знаю, поддерживает ли она оба варианта?

Что касается SCSS, я изучил его несколько лет назад, но он мне никогда по-настоящему не пригодился, так как я не разработчик. Я часто использую HTML и CSS, поэтому мне они более знакомы.

1 лайк

Я нашел этот код для внесения такого изменения, но не уверен, что это лучший способ его реализовать:

<script type="text/discourse-plugin" version="0.8">
  api.onPageChange(() => {
    const newTopicButton = document.querySelector('.header-create-topic');
    const draftsButton = document.querySelector('.topic-drafts-menu-trigger');

    if (newTopicButton && draftsButton && !document.querySelector('.fk-header-buttons')) {
      const wrapper = document.createElement('div');
      wrapper.className = 'fk-header-buttons';

      const parent = newTopicButton.parentNode;
      parent.insertBefore(wrapper, newTopicButton);

      wrapper.appendChild(newTopicButton);
      wrapper.appendChild(draftsButton);
    }
  });
</script>
```