bcms_fckeditor 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,2 +1,88 @@
1
1
  require 'bcms_fckeditor/routes'
2
2
  Cms.wysiwig_js = ['/bcms/fckeditor/fckeditor.js', '/bcms/fckeditor/editor.js']
3
+
4
+ # FCKeditor's file browser functionality is handled by SectionController#file_browser.
5
+ # However, the current implementation does not handle file uploads or cerating
6
+ # new sections or 'folders'.
7
+ # This patch implements a FCKeditor connector that plays well with BrowserCMS.
8
+ Cms::SectionsController.class_eval do
9
+
10
+ protect_from_forgery :except => :file_browser
11
+
12
+ # All requests generated by the file browser are handled by this controller
13
+ # action. Currently, there are 3 commands implemented:
14
+ # a) Uploading a new image, which creates a new ImageBlock
15
+ # b) Creating a new CMS Section
16
+ # c) Displaying file browser contents
17
+ def file_browser
18
+ @section = Section.find_by_name_path(params[:CurrentFolder])
19
+ if request.post? && params[:NewFile]
20
+ handle_file_browser_upload
21
+ elsif params[:NewFolderName]
22
+ create_section
23
+ else
24
+ render_file_browser
25
+ end
26
+ end
27
+
28
+ protected
29
+
30
+ # Sections created through FCKeditor's file browser, are assigned to groups
31
+ # "guest", "cms-admin" and "content-editor" and are hidden from menues by
32
+ # default.
33
+ def create_section
34
+ section_path = build_path(params[:NewFolderName].to_slug)
35
+
36
+ begin
37
+ Section.create!(:name => params[:NewFolderName],
38
+ :path => section_path,
39
+ :parent_id => @section.id,
40
+ :group_ids => [1, 2, 3],
41
+ :hidden => true)
42
+ @result = "0"
43
+ rescue Exception => e
44
+ build_error_string(e)
45
+ end
46
+
47
+ render_response
48
+ end
49
+
50
+ # According to FCKeditor's documentation, server side connectors should rename
51
+ # a file when a file with the same name exists on the filesystem.
52
+ # This connector does not behave that way. If a filename exists, an error is
53
+ # returned. The rationale behind this decision is that uploading a file through the
54
+ # FCKeditor's file browser is essentially just another interface to creating a FileBlock
55
+ # or an ImageBlock.
56
+ def handle_file_browser_upload
57
+ upfile = params[:NewFile]
58
+ klass = params[:Type] == "File" ? FileBlock : ImageBlock
59
+ file_path = build_path(upfile.original_filename)
60
+
61
+ begin
62
+ klass.create!(:attachment_section => @section,
63
+ :attachment_file => upfile,
64
+ :attachment_file_path => file_path,
65
+ :publish_on_save => true,
66
+ :name => upfile.original_filename.capitalize)
67
+ @result = "0"
68
+ rescue Exception => e
69
+ build_error_string(e)
70
+ end
71
+
72
+ render_response
73
+ end
74
+
75
+ private
76
+
77
+ def error_string(e)
78
+ @result = "1, '#{escape_javascript(e.message.to_sentence)}'"
79
+ end
80
+
81
+ def build_path(resource_name)
82
+ "%s%s%s" % [@section.path, @section.path == "/" ? "" : "/", resource_name]
83
+ end
84
+
85
+ def render_response
86
+ render :text => %Q{<script type="text/javascript">window.parent.frames['frmUpload'].OnUploadCompleted(#{@result});</script>}, :layout => false
87
+ end
88
+ end
@@ -187,7 +187,7 @@ function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
187
187
  <frame src="frmresourcetype.html" scrolling="no" frameborder="0">
188
188
  <frame name="frmFolders" src="frmfolders.html" scrolling="auto" frameborder="1">
189
189
  </frameset>
190
- <frameset rows="50,*,0" framespacing="0">
190
+ <frameset rows="50,*,50" framespacing="0">
191
191
  <frame name="frmActualFolder" src="frmactualfolder.html" scrolling="no" frameborder="0">
192
192
  <frame name="frmResourcesList" src="frmresourceslist.html" scrolling="auto" frameborder="1">
193
193
  <frameset cols="150,*,0" framespacing="0" frameborder="0">
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcms_fckeditor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ hash: 17
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 3
10
+ version: 1.0.3
5
11
  platform: ruby
6
12
  authors:
7
13
  - BrowserMedia
@@ -9,19 +15,25 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-03-04 00:00:00 -05:00
18
+ date: 2010-12-20 00:00:00 -06:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: browsercms
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 3
32
+ - 1
33
+ - 0
23
34
  version: 3.1.0
24
- version:
35
+ type: :runtime
36
+ version_requirements: *id001
25
37
  description: A module for replacing the default WYSIWIG editor of browsercms with FCKEditor 2.6.3.
26
38
  email: github@browsermedia.com
27
39
  executables: []
@@ -356,6 +368,11 @@ files:
356
368
  - LICENSE.txt
357
369
  - README
358
370
  - README.markdown
371
+ - test/custom_assertions.rb
372
+ - test/integration/cms/fckeditor_test.rb
373
+ - test/performance/browsing_test.rb
374
+ - test/test_helper.rb
375
+ - test/test_logging.rb
359
376
  has_rdoc: true
360
377
  homepage: http://github.com/browsermedia/bcms_fckeditor
361
378
  licenses: []
@@ -366,21 +383,27 @@ rdoc_options:
366
383
  require_paths:
367
384
  - lib
368
385
  required_ruby_version: !ruby/object:Gem::Requirement
386
+ none: false
369
387
  requirements:
370
388
  - - ">="
371
389
  - !ruby/object:Gem::Version
390
+ hash: 3
391
+ segments:
392
+ - 0
372
393
  version: "0"
373
- version:
374
394
  required_rubygems_version: !ruby/object:Gem::Requirement
395
+ none: false
375
396
  requirements:
376
397
  - - ">="
377
398
  - !ruby/object:Gem::Version
399
+ hash: 3
400
+ segments:
401
+ - 0
378
402
  version: "0"
379
- version:
380
403
  requirements: []
381
404
 
382
405
  rubyforge_project: bcms_fckeditor
383
- rubygems_version: 1.3.5
406
+ rubygems_version: 1.3.7
384
407
  signing_key:
385
408
  specification_version: 3
386
409
  summary: A WYSIWIG editor for browsercms