rails_wangeditor 0.1.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 (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/Gemfile +6 -0
  4. data/LICENSE +21 -0
  5. data/README.md +172 -0
  6. data/Rakefile +2 -0
  7. data/app/assets/javascripts/wangeditor.js +1 -0
  8. data/app/assets/stylesheets/wangeditor.css +3 -0
  9. data/app/controllers/wangeditor/assets_controller.rb +45 -0
  10. data/app/uploaders/wangeditor/asset_uploader.rb +66 -0
  11. data/app/uploaders/wangeditor/image_uploader.rb +10 -0
  12. data/config/routes.rb +6 -0
  13. data/lib/generators/rails_wangeditor/install/USAGE +8 -0
  14. data/lib/generators/rails_wangeditor/install/install_generator.rb +30 -0
  15. data/lib/generators/rails_wangeditor/install/templates/application.css +15 -0
  16. data/lib/generators/rails_wangeditor/install/templates/application.js +16 -0
  17. data/lib/generators/rails_wangeditor/install/templates/rails_wangeditor.rb +27 -0
  18. data/lib/generators/rails_wangeditor/migration/USAGE +11 -0
  19. data/lib/generators/rails_wangeditor/migration/migration_generator.rb +36 -0
  20. data/lib/generators/rails_wangeditor/migration/templates/migration/migration.rb +18 -0
  21. data/lib/generators/rails_wangeditor/migration/templates/models/active_record/wangeditor/asset.rb +14 -0
  22. data/lib/generators/rails_wangeditor/migration/templates/models/active_record/wangeditor/image.rb +3 -0
  23. data/lib/generators/rails_wangeditor/migration/templates/models/mongoid/wangeditor/asset.rb +27 -0
  24. data/lib/generators/rails_wangeditor/migration/templates/models/mongoid/wangeditor/image.rb +3 -0
  25. data/lib/rails_wangeditor/active_record.rb +13 -0
  26. data/lib/rails_wangeditor/engine.rb +32 -0
  27. data/lib/rails_wangeditor/helper.rb +86 -0
  28. data/lib/rails_wangeditor/simple_form.rb +11 -0
  29. data/lib/rails_wangeditor/version.rb +4 -0
  30. data/lib/rails_wangeditor.rb +55 -0
  31. data/lib/tasks/assets.rake +10 -0
  32. data/rails_wangeditor.gemspec +24 -0
  33. data/vendor/assets/javascripts/wangEditor.js +4 -0
  34. data/vendor/assets/stylesheets/wangEditor/fonts/icomoon.eot +0 -0
  35. data/vendor/assets/stylesheets/wangEditor/fonts/icomoon.svg +76 -0
  36. data/vendor/assets/stylesheets/wangEditor/fonts/icomoon.ttf +0 -0
  37. data/vendor/assets/stylesheets/wangEditor/fonts/icomoon.woff +0 -0
  38. data/vendor/assets/stylesheets/wangEditor/wangEditor.css +1 -0
  39. metadata +110 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b62dd1f411fa847f9e4f5497d8f449d2899d7875
4
+ data.tar.gz: 8b1f76430c435b4d6730eecb00ae48a3470db6a4
5
+ SHA512:
6
+ metadata.gz: 46c5058aa41d8b9129234cb4f4d2738da734227a20d6d0589a1a6ecd778683514fd6142e28b18e3f577f728cb93a4bf7ba95a018a0971a51e0025d5e768e3e3f
7
+ data.tar.gz: abe1356868c313f5282b83d64971c19d03248a831146e3e8b8e9bdb0983b986136ba03429b3fed8f64745d84097610a9ae7e3cef1b7f77d7ac988e99a5a8430a
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *.DS_Store
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem 'carrierwave'
6
+ gem 'mini_magick'
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 RubyCat
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,172 @@
1
+ # wangEditor for Ruby on Rails [![Gem Version](https://badge.fury.io/rb/rails_wangeditor.png)](http://badge.fury.io/rb/rails_wangeditor)
2
+
3
+ wangEditor is an easy, fast and beautiful WYSIWYG javascript editor, visit [https://github.com/wangfupeng1988/wangEditor](https://github.com/wangfupeng1988/wangEditor) for details.
4
+ rails_wangeditor will helps your rails app integrate with wangEditor, includes images uploading.
5
+
6
+ ![](http://images2015.cnblogs.com/blog/138012/201509/138012-20150910004209122-1645253022.png)
7
+
8
+ ## Installation and usage
9
+
10
+ ### Add this to your Gemfile
11
+
12
+ ```ruby
13
+ gem 'rails_wangeditor'
14
+ ```
15
+
16
+ ### Run "bundle" command.
17
+
18
+ ```bash
19
+ bundle
20
+ ```
21
+
22
+ ### Run install generator:
23
+
24
+ ```bash
25
+ rails generate rails_wangeditor:install
26
+ ```
27
+
28
+ ### Rails4 in production mode
29
+
30
+ In Rails 4.0, precompiling assets no longer automatically copies non-JS/CSS assets from vendor/assets and lib/assets. see https://github.com/rails/rails/pull/7968
31
+ In Rails 4.0's production mode, please run 'rake wangeditor:assets', this method just copy wangeditor into public folder.
32
+
33
+ ```bash
34
+ rake wangeditor:assets
35
+ ```
36
+
37
+ ### Usage:
38
+
39
+ ```ruby
40
+ 1. <%= wangeditor_tag :content, 'default content value' %>
41
+ # or <%= wangeditor_tag :content, 'default content value', :input_html =>{style: "500px"} %>
42
+ ```
43
+
44
+ ```ruby
45
+ 2. <%= form_for @article do |f| %>
46
+ ...
47
+ <%= f.wangeditor :content %>
48
+ # or <%= f.wangeditor :content, style: "500px"%>
49
+ ...
50
+ <% end %>
51
+ ```
52
+
53
+ When you need to specify the owner_id:
54
+
55
+ ```ruby
56
+ <%= f.wangeditor :content, owner: @article%>
57
+ ```
58
+
59
+ ## SimpleForm integration
60
+
61
+ ### simple_form:
62
+
63
+ ```ruby
64
+ <%= f.wangeditor :content, style: "500px"%>
65
+ ```
66
+
67
+ ## Upload options configuration
68
+
69
+ When you run "rails generate rails_wangeditor:install", installer will copy configuration files in config/initializers folder.
70
+ You can customize some option for uploading.
71
+
72
+ ```ruby
73
+ # Specify the subfolders in public directory.
74
+ # You can customize it , eg: config.upload_dir = 'this/is/my/folder'
75
+ config.upload_dir = 'uploads'
76
+
77
+ # Allowed file types for upload.
78
+ config.upload_image_ext = %w[gif jpg jpeg png bmp]
79
+
80
+ # replace to your own baidu mapAk
81
+ config.mapAk = 'zlXbfvvyWN0vrO5toWqGhLspGHMIeFgn';
82
+
83
+ # Porcess upload image size, need mini_magick
84
+ # before => after
85
+ # eg: 1600x1600 => 800x800
86
+ # 1600x800 => 800x400
87
+ # 400x400 => 400x400 # No Change
88
+ # config.image_resize_to_limit = [800, 800]
89
+
90
+ ```
91
+
92
+ ## Asset host options configuration
93
+
94
+ ```ruby
95
+ # if you have config in your rails application like this:
96
+ # /config/enviroments/production.rb
97
+ # # config.action_controller.asset_host = "http://asset.example.com"
98
+ # # config.assets.prefix = "assets_prefx"
99
+ # then you should:
100
+ #
101
+ config.asset_url_prefix = "http://asset.example.com/assets_prefx/" if Rails.env.production?
102
+ ```
103
+
104
+
105
+ ## Save upload file information into database(optional)
106
+
107
+ rails_wangeditor can save upload file information into database.
108
+
109
+ ### Just run migration generate, there are two ORM options for you: 1.active_record 2.mongoid, default is active_record.
110
+
111
+ ```bash
112
+ rails generate rails_wangeditor:migration
113
+ or
114
+ rails generate rails_wangeditor:migration -o mongoid
115
+ ```
116
+
117
+ ### The generator will copy model and migration to your application. When you are done, remember run rake db:migrate:
118
+
119
+ ```bash
120
+ rake db:migrate
121
+ ```
122
+
123
+ ### Delete uploaded files automatically (only for active_record)
124
+
125
+ You can specify the owner for uploaded files, when the owner was destroying, all the uploaded files(belongs to the owner) will be destroyed automatically.
126
+
127
+ ####1. specify the owner_id for wangeditor
128
+
129
+ ```ruby
130
+ <%= form_for @article do |f| %>
131
+ ...
132
+ <%= f.wangeditor :content, :owner => @article %>
133
+ ...
134
+ <% end %>
135
+ ```
136
+
137
+ ```ruby
138
+ Warnning: the @article must be created before this scene, the @article.id should not be empty.
139
+ ```
140
+
141
+ ####2. add has_many_wangeditor_assets in your own model
142
+
143
+ ```ruby
144
+ class Article < ActiveRecord::Base
145
+ has_many_wangeditor_assets :attachments, :dependent => :destroy
146
+ # has_many_wangeditor_assets :attachments, :dependent => :nullify
147
+ # has_many_wangeditor_assets :your_name, :dependent => :destroy
148
+ end
149
+ ```
150
+
151
+ ####3. relationship
152
+
153
+ ```ruby
154
+ article = Article.first
155
+ article.attachments # => the article's assets uploaded by wangeditor
156
+ asset = article.attachments.first
157
+ asset.owner # => aritcle
158
+ ```
159
+
160
+ ### If you're using mongoid, please add 'gem "carrierwave-mongoid"' in your Gemfile
161
+
162
+ ```ruby
163
+ gem 'carrierwave-mongoid'
164
+ ```
165
+
166
+ ## Thanks
167
+ - 1.Macrow, https://github.com/Macrow/rails_kindeditor
168
+ - 2.wangfupeng1988, https://github.com/wangfupeng1988/wangEditor/
169
+
170
+ ## License
171
+
172
+ MIT License.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1 @@
1
+ //= require wangEditor
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require wangEditor
3
+ */
@@ -0,0 +1,45 @@
1
+ #coding: utf-8
2
+ require "find"
3
+ class Wangeditor::AssetsController < ApplicationController
4
+ skip_before_filter :verify_authenticity_token
5
+ def create
6
+ @imgFile, @dir = params[:imgFile]
7
+ @dir = 'Image'
8
+ unless @imgFile.nil?
9
+ if Wangeditor::AssetUploader.save_upload_info? # save upload info into database
10
+ begin
11
+ @asset = "Wangeditor::#{@dir.camelize}".constantize.new(:asset => @imgFile)
12
+ @asset.owner_id = params[:owner_id] ? params[:owner_id] : 0
13
+ @asset.owner_type = params[:owner_type] ? params[:owner_type] : ''
14
+ logger.warn '=====Warning: the owner have not been created, "delete uploaded files automatically" will not work. ====' if defined?(logger) && @asset.owner_id == 0
15
+ @asset.asset_type = @dir
16
+ if @asset.save
17
+ render :text => @asset.asset.url
18
+ else
19
+ show_error(@asset.errors.full_messages)
20
+ end
21
+ rescue Exception => e
22
+ show_error(e.to_s)
23
+ end
24
+ else # do not touch database
25
+ begin
26
+ uploader = "Wangeditor::#{@dir.camelize}Uploader".constantize.new
27
+ uploader.store!(@imgFile)
28
+ render :text => ({:error => 0, :url => uploader.url}.to_json)
29
+ rescue CarrierWave::UploadError => e
30
+ show_error(e.message)
31
+ rescue Exception => e
32
+ show_error(e.to_s)
33
+ end
34
+ end
35
+ else
36
+ show_error("No File Selected!")
37
+ end
38
+ end
39
+
40
+ private
41
+ def show_error(msg)
42
+ render :text => ("error|#{msg}")
43
+ end
44
+
45
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+
3
+ require 'carrierwave/processing/mime_types'
4
+
5
+ class Wangeditor::AssetUploader < CarrierWave::Uploader::Base
6
+
7
+ EXT_NAMES = {:image => RailsWangeditor.upload_image_ext}
8
+
9
+ # Include RMagick or ImageScience support:
10
+ # include CarrierWave::RMagick
11
+ # include CarrierWave::ImageScience
12
+ # include CarrierWave::MiniMagick
13
+
14
+ # Choose what kind of storage to use for this uploader:
15
+ storage :file
16
+ # storage :fog
17
+
18
+ # Override the directory where uploaded files will be stored.
19
+ # This is a sensible default for uploaders that are meant to be mounted:
20
+ def store_dir
21
+ if Wangeditor::AssetUploader.save_upload_info?
22
+ "#{RailsWangeditor.upload_store_dir}/#{model.asset_type.to_s.underscore.gsub(/(wangeditor\/)|(_uploader)/, '')}/#{model.created_at.strftime("%Y%m")}"
23
+ else
24
+ "#{RailsWangeditor.upload_store_dir}/#{self.class.to_s.underscore.gsub(/(wangeditor\/)|(_uploader)/, '')}/#{Time.now.strftime("%Y%m")}"
25
+ end
26
+ end
27
+
28
+ def cache_dir
29
+ "#{Rails.root}/tmp/uploads"
30
+ end
31
+
32
+ before :store, :remember_cache_id
33
+ after :store, :delete_tmp_dir
34
+
35
+ # store! nil's the cache_id after it finishes so we need to remember it for deletition
36
+ def remember_cache_id(new_file)
37
+ @cache_id_was = cache_id
38
+ end
39
+
40
+ def delete_tmp_dir(new_file)
41
+ # make sure we don't delete other things accidentally by checking the name pattern
42
+ if @cache_id_was.present? && @cache_id_was =~ /\A[\d]{8}\-[\d]{4}\-[\d]+\-[\d]{4}\z/
43
+ FileUtils.rm_rf(File.join(cache_dir, @cache_id_was))
44
+ end
45
+ end
46
+
47
+ def filename
48
+ if original_filename
49
+ @name ||= Digest::MD5.hexdigest(File.dirname(current_path)).slice(0, 12)
50
+ "#{@name}.#{file.extension}"
51
+ end
52
+ end
53
+
54
+ def self.save_upload_info?
55
+ begin
56
+ %w(asset image).each do |s|
57
+ "Wangeditor::#{s.camelize}".constantize
58
+ end
59
+ return true
60
+ rescue
61
+ return false
62
+ end
63
+ end
64
+
65
+ end
66
+
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+
3
+ class Wangeditor::ImageUploader < Wangeditor::AssetUploader
4
+
5
+ def extension_white_list
6
+ EXT_NAMES[:image]
7
+ end
8
+
9
+ end
10
+
data/config/routes.rb ADDED
@@ -0,0 +1,6 @@
1
+ Rails.application.routes.draw do
2
+ namespace :wangeditor do
3
+ post "/upload" => "assets#create"
4
+ get "/filemanager" => "assets#list"
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ install wangEditor for your application
3
+
4
+ Example:
5
+ rails generate rails_wangeditor:install
6
+
7
+ This will create:
8
+ config/rails_wangeditor.rb
@@ -0,0 +1,30 @@
1
+ module RailsWangeditor
2
+ class InstallGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('../templates', __FILE__)
4
+ desc "Install wangEditor for your application."
5
+
6
+ def copy_wangeditor_files
7
+ if ::Rails.version < "3.1.0"
8
+ warn "Warning: rails_wangeditor only support Rails3.1+!"
9
+ else
10
+ template "rails_wangeditor.rb", "config/initializers/rails_wangeditor.rb"
11
+ end
12
+ end
13
+
14
+ def insert_or_copy_js_files
15
+ if File.exist?('app/assets/javascripts/application.js')
16
+ insert_into_file "app/assets/javascripts/application.js", "//= require wangEditor\n", :after => "jquery_ujs\n"
17
+ else
18
+ copy_file "application.js", "app/assets/javascripts/application.js"
19
+ end
20
+ end
21
+
22
+ def insert_or_copy_css_files
23
+ if File.exist?('app/assets/stylesheets/application.css')
24
+ insert_into_file "app/assets/stylesheets/application.css", "*= require wangEditor\n", :before => "*= require_self"
25
+ else
26
+ copy_file "application.css", "app/assets/stylesheets/application.css"
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
12
+ *= require wangEditor
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,16 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // the compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+ //= require jquery
14
+ //= require wangEditor
15
+ //= require_tree .
16
+
@@ -0,0 +1,27 @@
1
+ RailsWangeditor.setup do |config|
2
+
3
+ # Specify the subfolders in public directory.
4
+ # You can customize it , eg: config.upload_dir = 'this/is/my/folder'
5
+ config.upload_dir = 'uploads'
6
+
7
+ # Allowed file types for upload.
8
+ config.upload_image_ext = %w[gif jpg jpeg png bmp]
9
+
10
+ # replace to your own baidu mapAk
11
+ config.mapAk = 'zlXbfvvyWN0vrO5toWqGhLspGHMIeFgn';
12
+
13
+ # Porcess upload image size
14
+ # eg: 1600x1600 => 800x800
15
+ # 1600x800 => 800x400
16
+ # 400x400 => 400x400 # No Change
17
+ # config.image_resize_to_limit = [800, 800]
18
+
19
+ # if you have config in your rails application like this:
20
+ # /config/enviroments/production.rb
21
+ # # config.action_controller.asset_host = "http://asset.example.com"
22
+ # # config.assets.prefix = "assets_prefx"
23
+ # then you should:
24
+ #
25
+ # config.asset_url_prefix = "http://asset.example.com/assets_prefx/" if Rails.env.production?
26
+
27
+ end
@@ -0,0 +1,11 @@
1
+ Description:
2
+ Copy model, migration and uploader to your application.
3
+
4
+ Example:
5
+ rails generate rails_wangeditor:migration
6
+
7
+ This will create:
8
+ app/models/wangeditor/asset.rb
9
+ app/models/wangeditor/image.rb
10
+ db/migrate/xxxxxxxxx_create_wangeditor_assets.rb
11
+
@@ -0,0 +1,36 @@
1
+ module RailsWangeditor
2
+ class MigrationGenerator < Rails::Generators::Base
3
+ include Rails::Generators::Migration
4
+ source_root File.expand_path('../templates', __FILE__)
5
+ desc "Copy model and migration to your application."
6
+ class_option :orm, :type => :string, :aliases => "-o", :default => "active_record", :desc => "ORM options: active_record or mongoid"
7
+
8
+ def copy_files
9
+ orm = options[:orm].to_s
10
+ orm = "active_record" unless %w{active_record mongoid}.include?(orm)
11
+ %w(asset image).each do |file|
12
+ copy_model(orm, file)
13
+ end
14
+ if Rails.version < '4.0.0' && Rails.version >= '3.0.0' # insert code for rails3
15
+ insert_into_file "app/models/wangeditor/asset.rb", " attr_accessible :asset\n", :after => "before_save :update_asset_attributes\n"
16
+ end
17
+ if orm == "active_record"
18
+ migration_template "migration/migration.rb", "db/migrate/create_wangeditor_assets.rb"
19
+ end
20
+ end
21
+
22
+ def self.next_migration_number(dirname)
23
+ if ActiveRecord::Base.timestamped_migrations
24
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
25
+ else
26
+ "%.3d" % (current_migration_number(dirname) + 1)
27
+ end
28
+ end
29
+
30
+ private
31
+ def copy_model(orm, name)
32
+ template "models/#{orm}/wangeditor/#{name}.rb", "app/models/wangeditor/#{name}.rb"
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,18 @@
1
+ class CreateWangeditorAssets < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :wangeditor_assets do |t|
4
+ t.string :asset
5
+ t.integer :file_size
6
+ t.string :file_type
7
+ t.integer :owner_id
8
+ t.string :owner_type
9
+ t.string :asset_type
10
+ t.timestamps
11
+ end
12
+ end
13
+
14
+ def self.down
15
+ drop_table :wangeditor_assets
16
+ end
17
+ end
18
+
@@ -0,0 +1,14 @@
1
+ class Wangeditor::Asset < ActiveRecord::Base
2
+ self.table_name = 'wangeditor_assets'
3
+ mount_uploader :asset, Wangeditor::AssetUploader
4
+ validates_presence_of :asset
5
+ before_save :update_asset_attributes
6
+
7
+ private
8
+ def update_asset_attributes
9
+ if asset.present? && asset_changed?
10
+ self.file_size = asset.file.size
11
+ self.file_type = asset.file.content_type
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ class Wangeditor::Image < Wangeditor::Asset
2
+ mount_uploader :asset, Wangeditor::ImageUploader
3
+ end
@@ -0,0 +1,27 @@
1
+ require 'carrierwave/mongoid'
2
+
3
+ class Wangeditor::Asset
4
+ include Mongoid::Document
5
+ include Mongoid::Timestamps
6
+
7
+ field :file_size, :type => Integer
8
+ field :file_type, :type => String
9
+ field :owner_id, :type => Integer
10
+ field :asset_type, :type => String
11
+
12
+ mount_uploader :asset, Wangeditor::AssetUploader
13
+ validates_presence_of :asset
14
+ before_save :update_asset_attributes
15
+
16
+ def self.collection_name
17
+ :wangeditor_assets
18
+ end
19
+
20
+ private
21
+ def update_asset_attributes
22
+ if asset.present? && asset_changed?
23
+ self.file_size = asset.file.size
24
+ self.file_type = asset.file.content_type
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ class Wangeditor::Image < Wangeditor::Asset
2
+ mount_uploader :asset, Wangeditor::ImageUploader
3
+ end
@@ -0,0 +1,13 @@
1
+ if defined?(ActiveRecord)
2
+ ActiveRecord::Base.class_eval do
3
+ def self.has_many_wangeditor_assets(*args)
4
+ options = args.extract_options!
5
+ asset_name = args[0] ? args[0].to_s : 'assets'
6
+ has_many asset_name.to_sym, :class_name => 'Wangeditor::Asset', :as => :owner, :dependent => options[:dependent]
7
+ class_name = self.name
8
+ Wangeditor::Asset.class_eval do
9
+ belongs_to :owner, :polymorphic => true
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ require "rails_wangeditor"
2
+ require "rails"
3
+ require "action_controller"
4
+
5
+ module RailsWangeditor
6
+ class Engine < Rails::Engine
7
+
8
+ initializer "rails_wangeditor.assets_precompile" do |app|
9
+ app.config.assets.precompile += RailsWangeditor.assets
10
+ end
11
+
12
+ initializer "rails_wangeditor.simple_form" do
13
+ require "rails_wangeditor/simple_form" if Object.const_defined?("SimpleForm")
14
+ end
15
+
16
+ initializer "rails_wangeditor.helper_and_builder" do
17
+ ActiveSupport.on_load :action_view do
18
+ ActionView::Base.send(:include, RailsWangeditor::Helper)
19
+ ActionView::Helpers::FormBuilder.send(:include, RailsWangeditor::Builder)
20
+ end
21
+ end
22
+
23
+ initializer "rails_wangeditor.image_process" do
24
+ unless RailsWangeditor.image_resize_to_limit.nil?
25
+ Wangeditor::ImageUploader.class_eval do
26
+ include CarrierWave::MiniMagick
27
+ process :resize_to_limit => RailsWangeditor.resize_to_limit
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end