discourse/app/views/layouts/embed.html.erb
Osama Sayegh 0b7ed8ffaf FEATURE: backend support for user-selectable components
* FEATURE: backend support for user-selectable components

* fix problems with previewing default theme

* rename preview_key => preview_theme_id

* omit default theme from child themes dropdown and try a different fix

* cache & freeze stylesheets arrays
2018-08-08 14:46:34 +10:00

82 lines
2.4 KiB
Plaintext

<!DOCTYPE html>
<html<%= raw @embeddable_css_class -%>>
<head>
<meta charset="utf-8">
<%= discourse_stylesheet_link_tag 'embed', theme_ids: nil %>
<%- unless customization_disabled? %>
<%= discourse_stylesheet_link_tag :embedded_theme %>
<%- end %>
<%= preload_script 'break_string' %>
<%- if @topic_view && @topic_view.page_title.present? %>
<title><%= @topic_view.page_title %> - <%= SiteSetting.title %></title>
<%- end %>
<script>
(function() {
function postUp(msg) {
if (parent) {
parent.postMessage(msg, '<%= request.referer %>');
}
}
function clickPostLink(e) {
var postId = e.target.getAttribute('data-link-to-post');
if (postId) {
var postElement = document.getElementById('post-' + postId);
if (postElement) {
var rect = postElement.getBoundingClientRect();
if (rect && rect.top) {
postUp({type: 'discourse-scroll', top: rect.top});
e.preventDefault();
return false;
}
}
}
}
window.onload = function() {
// get state info from data attribute
var header = document.querySelector('header');
var state = 'unknown';
if (header) {
state = header.getAttribute('data-embed-state');
}
// Send a post message with our loaded height and state
postUp({type: 'discourse-resize', height: document['body'].offsetHeight, state: state});
var postLinks = document.querySelectorAll("a[data-link-to-post]"),
i;
for (i=0; i<postLinks.length; i++) {
postLinks[i].onclick = clickPostLink;
}
// Make sure all links in the iframe point to _blank
var cookedLinks = document.querySelectorAll('.cooked a');
for (i=0; i<cookedLinks.length; i++) {
cookedLinks[i].target = "_blank";
}
// Adjust all names
var names = document.querySelectorAll('.username a');
for (i=0; i<names.length; i++) {
var username = names[i].innerHTML;
if (username) {
names[i].innerHTML = new BreakString(username).break();
}
}
};
})();
</script>
</head>
<body>
<%= yield %>
</body>
</html>