mirror of
https://github.com/discourse/discourse.git
synced 2025-02-06 04:34:59 +08:00
35 lines
980 B
JavaScript
35 lines
980 B
JavaScript
import { registerHelper } from 'discourse-common/lib/helpers';
|
|
import PreloadStore from 'preload-store';
|
|
|
|
const _customizations = {};
|
|
|
|
export function getCustomHTML(key) {
|
|
const c = _customizations[key];
|
|
if (c) {
|
|
return new Handlebars.SafeString(c);
|
|
}
|
|
|
|
const html = PreloadStore.get("customHTML");
|
|
if (html && html[key] && html[key].length) {
|
|
return new Handlebars.SafeString(html[key]);
|
|
}
|
|
}
|
|
|
|
// Set a fragment of HTML by key. It can then be looked up with `getCustomHTML(key)`.
|
|
export function setCustomHTML(key, html) {
|
|
_customizations[key] = html;
|
|
}
|
|
|
|
registerHelper('custom-html', function([id, contextString], hash, options, env) {
|
|
const html = getCustomHTML(id);
|
|
if (html) { return html; }
|
|
|
|
if (env) {
|
|
const target = (env || contextString);
|
|
const container = target.container || target.data.view.container;
|
|
if (container.lookup('template:' + id)) {
|
|
return env.helpers.partial.helperFunction.apply(this, arguments);
|
|
}
|
|
}
|
|
});
|