mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 03:59:50 +08:00
23367e79ea
This adds support for a `<d-topics-list>` tag you can embed in your site that will be rendered as a list of discourse topics. Any attributes on the tag will be passed as filters. For example: `<d-topics-list discourse-url="URL" category="1234">` will filter to category 1234. To use this feature, enable the `embed topics list` site setting. Then on the site you want to embed, include the following javascript: `<script src="http://URL/javascripts/embed-topics.js"></script>` Where `URL` is your discourse forum's URL. Then include the `<d-topics-list discourse-url="URL">` tag in your HTML document and it will be replaced with the list of topics.
26 lines
668 B
Ruby
26 lines
668 B
Ruby
# frozen_string_literal: true
|
|
|
|
module TopicQueryParams
|
|
def build_topic_list_options
|
|
options = {}
|
|
params[:tags] = [params[:tag_id].parameterize] if params[:tag_id].present? && guardian.can_tag_pms?
|
|
|
|
TopicQuery.public_valid_options.each do |key|
|
|
if params.key?(key)
|
|
val = options[key] = params[key]
|
|
if !TopicQuery.validate?(key, val)
|
|
raise Discourse::InvalidParameters.new key
|
|
end
|
|
end
|
|
end
|
|
|
|
# hacky columns get special handling
|
|
options[:topic_ids] = param_to_integer_list(:topic_ids)
|
|
if options[:no_subcategories] == 'true'
|
|
options[:no_subcategories] = true
|
|
end
|
|
|
|
options
|
|
end
|
|
end
|