tinymce-rails 3.5.8 → 3.5.8.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -49,3 +49,8 @@ task :process do
49
49
  end
50
50
  end
51
51
  end
52
+
53
+
54
+ require 'rspec/core/rake_task'
55
+ RSpec::Core::RakeTask.new(:spec)
56
+ task :default => :spec
@@ -1,5 +1,5 @@
1
1
  window.tinyMCEPreInit = window.tinyMCEPreInit || {
2
- base: '<%= TinyMCE::Rails::Engine.config.tinymce.base || asset_path("tinymce", :digest => false) %>',
2
+ base: '<%= TinyMCE::Rails::Engine.base %>',
3
3
  query: '<%= TinyMCE::Rails::VERSION %>',
4
4
  suffix: ''
5
5
  };
@@ -1,7 +1,11 @@
1
- Rake::Task['assets:precompile:primary'].enhance do
2
- assets = File.expand_path(File.dirname(__FILE__) + "/../../vendor/assets/javascripts/tinymce")
3
- target = File.join(Rails.public_path, Rails.application.config.assets.prefix)
1
+ assets_task = Rake::Task.task_defined?('assets:precompile:primary') ? 'assets:precompile:primary' : 'assets:precompile'
4
2
 
5
- mkdir_p target
6
- cp_r assets, target, :preserve => true
3
+ Rake::Task[assets_task].enhance do
4
+ require "tinymce/rails/asset_installer"
5
+
6
+ config = Rails.application.config
7
+ target = File.join(Rails.public_path, config.assets.prefix)
8
+ manifest = config.assets.manifest
9
+
10
+ TinyMCE::Rails::AssetInstaller.new(target, manifest).install
7
11
  end
@@ -8,5 +8,9 @@ module TinyMCE
8
8
  def self.configuration
9
9
  @configuration ||= Configuration.load(::Rails.root.join("config/tinymce.yml"))
10
10
  end
11
+
12
+ def self.configuration=(configuration)
13
+ @configuration = configuration
14
+ end
11
15
  end
12
16
  end
@@ -0,0 +1,66 @@
1
+ require "tinymce/rails/asset_manifest"
2
+
3
+ module TinyMCE
4
+ module Rails
5
+ class AssetInstaller
6
+ ASSETS = Pathname.new(File.expand_path(File.dirname(__FILE__) + "/../../../vendor/assets/javascripts/tinymce"))
7
+
8
+ def initialize(target, manifest_path)
9
+ @target = target
10
+ @manifest_path = manifest_path || target
11
+ end
12
+
13
+ def install
14
+ cleanup_assets
15
+ copy_assets
16
+ append_to_manifest
17
+
18
+ manifest.write
19
+ end
20
+
21
+ private
22
+ def manifest
23
+ @manifest ||= AssetManifest.load(@manifest_path)
24
+ end
25
+
26
+ def cleanup_assets
27
+ manifest.each(/^tinymce\//) do |asset|
28
+ manifest.remove(asset) if index_asset?(asset)
29
+
30
+ manifest.remove_digest(asset) do |src, dest|
31
+ move_asset(src, dest)
32
+ end
33
+ end
34
+ end
35
+
36
+ def copy_assets
37
+ FileUtils.cp_r(ASSETS, @target, :preserve => true)
38
+ end
39
+
40
+ def append_to_manifest
41
+ asset_files.each do |file|
42
+ manifest.append(logical_path(file), file)
43
+ end
44
+ end
45
+
46
+ def asset_files
47
+ Pathname.glob("#{ASSETS}/**/*").select(&:file?)
48
+ end
49
+
50
+ def logical_path(file)
51
+ file.relative_path_from(ASSETS.parent).to_s
52
+ end
53
+
54
+ def move_asset(src, dest)
55
+ src = File.join(@target, src)
56
+ dest = File.join(@target, dest)
57
+
58
+ FileUtils.mv(src, dest, :force => true) if src != dest && File.exists?(src)
59
+ end
60
+
61
+ def index_asset?(asset)
62
+ asset =~ /\/index\.js$/
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,122 @@
1
+ require "multi_json"
2
+
3
+ module TinyMCE
4
+ module Rails
5
+ class AssetManifest
6
+ def self.load(manifest_path)
7
+ YamlManifest.try(manifest_path) ||
8
+ JsonManifest.try(manifest_path) ||
9
+ NullManifest.new
10
+ end
11
+ end
12
+ end
13
+
14
+ class YamlManifest
15
+ def self.try(manifest_path)
16
+ yaml_file = File.join(manifest_path, "manifest.yml")
17
+ new(yaml_file) if File.exists?(yaml_file)
18
+ end
19
+
20
+ def initialize(file)
21
+ @file = file
22
+ @manifest = YAML.load_file(file)
23
+ end
24
+
25
+ def append(logical_path, file)
26
+ @manifest[logical_path] = logical_path
27
+ end
28
+
29
+ def remove(logical_path)
30
+ @manifest.delete(logical_path)
31
+ end
32
+
33
+ def remove_digest(logical_path)
34
+ if digested = @manifest[logical_path]
35
+ @manifest[logical_path] = logical_path
36
+ yield digested, logical_path if block_given?
37
+ end
38
+ end
39
+
40
+ def each(pattern)
41
+ @manifest.each_key do |asset|
42
+ yield asset if asset =~ pattern
43
+ end
44
+ end
45
+
46
+ def to_s
47
+ dump
48
+ end
49
+
50
+ def dump(io=nil)
51
+ YAML.dump(@manifest, io)
52
+ end
53
+
54
+ def write
55
+ File.open(@file, "wb") { |f| dump(f) }
56
+ end
57
+ end
58
+
59
+ class JsonManifest
60
+ def self.try(manifest_path)
61
+ paths = Dir[File.join(manifest_path, "manifest*.json")]
62
+ new(paths.first) if paths.any?
63
+ end
64
+
65
+ def initialize(file)
66
+ @file = file
67
+ @manifest = MultiJson.load(File.read(file))
68
+ end
69
+
70
+ def append(logical_path, file)
71
+ stat = File.stat(file)
72
+
73
+ @manifest["assets"][logical_path] = logical_path
74
+ @manifest["files"][logical_path] = {
75
+ "logical_path" => logical_path,
76
+ "mtime" => stat.mtime.iso8601,
77
+ "size" => stat.size,
78
+ "digest" => nil
79
+ }
80
+ end
81
+
82
+ def remove(logical_path)
83
+ if digested = @manifest["assets"].delete(logical_path)
84
+ @manifest["files"].delete(digested)
85
+ end
86
+ end
87
+
88
+ def remove_digest(logical_path)
89
+ if digested = @manifest["assets"][logical_path]
90
+ @manifest["assets"][logical_path] = logical_path
91
+ @manifest["files"][logical_path] = @manifest["files"].delete(digested).tap { |f| f["digest"] = nil }
92
+ yield digested, logical_path if block_given?
93
+ end
94
+ end
95
+
96
+ def each(pattern)
97
+ @manifest["assets"].each_key do |asset|
98
+ yield asset if asset =~ pattern
99
+ end
100
+ end
101
+
102
+ def to_s
103
+ dump
104
+ end
105
+
106
+ def dump
107
+ MultiJson.dump(@manifest)
108
+ end
109
+
110
+ def write
111
+ File.open(@file, "wb") { |f| f.write(dump) }
112
+ end
113
+ end
114
+
115
+ class NullManifest
116
+ def append(*); end
117
+ def remove(*); end
118
+ def remove_digest(*); end
119
+ def each(*); end
120
+ def write; end
121
+ end
122
+ end
@@ -14,5 +14,13 @@ module TinyMCE::Rails
14
14
  include Helper
15
15
  end
16
16
  end
17
+
18
+ def self.base
19
+ config.tinymce.base || default_base
20
+ end
21
+
22
+ def self.default_base
23
+ File.join(Rails.application.config.relative_url_root || "", Rails.application.config.assets.prefix || "/", "tinymce")
24
+ end
17
25
  end
18
26
  end
@@ -1,3 +1,5 @@
1
+ require 'active_support/core_ext/hash/keys'
2
+
1
3
  module TinyMCE::Rails
2
4
  module Helper
3
5
  # Initializes TinyMCE on the current page based on the global configuration.
@@ -20,6 +22,7 @@ module TinyMCE::Rails
20
22
  # Returns the JavaScript code required to initialize TinyMCE.
21
23
  def tinymce_javascript(config=:default, options={})
22
24
  options, config = config, :default if config.is_a?(Hash)
25
+ options.stringify_keys!
23
26
 
24
27
  base_configuration = TinyMCE::Rails.configuration
25
28
 
@@ -1,6 +1,6 @@
1
1
  module TinyMCE
2
2
  module Rails
3
- VERSION = "3.5.8"
3
+ VERSION = "3.5.8.1"
4
4
  TINYMCE_VERSION = "3.5.8"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tinymce-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.8
4
+ version: 3.5.8.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-23 00:00:00.000000000 Z
12
+ date: 2013-03-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -41,6 +41,8 @@ files:
41
41
  - app/assets/javascripts/tinymce-jquery.js
42
42
  - app/assets/javascripts/tinymce.js
43
43
  - lib/tasks/tinymce-assets.rake
44
+ - lib/tinymce/rails/asset_installer.rb
45
+ - lib/tinymce/rails/asset_manifest.rb
44
46
  - lib/tinymce/rails/configuration.rb
45
47
  - lib/tinymce/rails/engine.rb
46
48
  - lib/tinymce/rails/helper.rb
@@ -331,4 +333,3 @@ signing_key:
331
333
  specification_version: 3
332
334
  summary: Rails asset pipeline integration for TinyMCE.
333
335
  test_files: []
334
- has_rdoc: