FEATURE: Embed topics list on remote sites via Javascript API. (#8008)

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.
This commit is contained in:
Robin Ward
2019-08-15 13:41:06 -04:00
committed by GitHub
parent fafc6bcde0
commit 23367e79ea
12 changed files with 171 additions and 29 deletions

View File

@ -24,17 +24,20 @@
window.onload = function() {
// get state info from data attribute
var header = document.querySelector("header");
var embedState = document.querySelector("[data-embed-state]");
var state = "unknown";
if (header) {
state = header.getAttribute("data-embed-state");
var embedId = null;
if (embedState) {
state = embedState.getAttribute("data-embed-state");
embedId = embedState.getAttribute("data-embed-id");
}
// Send a post message with our loaded height and state
postUp({
type: "discourse-resize",
height: document["body"].offsetHeight,
state: state
state,
embedId
});
var postLinks = document.querySelectorAll("a[data-link-to-post]"),