tinymce-rails 3.5.8 → 3.5.8.1

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.
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: