papermill 1.3.3 → 1.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.3
1
+ 1.3.4
@@ -1,12 +1,12 @@
1
1
  class PapermillController < ApplicationController
2
- prepend_before_filter :load_asset, :only => [ "show", "destroy", "update", "edit", "crop" ]
2
+ prepend_before_filter :load_asset, :only => [ "show", "destroy", "update", "edit", "crop", "receive_from_pixlr" ]
3
3
  prepend_before_filter :load_assets, :only => [ "sort", "mass_delete", "mass_edit", "mass_thumbnail_reset" ]
4
4
 
5
5
  skip_before_filter :verify_authenticity_token, :only => [:create] # not needed (Flash same origin policy)
6
6
 
7
7
  def show
8
8
  # first escaping is done by rails prior to route recognition, need to do a second one on MSWIN systems to get original one.
9
- params[:style] = CGI::unescape(params[:style]) if RUBY_PLATFORM =~ /win/
9
+ params[:style] = CGI::unescape(params[:style]) if Papermill::MSWIN
10
10
  if @asset.has_valid_url_key?(params[:url_key], params[:style]) && @asset.create_thumb_file(params[:style])
11
11
  redirect_to @asset.url(params[:style])
12
12
  else
@@ -20,7 +20,7 @@ class PapermillController < ApplicationController
20
20
  PapermillAsset.find(:all, :conditions => { :assetable_id => @asset.assetable_id, :assetable_type => @asset.assetable_type, :assetable_key => @asset.assetable_key }).each do |asset|
21
21
  asset.destroy unless asset == @asset
22
22
  end if !params[:gallery]
23
- render :partial => "papermill/asset", :object => @asset, :locals => { :gallery => params[:gallery], :thumbnail_style => params[:thumbnail_style] }
23
+ render :partial => "papermill/asset", :object => @asset, :locals => { :gallery => params[:gallery], :thumbnail_style => params[:thumbnail_style], :targetted_geometry => params[:targetted_geometry] }
24
24
  end
25
25
  end
26
26
 
@@ -32,6 +32,12 @@ class PapermillController < ApplicationController
32
32
  render :action => "crop", :layout => false
33
33
  end
34
34
 
35
+ def receive_from_pixlr
36
+ @asset.file = params[:image]
37
+ @asset.destroy_thumbnails
38
+ render :nothing => true
39
+ end
40
+
35
41
  def update
36
42
  @asset.create_thumb_file(params[:target], params[:papermill_asset].merge({ :geometry => "#{params[:target]}#" })) if params[:target]
37
43
  render :update do |page|
@@ -1,7 +1,7 @@
1
1
  <%- dom_id = "papermill_asset_#{asset.id}" -%>
2
2
  <%- delete_link = %{<a onclick="if(confirm('#{escape_javascript t("papermill.delete-confirmation", :resource => asset.name)}')){ jQuery.ajax({async:true, beforeSend:function(request){jQuery('##{dom_id}').hide();}, dataType:'script', error:function(request){jQuery('##{dom_id}').show();}, type:'delete', url:'#{papermill_url(asset)}'})}; return false;" href="#" class="delete"><img title="#{escape_javascript t("papermill.delete", :resource => asset.name)}" src="/papermill/images/delete.png" alt="delete"/></a>} %>
3
3
 
4
- <div id="<%= dom_id %>" class="asset" title="<%= t("papermill.#{(thumbnail_style) ? "thumbnail-" : ""}edit-title", :resource => asset.name) %>" onDblClick="popup(jQuery(this).attr('rel')); return false;" rel="<%= edit_papermill_url(asset) %>">
4
+ <div id="<%= dom_id %>" class="asset" title="<%= t("papermill.#{(thumbnail_style) ? "thumbnail-" : ""}edit-title", :resource => asset.name) %>" onDblClick="popup(jQuery(this).attr('rel')); return false;" rel="<%= edit_papermill_url(asset, :targetted_geometry => targetted_geometry) %>">
5
5
  <%= delete_link %>
6
6
  <%- if thumbnail_style -%>
7
7
  <%= render :partial => "papermill/thumbnail_asset", :object => asset, :locals => {:thumbnail_style => thumbnail_style} %>
@@ -22,17 +22,26 @@
22
22
  }
23
23
  </style>
24
24
 
25
+ <%
26
+ unless (@size = params[:targetted_geometry]).blank?
27
+ @target_w, @target_h = @size.split("x").map(&:to_i)
28
+ @init_x = (@asset.width - @target_w.to_i) / 2
29
+ @init_y = (@asset.height - @target_h.to_i) / 2
30
+ end
31
+ %>
32
+
33
+
25
34
  <div class="jc_coords">
26
35
  <form onsubmit="jQuery.ajax({data:jQuery.param(jQuery(this).serializeArray()), dataType:'script', type:'post', url:'/papermill/<%= @asset.id %>'}); return false;" method="post">
27
36
  <input type="hidden" value="put" name="_method"/>
28
37
  <input type="hidden" value="<%= params[:target] %>" name="target"/>
29
38
  <% fields_for :papermill_asset, @asset do |f| %>
30
- <label>W <%= f.text_field :crop_w, :id => :crop_w, :size => 4, :readonly => "readonly" %></label>
31
- <label>H <%= f.text_field :crop_h, :id => :crop_h, :size => 4, :readonly => "readonly" %></label>
39
+ <label>W: <%= f.text_field :crop_w, :id => :crop_w, :size => 4, :readonly => "readonly" %><%= " /" + @target_w.to_s if @size %></label>
40
+ <label>H: <%= f.text_field :crop_h, :id => :crop_h, :size => 4, :readonly => "readonly" %><%= " /" + @target_h.to_s if @size %></label>
32
41
  <%= f.hidden_field :crop_x, :id => :crop_x %>
33
42
  <%= f.hidden_field :crop_y, :id => :crop_y %>
34
43
  <%= f.submit I18n.t('papermill.save'), :class => "submit" %>
35
- <%= link_to_function I18n.t("papermill.back"), "popup('#{edit_papermill_path(@asset)}')" %>
44
+ <%= link_to_function I18n.t("papermill.back"), "popup('#{edit_papermill_path(@asset, :targetted_geometry => params[:targetted_geometry])}')" %>
36
45
  <% end -%>
37
46
  </form>
38
47
  </div>
@@ -41,27 +50,31 @@
41
50
 
42
51
 
43
52
  <script type="text/javascript" charset="utf-8">
53
+
44
54
  jQuery(function() {
45
55
  jQuery('#cropbox').Jcrop({
46
- onChange: update_crop,
47
- onSelect: update_crop
48
- //setSelect: [0, 0, 100, 100]
49
- //aspectRatio: 1
56
+ <% unless @size %>
57
+ setSelect: [0,0,100,100]
58
+ <% else %>
59
+ setSelect: <%= %{[#{@init_x}, #{@init_y}, #{@target_w + @init_x}, #{@target_h + @init_y}]} %>
60
+ <% end -%>
61
+ ,onChange: update_crop
62
+ ,onSelect: update_crop
63
+ <%= ",aspectRatio: #{@target_w} / #{@target_h}" unless @size.blank? %>
50
64
  });
51
65
  });
52
-
66
+
53
67
  function update_crop(coords) {
54
68
  jQuery("#crop_x").val(coords.x);
55
69
  jQuery("#crop_y").val(coords.y);
56
70
  jQuery("#crop_w").val(coords.w);
57
71
  jQuery("#crop_h").val(coords.h);
58
-
59
72
  };
60
73
 
61
74
  /* browser don't know about windows content size when loading facebox if image not in cache, fixing facebox left */
62
75
  jQuery(document).bind('reveal.facebox', function() {
63
76
  jQuery(document).unbind('reveal.facebox'); /* clear self (one-shot binding) */
64
- jQuery('#facebox').css('left', jQuery(window).width() / 2 - (<%= @asset.width %> / 2));
77
+ jQuery('#facebox').css('left', (jQuery(window).width() - <%= @asset.width %>) / 2);
65
78
  });
66
79
 
67
80
  </script>
@@ -1,12 +1,21 @@
1
1
  <div id="papermill-box">
2
2
  <div id="left">
3
3
  <% if @asset.image? %>
4
- <%# link_to image_tag(@asset.url("400x400>")), @asset.url, :popup => true %>
5
- <%= image_tag(@asset.url("400x400>"), :onDblClick => "popup('#{crop_papermill_path(@asset, :target => "original")}'); return false;", :title => I18n.t("papermill.thumbnail-edit-title", :resource => @asset.name)) %>
4
+
5
+ <%# image_tag(@asset.url("400x400>"), :onDblClick => %{$.facebox( $('<iframe src="#{crop_papermill_path(@asset, :target => "original", :targetted_geometry => params[:targetted_geometry])}" />')); return false;}, :title => I18n.t("papermill.crop", :resource => @asset.name)) %>
6
+
7
+
8
+ <%= image_tag(@asset.url("400x400>"), :onDblClick => "popup('#{crop_papermill_path(@asset, :target => "original", :targetted_geometry => params[:targetted_geometry])}'); return false;", :title => I18n.t("papermill.crop", :resource => @asset.name)) %>
9
+
10
+
11
+ <%# @test = "webonrails.com/wp-content/uploads/2008/11/hosting-rails-app-and-wordpress-on-same-domainas-folder-instead-of-subdomain-webonrails_1225783508773.png" %>
12
+ <%# link_to I18n.t("papermill.edit-with-pixlr", :resource => @asset.name), "http://www.pixlr.com/editor/?image=http://#{@test || request.env["HTTP_HOST"] + @asset.url}&target=http://#{receive_from_pixlr_papermill_path(@asset)}&method=POST", :target => "_blank" %>
6
13
  <div style="clear:both;"></div>
7
14
  <% else %>
8
15
  <%= link_to t("file_type", :type => @asset.content_type, :scope => 'papermill'), @asset.url, :popup => true %>
9
16
  <% end -%>
17
+
18
+
10
19
  </div>
11
20
  <div id="right">
12
21
  <div id="read-only">
@@ -4,6 +4,8 @@ en:
4
4
  updated: "'{{resource}}' updated"
5
5
  not-found: "'#{{resource}}' not found"
6
6
  edit-title: "Click to edit '{{resource}}'"
7
+ crop: "Double-click to crop '{{resource}}'"
8
+ edit-with-pixlr: "Edit '{{resource}}' online @ pixlr.com"
7
9
  thumbnail-edit-title: "Double-click to edit '{{resource}}'"
8
10
  upload-button-wording: "Upload..."
9
11
  delete: "Remove {{resource}}"
@@ -37,6 +39,8 @@ fr:
37
39
  updated: "'{{resource}}' modifiés(s)"
38
40
  not-found: "'{{resource}}' non trouvé"
39
41
  edit-title: "Cliquer pour éditer '{{resource}}'"
42
+ crop: "Double-cliquer pour retailler '{{resource}}'"
43
+ edit-with-pixlr: "Éditer '{{resource}}' en-ligne sur pixlr.com"
40
44
  thumbnail-edit-title: "Double-cliquer pour éditer '{{resource}}'"
41
45
  upload-button-wording: "Charger.."
42
46
  delete: "Supprimer {{resource}}"
data/config/routes.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  ActionController::Routing::Routes.draw do |map|
2
- map.resources :papermill, :collection => { :sort => :post, :mass_edit => :post, :mass_delete => :post, :mass_thumbnail_reset => :post }, :member => { :crop => :get }
2
+ map.resources :papermill, :collection => { :sort => :post, :mass_edit => :post, :mass_delete => :post, :mass_thumbnail_reset => :post }, :member => { :crop => :get, :receive_from_pixlr => :post }
3
3
  map.connect "#{Papermill::options[:papermill_url_prefix]}/#{Papermill::compute_paperclip_path.gsub(":id_partition", ":id0/:id1/:id2")}", :controller => "papermill", :action => "show", :requirements => { :style => /.*/ }
4
4
  end
@@ -24,7 +24,7 @@ class <%= migration_name %> < ActiveRecord::Migration
24
24
  end
25
25
 
26
26
  change_table :papermill_assets do |t|
27
- t.index [:assetable_type, :assetable_id, :assetable_key, :position], { :name => "papermill_index" }
27
+ t.index [:assetable_id, :assetable_type, :assetable_key, :position], { :name => "papermill_index" }
28
28
  t.index [:assetable_key, :position] # for non assetable assets
29
29
  end
30
30
  end
@@ -50,23 +50,25 @@ module ActionView::Helpers::FormTagHelper
50
50
  assetable_type = assetable && assetable.class.base_class.name || nil
51
51
 
52
52
  options = PapermillAsset.papermill_options(assetable && assetable.class.name, key).deep_merge(options)
53
+
53
54
  dom_id = "papermill_#{assetable_type}_#{assetable_id}_#{key}"
54
55
 
55
56
  if ot = options[:thumbnail]
56
57
  w = ot[:width] || ot[:height] && ot[:aspect_ratio] && (ot[:height] * ot[:aspect_ratio]).to_i || nil
57
58
  h = ot[:height] || ot[:width] && ot[:aspect_ratio] && (ot[:width] / ot[:aspect_ratio]).to_i || nil
58
- ot[:style] ||= (w || h) && "#{w}x#{h}>" || "original"
59
+
60
+ computed_style = ot[:style] || (w || h) && "#{w}x#{h}>" || "original"
59
61
  set_papermill_inline_css(dom_id, w, h, options)
60
62
  end
61
63
 
62
- set_papermill_inline_js(dom_id, compute_papermill_create_url(assetable_id, assetable_type, key, options), options)
64
+ set_papermill_inline_js(dom_id, compute_papermill_create_url(assetable_id, assetable_type, key, computed_style, options), options)
63
65
 
64
66
  html = {}
65
67
  html[:upload_button] = %{<div id="#{dom_id}-button-wrapper" class="papermill-button-wrapper" style="height: #{options[:swfupload][:button_height]}px;"><span id="browse_for_#{dom_id}" class="swf_button"></span></div>}
66
68
  html[:container] = @template.content_tag(:div, :id => dom_id, :class => "papermill-#{key.to_s} #{(options[:thumbnail] ? "papermill-thumb-container" : "papermill-asset-container")} #{(options[:gallery] ? "papermill-multiple-items" : "papermill-unique-item")}") do
67
69
  conditions = {:assetable_type => assetable_type, :assetable_id => assetable_id}
68
70
  conditions.merge!({:assetable_key => key.to_s}) if key
69
- @template.render :partial => "papermill/asset", :collection => PapermillAsset.all(:conditions => conditions), :locals => { :thumbnail_style => options[:thumbnail] && options[:thumbnail][:style] }
71
+ @template.render :partial => "papermill/asset", :collection => PapermillAsset.all(:conditions => conditions), :locals => { :thumbnail_style => computed_style, :targetted_geometry => options[:targetted_geometry] }
70
72
  end
71
73
 
72
74
  if options[:gallery]
@@ -88,11 +90,11 @@ module ActionView::Helpers::FormTagHelper
88
90
  end
89
91
 
90
92
 
91
- def compute_papermill_create_url(assetable_id, assetable_type, key, options)
93
+ def compute_papermill_create_url(assetable_id, assetable_type, key, computed_style, options)
92
94
  create_url_options = {
93
95
  :escape => false, :controller => "/papermill", :action => "create",
94
96
  :asset_class => (options[:class_name] || PapermillAsset).to_s,
95
- :gallery => !!options[:gallery], :thumbnail_style => options[:thumbnail] && options[:thumbnail][:style]
97
+ :gallery => !!options[:gallery], :thumbnail_style => computed_style, :targetted_geometry => options[:targetted_geometry]
96
98
  }
97
99
  create_url_options.merge!({ :assetable_id => assetable_id, :assetable_type => assetable_type }) if assetable_id
98
100
  create_url_options.merge!({ :assetable_key => key }) if key
@@ -29,9 +29,8 @@ module Papermill
29
29
  (@papermill_associations ||= {}).merge!( assoc_name => Papermill::options.deep_merge(local_options) )
30
30
 
31
31
  include Papermill::InstanceMethods
32
- before_destroy :destroy_assets
33
32
  after_create :rebase_assets
34
- has_many :papermill_assets, :as => "Assetable", :dependent => :destroy
33
+ has_many :papermill_assets, :as => "assetable", :dependent => :destroy
35
34
 
36
35
  [assoc_name, Papermill::options[:base_association_name].to_sym].uniq.each do |assoc|
37
36
  define_method assoc do |*options|
@@ -63,10 +62,6 @@ module Papermill
63
62
 
64
63
  private
65
64
 
66
- def destroy_assets
67
- papermill_assets.each &:destroy
68
- end
69
-
70
65
  def rebase_assets
71
66
  PapermillAsset.all(:conditions => { :assetable_id => self.timestamp, :assetable_type => self.class.base_class.name }).each do |asset|
72
67
  asset.created_at < 2.hours.ago ? asset.destroy : asset.update_attribute(:assetable_id, self.id)
@@ -13,7 +13,7 @@ class PapermillAsset < ActiveRecord::Base
13
13
  validates_attachment_presence :file
14
14
 
15
15
  belongs_to :assetable, :polymorphic => true
16
- default_scope :order => 'assetable_type, assetable_id, assetable_key, position'
16
+ default_scope :order => 'position'
17
17
 
18
18
  named_scope :key, lambda { |assetable_key| { :conditions => ['assetable_key = ?', assetable_key.to_s] }}
19
19
 
@@ -9,37 +9,47 @@ module Papermill
9
9
 
10
10
  OPTIONS = {
11
11
 
12
- #@@@@@@@@@@@@@@@@@@@ papermill association parameters @@@@@@@@@@@@@@@@@@@@@@@
12
+
13
+ #@@@@@@@@@@@@@@ Papermill association parameters @@@@@@@@@@@@@@@@@@
13
14
 
14
15
  # You can override these parameters here, or in your papermill associations definition.
15
16
 
16
- # Associated PapermillAsset subclass (must be STI subclass of PapermillAsset)
17
+ # Associated PapermillAsset subclass (must be an STI subclass of PapermillAsset)
17
18
  # :class_name => "PapermillAsset",
18
19
 
20
+
21
+
22
+
19
23
  #@@@@@@@@@@@@@@@@@@@ form-helper parameters @@@@@@@@@@@@@@@@@@@@@@@
20
24
 
21
25
  # You can override all these parameters here, or in your papermill associations definition, or in form-helper calls.
22
26
 
23
27
  # Helper can generates inline css styling that adapt to your gallery/images placeholder. You can use it to scaffold, then copy the lines you need in your application css and set it to false.
28
+
24
29
  # :inline_css => true,
25
30
 
26
31
  # SwfUpload will only let the user upload images.
32
+
27
33
  # :images_only => false,
28
34
 
29
35
  # Dashboard is only for galleries
30
36
  # You can remove/change order of HTML elements.
31
37
  # See below for dashboard
38
+
32
39
  # :form_helper_elements => [:upload_button, :container, :dashboard],
33
40
 
34
41
  # Dashboard elements
35
42
  # You can remove/change order of HTML elements. You can add :mass_thumbnail_reset to add a link to reset all thumbnails, although you shouldn't need it.
43
+
36
44
  # :dashboard => [:mass_edit, :mass_delete ],
37
45
 
38
46
  # Attributes editable at once for all assets in a gallery
47
+
39
48
  # :mass_editable_fields => ["title", "copyright", "description"],
40
49
 
41
50
  # Attributes you can edit in the form. You can use :type (string or text) and :label (any string)
42
51
  # if you have more complex needs, you should override app/views/papermill/_form.html.erb in your application.
52
+
43
53
  # :editable_fields => [
44
54
  # {:title => {:type => "string"}},
45
55
  # {:alt => {:type => "string"}},
@@ -52,19 +62,29 @@ module Papermill
52
62
  # Great for quick admin scaffolding.
53
63
 
54
64
  :gallery => {
65
+
55
66
  # override calculated gallery width. Ex: "auto"
67
+
56
68
  # :width => nil,
69
+
57
70
  # override calculated gallery height
71
+
58
72
  # :height => nil,
73
+
59
74
  # Number of columns and lines in a gallery
75
+
60
76
  # :columns => 8,
61
77
  # :lines => 2,
78
+
62
79
  # vertical/horizontal padding/margin around each thumbnails
80
+
63
81
  # :vpadding => 0,
64
82
  # :hpadding => 0,
65
83
  # :vmargin => 1,
66
84
  # :hmargin => 1,
85
+
67
86
  # border around thumbnails
87
+
68
88
  # :border_thickness => 2
69
89
  },
70
90
 
@@ -74,12 +94,19 @@ module Papermill
74
94
  # Needed if you set :aliases_only to true
75
95
 
76
96
  :thumbnail => {
97
+
77
98
  # :width => 100,
78
99
  # :height => 100,
79
100
  # :aspect_ratio => nil,
80
101
  # :style => nil
81
102
  },
82
-
103
+
104
+ # If you plan to use the original images in one place in one specific size, you can pass targetted_geometry,
105
+ # to incitate the user to crop the image himself (double-click on the image when editing) with the right parameters,
106
+ # instead of letting ImageMagick do his magick bluntly at render-time.
107
+
108
+ # :targetted_geometry => nil,
109
+
83
110
  # Options passed on to SWFUpload.
84
111
  # To remove an option when overriding, set it to nil.
85
112
 
@@ -97,24 +124,26 @@ module Papermill
97
124
  # :file_size_limit => "'10 MB'"
98
125
  },
99
126
 
100
- #@@@@@@@@@@@@@@@@@@@ thumbnails style parameters @@@@@@@@@@@@@@@@@@@@@@@
127
+ #@@@@@@@@@@@@@@@@@ thumbnails style parameters @@@@@@@@@@@@@@@@@@@@
101
128
 
102
129
  # You can override all these parameters here, or in your papermill associations definition, or in thumbnail styling hashes.
103
130
 
104
131
  # 1. COPYRIGHT WATERMARKING
105
132
 
106
- # Activate with '©' at the end of your geometry string or pass :copyright => "my_copyright" in alias definition
133
+ # Activate with '©' at the end of your geometry string or pass :copyright => true|"my_copyright" in alias definition or geometry hash
107
134
  # Papermill will use, in that order of priority :
108
135
  # * copyright found in geometry string AFTER the @
109
- # * alternatively :copyright in alias/inline definition hash
136
+ # * alternatively :copyright in alias/definition hash
110
137
  # * asset's copyright column (if found)
111
138
  # * associated :copyright definition in your Assetable association definition
112
- # * below :copyright definition
139
+ # * below's :copyright definition
113
140
 
114
- # Set this definition to nil if you don't want a global copyright string (likely)
115
- # :copyright => "Example Copyright",
141
+ # Set this definition to a default copyright name if you want one (You'll still need to postfix your geometry string with © or pass {:watermark => true} in your alias/geometry hash to use it)
142
+
143
+ # :copyright => nil,
144
+
145
+ # Textilize, truncate, transform... your copyright before its ImageMagick integration
116
146
 
117
- # Textilize, truncate, transform... your copyright before integration
118
147
  # :copyright_text_transform => Proc.new {|c| c },
119
148
 
120
149
  # Watermark ImageMagick command string.
@@ -122,7 +151,7 @@ module Papermill
122
151
  # * DO NOT change the background color!, change the bordercolor instead. (because background color adds to bordercolor I set it to totally transparent)
123
152
  # * for both fill (=foreground color) and bordercolor (=background color), the last two octals control alpha (transparency). FF is opaque, 00 is transparent.
124
153
  # * remove -bordercolor if you don't want any background
125
- # * +antialias to REMOVE antialiasing
154
+ # * add +antialias to REMOVE antialiasing (after '-font Arial-Bold', for example)
126
155
  # * font-size is pointsize
127
156
  # * type 'identify -list font' to get a list of the fonts you can use (ImageMagick will default to Arial/Times if it can't find it)
128
157
  # * use -gravity and -geometry for positionning, -geometry +x+y is relative to -gravity's corner/zone
@@ -137,21 +166,29 @@ module Papermill
137
166
  # If you pass an image_path to :watermark, it will override below :
138
167
 
139
168
  # you can use a relative path from your public directory (see :public_root), a complete path, or an URI
169
+
140
170
  # :watermark => "/images/rails.png",
141
171
 
142
172
  # default :watermarking command for image_magick. %s gets interpolated with above image path.
173
+
143
174
  # :watermark_im_command => %{- | composite \\( %s -resize 100% \\) - -dissolve 20% -gravity center -geometry +0+0 },
144
175
 
145
- #@@@@@@@@@@@@@@@@@@@@ Application-wide parameters @@@@@@@@@@@@@@@@@@@@@@@@@
146
-
176
+
177
+
178
+ #@@@@@@@@@@@@@@@@@ Application-wide parameters @@@@@@@@@@@@@@@@@@@@
179
+
147
180
  # Default named_scope name for catch-all :papermill declaration
181
+
148
182
  # :base_association_name => :assets,
149
183
 
150
- # Set to true to require aliases in all url/path
184
+ # Set to true to require aliases in all url/path, disabling the
151
185
  # Don't forget to give an alias value to options[:thumbnail][:style] if true!
186
+
152
187
  # :alias_only => false,
153
188
 
154
189
  # Needed if :alias_only
190
+ # Aliases are available application wide for all your assets. You can pass them instead of a geometry_string or a geometry hash
191
+
155
192
  :aliases => {
156
193
  # :mini_crop => "100x100#",
157
194
  # :cant_touch_this => {
@@ -165,9 +202,11 @@ module Papermill
165
202
  # e.g. if you want to protect access to non-copyrighted original files,
166
203
  # or don't want users to browse images by guessing the sequence of ids,
167
204
  # an encrypted hash can be generated for each geometry string/alias and added to path/url.
205
+ # Use your imagination for :url_key_generator, really.
168
206
  # Please note that all previous assets paths will be lost if you add/remove or change the :url_key generation.
207
+
169
208
  # :use_url_key => false,
170
- # :url_key_salt => "change-me-to-your-favorite-pet-name",
209
+ # :url_key_salt => "change-me-to-your-favorite-pet's-name",
171
210
  # :url_key_generator => Proc.new { |style, asset| Digest::SHA512.hexdigest("#{style}#{asset.id}#{Papermill::options[:url_key_salt]}")[0..10] },
172
211
 
173
212
  # added before path/url. Your front webserver will need to be able to find your assets
@@ -12,6 +12,7 @@ module Papermill
12
12
  {:copyright => {:type => "string"}},
13
13
  {:description => {:type => "text" }}
14
14
  ],
15
+ :targetted_geometry => nil,
15
16
  :gallery => {
16
17
  :width => nil,
17
18
  :height => nil,
@@ -42,7 +43,7 @@ module Papermill
42
43
  :prevent_swf_caching => true,
43
44
  :file_size_limit => "'10 MB'"
44
45
  },
45
- :copyright => "Example Copyright",
46
+ :copyright => nil,
46
47
  :copyright_text_transform => Proc.new {|c| c },
47
48
  :copyright_im_command => %{\\( -font Arial-Bold -pointsize 9 -fill '#FFFFFFE0' -border 3 -bordercolor '#50550080' -background '#00000000' label:' %s ' \\) -gravity South-West -geometry +0+0 -composite},
48
49
  :watermark => "/images/rails.png",
@@ -13,8 +13,16 @@ module Paperclip
13
13
  # copyright extraction
14
14
  if options[:geometry] =~ /©/ || options[:copyright]
15
15
  options[:geometry], *@copyright = options[:geometry].split("©", -1)
16
- @copyright = options[:copyright] || @copyright.join("©").nie || file.instance.respond_to?(:copyright) && file.instance.copyright.nie || file.instance.papermill_options[:copyright].nie
17
- @copyright = (options[:copyright_text_transform] || file.instance.papermill_options[:copyright_text_transform]).try(:call, @copyright) || @copyright if @copyright
16
+
17
+ @copyright = (
18
+ (options[:copyright] != true && options[:copyright]) ||
19
+ @copyright.join("©").nie ||
20
+ file.instance.respond_to?(:copyright) && file.instance.copyright.nie ||
21
+ file.instance.papermill_options[:copyright].nie)
22
+
23
+ if @copyright
24
+ @copyright = (options[:copyright_text_transform] || file.instance.papermill_options[:copyright_text_transform]).try(:call, @copyright) || @copyright
25
+ end
18
26
  end
19
27
 
20
28
  # watermark extraction
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: papermill
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Benoit B\xC3\xA9n\xC3\xA9zech"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-19 00:00:00 +01:00
12
+ date: 2010-02-09 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency