Feature #13088
open
CDN support to jquery/ui lib
Added by Bill Wang over 11 years ago.
Updated about 11 years ago.
Description
1. add CDN support to jquery/ui lib -> include css and image files
2. Supports multiple CDN. (Google, Microsoft, jquery.com, etc.) -> maybe from config file?
3. jQuery version is automatically detected -> no duplicated
4. Automatically fallback to local bundled if CDN is down or unreachable
- Category set to Administration
- Target version set to Candidate for next major release
1. and 4. could be integrated with something like this (from HTML5 Boilerplate)
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.0.min.js"><\/script>')</script>
2. The first line of the above mentioned code could be dynamic, which is generated depending on the settings in the administration.
There could be something like a pulldown (just local, jquery, microsoft, google, etc.)
3. Hm, well an automatic detection could be tricky. Example: jQuery updates to jQuery 2.x which possibly remove some function or change some function definition. This could break some features. I would prefer, that the developers choose which version should be used or not.
Don't forget that Redmine can be deployed on a LAN not connected to the Internet.
Etienne Massip wrote:
Don't forget that Redmine can be deployed on a LAN not connected to the Internet.
Wouldn't that match case no 4?
3. Hm, well an automatic detection could be tricky. Example: jQuery updates to jQuery 2.x which possibly remove some function or change some function definition. This could break some features. I would prefer, that the developers choose which version should be used or not.
I mean what versioin of lib we get from CDN should be same as the version from local bundled.
so it is same API whatever from CDN or local.
Etienne Massip wrote:
Don't forget that Redmine can be deployed on a LAN not connected to the Internet.
Well this would be handled by my mentioned code above. If the extern server isn't available, the local code would be handled.
OR:
See my point two. If the user selects "none", just the local source would be used.
I'm not sure Redmine should handle CDN configuration; administrators who want to have assets delivered by CDN should already be able to do such with some config:
ActionController::Base.asset_host = Proc.new { |source|
if source ~= /.*jquery.*/
"//ajax.googleapis.com/ajax/libs/jquery"
end
}
(this is a hand-written untested probably nonfunctional example)
You can add fallback mechanism, etc.
See http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html.
JQuery and JQuery-UI are merged in Redmine assets so it wouldn't work. It's hacky anyway and would make the upgrade process painfull. That's the purpose of this request to make using a CDN straightforward.
Jean-Philippe Lang wrote:
JQuery and JQuery-UI are merged in Redmine assets so it wouldn't work.
That was a non-functionnal example for demonstration purpose.
It's hacky anyway
It's Rails configuration?
and would make the upgrade process painfull.
Why would it be? Could be in config/additional_environment.rb
, couldn't it?
That's the purpose of this request to make using a CDN straightforward.
IMHO this should be handled by the Rails stack since it can be, rather than Redmine.
Sure, you can do pretty much everything in additional_environment.rb
if you know about Rails configuration (which changes quite often BTW), Ruby, regexp and all but that's not what we can call "configuration". What I see here is a way to enable a CDN by simply uncommenting something like jquery_cdn: google
in configuration.yml
.
Also available in: Atom
PDF