has_media 0.2.4 → 0.2.5
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.
- data/README.rdoc +21 -0
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/app/controllers/media_controller.rb +7 -0
- data/app/helpers/has_media_helper.rb +41 -0
- data/app/views/has_media/_media.html.erb +18 -0
- data/app/views/has_media/_media_fields.html.erb +22 -0
- data/app/views/has_media/_medium.html.erb +0 -0
- data/app/views/has_media/_medium_field.html.erb +12 -0
- data/app/views/has_media/destroy.js.erb +1 -0
- data/examples/uploaders/image_uploader.rb +5 -0
- data/has_media.gemspec +14 -5
- data/lib/carrierwave/uploader/url.rb +20 -0
- data/lib/generators/has_media/views_generator.rb +60 -0
- data/lib/has_media.rb +8 -0
- data/spec/has_media_spec.rb +19 -0
- data/spec/spec_helper.rb +1 -0
- metadata +16 -8
data/README.rdoc
CHANGED
@@ -90,6 +90,27 @@ Configuration take place in config/initializers/has_media.rb
|
|
90
90
|
require uploader
|
91
91
|
end
|
92
92
|
|
93
|
+
== Routes
|
94
|
+
|
95
|
+
Add routes for media in your config/routes.rb
|
96
|
+
|
97
|
+
resources :media, :only => [:destroy]
|
98
|
+
|
99
|
+
== Helpers
|
100
|
+
|
101
|
+
Now you can use the has_media_field helper.
|
102
|
+
|
103
|
+
<%= form_for(@model, :html => {:multipart => true}) do |f| %>
|
104
|
+
<%= has_media_field @model, :context %>
|
105
|
+
<%= f.submit %>
|
106
|
+
<%- end %>
|
107
|
+
|
108
|
+
== Generating views
|
109
|
+
|
110
|
+
If you need to overload has_media views, just run : rails generate has_media:views
|
111
|
+
|
112
|
+
This will copy has_media views in your application
|
113
|
+
|
93
114
|
== Encode with resque
|
94
115
|
|
95
116
|
Just add a callback on media class you want to encode via resque.
|
data/Rakefile
CHANGED
@@ -16,7 +16,7 @@ begin
|
|
16
16
|
gem.homepage = "http://github.com/klacointe/has_media"
|
17
17
|
gem.authors = ["klacointe", "spk"]
|
18
18
|
gem.add_development_dependency "rspec", "~>2.0.0"
|
19
|
-
gem.add_dependency('carrierwave
|
19
|
+
gem.add_dependency('carrierwave', '~>0.5')
|
20
20
|
gem.add_dependency('activerecord', '~>3.0.0')
|
21
21
|
gem.add_dependency('activesupport', '~>3.0.0')
|
22
22
|
gem.add_dependency('mime-types', '~>1.16')
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module HasMediaHelper
|
2
|
+
|
3
|
+
def generate_uid(*opts)
|
4
|
+
opts = opts.first
|
5
|
+
object = opts[:object]||nil
|
6
|
+
context = opts[:context]||nil
|
7
|
+
medium = opts[:medium]||nil
|
8
|
+
if medium.nil?
|
9
|
+
if object.nil? or object.new_record?
|
10
|
+
"#{object.class.to_s.underscore}-#{context.to_s.underscore}"
|
11
|
+
else
|
12
|
+
"#{object.class.to_s.underscore}-#{context.to_s.underscore}-#{object.id}"
|
13
|
+
end
|
14
|
+
else
|
15
|
+
"#{medium.class.to_s.underscore}-#{medium.id}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_medium_link(opts)
|
20
|
+
link_to_function opts[:text] do |page|
|
21
|
+
page.insert_html :bottom, generate_uid(:object => opts[:object], :context => opts[:context]),
|
22
|
+
:partial => 'has_media/medium_field',
|
23
|
+
:locals => {
|
24
|
+
:object => opts[:object],
|
25
|
+
:context => opts[:context]
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def remove_medium_link(opts)
|
31
|
+
link_to opts[:text], medium_url(opts[:medium]), :remote => true, :method => :delete
|
32
|
+
end
|
33
|
+
|
34
|
+
def has_media_field(model, context)
|
35
|
+
render :partial => "has_media/media_fields", :locals => {
|
36
|
+
:object => model,
|
37
|
+
:context => context
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%- media = object.send(context) %>
|
2
|
+
<%- media = [media] unless media.is_a?(Array) %>
|
3
|
+
<%- if defined?(readonly); readonly = readonly else readonly = true end %>
|
4
|
+
|
5
|
+
<%- media.each do |medium| %>
|
6
|
+
<%- unless medium.nil? %>
|
7
|
+
<div class="<%= medium.class.to_s.underscore %>" id="<%= generate_uid(:medium => medium) %>">
|
8
|
+
<%= link_to medium.original_file_uri, medium.original_file_uri %>
|
9
|
+
|
10
|
+
<%- if object.send(context).is_a?(Array) and !readonly %>
|
11
|
+
<%= remove_medium_link :text => "Remove",
|
12
|
+
:object => object,
|
13
|
+
:context => context,
|
14
|
+
:medium => medium %>
|
15
|
+
<%- end %>
|
16
|
+
</div>
|
17
|
+
<%- end %>
|
18
|
+
<%- end %>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div id="<%= generate_uid(:object => object, :context => context) %>">
|
2
|
+
<%= render :partial => 'has_media/media', :locals => {
|
3
|
+
:object => object,
|
4
|
+
:context => context,
|
5
|
+
:readonly => false
|
6
|
+
} %>
|
7
|
+
|
8
|
+
<%= render :partial => 'has_media/medium_field',
|
9
|
+
:locals => {
|
10
|
+
:object => object,
|
11
|
+
:context => context
|
12
|
+
} %>
|
13
|
+
|
14
|
+
</div>
|
15
|
+
<%- if object.send(context).is_a?(Array) %>
|
16
|
+
<p>
|
17
|
+
<%= add_medium_link :text => "Add #{context}",
|
18
|
+
:object => object,
|
19
|
+
:context => context %>
|
20
|
+
</p>
|
21
|
+
<%- end %>
|
22
|
+
|
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%- klass = object.class.to_s.underscore %>
|
2
|
+
<%- if object.send(context).is_a?(Array) %>
|
3
|
+
<p>
|
4
|
+
<%= label_tag "#{klass}[#{context}][]" %>
|
5
|
+
<%= file_field_tag "#{klass}[#{context}][]" %>
|
6
|
+
</p>
|
7
|
+
<%- else %>
|
8
|
+
<p>
|
9
|
+
<%= label_tag "#{klass}[#{context}]" %>
|
10
|
+
<%= file_field_tag "#{klass}[#{context}]" %>
|
11
|
+
</p>
|
12
|
+
<%- end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
$("#<%= generate_uid(:medium => @medium ) %>").remove();
|
data/has_media.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{has_media}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["klacointe", "spk"]
|
12
|
-
s.date = %q{2010-11-
|
12
|
+
s.date = %q{2010-11-23}
|
13
13
|
s.description = %q{Media Managment Library for ActiveRecord and Carrierwave}
|
14
14
|
s.email = %q{kevinlacointe@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,6 +24,13 @@ Gem::Specification.new do |s|
|
|
24
24
|
"README.rdoc",
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
|
+
"app/controllers/media_controller.rb",
|
28
|
+
"app/helpers/has_media_helper.rb",
|
29
|
+
"app/views/has_media/_media.html.erb",
|
30
|
+
"app/views/has_media/_media_fields.html.erb",
|
31
|
+
"app/views/has_media/_medium.html.erb",
|
32
|
+
"app/views/has_media/_medium_field.html.erb",
|
33
|
+
"app/views/has_media/destroy.js.erb",
|
27
34
|
"config/locales/en.yml",
|
28
35
|
"examples/models/audio.rb",
|
29
36
|
"examples/models/document.rb",
|
@@ -36,9 +43,11 @@ Gem::Specification.new do |s|
|
|
36
43
|
"examples/uploaders/pdf_uploader.rb",
|
37
44
|
"examples/uploaders/video_uploader.rb",
|
38
45
|
"has_media.gemspec",
|
46
|
+
"lib/carrierwave/uploader/url.rb",
|
39
47
|
"lib/generators/active_record/has_media_generator.rb",
|
40
48
|
"lib/generators/active_record/templates/migration.rb",
|
41
49
|
"lib/generators/has_media/install_generator.rb",
|
50
|
+
"lib/generators/has_media/views_generator.rb",
|
42
51
|
"lib/generators/templates/README",
|
43
52
|
"lib/generators/templates/has_media.rb",
|
44
53
|
"lib/has_media.rb",
|
@@ -84,20 +93,20 @@ Gem::Specification.new do |s|
|
|
84
93
|
|
85
94
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
86
95
|
s.add_development_dependency(%q<rspec>, ["~> 2.0.0"])
|
87
|
-
s.add_runtime_dependency(%q<carrierwave
|
96
|
+
s.add_runtime_dependency(%q<carrierwave>, ["~> 0.5"])
|
88
97
|
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0.0"])
|
89
98
|
s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0"])
|
90
99
|
s.add_runtime_dependency(%q<mime-types>, ["~> 1.16"])
|
91
100
|
else
|
92
101
|
s.add_dependency(%q<rspec>, ["~> 2.0.0"])
|
93
|
-
s.add_dependency(%q<carrierwave
|
102
|
+
s.add_dependency(%q<carrierwave>, ["~> 0.5"])
|
94
103
|
s.add_dependency(%q<activerecord>, ["~> 3.0.0"])
|
95
104
|
s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
|
96
105
|
s.add_dependency(%q<mime-types>, ["~> 1.16"])
|
97
106
|
end
|
98
107
|
else
|
99
108
|
s.add_dependency(%q<rspec>, ["~> 2.0.0"])
|
100
|
-
s.add_dependency(%q<carrierwave
|
109
|
+
s.add_dependency(%q<carrierwave>, ["~> 0.5"])
|
101
110
|
s.add_dependency(%q<activerecord>, ["~> 3.0.0"])
|
102
111
|
s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
|
103
112
|
s.add_dependency(%q<mime-types>, ["~> 1.16"])
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module CarrierWave
|
4
|
+
module Uploader
|
5
|
+
module Url
|
6
|
+
##
|
7
|
+
# === Returns
|
8
|
+
#
|
9
|
+
# [String] the location where this file is accessible via a url
|
10
|
+
#
|
11
|
+
def url
|
12
|
+
if file.respond_to?(:url) and not file.url.blank?
|
13
|
+
file.url
|
14
|
+
elsif current_path
|
15
|
+
File.expand_path(current_path).gsub(File.expand_path(root), HasMedia.directory_uri)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end # Url
|
19
|
+
end # Uploader
|
20
|
+
end # CarrierWave
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module HasMedia
|
2
|
+
module Generators
|
3
|
+
class ViewsGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("../../../../app/views", __FILE__)
|
5
|
+
desc "Copies all HasMedia views to your application."
|
6
|
+
|
7
|
+
class_option :template_engine, :type => :string, :aliases => "-t",
|
8
|
+
:desc => "Template engine for the views. Available options are 'erb' and 'haml'."
|
9
|
+
|
10
|
+
def copy_views
|
11
|
+
case options[:template_engine].to_s
|
12
|
+
when "haml"
|
13
|
+
verify_haml_existence
|
14
|
+
verify_haml_version
|
15
|
+
create_and_copy_haml_views
|
16
|
+
else
|
17
|
+
directory "has_media", "app/views/has_media"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def verify_haml_existence
|
24
|
+
begin
|
25
|
+
require 'haml'
|
26
|
+
rescue LoadError
|
27
|
+
say "HAML is not installed, or it is not specified in your Gemfile."
|
28
|
+
exit
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def verify_haml_version
|
33
|
+
unless Haml.version[:major] == 2 and Haml.version[:minor] >= 3 or Haml.version[:major] >= 3
|
34
|
+
say "To generate HAML templates, you need to install HAML 2.3 or above."
|
35
|
+
exit
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_and_copy_haml_views
|
40
|
+
require 'tmpdir'
|
41
|
+
html_root = "#{self.class.source_root}/has_media"
|
42
|
+
|
43
|
+
Dir.mktmpdir("has_media-haml.") do |haml_root|
|
44
|
+
Dir["#{html_root}/**/*"].each do |path|
|
45
|
+
relative_path = path.sub(html_root, "")
|
46
|
+
source_path = (haml_root + relative_path).sub(/erb$/, "haml")
|
47
|
+
|
48
|
+
if File.directory?(path)
|
49
|
+
FileUtils.mkdir_p(source_path)
|
50
|
+
else
|
51
|
+
`html2haml -r #{path} #{source_path}`
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
directory haml_root, "app/views/has_media"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/has_media.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'rails'
|
2
3
|
require 'active_record'
|
3
4
|
require 'active_support'
|
4
5
|
require 'carrierwave'
|
5
6
|
require 'mime/types'
|
7
|
+
require File.expand_path(File.dirname(__FILE__)) + '/../app/helpers/has_media_helper'
|
6
8
|
|
7
9
|
module HasMedia
|
8
10
|
|
11
|
+
class Engine < Rails::Engine
|
12
|
+
end
|
13
|
+
|
9
14
|
VERSION = "0.0.1"
|
10
15
|
|
11
16
|
@@medium_types = {}
|
@@ -168,6 +173,9 @@ end
|
|
168
173
|
class ActiveRecord::Base
|
169
174
|
include HasMedia
|
170
175
|
end
|
176
|
+
class ActionController::Base
|
177
|
+
helper HasMediaHelper
|
178
|
+
end
|
171
179
|
|
172
180
|
require File.dirname(__FILE__) + '/has_media/uploaders/medium_uploader'
|
173
181
|
Dir.glob(File.dirname(__FILE__) + '/has_media/uploaders/*.rb').each do |uploader|
|
data/spec/has_media_spec.rb
CHANGED
@@ -168,6 +168,25 @@ describe "HasMedia" do
|
|
168
168
|
@medium.image.filename)
|
169
169
|
end
|
170
170
|
|
171
|
+
it "should define file_uri for custom versions" do
|
172
|
+
@medium.image = @image
|
173
|
+
@medium.save!
|
174
|
+
@medium.image.file_uri(:thumb).should == "/media/image/#{@medium.image.id}/image_thumb.png"
|
175
|
+
@medium.image.file_path(:thumb).should == "/tmp/image/#{@medium.image.id}/image_thumb.png"
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should define file url for carrierwave versions" do
|
179
|
+
@medium.image = @image
|
180
|
+
@medium.save!
|
181
|
+
@medium.image.file.thumb.url.should == "/media/image/#{@medium.image.id}/thumb_image.jpg"
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should define file path for carrierwave versions" do
|
185
|
+
@medium.image = @image
|
186
|
+
@medium.save!
|
187
|
+
@medium.image.file.thumb.path.should == "/tmp/image/#{@medium.image.id}/thumb_image.jpg"
|
188
|
+
end
|
189
|
+
|
171
190
|
it "pdf should exist" do
|
172
191
|
@medium.pdf = @pdf
|
173
192
|
@medium.save!
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_media
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 5
|
10
|
+
version: 0.2.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- klacointe
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-11-
|
19
|
+
date: 2010-11-23 00:00:00 +01:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -36,19 +36,18 @@ dependencies:
|
|
36
36
|
type: :development
|
37
37
|
version_requirements: *id001
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
|
-
name: carrierwave
|
39
|
+
name: carrierwave
|
40
40
|
prerelease: false
|
41
41
|
requirement: &id002 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
hash:
|
46
|
+
hash: 1
|
47
47
|
segments:
|
48
48
|
- 0
|
49
|
-
- 4
|
50
49
|
- 5
|
51
|
-
version: 0.
|
50
|
+
version: "0.5"
|
52
51
|
type: :runtime
|
53
52
|
version_requirements: *id002
|
54
53
|
- !ruby/object:Gem::Dependency
|
@@ -115,6 +114,13 @@ files:
|
|
115
114
|
- README.rdoc
|
116
115
|
- Rakefile
|
117
116
|
- VERSION
|
117
|
+
- app/controllers/media_controller.rb
|
118
|
+
- app/helpers/has_media_helper.rb
|
119
|
+
- app/views/has_media/_media.html.erb
|
120
|
+
- app/views/has_media/_media_fields.html.erb
|
121
|
+
- app/views/has_media/_medium.html.erb
|
122
|
+
- app/views/has_media/_medium_field.html.erb
|
123
|
+
- app/views/has_media/destroy.js.erb
|
118
124
|
- config/locales/en.yml
|
119
125
|
- examples/models/audio.rb
|
120
126
|
- examples/models/document.rb
|
@@ -127,9 +133,11 @@ files:
|
|
127
133
|
- examples/uploaders/pdf_uploader.rb
|
128
134
|
- examples/uploaders/video_uploader.rb
|
129
135
|
- has_media.gemspec
|
136
|
+
- lib/carrierwave/uploader/url.rb
|
130
137
|
- lib/generators/active_record/has_media_generator.rb
|
131
138
|
- lib/generators/active_record/templates/migration.rb
|
132
139
|
- lib/generators/has_media/install_generator.rb
|
140
|
+
- lib/generators/has_media/views_generator.rb
|
133
141
|
- lib/generators/templates/README
|
134
142
|
- lib/generators/templates/has_media.rb
|
135
143
|
- lib/has_media.rb
|