radiant-assets-extension 0.0.7 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,22 +1,75 @@
1
1
  = Assets
2
2
 
3
- Provides simple image handling, incl. on-the-fly resizing. Intended as a
3
+ Provides simple image/attachment handling. Intended as a
4
4
  replacement for paperclipped in the long run, but very barebones right now.
5
5
 
6
- Supports uploading of images as well as other files.
6
+ Features:
7
7
 
8
- == Radius Tags
8
+ * Supports uploading of images as well as other files.
9
+ * Uploading of multiple files at once
10
+ * On-the-fly resizing of images to arbitrary sizes
11
+ * Easy Attachment of assets to pages (and reordering them)
9
12
 
10
- <r:image size="300x" />
13
+ == Example Radius Tags
14
+
15
+ <r:image size="300x" />
11
16
 
12
17
  Proportionally resizes an image to 300px width. Supports imagemagick geometry
13
18
  strings to do advanced resizing straight in Radius tags. Resized images are
14
19
  cached in Radiant's built-in cache so they don't have to be re-created on every
15
20
  request.
16
21
 
22
+ <r:assets:caption />
23
+
24
+ Renders the current asset’s caption
25
+
26
+ <r:attachments:each />
27
+
28
+ Cycles through all assets that are attached to the current page
29
+
30
+ == Configuration
31
+
32
+ You can change the behaviour of this extension using a number of Radiant settings.
33
+
34
+ ===assets.host
35
+
36
+ If this is set (defaults to not being set), the hostname given will be
37
+ inserted into all URLs generated by the assets extension. If you set up a
38
+ CNAME record in DNS that points to the Radiant app itself, this can improve
39
+ performance of the site by enabling browser to download assets in parallel. It
40
+ can also be used to configure a CDN such as Amazon’s CloudFront.
41
+
42
+ You will need to make sure this hostname points to the right content yourself.
43
+
44
+ Example:
45
+
46
+ Radiant::Config['assets.host'] = 'cdn.example.com'
47
+
48
+ ===assets.storage
49
+
50
+ This defaults to 'file'. Set this to 's3' to store all uploads in Amazon's S3
51
+ service. You will need to supply your Amazon AWS credentials as +s3.key+ and
52
+ +s3.secret+
53
+
54
+ Example:
55
+
56
+ Radiant::Config['assets.storage'] = 's3'
57
+ Radiant::Config['s3.key'] = 'asd123asdklj'
58
+ Radiant::Config['s3.secret'] = 'a1678123bcd123123efasdc'
59
+
60
+ ===s3.bucket
61
+
62
+ Set this to the s3 bucket name you want to use. If you don't set this, a
63
+ bucket named "radiant-assets-extension" will be created and used.
64
+
65
+ ===s3.host
66
+
67
+ If your bucket is located in a region other than the Amazon default of
68
+ us-east-1, set this to the appropriate host, e.g. +s3-eu-west-1.amazonaws.com+
69
+ for the EU (Ireland) region.
70
+
17
71
  == Todo
18
72
 
19
- - Attaching Assets to Pages
20
73
  - Easy/Automatic migration from paperclipped (currently this extension should
21
74
  only be used on “fresh” radiant sites w/o an asset management solution
22
75
  already in place)
@@ -1,5 +1,6 @@
1
1
  class Asset < ActiveRecord::Base
2
- has_many :attachments, :include => :page, :dependent => :destroy
2
+ has_many :attachments, :as => :attachable, :dependent => :destroy
3
+
3
4
  # HACK: incomplete
4
5
  AUDIO_FORMATS = [:wav, :mp3, :m4a, :ogg]
5
6
  VIDEO_FORMATS = [:mp4, :avi]
@@ -8,6 +9,10 @@ class Asset < ActiveRecord::Base
8
9
  validates_presence_of :upload
9
10
  delegate :url, :width, :height, :landscape, :portrait, :to => :upload
10
11
 
12
+ def page_attachments
13
+ attachments.select(&:attached_to_page?)
14
+ end
15
+
11
16
  def uploads
12
17
  []
13
18
  end
@@ -1,10 +1,16 @@
1
1
  module AssetTags
2
2
  include Radiant::Taggable
3
-
4
3
  class TagError < StandardError;end
5
4
 
6
5
  desc %{
7
- Renders an image tag
6
+ Renders an image tag for the current asset (if it’s an image)
7
+
8
+ You can resize the image using the @width@, @height@ and @size@ attributes.
9
+
10
+ Using @width@ and/or @height@ will resize the image to the specified
11
+ width/height maintaining the aspect ratio. For more complex resizing operations
12
+ you can use the @size@ attribute which will override any supplied
13
+ width/height attributes.
8
14
 
9
15
  Examples of possible values for the @size@ attribute
10
16
 
@@ -22,77 +28,102 @@ module AssetTags
22
28
  '400x300se' crop, with south-east gravity
23
29
  '400x300+50+100' crop from the point 50,100 with width, height 400,300
24
30
 
25
- <r:image id="2" [size="400x200"] />
31
+ *Usage:*
32
+
33
+ <pre><code><r:image id="2" [width="200"] [height="400"] [size="400x200"] /></code></pre>
26
34
  }
27
- # TODO: accept width/height attributes and do something sensible like
28
- # resizing proportionally
29
35
  tag 'image' do |tag|
30
- asset = find_asset(tag)
31
- options = tag.attr.dup
32
- image = resized_or_original_image(asset, options.delete('size'))
33
- %{<img src="#{image.url}"#{html_attributes(options)}>}
36
+ assign_asset_and_upload!(tag)
37
+ if tag.locals.asset.image?
38
+ img = (tag.locals.asset_upload ||= tag.locals.asset.upload)
39
+ fill_dimension_attributes!(tag)
40
+ %{<img src="#{img.url}"#{html_attr_string(tag.attr.except('size'))}>}
41
+ end
34
42
  end
35
43
 
36
44
  desc %{
37
45
  Selects an asset. Does not render anything itself but gives access to the
38
- asset's attributes such as size
46
+ asset's attributes such as @caption@, @url@ and @width@/@height@
39
47
 
40
- <r:asset id="22"><r:url /></r:asset>
41
- }
42
- tag 'asset' do |tag|
43
- tag.locals.asset = find_asset(tag)
44
- tag.expand
45
- end
46
-
47
- desc %{
48
- Renders the URL of an asset
48
+ Accepts optional @size@ parameter in which case, if the asset is an image,
49
+ the asset is resized and any child @url@, @width@ and @height@ tags will refer
50
+ to the resized image.
49
51
 
50
- Accepts optional size parameter in which case, if the asset is an image,
51
- the URL to a resized version of the image will be returned
52
+ *Usage:*
52
53
 
53
- <r:asset:url [size="200x200"] id="22" />
54
+ <pre><code><r:asset id="22" [size="200x200"]>...</r:asset></code></pre>
55
+
56
+ *Examples:*
57
+
58
+ Will render URL to original uploaded file
59
+ <pre><code><r:asset id="66"><r:url /></r:asset></code></pre>
60
+
61
+ Will render render height of resized image (500)
62
+ <pre><code><r:asset id="66" size="x500">New Height: <r:height />px</r:asset></code></pre>
54
63
  }
55
- tag 'asset:url' do |tag|
56
- image = resized_or_original_image(tag.locals.asset, tag.attr['size'])
57
- (image && image.url) || tag.locals.asset.url
64
+ tag 'asset' do |tag|
65
+ assign_asset_and_upload!(tag)
66
+ tag.expand
58
67
  end
59
68
 
60
- %w[caption width height].each do |attribute|
69
+ # NOTE: width/height tags require analysing the image if you resized it
70
+ # this can be quite slow. Avoid using with resized images.
71
+ %w[url width height].each do |attribute|
61
72
  desc %{
62
73
  Renders the #{attribute} of the current asset
74
+
75
+ Accepts optional size parameter in which case, if the asset is an image,
76
+ the #{attribute} to a resized version of the image will be returned.
77
+
78
+ *Usage:*
79
+
80
+ <pre><code><r:asset:#{attribute} [size="200x200"] id="22" /></code></pre>
63
81
  }
64
82
  tag "asset:#{attribute}" do |tag|
65
- tag.locals.asset.send(attribute.to_sym)
83
+ assign_asset_and_upload!(tag)
84
+ (tag.locals.asset_upload ||= tag.locals.asset.upload).send(attribute.to_sym)
66
85
  end
67
86
  end
87
+
88
+ desc %{
89
+ Renders the caption of the current asset
90
+ }
91
+ tag 'asset:caption' do |tag|
92
+ assign_asset_and_upload!(tag)
93
+ tag.locals.asset.caption
94
+ end
68
95
 
69
96
  desc %{
70
- Renders contents if the current asset is an image
97
+ Renders its contents if the current asset is an image
71
98
  }
72
99
  tag 'asset:if_image' do |tag|
100
+ assign_asset_and_upload!(tag)
73
101
  tag.expand if tag.locals.asset.image?
74
102
  end
75
103
 
76
104
  desc %{
77
- Renders contents if the current asset isn't an image
105
+ Renders its contents if the current asset isn't an image
78
106
  }
79
107
  tag 'asset:unless_image' do |tag|
108
+ assign_asset_and_upload!(tag)
80
109
  tag.expand unless tag.locals.asset.image?
81
110
  end
82
111
 
83
112
  %w[landscape portrait].each do |orientation|
84
113
  desc %{
85
- Renders contents if the current image is in #{orientation} orientation
114
+ Renders its contents if the current image is in #{orientation} orientation
86
115
  }
87
116
  tag "asset:if_#{orientation}" do |tag|
88
- tag.expand if tag.locals.asset.send "#{orientation}?".to_sym
117
+ assign_asset_and_upload!(tag)
118
+ tag.expand if (tag.locals.asset_upload ||= tag.locals.asset.upload).send "#{orientation}?".to_sym
89
119
  end
90
120
 
91
121
  desc %{
92
- Renders contents if the current image isn't in #{orientation} orientation
122
+ Renders its contents if the current image isn't in #{orientation} orientation
93
123
  }
94
124
  tag "asset:unless_#{orientation}" do |tag|
95
- tag.expand unless tag.locals.asset.send "#{orientation}?".to_sym
125
+ assign_asset_and_upload!(tag)
126
+ tag.expand unless (tag.locals.asset_upload ||= tag.locals.asset.upload).send "#{orientation}?".to_sym
96
127
  end
97
128
  end
98
129
 
@@ -102,16 +133,39 @@ module AssetTags
102
133
  end
103
134
 
104
135
  desc %{
105
- Selects the first attached asset of the page and renders the tag's contents.
136
+ Renders the tag’s contents if the page has any assets attached.
137
+ }
138
+ tag 'if_attachments' do |tag|
139
+ tag.expand if tag.locals.page.attachments.any?
140
+ end
141
+
142
+ desc %{
143
+ Renders the tag’s contents if the page has no assets attached.
144
+ }
145
+ tag 'unless_attachments' do |tag|
146
+ tag.expand unless tag.locals.page.attachments.any?
147
+ end
148
+
149
+ desc %{
150
+ Renders the tag‘s contents with the first attached asset of the current
151
+ page selected.
152
+
106
153
  If there are no assets on the page, nothing is rendered.
107
154
  }
108
155
  tag 'attachments:first' do |tag|
109
156
  if attachment = tag.locals.page.attachments.first
157
+ tag.locals.attachment = attachment
110
158
  tag.locals.asset = attachment.asset
111
159
  tag.expand
112
160
  end
113
161
  end
114
162
 
163
+
164
+ desc %{
165
+ Cycles through the attachments of the current page and renders the tag’s
166
+ contents for each of them.
167
+ }
168
+ # TODO: arbitrary ordering and limiting
115
169
  tag 'attachments:each' do |tag|
116
170
  tag.locals.page.attachments.collect do |attachment|
117
171
  tag.locals.attachment = attachment
@@ -121,20 +175,52 @@ module AssetTags
121
175
  end
122
176
 
123
177
  private
124
- def find_asset(tag)
125
- tag.locals.asset || Asset.find(tag.attr['id'])
126
- rescue ActiveRecord::RecordNotFound
127
- raise TagError, 'Please supply an id attribute'
178
+ def assign_asset_and_upload!(tag)
179
+ assign_asset!(tag)
180
+ assign_upload!(tag)
181
+ end
182
+
183
+ def assign_asset!(tag)
184
+ if tag.attr['id']
185
+ tag.locals.asset = Asset.find(tag.attr['id'])
186
+ else
187
+ tag.locals.asset || raise(TagError, 'Please supply an id attribute')
188
+ end
189
+ end
190
+
191
+ def fill_dimension_attributes!(tag)
192
+ # Can't use aspect_ratio here because it's not cached on the model
193
+ # Using it would require analysing the image which we want to postpone
194
+ # The original height/width are cached on upload though
195
+ aspect_ratio = tag.locals.asset.width.to_f / tag.locals.asset.height.to_f
196
+ if tag.attr['width'] && tag.attr['height']
197
+ return
198
+ elsif tag.attr['width']
199
+ tag.attr['height'] = (tag.attr['width'].to_i / aspect_ratio).to_i
200
+ elsif h = tag.attr['height']
201
+ tag.attr['width'] = (tag.attr['height'].to_i * aspect_ratio).to_i
202
+ end
203
+ end
204
+
205
+ def assign_upload!(tag)
206
+ tag.attr['size'] ||= build_geometry_string(tag.attr['width'], tag.attr['height'])
207
+ tag.locals.asset_upload = if tag.attr['size']
208
+ tag.locals.asset.upload.process(:resize, tag.attr['size'])
209
+ end
128
210
  end
129
211
 
130
- def resized_or_original_image(asset, size)
131
- if asset.image?
132
- size ? asset.upload.process(:resize, size) : asset.upload
212
+ def build_geometry_string(width, height)
213
+ if width && height
214
+ "#{width}x#{height}"
215
+ elsif width
216
+ "#{width}x"
217
+ elsif height
218
+ "x#{height}"
133
219
  end
134
220
  end
135
221
 
136
- def html_attributes(options)
137
- attributes = options.inject('') { |s, (k, v)| s << %{#{k.downcase}="#{v}" } }.strip
222
+ def html_attr_string(hash)
223
+ attributes = hash.inject('') { |s, (k, v)| s << %{#{k.downcase}="#{v}" } }.strip
138
224
  " #{attributes}" unless attributes.empty?
139
225
  end
140
226
  end
@@ -1,10 +1,10 @@
1
1
  require 'acts_as_list'
2
2
 
3
3
  class Attachment < ActiveRecord::Base
4
- belongs_to :asset, :autosave => true
5
- belongs_to :page
4
+ belongs_to :attachable, :polymorphic => true, :autosave => true
5
+ belongs_to :parent, :polymorphic => true
6
6
 
7
- acts_as_list :scope => :page_id
7
+ acts_as_list :scope => :parent_id
8
8
 
9
9
  def self.reorder(new_order)
10
10
  new_order.each_with_index do |id, index|
@@ -13,11 +13,19 @@ class Attachment < ActiveRecord::Base
13
13
  new_order
14
14
  end
15
15
 
16
+ def attached_to_page?
17
+ parent_type == 'Page'
18
+ end
19
+
20
+ def asset
21
+ attachable if attachable_type == 'Asset'
22
+ end
23
+
16
24
  def uploads=(new_uploads)
17
- (asset || build_asset).uploads=new_uploads
25
+ (self.attachable ||= Asset.new).uploads=new_uploads
18
26
  end
19
27
 
20
28
  def uploads
21
- (asset || build_asset).uploads
29
+ (self.attachable ||= Asset.new).uploads
22
30
  end
23
31
  end
@@ -1,23 +1,32 @@
1
- <h2>Attachments</h2>
2
-
3
- <%= render :partial => 'admin/assets/upload', :locals => {:record => @page.attachments.build, :url => admin_page_attachments_path(@page)} %>
4
-
5
- <ul id="assets">
6
- <%= render :partial => 'admin/assets/attachment', :collection => @page.attachments.reject(&:new_record?) %>
7
- </ul>
8
-
9
- <script type="text/javascript">
10
- (function($) {
11
- $(function() {
12
- $('#assets').sortable({
13
- update: function(event, ui) {
14
- $.ajax({
15
- type: "POST",
16
- url: '<%= positions_admin_page_attachments_path(@page) %>',
17
- data: '_method=PUT&'+$(this).sortable('serialize'),
18
- });
19
- }
20
- }).disableSelection();
21
- });
22
- }(jQuery));
23
- </script>
1
+ <%#
2
+ HACK: when page isn't saved there isnt a way to associate uploaded images
3
+ saving uploads temporarily and associating them on save is messy, but
4
+ should be the way to go
5
+ %>
6
+ <% unless @page.new_record? %>
7
+ <h2>Attachments</h2>
8
+
9
+ <%= render :partial => 'admin/assets/upload', :locals => {:record => @page.attachments.build, :url => admin_page_attachments_path(@page)} %>
10
+
11
+ <ul id="assets">
12
+ <%= render :partial => 'admin/assets/attachment', :collection => @page.attachments.reject(&:new_record?) %>
13
+ </ul>
14
+
15
+ <script type="text/javascript">
16
+ (function($) {
17
+ $(function() {
18
+ $('#assets').sortable({
19
+ update: function(event, ui) {
20
+ $.ajax({
21
+ type: "POST",
22
+ url: '<%= positions_admin_page_attachments_path(@page) %>',
23
+ data: '_method=PUT&'+$(this).sortable('serialize'),
24
+ });
25
+ }
26
+ }).disableSelection();
27
+ });
28
+ }(jQuery));
29
+ </script>
30
+ <% else %>
31
+ <p>Please save page first before uploading attachments.</p>
32
+ <% end %>
@@ -18,11 +18,11 @@
18
18
  </table>
19
19
  <%= f.file_field :upload %>
20
20
  <%= display(@asset) %>
21
- <%- if @asset.attachments.any? -%>
22
- <h2>Included on <%= pluralize(@asset.attachments.size, 'this page', 'these pages') %>:</h2>
21
+ <%- if @asset.page_attachments.any? -%>
22
+ <h2>Included on <%= pluralize(@asset.page_attachments.size, 'this page', 'these pages') %>:</h2>
23
23
  <ul>
24
- <%- @asset.attachments.each do |attachment| -%>
25
- <li><%= link_to attachment.page.title, edit_admin_page_path(attachment.page) %></li>
24
+ <%- @asset.page_attachments.each do |attachment| -%>
25
+ <li><%= link_to attachment.parent.title, edit_admin_page_path(attachment.parent) %></li>
26
26
  <%- end -%>
27
27
  </ul>
28
28
  <%- end -%>
@@ -8,16 +8,16 @@
8
8
 
9
9
  <table class="index" id="assets">
10
10
  <tr><td class="name"><%= asset_listing(@asset) %></td></tr>
11
- <% if @asset.attachments.any? %>
11
+ <% if @asset.page_attachments.any? %>
12
12
  <tr>
13
13
  <th>
14
14
  It's being used on the following
15
- <%= pluralize(@asset.attachments.size, 'page') %> and will be removed from
15
+ <%= pluralize(@asset.page_attachments.size, 'page') %> and will be removed from
16
16
  there as well:
17
17
  </th>
18
18
  </tr>
19
- <% @asset.attachments.each do |attachment| %>
20
- <tr><td><%= attachment.page.title %></td></tr>
19
+ <% @asset.page_attachments.each do |attachment| %>
20
+ <tr><td><%= attachment.parent.title %></td></tr>
21
21
  <% end %>
22
22
  <% end %>
23
23
  </table>
@@ -1,6 +1,6 @@
1
1
  # Uncomment this if you reference any of your controllers in activate
2
2
  # require_dependency 'application_controller'
3
- require 'radiant-assets-extension/version'
3
+ require 'radiant-assets-extension'
4
4
  require 'radiant-assets-extension/s3_store'
5
5
 
6
6
  class AssetsExtension < Radiant::Extension
@@ -10,11 +10,17 @@ class AssetsExtension < Radiant::Extension
10
10
 
11
11
  extension_config do |config|
12
12
  path = '/assets'
13
+
13
14
  dragonfly = Dragonfly[:assets]
14
15
  dragonfly.configure_with(:imagemagick)
16
+ # Overriding command to strip metadata from resized/converted images
17
+ # see https://github.com/markevans/dragonfly/pull/61#issuecomment-1037694
18
+ Dragonfly::ImageMagickUtils.convert_command = 'convert -strip'
15
19
  dragonfly.configure_with(:rails)
16
- dragonfly.define_macro(ActiveRecord::Base, :image_accessor)
20
+ dragonfly.define_macro(ActiveRecord::Base, :image_accessor)
17
21
  dragonfly.url_path_prefix = path
22
+ # TODO: optional SSL support for url_host. could protocol-relative urls be used?
23
+ dragonfly.url_host = 'http://' + Radiant::Config['assets.host'] if Radiant::Config['assets.host']
18
24
  if RadiantAssetsExtension::S3Store.enabled?
19
25
  dragonfly.datastore = RadiantAssetsExtension::S3Store.new
20
26
  dragonfly.datastore.configure do |c|
@@ -33,7 +39,7 @@ class AssetsExtension < Radiant::Extension
33
39
  ApplicationController.helper(:assets)
34
40
  Page.class_eval do
35
41
  include AssetTags
36
- has_many :attachments, :include => :asset, :order => :position
42
+ has_many :attachments, :as => :parent, :order => :position, :dependent => :destroy
37
43
  end
38
44
  end
39
45
  end
@@ -0,0 +1,17 @@
1
+ class MakeAttachmentsPolymorphic < ActiveRecord::Migration
2
+ def self.up
3
+ rename_column :attachments, :page_id, :parent_id
4
+ add_column :attachments, :parent_type, :string
5
+ Attachment.update_all 'parent_type = "Page"'
6
+
7
+ rename_column :attachments, :asset_id, :attachable_id
8
+ add_column :attachments, :attachable_type, :string
9
+ Attachment.update_all 'attachable_type = "Asset"'
10
+ end
11
+
12
+ def self.down
13
+ warn 'This will delete all Attachments that aren’t attached to pages'
14
+ remove_column :attachments, :parent_type
15
+ rename_column :attachments, :parent_id, :page_id
16
+ end
17
+ end
@@ -1,2 +1,3 @@
1
1
  module RadiantAssetsExtension
2
- end
2
+ VERSION = '0.0.10'
3
+ end
@@ -23,7 +23,7 @@ module RadiantAssetsExtension
23
23
  # HACK: AWS::S3 doesn't support S3 international regions properly
24
24
  # https://github.com/marcel/aws-s3/issues#issue/4/comment/411302
25
25
  # we monkey-patch the default host
26
- AWS::S3::DEFAULT_HOST.replace Radiant::Config['s3.host'] || self.class.s3_region_hosts['us-east-1']
26
+ AWS::S3::DEFAULT_HOST.replace Radiant::Config['s3.host'] if Radiant::Config['s3.host']
27
27
  super({
28
28
  :bucket_name => Radiant::Config['s3.bucket'] || DEFAULT_BUCKET_NAME,
29
29
  :access_key_id => Radiant::Config['s3.key'],
@@ -62,6 +62,14 @@ ul#assets, #assets li {
62
62
  position: relative;
63
63
  }
64
64
 
65
+ #assets li li {
66
+ margin-bottom: 0;
67
+ }
68
+
69
+ #assets li li:last-of-type {
70
+ margin-right: 0;
71
+ }
72
+
65
73
  #assets li a {
66
74
  color: inherit;
67
75
  text-decoration: none;
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path('../lib', __FILE__)
3
- require 'radiant-assets-extension/version'
3
+ require 'radiant-assets-extension'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'radiant-assets-extension'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radiant-assets-extension
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 7
10
- version: 0.0.7
9
+ - 10
10
+ version: 0.0.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gerrit Kaiser
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-20 00:00:00 +00:00
18
+ date: 2011-04-21 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -108,11 +108,11 @@ files:
108
108
  - db/migrate/20110225210821_add_attachment_to_pages.rb
109
109
  - db/migrate/20110225210912_add_timestamps_and_locking_to_assets.rb
110
110
  - db/migrate/20110320152044_add_position_to_attachments.rb
111
+ - db/migrate/20110321005357_make_attachments_polymorphic.rb
111
112
  - features/support/env.rb
112
113
  - features/support/paths.rb
113
114
  - lib/radiant-assets-extension.rb
114
115
  - lib/radiant-assets-extension/s3_store.rb
115
- - lib/radiant-assets-extension/version.rb
116
116
  - lib/tasks/assets_extension_tasks.rake
117
117
  - public/jquery.fileupload/.gitignore
118
118
  - public/jquery.fileupload/jquery.fileupload-ui.css
@@ -127,7 +127,7 @@ has_rdoc: true
127
127
  homepage: http://ext.radiantcms.org/extensions/269-assets
128
128
  licenses: []
129
129
 
130
- post_install_message: "\n Add this to your radiant project with:\n config.gem 'radiant-assets-extension', :version => '0.0.7'\n "
130
+ post_install_message: "\n Add this to your radiant project with:\n config.gem 'radiant-assets-extension', :version => '0.0.10'\n "
131
131
  rdoc_options: []
132
132
 
133
133
  require_paths:
@@ -1,3 +0,0 @@
1
- module RadiantAssetsExtension
2
- VERSION = '0.0.7'
3
- end