ckeditor 3.5.4 → 3.6.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +23 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +96 -97
- data/Rakefile +16 -33
- data/app/controllers/ckeditor/attachment_files_controller.rb +4 -4
- data/app/controllers/ckeditor/base_controller.rb +15 -42
- data/app/controllers/ckeditor/pictures_controller.rb +3 -3
- data/app/views/ckeditor/attachment_files/index.html.erb +13 -51
- data/app/views/ckeditor/pictures/index.html.erb +14 -52
- data/app/views/ckeditor/shared/_asset.html.erb +19 -0
- data/app/views/ckeditor/shared/_asset_tmpl.html.erb +21 -0
- data/app/views/layouts/ckeditor.html.erb +16 -23
- data/config/locales/en.ckeditor.yml +3 -7
- data/config/locales/ru.ckeditor.yml +4 -8
- data/config/locales/uk.ckeditor.yml +4 -8
- data/config/routes.rb +3 -3
- data/lib/ckeditor.rb +30 -79
- data/lib/ckeditor/engine.rb +14 -13
- data/lib/ckeditor/helpers/controllers.rb +30 -0
- data/lib/ckeditor/helpers/form_builder.rb +11 -0
- data/lib/ckeditor/helpers/form_helper.rb +25 -0
- data/lib/ckeditor/helpers/view_helper.rb +19 -0
- data/lib/ckeditor/http.rb +81 -0
- data/lib/ckeditor/orm/active_record.rb +91 -0
- data/lib/ckeditor/utils.rb +51 -70
- data/lib/ckeditor/version.rb +2 -7
- data/lib/generators/ckeditor/install_generator.rb +62 -0
- data/lib/generators/ckeditor/models_generator.rb +51 -0
- data/lib/generators/ckeditor/templates/ckeditor.rb +18 -0
- data/lib/generators/ckeditor/templates/ckeditor/config.js +52 -0
- data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/gal_add.jpg +0 -0
- data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/gal_add.png +0 -0
- data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/gal_del.png +0 -0
- data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/gal_more.gif +0 -0
- data/lib/generators/ckeditor/templates/ckeditor/filebrowser/images/preloader.gif +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/images → templates/ckeditor/filebrowser/images/thumbs}/ckfnothumb.gif +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/images → templates/ckeditor/filebrowser/images/thumbs}/mp3.gif +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/images → templates/ckeditor/filebrowser/images/thumbs}/pdf.gif +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/images → templates/ckeditor/filebrowser/images/thumbs}/rar.gif +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/images → templates/ckeditor/filebrowser/images/thumbs}/swf.gif +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/images → templates/ckeditor/filebrowser/images/thumbs}/xls.gif +0 -0
- data/lib/generators/ckeditor/templates/ckeditor/filebrowser/javascripts/application.js +222 -0
- data/lib/generators/ckeditor/templates/ckeditor/filebrowser/stylesheets/uploader.css +112 -0
- data/lib/generators/ckeditor/{base/templates → templates}/ckeditor/plugins/attachment/dialogs/attachment.js +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/_source → templates/ckeditor}/plugins/attachment/images/attachment.png +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/_source → templates/ckeditor}/plugins/attachment/lang/en.js +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/_source → templates/ckeditor}/plugins/attachment/lang/ru.js +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/_source → templates/ckeditor}/plugins/attachment/lang/uk.js +0 -0
- data/lib/generators/ckeditor/{base/templates → templates}/ckeditor/plugins/attachment/plugin.js +0 -0
- data/lib/generators/ckeditor/{base/templates → templates}/ckeditor/plugins/embed/dialogs/embed.js +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/_source → templates/ckeditor}/plugins/embed/images/embed.png +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/_source → templates/ckeditor}/plugins/embed/lang/en.js +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/_source → templates/ckeditor}/plugins/embed/lang/ru.js +0 -0
- data/lib/generators/ckeditor/{base/templates/ckeditor/_source → templates/ckeditor}/plugins/embed/lang/uk.js +0 -0
- data/lib/generators/ckeditor/{base/templates → templates}/ckeditor/plugins/embed/plugin.js +0 -0
- data/lib/generators/ckeditor/templates/models/active_record/asset.rb +7 -0
- data/lib/generators/ckeditor/templates/models/active_record/attachment_file.rb +15 -0
- data/lib/generators/ckeditor/{migration/templates/models/paperclip → templates/models/active_record}/migration.rb +3 -8
- data/lib/generators/ckeditor/templates/models/active_record/picture.rb +13 -0
- data/test/ckeditor_test.rb +13 -0
- data/test/controllers/attachment_files_controller_test.rb +52 -0
- data/test/controllers/pictures_controller_test.rb +52 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/controllers/posts_controller.rb +83 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/posts_helper.rb +2 -0
- data/test/dummy/app/models/ckeditor/asset.rb +7 -0
- data/test/dummy/app/models/ckeditor/attachment_file.rb +15 -0
- data/test/dummy/app/models/ckeditor/picture.rb +13 -0
- data/test/dummy/app/models/post.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/posts/_form.html.erb +30 -0
- data/test/dummy/app/views/posts/edit.html.erb +6 -0
- data/test/dummy/app/views/posts/index.html.erb +27 -0
- data/test/dummy/app/views/posts/new.html.erb +5 -0
- data/test/dummy/app/views/posts/show.html.erb +5 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +46 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +34 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +26 -0
- data/test/dummy/config/environments/production.rb +49 -0
- data/test/dummy/config/environments/test.rb +35 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/ckeditor.rb +18 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/migrate/20110623120047_create_posts.rb +14 -0
- data/test/dummy/db/migrate/20110705195648_create_ckeditor_assets.rb +26 -0
- data/test/dummy/db/schema.rb +36 -0
- data/test/dummy/log/development.log +818 -0
- data/test/dummy/log/production.log +0 -0
- data/test/dummy/log/server.log +0 -0
- data/test/dummy/log/test.log +5398 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/javascripts/application.js +2 -0
- data/test/dummy/public/javascripts/controls.js +965 -0
- data/test/dummy/public/javascripts/dragdrop.js +974 -0
- data/test/dummy/public/javascripts/effects.js +1123 -0
- data/test/dummy/public/javascripts/prototype.js +6001 -0
- data/test/dummy/public/javascripts/rails.js +191 -0
- data/test/dummy/public/stylesheets/scaffold.css +56 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/fixtures/files/rails.png +0 -0
- data/test/dummy/test/fixtures/files/rails.tar.gz +0 -0
- data/test/generators/install_generator_test.rb +18 -0
- data/test/generators/models_generator_test.rb +21 -0
- data/test/integration/navigation_test.rb +7 -0
- data/test/integration/posts_test.rb +41 -0
- data/test/routes_test.rb +47 -0
- data/test/support/integration_case.rb +5 -0
- data/test/test_helper.rb +28 -0
- data/test/tmp/app/models/ckeditor/asset.rb +7 -0
- data/test/tmp/app/models/ckeditor/attachment_file.rb +15 -0
- data/test/tmp/app/models/ckeditor/picture.rb +13 -0
- data/test/tmp/db/migrate/20110711170413_create_ckeditor_assets.rb +26 -0
- metadata +220 -99
- data/CHANGELOG +0 -15
- data/app/helpers/ckeditor/base_helper.rb +0 -21
- data/app/views/ckeditor/_asset.html.erb +0 -20
- data/app/views/ckeditor/_swfupload.html.erb +0 -73
- data/lib/ckeditor/form_builder.rb +0 -22
- data/lib/ckeditor/middleware.rb +0 -18
- data/lib/ckeditor/view_helper.rb +0 -92
- data/lib/generators/ckeditor/base/USAGE +0 -9
- data/lib/generators/ckeditor/base/base_generator.rb +0 -41
- data/lib/generators/ckeditor/base/templates/ckeditor.rb +0 -54
- data/lib/generators/ckeditor/base/templates/ckeditor/_source/plugins/attachment/dialogs/attachment.js +0 -384
- data/lib/generators/ckeditor/base/templates/ckeditor/_source/plugins/attachment/plugin.js +0 -44
- data/lib/generators/ckeditor/base/templates/ckeditor/_source/plugins/embed/dialogs/embed.js +0 -65
- data/lib/generators/ckeditor/base/templates/ckeditor/_source/plugins/embed/plugin.js +0 -43
- data/lib/generators/ckeditor/base/templates/ckeditor/config.js +0 -43
- data/lib/generators/ckeditor/base/templates/ckeditor/css/ckfinder.css +0 -316
- data/lib/generators/ckeditor/base/templates/ckeditor/css/fck_dialog.css +0 -119
- data/lib/generators/ckeditor/base/templates/ckeditor/css/fck_editor.css +0 -448
- data/lib/generators/ckeditor/base/templates/ckeditor/css/swfupload.css +0 -94
- data/lib/generators/ckeditor/base/templates/ckeditor/images/add.gif +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/images/cancelbutton.gif +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/images/doc.gif +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/images/refresh.gif +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/images/select_files.png +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/images/spacer.gif +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/images/toolbar.start.gif +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/plugins/attachment/images/attachment.png +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/plugins/attachment/lang/en.js +0 -10
- data/lib/generators/ckeditor/base/templates/ckeditor/plugins/attachment/lang/ru.js +0 -10
- data/lib/generators/ckeditor/base/templates/ckeditor/plugins/attachment/lang/uk.js +0 -10
- data/lib/generators/ckeditor/base/templates/ckeditor/plugins/embed/images/embed.png +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/plugins/embed/lang/en.js +0 -9
- data/lib/generators/ckeditor/base/templates/ckeditor/plugins/embed/lang/ru.js +0 -9
- data/lib/generators/ckeditor/base/templates/ckeditor/plugins/embed/lang/uk.js +0 -9
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/fileprogress.js +0 -266
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/handlers.js +0 -181
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/jquery-1.5.1.min.js +0 -16
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/querystring.js +0 -40
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/rails.js +0 -158
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/swfupload.js +0 -1
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/swfupload.queue.js +0 -1
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/swfupload.swf +0 -0
- data/lib/generators/ckeditor/base/templates/ckeditor/swfupload/swfupload.swfobject.js +0 -111
- data/lib/generators/ckeditor/migration/USAGE +0 -12
- data/lib/generators/ckeditor/migration/migration_generator.rb +0 -46
- data/lib/generators/ckeditor/migration/templates/models/attachment_fu/asset.rb +0 -32
- data/lib/generators/ckeditor/migration/templates/models/attachment_fu/attachment_file.rb +0 -24
- data/lib/generators/ckeditor/migration/templates/models/attachment_fu/migration.rb +0 -30
- data/lib/generators/ckeditor/migration/templates/models/attachment_fu/picture.rb +0 -25
- data/lib/generators/ckeditor/migration/templates/models/paperclip/asset.rb +0 -97
- data/lib/generators/ckeditor/migration/templates/models/paperclip/attachment_file.rb +0 -40
- data/lib/generators/ckeditor/migration/templates/models/paperclip/picture.rb +0 -23
- data/lib/tasks/ckeditor_tasks.rake +0 -3
@@ -1,20 +0,0 @@
|
|
1
|
-
<div class="FCKThumb">
|
2
|
-
<%= link_to(' '.html_safe, polymorphic_path(asset, :format => :json),
|
3
|
-
:method => :delete, :remote => true, :class => 'FCKFileDelete') %>
|
4
|
-
|
5
|
-
<div class='FCKAsset'>
|
6
|
-
<table border="0" cellpadding="0" cellspacing="0" height="100" width="100">
|
7
|
-
<tbody>
|
8
|
-
<tr>
|
9
|
-
<td align="center" valign="middle">
|
10
|
-
<%= image_tag(asset.url_thumb, :alt => asset.url_content, :title => asset.filename, :onerror=>"this.src='/javascripts/ckeditor/images/ckfnothumb.gif'", :class=>'image') %>
|
11
|
-
</td>
|
12
|
-
</tr>
|
13
|
-
</tbody>
|
14
|
-
</table>
|
15
|
-
|
16
|
-
<div class="FCKFileName"><%= asset.filename %></div>
|
17
|
-
<div class="FCKFileDate"><%= asset.format_created_at %></div>
|
18
|
-
<div class="FCKFileSize"><%= number_to_human_size(asset.size, :precision => 2) %></div>
|
19
|
-
</div>
|
20
|
-
</div>
|
@@ -1,73 +0,0 @@
|
|
1
|
-
<script type="text/javascript">
|
2
|
-
var swfu = null;
|
3
|
-
|
4
|
-
window.onload = function()
|
5
|
-
{
|
6
|
-
var f = new FileThumb('qu');
|
7
|
-
var t = new ToolBar('nv');
|
8
|
-
|
9
|
-
var b1 = new Button('<%= I18n.t("upload.hint", :scope => [:ckeditor, :buttons]) %>', '<%= I18n.t("upload.title", :scope => [:ckeditor, :buttons]) %>', 'add.gif');
|
10
|
-
var b2 = new Button('<%= I18n.t("refresh.hint", :scope => [:ckeditor, :buttons]) %>', '<%= I18n.t("refresh.title", :scope => [:ckeditor, :buttons]) %>', 'refresh.gif');
|
11
|
-
|
12
|
-
b1.callback = uploadButton;
|
13
|
-
b2.callback = function(){ window.location.reload(); }
|
14
|
-
|
15
|
-
t.buttons.push(b1);
|
16
|
-
t.buttons.push(b2);
|
17
|
-
|
18
|
-
t.init();
|
19
|
-
init_swfupload();
|
20
|
-
|
21
|
-
$('a.FCKFileDelete').bind('ajax:complete', function(){
|
22
|
-
$(this).parents('div.FCKThumb').remove();
|
23
|
-
});
|
24
|
-
}
|
25
|
-
|
26
|
-
function init_swfupload() {
|
27
|
-
var params = editor.config['swf_params'];
|
28
|
-
|
29
|
-
swfu = new SWFUpload({
|
30
|
-
// Backend settings
|
31
|
-
upload_url: upload_path,
|
32
|
-
post_params: params,
|
33
|
-
file_post_name: "<%= @swf_file_post_name %>",
|
34
|
-
|
35
|
-
// Flash file settings
|
36
|
-
file_size_limit : "<%= @file_size_limit %>",
|
37
|
-
file_types : "<%= @file_types %>",
|
38
|
-
file_types_description : "<%= @file_types_description %>",
|
39
|
-
file_upload_limit : "<%= @file_upload_limit %>",
|
40
|
-
file_queue_limit : 0,
|
41
|
-
|
42
|
-
// The event handler functions are defined in handlers.js
|
43
|
-
//swfupload_loaded_handler : swfUploadLoaded,
|
44
|
-
file_queued_handler : fileQueued,
|
45
|
-
file_queue_error_handler : fileQueueError,
|
46
|
-
file_dialog_complete_handler : fileDialogComplete,
|
47
|
-
upload_start_handler : uploadStart,
|
48
|
-
upload_progress_handler : uploadProgress,
|
49
|
-
upload_error_handler : uploadError,
|
50
|
-
upload_success_handler : uploadSuccess,
|
51
|
-
upload_complete_handler : uploadComplete,
|
52
|
-
queue_complete_handler : queueComplete, // Queue plugin event
|
53
|
-
|
54
|
-
// Button Settings
|
55
|
-
button_image_url : "/javascripts/ckeditor/images/select_files.png",
|
56
|
-
button_placeholder_id : "spanButtonPlaceholder",
|
57
|
-
button_width: 117,
|
58
|
-
button_height: 29,
|
59
|
-
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
|
60
|
-
button_cursor: SWFUpload.CURSOR.HAND,
|
61
|
-
|
62
|
-
// Flash Settings
|
63
|
-
flash_url : "/javascripts/ckeditor/swfupload/swfupload.swf",
|
64
|
-
|
65
|
-
custom_settings : {
|
66
|
-
progressTarget : "divFileProgressContainer"
|
67
|
-
},
|
68
|
-
|
69
|
-
// Debug settings
|
70
|
-
debug: false
|
71
|
-
});
|
72
|
-
};
|
73
|
-
</script>
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module Ckeditor
|
2
|
-
module FormBuilder
|
3
|
-
def self.included(base)
|
4
|
-
base.send(:include, Ckeditor::ViewHelper)
|
5
|
-
base.send(:include, Ckeditor::FormBuilder::ClassMethods)
|
6
|
-
end
|
7
|
-
|
8
|
-
module ClassMethods
|
9
|
-
# Example:
|
10
|
-
# <% form_for :post, :url => posts_path do |form| %>
|
11
|
-
# ...
|
12
|
-
# <%= form.cktext_area :notes, :toolbar=>'Full', :width=>'400px', :heigth=>'200px' %>
|
13
|
-
# <% end %>
|
14
|
-
#
|
15
|
-
# With swfupload options:
|
16
|
-
# <%= form.cktext_area :content, :swf_params=>{:assetable_type=>'User', :assetable_id=>current_user.id} %>
|
17
|
-
def cktext_area(method, options = {})
|
18
|
-
ckeditor_textarea(@object_name, method, objectify_options(options))
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
data/lib/ckeditor/middleware.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rack/utils'
|
2
|
-
|
3
|
-
module Ckeditor
|
4
|
-
class Middleware
|
5
|
-
def initialize(app, session_key = '_session_id')
|
6
|
-
@app = app
|
7
|
-
@session_key = session_key
|
8
|
-
end
|
9
|
-
|
10
|
-
def call(env)
|
11
|
-
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave)\s+Flash/
|
12
|
-
params = ::Rack::Utils.parse_query(env['QUERY_STRING'])
|
13
|
-
env['HTTP_COOKIE'] = [ @session_key, ::Rack::Utils.unescape(params[@session_key]) ].join('=').freeze unless params[@session_key].nil?
|
14
|
-
end
|
15
|
-
@app.call(env)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/ckeditor/view_helper.rb
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
module Ckeditor
|
2
|
-
module ViewHelper
|
3
|
-
include ActionView::Helpers::JavaScriptHelper
|
4
|
-
include ActionView::Helpers::TagHelper
|
5
|
-
|
6
|
-
# Ckeditor helper:
|
7
|
-
# <%= ckeditor_textarea("object", "field", :width => '100%', :height => '200px') %>
|
8
|
-
#
|
9
|
-
# Two forms on one page:
|
10
|
-
# <%= form_tag "one" %>
|
11
|
-
# <%= ckeditor_textarea("object", "field", :index => "1") %>
|
12
|
-
# <% end %>
|
13
|
-
# ...
|
14
|
-
# <%= form_tag "two" %>
|
15
|
-
# <%= ckeditor_textarea("object", "field", :index => "2") %>
|
16
|
-
# <% end %>
|
17
|
-
#
|
18
|
-
def ckeditor_textarea(object_name, field, options = {})
|
19
|
-
options = options.dup.symbolize_keys
|
20
|
-
|
21
|
-
object = options.delete(:object) if options.key?(:object)
|
22
|
-
object ||= @template.instance_variable_get("@#{object_name}")
|
23
|
-
|
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
|
-
width = options.delete(:width) || '100%'
|
29
|
-
height = options.delete(:height) || '100%'
|
30
|
-
|
31
|
-
textarea_options = { :id => element_id }
|
32
|
-
|
33
|
-
textarea_options[:cols] = (options.delete(:cols) || 70).to_i
|
34
|
-
textarea_options[:rows] = (options.delete(:rows) || 20).to_i
|
35
|
-
textarea_options[:class] = (options.delete(:class) || 'editor').to_s
|
36
|
-
textarea_options[:style] = "width:#{width};height:#{height}"
|
37
|
-
|
38
|
-
ckeditor_options = {:width => width, :height => height }
|
39
|
-
ckeditor_options[:language] = (options.delete(:language) || I18n.locale).to_s
|
40
|
-
ckeditor_options[:toolbar] = options.delete(:toolbar) if options[:toolbar]
|
41
|
-
ckeditor_options[:skin] = options.delete(:skin) if options[:skin]
|
42
|
-
|
43
|
-
ckeditor_options[:swf_params] = options.delete(:swf_params) if options[:swf_params]
|
44
|
-
|
45
|
-
ckeditor_options[:filebrowserBrowseUrl] = Ckeditor.file_manager_uri
|
46
|
-
ckeditor_options[:filebrowserUploadUrl] = Ckeditor.file_manager_upload_uri
|
47
|
-
|
48
|
-
ckeditor_options[:filebrowserImageBrowseUrl] = Ckeditor.file_manager_image_uri
|
49
|
-
ckeditor_options[:filebrowserImageUploadUrl] = Ckeditor.file_manager_image_upload_uri
|
50
|
-
|
51
|
-
output_buffer = ActiveSupport::SafeBuffer.new
|
52
|
-
|
53
|
-
output_buffer << ActionView::Base::InstanceTag.new(object_name, field, self, object).to_text_area_tag(textarea_options.merge(options))
|
54
|
-
|
55
|
-
output_buffer << javascript_tag("if (CKEDITOR.instances['#{element_id}']) {
|
56
|
-
CKEDITOR.remove(CKEDITOR.instances['#{element_id}']);}
|
57
|
-
CKEDITOR.replace('#{element_id}', { #{ckeditor_applay_options(ckeditor_options)} });")
|
58
|
-
|
59
|
-
output_buffer
|
60
|
-
end
|
61
|
-
|
62
|
-
def ckeditor_ajax_script(backend = 'jquery')
|
63
|
-
javascript_tag("$(document).ready(function(){
|
64
|
-
$('form[data-remote]').bind('ajax:before', function(){
|
65
|
-
for (instance in CKEDITOR.instances){
|
66
|
-
CKEDITOR.instances[instance].updateElement();
|
67
|
-
}
|
68
|
-
});
|
69
|
-
});")
|
70
|
-
end
|
71
|
-
|
72
|
-
protected
|
73
|
-
|
74
|
-
def ckeditor_element_id(object_name, field, index = nil)
|
75
|
-
[object_name, index, field, 'editor'].compact.join('_')
|
76
|
-
end
|
77
|
-
|
78
|
-
def ckeditor_applay_options(options={})
|
79
|
-
str = []
|
80
|
-
options.each do |k, v|
|
81
|
-
value = case v.class.to_s.downcase
|
82
|
-
when 'string' then "'#{v}'"
|
83
|
-
when 'hash' then "{ #{ckeditor_applay_options(v)} }"
|
84
|
-
else v
|
85
|
-
end
|
86
|
-
str << "#{k}: #{value}"
|
87
|
-
end
|
88
|
-
|
89
|
-
str.join(',')
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'rails/generators'
|
2
|
-
|
3
|
-
module Ckeditor
|
4
|
-
class BaseGenerator < Rails::Generators::Base
|
5
|
-
class_option :version, :type => :string, :default => '3.6',
|
6
|
-
:desc => "Version of ckeditor which be install"
|
7
|
-
|
8
|
-
def self.source_root
|
9
|
-
@source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
10
|
-
end
|
11
|
-
|
12
|
-
# copy configuration
|
13
|
-
def copy_initializer
|
14
|
-
template "ckeditor.rb", "config/initializers/ckeditor.rb"
|
15
|
-
end
|
16
|
-
|
17
|
-
# copy ckeditor files
|
18
|
-
def install_ckeditor
|
19
|
-
puts "Start download #{filename}"
|
20
|
-
file = Ckeditor::Utils.download(download_url)
|
21
|
-
|
22
|
-
if File.exist?(file.path)
|
23
|
-
Ckeditor::Utils.extract(file.path, Rails.root.join('public', 'javascripts'))
|
24
|
-
directory "ckeditor", "public/javascripts/ckeditor"
|
25
|
-
file.unlink
|
26
|
-
else
|
27
|
-
raise Rails::Generators::Error.new("Cannot download file #{download_url}")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
|
33
|
-
def download_url
|
34
|
-
"http://download.cksource.com/CKEditor/CKEditor/CKEditor%20#{options[:version]}/ckeditor_#{options[:version]}.tar.gz"
|
35
|
-
end
|
36
|
-
|
37
|
-
def filename
|
38
|
-
"ckeditor_#{options[:version]}.tar.gz"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# Use this hook to configure ckeditor
|
2
|
-
if Object.const_defined?("Ckeditor")
|
3
|
-
Ckeditor.setup do |config|
|
4
|
-
# The file_post_name allows you to set the value name used to post the file.
|
5
|
-
# This is not related to the file name. The default value is 'data'.
|
6
|
-
# For maximum compatibility it is recommended that the default value is used.
|
7
|
-
#config.swf_file_post_name = "data"
|
8
|
-
|
9
|
-
# A text description that is displayed to the user in the File Browser dialog.
|
10
|
-
#config.swf_file_types_description = "Files"
|
11
|
-
|
12
|
-
# The file_types setting accepts a semi-colon separated list of file extensions
|
13
|
-
# that are allowed to be selected by the user. Use '*.*' to allow all file types.
|
14
|
-
#config.swf_file_types = "*.doc;*.wpd;*.pdf;*.swf;*.xls"
|
15
|
-
|
16
|
-
# The file_size_limit setting defines the maximum allowed size of a file to be uploaded.
|
17
|
-
# This setting accepts a value and unit. Valid units are B, KB, MB and GB.
|
18
|
-
# If the unit is omitted default is KB. A value of 0 (zero) is interpreted as unlimited.
|
19
|
-
# Note: This setting only applies to the user's browser. It does not affect any settings or limits on the web server.
|
20
|
-
#config.swf_file_size_limit = "10 MB"
|
21
|
-
|
22
|
-
# Defines the number of files allowed to be uploaded by SWFUpload.
|
23
|
-
# This setting also sets the upper bound of the file_queue_limit setting.
|
24
|
-
# Once the user has uploaded or queued the maximum number of files she will
|
25
|
-
# no longer be able to queue additional files. The value of 0 (zero) is interpreted as unlimited.
|
26
|
-
# Only successful uploads (uploads the trigger the uploadSuccess event) are counted toward the upload limit.
|
27
|
-
# The setStats function can be used to modify the number of successful uploads.
|
28
|
-
# Note: This value is not tracked across pages and is reset when a page is refreshed.
|
29
|
-
# File quotas should be managed by the web server.
|
30
|
-
#config.swf_file_upload_limit = 5
|
31
|
-
|
32
|
-
# The same as for downloads files, only to upload images
|
33
|
-
#config.swf_image_file_types_description = "Images"
|
34
|
-
#config.swf_image_file_types = "*.jpg;*.jpeg;*.png;*.gif"
|
35
|
-
#config.swf_image_file_size_limit = "5 MB"
|
36
|
-
#config.swf_image_file_upload_limit = 10
|
37
|
-
|
38
|
-
# Path for view all uploaded files
|
39
|
-
#config.file_manager_uri = "/ckeditor/attachments"
|
40
|
-
|
41
|
-
# Path for upload files process
|
42
|
-
#config.file_manager_upload_uri = "/ckeditor/attachments"
|
43
|
-
|
44
|
-
# Path for view all uploaded images
|
45
|
-
#config.file_manager_image_uri = "/ckeditor/pictures"
|
46
|
-
|
47
|
-
# Path for upload images process
|
48
|
-
#config.file_manager_image_upload_uri = "/ckeditor/pictures"
|
49
|
-
|
50
|
-
# Model's names witch processing in ckeditor_controller
|
51
|
-
#config.file_manager_image_model = "Ckeditor::Picture"
|
52
|
-
#config.file_manager_file_model = "Ckeditor::AttachmentFile"
|
53
|
-
end
|
54
|
-
end
|
@@ -1,384 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
|
3
|
-
For licensing, see LICENSE.html or http://ckeditor.com/license
|
4
|
-
*/
|
5
|
-
|
6
|
-
(function()
|
7
|
-
{
|
8
|
-
CKEDITOR.dialog.add( 'attachment', function( editor )
|
9
|
-
{
|
10
|
-
var selectableTargets = /^(_(?:self|top|parent|blank))$/;
|
11
|
-
|
12
|
-
var parseLink = function( editor, element )
|
13
|
-
{
|
14
|
-
var href = element ? ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) : '',
|
15
|
-
emailMatch,
|
16
|
-
anchorMatch,
|
17
|
-
urlMatch,
|
18
|
-
retval = {};
|
19
|
-
|
20
|
-
retval.type = 'url';
|
21
|
-
retval.url = href;
|
22
|
-
|
23
|
-
// Load target and popup settings.
|
24
|
-
if ( element )
|
25
|
-
{
|
26
|
-
var target = element.getAttribute( 'target' );
|
27
|
-
retval.target = {};
|
28
|
-
|
29
|
-
// IE BUG: target attribute is an empty string instead of null in IE if it's not set.
|
30
|
-
if ( target )
|
31
|
-
{
|
32
|
-
var targetMatch = target.match( selectableTargets );
|
33
|
-
if ( targetMatch )
|
34
|
-
retval.target.type = retval.target.name = target;
|
35
|
-
else
|
36
|
-
{
|
37
|
-
retval.target.type = 'frame';
|
38
|
-
retval.target.name = target;
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
var me = this;
|
43
|
-
|
44
|
-
retval.title = element.getAttribute('title');
|
45
|
-
}
|
46
|
-
|
47
|
-
// Find out whether we have any anchors in the editor.
|
48
|
-
// Get all IMG elements in CK document.
|
49
|
-
var elements = editor.document.getElementsByTag( 'img' ),
|
50
|
-
realAnchors = new CKEDITOR.dom.nodeList( editor.document.$.anchors ),
|
51
|
-
anchors = retval.anchors = [];
|
52
|
-
|
53
|
-
for( var i = 0; i < elements.count() ; i++ )
|
54
|
-
{
|
55
|
-
var item = elements.getItem( i );
|
56
|
-
if ( item.getAttribute( '_cke_realelement' ) && item.getAttribute( '_cke_real_element_type' ) == 'anchor' )
|
57
|
-
{
|
58
|
-
anchors.push( editor.restoreRealElement( item ) );
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
|
-
for ( i = 0 ; i < realAnchors.count() ; i++ )
|
63
|
-
anchors.push( realAnchors.getItem( i ) );
|
64
|
-
|
65
|
-
for ( i = 0 ; i < anchors.length ; i++ )
|
66
|
-
{
|
67
|
-
item = anchors[ i ];
|
68
|
-
anchors[ i ] = { name : item.getAttribute( 'name' ), id : item.getAttribute( 'id' ) };
|
69
|
-
}
|
70
|
-
|
71
|
-
// Record down the selected element in the dialog.
|
72
|
-
this._.selectedElement = element;
|
73
|
-
|
74
|
-
return retval;
|
75
|
-
};
|
76
|
-
// Handles the event when the "Target" selection box is changed.
|
77
|
-
var targetChanged = function()
|
78
|
-
{
|
79
|
-
var dialog = this.getDialog(),
|
80
|
-
targetName = dialog.getContentElement( 'general', 'linkTargetName' ),
|
81
|
-
value = this.getValue();
|
82
|
-
|
83
|
-
if ( !targetName )
|
84
|
-
return;
|
85
|
-
|
86
|
-
targetName.setLabel( editor.lang.link.targetFrameName );
|
87
|
-
this.getDialog().setValueOf( 'general', 'linkTargetName', value.charAt( 0 ) == '_' ? value : '' );
|
88
|
-
};
|
89
|
-
|
90
|
-
function parseUrl(url)
|
91
|
-
{
|
92
|
-
var filename = url.split('/').pop();
|
93
|
-
var extname = filename.split('.').pop();
|
94
|
-
|
95
|
-
return { filename : filename, className : "attach_" + extname };
|
96
|
-
}
|
97
|
-
|
98
|
-
return {
|
99
|
-
title : editor.lang.attachment.title,
|
100
|
-
minWidth : 420,
|
101
|
-
minHeight : 200,
|
102
|
-
|
103
|
-
onShow : function()
|
104
|
-
{
|
105
|
-
this.fakeObj = false;
|
106
|
-
|
107
|
-
var editor = this.getParentEditor(),
|
108
|
-
selection = editor.getSelection(),
|
109
|
-
ranges = selection.getRanges(),
|
110
|
-
element = null,
|
111
|
-
me = this;
|
112
|
-
// Fill in all the relevant fields if there's already one link selected.
|
113
|
-
if ( ranges.length == 1 )
|
114
|
-
{
|
115
|
-
|
116
|
-
var rangeRoot = ranges[0].getCommonAncestor( true );
|
117
|
-
element = rangeRoot.getAscendant( 'a', true );
|
118
|
-
if ( element && element.getAttribute( 'href' ) )
|
119
|
-
{
|
120
|
-
selection.selectElement( element );
|
121
|
-
}
|
122
|
-
else if ( ( element = rangeRoot.getAscendant( 'img', true ) ) &&
|
123
|
-
element.getAttribute( '_cke_real_element_type' ) &&
|
124
|
-
element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
|
125
|
-
{
|
126
|
-
this.fakeObj = element;
|
127
|
-
element = editor.restoreRealElement( this.fakeObj );
|
128
|
-
selection.selectElement( this.fakeObj );
|
129
|
-
}
|
130
|
-
else
|
131
|
-
element = null;
|
132
|
-
}
|
133
|
-
|
134
|
-
this.setupContent( parseLink.apply( this, [ editor, element ] ) );
|
135
|
-
},
|
136
|
-
|
137
|
-
onOk : function()
|
138
|
-
{
|
139
|
-
var attributes = { href : 'javascript:void(0)/*' + CKEDITOR.tools.getNextNumber() + '*/' },
|
140
|
-
removeAttributes = [],
|
141
|
-
data = { href : attributes.href },
|
142
|
-
me = this,
|
143
|
-
editor = this.getParentEditor();
|
144
|
-
|
145
|
-
this.commitContent( data );
|
146
|
-
|
147
|
-
|
148
|
-
var url = data.url || '';
|
149
|
-
attributes._cke_saved_href = ( url.indexOf( '/' ) === 0 ) ? url : "http://" + url;
|
150
|
-
|
151
|
-
var file = parseUrl(url);
|
152
|
-
|
153
|
-
var title = data.title || '';
|
154
|
-
attributes.title = (data.title.length == 0) ? file.filename : data.title;
|
155
|
-
attributes.class = file.className;
|
156
|
-
|
157
|
-
// Popups and target.
|
158
|
-
if ( data.target )
|
159
|
-
{
|
160
|
-
if ( data.target.type != 'notSet' && data.target.name )
|
161
|
-
attributes.target = data.target.name;
|
162
|
-
else
|
163
|
-
removeAttributes.push( 'target' );
|
164
|
-
|
165
|
-
removeAttributes.push( '_cke_pa_onclick', 'onclick' );
|
166
|
-
}
|
167
|
-
|
168
|
-
// Insert Link
|
169
|
-
if ( !this._.selectedElement )
|
170
|
-
{
|
171
|
-
// Create element if current selection is collapsed.
|
172
|
-
var selection = editor.getSelection(),
|
173
|
-
ranges = selection.getRanges();
|
174
|
-
if ( ranges.length == 1 && ranges[0].collapsed )
|
175
|
-
{
|
176
|
-
var text = new CKEDITOR.dom.text( attributes.title, editor.document );
|
177
|
-
ranges[0].insertNode( text );
|
178
|
-
ranges[0].selectNodeContents( text );
|
179
|
-
selection.selectRanges( ranges );
|
180
|
-
}
|
181
|
-
|
182
|
-
// Apply style.
|
183
|
-
var style = new CKEDITOR.style( { element : 'a', attributes : attributes } );
|
184
|
-
style.type = CKEDITOR.STYLE_INLINE; // need to override... dunno why.
|
185
|
-
style.apply( editor.document );
|
186
|
-
}
|
187
|
-
else
|
188
|
-
{
|
189
|
-
// We're only editing an existing link, so just overwrite the attributes.
|
190
|
-
var element = this._.selectedElement;
|
191
|
-
|
192
|
-
// IE BUG: Setting the name attribute to an existing link doesn't work.
|
193
|
-
// Must re-create the link from weired syntax to workaround.
|
194
|
-
if ( CKEDITOR.env.ie && attributes.name != element.getAttribute( 'name' ) )
|
195
|
-
{
|
196
|
-
var newElement = new CKEDITOR.dom.element( '<a name="' + CKEDITOR.tools.htmlEncode( attributes.name ) + '">',
|
197
|
-
editor.document );
|
198
|
-
|
199
|
-
selection = editor.getSelection();
|
200
|
-
|
201
|
-
element.moveChildren( newElement );
|
202
|
-
element.copyAttributes( newElement, { name : 1 } );
|
203
|
-
newElement.replace( element );
|
204
|
-
element = newElement;
|
205
|
-
|
206
|
-
selection.selectElement( element );
|
207
|
-
}
|
208
|
-
|
209
|
-
element.setAttributes( attributes );
|
210
|
-
element.removeAttributes( removeAttributes );
|
211
|
-
|
212
|
-
if (element.getAttribute('title') )
|
213
|
-
element.setHtml(element.getAttribute('title'));
|
214
|
-
|
215
|
-
// Make the element display as an anchor if a name has been set.
|
216
|
-
if ( element.getAttribute( 'name' ) )
|
217
|
-
element.addClass( 'cke_anchor' );
|
218
|
-
else
|
219
|
-
element.removeClass( 'cke_anchor' );
|
220
|
-
|
221
|
-
if ( this.fakeObj )
|
222
|
-
editor.createFakeElement( element, 'cke_anchor', 'anchor' ).replace( this.fakeObj );
|
223
|
-
|
224
|
-
delete this._.selectedElement;
|
225
|
-
}
|
226
|
-
},
|
227
|
-
|
228
|
-
contents :
|
229
|
-
[
|
230
|
-
{
|
231
|
-
label : editor.lang.common.generalTab,
|
232
|
-
id : 'general',
|
233
|
-
accessKey : 'I',
|
234
|
-
elements :
|
235
|
-
[
|
236
|
-
{
|
237
|
-
type : 'vbox',
|
238
|
-
padding : 0,
|
239
|
-
children :
|
240
|
-
[
|
241
|
-
{
|
242
|
-
type : 'html',
|
243
|
-
html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.attachment.url ) + '</span>'
|
244
|
-
},
|
245
|
-
{
|
246
|
-
type : 'hbox',
|
247
|
-
widths : [ '280px', '110px' ],
|
248
|
-
align : 'right',
|
249
|
-
children :
|
250
|
-
[
|
251
|
-
{
|
252
|
-
id : 'src',
|
253
|
-
type : 'text',
|
254
|
-
label : '',
|
255
|
-
validate : CKEDITOR.dialog.validate.notEmpty( editor.lang.flash.validateSrc ),
|
256
|
-
setup : function( data )
|
257
|
-
{
|
258
|
-
if ( data.url )
|
259
|
-
this.setValue( data.url );
|
260
|
-
|
261
|
-
this.select();
|
262
|
-
},
|
263
|
-
commit : function( data )
|
264
|
-
{
|
265
|
-
data.url = this.getValue();
|
266
|
-
}
|
267
|
-
},
|
268
|
-
{
|
269
|
-
type : 'button',
|
270
|
-
id : 'browse',
|
271
|
-
filebrowser : 'general:src',
|
272
|
-
hidden : true,
|
273
|
-
align : 'center',
|
274
|
-
label : editor.lang.common.browseServer
|
275
|
-
}
|
276
|
-
]
|
277
|
-
}
|
278
|
-
]
|
279
|
-
},
|
280
|
-
|
281
|
-
{
|
282
|
-
type : 'vbox',
|
283
|
-
padding : 0,
|
284
|
-
children :
|
285
|
-
[
|
286
|
-
{
|
287
|
-
id : 'name',
|
288
|
-
type : 'text',
|
289
|
-
label : editor.lang.attachment.name,
|
290
|
-
setup : function( data )
|
291
|
-
{
|
292
|
-
if ( data.title )
|
293
|
-
this.setValue( data.title );
|
294
|
-
},
|
295
|
-
commit : function( data )
|
296
|
-
{
|
297
|
-
data.title = this.getValue();
|
298
|
-
}
|
299
|
-
}
|
300
|
-
]
|
301
|
-
},
|
302
|
-
|
303
|
-
{
|
304
|
-
type : 'hbox',
|
305
|
-
widths : [ '50%', '50%' ],
|
306
|
-
children :
|
307
|
-
[
|
308
|
-
{
|
309
|
-
type : 'select',
|
310
|
-
id : 'linkTargetType',
|
311
|
-
label : editor.lang.link.target,
|
312
|
-
'default' : 'notSet',
|
313
|
-
style : 'width : 100%;',
|
314
|
-
'items' :
|
315
|
-
[
|
316
|
-
[ editor.lang.link.targetNotSet, 'notSet' ],
|
317
|
-
[ editor.lang.link.targetFrame, 'frame' ],
|
318
|
-
[ editor.lang.link.targetNew, '_blank' ],
|
319
|
-
[ editor.lang.link.targetTop, '_top' ],
|
320
|
-
[ editor.lang.link.targetSelf, '_self' ],
|
321
|
-
[ editor.lang.link.targetParent, '_parent' ]
|
322
|
-
],
|
323
|
-
onChange : targetChanged,
|
324
|
-
setup : function( data )
|
325
|
-
{
|
326
|
-
if ( data.target )
|
327
|
-
this.setValue( data.target.type );
|
328
|
-
},
|
329
|
-
commit : function( data )
|
330
|
-
{
|
331
|
-
if ( !data.target )
|
332
|
-
data.target = {};
|
333
|
-
|
334
|
-
data.target.type = this.getValue();
|
335
|
-
}
|
336
|
-
},
|
337
|
-
{
|
338
|
-
type : 'text',
|
339
|
-
id : 'linkTargetName',
|
340
|
-
label : editor.lang.link.targetFrameName,
|
341
|
-
'default' : '',
|
342
|
-
setup : function( data )
|
343
|
-
{
|
344
|
-
if ( data.target )
|
345
|
-
this.setValue( data.target.name );
|
346
|
-
},
|
347
|
-
commit : function( data )
|
348
|
-
{
|
349
|
-
if ( !data.target )
|
350
|
-
data.target = {};
|
351
|
-
|
352
|
-
data.target.name = this.getValue();
|
353
|
-
}
|
354
|
-
}
|
355
|
-
]
|
356
|
-
}
|
357
|
-
]
|
358
|
-
},
|
359
|
-
{
|
360
|
-
id : 'Upload',
|
361
|
-
hidden : true,
|
362
|
-
filebrowser : 'uploadButton',
|
363
|
-
label : editor.lang.common.upload,
|
364
|
-
elements :
|
365
|
-
[
|
366
|
-
{
|
367
|
-
type : 'file',
|
368
|
-
id : 'upload',
|
369
|
-
label : editor.lang.common.upload,
|
370
|
-
size : 38
|
371
|
-
},
|
372
|
-
{
|
373
|
-
type : 'fileButton',
|
374
|
-
id : 'uploadButton',
|
375
|
-
label : editor.lang.common.uploadSubmit,
|
376
|
-
filebrowser : 'general:src',
|
377
|
-
'for' : [ 'Upload', 'upload' ]
|
378
|
-
}
|
379
|
-
]
|
380
|
-
},
|
381
|
-
]
|
382
|
-
};
|
383
|
-
});
|
384
|
-
})();
|