redmine_plugin_asset_pipeline 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8d07290f1684d5ec6bfe22814f714c95df2a63c1
4
+ data.tar.gz: 2a5f97eeb66b6db63536ac70305f136117920b8e
5
+ SHA512:
6
+ metadata.gz: 3c7ec52e075c6421346c24401dd65a167ffece1abc46fb88bb35cd32450ce022b1d6855f23054435eed520e8b84206b10be2006acb76d926bca846cdf7a8b556
7
+ data.tar.gz: 3fc74085c4002e619d9f29c227591247b8b9c9028e4670f80bef8bafac1f836115cd5b61689495f726d594a84f661181e258872425de9d67b8825368c1348c3f
@@ -1,45 +1,63 @@
1
1
  require_dependency 'application_helper'
2
2
 
3
3
  module ApplicationHelper
4
- def assets_prefix
5
- Rails.application.config.assets.prefix.gsub(/^\//, '')
6
- end
7
-
8
4
  def stylesheet_link_tag(*sources)
9
- options = sources.last.is_a?(Hash) ? sources.pop : {}
5
+ options = sources.extract_options!
10
6
  plugin = options.delete(:plugin)
11
- sources = sources.map do |source|
7
+ debug = options.key?(:debug) ? options.delete(:debug) : debug_assets?
8
+ body = options.key?(:body) ? options.delete(:body) : false
9
+ digest = options.key?(:digest) ? options.delete(:digest) : digest_assets?
10
+ sources.map! do |source|
12
11
  if plugin
13
- "/#{[assets_prefix, "#{plugin}/stylesheets/#{source}"].join('/')}"
12
+ "#{plugin}/stylesheets/#{source}"
14
13
  elsif current_theme && current_theme.stylesheets.include?(source)
15
14
  current_theme.stylesheet_path(source)
16
15
  else
17
- "/#{[assets_prefix, "stylesheets/#{source}"].join('/')}"
16
+ "stylesheets/#{source}"
18
17
  end
19
18
  end
20
- super *sources, options
19
+ sources.collect do |source|
20
+ if debug && asset = asset_for(source, 'css')
21
+ asset.to_a.map { |dep|
22
+ super(dep.pathname.to_s, { :href => asset_path(dep, :ext => 'css', :body => true, :protocol => :request, :digest => digest) }.merge!(options))
23
+ }
24
+ else
25
+ super(source.to_s, { :href => asset_path(source, :ext => 'css', :body => body, :protocol => :request, :digest => digest) }.merge!(options))
26
+ end
27
+ end.flatten.uniq.join("\n").html_safe
21
28
  end
22
29
 
23
30
  def javascript_include_tag(*sources)
24
31
  options = sources.last.is_a?(Hash) ? sources.pop : {}
25
32
  plugin = options.delete(:plugin)
26
- sources = sources.map do |source|
33
+ debug = options.key?(:debug) ? options.delete(:debug) : debug_assets?
34
+ body = options.key?(:body) ? options.delete(:body) : false
35
+ digest = options.key?(:digest) ? options.delete(:digest) : digest_assets?
36
+ sources.map! do |source|
27
37
  if plugin
28
- "/#{[assets_prefix, "#{plugin}/javascripts/#{source}"].join('/')}"
38
+ "#{plugin}/javascripts/#{source}"
29
39
  else
30
- "/#{[assets_prefix, "javascripts/#{source}"].join('/')}"
40
+ "javascripts/#{source}"
31
41
  end
32
42
  end
33
- super *sources, options
43
+ sources.collect do |source|
44
+ if debug && asset = asset_for(source, 'js')
45
+ asset.to_a.map { |dep|
46
+ super(dep.pathname.to_s, { :src => asset_path(dep, :ext => 'js', :body => true, :digest => digest) }.merge!(options))
47
+ }
48
+ else
49
+ super(source.to_s, { :src => asset_path(source, :ext => 'js', :body => body, :digest => digest) }.merge!(options))
50
+ end
51
+ end.flatten.uniq.join("\n").html_safe
34
52
  end
35
53
 
36
54
  def image_tag(source, options={})
37
55
  if plugin = options.delete(:plugin)
38
- source = "/#{[assets_prefix, "#{plugin}/images/#{source}"].join('/')}"
56
+ source = "#{plugin}/images/#{source}"
39
57
  elsif current_theme && current_theme.images.include?(source)
40
58
  source = current_theme.image_path(source)
41
59
  elsif source[0] != '/'
42
- source = "/#{[assets_prefix, "images/#{source}"].join('/')}"
60
+ source = "images/#{source}"
43
61
  end
44
62
  super source, options
45
63
  end
@@ -67,4 +85,61 @@ module ApplicationHelper
67
85
  end
68
86
  end
69
87
  end
88
+
89
+ private
90
+
91
+ # copy-paste from Sprocket
92
+ def debug_assets?
93
+ compile_assets? && (Rails.application.config.assets.debug || params[:debug_assets])
94
+ rescue NameError
95
+ false
96
+ end
97
+
98
+ def compile_assets?
99
+ Rails.application.config.assets.compile
100
+ end
101
+
102
+ def digest_assets?
103
+ Rails.application.config.assets.digest
104
+ end
105
+
106
+ def asset_path(source, options = {})
107
+ source = source.logical_path if source.respond_to?(:logical_path)
108
+ path = asset_paths.compute_public_path(source, assets_prefix, options.merge(:body => true))
109
+ options[:body] ? "#{path}?body=1" : path
110
+ end
111
+
112
+ def assets_prefix
113
+ Rails.application.config.assets.prefix.gsub(/^\//, '')
114
+ end
115
+
116
+ def asset_for(source, ext)
117
+ source = source.to_s
118
+ return nil if asset_paths.is_uri?(source)
119
+ source = rewrite_extension(source, ext)
120
+ Rails.application.assets[source]
121
+ rescue Sprockets::FileOutsidePaths
122
+ nil
123
+ end
124
+
125
+ def rewrite_extension(source, ext)
126
+ source_ext = File.extname(source)[1..-1]
127
+
128
+ if !ext || ext == source_ext
129
+ source
130
+ elsif source_ext.blank?
131
+ "#{source}.#{ext}"
132
+ elsif File.exists?(source) || exact_match_present?(source)
133
+ source
134
+ else
135
+ "#{source}.#{ext}"
136
+ end
137
+ end
138
+
139
+ def exact_match_present?(source)
140
+ pathname = Rails.application.assets.resolve(source)
141
+ pathname.to_s =~ /#{Regexp.escape(source)}\Z/
142
+ rescue Sprockets::FileNotFound
143
+ false
144
+ end
70
145
  end
@@ -1,3 +1,3 @@
1
1
  module RedminePluginAssetPipeline
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_plugin_asset_pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
5
- prerelease:
4
+ version: 0.0.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Tab10id
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-05-27 00:00:00.000000000 Z
11
+ date: 2014-08-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,17 +27,15 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  description: Asset pipeline for Redmine
@@ -67,27 +62,26 @@ files:
67
62
  homepage: https://github.com/Tab10id/redmine_plugin_asset_pipeline
68
63
  licenses:
69
64
  - MIT
65
+ metadata: {}
70
66
  post_install_message:
71
67
  rdoc_options: []
72
68
  require_paths:
73
69
  - lib
74
70
  required_ruby_version: !ruby/object:Gem::Requirement
75
- none: false
76
71
  requirements:
77
- - - ! '>='
72
+ - - '>='
78
73
  - !ruby/object:Gem::Version
79
74
  version: '0'
80
75
  required_rubygems_version: !ruby/object:Gem::Requirement
81
- none: false
82
76
  requirements:
83
- - - ! '>='
77
+ - - '>='
84
78
  - !ruby/object:Gem::Version
85
79
  version: '0'
86
80
  requirements: []
87
81
  rubyforge_project:
88
- rubygems_version: 1.8.23
82
+ rubygems_version: 2.0.2
89
83
  signing_key:
90
- specification_version: 3
84
+ specification_version: 4
91
85
  summary: Asset pipeline for Redmine
92
86
  test_files:
93
87
  - test/test_helper.rb