rails_editor_liu 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/Gemfile +6 -0
- data/README.md +526 -0
- data/Rakefile +2 -0
- data/app/assets/javascripts/kindeditor.js +1 -0
- data/app/controllers/kindeditor/assets_controller.rb +136 -0
- data/app/uploaders/kindeditor/asset_uploader.rb +112 -0
- data/app/uploaders/kindeditor/file_uploader.rb +10 -0
- data/app/uploaders/kindeditor/flash_uploader.rb +10 -0
- data/app/uploaders/kindeditor/image_uploader.rb +10 -0
- data/app/uploaders/kindeditor/media_uploader.rb +10 -0
- data/config/routes.rb +6 -0
- data/lib/generators/rails_kindeditor/install/USAGE +10 -0
- data/lib/generators/rails_kindeditor/install/install_generator.rb +23 -0
- data/lib/generators/rails_kindeditor/install/templates/application.js +17 -0
- data/lib/generators/rails_kindeditor/install/templates/rails_kindeditor.rb +19 -0
- data/lib/generators/rails_kindeditor/migration/USAGE +14 -0
- data/lib/generators/rails_kindeditor/migration/migration_generator.rb +36 -0
- data/lib/generators/rails_kindeditor/migration/templates/migration/migration.rb +17 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/asset.rb +14 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/file.rb +3 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/flash.rb +3 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/image.rb +3 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/media.rb +3 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/asset.rb +27 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/file.rb +3 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/flash.rb +3 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/image.rb +3 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/media.rb +3 -0
- data/lib/rails_kindeditor/active_record.rb +14 -0
- data/lib/rails_kindeditor/engine.rb +34 -0
- data/lib/rails_kindeditor/formtastic.rb +12 -0
- data/lib/rails_kindeditor/helper.rb +96 -0
- data/lib/rails_kindeditor/simple_form.rb +11 -0
- data/lib/rails_kindeditor/version.rb +4 -0
- data/lib/rails_kindeditor.rb +58 -0
- data/lib/tasks/assets.rake +9 -0
- data/rails_kindeditor.gemspec +23 -0
- data/screenshots/rails_kindeditor.png +0 -0
- data/screenshots/simple_mode.png +0 -0
- data/vendor/assets/javascripts/kindeditor/kindeditor.js +5963 -0
- data/vendor/assets/javascripts/kindeditor/lang/ar.js +233 -0
- data/vendor/assets/javascripts/kindeditor/lang/en.js +232 -0
- data/vendor/assets/javascripts/kindeditor/lang/ko.js +237 -0
- data/vendor/assets/javascripts/kindeditor/lang/zh_CN.js +237 -0
- data/vendor/assets/javascripts/kindeditor/lang/zh_TW.js +235 -0
- data/vendor/assets/javascripts/kindeditor/plugins/anchor/anchor.js +46 -0
- data/vendor/assets/javascripts/kindeditor/plugins/autoheight/autoheight.js +54 -0
- data/vendor/assets/javascripts/kindeditor/plugins/baidumap/baidumap.js +93 -0
- data/vendor/assets/javascripts/kindeditor/plugins/baidumap/index.html +83 -0
- data/vendor/assets/javascripts/kindeditor/plugins/baidumap/map.html +43 -0
- data/vendor/assets/javascripts/kindeditor/plugins/clearhtml/clearhtml.js +29 -0
- data/vendor/assets/javascripts/kindeditor/plugins/code/code.js +62 -0
- data/vendor/assets/javascripts/kindeditor/plugins/code/prettify.css +13 -0
- data/vendor/assets/javascripts/kindeditor/plugins/code/prettify.js +28 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/emoticons.js +129 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/0.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/1.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/10.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/100.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/101.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/102.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/103.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/104.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/105.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/106.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/107.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/108.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/109.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/11.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/110.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/111.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/112.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/113.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/114.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/115.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/116.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/117.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/118.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/119.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/12.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/120.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/121.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/122.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/123.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/124.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/125.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/126.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/127.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/128.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/129.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/13.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/130.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/131.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/132.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/133.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/134.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/14.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/15.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/16.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/17.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/18.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/19.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/2.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/20.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/21.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/22.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/23.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/24.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/25.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/26.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/27.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/28.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/29.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/3.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/30.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/31.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/32.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/33.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/34.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/35.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/36.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/37.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/38.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/39.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/4.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/40.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/41.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/42.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/43.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/44.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/45.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/46.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/47.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/48.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/49.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/5.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/50.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/51.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/52.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/53.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/54.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/55.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/56.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/57.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/58.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/59.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/6.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/60.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/61.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/62.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/63.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/64.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/65.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/66.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/67.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/68.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/69.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/7.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/70.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/71.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/72.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/73.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/74.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/75.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/76.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/77.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/78.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/79.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/8.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/80.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/81.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/82.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/83.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/84.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/85.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/86.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/87.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/88.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/89.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/9.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/90.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/91.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/92.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/93.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/94.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/95.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/96.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/97.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/98.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/99.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/static.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/filemanager.js +189 -0
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/file-16.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/file-64.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/folder-16.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/folder-64.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/go-up.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/flash/flash.js +161 -0
- data/vendor/assets/javascripts/kindeditor/plugins/image/image.js +328 -0
- data/vendor/assets/javascripts/kindeditor/plugins/image/images/align_left.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/image/images/align_right.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/image/images/align_top.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/image/images/refresh.png +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/insertfile/insertfile.js +138 -0
- data/vendor/assets/javascripts/kindeditor/plugins/lineheight/lineheight.js +38 -0
- data/vendor/assets/javascripts/kindeditor/plugins/link/link.js +66 -0
- data/vendor/assets/javascripts/kindeditor/plugins/map/map.html +57 -0
- data/vendor/assets/javascripts/kindeditor/plugins/map/map.js +137 -0
- data/vendor/assets/javascripts/kindeditor/plugins/media/media.js +170 -0
- data/vendor/assets/javascripts/kindeditor/plugins/modal/modal.js +43 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/image.png +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/select-files-en.png +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/select-files-zh_CN.png +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/swfupload.swf +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/multiimage.js +1384 -0
- data/vendor/assets/javascripts/kindeditor/plugins/pagebreak/pagebreak.js +27 -0
- data/vendor/assets/javascripts/kindeditor/plugins/plainpaste/plainpaste.js +41 -0
- data/vendor/assets/javascripts/kindeditor/plugins/preview/preview.js +31 -0
- data/vendor/assets/javascripts/kindeditor/plugins/quickformat/quickformat.js +81 -0
- data/vendor/assets/javascripts/kindeditor/plugins/smimage/smimage.js +267 -0
- data/vendor/assets/javascripts/kindeditor/plugins/table/table.js +712 -0
- data/vendor/assets/javascripts/kindeditor/plugins/template/html/1.html +14 -0
- data/vendor/assets/javascripts/kindeditor/plugins/template/html/2.html +42 -0
- data/vendor/assets/javascripts/kindeditor/plugins/template/html/3.html +36 -0
- data/vendor/assets/javascripts/kindeditor/plugins/template/template.js +58 -0
- data/vendor/assets/javascripts/kindeditor/plugins/wordpaste/wordpaste.js +51 -0
- data/vendor/assets/javascripts/kindeditor/themes/common/anchor.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/common/blank.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/common/flash.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/common/loading.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/common/media.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/common/rm.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/default/background.png +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/default/default.css +1158 -0
- data/vendor/assets/javascripts/kindeditor/themes/default/default.png +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/qq/editor.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/qq/qq.css +143 -0
- data/vendor/assets/javascripts/kindeditor/themes/simple/simple.css +100 -0
- metadata +310 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a233f784500c40bf8d95c569a4af4c2894f1cbeede3577d7a4895a5f2d0a6988
|
4
|
+
data.tar.gz: f01f62cc6e0c173f6f2dea82ec10d2f6249826fc812ea83fb10b22a029471765
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 724387570fa430cce561126e61bec08f0d229f89bb1114806786d5ff238eff6eb31d6d4994d7cd818b8d26937341d382e66086e0ac38c8659adf1ca08517eb80
|
7
|
+
data.tar.gz: 8adc18bec8f5830ecae7a45397e127c3ecb5982ec0c33ccefa02aa184808c47ddda22bdc2ddd5bb2ed7a60a7d750e67e1349ff077f37ef0ebe1be4de62943b01
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,526 @@
|
|
1
|
+
# Kindeditor for Ruby on Rails [![Gem Version](https://badge.fury.io/rb/rails_kindeditor.png)](http://badge.fury.io/rb/rails_kindeditor)
|
2
|
+
|
3
|
+
Kindeditor is a WYSIWYG javascript editor, visit http://www.kindsoft.net for details.
|
4
|
+
rails_kindeditor will helps your rails app integrate with kindeditor, includes images and files uploading.
|
5
|
+
|
6
|
+
<img src="https://github.com/Macrow/rails_kindeditor/raw/master/screenshots/rails_kindeditor.png" alt="rails_indeditor">
|
7
|
+
|
8
|
+
## Installation and usage
|
9
|
+
|
10
|
+
### Add this to your Gemfile
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'rails_kindeditor'
|
14
|
+
```
|
15
|
+
|
16
|
+
### Run "bundle" command.
|
17
|
+
|
18
|
+
```bash
|
19
|
+
bundle
|
20
|
+
```
|
21
|
+
|
22
|
+
### Run install generator:
|
23
|
+
|
24
|
+
```bash
|
25
|
+
rails generate rails_kindeditor:install
|
26
|
+
```
|
27
|
+
notice: rails_kindeditor needs applications.js in your project.
|
28
|
+
|
29
|
+
### Rails4 in production mode
|
30
|
+
|
31
|
+
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
|
32
|
+
In Rails 4.0's production mode, please run 'rake kindeditor:assets', this method just copy kindeditor into public folder.
|
33
|
+
|
34
|
+
```bash
|
35
|
+
rake kindeditor:assets
|
36
|
+
```
|
37
|
+
|
38
|
+
### Usage:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
1. <%= kindeditor_tag :content, 'default content value' %>
|
42
|
+
# or <%= kindeditor_tag :content, 'default content value', :width => 800, :height => 300 %>
|
43
|
+
# or <%= kindeditor_tag :content, 'default content value', :allowFileManager => false %>
|
44
|
+
```
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
2. <%= form_for @article do |f| %>
|
48
|
+
...
|
49
|
+
<%= f.kindeditor :content %>
|
50
|
+
# or <%= f.kindeditor :content, :width => 800, :height => 300 %>
|
51
|
+
# or <%= f.kindeditor :content, :allowFileManager => false %>
|
52
|
+
...
|
53
|
+
<% end %>
|
54
|
+
```
|
55
|
+
You can use kindeditor's initial parameters as usual, please visit http://www.kindsoft.net/docs/option.html for details.
|
56
|
+
|
57
|
+
additionally, rails_kindeditor provides one "simple_mode" parameter for render simple mode quickly.
|
58
|
+
|
59
|
+
<img src="https://github.com/Macrow/rails_kindeditor/raw/master/screenshots/simple_mode.png" alt="simple mode">
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
kindeditor_tag :content, 'default content value', :simple_mode => true
|
63
|
+
f.kindeditor :content, :simple_mode => true
|
64
|
+
f.input :content, :as => :kindeditor, :input_html => { :simple_mode => true } # simple_form & formtastic
|
65
|
+
```
|
66
|
+
|
67
|
+
That's all.
|
68
|
+
|
69
|
+
### Work with turbolinks
|
70
|
+
|
71
|
+
rails_kindeditor will not load the scripts under the turbolinks, there's two way to solve this problem:
|
72
|
+
|
73
|
+
1.use "'data-no-turbolink' => true" when we need to load kindeditor,this will shut down the turbolinks in this page
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
<%= link_to 'Edit', edit_article_path(article), 'data-no-turbolink' => true %>
|
77
|
+
```
|
78
|
+
|
79
|
+
2.load kindeditor manually, but you should specify the parameters again, include the textarea's id.
|
80
|
+
|
81
|
+
```coffeescript
|
82
|
+
# coffeescript code
|
83
|
+
$(document).on 'page:load', ->
|
84
|
+
if $('#article_content').length > 0
|
85
|
+
KindEditor.create '#article_content', "width":"100%", "height":300, "allowFileManager":true, "uploadJson":"/kindeditor/upload", "fileManagerJson":"/kindeditor/filemanager"
|
86
|
+
```
|
87
|
+
|
88
|
+
simple mode
|
89
|
+
```coffeescript
|
90
|
+
# coffeescript code
|
91
|
+
$(document).on 'page:load', ->
|
92
|
+
if $('#article_content').length > 0
|
93
|
+
KindEditor.create '#article_content',
|
94
|
+
"width":"100%",
|
95
|
+
"height":300,
|
96
|
+
"allowFileManager":true,
|
97
|
+
"uploadJson":"/kindeditor/upload",
|
98
|
+
"fileManagerJson":"/kindeditor/filemanager",
|
99
|
+
"items":["fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","removeformat","|","justifyleft","justifycenter","justifyright","insertorderedlist","insertunorderedlist","|","emoticons","image","link"]
|
100
|
+
```
|
101
|
+
|
102
|
+
When you need to specify the owner_id:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
f.kindeditor :content, owner_id: @article.id, data: {upload: kindeditor_upload_json_path(owner_id: @article.id), filemanager: kindeditor_file_manager_json_path}
|
106
|
+
```
|
107
|
+
|
108
|
+
```coffeescript
|
109
|
+
# coffeescript code
|
110
|
+
$(document).on 'page:load', ->
|
111
|
+
if $('#article_content').length > 0
|
112
|
+
KindEditor.create '#article_content',
|
113
|
+
"width" : "100%",
|
114
|
+
"height" : 300,
|
115
|
+
"allowFileManager" : true,
|
116
|
+
"uploadJson" : $('#article_content').data('upload'),
|
117
|
+
"fileManagerJson" : $('#article_content').data('filemanager')
|
118
|
+
```
|
119
|
+
|
120
|
+
### Include javascript files at bottom ? Not in the head tag ? How can I load kindeditor correctly ?
|
121
|
+
|
122
|
+
For some reasons, you includes javascript files at bottom in your template, rails_kindeditor provides a options for lazyload:
|
123
|
+
|
124
|
+
```ruby
|
125
|
+
<%= f.kindeditor :content, :window_onload => true %>
|
126
|
+
```
|
127
|
+
|
128
|
+
Warning: Kindeditor will load after all the objects loaded.
|
129
|
+
|
130
|
+
## SimpleForm and Formtastic integration
|
131
|
+
|
132
|
+
### simple_form:
|
133
|
+
|
134
|
+
```ruby
|
135
|
+
<%= form.input :content, :as => :kindeditor %>
|
136
|
+
# or
|
137
|
+
<%= form.input :content, :as => :kindeditor, :label => false, :input_html => { :width => 800, :height => 300 } %>
|
138
|
+
```
|
139
|
+
|
140
|
+
### formtastic:
|
141
|
+
|
142
|
+
```ruby
|
143
|
+
<%= form.input :content, :as => :kindeditor %>
|
144
|
+
# or
|
145
|
+
<%= form.input :content, :as => :kindeditor, :input_html => { :height => 300 } %>
|
146
|
+
```
|
147
|
+
|
148
|
+
## How to get kindeditor's content
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
<%= form_for @article do |f| %>
|
152
|
+
<%= f.kindeditor :content, :editor_id => 'my_editor' %>
|
153
|
+
<% end %>
|
154
|
+
```
|
155
|
+
|
156
|
+
You can get content like this:
|
157
|
+
|
158
|
+
```javascript
|
159
|
+
// Javascript code
|
160
|
+
my_editor.html();
|
161
|
+
```
|
162
|
+
|
163
|
+
## Upload options configuration
|
164
|
+
|
165
|
+
When you run "rails generate rails_kindeditor:install", installer will copy configuration files in config/initializers folder.
|
166
|
+
You can customize some option for uploading.
|
167
|
+
|
168
|
+
```ruby
|
169
|
+
# Specify the subfolders in public directory.
|
170
|
+
# You can customize it , eg: config.upload_dir = 'this/is/my/folder'
|
171
|
+
config.upload_dir = 'uploads'
|
172
|
+
|
173
|
+
# Allowed file types for upload.
|
174
|
+
config.upload_image_ext = %w[gif jpg jpeg png bmp]
|
175
|
+
config.upload_flash_ext = %w[swf flv]
|
176
|
+
config.upload_media_ext = %w[swf flv mp3 wav wma wmv mid avi mpg asf rm rmvb]
|
177
|
+
config.upload_file_ext = %w[doc docx xls xlsx ppt htm html txt zip rar gz bz2]
|
178
|
+
|
179
|
+
# If you don't want use the original file name (carrierwave carry)
|
180
|
+
config.use_original_filename = false
|
181
|
+
|
182
|
+
# and if you use fixed_folder it will use the original file name
|
183
|
+
<%= form.kindeditor :content, fixed_folder: 'game/img' %>
|
184
|
+
|
185
|
+
# if you use fixed_folder and you don't use the original file name ,you can add digest_filename = true
|
186
|
+
|
187
|
+
<%= form.kindeditor :content, fixed_folder: 'game/img',digest_filename: true %>
|
188
|
+
|
189
|
+
# Porcess upload image size, need mini_magick
|
190
|
+
# before => after
|
191
|
+
# eg: 1600x1600 => 800x800
|
192
|
+
# 1600x800 => 800x400
|
193
|
+
# 400x400 => 400x400 # No Change
|
194
|
+
# config.image_resize_to_limit = [800, 800]
|
195
|
+
```
|
196
|
+
|
197
|
+
## Save upload file information into database(optional)
|
198
|
+
|
199
|
+
rails_kindeditor can save upload file information into database.
|
200
|
+
|
201
|
+
### Just run migration generate, there are two ORM options for you: 1.active_record 2.mongoid, default is active_record.
|
202
|
+
|
203
|
+
```bash
|
204
|
+
rails generate rails_kindeditor:migration
|
205
|
+
or
|
206
|
+
rails generate rails_kindeditor:migration -o mongoid
|
207
|
+
```
|
208
|
+
|
209
|
+
### The generator will copy model and migration to your application. When you are done, remember run rake db:migrate:
|
210
|
+
|
211
|
+
```bash
|
212
|
+
rake db:migrate
|
213
|
+
```
|
214
|
+
|
215
|
+
### Delete uploaded files automatically (only for active_record)
|
216
|
+
|
217
|
+
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.
|
218
|
+
|
219
|
+
####1. specify the owner_id for kindeditor
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
<%= form_for @article do |f| %>
|
223
|
+
...
|
224
|
+
<%= f.kindeditor :content, :owner_id => @article.id %>
|
225
|
+
...
|
226
|
+
<% end %>
|
227
|
+
```
|
228
|
+
|
229
|
+
```ruby
|
230
|
+
Warnning: the @article must be created before this scene, the @article.id should not be empty.
|
231
|
+
```
|
232
|
+
|
233
|
+
####2. add has_many_kindeditor_assets in your own model
|
234
|
+
|
235
|
+
```ruby
|
236
|
+
class Article < ActiveRecord::Base
|
237
|
+
has_many_kindeditor_assets :attachments, :dependent => :destroy
|
238
|
+
# has_many_kindeditor_assets :attachments, :dependent => :nullify
|
239
|
+
# has_many_kindeditor_assets :your_name, :dependent => :destroy
|
240
|
+
end
|
241
|
+
```
|
242
|
+
|
243
|
+
####3. relationship
|
244
|
+
|
245
|
+
```ruby
|
246
|
+
article = Article.first
|
247
|
+
article.attachments # => the article's assets uploaded by kindeditor
|
248
|
+
asset = article.attachments.first
|
249
|
+
asset.owner # => aritcle
|
250
|
+
```
|
251
|
+
|
252
|
+
####4 If you want a private folder for every user (eg: in sns website),add a method: private_editor_resource_path,
|
253
|
+
|
254
|
+
```ruby
|
255
|
+
class User < ActiveRecord::Base
|
256
|
+
def private_editor_resource_path
|
257
|
+
@private_path ||= Digest::MD5.hexdigest(SecretPathKey + self.id.to_s)[0..10]
|
258
|
+
end
|
259
|
+
end
|
260
|
+
```
|
261
|
+
####4 If you want a fixed_folder for special scence,you can set fixed_folder options
|
262
|
+
|
263
|
+
```ruby
|
264
|
+
<%= f.kindeditor :content,fixed_folder: "custom_folder" %>
|
265
|
+
```
|
266
|
+
|
267
|
+
```ruby
|
268
|
+
Note: you must need another controller method: current_user (current login user)
|
269
|
+
```
|
270
|
+
|
271
|
+
### If you're using mongoid, please add 'gem "carrierwave-mongoid"' in your Gemfile
|
272
|
+
|
273
|
+
```ruby
|
274
|
+
gem 'carrierwave-mongoid'
|
275
|
+
```
|
276
|
+
|
277
|
+
## License
|
278
|
+
|
279
|
+
MIT License.
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
# Kindeditor for Ruby on Rails 中文文档
|
284
|
+
|
285
|
+
Kindeditor是国产的所见即所得javascript富文本编辑器, 访问 http://www.kindsoft.net 获取更多信息.
|
286
|
+
rails_kindeditor可以帮助你的rails程序集成kindeditor,包括了图片和附件上传功能,文件按照类型、日期进行存储。
|
287
|
+
|
288
|
+
## 安装及使用
|
289
|
+
|
290
|
+
### 将下面代码加入Gemfile:
|
291
|
+
|
292
|
+
```ruby
|
293
|
+
gem 'rails_kindeditor'
|
294
|
+
```
|
295
|
+
|
296
|
+
### 运行"bundle"命令:
|
297
|
+
|
298
|
+
```bash
|
299
|
+
bundle
|
300
|
+
```
|
301
|
+
|
302
|
+
### 安装Kindeditor,运行下面的代码:
|
303
|
+
|
304
|
+
```bash
|
305
|
+
rails generate rails_kindeditor:install
|
306
|
+
```
|
307
|
+
注意: 在你的工程中需要有application.js文件。
|
308
|
+
|
309
|
+
### Rails4 in production mode
|
310
|
+
|
311
|
+
从Rails 4.0开始, precompiling assets不再自动从vendor/assets和lib/assets拷贝非JS/CSS文件. 参见 https://github.com/rails/rails/pull/7968
|
312
|
+
如果要使用Rails 4.0的生产模式,请运行'rake kindeditor:assets', 此方法可将kindeditor自动拷贝到你的public/assets目录.
|
313
|
+
|
314
|
+
```bash
|
315
|
+
rake kindeditor:assets
|
316
|
+
```
|
317
|
+
|
318
|
+
### 使用方法:
|
319
|
+
|
320
|
+
```ruby
|
321
|
+
1. <%= kindeditor_tag :content, 'default content value' %>
|
322
|
+
# or <%= kindeditor_tag :content, 'default content value', :width => 800, :height => 300 %>
|
323
|
+
# or <%= kindeditor_tag :content, 'default content value', :allowFileManager => false %>
|
324
|
+
```
|
325
|
+
|
326
|
+
```ruby
|
327
|
+
2. <%= form_for @article do |f| -%>
|
328
|
+
...
|
329
|
+
<%= f.kindeditor :content %>
|
330
|
+
# or <%= f.kindeditor :content, :width => 800, :height => 300 %>
|
331
|
+
# or <%= f.kindeditor :content, :allowFileManager => false %>
|
332
|
+
...
|
333
|
+
<% end -%>
|
334
|
+
```
|
335
|
+
你可以像往常那样使用kindeditor自身的初始化参数,请访问 http://www.kindsoft.net/docs/option.html 查看更多参数。
|
336
|
+
|
337
|
+
另外,rails_kindeditor还额外提供一个"simple_mode"参数,以便快捷使用简单模式的kindeditor。
|
338
|
+
|
339
|
+
```ruby
|
340
|
+
kindeditor_tag :content, 'default content value', :simple_mode => true
|
341
|
+
f.kindeditor :content, :simple_mode => true
|
342
|
+
f.input :content, :as => :kindeditor, :input_html => { :simple_mode => true } # simple_form & formtastic
|
343
|
+
```
|
344
|
+
|
345
|
+
完毕!
|
346
|
+
|
347
|
+
### 如何在turbolinks下使用
|
348
|
+
|
349
|
+
rails_kindeditor在turbolinks下不会正常加载,只有当页面刷新时才正常。turbolinks的机制就是这样的,页面根本没刷新,这和pjax是一样的,所以kindeditor没加载很正常。
|
350
|
+
|
351
|
+
有两个办法可以解决:
|
352
|
+
|
353
|
+
1.在需要加载kindeditor的链接加入 'data-no-turbolink' => true ,此时相当在这个页面于关闭turbolinks。
|
354
|
+
|
355
|
+
```ruby
|
356
|
+
<%= link_to 'Edit', edit_article_path(article), 'data-no-turbolink' => true %>
|
357
|
+
```
|
358
|
+
|
359
|
+
2.在turbolinks载入完毕后手动加载kindeditor,不过所有参数都要设置,而且需要知道并设定textarea的id。
|
360
|
+
|
361
|
+
```coffeescript
|
362
|
+
# coffeescript code
|
363
|
+
$(document).on 'page:load', ->
|
364
|
+
if $('#article_content').length > 0
|
365
|
+
KindEditor.create '#article_content', "width":"100%", "height":300, "allowFileManager":true, "uploadJson":"/kindeditor/upload", "fileManagerJson":"/kindeditor/filemanager"
|
366
|
+
```
|
367
|
+
|
368
|
+
simple模式也需要手动设定
|
369
|
+
```coffeescript
|
370
|
+
# coffeescript code
|
371
|
+
$(document).on 'page:load', ->
|
372
|
+
if $('#article_content').length > 0
|
373
|
+
KindEditor.create '#article_content',
|
374
|
+
"width":"100%",
|
375
|
+
"height":300,
|
376
|
+
"allowFileManager":true,
|
377
|
+
"uploadJson":"/kindeditor/upload",
|
378
|
+
"fileManagerJson":"/kindeditor/filemanager",
|
379
|
+
"items":["fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","removeformat","|","justifyleft","justifycenter","justifyright","insertorderedlist","insertunorderedlist","|","emoticons","image","link"]
|
380
|
+
```
|
381
|
+
|
382
|
+
需要指定owner_id的方法:
|
383
|
+
|
384
|
+
```ruby
|
385
|
+
f.kindeditor :content, owner_id: @article.id, data: {upload: kindeditor_upload_json_path(owner_id: @article.id), filemanager: kindeditor_file_manager_json_path}
|
386
|
+
```
|
387
|
+
|
388
|
+
```coffeescript
|
389
|
+
# coffeescript code
|
390
|
+
$(document).on 'page:load', ->
|
391
|
+
if $('#article_content').length > 0
|
392
|
+
KindEditor.create '#article_content',
|
393
|
+
"width" : "100%",
|
394
|
+
"height" : 300,
|
395
|
+
"allowFileManager" : true,
|
396
|
+
"uploadJson" : $('#article_content').data('upload'),
|
397
|
+
"fileManagerJson" : $('#article_content').data('filemanager')
|
398
|
+
```
|
399
|
+
|
400
|
+
### 把javascript放在模板最下方,不放在head里面,如何正确加载kindeditor?
|
401
|
+
|
402
|
+
有时候,为了加快页面载入速度,也许你会把javascript引用放在template的底部,rails_kindeditor提供了一个参数可以确保正常加载:
|
403
|
+
|
404
|
+
```ruby
|
405
|
+
<%= f.kindeditor :content, :window_onload => true %>
|
406
|
+
```
|
407
|
+
|
408
|
+
警告:Kindeditor会在页面所有的内容加载完毕后才进行加载,所以需谨慎使用
|
409
|
+
|
410
|
+
## SimpleForm与Formtastic集成:
|
411
|
+
|
412
|
+
### simple_form:
|
413
|
+
|
414
|
+
```ruby
|
415
|
+
<%= form.input :content, :as => :kindeditor, :label => false, :input_html => { :width => 800, :height => 300 } %>
|
416
|
+
```
|
417
|
+
|
418
|
+
### formtastic:
|
419
|
+
|
420
|
+
```ruby
|
421
|
+
<%= form.input :content, :as => :kindeditor %>
|
422
|
+
<%= form.input :content, :as => :kindeditor, :input_html => { :height => 300 } %>
|
423
|
+
```
|
424
|
+
## 如何获取kindeditor的内容
|
425
|
+
|
426
|
+
```ruby
|
427
|
+
<%= form_for @article do |f| %>
|
428
|
+
<%= f.kindeditor :content, :editor_id => 'my_editor' %>
|
429
|
+
<% end %>
|
430
|
+
```
|
431
|
+
|
432
|
+
可通过下面的Javascript代码获取内容:
|
433
|
+
|
434
|
+
```javascript
|
435
|
+
// Javascript code
|
436
|
+
my_editor.html();
|
437
|
+
```
|
438
|
+
|
439
|
+
## 上传图片及文件配置
|
440
|
+
|
441
|
+
当你运行"rails generate rails_kindeditor:install"的时候,安装器会将配置文件拷贝到config/initializers文件夹。
|
442
|
+
你可以配置以下上传选项:
|
443
|
+
|
444
|
+
```ruby
|
445
|
+
# 指定上传目录,目录可以指定多级,都存储在public目录下.
|
446
|
+
# You can customize it , eg: config.upload_dir = 'this/is/my/folder'
|
447
|
+
config.upload_dir = 'uploads'
|
448
|
+
|
449
|
+
# 指定允许上传的文件类型.
|
450
|
+
config.upload_image_ext = %w[gif jpg jpeg png bmp]
|
451
|
+
config.upload_flash_ext = %w[swf flv]
|
452
|
+
config.upload_media_ext = %w[swf flv mp3 wav wma wmv mid avi mpg asf rm rmvb]
|
453
|
+
config.upload_file_ext = %w[doc docx xls xlsx ppt htm html txt zip rar gz bz2]
|
454
|
+
|
455
|
+
# 处理上传文件,需要mini_magick
|
456
|
+
# 处理以前 => 处理以后
|
457
|
+
# eg: 1600x1600 => 800x800
|
458
|
+
# 1600x800 => 800x400
|
459
|
+
# 400x400 => 400x400 # 图片小于该限制尺寸则不作处理
|
460
|
+
# config.image_resize_to_limit = [800, 800]
|
461
|
+
```
|
462
|
+
|
463
|
+
## 将上传文件信息记录入数据库(可选)
|
464
|
+
|
465
|
+
rails_kindeditor 可以将上传文件信息记录入数据库,以便扩展应用.
|
466
|
+
|
467
|
+
### 运行下面的代码,有两项选项:1.active_record 2.mongoid,默认是active_record。
|
468
|
+
|
469
|
+
```bash
|
470
|
+
rails generate rails_kindeditor:migration
|
471
|
+
or
|
472
|
+
rails generate rails_kindeditor:migration -o mongoid
|
473
|
+
```
|
474
|
+
|
475
|
+
### 运行下面的代码:
|
476
|
+
|
477
|
+
```bash
|
478
|
+
rake db:migrate
|
479
|
+
```
|
480
|
+
|
481
|
+
### 自动删除上传的文件(仅在active_record下工作)
|
482
|
+
|
483
|
+
你可以为上传的文件指定归属,比如一名用户,或者一篇文章,当用户或者文章被删除时,所有属于该用户或者该文章的上传文件将会被自动删除。
|
484
|
+
|
485
|
+
####1. 为kindeditor指定owner_id
|
486
|
+
|
487
|
+
```ruby
|
488
|
+
<%= form_for @article do |f| %>
|
489
|
+
...
|
490
|
+
<%= f.kindeditor :content, :owner_id => @article.id %>
|
491
|
+
...
|
492
|
+
<% end %>
|
493
|
+
```
|
494
|
+
|
495
|
+
```ruby
|
496
|
+
警告: @article应该事先被创建,@article.id不应该是空的。
|
497
|
+
```
|
498
|
+
|
499
|
+
####2. 在你自己的模型里加入has_many_kindeditor_assets
|
500
|
+
|
501
|
+
```ruby
|
502
|
+
class Article < ActiveRecord::Base
|
503
|
+
has_many_kindeditor_assets :attachments, :dependent => :destroy
|
504
|
+
# has_many_kindeditor_assets :attachments, :dependent => :nullify
|
505
|
+
# has_many_kindeditor_assets :your_name, :dependent => :destroy
|
506
|
+
end
|
507
|
+
```
|
508
|
+
|
509
|
+
####3. 相互关系
|
510
|
+
|
511
|
+
```ruby
|
512
|
+
article = Article.first
|
513
|
+
article.attachments # => the article's assets uploaded by kindeditor
|
514
|
+
asset = article.attachments.first
|
515
|
+
asset.owner # => aritcle
|
516
|
+
```
|
517
|
+
|
518
|
+
### 如果你使用的是mongoid, 请在你的Gemfile里加入'gem "carrierwave-mongoid"'
|
519
|
+
|
520
|
+
```ruby
|
521
|
+
gem 'carrierwave-mongoid'
|
522
|
+
```
|
523
|
+
|
524
|
+
## License
|
525
|
+
|
526
|
+
MIT License.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
//= require kindeditor/kindeditor.js
|
@@ -0,0 +1,136 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
require "find"
|
3
|
+
class Kindeditor::AssetsController < ApplicationController
|
4
|
+
skip_before_action :verify_authenticity_token
|
5
|
+
def create
|
6
|
+
@imgFile, @dir, @fixed_folder,@digest_filename = params[:imgFile], params[:dir], params[:fixed_folder],params[:digest_filename]
|
7
|
+
|
8
|
+
unless @imgFile.nil?
|
9
|
+
if Kindeditor::AssetUploader.save_upload_info? # save upload info into database
|
10
|
+
begin
|
11
|
+
@asset = "Kindeditor::#{@dir.camelize}".constantize.new(:asset => @imgFile,:fixed_folder => @fixed_folder)
|
12
|
+
|
13
|
+
@asset.private_path = current_user.private_editor_resource_path if current_user && current_user.respond_to?(:private_editor_resource_path)
|
14
|
+
@asset.owner_id = params[:owner_id] ? params[:owner_id] : 0
|
15
|
+
logger.warn '========= Warning: the owner_id is 0, "delete uploaded files automatically" will not work. =========' if defined?(logger) && @asset.owner_id == 0
|
16
|
+
@asset.asset_type = @dir
|
17
|
+
if @asset.save
|
18
|
+
render :text => ({:error => 0, :url => @asset.asset.url}.to_json)
|
19
|
+
else
|
20
|
+
show_error(@asset.errors.full_messages)
|
21
|
+
end
|
22
|
+
rescue Exception => e
|
23
|
+
show_error(e.to_s)
|
24
|
+
end
|
25
|
+
else # do not touch database
|
26
|
+
begin
|
27
|
+
uploader = "Kindeditor::#{@dir.camelize}Uploader".constantize.new
|
28
|
+
uploader.private_path = current_user.private_editor_resource_path if current_user && current_user.respond_to?(:private_editor_resource_path)
|
29
|
+
uploader.fixed_folder = @fixed_folder
|
30
|
+
uploader.digest_filename = @digest_filename
|
31
|
+
uploader.store!(@imgFile)
|
32
|
+
render :text => ({:error => 0, :url => uploader.url}.to_json)
|
33
|
+
rescue CarrierWave::UploadError => e
|
34
|
+
show_error(e.message)
|
35
|
+
rescue Exception => e
|
36
|
+
show_error(e.to_s)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
else
|
40
|
+
show_error("No File Selected!")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def list
|
45
|
+
@root_path = "#{Rails.public_path}/#{RailsKindeditor.upload_store_dir}/"
|
46
|
+
@root_url = "/#{RailsKindeditor.upload_store_dir}/"
|
47
|
+
if current_user && current_user.respond_to?(:private_editor_resource_path)
|
48
|
+
@root_path = "#{Rails.public_path}/#{RailsKindeditor.upload_store_dir}/#{current_user.private_editor_resource_path}/"
|
49
|
+
@root_url = "/#{RailsKindeditor.upload_store_dir}/#{current_user.private_editor_resource_path}/"
|
50
|
+
end
|
51
|
+
@img_ext = Kindeditor::AssetUploader::EXT_NAMES[:image]
|
52
|
+
@dir = params[:dir].strip || ""
|
53
|
+
unless Kindeditor::AssetUploader::EXT_NAMES.keys.map(&:to_s).push("").include?(@dir)
|
54
|
+
render :text => "Invalid Directory name."
|
55
|
+
return
|
56
|
+
end
|
57
|
+
|
58
|
+
Dir.chdir(Rails.public_path)
|
59
|
+
@root_url.gsub(/\w+/).each do |dir|
|
60
|
+
Dir.mkdir(dir) unless Dir.exist?(dir)
|
61
|
+
Dir.chdir(dir)
|
62
|
+
end
|
63
|
+
|
64
|
+
Dir.mkdir(@dir) unless Dir.exist?(@dir)
|
65
|
+
|
66
|
+
@root_path += @dir + "/"
|
67
|
+
@root_url += @dir + "/"
|
68
|
+
|
69
|
+
@path = params[:path].strip || ""
|
70
|
+
if @path.empty?
|
71
|
+
@current_path = @root_path
|
72
|
+
@current_url = @root_url
|
73
|
+
@current_dir_path = ""
|
74
|
+
@moveup_dir_path = ""
|
75
|
+
else
|
76
|
+
@current_path = @root_path + @path + "/"
|
77
|
+
@current_url = @root_url + @path + "/"
|
78
|
+
@current_dir_path = @path
|
79
|
+
@moveup_dir_path = @current_dir_path.gsub(/(.*?)[^\/]+\/$/, "")
|
80
|
+
end
|
81
|
+
@order = %w(name size type).include?(params[:order].downcase) ? params[:order].downcase : "name"
|
82
|
+
if !@current_path.match(/\.\./).nil?
|
83
|
+
render :text => "Access is not allowed."
|
84
|
+
return
|
85
|
+
end
|
86
|
+
if @current_path.match(/\/$/).nil?
|
87
|
+
render :text => "Parameter is not valid."
|
88
|
+
return
|
89
|
+
end
|
90
|
+
if !File.exist?(@current_path) || !File.directory?(@current_path)
|
91
|
+
render :text => "Directory does not exist."
|
92
|
+
return
|
93
|
+
end
|
94
|
+
@file_list = []
|
95
|
+
Dir.foreach(@current_path) do |filename|
|
96
|
+
hash = {}
|
97
|
+
if filename != "." and filename != ".." and filename != ".DS_Store"
|
98
|
+
file = @current_path + filename
|
99
|
+
if File.directory?(file)
|
100
|
+
hash[:is_dir] = true
|
101
|
+
hash[:has_file] = (Dir.foreach(file).count > 2)
|
102
|
+
hash[:filesize] = 0
|
103
|
+
hash[:is_photo] = false
|
104
|
+
hash[:filetype] = ""
|
105
|
+
else
|
106
|
+
hash[:is_dir] = false
|
107
|
+
hash[:has_file] = false
|
108
|
+
hash[:filesize] = File.size(file)
|
109
|
+
hash[:dir_path] = ""
|
110
|
+
file_ext = file.gsub(/.*\./,"")
|
111
|
+
hash[:is_photo] = @img_ext.include?(file_ext)
|
112
|
+
hash[:filetype] = file_ext
|
113
|
+
end
|
114
|
+
hash[:filename] = filename
|
115
|
+
hash[:datetime] = File.mtime(file).to_s(:db)
|
116
|
+
@file_list << hash
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
@file_list.sort! {|a, b| a["file#{@order}".to_sym] <=> b["file#{@order}".to_sym]}
|
121
|
+
|
122
|
+
@result = {}
|
123
|
+
@result[:moveup_dir_path] = @moveup_dir_path
|
124
|
+
@result[:current_dir_path] = @current_dir_path
|
125
|
+
@result[:current_url] = @current_url
|
126
|
+
@result[:total_count] = @file_list.count
|
127
|
+
@result[:file_list] = @file_list
|
128
|
+
render :text => @result.to_json
|
129
|
+
end
|
130
|
+
|
131
|
+
private
|
132
|
+
def show_error(msg)
|
133
|
+
render :text => ({:error => 1, :message => msg}.to_json)
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|