shixian-redactor-rails 0.5.0

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.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/Gemfile +25 -0
  4. data/MIT-LICENSE +22 -0
  5. data/README.md +234 -0
  6. data/Rakefile +3 -0
  7. data/app/controller/redactor_rails/documents_controller.rb +34 -0
  8. data/app/controller/redactor_rails/pictures_controller.rb +39 -0
  9. data/config/routes.rb +4 -0
  10. data/lib/generators/redactor/config_generator.rb +18 -0
  11. data/lib/generators/redactor/install_generator.rb +75 -0
  12. data/lib/generators/redactor/templates/active_record/carrierwave/devise_migration.rb +30 -0
  13. data/lib/generators/redactor/templates/active_record/carrierwave/migration.rb +28 -0
  14. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/asset.rb +5 -0
  15. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/document.rb +11 -0
  16. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/picture.rb +7 -0
  17. data/lib/generators/redactor/templates/base/carrierwave/uploaders/redactor_rails_document_uploader.rb +15 -0
  18. data/lib/generators/redactor/templates/base/carrierwave/uploaders/redactor_rails_picture_uploader.rb +53 -0
  19. data/lib/generators/redactor/templates/config.js +22 -0
  20. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/asset.rb +9 -0
  21. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/document.rb +14 -0
  22. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/picture.rb +7 -0
  23. data/lib/redactor-rails/backend/carrierwave.rb +64 -0
  24. data/lib/redactor-rails/devise.rb +11 -0
  25. data/lib/redactor-rails/engine.rb +14 -0
  26. data/lib/redactor-rails/helper.rb +5 -0
  27. data/lib/redactor-rails/http.rb +89 -0
  28. data/lib/redactor-rails/orm/active_record.rb +31 -0
  29. data/lib/redactor-rails/orm/base.rb +38 -0
  30. data/lib/redactor-rails/orm/mongoid.rb +37 -0
  31. data/lib/redactor-rails/version.rb +3 -0
  32. data/lib/redactor-rails.rb +41 -0
  33. data/redactor-rails.gemspec +21 -0
  34. data/vendor/assets/javascripts/redactor-rails/config.js +16 -0
  35. data/vendor/assets/javascripts/redactor-rails/css/docstyle.css +139 -0
  36. data/vendor/assets/javascripts/redactor-rails/css/style.css +26 -0
  37. data/vendor/assets/javascripts/redactor-rails/css/wym.css +151 -0
  38. data/vendor/assets/javascripts/redactor-rails/index.js +2 -0
  39. data/vendor/assets/javascripts/redactor-rails/langs/ar.js +73 -0
  40. data/vendor/assets/javascripts/redactor-rails/langs/az.js +72 -0
  41. data/vendor/assets/javascripts/redactor-rails/langs/ba.js +76 -0
  42. data/vendor/assets/javascripts/redactor-rails/langs/bg.js +74 -0
  43. data/vendor/assets/javascripts/redactor-rails/langs/by.js +72 -0
  44. data/vendor/assets/javascripts/redactor-rails/langs/ca.js +72 -0
  45. data/vendor/assets/javascripts/redactor-rails/langs/cs.js +84 -0
  46. data/vendor/assets/javascripts/redactor-rails/langs/da.js +73 -0
  47. data/vendor/assets/javascripts/redactor-rails/langs/de.js +77 -0
  48. data/vendor/assets/javascripts/redactor-rails/langs/el.js +72 -0
  49. data/vendor/assets/javascripts/redactor-rails/langs/en.js +72 -0
  50. data/vendor/assets/javascripts/redactor-rails/langs/eo.js +73 -0
  51. data/vendor/assets/javascripts/redactor-rails/langs/es.js +73 -0
  52. data/vendor/assets/javascripts/redactor-rails/langs/es_ar.js +73 -0
  53. data/vendor/assets/javascripts/redactor-rails/langs/fa.js +73 -0
  54. data/vendor/assets/javascripts/redactor-rails/langs/fi.js +72 -0
  55. data/vendor/assets/javascripts/redactor-rails/langs/fr.js +72 -0
  56. data/vendor/assets/javascripts/redactor-rails/langs/he.js +72 -0
  57. data/vendor/assets/javascripts/redactor-rails/langs/hr.js +71 -0
  58. data/vendor/assets/javascripts/redactor-rails/langs/hu.js +74 -0
  59. data/vendor/assets/javascripts/redactor-rails/langs/id.js +73 -0
  60. data/vendor/assets/javascripts/redactor-rails/langs/it.js +75 -0
  61. data/vendor/assets/javascripts/redactor-rails/langs/ja.js +73 -0
  62. data/vendor/assets/javascripts/redactor-rails/langs/ko.js +73 -0
  63. data/vendor/assets/javascripts/redactor-rails/langs/lt.js +72 -0
  64. data/vendor/assets/javascripts/redactor-rails/langs/lv.js +72 -0
  65. data/vendor/assets/javascripts/redactor-rails/langs/mk.js +72 -0
  66. data/vendor/assets/javascripts/redactor-rails/langs/nl.js +76 -0
  67. data/vendor/assets/javascripts/redactor-rails/langs/no_NB.js +72 -0
  68. data/vendor/assets/javascripts/redactor-rails/langs/pl.js +73 -0
  69. data/vendor/assets/javascripts/redactor-rails/langs/pt_br.js +79 -0
  70. data/vendor/assets/javascripts/redactor-rails/langs/pt_pt.js +72 -0
  71. data/vendor/assets/javascripts/redactor-rails/langs/ro.js +73 -0
  72. data/vendor/assets/javascripts/redactor-rails/langs/ru.js +73 -0
  73. data/vendor/assets/javascripts/redactor-rails/langs/sk.js +73 -0
  74. data/vendor/assets/javascripts/redactor-rails/langs/sl.js +76 -0
  75. data/vendor/assets/javascripts/redactor-rails/langs/sq.js +76 -0
  76. data/vendor/assets/javascripts/redactor-rails/langs/sr-cir.js +76 -0
  77. data/vendor/assets/javascripts/redactor-rails/langs/sr-lat.js +76 -0
  78. data/vendor/assets/javascripts/redactor-rails/langs/sv.js +73 -0
  79. data/vendor/assets/javascripts/redactor-rails/langs/th.js +72 -0
  80. data/vendor/assets/javascripts/redactor-rails/langs/tr.js +73 -0
  81. data/vendor/assets/javascripts/redactor-rails/langs/ua.js +74 -0
  82. data/vendor/assets/javascripts/redactor-rails/langs/vi.js +72 -0
  83. data/vendor/assets/javascripts/redactor-rails/langs/zh_cn.js +74 -0
  84. data/vendor/assets/javascripts/redactor-rails/langs/zh_tw.js +73 -0
  85. data/vendor/assets/javascripts/redactor-rails/plugins/clips.js +61 -0
  86. data/vendor/assets/javascripts/redactor-rails/plugins/fontcolor.js +76 -0
  87. data/vendor/assets/javascripts/redactor-rails/plugins/fontfamily.js +35 -0
  88. data/vendor/assets/javascripts/redactor-rails/plugins/fontsize.js +34 -0
  89. data/vendor/assets/javascripts/redactor-rails/plugins/fullscreen.js +123 -0
  90. data/vendor/assets/javascripts/redactor-rails/plugins/textdirection.js +31 -0
  91. data/vendor/assets/javascripts/redactor-rails/plugins.js +6 -0
  92. data/vendor/assets/javascripts/redactor-rails/redactor.js +8053 -0
  93. data/vendor/assets/javascripts/redactor-rails/redactor.min.js +12 -0
  94. data/vendor/assets/stylesheets/redactor-rails/css/redactor-iframe.css +202 -0
  95. data/vendor/assets/stylesheets/redactor-rails/css/redactor.css +930 -0
  96. data/vendor/assets/stylesheets/redactor-rails/css/style.css +26 -0
  97. data/vendor/assets/stylesheets/redactor-rails/index.css +1 -0
  98. data/vendor/assets/stylesheets/redactor-rails/plugins/clips.css +6 -0
  99. data/vendor/assets/stylesheets/redactor-rails/plugins.css +3 -0
  100. metadata +183 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 250a4f35c00570b8d83e9079447f08533b560d2de82a51cac96c1cfe699ce8b6
4
+ data.tar.gz: 0ccc037e7650d29f765f7b61b60e3c7e6e07f05594eca5907592353aa2070baa
5
+ SHA512:
6
+ metadata.gz: 66d35588eb47e3747d51a894d81610283bf98008f8256f860f4acea0a5dc6ff10de2a5b90a999227474c75bf26b0ea34f6cecbb7fab4ec54a20c90f57d77d8d4
7
+ data.tar.gz: 3aba1eebe273bd2d9f6f79a5921fcb5a7a0de6cb9497a6b1190b376e008777dddc5c3a5687f2423b95c63d999d70d7caf61751e175eebcacddd9be668b40f211
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ /.idea/*
2
+ *.gem
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
19
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,25 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in redactor-rails.gemspec
4
+ gemspec
5
+ gem "rails", "3.2.3"
6
+
7
+
8
+ platforms :ruby do
9
+ gem "sqlite3"
10
+
11
+ group :development do
12
+ gem "unicorn", "~> 4.0.1"
13
+ end
14
+
15
+ group :development, :test do
16
+ gem "capybara", ">= 0.4.0"
17
+ gem "mynyml-redgreen", "~> 0.7.1", :require => 'redgreen'
18
+ end
19
+
20
+ group :active_record do
21
+ gem "carrierwave"
22
+ gem "mini_magick"
23
+ end
24
+
25
+ end
data/MIT-LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Sammy
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,234 @@
1
+
2
+ # Rails 3.2 Integration for Redactor (Devise Edition)
3
+
4
+ The redactor-rails gem integrates the [Redactor](http://redactorjs.com/) editor with the Rails 3.2 asset pipeline.
5
+
6
+ This gem bundles Redactor version 10.0.4 which is the most recent version as of January 9, 2015. Check [Redactor's changelog](http://imperavi.com/redactor/log/) for further updates.
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ gem 'redactor-rails'
13
+
14
+ And then execute:
15
+
16
+ $ bundle install
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install redactor-rails
21
+
22
+ ### Now generate models for store uploading files
23
+
24
+ #### ActiveRecord + carrierwave
25
+
26
+ gem "carrierwave"
27
+ gem "mini_magick"
28
+
29
+ $ rails generate redactor:install
30
+
31
+ or
32
+
33
+ $ rails generate redactor:install --devise
34
+
35
+ # --devise option generate user_id attribute for asset(Picture, Document) models. For more details show Devise gem.
36
+ # Now, Pictures and Documents uploading available only for signed in users
37
+ # All uploaded files will stored with current user_id
38
+ # User will choose only own uploaded Pictures and Documents
39
+
40
+ $ rake db:migrate
41
+
42
+ #### Mongoid + carrierwave
43
+ gem "carrierwave"
44
+ gem "carrierwave-mongoid", :require => "carrierwave/mongoid"
45
+ gem "mini_magick"
46
+
47
+ $ rails generate redactor:install
48
+
49
+ ### Include the Redactor assets
50
+
51
+ Add to your `application.js`:
52
+
53
+ //= require redactor-rails
54
+
55
+ Add to your `application.css`:
56
+
57
+ *= require redactor-rails
58
+
59
+ ### Initialize Redactor
60
+
61
+ For each textarea that you want to use with Redactor, add the "redactor" class and ensure it has a unique ID:
62
+
63
+ <%= text_area_tag :editor, "", :class => "redactor", :rows => 40, :cols => 120 %>
64
+
65
+ ### Custom Your redactor
66
+
67
+ If you need change some config in redactor, you can
68
+
69
+ $ rails generate redactor:config
70
+
71
+ Then generate `app\assets\redactor-rails\config.js`.
72
+
73
+ See the [Redactor Documentation](http://imperavi.com/redactor/docs/settings/) for a full list of configuration options.
74
+
75
+
76
+ If You Want To setup a new language in Redactor you should do two things:
77
+
78
+ In you file `app\assets\redactor-rails\config.js` set option
79
+
80
+ "lang":'zh_tw'
81
+
82
+ and
83
+
84
+ if redactor-rails gem version <= 0.3.7
85
+
86
+ Add to your layout
87
+
88
+
89
+ <%= redactor_lang('zh_tw') %>
90
+
91
+ elsif redactor-rails gem version >= 0.4
92
+
93
+ Add to your `application.js`:
94
+
95
+ //= require redactor-rails/langs/zh_tw
96
+
97
+ #### Setting a max image size with carrierwave
98
+
99
+ If you want to set a maximum image size used when a user uploads an image via carrierwave, open the uploader file and add add the following:
100
+
101
+ # app/uploaders/redactor_rails_picture_uploader.rb:33
102
+
103
+ process :resize_to_limit => [500, -1]
104
+
105
+ The above example will set the image to have a maximum width of 500px.
106
+
107
+ ### Using plugins
108
+
109
+ This gem comes bundled with several Redactor plugins:
110
+
111
+ - Fullscreen
112
+ - Clips
113
+ - FontColor
114
+ - FontSize
115
+ - FontFamily
116
+ - Text direction
117
+
118
+ Full details of these can be found at [Redactor Plugins](http://imperavi.com/redactor/plugins/)
119
+
120
+ To include all the plugins just add to your `application.js`:
121
+
122
+ //= require redactor-rails/plugins
123
+
124
+ and add to your `application.css`:
125
+
126
+ *= redactor-rails/plugins
127
+
128
+ If you would prefer to pick and choose which plugins to include you can
129
+ add for example:
130
+
131
+ //= require redactor-rails/plugins/fontsize
132
+ //= require redactor-rails/plugins/fontfamily
133
+
134
+ After including the desired plugins they can be configured in the redactor config file as normal.
135
+
136
+ To add it into the editor just add 'plugins' attributes to config.js file and specify which ones do you want to use:
137
+
138
+ $('.redactor').redactor(
139
+ { "plugins": ['fontsize',
140
+ 'fontcolor',
141
+ 'fontfamily',
142
+ 'fullscreen',
143
+ 'textdirection',
144
+ 'clips']
145
+ });
146
+
147
+ ### Defining a Devise User Model
148
+
149
+ By default redactor-rails uses the `User` model.
150
+
151
+ You may use a different model by:
152
+
153
+ 1. Run a migration to update the user_id column in the
154
+ 2. Overriding the user class in an initializer.
155
+ 3. Overriding the authentication helpers in your controller.
156
+
157
+ Create a new Migration: `rails g rename_user_id_to_new_user_id`
158
+
159
+ ```
160
+ # db/migrate/...rename_user_id_to_new_user_id.rb
161
+
162
+ class RenameUserIdToNewUserId < ActiveRecord::Migration
163
+ def up
164
+ rename_column :redactor_assets, :user_id, :admin_user_id
165
+ end
166
+
167
+ def down
168
+ rename_column :redactor_assets, :admin_user_id, :user_id
169
+ end
170
+ end
171
+ ```
172
+
173
+ ```
174
+ # config/initializers/redactor.rb
175
+ # Overrides the user class
176
+
177
+ module RedactorRails
178
+ def self.devise_user
179
+ %s(admin_user) # name of your user class
180
+ end
181
+
182
+ # You may override this to support legacy schema.
183
+ # def self.devise_user_key
184
+ # "#{self.devise_user.to_s}_id".to_sym
185
+ # end
186
+ end
187
+ ```
188
+
189
+ ```
190
+ # app/controllers/application_controller.rb
191
+
192
+ class ApplicationController < ActionController::Base
193
+ ...
194
+
195
+ def redactor_authenticate_user!
196
+ authenticate_admin_user! # devise before_filter
197
+ end
198
+
199
+ def redactor_current_user
200
+ current_admin_user # devise user helper
201
+ end
202
+ end
203
+ ```
204
+
205
+ ## Contributing
206
+
207
+ 1. Fork it
208
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
209
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
210
+ 4. Push to the branch (`git push origin my-new-feature`)
211
+ 5. Create new Pull Request
212
+
213
+ ## Contributors
214
+
215
+ [Sebastian Wilgosz](https://github.com/wilgoszpl)
216
+
217
+ ## Special Thanks
218
+
219
+ [wildjcrt (Jerry Lee)](https://github.com/wildjcrt/)
220
+
221
+ ## Statement
222
+
223
+ `redactor-rails` part of reference [galetahub/ckeditor](https://github.com/galetahub/ckeditor) project.
224
+
225
+ `redactor-rails` uses MIT-LICENSE. Rock!!!!!
226
+
227
+ ## License
228
+
229
+ the `redactor-rails` project is MIT-LICENSE.
230
+
231
+ You may use `Redactor` for non-commercial websites for free, however, we do not guarantee any technical support.
232
+
233
+ Redactor has [3 different licenses](http://imperavi.com/redactor/download/) for commercial use.
234
+ For details please see [License Agreement](http://imperavi.com/redactor/license/).
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler"
3
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,34 @@
1
+ class RedactorRails::DocumentsController < ApplicationController
2
+ before_filter :redactor_authenticate_user!
3
+
4
+ def index
5
+ @documents = RedactorRails.document_model.where(
6
+ RedactorRails.document_model.new.respond_to?(RedactorRails.devise_user) ? { RedactorRails.devise_user_key => redactor_current_user.id } : { })
7
+ render :json => @documents.to_json
8
+ end
9
+
10
+ def create
11
+ @document = RedactorRails.document_model.new
12
+
13
+ file = params[:file]
14
+ @document.data = RedactorRails::Http.normalize_param(file, request)
15
+ if @document.has_attribute?(:"#{RedactorRails.devise_user_key}")
16
+ @document.send("#{RedactorRails.devise_user}=", redactor_current_user)
17
+ @document.assetable = redactor_current_user
18
+ end
19
+
20
+ if @document.save
21
+ render :text => { :filelink => @document.url, :filename => @document.filename }.to_json
22
+ else
23
+ render json: { error: @document.errors }
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def redactor_authenticate_user!
30
+ if RedactorRails.document_model.new.has_attribute?(RedactorRails.devise_user)
31
+ super
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,39 @@
1
+ class RedactorRails::PicturesController < ApplicationController
2
+ before_filter :redactor_authenticate_user!
3
+
4
+ def index
5
+ @pictures = RedactorRails.picture_model.where(
6
+ RedactorRails.picture_model.new.respond_to?(RedactorRails.devise_user) ? { RedactorRails.devise_user_key => redactor_current_user.id } : { })
7
+ render :json => @pictures.to_json
8
+ end
9
+
10
+ def create
11
+ @picture = RedactorRails.picture_model.new
12
+
13
+ p "-------------"
14
+
15
+ file = params[:file]
16
+ @picture.data = RedactorRails::Http.normalize_param(file, request)
17
+ if @picture.has_attribute?(:"#{RedactorRails.devise_user_key}")
18
+ p 'uuuuuuuu'
19
+ @picture.send("#{RedactorRails.devise_user}=", redactor_current_user)
20
+ @picture.assetable = redactor_current_user
21
+ end
22
+
23
+ if @picture.save
24
+ p "ssssssssss"
25
+ render :text => { :file_path => @picture.url }.to_json
26
+ else
27
+ p "eeeeeeeeeee"
28
+ render json: { error: @picture.errors }
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def redactor_authenticate_user!
35
+ if RedactorRails.picture_model.new.has_attribute?(RedactorRails.devise_user)
36
+ super
37
+ end
38
+ end
39
+ end
data/config/routes.rb ADDED
@@ -0,0 +1,4 @@
1
+ RedactorRails::Engine.routes.draw do
2
+ resources :pictures, :only => [:index, :create]
3
+ resources :documents, :only => [:index, :create]
4
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails/generators'
2
+
3
+ module Redactor
4
+ module Generators
5
+ class ConfigGenerator < ::Rails::Generators::Base
6
+ desc "Generates redactor-rails config"
7
+
8
+ def self.source_root
9
+ @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
10
+ end
11
+
12
+
13
+ def create_config
14
+ template "config.js", File.join('app/assets/javascripts/redactor-rails', "config.js")
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,75 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+ module Redactor
4
+ module Generators
5
+ class InstallGenerator < ::Rails::Generators::Base
6
+ include ::Rails::Generators::Migration
7
+ desc "Generates migration for Tag and Tagging models"
8
+
9
+ class_option :orm, :type => :string, :default => "active_record",
10
+ :desc => "Backend processor for upload support"
11
+
12
+ class_option :backend, :type => :string, :default => 'carrierwave',
13
+ :desc => "carrierwave(default)"
14
+
15
+ def self.source_root
16
+ @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
17
+ end
18
+
19
+ def self.next_migration_number(dirname)
20
+ Time.now.strftime("%Y%m%d%H%M%S")
21
+ end
22
+
23
+ def mount_engine
24
+ route "mount RedactorRails::Engine => '/redactor_rails'"
25
+ end
26
+
27
+ def create_models
28
+ [:asset, :picture, :document].each do |filename|
29
+ template "#{generator_dir}/redactor/#{filename}.rb",
30
+ File.join('app/models', redactor_dir, "#{filename}.rb")
31
+ end
32
+
33
+ if backend == "carrierwave"
34
+ [:picture, :document].each do |filename|
35
+ template "#{uploaders_dir}/uploaders/redactor_rails_#{filename}_uploader.rb",
36
+ File.join("app/uploaders", "redactor_rails_#{filename}_uploader.rb")
37
+ end
38
+ end
39
+ end
40
+
41
+ def create_redactor_migration
42
+ if orm.to_s == "active_record"
43
+ if ARGV.include?('--devise')
44
+ migration_template "#{generator_dir}/devise_migration.rb", File.join('db/migrate', "create_redactor_assets.rb")
45
+ else
46
+ migration_template "#{generator_dir}/migration.rb", File.join('db/migrate', "create_redactor_assets.rb")
47
+ end
48
+ end
49
+ end
50
+
51
+ protected
52
+
53
+ def redactor_dir
54
+ 'redactor_rails'
55
+ end
56
+
57
+ def generator_dir
58
+ @generator_dir ||= [orm, backend].join('/')
59
+ end
60
+
61
+ def uploaders_dir
62
+ @uploaders_dir ||= ['base', 'carrierwave'].join('/')
63
+ end
64
+
65
+ def orm
66
+ options[:orm] || "active_record"
67
+ end
68
+
69
+ def backend
70
+ options[:backend] || "carrierwave"
71
+ end
72
+
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,30 @@
1
+ class CreateRedactorAssets < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :redactor_assets do |t|
4
+ t.integer :user_id
5
+ t.string :data_file_name, :null => false
6
+ t.string :data_content_type
7
+ t.integer :data_file_size
8
+
9
+ t.integer :assetable_id
10
+ t.string :assetable_type, :limit => 30
11
+ t.string :type, :limit => 30
12
+
13
+ # Uncomment it to save images dimensions, if your need it
14
+ t.integer :width
15
+ t.integer :height
16
+
17
+ t.timestamps
18
+ end
19
+
20
+ # Uncomment it to add foreign key. gem 'foreigner' is required in your .Gemfile
21
+ # add_foreign_key(:redactor_assets, :users, dependent: :delete)
22
+ add_index "redactor_assets", ["assetable_type", "type", "assetable_id"], :name => "idx_redactor_assetable_type"
23
+ add_index "redactor_assets", ["assetable_type", "assetable_id"], :name => "idx_redactor_assetable"
24
+ end
25
+
26
+ def self.down
27
+ drop_table :redactor_assets
28
+ end
29
+ end
30
+
@@ -0,0 +1,28 @@
1
+ class CreateRedactorAssets < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :redactor_assets do |t|
4
+ t.string :data_file_name, :null => false
5
+ t.string :data_content_type
6
+ t.integer :data_file_size
7
+
8
+ t.integer :assetable_id
9
+ t.string :assetable_type, :limit => 30
10
+ t.string :type, :limit => 30
11
+
12
+ # Uncomment it to save images dimensions, if your need it
13
+ t.integer :width
14
+ t.integer :height
15
+
16
+ t.timestamps
17
+ end
18
+
19
+ # Uncomment it to add foreign key. gem 'foreigner' is required in your .Gemfile
20
+ # add_foreign_key(:redactor_assets, :users, dependent: :delete)
21
+ add_index "redactor_assets", ["assetable_type", "type", "assetable_id"], :name => "idx_redactor_assetable_type"
22
+ add_index "redactor_assets", ["assetable_type", "assetable_id"], :name => "idx_redactor_assetable"
23
+ end
24
+
25
+ def self.down
26
+ drop_table :redactor_assets
27
+ end
28
+ end
@@ -0,0 +1,5 @@
1
+ class RedactorRails::Asset < ActiveRecord::Base
2
+ include RedactorRails::Orm::ActiveRecord::AssetBase
3
+ delegate :url, :current_path, :size, :content_type, :filename, :to => :data
4
+ validates_presence_of :data
5
+ end
@@ -0,0 +1,11 @@
1
+ class RedactorRails::Document < RedactorRails::Asset
2
+ mount_uploader :data, RedactorRailsDocumentUploader, :mount_on => :data_file_name
3
+
4
+ def url_content
5
+ url(:content)
6
+ end
7
+
8
+ def as_json_methods
9
+ [:image]
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ class RedactorRails::Picture < RedactorRails::Asset
2
+ mount_uploader :data, RedactorRailsPictureUploader, :mount_on => :data_file_name
3
+
4
+ def url_content
5
+ url(:content)
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ class RedactorRailsDocumentUploader < CarrierWave::Uploader::Base
3
+ include RedactorRails::Backend::CarrierWave
4
+
5
+ # storage :fog
6
+ storage :file
7
+
8
+ def store_dir
9
+ "system/redactor_assets/documents/#{model.id}"
10
+ end
11
+
12
+ def extension_white_list
13
+ RedactorRails.document_file_types
14
+ end
15
+ end
@@ -0,0 +1,53 @@
1
+ # encoding: utf-8
2
+ class RedactorRailsPictureUploader < CarrierWave::Uploader::Base
3
+ include RedactorRails::Backend::CarrierWave
4
+
5
+ # Include RMagick or ImageScience support:
6
+ # include CarrierWave::RMagick
7
+ include CarrierWave::MiniMagick
8
+ # include CarrierWave::ImageScience
9
+
10
+ # Choose what kind of storage to use for this uploader:
11
+ storage :file
12
+
13
+ # Override the directory where uploaded files will be stored.
14
+ # This is a sensible default for uploaders that are meant to be mounted:
15
+ def store_dir
16
+ "system/redactor_assets/pictures/#{model.id}"
17
+ end
18
+
19
+ # Provide a default URL as a default if there hasn't been a file uploaded:
20
+ # def default_url
21
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
22
+ # end
23
+
24
+ # Process files as they are uploaded:
25
+ # process :scale => [200, 300]
26
+ #
27
+ # def scale(width, height)
28
+ # # do something
29
+ # end
30
+
31
+ process :read_dimensions
32
+
33
+ # Create different versions of your uploaded files:
34
+ version :thumb do
35
+ process :resize_to_fill => [118, 100]
36
+ end
37
+
38
+ version :content do
39
+ process :resize_to_limit => [800, 800]
40
+ end
41
+
42
+ # Add a white list of extensions which are allowed to be uploaded.
43
+ # For images you might use something like this:
44
+ def extension_white_list
45
+ RedactorRails.image_file_types
46
+ end
47
+
48
+ # Override the filename of the uploaded files:
49
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
50
+ # def filename
51
+ # "something.jpg" if original_filename
52
+ # end
53
+ end
@@ -0,0 +1,22 @@
1
+ window.init_redactor = function(){
2
+ var csrf_token = $('meta[name=csrf-token]').attr('content');
3
+ var csrf_param = $('meta[name=csrf-param]').attr('content');
4
+ var params;
5
+ if (csrf_param !== undefined && csrf_token !== undefined) {
6
+ params = csrf_param + "=" + encodeURIComponent(csrf_token);
7
+ }
8
+ $('.redactor').redactor({
9
+ // You can specify, which ones plugins you need.
10
+ // If you want to use plugins, you have add plugins to your
11
+ // application.js and application.css files and uncomment the line below:
12
+ // "plugins": ['fontsize', 'fontcolor', 'fontfamily', 'fullscreen', 'textdirection', 'clips'],
13
+ "imageUpload":"/redactor_rails/pictures?" + params,
14
+ "imageGetJson":"/redactor_rails/pictures",
15
+ "fileUpload":"/redactor_rails/documents?" + params,
16
+ "fileGetJson":"/redactor_rails/documents",
17
+ "path":"/assets/redactor-rails",
18
+ "css":"style.css"
19
+ });
20
+ }
21
+
22
+ $(document).on( 'ready page:load', window.init_redactor );
@@ -0,0 +1,9 @@
1
+ class RedactorRails::Asset
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ include RedactorRails::Orm::Mongoid::AssetBase
6
+
7
+ delegate :url, :current_path, :size, :content_type, :filename, :to => :data
8
+ validates_presence_of :data
9
+ end