rdrails5 0.5.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.
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 +237 -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 +34 -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 +24 -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/rdrails5.gemspec +21 -0
  34. data/vendor/assets/javascripts/redactor-rails/config.js +17 -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 +184 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 22f2b0fe76ab1c5ebfe67da87a717f505566850e
4
+ data.tar.gz: 9f845406788fcba19cf87a1dd25e4af267af90e5
5
+ SHA512:
6
+ metadata.gz: aadb6ff9d77d54793e260857b4ca96547428535647d333d90f89992a22fec3b908e188a0978f9f93484043e7d0cadc0071e91d693f4d583ec0cd7aa39a9b13d0
7
+ data.tar.gz: 52893d7862fc6cd5e4c9fd2911a23275307419de25f273d3df5c6f879c7abae9bfd49be23046cdb604d59aff10342df8fd0c3a542f165edfff46a3e1361e869d
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,237 @@
1
+
2
+ # This repo is deprecated
3
+ ## Please check out official gem for Redactor 2. https://github.com/Redactor2/redactor2_rails
4
+
5
+ # Rails 3.2 Integration for Redactor (Devise Edition)
6
+
7
+ The redactor-rails gem integrates the [Redactor](http://redactorjs.com/) editor with the Rails 3.2 asset pipeline.
8
+
9
+ 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.
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ gem 'redactor-rails'
16
+
17
+ And then execute:
18
+
19
+ $ bundle install
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install redactor-rails
24
+
25
+ ### Now generate models for store uploading files
26
+
27
+ #### ActiveRecord + carrierwave
28
+
29
+ gem "carrierwave"
30
+ gem "mini_magick"
31
+
32
+ $ rails generate redactor:install
33
+
34
+ or
35
+
36
+ $ rails generate redactor:install --devise
37
+
38
+ # --devise option generate user_id attribute for asset(Picture, Document) models. For more details show Devise gem.
39
+ # Now, Pictures and Documents uploading available only for signed in users
40
+ # All uploaded files will stored with current user_id
41
+ # User will choose only own uploaded Pictures and Documents
42
+
43
+ $ rake db:migrate
44
+
45
+ #### Mongoid + carrierwave
46
+ gem "carrierwave"
47
+ gem "carrierwave-mongoid", :require => "carrierwave/mongoid"
48
+ gem "mini_magick"
49
+
50
+ $ rails generate redactor:install
51
+
52
+ ### Include the Redactor assets
53
+
54
+ Add to your `application.js`:
55
+
56
+ //= require redactor-rails
57
+
58
+ Add to your `application.css`:
59
+
60
+ *= require redactor-rails
61
+
62
+ ### Initialize Redactor
63
+
64
+ For each textarea that you want to use with Redactor, add the "redactor" class and ensure it has a unique ID:
65
+
66
+ <%= text_area_tag :editor, "", :class => "redactor", :rows => 40, :cols => 120 %>
67
+
68
+ ### Custom Your redactor
69
+
70
+ If you need change some config in redactor, you can
71
+
72
+ $ rails generate redactor:config
73
+
74
+ Then generate `app\assets\redactor-rails\config.js`.
75
+
76
+ See the [Redactor Documentation](http://imperavi.com/redactor/docs/settings/) for a full list of configuration options.
77
+
78
+
79
+ If You Want To setup a new language in Redactor you should do two things:
80
+
81
+ In you file `app\assets\redactor-rails\config.js` set option
82
+
83
+ "lang":'zh_tw'
84
+
85
+ and
86
+
87
+ if redactor-rails gem version <= 0.3.7
88
+
89
+ Add to your layout
90
+
91
+
92
+ <%= redactor_lang('zh_tw') %>
93
+
94
+ elsif redactor-rails gem version >= 0.4
95
+
96
+ Add to your `application.js`:
97
+
98
+ //= require redactor-rails/langs/zh_tw
99
+
100
+ #### Setting a max image size with carrierwave
101
+
102
+ 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:
103
+
104
+ # app/uploaders/redactor_rails_picture_uploader.rb:33
105
+
106
+ process :resize_to_limit => [500, -1]
107
+
108
+ The above example will set the image to have a maximum width of 500px.
109
+
110
+ ### Using plugins
111
+
112
+ This gem comes bundled with several Redactor plugins:
113
+
114
+ - Fullscreen
115
+ - Clips
116
+ - FontColor
117
+ - FontSize
118
+ - FontFamily
119
+ - Text direction
120
+
121
+ Full details of these can be found at [Redactor Plugins](http://imperavi.com/redactor/plugins/)
122
+
123
+ To include all the plugins just add to your `application.js`:
124
+
125
+ //= require redactor-rails/plugins
126
+
127
+ and add to your `application.css`:
128
+
129
+ *= redactor-rails/plugins
130
+
131
+ If you would prefer to pick and choose which plugins to include you can
132
+ add for example:
133
+
134
+ //= require redactor-rails/plugins/fontsize
135
+ //= require redactor-rails/plugins/fontfamily
136
+
137
+ After including the desired plugins they can be configured in the redactor config file as normal.
138
+
139
+ To add it into the editor just add 'plugins' attributes to config.js file and specify which ones do you want to use:
140
+
141
+ $('.redactor').redactor(
142
+ { "plugins": ['fontsize',
143
+ 'fontcolor',
144
+ 'fontfamily',
145
+ 'fullscreen',
146
+ 'textdirection',
147
+ 'clips']
148
+ });
149
+
150
+ ### Defining a Devise User Model
151
+
152
+ By default redactor-rails uses the `User` model.
153
+
154
+ You may use a different model by:
155
+
156
+ 1. Run a migration to update the user_id column in the
157
+ 2. Overriding the user class in an initializer.
158
+ 3. Overriding the authentication helpers in your controller.
159
+
160
+ Create a new Migration: `rails g rename_user_id_to_new_user_id`
161
+
162
+ ```
163
+ # db/migrate/...rename_user_id_to_new_user_id.rb
164
+
165
+ class RenameUserIdToNewUserId < ActiveRecord::Migration
166
+ def up
167
+ rename_column :redactor_assets, :user_id, :admin_user_id
168
+ end
169
+
170
+ def down
171
+ rename_column :redactor_assets, :admin_user_id, :user_id
172
+ end
173
+ end
174
+ ```
175
+
176
+ ```
177
+ # config/initializers/redactor.rb
178
+ # Overrides the user class
179
+
180
+ module RedactorRails
181
+ def self.devise_user
182
+ %s(admin_user) # name of your user class
183
+ end
184
+
185
+ # You may override this to support legacy schema.
186
+ # def self.devise_user_key
187
+ # "#{self.devise_user.to_s}_id".to_sym
188
+ # end
189
+ end
190
+ ```
191
+
192
+ ```
193
+ # app/controllers/application_controller.rb
194
+
195
+ class ApplicationController < ActionController::Base
196
+ ...
197
+
198
+ def redactor_authenticate_user!
199
+ authenticate_admin_user! # devise before_filter
200
+ end
201
+
202
+ def redactor_current_user
203
+ current_admin_user # devise user helper
204
+ end
205
+ end
206
+ ```
207
+
208
+ ## Contributing
209
+
210
+ 1. Fork it
211
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
212
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
213
+ 4. Push to the branch (`git push origin my-new-feature`)
214
+ 5. Create new Pull Request
215
+
216
+ ## Contributors
217
+
218
+ [Sebastian Wilgosz](https://github.com/wilgoszpl)
219
+
220
+ ## Special Thanks
221
+
222
+ [wildjcrt (Jerry Lee)](https://github.com/wildjcrt/)
223
+
224
+ ## Statement
225
+
226
+ `redactor-rails` part of reference [galetahub/ckeditor](https://github.com/galetahub/ckeditor) project.
227
+
228
+ `redactor-rails` uses MIT-LICENSE. Rock!!!!!
229
+
230
+ ## License
231
+
232
+ the `redactor-rails` project is MIT-LICENSE.
233
+
234
+ You may use `Redactor` for non-commercial websites for free, however, we do not guarantee any technical support.
235
+
236
+ Redactor has [3 different licenses](http://imperavi.com/redactor/download/) for commercial use.
237
+ 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_action :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 json: { filelink: @document.url, filename: @document.filename }
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,34 @@
1
+ class RedactorRails::PicturesController < ApplicationController
2
+ before_action :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
+ file = params[:file]
14
+ @picture.data = RedactorRails::Http.normalize_param(file, request)
15
+ if @picture.has_attribute?(:"#{RedactorRails.devise_user_key}")
16
+ @picture.send("#{RedactorRails.devise_user}=", redactor_current_user)
17
+ @picture.assetable = redactor_current_user
18
+ end
19
+
20
+ if @picture.save
21
+ render json: { filelink: @picture.url(:content) }
22
+ else
23
+ render json: { error: @picture.errors }
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def redactor_authenticate_user!
30
+ if RedactorRails.picture_model.new.has_attribute?(RedactorRails.devise_user)
31
+ super
32
+ end
33
+ end
34
+ 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,24 @@
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] = 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",
14
+ "uploadImageFields": params,
15
+ "imageGetJson":"/redactor_rails/pictures",
16
+ "fileUpload":"/redactor_rails/documents",
17
+ "uploadFileFields": params,
18
+ "fileGetJson":"/redactor_rails/documents",
19
+ "path":"/assets/redactor-rails",
20
+ "css":"style.css"
21
+ });
22
+ }
23
+
24
+ $(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