ckeditor 3.6.3 → 3.7.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. data/Gemfile +1 -1
  2. data/README.rdoc +14 -24
  3. data/app/assets/javascripts/ckeditor/application.js +5 -0
  4. data/app/assets/stylesheets/ckeditor/application.css +6 -0
  5. data/app/controllers/ckeditor/{base_controller.rb → application_controller.rb} +1 -2
  6. data/app/controllers/ckeditor/attachment_files_controller.rb +2 -2
  7. data/app/controllers/ckeditor/pictures_controller.rb +2 -2
  8. data/app/views/ckeditor/shared/_asset.html.erb +2 -2
  9. data/app/views/ckeditor/shared/_asset_tmpl.html.erb +1 -1
  10. data/app/views/layouts/{ckeditor.html.erb → ckeditor/application.html.erb} +4 -12
  11. data/config/locales/sv-SE.ckeditor.yml +8 -0
  12. data/config/locales/zh-CN.ckeditor.yml +8 -0
  13. data/config/routes.rb +3 -5
  14. data/lib/ckeditor.rb +2 -16
  15. data/lib/ckeditor/engine.rb +4 -1
  16. data/lib/ckeditor/hooks/formtastic.rb +9 -12
  17. data/lib/ckeditor/orm/active_record.rb +1 -1
  18. data/lib/ckeditor/utils.rb +14 -7
  19. data/lib/ckeditor/version.rb +1 -1
  20. data/lib/generators/ckeditor/install_generator.rb +48 -55
  21. data/lib/generators/ckeditor/templates/{models/active_record → active_record}/carrierwave/ckeditor/asset.rb +0 -0
  22. data/lib/generators/ckeditor/templates/{models/mongoid → active_record}/carrierwave/ckeditor/attachment_file.rb +1 -4
  23. data/lib/generators/ckeditor/templates/{models/active_record → active_record}/carrierwave/ckeditor/picture.rb +0 -0
  24. data/lib/generators/ckeditor/templates/{models/active_record → active_record}/carrierwave/migration.rb +0 -0
  25. data/lib/generators/ckeditor/templates/{models/active_record → active_record}/paperclip/ckeditor/asset.rb +0 -0
  26. data/lib/generators/ckeditor/templates/{models/active_record → active_record}/paperclip/ckeditor/attachment_file.rb +1 -4
  27. data/lib/generators/ckeditor/templates/{models/active_record → active_record}/paperclip/ckeditor/picture.rb +0 -0
  28. data/lib/generators/ckeditor/templates/{models/active_record → active_record}/paperclip/migration.rb +0 -0
  29. data/lib/generators/ckeditor/templates/{models/base → base}/carrierwave/uploaders/ckeditor_attachment_file_uploader.rb +0 -0
  30. data/lib/generators/ckeditor/templates/{models/base → base}/carrierwave/uploaders/ckeditor_picture_uploader.rb +0 -0
  31. data/lib/generators/ckeditor/templates/ckeditor.rb +0 -3
  32. data/lib/generators/ckeditor/templates/{models/mongoid → mongoid}/carrierwave/ckeditor/asset.rb +0 -0
  33. data/lib/generators/ckeditor/templates/{models/active_record → mongoid}/carrierwave/ckeditor/attachment_file.rb +1 -4
  34. data/lib/generators/ckeditor/templates/{models/mongoid → mongoid}/carrierwave/ckeditor/picture.rb +0 -0
  35. data/lib/generators/ckeditor/templates/{models/mongoid → mongoid}/paperclip/ckeditor/asset.rb +0 -0
  36. data/lib/generators/ckeditor/templates/{models/mongoid → mongoid}/paperclip/ckeditor/attachment_file.rb +1 -4
  37. data/lib/generators/ckeditor/templates/{models/mongoid → mongoid}/paperclip/ckeditor/picture.rb +0 -0
  38. data/test/ckeditor_test.rb +0 -14
  39. data/test/controllers/attachment_files_controller_test.rb +2 -0
  40. data/test/controllers/pictures_controller_test.rb +3 -0
  41. data/test/dummy/Rakefile +1 -1
  42. data/test/dummy/app/assets/javascripts/application.js +11 -0
  43. data/test/dummy/app/assets/stylesheets/application.css +7 -0
  44. data/test/dummy/{public → app/assets}/stylesheets/scaffold.css +0 -0
  45. data/test/dummy/app/views/layouts/application.html.erb +3 -3
  46. data/test/dummy/config/application.rb +11 -12
  47. data/test/dummy/config/boot.rb +7 -6
  48. data/test/dummy/config/database.yml +11 -0
  49. data/test/dummy/config/environments/development.rb +7 -3
  50. data/test/dummy/config/environments/production.rb +23 -12
  51. data/test/dummy/config/environments/test.rb +5 -1
  52. data/test/dummy/config/initializers/secret_token.rb +1 -1
  53. data/test/dummy/config/initializers/session_store.rb +1 -1
  54. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  55. data/test/dummy/config/locales/en.yml +1 -1
  56. data/test/dummy/config/routes.rb +2 -0
  57. data/test/dummy/db/test.sqlite3 +0 -0
  58. data/test/dummy/log/test.log +3681 -6331
  59. data/test/generators/install_generator_test.rb +58 -15
  60. data/test/integration/posts_test.rb +5 -5
  61. data/test/models/attachment_file_test.rb +3 -1
  62. data/test/models/picture_test.rb +1 -0
  63. data/test/models/utils_test.rb +19 -0
  64. data/test/support/controller_hooks.rb +27 -0
  65. data/test/support/routes.txt +4 -0
  66. data/test/test_helper.rb +0 -1
  67. data/test/tmp/app/models/ckeditor/attachment_file.rb +1 -4
  68. data/test/tmp/config/initializers/ckeditor.rb +18 -0
  69. data/test/tmp/config/routes.rb +6 -0
  70. metadata +185 -236
  71. data/lib/generators/ckeditor/models_generator.rb +0 -70
  72. data/lib/generators/ckeditor/templates/ckeditor/config.js +0 -65
  73. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/gal_add.jpg +0 -0
  74. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/gal_add.png +0 -0
  75. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/gal_del.png +0 -0
  76. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/gal_more.gif +0 -0
  77. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/preloader.gif +0 -0
  78. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/thumbs/ckfnothumb.gif +0 -0
  79. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/thumbs/mp3.gif +0 -0
  80. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/thumbs/pdf.gif +0 -0
  81. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/thumbs/rar.gif +0 -0
  82. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/thumbs/swf.gif +0 -0
  83. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/thumbs/xls.gif +0 -0
  84. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/javascripts/application.js +0 -223
  85. data/lib/generators/ckeditor/templates/ckeditor/filebrowser/stylesheets/uploader.css +0 -115
  86. data/lib/generators/ckeditor/templates/ckeditor/plugins/attachment/dialogs/attachment.js +0 -1
  87. data/lib/generators/ckeditor/templates/ckeditor/plugins/attachment/images/attachment.png +0 -0
  88. data/lib/generators/ckeditor/templates/ckeditor/plugins/attachment/lang/en.js +0 -10
  89. data/lib/generators/ckeditor/templates/ckeditor/plugins/attachment/lang/ru.js +0 -10
  90. data/lib/generators/ckeditor/templates/ckeditor/plugins/attachment/lang/uk.js +0 -10
  91. data/lib/generators/ckeditor/templates/ckeditor/plugins/attachment/plugin.js +0 -1
  92. data/lib/generators/ckeditor/templates/ckeditor/plugins/embed/dialogs/embed.js +0 -1
  93. data/lib/generators/ckeditor/templates/ckeditor/plugins/embed/images/embed.png +0 -0
  94. data/lib/generators/ckeditor/templates/ckeditor/plugins/embed/lang/en.js +0 -9
  95. data/lib/generators/ckeditor/templates/ckeditor/plugins/embed/lang/ru.js +0 -9
  96. data/lib/generators/ckeditor/templates/ckeditor/plugins/embed/lang/uk.js +0 -9
  97. data/lib/generators/ckeditor/templates/ckeditor/plugins/embed/plugin.js +0 -1
  98. data/test/dummy/db/schema.rb +0 -36
  99. data/test/dummy/public/javascripts/application.js +0 -2
  100. data/test/dummy/public/javascripts/controls.js +0 -965
  101. data/test/dummy/public/javascripts/dragdrop.js +0 -974
  102. data/test/dummy/public/javascripts/effects.js +0 -1123
  103. data/test/dummy/public/javascripts/prototype.js +0 -6001
  104. data/test/dummy/public/javascripts/rails.js +0 -191
  105. data/test/generators/models_generator_test.rb +0 -61
  106. data/test/routes_test.rb +0 -47
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem "rails", "3.0.9"
5
+ gem "rails", "3.1.3"
6
6
 
7
7
  platforms :mri_18 do
8
8
  group :test do
@@ -5,7 +5,7 @@ the results users have when publishing it. It brings to the web common editing f
5
5
 
6
6
  == Features
7
7
 
8
- * Rails 3 integration
8
+ * Rails 3.1 integration
9
9
  * Files browser
10
10
  * HTML5 files uploader
11
11
  * Hooks for formtastic and simple_form forms generators
@@ -14,23 +14,13 @@ the results users have when publishing it. It brings to the web common editing f
14
14
 
15
15
  == Install
16
16
 
17
- gem install ckeditor
17
+ Rails 3.1:
18
18
 
19
- Or via bundler:
19
+ gem "ckeditor", "3.7.0.rc1"
20
20
 
21
- gem "ckeditor"
21
+ Rails <= 3.0:
22
22
 
23
- === Download ckeditor
24
-
25
- rails generate ckeditor:install
26
-
27
- You can pass version of ckeditor to download (http://ckeditor.com/download/releases):
28
-
29
- rails generate ckeditor:install --version=3.5.4
30
-
31
- === Install destination
32
-
33
- rails generate ckeditor:install --path=public/assets
23
+ gem "ckeditor", "3.6.3"
34
24
 
35
25
  === Now generate models for store uploading files
36
26
 
@@ -40,27 +30,27 @@ For active_record orm is used paperclip gem (it's by default).
40
30
 
41
31
  gem "paperclip"
42
32
 
43
- rails generate ckeditor:models --orm=active_record --backend=paperclip
33
+ rails generate ckeditor:install --orm=active_record --backend=paperclip
44
34
 
45
35
  ==== ActiveRecord + carrierwave
46
36
 
47
37
  gem "carrierwave"
48
38
  gem "mini_magick"
49
39
 
50
- rails generate ckeditor:models --orm=active_record --backend=carrierwave
40
+ rails generate ckeditor:install --orm=active_record --backend=carrierwave
51
41
 
52
42
  ==== Mongoid + paperclip
53
43
 
54
44
  gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
55
45
 
56
- rails generate ckeditor:models --orm=mongoid --backend=paperclip
46
+ rails generate ckeditor:install --orm=mongoid --backend=paperclip
57
47
 
58
48
  ==== Mongoid + carrierwave
59
49
 
60
50
  gem "carrierwave-mongoid", :require => 'carrierwave/mongoid'
61
51
  gem "mini_magick"
62
52
 
63
- rails generate ckeditor:models --orm=mongoid --backend=carrierwave
53
+ rails generate ckeditor:install --orm=mongoid --backend=carrierwave
64
54
 
65
55
  Available orms:
66
56
  * active_record
@@ -74,14 +64,14 @@ Autoload ckeditor models folder (application.rb):
74
64
 
75
65
  == Usage
76
66
 
77
- Include ckeditor javascripts:
67
+ Include ckeditor javascripts rails 3.1:
78
68
 
79
- <%= javascript_include_tag :ckeditor %>
69
+ //= require ckeditor/ckeditor
80
70
 
81
- or (for rails 3.1):
71
+ Rails <= 3.0:
72
+
73
+ <%= javascript_include_tag :ckeditor %>
82
74
 
83
- <%= javascript_include_tag "/javascripts/ckeditor/ckeditor.js" %>
84
-
85
75
  Form helpers:
86
76
 
87
77
  cktext_area_tag("test_area", "Ckeditor is the best")
@@ -0,0 +1,5 @@
1
+ //= require ckeditor/filebrowser/javascripts/jquery.min.js
2
+ //= require ckeditor/filebrowser/javascripts/jquery.tmpl.min.js
3
+ //= require ckeditor/filebrowser/javascripts/fileuploader.js
4
+ //= require ckeditor/filebrowser/javascripts/rails.js
5
+ //= require ckeditor/filebrowser/javascripts/application.js
@@ -0,0 +1,6 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+ *= require ckeditor/filebrowser/stylesheets/uploader.css
6
+ */
@@ -1,6 +1,5 @@
1
- class Ckeditor::BaseController < ApplicationController
1
+ class Ckeditor::ApplicationController < ::ApplicationController
2
2
  respond_to :html, :json
3
- layout "ckeditor"
4
3
 
5
4
  before_filter :set_locale
6
5
  before_filter :find_asset, :only => [:destroy]
@@ -1,4 +1,4 @@
1
- class Ckeditor::AttachmentFilesController < Ckeditor::BaseController
1
+ class Ckeditor::AttachmentFilesController < Ckeditor::ApplicationController
2
2
 
3
3
  def index
4
4
  @attachments = Ckeditor.attachment_file_model.find_all(ckeditor_attachment_files_scope)
@@ -12,7 +12,7 @@ class Ckeditor::AttachmentFilesController < Ckeditor::BaseController
12
12
 
13
13
  def destroy
14
14
  @attachment.destroy
15
- respond_with(@attachment, :location => ckeditor_attachment_files_path)
15
+ respond_with(@attachment, :location => attachment_files_path)
16
16
  end
17
17
 
18
18
  protected
@@ -1,4 +1,4 @@
1
- class Ckeditor::PicturesController < Ckeditor::BaseController
1
+ class Ckeditor::PicturesController < Ckeditor::ApplicationController
2
2
 
3
3
  def index
4
4
  @pictures = Ckeditor.picture_model.find_all(ckeditor_pictures_scope)
@@ -12,7 +12,7 @@ class Ckeditor::PicturesController < Ckeditor::BaseController
12
12
 
13
13
  def destroy
14
14
  @picture.destroy
15
- respond_with(@picture, :location => ckeditor_pictures_path)
15
+ respond_with(@picture, :location => pictures_path)
16
16
  end
17
17
 
18
18
  protected
@@ -1,5 +1,5 @@
1
1
  <%= content_tag(:div, :id => dom_id(asset), :class => "gal-item", :"data-url" => asset.url_content) do %>
2
- <%= link_to image_tag("#{Ckeditor.relative_path}/ckeditor/filebrowser/images/gal_del.png",
2
+ <%= link_to image_tag("/assets/ckeditor/filebrowser/images/gal_del.png",
3
3
  :title => I18n.t('ckeditor.buttons.delete')),
4
4
  polymorphic_path(asset, :format => :json),
5
5
  :remote => true,
@@ -13,7 +13,7 @@
13
13
  <div class="img-name"><%= asset.filename %></div>
14
14
  <div class="time-size">
15
15
  <div class="time"><%= asset.format_created_at %></div>
16
- <div class="fileupload-size size"><%= number_to_human_size(asset.size) %></div>
16
+ <div class="fileupload-size size"><%= number_to_human_size(asset.size) if asset.size %></div>
17
17
  </div>
18
18
  </div>
19
19
  </div>
@@ -1,6 +1,6 @@
1
1
  <script id="fileupload_tmpl" type="text/x-jquery-tmpl">
2
2
  <div id="asset_${id}" class="gal-item" data-url="${url_content}">
3
- <%= link_to image_tag("#{Ckeditor.relative_path}/ckeditor/filebrowser/images/gal_del.png",
3
+ <%= link_to image_tag("/assets/ckeditor/filebrowser/images/gal_del.png",
4
4
  :title => I18n.t('ckeditor.buttons.delete')),
5
5
  "/ckeditor/${controller}/${id}.json",
6
6
  :remote => true,
@@ -6,18 +6,10 @@
6
6
  <%= csrf_meta_tag %>
7
7
  <%= tag(:meta, :name => "ckeditor-path", :content => Ckeditor.relative_path) %>
8
8
  <title><%= I18n.t('page_title', :scope => [:ckeditor]) %></title>
9
- <link href="<%= Ckeditor.relative_path %>/ckeditor/filebrowser/stylesheets/uploader.css" type="text/css" rel="stylesheet">
10
- <style type="text/css">
11
- .gal-holder .gal-item .gal-upload-holder .add {
12
- background: url(<%= Ckeditor.relative_path %>/ckeditor/filebrowser/images/gal_add.png) no-repeat left center;
13
- }
14
- .gal-more a {
15
- background: url(<%= Ckeditor.relative_path %>/ckeditor/filebrowser/images/gal_more.gif) no-repeat left center;
16
- }
17
- </style>
18
- <% ["jquery.js", "jquery.tmpl.js", "fileuploader.js", "rails.js", "application.js"].each do |js| %>
19
- <script src="<%= Ckeditor.relative_path %>/ckeditor/filebrowser/javascripts/<%= js %>" type="text/javascript"></script>
20
- <% end %>
9
+
10
+ <%= stylesheet_link_tag "ckeditor/application" %>
11
+ <%= javascript_include_tag "ckeditor/application" %>
12
+
21
13
  <script type="text/javascript">
22
14
  var CKEditorFuncNum = $.QueryString["CKEditorFuncNum"];
23
15
  var CKEditorName = $.QueryString["CKEditor"];
@@ -0,0 +1,8 @@
1
+ "sv-SE":
2
+ ckeditor:
3
+ page_title: "CKEditor filhanterare"
4
+ confirm_delete: "Ta bort fil?"
5
+ buttons:
6
+ cancel: "Avbryt"
7
+ upload: "Ladda upp"
8
+ delete: "Ta bort"
@@ -0,0 +1,8 @@
1
+ zh-CN:
2
+ ckeditor:
3
+ page_title: "CKEditor - 文件管理"
4
+ confirm_delete: "删除文件?"
5
+ buttons:
6
+ cancel: "取消"
7
+ upload: "上传"
8
+ delete: "删除"
@@ -1,6 +1,4 @@
1
- Rails.application.routes.draw do
2
- namespace :ckeditor, :only => [:index, :create, :destroy] do
3
- resources :pictures
4
- resources :attachment_files
5
- end
1
+ Ckeditor::Engine.routes.draw do
2
+ resources :pictures, :only => [:index, :create, :destroy]
3
+ resources :attachment_files, :only => [:index, :create, :destroy]
6
4
  end
@@ -14,7 +14,6 @@ module Ckeditor
14
14
  end
15
15
 
16
16
  module Hooks
17
- autoload :FormtasticBuilder, 'ckeditor/hooks/formtastic'
18
17
  autoload :SimpleFormBuilder, 'ckeditor/hooks/simple_form'
19
18
  end
20
19
 
@@ -34,8 +33,8 @@ module Ckeditor
34
33
  @@attachment_file_types = ["doc", "docx", "xls", "odt", "ods", "pdf", "rar", "zip", "tar", "tar.gz", "swf"]
35
34
 
36
35
  # Ckeditor files destination path
37
- mattr_accessor :path
38
- @@path = 'public/javascripts'
36
+ mattr_accessor :relative_path
37
+ @@relative_path = '/assets/ckeditor'
39
38
 
40
39
  # Default way to setup Ckeditor. Run rails generate ckeditor to create
41
40
  # a fresh initializer with all configuration values.
@@ -50,19 +49,6 @@ module Ckeditor
50
49
  def self.attachment_file_model
51
50
  Ckeditor::AttachmentFile.to_adapter
52
51
  end
53
-
54
- def self.relative_path
55
- @@relative_path ||= File.join("/", Rails.root.join(path).relative_path_from(public_path).to_s)
56
- end
57
-
58
- def self.public_path
59
- Rails.root.join('public')
60
- end
61
-
62
- def self.path=(value)
63
- @@relative_path = nil
64
- @@path = value
65
- end
66
52
  end
67
53
 
68
54
  require 'ckeditor/engine'
@@ -1,7 +1,10 @@
1
1
  require 'rails'
2
+ require 'ckeditor'
2
3
 
3
4
  module Ckeditor
4
5
  class Engine < ::Rails::Engine
6
+ isolate_namespace Ckeditor
7
+
5
8
  config.action_view.javascript_expansions[:ckeditor] = "ckeditor/ckeditor"
6
9
 
7
10
  initializer "ckeditor.helpers" do
@@ -18,7 +21,7 @@ module Ckeditor
18
21
 
19
22
  initializer "ckeditor.hooks" do
20
23
  if Object.const_defined?("Formtastic")
21
- ::Formtastic::SemanticFormBuilder.send :include, Ckeditor::Hooks::FormtasticBuilder
24
+ require "ckeditor/hooks/formtastic"
22
25
  end
23
26
 
24
27
  if Object.const_defined?("SimpleForm")
@@ -1,15 +1,12 @@
1
- module Ckeditor
2
- module Hooks
3
- module FormtasticBuilder
4
- def self.included(base)
5
- base.send(:include, InstanceMethods)
6
- end
7
-
8
- module InstanceMethods
9
- def ckeditor_input(method, options)
10
- basic_input_helper(:cktext_area, :text, method, options)
11
- end
12
- end
1
+ require "formtastic"
2
+
3
+ class CkeditorInput
4
+ include ::Formtastic::Inputs::Base
5
+
6
+ def to_html
7
+ input_wrapping do
8
+ label_html <<
9
+ builder.cktext_area(method, input_html_options)
13
10
  end
14
11
  end
15
12
  end
@@ -12,7 +12,7 @@ module Ckeditor
12
12
  module ClassMethods
13
13
  def self.extended(base)
14
14
  base.class_eval do
15
- set_table_name "ckeditor_assets"
15
+ self.table_name = "ckeditor_assets"
16
16
 
17
17
  belongs_to :assetable, :polymorphic => true
18
18
 
@@ -13,11 +13,6 @@ module Ckeditor
13
13
  [basename.parameterize('_'), extension].join.downcase
14
14
  end
15
15
 
16
- def extract(filepath, output)
17
- # TODO: need check system OS
18
- system("tar --exclude=*.php --exclude=*.asp -C '#{output}' -xzf '#{filepath}' ckeditor/")
19
- end
20
-
21
16
  def js_replace(dom_id, options = {})
22
17
  js_options = applay_options(options)
23
18
  js = ["if (CKEDITOR.instances['#{dom_id}']) {CKEDITOR.remove(CKEDITOR.instances['#{dom_id}']);}"]
@@ -48,7 +43,7 @@ module Ckeditor
48
43
 
49
44
  js_options = applay_options(options)
50
45
 
51
- "$(document).ready(function(){ new qq.FileUploaderInput({ #{js_options} }); });"
46
+ "$(document).ready(function(){ new qq.FileUploaderInput({ #{js_options} }); });".html_safe
52
47
  end
53
48
 
54
49
  def applay_options(options)
@@ -66,11 +61,23 @@ module Ckeditor
66
61
  else value
67
62
  end
68
63
 
69
- str << "#{key}: #{item}"
64
+ str << %Q{"#{key}": #{item}}
70
65
  end
71
66
 
72
67
  str.sort.join(',')
73
68
  end
69
+
70
+ def filethumb(filename)
71
+ extname = filename.blank? ? "unknown" : File.extname(filename).gsub(/^\./, '')
72
+ image = "#{extname}.gif"
73
+ source = File.expand_path("../../../vendor/assets/javascripts/ckeditor/filebrowser/images/thumbs", __FILE__)
74
+
75
+ unless File.exists?(File.join(source, image))
76
+ image = "unknown.gif"
77
+ end
78
+
79
+ File.join(Ckeditor.relative_path, "filebrowser/images/thumbs", image)
80
+ end
74
81
  end
75
82
  end
76
83
  end
@@ -1,6 +1,6 @@
1
1
  module Ckeditor
2
2
  module Version
3
- GEM = "3.6.3".freeze
3
+ GEM = "3.7.0.rc1".freeze
4
4
  EDITOR = "3.6.2".freeze
5
5
  end
6
6
  end
@@ -1,85 +1,78 @@
1
1
  require 'rails/generators'
2
- require 'fileutils'
2
+ require 'rails/generators/migration'
3
3
 
4
4
  module Ckeditor
5
5
  module Generators
6
6
  class InstallGenerator < Rails::Generators::Base
7
- class_option :version, :type => :string, :default => Ckeditor::Version::EDITOR,
8
- :desc => "Version of ckeditor which be install (by default #{Ckeditor::Version::EDITOR})"
7
+ include Rails::Generators::Migration
9
8
 
10
- class_option :orm, :type => :string, :default => 'active_record',
11
- :desc => "Backend processor for upload support (by default active_record)"
9
+ desc "Generates migration for Asset (Picture, AttachmentFile) models"
10
+
11
+ # ORM configuration
12
+ class_option :orm, :type => :string, :default => "active_record",
13
+ :desc => "Backend processor for upload support"
14
+
15
+ class_option :backend, :type => :string, :default => 'paperclip',
16
+ :desc => "Paperclip (by default) or carrierwave"
12
17
 
13
- class_option :path, :type => :string, :default => Ckeditor.path,
14
- :desc => "Ckeditor install directory destination (by default #{Ckeditor.path})"
15
-
16
- desc "Download and install ckeditor into destination folder"
17
-
18
18
  def self.source_root
19
19
  @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
20
20
  end
21
21
 
22
+ def self.next_migration_number(dirname)
23
+ Time.now.strftime("%Y%m%d%H%M%S")
24
+ end
25
+
22
26
  # copy configuration
23
27
  def copy_initializer
24
28
  template "ckeditor.rb", "config/initializers/ckeditor.rb"
25
29
  end
30
+
31
+ def mount_engine
32
+ route "mount Ckeditor::Engine => '/ckeditor'"
33
+ end
26
34
 
27
- # copy ckeditor files
28
- def install_ckeditor
29
- say_status("fetching #{filename}", "", :green)
30
-
31
- in_root do
32
- filepath = "tmp/#{filename}"
33
- get(download_url, filepath)
34
-
35
- if File.exist?(filepath)
36
- FileUtils.mkdir_p(install_dir)
37
- Ckeditor::Utils.extract(filepath, install_dir)
38
- FileUtils.rm_rf(filepath)
39
- end
35
+ def create_models
36
+ [:asset, :picture, :attachment_file].each do |filename|
37
+ template "#{generator_dir}/ckeditor/#{filename}.rb",
38
+ File.join('app/models', ckeditor_dir, "#{filename}.rb")
40
39
  end
41
- end
42
-
43
- def update_javascripts
44
- in_root do
45
- directory "ckeditor/filebrowser", "#{install_dir}/ckeditor/filebrowser"
46
- directory "ckeditor/plugins", "#{install_dir}/ckeditor/plugins"
47
- copy_file "ckeditor/config.js", "#{install_dir}/ckeditor/config.js", :force => true
40
+
41
+ if backend == "carrierwave"
42
+ template "#{uploaders_dir}/uploaders/ckeditor_attachment_file_uploader.rb",
43
+ File.join("app/uploaders", "ckeditor_attachment_file_uploader.rb")
48
44
 
49
- gsub_file "#{install_dir}/ckeditor/plugins/image/dialogs/image.js",
50
- /id\:\'uploadButton\'\,filebrowser\:\'info:txtUrl\'/,
51
- "id:'uploadButton',filebrowser:{target:'info:txtUrl',action:'QuickUpload',params:b.config.filebrowserParams()}"
52
- end
45
+ template "#{uploaders_dir}/uploaders/ckeditor_picture_uploader.rb",
46
+ File.join("app/uploaders", "ckeditor_picture_uploader.rb")
47
+ end
53
48
  end
54
49
 
55
- def download_javascripts
56
- js_dir = "#{install_dir}/ckeditor/filebrowser/javascripts"
57
-
58
- say_status("fetching rails.js", "", :green)
59
- get "https://github.com/rails/jquery-ujs/raw/master/src/rails.js", "#{js_dir}/rails.js"
60
-
61
- say_status("fetching fileuploader.js", "", :green)
62
- get "https://raw.github.com/galetahub/file-uploader/master/client/fileuploader.js", "#{js_dir}/fileuploader.js"
63
-
64
- say_status("fetching jquery-1.6.2.min.js", "", :green)
65
- get "https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js", "#{js_dir}/jquery.js"
66
-
67
- say_status("fetching jquery.tmpl.min.js", "", :green)
68
- get "https://raw.github.com/jquery/jquery-tmpl/master/jquery.tmpl.min.js", "#{js_dir}/jquery.tmpl.js"
50
+ def create_migration
51
+ if ["active_record"].include?(orm)
52
+ migration_template "#{generator_dir}/migration.rb", File.join('db/migrate', "create_ckeditor_assets.rb")
53
+ end
69
54
  end
70
-
55
+
71
56
  protected
72
57
 
73
- def download_url
74
- "http://download.cksource.com/CKEditor/CKEditor/CKEditor%20#{options[:version]}/#{filename}"
58
+ def ckeditor_dir
59
+ 'ckeditor'
75
60
  end
76
61
 
77
- def filename
78
- "ckeditor_#{options[:version]}.tar.gz"
62
+ def generator_dir
63
+ @generator_dir ||= [orm, backend].join('/')
64
+ end
65
+
66
+ def uploaders_dir
67
+ @uploaders_dir ||= ['base', 'carrierwave'].join('/')
68
+ end
69
+
70
+ def orm
71
+ options[:orm] || "active_record"
79
72
  end
80
73
 
81
- def install_dir
82
- options[:path] || Ckeditor.path
74
+ def backend
75
+ options[:backend] || "paperclip"
83
76
  end
84
77
  end
85
78
  end