From 462198799b90ca110ac565793fcf486290cb85c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= Date: Thu, 28 Aug 2014 21:04:29 +0200 Subject: [PATCH] Dynamic asset paths everywhere * Use asset pipeline aware helpers in CSS files * Add js_image_paths to push image asset names to the client side JS --- Changelog.md | 2 ++ Gemfile | 1 + Gemfile.lock | 3 +++ app/assets/javascripts/app/app.js | 9 ++----- .../app/helpers/handlebars-helpers.js | 4 +-- .../javascripts/app/views/location_view.js | 4 +-- app/assets/javascripts/inbox.js | 2 +- app/assets/javascripts/main.js | 1 + app/assets/javascripts/mobile.js | 6 ++--- app/assets/javascripts/view.js | 2 +- .../javascripts/widgets/infinite-scroll.js | 2 +- app/assets/javascripts/widgets/lightbox.js | 2 +- app/assets/stylesheets/header.css.scss | 2 +- app/assets/stylesheets/mobile/header.css.scss | 26 +++++++++---------- .../{autoSuggest.css => autoSuggest.css.erb} | 18 ++++++------- app/helpers/layout_helper.rb | 9 ------- app/models/profile.rb | 2 +- app/views/layouts/application.html.haml | 1 - 18 files changed, 44 insertions(+), 52 deletions(-) rename app/assets/stylesheets/vendor/{autoSuggest.css => autoSuggest.css.erb} (92%) diff --git a/Changelog.md b/Changelog.md index 5c4fc0683..b0f05a979 100644 --- a/Changelog.md +++ b/Changelog.md @@ -12,6 +12,8 @@ Rails.application.config.secret_token = '***********...' Diaspora::Application.config.secret_key_base = '*************...' ``` +You also need to take care to set `RAILS_ENV` while precompiling assets: `RAILS_ENV=production bundle exec rake assets:precompile` + ## Change in defaults.yml The default for including jQuery from a CDN has changed. If you want to continue to include it from a CDN, please explicitly set the `jquery_cdn` setting to `true` in diaspora.yml. diff --git a/Gemfile b/Gemfile index c11c70b6a..446db2647 100644 --- a/Gemfile +++ b/Gemfile @@ -79,6 +79,7 @@ gem 'entypo-rails', '2.2.2' gem 'backbone-on-rails', '1.1.1' gem 'handlebars_assets', '0.12.0' gem 'jquery-rails', '3.0.4' +gem 'js_image_paths', '0.0.1' # jQuery plugins diff --git a/Gemfile.lock b/Gemfile.lock index 4fb830a3e..a1815d67c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -237,6 +237,8 @@ GEM thor (>= 0.14, < 2.0) jquery-ui-rails (4.2.1) railties (>= 3.2.16) + js_image_paths (0.0.1) + rails (~> 4.0) json (1.8.1) jwt (1.0.0) kaminari (0.16.1) @@ -535,6 +537,7 @@ DEPENDENCIES jasmine (= 2.0.2) jasmine-jquery-rails (= 2.0.3) jquery-rails (= 3.0.4) + js_image_paths (= 0.0.1) json (= 1.8.1) markerb (= 1.0.2) messagebus_ruby_api (= 1.0.3) diff --git a/app/assets/javascripts/app/app.js b/app/assets/javascripts/app/app.js index 1af41169f..1b0fddee1 100644 --- a/app/assets/javascripts/app/app.js +++ b/app/assets/javascripts/app/app.js @@ -37,11 +37,6 @@ var app = { return this._user || false }, - baseImageUrl: function(baseUrl){ - if(baseUrl) { return this._baseImageUrl = baseUrl } - return this._baseImageUrl || "assets/" - }, - initialize: function() { app.router = new app.Router(); @@ -91,8 +86,8 @@ var app = { }, setupFacebox: function() { - $.facebox.settings.closeImage = app.baseImageUrl()+'facebox/closelabel.png'; - $.facebox.settings.loadingImage = app.baseImageUrl()+'facebox/loading.gif'; + $.facebox.settings.closeImage = ImagePaths.get('facebox/closelabel.png'); + $.facebox.settings.loadingImage = ImagePaths.get('facebox/loading.gif'); $.facebox.settings.opacity = 0.75; }, diff --git a/app/assets/javascripts/app/helpers/handlebars-helpers.js b/app/assets/javascripts/app/helpers/handlebars-helpers.js index a289b5a64..617db4cb0 100644 --- a/app/assets/javascripts/app/helpers/handlebars-helpers.js +++ b/app/assets/javascripts/app/helpers/handlebars-helpers.js @@ -3,7 +3,7 @@ Handlebars.registerHelper('t', function(scope, values) { }); Handlebars.registerHelper('imageUrl', function(path){ - return app.baseImageUrl() + path; + return ImagePaths.get(path); }); Handlebars.registerHelper('linkToPerson', function(context, block) { @@ -43,4 +43,4 @@ Handlebars.registerHelper('personImage', function(person, size, imageClass) { Handlebars.registerHelper('localTime', function(timestamp) { return new Date(timestamp).toLocaleString(); -}); \ No newline at end of file +}); diff --git a/app/assets/javascripts/app/views/location_view.js b/app/assets/javascripts/app/views/location_view.js index 20a7e580a..9d2fa6564 100644 --- a/app/assets/javascripts/app/views/location_view.js +++ b/app/assets/javascripts/app/views/location_view.js @@ -8,7 +8,7 @@ app.views.Location = Backbone.View.extend({ }, render: function(){ - $(this.el).append('delete location'); + $(this.el).append('delete location'); }, getLocation: function(e){ @@ -18,7 +18,7 @@ app.views.Location = Backbone.View.extend({ locator.getAddress(function(address, latlng){ $(element).html(''); $('#location_coords').val(latlng.latitude + "," + latlng.longitude); - $(element).append('delete location'); + $(element).append('delete location'); }); }, }); diff --git a/app/assets/javascripts/inbox.js b/app/assets/javascripts/inbox.js index 3ab0c4cf5..5992ca488 100644 --- a/app/assets/javascripts/inbox.js +++ b/app/assets/javascripts/inbox.js @@ -81,7 +81,7 @@ $(document).ready(function(){ debug: false, donetext: "no more.", loadingText: "", - loadingImg: '/assets/ajax-loader.gif' + loadingImg: ImagePaths.get('ajax-loader.gif') }, function(){ $('.conversation-wrapper', '.stream').bind('mousedown', function(){ bindIt($(this)); diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js index 483ee493c..a7be4a603 100644 --- a/app/assets/javascripts/main.js +++ b/app/assets/javascripts/main.js @@ -2,6 +2,7 @@ * licensed under the Affero General Public License version 3 or later. See * the COPYRIGHT file. */ +//= require js_image_paths //= require underscore //= require backbone //= require jquery.hotkeys diff --git a/app/assets/javascripts/mobile.js b/app/assets/javascripts/mobile.js index 0ba372480..8f82388b0 100644 --- a/app/assets/javascripts/mobile.js +++ b/app/assets/javascripts/mobile.js @@ -31,12 +31,12 @@ $(document).ready(function(){ evt.preventDefault(); $("#app").toggleClass('draw'); }); - + /* Show / hide aspects in the drawer */ $('#all_aspects').bind("tap click", function(evt){ evt.preventDefault(); $("#all_aspects + li").toggleClass('hide'); - }); + }); /* Heart toggle */ $(".like_action", ".stream").bind("tap click", function(evt){ @@ -319,7 +319,7 @@ function createUploader(){ $('#publisher_textarea_wrapper').addClass("with_attachments"); $('#photodropzone').append( "
  • " + - "Ajax-loader2" + + "Ajax-loader2" + "
  • " ); }, diff --git a/app/assets/javascripts/view.js b/app/assets/javascripts/view.js index f7517b114..9d9dcf646 100644 --- a/app/assets/javascripts/view.js +++ b/app/assets/javascripts/view.js @@ -115,7 +115,7 @@ var View = { avatars: { fallback: function(evt) { - $(this).attr("src", "/assets/user/default.png"); + $(this).attr("src", ImagePaths.get("user/default.png")); }, selector: "img.avatar" } diff --git a/app/assets/javascripts/widgets/infinite-scroll.js b/app/assets/javascripts/widgets/infinite-scroll.js index dbf78b937..d0d8b472c 100644 --- a/app/assets/javascripts/widgets/infinite-scroll.js +++ b/app/assets/javascripts/widgets/infinite-scroll.js @@ -11,7 +11,7 @@ debug: false, donetext: Diaspora.I18n.t("infinite_scroll.no_more"), loadingText: "", - loadingImg: "/assets/ajax-loader.gif", + loadingImg: ImagePaths.get("ajax-loader.gif"), navSelector: "#pagination", nextSelector: ".paginate", itemSelector: ".stream_element", diff --git a/app/assets/javascripts/widgets/lightbox.js b/app/assets/javascripts/widgets/lightbox.js index d896937fc..ae9497716 100644 --- a/app/assets/javascripts/widgets/lightbox.js +++ b/app/assets/javascripts/widgets/lightbox.js @@ -176,7 +176,7 @@ jQuery.fn.center = (function() { this.resetLightbox = function() { self.lightbox.hide(); self.body.removeClass("lightboxed"); - self.image.attr("src", "assets/ajax-loader2.gif"); + self.image.attr("src", ImagePaths.get("ajax-loader2.gif")); self.imageset.html(""); }; diff --git a/app/assets/stylesheets/header.css.scss b/app/assets/stylesheets/header.css.scss index ba5c8f3f9..afe12944f 100644 --- a/app/assets/stylesheets/header.css.scss +++ b/app/assets/stylesheets/header.css.scss @@ -5,7 +5,7 @@ body > header { @include box-shadow(0,1px,3px,rgba(0,0,0,0.9)); - background: url('header-bg.png') rgb(40,35,35); + background: image-url('header-bg.png') rgb(40,35,35); z-index: 1001; padding: 6px 0; color: #CCC; diff --git a/app/assets/stylesheets/mobile/header.css.scss b/app/assets/stylesheets/mobile/header.css.scss index 20e537941..8e89ba9f5 100644 --- a/app/assets/stylesheets/mobile/header.css.scss +++ b/app/assets/stylesheets/mobile/header.css.scss @@ -5,13 +5,13 @@ header { height: 45px; top: 0px; z-index: 10; - background: url('../header-bg-long.jpg') rgb(40,35,35); + background: image-url('header-bg-long.jpg') rgb(40,35,35); @include box-shadow(0, 1px, 2px, #333); border-bottom: 1px solid #222; } #main_nav { - width: 100%; + width: 100%; #header_title { display: inline-block; @@ -32,7 +32,7 @@ header { font-weight: bold; font-size: smaller; background-color: transparent; - + img { height: 30px; width: 30px; @@ -48,7 +48,7 @@ header { background-color: $red; margin-left: -8px; } - + #conversation_icon { height: 18px; } @@ -62,7 +62,7 @@ header { width: 100%; left: 100%; background-color: #444; - + box-shadow: -2px 0px 2px 1px #333; -o-box-shadow: -2px 0px 2px 1px #333; -ms-box-shadow: -2px 0px 2px 1px #333; @@ -73,7 +73,7 @@ header { position: static; left: 100%; right: -80%; - + #global_search { position: relative; @@ -109,7 +109,7 @@ header { } } } - + nav { position: absolute; top: 45px; @@ -124,7 +124,7 @@ header { color: $light-grey; border-bottom: solid rgb(53, 53, 53) 2px; } - + li:hover { background-color: $link-grey; } @@ -132,21 +132,21 @@ header { .no_border { padding: 0px; border-bottom: 0px; - + &:hover { background-color: transparent; } - + > ul > li > a { font-size: 14px; padding: 8px 42px; } } - + .hide { display: none; } - + .avatar { height: 35px; width: 35px; @@ -154,7 +154,7 @@ header { float: right; } } - + a { display: block; color: $light-grey; diff --git a/app/assets/stylesheets/vendor/autoSuggest.css b/app/assets/stylesheets/vendor/autoSuggest.css.erb similarity index 92% rename from app/assets/stylesheets/vendor/autoSuggest.css rename to app/assets/stylesheets/vendor/autoSuggest.css.erb index 1f8df0659..96d214775 100644 --- a/app/assets/stylesheets/vendor/autoSuggest.css +++ b/app/assets/stylesheets/vendor/autoSuggest.css.erb @@ -9,13 +9,13 @@ ul.as-selections { border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; - /* 1% padding (all sides) + 98% width = 100% */ + /* 1% padding (all sides) + 98% width = 100% */ padding: 1%; width: 98%; } ul.as-selections.loading { - background: url("/assets/ajax-loader.gif") right center no-repeat; + background: url('<%= image_path("ajax-loader.gif") %>') right center no-repeat; } ul.as-selections li { @@ -171,20 +171,20 @@ li.as-result-item.active { text-shadow: 0 1px 2px #122042; } -li.as-result-item em { - font-style: normal; - background: #444; +li.as-result-item em { + font-style: normal; + background: #444; padding: 0 2px; color: #fff; } -li.as-result-item.active em { - background: #253f7a; +li.as-result-item.active em { + background: #253f7a; color: #fff; } /* Webkit Hacks */ -@media screen and (-webkit-min-device-pixel-ratio:0) { +@media screen and (-webkit-min-device-pixel-ratio:0) { ul.as-selections li.as-selection-item { padding-top: 6px; padding-bottom: 6px; @@ -218,7 +218,7 @@ ul.as-selections li.as-selection-item a.as-close { } /* Firefox 3.0 Hacks */ -ul.as-list, x:-moz-any-link, x:default { +ul.as-list, x:-moz-any-link, x:default { border: 1px solid #ccc; } BODY:first-of-type ul.as-list, x:-moz-any-link, x:default { /* Target FF 3.5+ */ diff --git a/app/helpers/layout_helper.rb b/app/helpers/layout_helper.rb index 346046511..9e9bbdf1a 100644 --- a/app/helpers/layout_helper.rb +++ b/app/helpers/layout_helper.rb @@ -19,15 +19,6 @@ module LayoutHelper pod_name end - def set_asset_host - path = AppConfig.environment.assets.host.to_s + '/assets/' - content_tag(:script) do - <<-JS.html_safe - if(window.app) app.baseImageUrl("#{path}") - JS - end - end - def load_javascript_locales(section = 'javascripts') content_tag(:script) do <<-JS.html_safe diff --git a/app/models/profile.rb b/app/models/profile.rb index 2ea8bca79..bb73d7d72 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -74,7 +74,7 @@ class Profile < ActiveRecord::Base else self[:image_url] end - result || '/assets/user/default.png' + result || ActionController::Base.helpers.image_path('user/default.png') end def from_omniauth_hash(omniauth_user_hash) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 0bac3a096..7f6a6d9fb 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -40,7 +40,6 @@ = javascript_include_tag :main, :templates = load_javascript_locales - = set_asset_host = translation_missing_warnings = current_user_atom_tag