redmine_plugin_asset_pipeline 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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