mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 06:49:14 +08:00
FIX: use CDN for user card/profile background and user avatars (for real this time)
This commit is contained in:
parent
4a2786dbf2
commit
6a68e8c272
|
@ -24,6 +24,12 @@ window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, {
|
|||
return u + url;
|
||||
},
|
||||
|
||||
getURLWithCDN: function(url) {
|
||||
url = this.getURL(url);
|
||||
if (Discourse.CDN) { url = Discourse.CDN + url; }
|
||||
return url;
|
||||
},
|
||||
|
||||
Resolver: DiscourseResolver,
|
||||
|
||||
_titleChanged: function() {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
var esc = Handlebars.Utils.escapeExpression;
|
||||
|
||||
Discourse.BBCode.register('quote', {noWrap: true, singlePara: true}, function(contents, bbParams, options) {
|
||||
var params = {'class': 'quote'},
|
||||
username = null;
|
||||
|
|
|
@ -72,10 +72,9 @@ Discourse.User = Discourse.Model.extend({
|
|||
@type {String}
|
||||
**/
|
||||
profileBackground: function() {
|
||||
var background = this.get('profile_background');
|
||||
if(Em.isEmpty(background) || !Discourse.SiteSettings.allow_profile_backgrounds) { return; }
|
||||
|
||||
return 'background-image: url(' + background + ')';
|
||||
var url = this.get('profile_background');
|
||||
if (Em.isEmpty(url) || !Discourse.SiteSettings.allow_profile_backgrounds) { return; }
|
||||
return 'background-image: url(' + Discourse.getURLWithCDN(url) + ')';
|
||||
}.property('profile_background'),
|
||||
|
||||
/**
|
||||
|
@ -442,6 +441,7 @@ Discourse.User.reopenClass(Discourse.Singleton, {
|
|||
|
||||
avatarTemplate: function(username, uploadedAvatarId) {
|
||||
var url;
|
||||
|
||||
if (uploadedAvatarId) {
|
||||
url = "/user_avatar/" +
|
||||
Discourse.BaseUrl +
|
||||
|
@ -456,11 +456,7 @@ Discourse.User.reopenClass(Discourse.Singleton, {
|
|||
Discourse.LetterAvatarVersion + ".png";
|
||||
}
|
||||
|
||||
url = Discourse.getURL(url);
|
||||
if (Discourse.CDN) {
|
||||
url = Discourse.CDN + url;
|
||||
}
|
||||
return url;
|
||||
return Discourse.getURLWithCDN(url);
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -11,6 +11,7 @@ export default Discourse.View.extend(CleansUp, {
|
|||
|
||||
addBackground: function() {
|
||||
var url = this.get('controller.user.card_background');
|
||||
|
||||
if (!this.get('allowBackgrounds')) { return; }
|
||||
|
||||
var $this = this.$();
|
||||
|
@ -19,7 +20,7 @@ export default Discourse.View.extend(CleansUp, {
|
|||
if (Ember.isEmpty(url)) {
|
||||
$this.css('background-image', '').addClass('no-bg');
|
||||
} else {
|
||||
$this.css('background-image', "url(" + url + ")").removeClass('no-bg');
|
||||
$this.css('background-image', "url(" + Discourse.getURLWithCDN(url) + ")").removeClass('no-bg');
|
||||
}
|
||||
}.observes('controller.user.card_background'),
|
||||
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
require 'v8'
|
||||
require 'nokogiri'
|
||||
require_dependency 'url_helper'
|
||||
require_dependency 'excerpt_parser'
|
||||
require_dependency 'post'
|
||||
|
||||
module PrettyText
|
||||
|
||||
class Helpers
|
||||
include UrlHelper
|
||||
|
||||
def t(key, opts)
|
||||
key = "js." + key
|
||||
|
@ -21,15 +23,15 @@ module PrettyText
|
|||
# function here are available to v8
|
||||
def avatar_template(username)
|
||||
return "" unless username
|
||||
|
||||
user = User.find_by(username_lower: username.downcase)
|
||||
user.avatar_template if user.present?
|
||||
return "" unless user.present?
|
||||
schemaless absolute user.avatar_template
|
||||
end
|
||||
|
||||
def is_username_valid(username)
|
||||
return false unless username
|
||||
username = username.downcase
|
||||
return User.exec_sql('SELECT 1 FROM users WHERE username_lower = ?', username).values.length == 1
|
||||
User.exec_sql('SELECT 1 FROM users WHERE username_lower = ?', username).values.length == 1
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -128,7 +130,9 @@ module PrettyText
|
|||
context.eval("Discourse.SiteSettings = #{SiteSetting.client_settings_json};")
|
||||
context.eval("Discourse.CDN = '#{Rails.configuration.action_controller.asset_host}';")
|
||||
context.eval("Discourse.BaseUrl = 'http://#{RailsMultisite::ConnectionManagement.current_hostname}';")
|
||||
context.eval("Discourse.getURL = function(url) {return '#{Discourse::base_uri}' + url};")
|
||||
|
||||
context.eval("Discourse.getURL = function(url) { return '#{Discourse::base_uri}' + url };")
|
||||
context.eval("Discourse.getURLWithCDN = function(url) { url = Discourse.getURL(url); if (Discourse.CDN) { url = Discourse.CDN + url; } return url; };")
|
||||
end
|
||||
|
||||
def self.markdown(text, opts=nil)
|
||||
|
|
|
@ -12,20 +12,20 @@ describe PrettyText do
|
|||
|
||||
before(:each) do
|
||||
eviltrout = User.new
|
||||
eviltrout.stubs(:avatar_template).returns("http://test.localhost/uploads/default/avatars/42d/57c/46ce7ee487/{size}.png")
|
||||
eviltrout.stubs(:avatar_template).returns("//test.localhost/uploads/default/avatars/42d/57c/46ce7ee487/{size}.png")
|
||||
User.expects(:find_by).with(username_lower: "eviltrout").returns(eviltrout)
|
||||
end
|
||||
|
||||
it "produces a quote even with new lines in it" do
|
||||
expect(PrettyText.cook("[quote=\"EvilTrout, post:123, topic:456, full:true\"]ddd\n[/quote]")).to match_html "<aside class=\"quote\" data-post=\"123\" data-topic=\"456\" data-full=\"true\"><div class=\"title\">\n<div class=\"quote-controls\"></div>\n<img width=\"20\" height=\"20\" src=\"http://test.localhost/uploads/default/avatars/42d/57c/46ce7ee487/40.png\" class=\"avatar\">EvilTrout:</div>\n<blockquote><p>ddd</p></blockquote></aside>"
|
||||
expect(PrettyText.cook("[quote=\"EvilTrout, post:123, topic:456, full:true\"]ddd\n[/quote]")).to match_html "<aside class=\"quote\" data-post=\"123\" data-topic=\"456\" data-full=\"true\"><div class=\"title\">\n<div class=\"quote-controls\"></div>\n<img width=\"20\" height=\"20\" src=\"//test.localhost/uploads/default/avatars/42d/57c/46ce7ee487/40.png\" class=\"avatar\">EvilTrout:</div>\n<blockquote><p>ddd</p></blockquote></aside>"
|
||||
end
|
||||
|
||||
it "should produce a quote" do
|
||||
expect(PrettyText.cook("[quote=\"EvilTrout, post:123, topic:456, full:true\"]ddd[/quote]")).to match_html "<aside class=\"quote\" data-post=\"123\" data-topic=\"456\" data-full=\"true\"><div class=\"title\">\n<div class=\"quote-controls\"></div>\n<img width=\"20\" height=\"20\" src=\"http://test.localhost/uploads/default/avatars/42d/57c/46ce7ee487/40.png\" class=\"avatar\">EvilTrout:</div>\n<blockquote><p>ddd</p></blockquote></aside>"
|
||||
expect(PrettyText.cook("[quote=\"EvilTrout, post:123, topic:456, full:true\"]ddd[/quote]")).to match_html "<aside class=\"quote\" data-post=\"123\" data-topic=\"456\" data-full=\"true\"><div class=\"title\">\n<div class=\"quote-controls\"></div>\n<img width=\"20\" height=\"20\" src=\"//test.localhost/uploads/default/avatars/42d/57c/46ce7ee487/40.png\" class=\"avatar\">EvilTrout:</div>\n<blockquote><p>ddd</p></blockquote></aside>"
|
||||
end
|
||||
|
||||
it "trims spaces on quote params" do
|
||||
expect(PrettyText.cook("[quote=\"EvilTrout, post:555, topic: 666\"]ddd[/quote]")).to match_html "<aside class=\"quote\" data-post=\"555\" data-topic=\"666\"><div class=\"title\">\n<div class=\"quote-controls\"></div>\n<img width=\"20\" height=\"20\" src=\"http://test.localhost/uploads/default/avatars/42d/57c/46ce7ee487/40.png\" class=\"avatar\">EvilTrout:</div>\n<blockquote><p>ddd</p></blockquote></aside>"
|
||||
expect(PrettyText.cook("[quote=\"EvilTrout, post:555, topic: 666\"]ddd[/quote]")).to match_html "<aside class=\"quote\" data-post=\"555\" data-topic=\"666\"><div class=\"title\">\n<div class=\"quote-controls\"></div>\n<img width=\"20\" height=\"20\" src=\"//test.localhost/uploads/default/avatars/42d/57c/46ce7ee487/40.png\" class=\"avatar\">EvilTrout:</div>\n<blockquote><p>ddd</p></blockquote></aside>"
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user