ckeditor 3.5.3 → 3.5.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -1
- data/lib/ckeditor/engine.rb +3 -0
- data/lib/ckeditor/middleware.rb +2 -2
- data/lib/ckeditor/version.rb +1 -1
- data/lib/ckeditor/view_helper.rb +10 -10
- data/lib/generators/ckeditor/base/base_generator.rb +1 -1
- metadata +6 -25
- data/examples/migrations/attachment_fu/create_assets.rb +0 -30
- data/examples/migrations/paperclip/create_assets.rb +0 -25
- data/examples/models/attachment_fu/asset.rb +0 -45
- data/examples/models/attachment_fu/attachment_file.rb +0 -46
- data/examples/models/attachment_fu/picture.rb +0 -46
- data/examples/models/paperclip/asset.rb +0 -65
- data/examples/models/paperclip/attachment_file.rb +0 -22
- data/examples/models/paperclip/picture.rb +0 -39
- data/examples/s3/attachment_file.rb +0 -23
- data/examples/s3/picture.rb +0 -41
data/README.rdoc
CHANGED
@@ -36,7 +36,7 @@ Check "config/initializers/ckeditor.rb" for more configuration options:
|
|
36
36
|
|
37
37
|
You can pass version of ckeditor to download (http://ckeditor.com/download/releases):
|
38
38
|
|
39
|
-
rails generate ckeditor:base --version=3.5.
|
39
|
+
rails generate ckeditor:base --version=3.5.4
|
40
40
|
|
41
41
|
Generate ckeditor models for file upload support:
|
42
42
|
For paperclip:
|
data/lib/ckeditor/engine.rb
CHANGED
data/lib/ckeditor/middleware.rb
CHANGED
@@ -8,9 +8,9 @@ module Ckeditor
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def call(env)
|
11
|
-
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave)
|
11
|
+
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave)\s+Flash/
|
12
12
|
params = ::Rack::Utils.parse_query(env['QUERY_STRING'])
|
13
|
-
env['HTTP_COOKIE'] = [ @session_key, ::Rack::Utils.
|
13
|
+
env['HTTP_COOKIE'] = [ @session_key, ::Rack::Utils.unescape(params[@session_key]) ].join('=').freeze unless params[@session_key].nil?
|
14
14
|
end
|
15
15
|
@app.call(env)
|
16
16
|
end
|
data/lib/ckeditor/version.rb
CHANGED
data/lib/ckeditor/view_helper.rb
CHANGED
@@ -15,16 +15,16 @@ module Ckeditor
|
|
15
15
|
# <%= ckeditor_textarea("object", "field", :index => "2") %>
|
16
16
|
# <% end %>
|
17
17
|
#
|
18
|
-
def ckeditor_textarea(
|
18
|
+
def ckeditor_textarea(object_name, field, options = {})
|
19
19
|
options = options.dup.symbolize_keys
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
object = options.delete(:object) if options.key?(:object)
|
22
|
+
object ||= @template.instance_variable_get("@#{object_name}")
|
23
23
|
|
24
|
-
value =
|
25
|
-
value ||=
|
26
|
-
|
27
|
-
element_id = options.delete(:id) || ckeditor_element_id(
|
24
|
+
value = options.delete(:value) if options.key?(:value)
|
25
|
+
value ||= object.send(field)
|
26
|
+
|
27
|
+
element_id = options.delete(:id) || ckeditor_element_id(object_name, field, options.delete(:index))
|
28
28
|
width = options.delete(:width) || '100%'
|
29
29
|
height = options.delete(:height) || '100%'
|
30
30
|
|
@@ -50,7 +50,7 @@ module Ckeditor
|
|
50
50
|
|
51
51
|
output_buffer = ActiveSupport::SafeBuffer.new
|
52
52
|
|
53
|
-
output_buffer << ActionView::Base::InstanceTag.new(
|
53
|
+
output_buffer << ActionView::Base::InstanceTag.new(object_name, field, self, object).to_text_area_tag(textarea_options.merge(options))
|
54
54
|
|
55
55
|
output_buffer << javascript_tag("if (CKEDITOR.instances['#{element_id}']) {
|
56
56
|
CKEDITOR.remove(CKEDITOR.instances['#{element_id}']);}
|
@@ -71,8 +71,8 @@ module Ckeditor
|
|
71
71
|
|
72
72
|
protected
|
73
73
|
|
74
|
-
def ckeditor_element_id(
|
75
|
-
index
|
74
|
+
def ckeditor_element_id(object_name, field, index = nil)
|
75
|
+
[object_name, index, field, 'editor'].compact.join('_')
|
76
76
|
end
|
77
77
|
|
78
78
|
def ckeditor_applay_options(options={})
|
@@ -2,7 +2,7 @@ require 'rails/generators'
|
|
2
2
|
|
3
3
|
module Ckeditor
|
4
4
|
class BaseGenerator < Rails::Generators::Base
|
5
|
-
class_option :version, :type => :string, :default => '3.
|
5
|
+
class_option :version, :type => :string, :default => '3.6',
|
6
6
|
:desc => "Version of ckeditor which be install"
|
7
7
|
|
8
8
|
def self.source_root
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ckeditor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 3.5.
|
9
|
+
- 4
|
10
|
+
version: 3.5.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Igor Galeta
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-25 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -132,16 +132,6 @@ files:
|
|
132
132
|
- lib/generators/ckeditor/migration/templates/models/paperclip/migration.rb
|
133
133
|
- lib/generators/ckeditor/migration/templates/models/paperclip/picture.rb
|
134
134
|
- lib/tasks/ckeditor_tasks.rake
|
135
|
-
- examples/migrations/attachment_fu/create_assets.rb
|
136
|
-
- examples/migrations/paperclip/create_assets.rb
|
137
|
-
- examples/models/attachment_fu/asset.rb
|
138
|
-
- examples/models/attachment_fu/attachment_file.rb
|
139
|
-
- examples/models/attachment_fu/picture.rb
|
140
|
-
- examples/models/paperclip/asset.rb
|
141
|
-
- examples/models/paperclip/attachment_file.rb
|
142
|
-
- examples/models/paperclip/picture.rb
|
143
|
-
- examples/s3/attachment_file.rb
|
144
|
-
- examples/s3/picture.rb
|
145
135
|
has_rdoc: true
|
146
136
|
homepage: http://github.com/galetahub/rails-ckeditor
|
147
137
|
licenses: []
|
@@ -176,14 +166,5 @@ rubygems_version: 1.6.2
|
|
176
166
|
signing_key:
|
177
167
|
specification_version: 3
|
178
168
|
summary: Rails plugin for integration ckeditor 3.x
|
179
|
-
test_files:
|
180
|
-
|
181
|
-
- examples/migrations/paperclip/create_assets.rb
|
182
|
-
- examples/models/attachment_fu/asset.rb
|
183
|
-
- examples/models/attachment_fu/attachment_file.rb
|
184
|
-
- examples/models/attachment_fu/picture.rb
|
185
|
-
- examples/models/paperclip/asset.rb
|
186
|
-
- examples/models/paperclip/attachment_file.rb
|
187
|
-
- examples/models/paperclip/picture.rb
|
188
|
-
- examples/s3/attachment_file.rb
|
189
|
-
- examples/s3/picture.rb
|
169
|
+
test_files: []
|
170
|
+
|
@@ -1,30 +0,0 @@
|
|
1
|
-
class CreateAssets < ActiveRecord::Migration
|
2
|
-
def self.up
|
3
|
-
create_table :assets do |t|
|
4
|
-
t.integer "parent_id"
|
5
|
-
t.string "content_type"
|
6
|
-
t.string "filename", :limit=>80
|
7
|
-
t.string "thumbnail", :limit=>20
|
8
|
-
t.integer "size"
|
9
|
-
t.integer "width"
|
10
|
-
t.integer "height"
|
11
|
-
t.string "type", :limit=>40
|
12
|
-
t.integer "user_id"
|
13
|
-
t.integer "assetable_id"
|
14
|
-
t.string "assetable_type", :limit=>40
|
15
|
-
|
16
|
-
t.timestamps
|
17
|
-
end
|
18
|
-
|
19
|
-
add_index "assets", ["assetable_id", "assetable_type", "type"], :name => "ndx_type_assetable"
|
20
|
-
add_index "assets", ["assetable_id", "assetable_type"], :name => "fk_assets"
|
21
|
-
add_index "assets", ["parent_id", "type"], :name => "ndx_type_name"
|
22
|
-
add_index "assets", ["thumbnail", "parent_id"], :name => "assets_thumbnail_parent_id"
|
23
|
-
add_index "assets", ["user_id", "assetable_type", "assetable_id"], :name => "assets_user_type_assetable_id"
|
24
|
-
add_index :assets, :user_id, :name=>"fk_user"
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.down
|
28
|
-
drop_table :assets
|
29
|
-
end
|
30
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class CreateAssets < ActiveRecord::Migration
|
2
|
-
def self.up
|
3
|
-
create_table :assets do |t|
|
4
|
-
t.string :data_file_name
|
5
|
-
t.string :data_content_type
|
6
|
-
t.integer :data_file_size
|
7
|
-
|
8
|
-
t.integer :assetable_id
|
9
|
-
t.string :assetable_type, :limit=>25
|
10
|
-
t.string :type, :limit=>25
|
11
|
-
|
12
|
-
t.integer :user_id
|
13
|
-
|
14
|
-
t.timestamps
|
15
|
-
end
|
16
|
-
|
17
|
-
add_index "assets", ["assetable_id", "assetable_type", "type"], :name => "ndx_type_assetable"
|
18
|
-
add_index "assets", ["assetable_id", "assetable_type"], :name => "fk_assets"
|
19
|
-
add_index "assets", ["user_id"], :name => "fk_user"
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.down
|
23
|
-
drop_table :assets
|
24
|
-
end
|
25
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
class Asset < ActiveRecord::Base
|
2
|
-
|
3
|
-
# === List of columns ===
|
4
|
-
# id : integer
|
5
|
-
# parent_id : integer
|
6
|
-
# content_type : string
|
7
|
-
# filename : string
|
8
|
-
# thumbnail : string
|
9
|
-
# size : integer
|
10
|
-
# width : integer
|
11
|
-
# height : integer
|
12
|
-
# type : string
|
13
|
-
# user_id : integer
|
14
|
-
# assetable_id : integer
|
15
|
-
# assetable_type : string
|
16
|
-
# created_at : datetime
|
17
|
-
# updated_at : datetime
|
18
|
-
# =======================
|
19
|
-
|
20
|
-
belongs_to :assetable, :polymorphic => true
|
21
|
-
|
22
|
-
def url(*args)
|
23
|
-
public_filename(*args)
|
24
|
-
end
|
25
|
-
|
26
|
-
def format_created_at
|
27
|
-
I18n.l(self.created_at, :format=>"%d.%m.%Y %H:%M")
|
28
|
-
end
|
29
|
-
|
30
|
-
def to_xml(options = {})
|
31
|
-
xml = options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
|
32
|
-
|
33
|
-
xml.tag!(self.read_attribute(:type).to_s.downcase) do
|
34
|
-
xml.filename{ xml.cdata!(self.filename) }
|
35
|
-
xml.size self.size
|
36
|
-
xml.path{ xml.cdata!(self.public_filename) }
|
37
|
-
|
38
|
-
xml.thumbnails do
|
39
|
-
self.thumbnails.each do |t|
|
40
|
-
xml.tag!(t.thumbnail, self.public_filename(t.thumbnail))
|
41
|
-
end
|
42
|
-
end unless self.thumbnails.empty?
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
class AttachmentFile < Asset
|
2
|
-
|
3
|
-
# === List of columns ===
|
4
|
-
# id : integer
|
5
|
-
# parent_id : integer
|
6
|
-
# content_type : string
|
7
|
-
# filename : string
|
8
|
-
# thumbnail : string
|
9
|
-
# size : integer
|
10
|
-
# width : integer
|
11
|
-
# height : integer
|
12
|
-
# type : string
|
13
|
-
# user_id : integer
|
14
|
-
# assetable_id : integer
|
15
|
-
# assetable_type : string
|
16
|
-
# created_at : datetime
|
17
|
-
# updated_at : datetime
|
18
|
-
# =======================
|
19
|
-
|
20
|
-
belongs_to :user
|
21
|
-
|
22
|
-
has_attachment :storage => :file_system, :path_prefix => 'public/attachments/files',
|
23
|
-
:max_size => 10.megabytes
|
24
|
-
|
25
|
-
validates_as_attachment
|
26
|
-
|
27
|
-
named_scope :masters, :conditions => {:parent_id => nil}
|
28
|
-
|
29
|
-
# Map file extensions to mime types.
|
30
|
-
# Thanks to bug in Flash 8 the content type is always set to application/octet-stream.
|
31
|
-
# From: http://blog.airbladesoftware.com/2007/8/8/uploading-files-with-swfupload
|
32
|
-
def swf_uploaded_data=(data)
|
33
|
-
data.content_type = MIME::Types.type_for(data.original_filename)
|
34
|
-
self.uploaded_data = data
|
35
|
-
end
|
36
|
-
|
37
|
-
def full_filename(thumbnail = nil)
|
38
|
-
file_system_path = self.attachment_options[:path_prefix]
|
39
|
-
File.join(RAILS_ROOT, file_system_path, file_name_for(self.id))
|
40
|
-
end
|
41
|
-
|
42
|
-
def file_name_for(asset = nil)
|
43
|
-
extension = filename.scan(/\.\w+$/)
|
44
|
-
return "#{asset}_#{filename}"
|
45
|
-
end
|
46
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
class Picture < Asset
|
2
|
-
|
3
|
-
# === List of columns ===
|
4
|
-
# id : integer
|
5
|
-
# parent_id : integer
|
6
|
-
# content_type : string
|
7
|
-
# filename : string
|
8
|
-
# thumbnail : string
|
9
|
-
# size : integer
|
10
|
-
# width : integer
|
11
|
-
# height : integer
|
12
|
-
# type : string
|
13
|
-
# user_id : integer
|
14
|
-
# assetable_id : integer
|
15
|
-
# assetable_type : string
|
16
|
-
# created_at : datetime
|
17
|
-
# updated_at : datetime
|
18
|
-
# =======================
|
19
|
-
|
20
|
-
belongs_to :user
|
21
|
-
has_attachment :content_type => :image,
|
22
|
-
:storage => :file_system, :path_prefix => 'public/attachments/pictures',
|
23
|
-
:max_size => 2.megabytes,
|
24
|
-
:size => 0.kilobytes..2000.kilobytes,
|
25
|
-
:processor => 'Rmagick',
|
26
|
-
:thumbnails => { :content => '575>', :thumb => '100x100!' }
|
27
|
-
|
28
|
-
validates_as_attachment
|
29
|
-
|
30
|
-
named_scope :masters, :conditions=>"parent_id IS NULL", :order=>'filename'
|
31
|
-
|
32
|
-
def url_content
|
33
|
-
public_filename(:content)
|
34
|
-
end
|
35
|
-
|
36
|
-
def url_thumb
|
37
|
-
public_filename(:thumb)
|
38
|
-
end
|
39
|
-
|
40
|
-
def to_json(options = {})
|
41
|
-
options[:methods] ||= []
|
42
|
-
options[:methods] << :url_content
|
43
|
-
options[:methods] << :url_thumb
|
44
|
-
super options
|
45
|
-
end
|
46
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
class Asset < ActiveRecord::Base
|
2
|
-
|
3
|
-
# === List of columns ===
|
4
|
-
# id : integer
|
5
|
-
# data_file_name : string
|
6
|
-
# data_content_type : string
|
7
|
-
# data_file_size : integer
|
8
|
-
# assetable_id : integer
|
9
|
-
# assetable_type : string
|
10
|
-
# type : string
|
11
|
-
# locale : integer
|
12
|
-
# user_id : integer
|
13
|
-
# created_at : datetime
|
14
|
-
# updated_at : datetime
|
15
|
-
# =======================
|
16
|
-
|
17
|
-
|
18
|
-
belongs_to :user
|
19
|
-
belongs_to :assetable, :polymorphic => true
|
20
|
-
|
21
|
-
def url(*args)
|
22
|
-
data.url(*args)
|
23
|
-
end
|
24
|
-
alias :public_filename :url
|
25
|
-
|
26
|
-
def filename
|
27
|
-
data_file_name
|
28
|
-
end
|
29
|
-
|
30
|
-
def content_type
|
31
|
-
data_content_type
|
32
|
-
end
|
33
|
-
|
34
|
-
def size
|
35
|
-
data_file_size
|
36
|
-
end
|
37
|
-
|
38
|
-
def path
|
39
|
-
data.path
|
40
|
-
end
|
41
|
-
|
42
|
-
def styles
|
43
|
-
data.styles
|
44
|
-
end
|
45
|
-
|
46
|
-
def format_created_at
|
47
|
-
I18n.l(self.created_at, :format=>"%d.%m.%Y %H:%M")
|
48
|
-
end
|
49
|
-
|
50
|
-
def to_xml(options = {})
|
51
|
-
xml = options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
|
52
|
-
|
53
|
-
xml.tag!(self.type.to_s.downcase) do
|
54
|
-
xml.filename{ xml.cdata!(self.filename) }
|
55
|
-
xml.size self.size
|
56
|
-
xml.path{ xml.cdata!(self.url) }
|
57
|
-
|
58
|
-
xml.styles do
|
59
|
-
self.styles.each do |style|
|
60
|
-
xml.tag!(style.first, self.url(style.first))
|
61
|
-
end
|
62
|
-
end unless self.styles.empty?
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
class AttachmentFile < Asset
|
2
|
-
|
3
|
-
# === List of columns ===
|
4
|
-
# id : integer
|
5
|
-
# data_file_name : string
|
6
|
-
# data_content_type : string
|
7
|
-
# data_file_size : integer
|
8
|
-
# assetable_id : integer
|
9
|
-
# assetable_type : string
|
10
|
-
# type : string
|
11
|
-
# locale : integer
|
12
|
-
# user_id : integer
|
13
|
-
# created_at : datetime
|
14
|
-
# updated_at : datetime
|
15
|
-
# =======================
|
16
|
-
|
17
|
-
has_attached_file :data,
|
18
|
-
:url => "/assets/attachments/:id/:filename",
|
19
|
-
:path => ":rails_root/public/assets/attachments/:id/:filename"
|
20
|
-
|
21
|
-
validates_attachment_size :data, :less_than=>10.megabytes
|
22
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
class Picture < Asset
|
2
|
-
|
3
|
-
# === List of columns ===
|
4
|
-
# id : integer
|
5
|
-
# data_file_name : string
|
6
|
-
# data_content_type : string
|
7
|
-
# data_file_size : integer
|
8
|
-
# assetable_id : integer
|
9
|
-
# assetable_type : string
|
10
|
-
# type : string
|
11
|
-
# locale : integer
|
12
|
-
# user_id : integer
|
13
|
-
# created_at : datetime
|
14
|
-
# updated_at : datetime
|
15
|
-
# =======================
|
16
|
-
|
17
|
-
|
18
|
-
has_attached_file :data,
|
19
|
-
:url => "/assets/pictures/:id/:style_:basename.:extension",
|
20
|
-
:path => ":rails_root/public/assets/pictures/:id/:style_:basename.:extension",
|
21
|
-
:styles => { :content => '575>', :thumb => '100x100' }
|
22
|
-
|
23
|
-
validates_attachment_size :data, :less_than=>2.megabytes
|
24
|
-
|
25
|
-
def url_content
|
26
|
-
url(:content)
|
27
|
-
end
|
28
|
-
|
29
|
-
def url_thumb
|
30
|
-
url(:thumb)
|
31
|
-
end
|
32
|
-
|
33
|
-
def to_json(options = {})
|
34
|
-
options[:methods] ||= []
|
35
|
-
options[:methods] << :url_content
|
36
|
-
options[:methods] << :url_thumb
|
37
|
-
super options
|
38
|
-
end
|
39
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class AttachmentFile < Asset
|
2
|
-
|
3
|
-
# === List of columns ===
|
4
|
-
# id : integer
|
5
|
-
# data_file_name : string
|
6
|
-
# data_content_type : string
|
7
|
-
# data_file_size : integer
|
8
|
-
# assetable_id : integer
|
9
|
-
# assetable_type : string
|
10
|
-
# type : string
|
11
|
-
# locale : integer
|
12
|
-
# user_id : integer
|
13
|
-
# created_at : datetime
|
14
|
-
# updated_at : datetime
|
15
|
-
# =======================
|
16
|
-
|
17
|
-
has_attached_file :data,
|
18
|
-
:s3_credentials => "#{Rails.root}/config/s3.yml", :bucket => "yourbucket",
|
19
|
-
:storage => :s3,
|
20
|
-
:path => "#{APP_NAME}/files/:id/:filename"
|
21
|
-
|
22
|
-
validates_attachment_size :data, :less_than => 10.megabytes
|
23
|
-
end
|
data/examples/s3/picture.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
class Picture < Asset
|
2
|
-
|
3
|
-
# === List of columns ===
|
4
|
-
# id : integer
|
5
|
-
# data_file_name : string
|
6
|
-
# data_content_type : string
|
7
|
-
# data_file_size : integer
|
8
|
-
# assetable_id : integer
|
9
|
-
# assetable_type : string
|
10
|
-
# type : string
|
11
|
-
# locale : integer
|
12
|
-
# user_id : integer
|
13
|
-
# created_at : datetime
|
14
|
-
# updated_at : datetime
|
15
|
-
# =======================
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
has_attached_file :data,
|
20
|
-
:s3_credentials => "#{Rails.root}/config/s3.yml", :bucket => "yourbucket",
|
21
|
-
:storage => :s3,
|
22
|
-
:path => "#{APP_NAME}/images/:id/:style_:basename.:extension",
|
23
|
-
:styles => { :content => '575>', :thumb => '100x100' }
|
24
|
-
|
25
|
-
validates_attachment_size :data, :less_than=>2.megabytes
|
26
|
-
|
27
|
-
def url_content
|
28
|
-
url(:content)
|
29
|
-
end
|
30
|
-
|
31
|
-
def url_thumb
|
32
|
-
url(:thumb)
|
33
|
-
end
|
34
|
-
|
35
|
-
def to_json(options = {})
|
36
|
-
options[:methods] ||= []
|
37
|
-
options[:methods] << :url_content
|
38
|
-
options[:methods] << :url_thumb
|
39
|
-
super options
|
40
|
-
end
|
41
|
-
end
|