rails_kindeditor 0.3.20 → 0.4.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.
- checksums.yaml +4 -4
- data/README.md +174 -2
- data/app/controllers/kindeditor/assets_controller.rb +2 -0
- data/app/uploaders/kindeditor/asset_uploader.rb +3 -1
- data/lib/generators/rails_kindeditor/migration/templates/migration/migration.rb +2 -0
- data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/asset.rb +4 -2
- data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/asset.rb +4 -2
- data/lib/rails_kindeditor.rb +1 -0
- data/lib/rails_kindeditor/active_record.rb +14 -0
- data/lib/rails_kindeditor/helper.rb +17 -2
- data/lib/rails_kindeditor/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a331d5aea83a1d33f5ed64b196994908278ec25
|
4
|
+
data.tar.gz: 2f16cd3b105895b10c7f068e7f229f45774619e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65dffa2931494481a74d4dde52049510da0ae71ca2a0343f77aee4c33d7e0f9478ca5b6fc39c60a878f2eb98368bb1fa7f790abf10f37a48a8e7d7b2d60764b1
|
7
|
+
data.tar.gz: e55a273242e89548448f0b9eab0116acc51dece12c6791f425043b705a00016e3a2f3f8a9693dd6b40040d4d2dcb7a3270eb554980475d47e4aed27b453259e0
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@ rails_kindeditor will helps your rails app integrate with kindeditor, includes i
|
|
10
10
|
### Add this to your Gemfile
|
11
11
|
|
12
12
|
```ruby
|
13
|
-
gem 'rails_kindeditor', '~> 0.
|
13
|
+
gem 'rails_kindeditor', '~> 0.4.0'
|
14
14
|
```
|
15
15
|
|
16
16
|
### Run "bundle" command.
|
@@ -65,6 +65,57 @@ additionally, rails_kindeditor provides one "simple_mode" parameter for render s
|
|
65
65
|
|
66
66
|
That's all.
|
67
67
|
|
68
|
+
### Work with turbolinks
|
69
|
+
|
70
|
+
rails_kindeditor will not load the scripts under the turbolinks, there's two way to solve this problem:
|
71
|
+
|
72
|
+
1.use "'data-no-turbolink' => true" when we need to load kindeditor,this will shut down the turbolinks in this page
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
<%= link_to 'Edit', edit_article_path(article), 'data-no-turbolink' => true %>
|
76
|
+
```
|
77
|
+
|
78
|
+
2.load kindeditor manually, but you should specify the parameters again, include the textarea's id.
|
79
|
+
|
80
|
+
```coffeescript
|
81
|
+
# coffeescript code
|
82
|
+
$(document).on 'page:load', ->
|
83
|
+
if $('#article_content').length > 0
|
84
|
+
KindEditor.create '#article_content', "width":"100%", "height":300, "allowFileManager":true, "uploadJson":"/kindeditor/upload", "fileManagerJson":"/kindeditor/filemanager"
|
85
|
+
```
|
86
|
+
|
87
|
+
simple mode
|
88
|
+
```coffeescript
|
89
|
+
# coffeescript code
|
90
|
+
$(document).on 'page:load', ->
|
91
|
+
if $('#article_content').length > 0
|
92
|
+
KindEditor.create '#article_content',
|
93
|
+
"width":"100%",
|
94
|
+
"height":300,
|
95
|
+
"allowFileManager":true,
|
96
|
+
"uploadJson":"/kindeditor/upload",
|
97
|
+
"fileManagerJson":"/kindeditor/filemanager",
|
98
|
+
"items":["fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","removeformat","|","justifyleft","justifycenter","justifyright","insertorderedlist","insertunorderedlist","|","emoticons","image","link"]
|
99
|
+
```
|
100
|
+
|
101
|
+
When you need to specify the owner_id:
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
f.kindeditor :content, owner_id: @article.id, data: {upload: kindeditor_upload_json_path(owner_id: @article.id), filemanager: kindeditor_file_manager_json_path}
|
105
|
+
```
|
106
|
+
|
107
|
+
```coffeescript
|
108
|
+
# coffeescript code
|
109
|
+
$(document).on 'page:load', ->
|
110
|
+
if $('#article_content').length > 0
|
111
|
+
KindEditor.create '#article_content',
|
112
|
+
"width" : "100%",
|
113
|
+
"height" : 300,
|
114
|
+
"allowFileManager" : true,
|
115
|
+
"uploadJson" : $('#article_content').data('upload'),
|
116
|
+
"fileManagerJson" : $('#article_content').data('filemanager')
|
117
|
+
```
|
118
|
+
|
68
119
|
### Include javascript files at bottom ? Not in the head tag ? How can I load kindeditor correctly ?
|
69
120
|
|
70
121
|
For some reasons, you includes javascript files at bottom in your template, rails_kindeditor provides a options for lazyload:
|
@@ -150,6 +201,40 @@ rails_kindeditor can save upload file information into database.
|
|
150
201
|
rake db:migrate
|
151
202
|
```
|
152
203
|
|
204
|
+
### Delete uploaded files automatically (only for active_record)
|
205
|
+
|
206
|
+
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.
|
207
|
+
|
208
|
+
1. specify the owner_id for kindeditor
|
209
|
+
|
210
|
+
```ruby
|
211
|
+
<%= form_for @article do |f| %>
|
212
|
+
...
|
213
|
+
<%= f.kindeditor :content, :owner_id => @article.id %>
|
214
|
+
...
|
215
|
+
<% end %>
|
216
|
+
```
|
217
|
+
Warnning: the @article must be created before this scene, the @article.id should not be empty.
|
218
|
+
|
219
|
+
2. add has_many_kindeditor_assets in your own model
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
class Article < ActiveRecord::Base
|
223
|
+
has_many_kindeditor_assets :attachments, :dependent => :destroy
|
224
|
+
# has_many_kindeditor_assets :attachments, :dependent => :nullify
|
225
|
+
# has_many_kindeditor_assets :your_name, :dependent => :destroy
|
226
|
+
end
|
227
|
+
```
|
228
|
+
|
229
|
+
3. relationship
|
230
|
+
|
231
|
+
```ruby
|
232
|
+
article = Article.first
|
233
|
+
article.attachments # => the article's assets uploaded by kindeditor
|
234
|
+
asset = article.attachments.first
|
235
|
+
asset.owner # => aritcle
|
236
|
+
```
|
237
|
+
|
153
238
|
### If you're using mongoid, please add 'gem "carrierwave-mongoid"' in your Gemfile
|
154
239
|
|
155
240
|
```ruby
|
@@ -172,7 +257,7 @@ rails_kindeditor可以帮助你的rails程序集成kindeditor,包括了图片和
|
|
172
257
|
### 将下面代码加入Gemfile:
|
173
258
|
|
174
259
|
```ruby
|
175
|
-
gem 'rails_kindeditor', '~> 0.
|
260
|
+
gem 'rails_kindeditor', '~> 0.4.0'
|
176
261
|
```
|
177
262
|
|
178
263
|
### 运行"bundle"命令:
|
@@ -225,6 +310,59 @@ rails_kindeditor可以帮助你的rails程序集成kindeditor,包括了图片和
|
|
225
310
|
|
226
311
|
完毕!
|
227
312
|
|
313
|
+
### 如何在turbolinks下使用
|
314
|
+
|
315
|
+
rails_kindeditor在turbolinks下不会正常加载,只有当页面刷新时才正常。turbolinks的机制就是这样的,页面根本没刷新,这和pjax是一样的,所以kindeditor没加载很正常。
|
316
|
+
|
317
|
+
有两个办法可以解决:
|
318
|
+
|
319
|
+
1.在需要加载kindeditor的链接加入 'data-no-turbolink' => true ,此时相当在这个页面于关闭turbolinks。
|
320
|
+
|
321
|
+
```ruby
|
322
|
+
<%= link_to 'Edit', edit_article_path(article), 'data-no-turbolink' => true %>
|
323
|
+
```
|
324
|
+
|
325
|
+
2.在turbolinks载入完毕后手动加载kindeditor,不过所有参数都要设置,而且需要知道并设定textarea的id。
|
326
|
+
|
327
|
+
```coffeescript
|
328
|
+
# coffeescript code
|
329
|
+
$(document).on 'page:load', ->
|
330
|
+
if $('#article_content').length > 0
|
331
|
+
KindEditor.create '#article_content', "width":"100%", "height":300, "allowFileManager":true, "uploadJson":"/kindeditor/upload", "fileManagerJson":"/kindeditor/filemanager"
|
332
|
+
```
|
333
|
+
|
334
|
+
simple模式也需要手动设定
|
335
|
+
```coffeescript
|
336
|
+
# coffeescript code
|
337
|
+
$(document).on 'page:load', ->
|
338
|
+
if $('#article_content').length > 0
|
339
|
+
KindEditor.create '#article_content',
|
340
|
+
"width":"100%",
|
341
|
+
"height":300,
|
342
|
+
"allowFileManager":true,
|
343
|
+
"uploadJson":"/kindeditor/upload",
|
344
|
+
"fileManagerJson":"/kindeditor/filemanager",
|
345
|
+
"items":["fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","removeformat","|","justifyleft","justifycenter","justifyright","insertorderedlist","insertunorderedlist","|","emoticons","image","link"]
|
346
|
+
```
|
347
|
+
|
348
|
+
需要指定owner_id的方法:
|
349
|
+
|
350
|
+
```ruby
|
351
|
+
f.kindeditor :content, owner_id: @article.id, data: {upload: kindeditor_upload_json_path(owner_id: @article.id), filemanager: kindeditor_file_manager_json_path}
|
352
|
+
```
|
353
|
+
|
354
|
+
```coffeescript
|
355
|
+
# coffeescript code
|
356
|
+
$(document).on 'page:load', ->
|
357
|
+
if $('#article_content').length > 0
|
358
|
+
KindEditor.create '#article_content',
|
359
|
+
"width" : "100%",
|
360
|
+
"height" : 300,
|
361
|
+
"allowFileManager" : true,
|
362
|
+
"uploadJson" : $('#article_content').data('upload'),
|
363
|
+
"fileManagerJson" : $('#article_content').data('filemanager')
|
364
|
+
```
|
365
|
+
|
228
366
|
### 把javascript放在模板最下方,不放在head里面,如何正确加载kindeditor?
|
229
367
|
|
230
368
|
有时候,为了加快页面载入速度,也许你会把javascript引用放在template的底部,rails_kindeditor提供了一个参数可以确保正常加载:
|
@@ -306,6 +444,40 @@ rails_kindeditor 可以将上传文件信息记录入数据库,以便扩展应
|
|
306
444
|
rake db:migrate
|
307
445
|
```
|
308
446
|
|
447
|
+
### 自动删除上传的文件(仅在active_record下工作)
|
448
|
+
|
449
|
+
你可以为上传的文件指定归属,比如一名用户,或者一篇文章,当用户或者文章被删除时,所有属于该用户或者该文章的上传文件将会被自动删除。
|
450
|
+
|
451
|
+
1. 为kindeditor指定owner_id
|
452
|
+
|
453
|
+
```ruby
|
454
|
+
<%= form_for @article do |f| %>
|
455
|
+
...
|
456
|
+
<%= f.kindeditor :content, :owner_id => @article.id %>
|
457
|
+
...
|
458
|
+
<% end %>
|
459
|
+
```
|
460
|
+
警告: @article应该事先被创建,@article.id不应该是空的。
|
461
|
+
|
462
|
+
2. 在你自己的模型里加入has_many_kindeditor_assets
|
463
|
+
|
464
|
+
```ruby
|
465
|
+
class Article < ActiveRecord::Base
|
466
|
+
has_many_kindeditor_assets :attachments, :dependent => :destroy
|
467
|
+
# has_many_kindeditor_assets :attachments, :dependent => :nullify
|
468
|
+
# has_many_kindeditor_assets :your_name, :dependent => :destroy
|
469
|
+
end
|
470
|
+
```
|
471
|
+
|
472
|
+
3. 相互关系
|
473
|
+
|
474
|
+
```ruby
|
475
|
+
article = Article.first
|
476
|
+
article.attachments # => the article's assets uploaded by kindeditor
|
477
|
+
asset = article.attachments.first
|
478
|
+
asset.owner # => aritcle
|
479
|
+
```
|
480
|
+
|
309
481
|
### 如果你使用的是mongoid, 请在你的Gemfile里加入'gem "carrierwave-mongoid"'
|
310
482
|
|
311
483
|
```ruby
|
@@ -8,6 +8,8 @@ class Kindeditor::AssetsController < ApplicationController
|
|
8
8
|
if Kindeditor::AssetUploader.save_upload_info? # save upload info into database
|
9
9
|
begin
|
10
10
|
@asset = "Kindeditor::#{@dir.camelize}".constantize.new(:asset => @imgFile)
|
11
|
+
@asset.owner_id = params[:owner_id] ? params[:owner_id] : 0
|
12
|
+
@asset.asset_type = @dir
|
11
13
|
if @asset.save
|
12
14
|
render :text => ({:error => 0, :url => @asset.asset.url}.to_json)
|
13
15
|
else
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require 'carrierwave/processing/mime_types'
|
4
|
+
|
3
5
|
class Kindeditor::AssetUploader < CarrierWave::Uploader::Base
|
4
6
|
|
5
7
|
EXT_NAMES = {:image => RailsKindeditor.upload_image_ext,
|
@@ -20,7 +22,7 @@ class Kindeditor::AssetUploader < CarrierWave::Uploader::Base
|
|
20
22
|
# This is a sensible default for uploaders that are meant to be mounted:
|
21
23
|
def store_dir
|
22
24
|
if Kindeditor::AssetUploader.save_upload_info?
|
23
|
-
"#{RailsKindeditor.upload_store_dir}/#{model.
|
25
|
+
"#{RailsKindeditor.upload_store_dir}/#{model.asset_type.to_s.underscore.gsub(/(kindeditor\/)|(_uploader)/, '')}/#{model.created_at.strftime("%Y%m")}"
|
24
26
|
else
|
25
27
|
"#{RailsKindeditor.upload_store_dir}/#{self.class.to_s.underscore.gsub(/(kindeditor\/)|(_uploader)/, '')}/#{Time.now.strftime("%Y%m")}"
|
26
28
|
end
|
data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/asset.rb
CHANGED
@@ -6,7 +6,9 @@ class Kindeditor::Asset < ActiveRecord::Base
|
|
6
6
|
|
7
7
|
private
|
8
8
|
def update_asset_attributes
|
9
|
-
|
10
|
-
|
9
|
+
if asset.present? && asset_changed?
|
10
|
+
self.file_size = asset.file.size
|
11
|
+
self.file_type = asset.file.content_type
|
12
|
+
end
|
11
13
|
end
|
12
14
|
end
|
@@ -15,7 +15,9 @@ class Kindeditor::Asset
|
|
15
15
|
|
16
16
|
private
|
17
17
|
def update_asset_attributes
|
18
|
-
|
19
|
-
|
18
|
+
if asset.present? && asset_changed?
|
19
|
+
self.file_size = asset.file.size
|
20
|
+
self.file_type = asset.file.content_type
|
21
|
+
end
|
20
22
|
end
|
21
23
|
end
|
data/lib/rails_kindeditor.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
if defined?(ActiveRecord)
|
2
|
+
ActiveRecord::Base.class_eval do
|
3
|
+
def self.has_many_kindeditor_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 => 'Kindeditor::Asset', :foreign_key => 'owner_id', :dependent => options[:dependent]
|
7
|
+
|
8
|
+
class_name = self.name
|
9
|
+
Kindeditor::Asset.class_eval do
|
10
|
+
belongs_to :owner, :class_name => class_name, :foreign_key => 'owner_id'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -16,7 +16,22 @@ module RailsKindeditor
|
|
16
16
|
output_buffer << javascript_tag(js_replace(input_html['id'], options))
|
17
17
|
end
|
18
18
|
|
19
|
+
def kindeditor_upload_json_path(*args)
|
20
|
+
options = args.extract_options!
|
21
|
+
owner_id_query_string = options[:owner_id] ? "?owner_id=#{options[:owner_id]}" : ''
|
22
|
+
"#{root_url}kindeditor/upload#{owner_id_query_string}"
|
23
|
+
end
|
24
|
+
|
25
|
+
def kindeditor_file_manager_json_path
|
26
|
+
"#{root_url}kindeditor/filemanager"
|
27
|
+
end
|
28
|
+
|
19
29
|
private
|
30
|
+
|
31
|
+
def root_url
|
32
|
+
main_app.respond_to?(:root_url) ? main_app.root_url : '/'
|
33
|
+
end
|
34
|
+
|
20
35
|
def js_replace(dom_id, options = {})
|
21
36
|
editor_id = options[:editor_id].nil? ? '' : "#{options[:editor_id].to_s.downcase} = "
|
22
37
|
if options[:window_onload]
|
@@ -36,8 +51,8 @@ module RailsKindeditor
|
|
36
51
|
options.reverse_merge!(:width => '100%')
|
37
52
|
options.reverse_merge!(:height => 300)
|
38
53
|
options.reverse_merge!(:allowFileManager => true)
|
39
|
-
options.merge!(:uploadJson =>
|
40
|
-
options.merge!(:fileManagerJson =>
|
54
|
+
options.merge!(:uploadJson => kindeditor_upload_json_path(:owner_id => options.delete(:owner_id)))
|
55
|
+
options.merge!(:fileManagerJson => kindeditor_file_manager_json_path)
|
41
56
|
if options[:simple_mode] == true
|
42
57
|
options.merge!(:items => %w{fontname fontsize | forecolor hilitecolor bold italic underline removeformat | justifyleft justifycenter justifyright insertorderedlist insertunorderedlist | emoticons image link})
|
43
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_kindeditor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Macrow
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carrierwave
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/image.rb
|
76
76
|
- lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/media.rb
|
77
77
|
- lib/rails_kindeditor.rb
|
78
|
+
- lib/rails_kindeditor/active_record.rb
|
78
79
|
- lib/rails_kindeditor/engine.rb
|
79
80
|
- lib/rails_kindeditor/formtastic.rb
|
80
81
|
- lib/rails_kindeditor/helper.rb
|
@@ -305,3 +306,4 @@ signing_key:
|
|
305
306
|
specification_version: 4
|
306
307
|
summary: Kindeditor for Ruby on Rails
|
307
308
|
test_files: []
|
309
|
+
has_rdoc:
|