Skip to content

Commit 17b1fa5

Browse files
committed
Add RedactorAsset Document with DocumentUploader / DocumentsController
Adds support for file uploads of types: doc, docx, pdf, xls, xlsx, txt, rtf Could add support for other types as needed
1 parent b726f00 commit 17b1fa5

File tree

7 files changed

+72
-21
lines changed

7 files changed

+72
-21
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class RedactorRails::DocumentsController < ApplicationController
2+
def index
3+
@documents = RedactorRails.document_model.find_all({})
4+
render :json => @documents.to_json
5+
end
6+
7+
def create
8+
@document = RedactorRails::Document.new
9+
10+
file = params[:file]
11+
@document.data = RedactorRails::Http.normalize_param(file, request)
12+
13+
if @document.save
14+
render :text => { :filelink => @document.url, :filename => @document.filename }.to_json
15+
else
16+
render :nothing => true
17+
end
18+
end
19+
end

config/routes.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
RedactorRails::Engine.routes.draw do
2-
resources :pictures, :only => [:index, :create]
2+
resources :pictures, :only => [:index, :create]
3+
resources :documents, :only => [:index, :create]
34
end

lib/generators/redactor/install_generator.rb

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,59 +7,61 @@ class InstallGenerator < ::Rails::Generators::Base
77
desc "Generates migration for Tag and Tagging models"
88

99
class_option :orm, :type => :string, :default => "active_record",
10-
:desc => "Backend processor for upload support"
10+
:desc => "Backend processor for upload support"
1111

1212
class_option :backend, :type => :string, :default => 'carrierwave',
13-
:desc => "carrierwave(default)"
13+
:desc => "carrierwave(default)"
1414

1515
def self.source_root
16-
@source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
16+
@source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
1717
end
1818

1919
def self.next_migration_number(dirname)
20-
Time.now.strftime("%Y%m%d%H%M%S")
20+
Time.now.strftime("%Y%m%d%H%M%S")
2121
end
2222

2323
def mount_engine
24-
route "mount RedactorRails::Engine => '/redactor_rails'"
24+
route "mount RedactorRails::Engine => '/redactor_rails'"
2525
end
2626

2727
def create_models
28-
[:asset, :picture].each do |filename|
29-
template "#{generator_dir}/redactor/#{filename}.rb",
30-
File.join('app/models', redactor_dir, "#{filename}.rb")
31-
end
28+
[:asset, :picture, :document].each do |filename|
29+
template "#{generator_dir}/redactor/#{filename}.rb",
30+
File.join('app/models', redactor_dir, "#{filename}.rb")
31+
end
3232

33-
if backend == "carrierwave"
34-
template "#{uploaders_dir}/uploaders/redactor_rails_picture_uploader.rb",
35-
File.join("app/uploaders", "redactor_rails_picture_uploader.rb")
36-
end
33+
if backend == "carrierwave"
34+
[:picture, :document].each do |filename|
35+
template "#{uploaders_dir}/uploaders/redactor_rails_#{filename}_uploader.rb",
36+
File.join("app/uploaders", "redactor_rails_#{filename}_uploader.rb")
37+
end
38+
end
3739
end
3840

3941
def create_migration
40-
migration_template "#{generator_dir}/migration.rb", File.join('db/migrate', "create_redactor_assets.rb")
42+
migration_template "#{generator_dir}/migration.rb", File.join('db/migrate', "create_redactor_assets.rb")
4143
end
4244

4345
protected
4446

4547
def redactor_dir
46-
'redactor_rails'
48+
'redactor_rails'
4749
end
4850

4951
def generator_dir
50-
@generator_dir ||= [orm, backend].join('/')
52+
@generator_dir ||= [orm, backend].join('/')
5153
end
5254

5355
def uploaders_dir
54-
@uploaders_dir ||= ['base', 'carrierwave'].join('/')
56+
@uploaders_dir ||= ['base', 'carrierwave'].join('/')
5557
end
5658

5759
def orm
58-
options[:orm] || "active_record"
60+
options[:orm] || "active_record"
5961
end
6062

6163
def backend
62-
options[:backend] || "carrierwave"
64+
options[:backend] || "carrierwave"
6365
end
6466

6567
end
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class RedactorRails::Document < RedactorRails::Asset
2+
mount_uploader :data, RedactorRailsDocumentUploader, :mount_on => :data_file_name
3+
4+
def url_content
5+
url(:content)
6+
end
7+
end
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# encoding: utf-8
2+
class RedactorRailsDocumentUploader < CarrierWave::Uploader::Base
3+
include RedactorRails::Backend::CarrierWave
4+
5+
storage :fog
6+
7+
def store_dir
8+
"system/redactor_assets/documents/#{model.id}"
9+
end
10+
11+
def extension_white_list
12+
RedactorRails.document_file_types
13+
end
14+
end

lib/generators/redactor/templates/config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ $(document).ready(
99
$('.redactor').redactor(
1010
{ "imageUpload":"/redactor_rails/pictures?" + params,
1111
"imageGetJson":"/redactor_rails/pictures",
12+
"fileUpload":"/redactor_rails/documents?" + params,
13+
"fileGetJson":"/redactor_rails/documents",
1214
"path":"/assets/redactor-rails",
1315
"css":"style.css"}
1416
);

lib/redactor-rails.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
module RedactorRails
55
IMAGE_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/jpg', 'image/pjpeg', 'image/tiff', 'image/x-png']
66

7+
FILE_TYPES = ['application/msword', 'application/pdf', 'text/plain', 'text/rtf', 'application/vnd.ms-excel']
8+
79
autoload :Http, 'redactor-rails/http'
810

911
module Backend
@@ -14,12 +16,16 @@ module Backend
1416
require 'redactor-rails/engine'
1517
require 'redactor-rails/helper'
1618

17-
mattr_accessor :image_file_types
19+
mattr_accessor :image_file_types, :document_file_types
1820
@@image_file_types = ["jpg", "jpeg", "png", "gif", "tiff"]
21+
@@document_file_types = ["pdf", "doc", "docx", "xls", "xlsx", "rtf", "txt"]
1922

2023

2124
def self.picture_model
2225
RedactorRails::Picture.to_adapter
2326
end
2427

28+
def self.document_model
29+
RedactorRails::Document.to_adapter
30+
end
2531
end

0 commit comments

Comments
 (0)