Sha256: 7bfb582f59ed139451bffc18e7ed2e25e0a01d6b71a22631078b0ee74138de3b

Contents?: true

Size: 1.61 KB

Versions: 21

Compression:

Stored size: 1.61 KB

Contents

require 'mime/types'

module Ckeditor
  module Backend
    module Paperclip
      def self.included(base)
        base.send(:include, InstanceMethods)
        base.send(:extend, ClassMethods)
      end

      module ClassMethods
        def self.extended(base)
          base.class_eval do
            before_validation :extract_content_type
            before_create :read_dimensions, :parameterize_filename

            delegate :url, :path, :styles, :size, :content_type, :to => :data
          end
        end
      end

      module InstanceMethods
        def geometry
          @geometry ||= begin
            file = data.respond_to?(:queued_for_write) ? data.queued_for_write[:original] : data.to_file
            ::Paperclip::Geometry.from_file(file)
          end
        end

        protected

          def parameterize_filename
            unless data_file_name.blank?
              filename = Ckeditor::Utils.parameterize_filename(data_file_name)
              self.data.instance_write(:file_name, filename)
            end
          end

          def read_dimensions
            if image? && has_dimensions?
              self.width = geometry.width
              self.height = geometry.height
            end
          end

          # Extract content_type from filename using mime/types gem
          def extract_content_type
            if data_content_type == "application/octet-stream" && !data_file_name.blank?
              content_types = MIME::Types.type_for(data_file_name)
              self.data_content_type = content_types.first.to_s unless content_types.empty?
            end
          end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
glebtv-ckeditor-4.4.7.4 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.7.3 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.7.2 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.7.1 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.7 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.6 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.3.4 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.3.3 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.3.2 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.3.1 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.4.3.0 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.3.2.6 lib/ckeditor/backend/paperclip.rb
ckeditor-4.1.0 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.3.2.5 lib/ckeditor/backend/paperclip.rb
ckeditor-4.0.11 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.3.2.4 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.3.2.3 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.3.2.2 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.3.2.1 lib/ckeditor/backend/paperclip.rb
glebtv-ckeditor-4.3.2.0 lib/ckeditor/backend/paperclip.rb