th_simple_content_management 0.2.1 → 0.2.2

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.
Files changed (92) hide show
  1. data/app/assets/images/simple_content_management/resize-handle.png +0 -0
  2. data/app/assets/javascripts/simple_content_management/simple_pages.js +1 -21
  3. data/app/assets/javascripts/simple_content_management/simple_pages/form.js +32 -0
  4. data/app/assets/javascripts/th-page-editor/column.js +136 -0
  5. data/app/assets/javascripts/th-page-editor/index.js +104 -0
  6. data/app/assets/javascripts/th-page-editor/row.js +90 -0
  7. data/app/assets/stylesheets/simple_content_management/simple_pages.css.scss +80 -8
  8. data/app/controllers/redactor_rails/documents_controller.rb +28 -0
  9. data/app/controllers/redactor_rails/pictures_controller.rb +28 -0
  10. data/app/helpers/simple_content_management/simple_pages_helper.rb +4 -0
  11. data/app/models/redactor/asset.rb +5 -0
  12. data/app/models/redactor/document.rb +11 -0
  13. data/app/models/redactor/picture.rb +7 -0
  14. data/app/models/simple_content_management/simple_menu.rb +1 -1
  15. data/app/models/simple_content_management/simple_page.rb +6 -0
  16. data/app/views/simple_content_management/simple_pages/_form.html.erb +48 -3
  17. data/config/routes.rb +4 -0
  18. data/lib/generators/redactor/config_generator.rb +18 -0
  19. data/lib/generators/redactor/install_generator.rb +75 -0
  20. data/lib/generators/redactor/templates/active_record/carrierwave/devise_migration.rb +30 -0
  21. data/lib/generators/redactor/templates/active_record/carrierwave/migration.rb +30 -0
  22. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/asset.rb +5 -0
  23. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/document.rb +11 -0
  24. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/picture.rb +7 -0
  25. data/lib/generators/redactor/templates/base/carrierwave/uploaders/redactor_rails_document_uploader.rb +15 -0
  26. data/lib/generators/redactor/templates/base/carrierwave/uploaders/redactor_rails_picture_uploader.rb +53 -0
  27. data/lib/generators/redactor/templates/config.js +17 -0
  28. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/asset.rb +9 -0
  29. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/document.rb +14 -0
  30. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/picture.rb +7 -0
  31. data/lib/redactor-rails.rb +41 -0
  32. data/lib/redactor-rails/backend/carrierwave.rb +64 -0
  33. data/lib/redactor-rails/devise.rb +11 -0
  34. data/lib/redactor-rails/engine.rb +14 -0
  35. data/lib/redactor-rails/helper.rb +8 -0
  36. data/lib/redactor-rails/http.rb +89 -0
  37. data/lib/redactor-rails/orm/active_record.rb +27 -0
  38. data/lib/redactor-rails/orm/base.rb +38 -0
  39. data/lib/redactor-rails/orm/mongoid.rb +37 -0
  40. data/lib/redactor-rails/version.rb +3 -0
  41. data/lib/redactor_rails_document_uploader.rb +15 -0
  42. data/lib/redactor_rails_picture_uploader.rb +53 -0
  43. data/lib/simple_content_management.rb +5 -0
  44. data/lib/simple_content_management/content_text.rb +25 -0
  45. data/lib/simple_content_management/version.rb +1 -1
  46. data/vendor/assets/javascripts/redactor-rails/config.js +17 -0
  47. data/vendor/assets/javascripts/redactor-rails/css/docstyle.css +139 -0
  48. data/vendor/assets/javascripts/redactor-rails/css/style.css +26 -0
  49. data/vendor/assets/javascripts/redactor-rails/css/wym.css +151 -0
  50. data/vendor/assets/javascripts/redactor-rails/index.js +2 -0
  51. data/vendor/assets/javascripts/redactor-rails/langs/ar.js +66 -0
  52. data/vendor/assets/javascripts/redactor-rails/langs/ba.js +69 -0
  53. data/vendor/assets/javascripts/redactor-rails/langs/bg.js +67 -0
  54. data/vendor/assets/javascripts/redactor-rails/langs/by.js +65 -0
  55. data/vendor/assets/javascripts/redactor-rails/langs/cs.js +77 -0
  56. data/vendor/assets/javascripts/redactor-rails/langs/da.js +66 -0
  57. data/vendor/assets/javascripts/redactor-rails/langs/de.js +70 -0
  58. data/vendor/assets/javascripts/redactor-rails/langs/en.js +66 -0
  59. data/vendor/assets/javascripts/redactor-rails/langs/eo.js +66 -0
  60. data/vendor/assets/javascripts/redactor-rails/langs/es.js +66 -0
  61. data/vendor/assets/javascripts/redactor-rails/langs/fa.js +66 -0
  62. data/vendor/assets/javascripts/redactor-rails/langs/fi.js +69 -0
  63. data/vendor/assets/javascripts/redactor-rails/langs/fr.js +76 -0
  64. data/vendor/assets/javascripts/redactor-rails/langs/hr.js +69 -0
  65. data/vendor/assets/javascripts/redactor-rails/langs/hu.js +67 -0
  66. data/vendor/assets/javascripts/redactor-rails/langs/id.js +66 -0
  67. data/vendor/assets/javascripts/redactor-rails/langs/it.js +68 -0
  68. data/vendor/assets/javascripts/redactor-rails/langs/ja.js +66 -0
  69. data/vendor/assets/javascripts/redactor-rails/langs/ko.js +66 -0
  70. data/vendor/assets/javascripts/redactor-rails/langs/lv.js +65 -0
  71. data/vendor/assets/javascripts/redactor-rails/langs/nl.js +69 -0
  72. data/vendor/assets/javascripts/redactor-rails/langs/pl.js +66 -0
  73. data/vendor/assets/javascripts/redactor-rails/langs/pt_br.js +72 -0
  74. data/vendor/assets/javascripts/redactor-rails/langs/ro.js +66 -0
  75. data/vendor/assets/javascripts/redactor-rails/langs/ru.js +66 -0
  76. data/vendor/assets/javascripts/redactor-rails/langs/sk.js +66 -0
  77. data/vendor/assets/javascripts/redactor-rails/langs/sq.js +69 -0
  78. data/vendor/assets/javascripts/redactor-rails/langs/sr-cir.js +69 -0
  79. data/vendor/assets/javascripts/redactor-rails/langs/sr-lat.js +69 -0
  80. data/vendor/assets/javascripts/redactor-rails/langs/sv.js +66 -0
  81. data/vendor/assets/javascripts/redactor-rails/langs/tr.js +66 -0
  82. data/vendor/assets/javascripts/redactor-rails/langs/ua.js +67 -0
  83. data/vendor/assets/javascripts/redactor-rails/langs/vi.js +65 -0
  84. data/vendor/assets/javascripts/redactor-rails/langs/zh_cn.js +70 -0
  85. data/vendor/assets/javascripts/redactor-rails/langs/zh_tw.js +66 -0
  86. data/vendor/assets/javascripts/redactor-rails/redactor.js +6074 -0
  87. data/vendor/assets/stylesheets/redactor-rails/css/redactor-iframe.css +201 -0
  88. data/vendor/assets/stylesheets/redactor-rails/css/redactor.css +780 -0
  89. data/vendor/assets/stylesheets/redactor-rails/css/style.css +26 -0
  90. data/vendor/assets/stylesheets/redactor-rails/index.css +1 -0
  91. metadata +151 -70
  92. checksums.yaml +0 -15
@@ -0,0 +1,17 @@
1
+ $(document).ready(
2
+ function(){
3
+ var csrf_token = $('meta[name=csrf-token]').attr('content');
4
+ var csrf_param = $('meta[name=csrf-param]').attr('content');
5
+ var params;
6
+ if (csrf_param !== undefined && csrf_token !== undefined) {
7
+ params = csrf_param + "=" + encodeURIComponent(csrf_token);
8
+ }
9
+ $('.redactor').redactor(
10
+ { "imageUpload":"/redactor_rails/pictures?" + params,
11
+ "imageGetJson":"/redactor_rails/pictures",
12
+ "fileUpload":"/redactor_rails/documents?" + params,
13
+ "fileGetJson":"/redactor_rails/documents",
14
+ "path":"/assets/redactor-rails",
15
+ "css":"style.css"}
16
+ );
17
+ });
@@ -0,0 +1,9 @@
1
+ class RedactorRails::Asset
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ include RedactorRails::Orm::Mongoid::AssetBase
6
+
7
+ delegate :url, :current_path, :size, :content_type, :filename, :to => :data
8
+ validates_presence_of :data
9
+ end
@@ -0,0 +1,14 @@
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
+
8
+ def thumb
9
+ # Could theoretically provide an icon set here
10
+ # to match against the extensions
11
+ # but for now it's nil to address the bug
12
+ nil
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ class RedactorRails::Picture < RedactorRails::Asset
2
+ mount_uploader :data, RedactorRailsPictureUploader, :mount_on => :data_file_name
3
+
4
+ def url_content
5
+ url(:content)
6
+ end
7
+ end
@@ -0,0 +1,41 @@
1
+ require "orm_adapter"
2
+ require "redactor-rails/version"
3
+
4
+ module RedactorRails
5
+ IMAGE_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/jpg', 'image/pjpeg', 'image/tiff', 'image/x-png']
6
+
7
+ FILE_TYPES = ['application/msword', 'application/pdf', 'text/plain', 'text/rtf', 'application/vnd.ms-excel']
8
+
9
+ autoload :Http, 'redactor-rails/http'
10
+ autoload :Devise, 'redactor-rails/devise'
11
+
12
+ module Backend
13
+ autoload :CarrierWave, 'redactor-rails/backend/carrierwave'
14
+ end
15
+ require 'redactor-rails/orm/base'
16
+ require 'redactor-rails/orm/active_record'
17
+ require 'redactor-rails/orm/mongoid'
18
+ require 'redactor-rails/engine'
19
+ require 'redactor-rails/helper'
20
+
21
+ mattr_accessor :image_file_types, :document_file_types
22
+ @@image_file_types = ["jpg", "jpeg", "png", "gif", "tiff"]
23
+ @@document_file_types = ["pdf", "doc", "docx", "xls", "xlsx", "rtf", "txt"]
24
+
25
+
26
+ def self.picture_model
27
+ RedactorRails::Picture
28
+ end
29
+
30
+ def self.document_model
31
+ RedactorRails::Document
32
+ end
33
+
34
+ def self.devise_user
35
+ %s(user)
36
+ end
37
+
38
+ def self.devise_user_key
39
+ "#{self.devise_user.to_s}_id".to_sym
40
+ end
41
+ end
@@ -0,0 +1,64 @@
1
+ require 'mime/types'
2
+ require 'mini_magick'
3
+
4
+ module RedactorRails
5
+ module Backend
6
+ module CarrierWave
7
+ def self.included(base)
8
+ base.send(:include, InstanceMethods)
9
+ base.send(:extend, ClassMethods)
10
+ end
11
+
12
+ module ClassMethods
13
+ def self.extended(base)
14
+ base.class_eval do
15
+ process :extract_content_type
16
+ process :set_size
17
+ end
18
+ end
19
+ end
20
+
21
+ module InstanceMethods
22
+ # process :strip
23
+ def strip
24
+ manipulate! do |img|
25
+ img.strip
26
+ img = yield(img) if block_given?
27
+ img
28
+ end
29
+ end
30
+
31
+ # process :quality => 85
32
+ def quality(percentage)
33
+ manipulate! do |img|
34
+ img.quality(percentage)
35
+ img = yield(img) if block_given?
36
+ img
37
+ end
38
+ end
39
+
40
+ def extract_content_type
41
+ if file.content_type == 'application/octet-stream' || file.content_type.blank?
42
+ content_type = MIME::Types.type_for(original_filename).first
43
+ else
44
+ content_type = file.content_type
45
+ end
46
+
47
+ model.data_content_type = content_type.to_s
48
+ end
49
+
50
+ def set_size
51
+ model.data_file_size = file.size
52
+ end
53
+
54
+ def read_dimensions
55
+ if model.image? && model.has_dimensions?
56
+ magick = ::MiniMagick::Image.new(current_path)
57
+ model.width, model.height = magick[:width], magick[:height]
58
+ end
59
+ end
60
+
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,11 @@
1
+ module RedactorRails
2
+ module Devise
3
+ def redactor_authenticate_user!
4
+ authenticate_user!
5
+ end
6
+
7
+ def redactor_current_user
8
+ current_user
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module RedactorRails
2
+ class Engine < Rails::Engine
3
+ isolate_namespace RedactorRails
4
+ initializer "helper" do |app|
5
+ ActiveSupport.on_load(:action_view) do
6
+ include RedactorRails::Helpers
7
+ end
8
+ end
9
+
10
+ initializer "redactor_devise" do |app|
11
+ ActionController::Base.send :include, RedactorRails::Devise
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,8 @@
1
+ module RedactorRails
2
+ module Helpers
3
+ # Setting Redactor Language
4
+ def redactor_lang(lang = 'en')
5
+ javascript_include_tag "redactor-rails/langs/#{lang}.js"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,89 @@
1
+ # encoding: utf-8
2
+ require 'digest/sha1'
3
+ require 'mime/types'
4
+
5
+ module RedactorRails
6
+ module Http
7
+ # Create tempfile from hash
8
+ class UploadedFile
9
+ attr_accessor :original_filename, :content_type, :tempfile, :headers
10
+
11
+ def initialize(hash)
12
+ @original_filename = hash[:filename]
13
+ @content_type = hash[:type]
14
+ @headers = hash[:head]
15
+ @tempfile = hash[:tempfile]
16
+ raise(ArgumentError, ':tempfile is required') unless @tempfile
17
+ end
18
+
19
+ def open
20
+ @tempfile.open
21
+ end
22
+
23
+ def path
24
+ @tempfile.path
25
+ end
26
+
27
+ def read(*args)
28
+ @tempfile.read(*args)
29
+ end
30
+
31
+ def rewind
32
+ @tempfile.rewind
33
+ end
34
+
35
+ def size
36
+ @tempfile.size
37
+ end
38
+ end
39
+
40
+ # Usage (paperclip example)
41
+ # @asset.data = QqFile.new(params[:qqfile], request)
42
+ class QqFile < ::Tempfile
43
+
44
+ def initialize(filename, request, tmpdir = Dir::tmpdir)
45
+ @original_filename = filename
46
+ @request = request
47
+
48
+ super Digest::SHA1.hexdigest(filename), tmpdir
49
+ fetch
50
+ end
51
+
52
+ def fetch
53
+ self.write(body)
54
+ self.rewind
55
+ self
56
+ end
57
+
58
+ def original_filename
59
+ @original_filename
60
+ end
61
+
62
+ def content_type
63
+ types = MIME::Types.type_for(original_filename)
64
+ types.empty? ? @request.content_type : types.first.to_s
65
+ end
66
+
67
+ def body
68
+ if @request.raw_post.respond_to?(:force_encoding)
69
+ @request.raw_post.force_encoding("UTF-8")
70
+ else
71
+ @request.raw_post
72
+ end
73
+ end
74
+ end
75
+
76
+ # Convert nested Hash to HashWithIndifferentAccess and replace
77
+ # file upload hash with UploadedFile objects
78
+ def self.normalize_param(*args)
79
+ value = args.first
80
+ if Hash === value && value.has_key?(:tempfile)
81
+ UploadedFile.new(value)
82
+ elsif value.is_a?(String)
83
+ QqFile.new(*args)
84
+ else
85
+ value
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,27 @@
1
+ require 'redactor-rails/orm/base'
2
+
3
+ module RedactorRails
4
+ module Orm
5
+ module ActiveRecord
6
+ module AssetBase
7
+ def self.included(base)
8
+ base.send(:include, Base::AssetBase::InstanceMethods)
9
+ base.send(:extend, ClassMethods)
10
+ end
11
+
12
+ module ClassMethods
13
+ def self.extended(base)
14
+ base.class_eval do
15
+ self.table_name = "redactor_assets"
16
+
17
+ belongs_to :assetable, :polymorphic => true
18
+ belongs_to RedactorRails.devise_user, :dependent => :destroy, :foreign_key => RedactorRails.devise_user_key
19
+
20
+ attr_accessible :data, :assetable_type, :assetable_id, :assetable
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,38 @@
1
+ module RedactorRails
2
+ module Orm
3
+ module Base
4
+ module AssetBase
5
+ module InstanceMethods
6
+ def has_dimensions?
7
+ respond_to?(:width) && respond_to?(:height)
8
+ end
9
+
10
+ def image?
11
+ RedactorRails::IMAGE_TYPES.include?(data_content_type)
12
+ end
13
+
14
+ def image
15
+ url
16
+ end
17
+
18
+ def thumb
19
+ url(:thumb)
20
+ end
21
+
22
+ def as_json_methods
23
+ [:image, :thumb]
24
+ end
25
+
26
+ def as_json(options = nil)
27
+ options = {
28
+ :methods => as_json_methods,
29
+ :root => false
30
+ }
31
+
32
+ super options
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,37 @@
1
+ require 'redactor-rails/orm/base'
2
+
3
+ module RedactorRails
4
+ module Orm
5
+ module Mongoid
6
+ module AssetBase
7
+ def self.included(base)
8
+ base.send(:include, Base::AssetBase::InstanceMethods)
9
+ base.send(:extend, ClassMethods)
10
+ end
11
+
12
+ module ClassMethods
13
+ def self.extended(base)
14
+ base.class_eval do
15
+ store_in :collection => 'redactor_assets'
16
+
17
+ belongs_to :assetable, :polymorphic => true
18
+
19
+ field :data_file_name, :type => String
20
+ field :data_content_type, :type => String
21
+ field :data_file_size, :type => Integer
22
+
23
+ field :type, :type => String
24
+
25
+ field :width, :type => Integer
26
+ field :height, :type => Integer
27
+
28
+ index( :assetable => 1, :type => 1 )
29
+ index( :assetable => 1 )
30
+
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ module RedactorRails
2
+ VERSION = "0.3.5"
3
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ class RedactorRailsDocumentUploader < CarrierWave::Uploader::Base
3
+ include RedactorRails::Backend::CarrierWave
4
+
5
+ # storage :fog
6
+ storage :file
7
+
8
+ def store_dir
9
+ "system/redactor_assets/documents/#{model.id}"
10
+ end
11
+
12
+ def extension_white_list
13
+ RedactorRails.document_file_types
14
+ end
15
+ end
@@ -0,0 +1,53 @@
1
+ # encoding: utf-8
2
+ class RedactorRailsPictureUploader < CarrierWave::Uploader::Base
3
+ include RedactorRails::Backend::CarrierWave
4
+
5
+ # Include RMagick or ImageScience support:
6
+ # include CarrierWave::RMagick
7
+ include CarrierWave::MiniMagick
8
+ # include CarrierWave::ImageScience
9
+
10
+ # Choose what kind of storage to use for this uploader:
11
+ storage :file
12
+
13
+ # Override the directory where uploaded files will be stored.
14
+ # This is a sensible default for uploaders that are meant to be mounted:
15
+ def store_dir
16
+ "system/redactor_assets/pictures/#{model.id}"
17
+ end
18
+
19
+ # Provide a default URL as a default if there hasn't been a file uploaded:
20
+ # def default_url
21
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
22
+ # end
23
+
24
+ # Process files as they are uploaded:
25
+ # process :scale => [200, 300]
26
+ #
27
+ # def scale(width, height)
28
+ # # do something
29
+ # end
30
+
31
+ process :read_dimensions
32
+
33
+ # Create different versions of your uploaded files:
34
+ version :thumb do
35
+ process :resize_to_fill => [118, 100]
36
+ end
37
+
38
+ version :content do
39
+ process :resize_to_limit => [800, 800]
40
+ end
41
+
42
+ # Add a white list of extensions which are allowed to be uploaded.
43
+ # For images you might use something like this:
44
+ def extension_white_list
45
+ RedactorRails.image_file_types
46
+ end
47
+
48
+ # Override the filename of the uploaded files:
49
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
50
+ # def filename
51
+ # "something.jpg" if original_filename
52
+ # end
53
+ end