mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 05:40:52 +08:00
move SiteText.{head,bottom} to SiteCustomization and remove redundant SiteText.top
This commit is contained in:
parent
03b053c800
commit
6ee2849df6
|
@ -7,7 +7,12 @@
|
|||
@module Discourse
|
||||
**/
|
||||
Discourse.SiteCustomization = Discourse.Model.extend({
|
||||
trackedProperties: ['enabled', 'name', 'stylesheet', 'header', 'footer', 'mobile_stylesheet', 'mobile_header', 'mobile_footer'],
|
||||
trackedProperties: [
|
||||
'enabled', 'name',
|
||||
'stylesheet', 'header', 'footer',
|
||||
'mobile_stylesheet', 'mobile_header', 'mobile_footer',
|
||||
'head_tag', 'body_tag'
|
||||
],
|
||||
|
||||
description: function() {
|
||||
return "" + this.name + (this.enabled ? ' (*)' : '');
|
||||
|
@ -25,8 +30,10 @@ Discourse.SiteCustomization = Discourse.Model.extend({
|
|||
if (changed) { this.set('savingStatus', ''); }
|
||||
|
||||
return changed;
|
||||
|
||||
}.property('enabled', 'name', 'stylesheet', 'header', 'footer', 'mobile_stylesheet', 'mobile_header', 'mobile_footer', 'originals'),
|
||||
}.property('enabled', 'name', 'originals',
|
||||
'stylesheet', 'header', 'footer',
|
||||
'mobile_stylesheet', 'mobile_header', 'mobile_footer',
|
||||
'head_tag', 'body_tag'),
|
||||
|
||||
startTrackingChanges: function() {
|
||||
var self = this;
|
||||
|
@ -43,6 +50,7 @@ Discourse.SiteCustomization = Discourse.Model.extend({
|
|||
save: function() {
|
||||
this.set('savingStatus', I18n.t('saving'));
|
||||
this.set('saving',true);
|
||||
|
||||
var data = {
|
||||
name: this.name,
|
||||
enabled: this.enabled,
|
||||
|
@ -51,7 +59,9 @@ Discourse.SiteCustomization = Discourse.Model.extend({
|
|||
footer: this.footer,
|
||||
mobile_stylesheet: this.mobile_stylesheet,
|
||||
mobile_header: this.mobile_header,
|
||||
mobile_footer: this.mobile_footer
|
||||
mobile_footer: this.mobile_footer,
|
||||
head_tag: this.head_tag,
|
||||
body_tag: this.body_tag
|
||||
};
|
||||
|
||||
var siteCustomization = this;
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
<li><a {{bind-attr class="view.stylesheetActive:active"}} {{action "selectStylesheet" target="view"}}>{{i18n 'admin.customize.css'}}</a></li>
|
||||
<li><a {{bind-attr class="view.headerActive:active"}} {{action "selectHeader" target="view"}}>{{i18n 'admin.customize.header'}}</a></li>
|
||||
<li><a {{bind-attr class="view.footerActive:active"}} {{action "selectFooter" target="view"}}>{{i18n 'admin.customize.footer'}}</a></li>
|
||||
<li><a {{bind-attr class="view.headTagActive:active"}} {{action "selectHeadTag" target="view"}} title="{{i18n 'admin.customize.head_tag.title'}}">{{fa-icon "file-text-o"}} {{i18n 'admin.customize.head_tag.text'}}</a></li>
|
||||
<li><a {{bind-attr class="view.bodyTagActive:active"}} {{action "selectBodyTag" target="view"}} title="{{i18n 'admin.customize.body_tag.title'}}">{{fa-icon "file-text-o"}} {{i18n 'admin.customize.body_tag.text'}}</a></li>
|
||||
<li><a {{bind-attr class="view.mobileStylesheetActive:active"}} {{action "selectMobileStylesheet" target="view"}}>{{fa-icon "mobile"}} {{i18n 'admin.customize.css'}}</a></li>
|
||||
<li><a {{bind-attr class="view.mobileHeaderActive:active"}} {{action "selectMobileHeader" target="view"}}>{{fa-icon "mobile"}} {{i18n 'admin.customize.header'}}</a></li>
|
||||
<li><a {{bind-attr class="view.mobileFooterActive:active"}} {{action "selectMobileFooter" target="view"}}>{{fa-icon "mobile"}} {{i18n 'admin.customize.footer'}}</a></li>
|
||||
|
@ -37,6 +39,8 @@
|
|||
{{#if view.stylesheetActive}}{{aceEditor content=selectedItem.stylesheet mode="scss"}}{{/if}}
|
||||
{{#if view.headerActive}}{{aceEditor content=selectedItem.header mode="html"}}{{/if}}
|
||||
{{#if view.footerActive}}{{aceEditor content=selectedItem.footer mode="html"}}{{/if}}
|
||||
{{#if view.headTagActive}}{{aceEditor content=selectedItem.head_tag mode="html"}}{{/if}}
|
||||
{{#if view.bodyTagActive}}{{aceEditor content=selectedItem.body_tag mode="html"}}{{/if}}
|
||||
{{#if view.mobileStylesheetActive}}{{aceEditor content=selectedItem.mobile_stylesheet mode="scss"}}{{/if}}
|
||||
{{#if view.mobileHeaderActive}}{{aceEditor content=selectedItem.mobile_header mode="html"}}{{/if}}
|
||||
{{#if view.mobileFooterActive}}{{aceEditor content=selectedItem.mobile_footer mode="html"}}{{/if}}
|
||||
|
|
|
@ -15,6 +15,8 @@ Discourse.AdminCustomizeView = Discourse.View.extend({
|
|||
|
||||
headerActive: Em.computed.equal('selected', 'header'),
|
||||
footerActive: Em.computed.equal('selected', 'footer'),
|
||||
headTagActive: Em.computed.equal('selected', 'head_tag'),
|
||||
bodyTagActive: Em.computed.equal('selected', 'body_tag'),
|
||||
stylesheetActive: Em.computed.equal('selected', 'stylesheet'),
|
||||
mobileHeaderActive: Em.computed.equal('selected', 'mobileHeader'),
|
||||
mobileFooterActive: Em.computed.equal('selected', 'mobileFooter'),
|
||||
|
@ -23,10 +25,13 @@ Discourse.AdminCustomizeView = Discourse.View.extend({
|
|||
actions: {
|
||||
selectHeader: function() { this.set('selected', 'header'); },
|
||||
selectFooter: function() { this.set('selected', 'footer'); },
|
||||
selectHeadTag: function() { this.set('selected', 'head_tag'); },
|
||||
selectBodyTag: function() { this.set('selected', 'body_tag'); },
|
||||
selectStylesheet: function() { this.set('selected', 'stylesheet'); },
|
||||
selectMobileHeader: function() { this.set('selected', 'mobileHeader'); },
|
||||
selectMobileFooter: function() { this.set('selected', 'mobileFooter'); },
|
||||
selectMobileStylesheet: function() { this.set('selected', 'mobileStylesheet'); },
|
||||
|
||||
toggleMaximize: function() {
|
||||
this.set("maximized", !this.get("maximized"));
|
||||
|
||||
|
@ -39,16 +44,16 @@ Discourse.AdminCustomizeView = Discourse.View.extend({
|
|||
},
|
||||
},
|
||||
|
||||
didInsertElement: function() {
|
||||
_init: function() {
|
||||
var controller = this.get('controller');
|
||||
Mousetrap.bindGlobal('mod+s', function() {
|
||||
controller.send("save");
|
||||
return false;
|
||||
});
|
||||
},
|
||||
}.on("didInsertElement"),
|
||||
|
||||
willDestroyElement: function() {
|
||||
_cleanUp: function() {
|
||||
Mousetrap.unbindGlobal('mod+s');
|
||||
}
|
||||
}.on("willDestroyElement")
|
||||
|
||||
});
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<div class='container'>
|
||||
{{custom-html "top"}}
|
||||
{{global-notice}}
|
||||
{{discourse-banner user=currentUser banner=site.banner}}
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<div class='container'>
|
||||
{{custom-html "top"}}
|
||||
{{global-notice}}
|
||||
{{discourse-banner user=currentUser banner=site.banner overlay=view.hasScrolled hide=errorLoading}}
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<div class='container'>
|
||||
{{custom-html "top"}}
|
||||
{{global-notice}}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ class Admin::SiteCustomizationsController < Admin::AdminController
|
|||
params.require(:site_customization)
|
||||
.permit(:name, :stylesheet, :header, :footer,
|
||||
:mobile_stylesheet, :mobile_header, :mobile_footer,
|
||||
:head_tag, :body_tag,
|
||||
:position, :enabled, :key,
|
||||
:stylesheet_baked)
|
||||
end
|
||||
|
|
|
@ -274,10 +274,7 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
|
||||
def custom_html_json
|
||||
data = {
|
||||
top: SiteText.text_for(:top),
|
||||
footer: SiteCustomization.custom_footer(session[:preview_style])
|
||||
}
|
||||
data = { footer: SiteCustomization.custom_footer(session[:preview_style]) }
|
||||
|
||||
if DiscoursePluginRegistry.custom_html
|
||||
data.merge! DiscoursePluginRegistry.custom_html
|
||||
|
|
|
@ -77,14 +77,11 @@ class SiteCustomization < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
def self.custom_header(preview_style=nil, target=:desktop)
|
||||
preview_style ||= ENABLED_KEY
|
||||
lookup_field(preview_style, target, :header)
|
||||
end
|
||||
|
||||
def self.custom_footer(preview_style=nil, target=:dekstop)
|
||||
preview_style ||= ENABLED_KEY
|
||||
lookup_field(preview_style,target,:footer)
|
||||
%i{header footer head_tag body_tag}.each do |name|
|
||||
define_singleton_method("custom_#{name}") do |preview_style=nil, target=:desktop|
|
||||
preview_style ||= ENABLED_KEY
|
||||
lookup_field(preview_style, target, name)
|
||||
end
|
||||
end
|
||||
|
||||
def self.lookup_field(key, target, field)
|
||||
|
@ -95,20 +92,18 @@ class SiteCustomization < ActiveRecord::Base
|
|||
lookup = @cache[cache_key]
|
||||
return lookup.html_safe if lookup
|
||||
|
||||
styles =
|
||||
if key == ENABLED_KEY
|
||||
order(:name).where(enabled:true).to_a
|
||||
else
|
||||
[find_by(key: key)].compact
|
||||
end
|
||||
styles = if key == ENABLED_KEY
|
||||
order(:name).where(enabled:true).to_a
|
||||
else
|
||||
[find_by(key: key)].compact
|
||||
end
|
||||
|
||||
val =
|
||||
if styles.present?
|
||||
styles.map do |style|
|
||||
lookup = target == :mobile ? "mobile_#{field}" : field
|
||||
style.send(lookup)
|
||||
end.compact.join("\n")
|
||||
end
|
||||
val = if styles.present?
|
||||
styles.map do |style|
|
||||
lookup = target == :mobile ? "mobile_#{field}" : field
|
||||
style.send(lookup)
|
||||
end.compact.join("\n")
|
||||
end
|
||||
|
||||
(@cache[cache_key] = val || "").html_safe
|
||||
end
|
||||
|
|
|
@ -25,9 +25,6 @@ class SiteText < ActiveRecord::Base
|
|||
add_text_type :education_new_topic, default_18n_key: 'education.new-topic'
|
||||
add_text_type :education_new_reply, default_18n_key: 'education.new-reply'
|
||||
add_text_type :login_required_welcome_message, default_18n_key: 'login_required.welcome_message'
|
||||
add_text_type :top, allow_blank: true, format: :html
|
||||
add_text_type :bottom, allow_blank: true, format: :html
|
||||
add_text_type :head, allow_blank: true, format: :html
|
||||
|
||||
def site_text_type
|
||||
@site_text_type ||= SiteText.find_text_type(text_type)
|
||||
|
|
|
@ -22,7 +22,9 @@
|
|||
<%= script "admin"%>
|
||||
<%- end %>
|
||||
|
||||
<%= raw SiteText.text_for(:head) %>
|
||||
<%- unless customization_disabled? %>
|
||||
<%= raw SiteCustomization.custom_head_tag(session[:preview_style]) %>
|
||||
<%- end %>
|
||||
|
||||
<%= render_google_universal_analytics_code %>
|
||||
|
||||
|
@ -87,6 +89,8 @@
|
|||
|
||||
<%= render_google_analytics_code %>
|
||||
|
||||
<%= raw SiteText.text_for(:bottom) %>
|
||||
<%- unless customization_disabled? %>
|
||||
<%= raw SiteCustomization.custom_body_tag(session[:preview_style]) %>
|
||||
<%- end %>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
<title><%= content_for?(:title) ? yield(:title) + ' - ' + SiteSetting.title : SiteSetting.title %></title>
|
||||
<meta name="description" content="<%= @description_meta || SiteSetting.site_description %>">
|
||||
<%= render partial: "layouts/head" %>
|
||||
<%= raw SiteText.text_for(:head) %>
|
||||
<%- unless customization_disabled? %>
|
||||
<%= raw SiteCustomization.custom_head_tag(session[:preview_style]) %>
|
||||
<%- end %>
|
||||
<%= yield :head %>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
<title><%=SiteSetting.title%></title>
|
||||
<meta name="description" content="">
|
||||
<%= render partial: "layouts/head" %>
|
||||
<%= raw SiteText.text_for(:head) %>
|
||||
<%- unless customization_disabled? %>
|
||||
<%= raw SiteCustomization.custom_head_tag(session[:preview_style]) %>
|
||||
<%- end %>
|
||||
<%= yield(:no_js_head) %>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
@ -1716,6 +1716,12 @@ en:
|
|||
css: "CSS"
|
||||
header: "Header"
|
||||
footer: "Footer"
|
||||
head_tag:
|
||||
text: "</head>"
|
||||
title: "HTML that will be inserted before the </head> tag"
|
||||
body_tag:
|
||||
text: "</body>"
|
||||
title: "HTML that will be inserted before the </body> tag"
|
||||
override_default: "Do not include standard style sheet"
|
||||
enabled: "Enabled?"
|
||||
preview: "preview"
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
class AddNewSiteCustomizationTypes < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :site_customizations, :head_tag, :text
|
||||
add_column :site_customizations, :body_tag, :text
|
||||
end
|
||||
end
|
|
@ -0,0 +1,23 @@
|
|||
class MigrateSiteTextToSiteCustomization < ActiveRecord::Migration
|
||||
|
||||
def up
|
||||
execute <<-SQL
|
||||
INSERT INTO site_customizations
|
||||
(name, user_id, enabled, key, created_at, updated_at, head_tag, body_tag)
|
||||
VALUES (
|
||||
'Migrated from Site Text',
|
||||
-1,
|
||||
't',
|
||||
'#{SecureRandom.uuid}',
|
||||
now(),
|
||||
now(),
|
||||
(SELECT value FROM site_texts WHERE text_type = 'top' LIMIT 1),
|
||||
(SELECT value FROM site_texts WHERE text_type = 'bottom' LIMIT 1)
|
||||
)
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue
Block a user