about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorGô Shoemake <marrus-sh@users.noreply.github.com>2017-07-30 10:28:21 -0700
committerOndřej Hruška <ondra@ondrovo.com>2017-07-30 19:28:21 +0200
commitb61e3daf983d87c6d2de7e54d420c2e8f5a531e6 (patch)
tree97836a37b38cc664862f9a6ebda311e3410df09c /app
parent6ff084dbbb06e5c2f131546829066435f2bf8f8a (diff)
Multiple frontend support (#110)
* Initial multiple frontend support

* Removed unnecessary require()

* Moved styles/images out of common
Diffstat (limited to 'app')
-rw-r--r--app/controllers/home_controller.rb1
-rw-r--r--app/javascript/packs/application.js6
-rw-r--r--app/javascript/packs/common.js7
-rw-r--r--app/javascript/packs/frontends/mastodon.js16
-rw-r--r--app/javascript/styles/application.scss3
-rw-r--r--app/javascript/styles/common.scss5
-rw-r--r--app/views/home/index.html.haml4
-rwxr-xr-xapp/views/layouts/application.html.haml3
8 files changed, 35 insertions, 10 deletions
diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb
index 1585bc810..fbfb5473e 100644
--- a/app/controllers/home_controller.rb
+++ b/app/controllers/home_controller.rb
@@ -6,6 +6,7 @@ class HomeController < ApplicationController
 
   def index
     @body_classes = 'app-body'
+    @frontend     = (params[:frontend] and Rails.configuration.x.available_frontends.include? params[:frontend] + '.js') ? params[:frontend] : 'mastodon'
   end
 
   private
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
index 116632dea..c06714dc1 100644
--- a/app/javascript/packs/application.js
+++ b/app/javascript/packs/application.js
@@ -1,5 +1,11 @@
 import loadPolyfills from '../mastodon/load_polyfills';
 
+// import default stylesheet with variables
+require('font-awesome/css/font-awesome.css');
+require('mastodon-application-style');
+
+require.context('../images/', true);
+
 loadPolyfills().then(() => {
   require('../mastodon/main').default();
 }).catch(e => {
diff --git a/app/javascript/packs/common.js b/app/javascript/packs/common.js
index ba7053f1f..de0c68fa5 100644
--- a/app/javascript/packs/common.js
+++ b/app/javascript/packs/common.js
@@ -1,9 +1,6 @@
 import { start } from 'rails-ujs';
 
-// import default stylesheet with variables
-require('font-awesome/css/font-awesome.css');
-require('mastodon-application-style');
-
-require.context('../images/', true);
+// import common styling
+require('../styles/common.scss');
 
 start();
diff --git a/app/javascript/packs/frontends/mastodon.js b/app/javascript/packs/frontends/mastodon.js
new file mode 100644
index 000000000..a983de36f
--- /dev/null
+++ b/app/javascript/packs/frontends/mastodon.js
@@ -0,0 +1,16 @@
+// This file replaces `app/javascript/packs/application.js` for use
+// with multiple frontends.
+
+import loadPolyfills from '../../mastodon/load_polyfills';
+
+// import default stylesheet with variables
+require('font-awesome/css/font-awesome.css');
+require('mastodon-application-style');
+
+require.context('../../images/', true);
+
+loadPolyfills().then(() => {
+  require('../../mastodon/main').default();
+}).catch(e => {
+  console.error(e);
+});
diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss
index b08b69449..33c7783f3 100644
--- a/app/javascript/styles/application.scss
+++ b/app/javascript/styles/application.scss
@@ -1,9 +1,6 @@
 @import 'mixins';
 @import 'variables';
 @import 'variables-glitch';
-@import 'fonts/roboto';
-@import 'fonts/roboto-mono';
-@import 'fonts/montserrat';
 
 @import 'reset';
 @import 'basics';
diff --git a/app/javascript/styles/common.scss b/app/javascript/styles/common.scss
new file mode 100644
index 000000000..c1772e7ae
--- /dev/null
+++ b/app/javascript/styles/common.scss
@@ -0,0 +1,5 @@
+// This makes our fonts available everywhere.
+
+@import 'fonts/roboto';
+@import 'fonts/roboto-mono';
+@import 'fonts/montserrat';
diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml
index 1ed5c1ae0..ec6e53461 100644
--- a/app/views/home/index.html.haml
+++ b/app/views/home/index.html.haml
@@ -2,8 +2,8 @@
   %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key}
   %script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json)
 
-  = javascript_pack_tag 'application', integrity: true, crossorigin: 'anonymous'
-  = stylesheet_pack_tag 'application', media: 'all'
+  = javascript_pack_tag "frontends/#{@frontend}", integrity: true, crossorigin: 'anonymous'
+  = stylesheet_pack_tag "frontends/#{@frontend}", integrity: true, media: 'all'
 
 .app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
   %noscript
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 82b20810a..399d70bc0 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -32,6 +32,9 @@
     = javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous'
     = csrf_meta_tags
 
+    - if controller_name != 'home'
+      = stylesheet_pack_tag 'application', integrity: true, media: 'all'
+
     = yield :header_tags
 
   - body_classes ||= @body_classes