redmine_plugin_asset_pipeline 0.0.9 → 0.0.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 452b31113f347e2f0993e7172270f0e70dd2e246
4
- data.tar.gz: 257c70066e8bd581bb3e4b520b8a6082ea464d5d
3
+ metadata.gz: 32c6c1262932a660105027633a4db9595fad559d
4
+ data.tar.gz: 2858b901fdcb9c87e905f11f8fc971ca3a093e7e
5
5
  SHA512:
6
- metadata.gz: a2aad88a53986b3c8063fec9bc58287c5bd7b61b0f624adf107fc5edf3785e9579ceae40438642a64421c4ad11ae4d8e3e994e6fca1511bcb2243e3600d814e4
7
- data.tar.gz: 3386b9f95bd87ee617ac2ec7da5ca8b4632926654fb73104f9f01c53b3279e495ff916e9c89a5f76de7bdeb26432e2300c0e29b51581f4df7cb11632d8c8d64a
6
+ metadata.gz: 7c4fbcc94210ccf17a0292abeef07d2751f4bcad8b4425811ca857b910baccb401ce9198b785ac2ac081e6437be0f8377cae9eea0bd2b7d92132ddbae5dd4d0a
7
+ data.tar.gz: bc4d527cf689a5547ae7921457f5204e6d1e5cdae71b14ecf81e42cc38b2aca6221a90686e0d41d4bfa85246a525525ca0a2d4420053df4d3a1db565a52951aa
data/README.md CHANGED
@@ -37,7 +37,7 @@ This plugin is only compatible with Redmine 2.1.0+. It is distributed as a ruby
37
37
 
38
38
  Add this line to your redmine's Gemfile.local:
39
39
 
40
- gem 'redmine_asset_pipeline'
40
+ gem 'redmine_plugin_asset_pipeline'
41
41
 
42
42
  And then execute:
43
43
 
@@ -3,4 +3,10 @@ Rails.configuration.before_configuration do
3
3
  unless Redmine::Plugin.included_modules.include? RedminePluginAssetPipeline::PluginPatch
4
4
  Redmine::Plugin.send(:include, RedminePluginAssetPipeline::PluginPatch)
5
5
  end
6
+ end
7
+
8
+ RedminePluginAssetPipeline.configure do |config|
9
+ if Rails.env.development?
10
+ config.use_ln = true
11
+ end
6
12
  end
@@ -1,6 +1,27 @@
1
1
  require 'redmine_plugin_asset_pipeline/version'
2
2
 
3
3
  module RedminePluginAssetPipeline
4
+ class Configuration
5
+ attr_accessor :use_ln
6
+
7
+ def initialize
8
+ @use_ln = false
9
+ end
10
+
11
+ def [](value)
12
+ self.public_send(value)
13
+ end
14
+ end
15
+
16
+ def self.configure
17
+ self.config ||= Configuration.new
18
+ yield(self.config)
19
+ end
20
+
21
+ def self.config
22
+ @config
23
+ end
24
+
4
25
  # Run the classic redmine plugin initializer after rails boot
5
26
  class Plugin < ::Rails::Engine
6
27
  config.after_initialize do
@@ -23,9 +44,34 @@ module RedminePluginAssetPipeline
23
44
  end
24
45
  end
25
46
 
47
+ #add all plugin directories in case some js/css/images are included directly or via relative css
48
+ #it also avoids Sprocket's FileOutsidePaths errors
49
+ # config.assets.paths += Dir.glob("#{config.root}/plugins/*/assets")
50
+ #add our directory
51
+ # config.assets.paths += Dir.glob("#{File.dirname(__FILE__)}/assets")
52
+ #compression
53
+ # config.assets.compress = true
54
+ # config.assets.css_compressor = :yui
55
+ # config.assets.js_compressor = :yui
56
+
57
+ # Register our processor (subclass of the standard one which adds a directive for redmine plugins)
58
+ initializer 'redmine.sprockets_processor', after: 'sprockets.environment' do
59
+ require 'redmine_plugin_asset_pipeline/sprockets_processor'
60
+ env = RedmineApp::Application.assets
61
+ env.unregister_preprocessor('text/css', Sprockets::DirectiveProcessor)
62
+ env.unregister_preprocessor('application/javascript', Sprockets::DirectiveProcessor)
63
+ env.register_preprocessor('text/css', RedminePluginAssetPipeline::SprocketsProcessor)
64
+ env.register_preprocessor('application/javascript', RedminePluginAssetPipeline::SprocketsProcessor)
65
+ end
66
+
26
67
  config.to_prepare do
27
68
  require_dependency 'redmine_plugin_asset_pipeline/application_helper_patch'
28
69
  end
70
+ end
71
+
72
+ private
29
73
 
74
+ def self.config=(value)
75
+ @config = value
30
76
  end
31
77
  end
@@ -19,10 +19,10 @@ module ApplicationHelper
19
19
  sources.collect do |source|
20
20
  if debug && asset = asset_for(source, 'css')
21
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))
22
+ super(dep.pathname.to_s, { href: asset_path(dep, ext: 'css', body: true, protocol: :request, digest: digest) }.merge!(options))
23
23
  }
24
24
  else
25
- super(source.to_s, { :href => asset_path(source, :ext => 'css', :body => body, :protocol => :request, :digest => digest) }.merge!(options))
25
+ super(source.to_s, { href: asset_path(source, ext: 'css', body: body, protocol: :request, digest: digest) }.merge!(options))
26
26
  end
27
27
  end.flatten.uniq.join("\n").html_safe
28
28
  end
@@ -43,10 +43,10 @@ module ApplicationHelper
43
43
  sources.collect do |source|
44
44
  if debug && asset = asset_for(source, 'js')
45
45
  asset.to_a.map { |dep|
46
- super(dep.pathname.to_s, { :src => asset_path(dep, :ext => 'js', :body => true, :digest => digest) }.merge!(options))
46
+ super(dep.pathname.to_s, { src: asset_path(dep, ext: 'js', body: true, digest: digest) }.merge!(options))
47
47
  }
48
48
  else
49
- super(source.to_s, { :src => asset_path(source, :ext => 'js', :body => body, :digest => digest) }.merge!(options))
49
+ super(source.to_s, { src: asset_path(source, ext: 'js', body: body, digest: digest) }.merge!(options))
50
50
  end
51
51
  end.flatten.uniq.join("\n").html_safe
52
52
  end
@@ -67,7 +67,7 @@ module ApplicationHelper
67
67
  @calendar_headers_tags_included = true
68
68
  content_for :header_tags do
69
69
  start_of_week = Setting.start_of_week
70
- start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank?
70
+ start_of_week = l(:general_first_day_of_week, default: '1') if start_of_week.blank?
71
71
  # Redmine uses 1..7 (monday..sunday) in settings and locales
72
72
  # JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0
73
73
  start_of_week = start_of_week.to_i % 7
@@ -77,7 +77,7 @@ module ApplicationHelper
77
77
  "showOn: 'button', buttonImageOnly: true, buttonImage: '" +
78
78
  path_to_image('images/calendar.png') +
79
79
  "', showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true};")
80
- jquery_locale = l('jquery.locale', :default => current_language.to_s)
80
+ jquery_locale = l('jquery.locale', default: current_language.to_s)
81
81
  unless jquery_locale == 'en'
82
82
  tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js")
83
83
  end
@@ -105,7 +105,7 @@ module ApplicationHelper
105
105
 
106
106
  def asset_path(source, options = {})
107
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))
108
+ path = asset_paths.compute_public_path(source, assets_prefix, options.merge(body: true))
109
109
  options[:body] ? "#{path}?body=1" : path
110
110
  end
111
111
 
@@ -33,38 +33,40 @@ module RedminePluginAssetPipeline
33
33
  end
34
34
  return unless File.directory?(source)
35
35
 
36
- source_files = Dir[source + "/**/*"]
37
- source_dirs = source_files.select { |d| File.directory?(d) }
38
- source_files -= source_dirs
39
-
40
- unless source_files.empty?
41
- base_target_dir = File.join(destination, File.dirname(source_files.first).gsub(source, ''))
42
- begin
43
- FileUtils.mkdir_p(base_target_dir)
44
- rescue Exception => e
45
- raise "Could not create directory #{base_target_dir}: " + e.message
36
+ if RedminePluginAssetPipeline.config.use_ln
37
+ FileUtils.ln_s(source, destination)
38
+ else
39
+ source_files = Dir[source + "/**/*"]
40
+ source_dirs = source_files.select { |d| File.directory?(d) }
41
+ source_files -= source_dirs
42
+ unless source_files.empty?
43
+ base_target_dir = File.join(destination, File.dirname(source_files.first).gsub(source, ''))
44
+ begin
45
+ FileUtils.mkdir_p(base_target_dir)
46
+ rescue Exception => e
47
+ raise "Could not create directory #{base_target_dir}: " + e.message
48
+ end
46
49
  end
47
- end
48
-
49
- source_dirs.each do |dir|
50
- # strip down these paths so we have simple, relative paths we can
51
- # add to the destination
52
- target_dir = File.join(destination, dir.gsub(source, ''))
53
- begin
54
- FileUtils.mkdir_p(target_dir)
55
- rescue Exception => e
56
- raise "Could not create directory #{target_dir}: " + e.message
50
+ source_dirs.each do |dir|
51
+ # strip down these paths so we have simple, relative paths we can
52
+ # add to the destination
53
+ target_dir = File.join(destination, dir.gsub(source, ''))
54
+ begin
55
+ FileUtils.mkdir_p(target_dir)
56
+ rescue Exception => e
57
+ raise "Could not create directory #{target_dir}: " + e.message
58
+ end
57
59
  end
58
- end
59
60
 
60
- source_files.each do |file|
61
- begin
62
- target = File.join(destination, file.gsub(source, ''))
63
- unless File.exist?(target) && FileUtils.identical?(file, target)
64
- FileUtils.cp(file, target)
61
+ source_files.each do |file|
62
+ begin
63
+ target = File.join(destination, file.gsub(source, ''))
64
+ unless File.exist?(target) && FileUtils.identical?(file, target)
65
+ FileUtils.cp(file, target)
66
+ end
67
+ rescue Exception => e
68
+ raise "Could not copy #{file} to #{target}: " + e.message
65
69
  end
66
- rescue Exception => e
67
- raise "Could not copy #{file} to #{target}: " + e.message
68
70
  end
69
71
  end
70
72
  end
@@ -0,0 +1,28 @@
1
+ module RedminePluginAssetPipeline
2
+ class SprocketsProcessor < Sprockets::DirectiveProcessor
3
+ # This processor subclasses the standard Sprockets::DirectiveProcessor
4
+ # as advised in Sprockets, to add a new directive called
5
+ # "require_redmine_plugins". This directive is relative to the
6
+ # #{Rails.root}/plugins/ directory and accepts wildcards.
7
+ #
8
+ # For convenience, it also replaces "ALL" by a star ("*") before
9
+ # evaluating the globing. Otherwise, "*/" is interpreted as the end of
10
+ # the comment in CSS files, which is obviously problematic.
11
+ #
12
+ #
13
+ # For the record, here's the example custom require provided in sprockets:
14
+ #
15
+ # def process_require_glob_directive
16
+ # Dir["#{pathname.dirname}/#{glob}"].sort.each do |filename|
17
+ # require(filename)
18
+ # end
19
+ # end
20
+
21
+ def process_require_redmine_plugins_directive(type)
22
+ mask = Rails.root.join(Redmine::Plugin.private_directory, "*/#{type}/_common_part*").expand_path
23
+ Dir.glob(mask).sort.each do |entry|
24
+ context.require_asset(pathname.dirname.join(entry).expand_path)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module RedminePluginAssetPipeline
2
- VERSION = "0.0.9"
2
+ VERSION = '0.0.10'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_plugin_asset_pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tab10id
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-13 00:00:00.000000000 Z
11
+ date: 2014-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,6 +56,7 @@ files:
56
56
  - lib/redmine_plugin_asset_pipeline.rb
57
57
  - lib/redmine_plugin_asset_pipeline/application_helper_patch.rb
58
58
  - lib/redmine_plugin_asset_pipeline/plugin_patch.rb
59
+ - lib/redmine_plugin_asset_pipeline/sprockets_processor.rb
59
60
  - lib/redmine_plugin_asset_pipeline/version.rb
60
61
  - redmine_plugin_asset_pipeline.gemspec
61
62
  - test/test_helper.rb