mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 05:43:45 +08:00
a3e8c3cd7b
This feature introduces the concept of themes. Themes are an evolution of site customizations. Themes introduce two very big conceptual changes: - A theme may include other "child themes", children can include grand children and so on. - A theme may specify a color scheme The change does away with the idea of "enabled" color schemes. It also adds a bunch of big niceties like - You can source a theme from a git repo - History for themes is much improved - You can only have a single enabled theme. Themes can be selected by users, if you opt for it. On a technical level this change comes with a whole bunch of goodies - All CSS is now compiled using a custom pipeline that uses libsass see /lib/stylesheet - There is a single pipeline for css compilation (in the past we used one for customizations and another one for the rest of the app - The stylesheet pipeline is now divorced of sprockets, there is no reliance on sprockets for CSS bundling - CSS is generated with source maps everywhere (including themes) this makes debugging much easier - Our "live reloader" is smarter and avoid a flash of unstyled content we run a file watcher in "puma" in dev so you no longer need to run rake autospec to watch for CSS changes
75 lines
2.1 KiB
Plaintext
75 lines
2.1 KiB
Plaintext
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
|
|
<%= stylesheet_link_tag 'embed' %>
|
|
<%- unless customization_disabled? %>
|
|
<%= Theme.custom_stylesheet(session[:preview_style], :embedded) %>
|
|
<%- end %>
|
|
<%= javascript_include_tag '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() {
|
|
// Send a post message with our loaded height
|
|
postUp({type: 'discourse-resize', height: document['body'].offsetHeight});
|
|
|
|
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>
|