papermill 1.3.6 → 1.4.0
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 +225 -82
- data/TODO.txt +0 -6
- data/VERSION +1 -1
- data/app/controllers/papermill_controller.rb +5 -4
- data/generators/papermill_initializer/papermill_initializer.rb +2 -3
- data/lib/papermill/papermill_helper.rb +13 -15
- data/lib/papermill/papermill_options.rb +1 -1
- data/public/.DS_Store +0 -0
- data/public/{papermill → Jcrop}/images/Jcrop.gif +0 -0
- data/public/{papermill → Jcrop}/jquery.Jcrop.css +1 -1
- data/public/Jcrop/jquery.Jcrop.js +1197 -0
- data/public/{papermill → Jcrop}/jquery.Jcrop.min.js +0 -0
- data/public/jgrowl/jquery.jgrowl.css +18 -14
- data/public/jgrowl/jquery.jgrowl.js +314 -0
- data/public/jgrowl/jquery.jgrowl_minimized.js +9 -4
- data/public/papermill/papermill.css +0 -11
- data/public/{papermill → swfupload}/swfupload.js +0 -0
- data/public/{papermill → swfupload}/swfupload.swf +0 -0
- metadata +8 -8
- data/public/papermill/jquery-1.3.2.min.js +0 -19
- data/public/papermill/jquery-ui-1.7.2.custom.min.js +0 -34
data/README.rdoc
CHANGED
@@ -29,91 +29,266 @@ Check your audience.
|
|
29
29
|
|
30
30
|
=== Server requirements:
|
31
31
|
|
32
|
-
*
|
33
|
-
*
|
34
|
-
*
|
35
|
-
*
|
36
|
-
|
37
|
-
== Features
|
32
|
+
* Rails 2.3.4
|
33
|
+
* Paperclip 2.3
|
34
|
+
* Front web server serving static assets if present, and forwarding demand to rails if not. Any classic installation will do that by default.
|
35
|
+
* NOT compatible with Heroku/S3
|
38
36
|
|
39
|
-
|
37
|
+
== Installation
|
40
38
|
|
41
|
-
|
39
|
+
=== Once gem is installed
|
42
40
|
|
43
|
-
|
44
|
-
|
45
|
-
* asset_upload => one asset
|
46
|
-
* assets_upload => sortable asset list
|
41
|
+
Generate the migration
|
42
|
+
./script/generate papermill_table PapermillMigration
|
47
43
|
|
48
|
-
|
44
|
+
Edit it and migrate
|
45
|
+
rake db:migrate
|
49
46
|
|
50
|
-
|
47
|
+
Copy static assets to your public directory
|
48
|
+
./script/generate papermill_assets
|
49
|
+
|
50
|
+
Create the option file config/initializers/papermill.rb
|
51
|
+
./script/generate papermill_initializer
|
52
|
+
|
53
|
+
Go have a look at config/initializers/papermill.rb
|
51
54
|
|
52
|
-
===
|
55
|
+
=== In environment.rb
|
53
56
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
+
...
|
58
|
+
Rails::Initializer.run do |config|
|
59
|
+
...
|
60
|
+
config.gem papermill
|
61
|
+
end
|
62
|
+
|
63
|
+
=== In your layout
|
64
|
+
|
65
|
+
|
66
|
+
==== Quick version
|
67
|
+
|
68
|
+
Inside <head></head>
|
69
|
+
<%= papermill_stylesheet_tag %>
|
70
|
+
|
71
|
+
Before </body> (best practice for javascript loading)
|
72
|
+
<%= papermill_javascript_tag :with_jquery => "no_conflict" %>
|
73
|
+
|
74
|
+
You don't need :with_jquery if load it by yourself. Pass "no_conflict" if you use the default Prototype library, or some other '$' library (mootools..)
|
75
|
+
|
76
|
+
==== In a real-world production application, you could use something like this, and adapt it to your own needs
|
57
77
|
|
58
|
-
|
78
|
+
Inside <head></head>
|
79
|
+
<% unless @content_for_papermill_inline_js.blank? %>
|
80
|
+
<%= javascript_include_tag "/facebox/facebox.js", "/jgrowl/jquery.jgrowl_minimized.js", "/papermill/jquery.Jcrop.min.js", "/swfupload/swfupload.js", "/papermill/papermill.js", :cache => "papermill" %>
|
81
|
+
<script type="text/javascript">
|
82
|
+
jQuery(document).ready(function() {
|
83
|
+
<%= yield :content_for_papermill_inline_js %>
|
84
|
+
}
|
85
|
+
</script>
|
86
|
+
<% end %>
|
59
87
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
88
|
+
Before </body>
|
89
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
|
90
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script>
|
91
|
+
<% unless @content_for_papermill_inline_js.blank? %>
|
92
|
+
<%= stylesheet_link_tag("/facebox/facebox.css", "/jgrowl/jquery.jgrowl.css", "/Jcrop/jquery.Jcrop.css", "/papermill/papermill.css", :cache => "papermill") %>
|
93
|
+
<style type="text/css">
|
94
|
+
<%= yield :papermill_inline_css %>
|
95
|
+
</style>
|
96
|
+
<script type="text/javascript">
|
97
|
+
var SWFUPLOAD_PENDING = "Waiting...";
|
98
|
+
var SWFUPLOAD_LOADING = "Loading...";
|
99
|
+
</script>
|
100
|
+
<% end %>
|
64
101
|
|
65
|
-
|
102
|
+
== Security
|
103
|
+
|
104
|
+
=== URL-hacking
|
105
|
+
|
106
|
+
Maybe you don't want users to use your application as a thumbnailing farm for their own uploaded images, or you have protected members areas and you don't want users to 'browse' others members file.
|
107
|
+
|
108
|
+
* Brute solution: pass :use_url_key to true in the options (config/initializers/papermill.rb). A crypted hash unique to your application and to each asset and to the requested style will be added to the URL. No more happy-guessing of anything. Do that first before going live, or you'll have to migrate all assets...
|
109
|
+
* pass :alias_only to true. This will disable the possibility to generate thumbnails with a papermill string in the url, but won't do anything for the member area thing. Plus you will have to use aliases only, form helpers included (pass :thumbnail => { :style => :some_alias })
|
110
|
+
|
111
|
+
=== Restricted-area/back-office
|
112
|
+
|
113
|
+
Go to the options and look for :
|
114
|
+
:authorize_create => true,
|
115
|
+
:authorize_update_and_destroy => true,
|
116
|
+
:authorize_multiple_modification => true,
|
117
|
+
|
118
|
+
You will find a quick & dirty solution to pass your authorizations rules in before_filters, before any asset gets hurt.
|
119
|
+
|
120
|
+
== Usage
|
121
|
+
|
122
|
+
Assetable is the class that has_many papermill_assets (i.e. the class with the papermill declaration)
|
123
|
+
|
124
|
+
=== Assetable declaration
|
66
125
|
|
67
126
|
You can have a generic association and as many declarative associations as you want in your model. Papermill will always use specific if found.
|
68
127
|
|
69
128
|
article.rb
|
70
129
|
|
71
130
|
class Article < ActiveRecord::Base
|
72
|
-
papermill :class_name => ColorAsset, other_options..
|
131
|
+
papermill :class_name => ColorAsset, other_options.. # generic, will use ColorAsset instead of PapermillAsset (ColorAsset must be an STIed PapermillAsset)
|
73
132
|
end
|
74
133
|
|
75
134
|
entry.rb
|
76
135
|
|
77
136
|
class Entry < ActiveRecord::Base
|
78
|
-
papermill :mug_shot, other_options..
|
79
|
-
papermill :diaporama, :class_name => ColorAsset, other_options..
|
137
|
+
papermill :mug_shot, other_options.. # specific association on :mug_shot
|
138
|
+
papermill :diaporama, :class_name => ColorAsset, other_options.. # specific association on :diaporama will use ColorAssets
|
80
139
|
end
|
81
140
|
|
82
|
-
color_asset.rb # You
|
141
|
+
color_asset.rb # You can add columns to papermill_assets and use STI on PapermillAsset to extend defaults abilities (or re-open PapermillAsset/monkey-patch it/use a polymorphic association on PapermillAsset to extend it with behaviors..)
|
83
142
|
|
84
143
|
class ColorAsset < PapermillAsset
|
85
144
|
named_scope :red, :conditions => {:color => 'red'}
|
86
145
|
end
|
87
146
|
|
88
147
|
=== Form helpers
|
148
|
+
|
149
|
+
Example form:
|
150
|
+
|
151
|
+
form_for @assetable do
|
152
|
+
# I need a simple asset upload field :
|
153
|
+
f.asset_upload :pdf_version
|
154
|
+
|
155
|
+
# Now I need to be able to upload as many documents as I need, and sort them at will
|
156
|
+
# no document should be bigger than 1MB (respect the quoting!)
|
157
|
+
# and I don't want any dashboard mass_edit feature, just mass_delete (delete all)
|
158
|
+
f.assets_upload :documentation, :swfupload => { :file_size_limit => "'1 MB'" }, :dashboard => [:mass_delete]
|
159
|
+
|
160
|
+
# I need to display *one* cover *image*, format will be 200x200
|
161
|
+
# targetted_size will give the uploader hints when cropping the image after upload : desired display size and wanted aspect-ratio.
|
162
|
+
# Better than cropping automatically in the center if the character's head is in the upper-left corner..
|
163
|
+
# :thumbnail => { :width & :height } set the dimensions of the preview thumbnail
|
164
|
+
# And finally, I need a 200x200# crop for preview, not the default 200x200> that would be generated by default ("#{:width}x#{:heigth}>")
|
165
|
+
f.image_upload :cover_image, :targetted_size => "200x200", :thumbnail => { :width => 200, :height => 200, :style => "200x200#" }
|
166
|
+
|
167
|
+
# Now the image gallery, sortable.
|
168
|
+
# I use :gallery => { :lines & :columns } to give the number of lines/columns,
|
169
|
+
# and some CSS will be generated to size the gallery perfectly,
|
170
|
+
# according to the thumb size inside the gallery and their padding/margin/border sizes.
|
171
|
+
# the number of lines will increase if needed when uploading
|
172
|
+
f.images_upload :illustrations, {
|
173
|
+
:thumbnail => {
|
174
|
+
:width => 100,
|
175
|
+
:height => 70
|
176
|
+
},
|
177
|
+
:gallery => {
|
178
|
+
:columns => 8, # number of columns
|
179
|
+
:lines => 2, # number of lines
|
180
|
+
:vpadding => 2, # vertical padding around each thumb
|
181
|
+
:hpadding => 2, # horizontal one
|
182
|
+
:vmargin => 3, # vertical margin
|
183
|
+
:hmargin => 1, # horizontal one
|
184
|
+
:border_thickness => 2 # border size around each thumb
|
185
|
+
}
|
186
|
+
}
|
187
|
+
end
|
188
|
+
|
189
|
+
With Formtastic, pass
|
190
|
+
|
191
|
+
:as => (:image_upload | :images_upload | :asset_upload | :assets_upload)
|
192
|
+
And add your options as you would with the normal helpers.
|
89
193
|
|
90
|
-
|
194
|
+
With FormTagHelpers, use (image_upload_tag | images_upload_tag | asset_upload_tag | assets_upload_tag) @assetable, :key, options
|
195
|
+
|
196
|
+
image_upload_tag @article, :cover_image, :targetted_size => "200x200"
|
197
|
+
|
198
|
+
For resources not linked to any assetable model, you can use upload_tags without any Assetable
|
199
|
+
|
200
|
+
image_upload_tag "#{current_organization.name}_logo", :targetted_size => "200x200"
|
201
|
+
|
202
|
+
=== Asset editing
|
203
|
+
|
204
|
+
* double-click on any uploaded asset in any form-helper to access & edit his properties
|
205
|
+
* then double-click image to crop it if it's an image. You'll then access a Jcrop window. Pass :targetted_size => "widthxheigth" to lock aspect-ratio and default the selection size to widthxheigth.
|
206
|
+
|
207
|
+
=== Thumbnails
|
91
208
|
|
92
|
-
form_for @article do
|
93
|
-
f.image_upload :cover_image, options_hash
|
94
|
-
f.images_upload :illustrations, options_hash
|
95
|
-
f.asset_upload :pdf, options_hash
|
96
|
-
f.image_upload :other_resources, options_hash
|
97
|
-
end
|
98
209
|
|
99
|
-
|
210
|
+
==== On-the-fly request time processing:
|
100
211
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
212
|
+
PapermillAsset#url(papermill string (see 1.)) # path and url behave the same way
|
213
|
+
PapermillAsset#url(papermill alias (see 2.))
|
214
|
+
|
215
|
+
Pros: fast. Nothing done upon page rendering. If asset isn't found by Apache/NGinx, then request is passed to rails, which will create it, once.
|
216
|
+
|
217
|
+
Cons: need to setup an alias in the options if you want to define use a hash instead of a papermill string (for custom watermark)
|
218
|
+
|
219
|
+
==== Render time processing:
|
220
|
+
|
221
|
+
PapermillAsset#url!(papermill string (see 1.)) # path! and url! behave the same way
|
222
|
+
PapermillAsset#url!(papermill alias (see 2.))
|
223
|
+
PapermillAsset#url!(papermill hash (see 3.))
|
224
|
+
|
225
|
+
Pros: can use a hash directly in the url call.
|
226
|
+
|
227
|
+
Cons: needs a thumbnail presence check at each render.
|
228
|
+
|
229
|
+
==== 1. Papermill String
|
230
|
+
|
231
|
+
Consist of:
|
232
|
+
|
233
|
+
* an ImageMagick geometry string (ex: "100x100>", "original", "100x#", etc.)
|
234
|
+
* an optional watermark (-wm) flag # will use option[:watemark] for URI
|
235
|
+
* an optional copyright (©) flag # will use copyright text after the "©" or options[:copyright]
|
236
|
+
|
237
|
+
Examples:
|
107
238
|
|
108
|
-
|
239
|
+
image_tag @article.covers.first.url("100x100")
|
240
|
+
image_tag @article.covers.first.url("original©")
|
241
|
+
image_tag @article.covers.first.url("100x100#-wm©")
|
242
|
+
image_tag @article.covers.first.url("100x200#©papermill")
|
109
243
|
|
110
|
-
|
111
|
-
images_upload_tag @article, :illustrations, options_hash
|
112
|
-
asset_upload_tag @article, :pdf, options_hash
|
113
|
-
image_upload_tag @article, :other_resources, options_hash
|
244
|
+
==== 2. Papermill Alias
|
114
245
|
|
115
|
-
|
116
|
-
|
246
|
+
Those are application-wide, set them in the options
|
247
|
+
|
248
|
+
Consist of:
|
249
|
+
|
250
|
+
:geometry => "ImageMagick-geometry-string"
|
251
|
+
:copyright => true | "copyright" # If true, the asset copyright field will be used. Edit the asset.
|
252
|
+
:watermark => URI | true # If true, will use options[:watemark]
|
253
|
+
|
254
|
+
Examples:
|
255
|
+
|
256
|
+
#config/initilializers/papermill.rb
|
257
|
+
|
258
|
+
# snip
|
259
|
+
:aliases => {
|
260
|
+
:thumb_copyrighted => {
|
261
|
+
:geometry => "100x100",
|
262
|
+
:copyright => "papermill",
|
263
|
+
},
|
264
|
+
:thumb_copyrighted_dynamically => {
|
265
|
+
:geometry => "100x100",
|
266
|
+
:copyright => true
|
267
|
+
},
|
268
|
+
:thumb_watermarked_with_rails => {
|
269
|
+
:width => "100",
|
270
|
+
:height => "100",
|
271
|
+
:watermark => "/images/rails.png"
|
272
|
+
}
|
273
|
+
}
|
274
|
+
|
275
|
+
Then in your views, simply do
|
276
|
+
|
277
|
+
image_tag @article.covers.first.url(:thumb_copyrighted)
|
278
|
+
|
279
|
+
==== 3. Papermill Hash
|
280
|
+
|
281
|
+
Same as aliases, but defined directly in #url!()
|
282
|
+
Plus you can add a :name that will be used for style-name (defaults to a md5 of the hash)
|
283
|
+
|
284
|
+
Example:
|
285
|
+
|
286
|
+
image_tag @article.covers.first.url(
|
287
|
+
:geometry => "100x100",
|
288
|
+
:watermark => "/images/rails.png",
|
289
|
+
:copyright => "papermill",
|
290
|
+
:name => "thumbnail_watermarked_and_copyrighted"
|
291
|
+
)
|
117
292
|
|
118
293
|
=== Resource access
|
119
294
|
|
@@ -148,41 +323,9 @@ Or for non-assetable resources :
|
|
148
323
|
@asset.path("100x>")
|
149
324
|
# etc.
|
150
325
|
|
151
|
-
== Installation
|
152
|
-
|
153
|
-
=== Once gem is installed :
|
154
|
-
|
155
|
-
Generate the migration :
|
156
|
-
./script/generate papermill_table PapermillMigration
|
157
|
-
|
158
|
-
Edit its fields and migrate :
|
159
|
-
rake db:migrate
|
160
|
-
|
161
|
-
Copy static assets to your public directory:
|
162
|
-
./script/generate papermill_assets
|
163
|
-
|
164
|
-
Create the option file config/initializers/papermill.rb
|
165
|
-
./script/generate papermill_initializer
|
166
|
-
|
167
|
-
Go have a look to config/initializers/papermill.rb, lots of info there.
|
168
|
-
|
169
|
-
=== environment.rb:
|
170
|
-
|
171
|
-
...
|
172
|
-
Rails::Initializer.run do |config|
|
173
|
-
...
|
174
|
-
config.gem papermill
|
175
|
-
end
|
176
|
-
|
177
|
-
=== In your layout:
|
178
|
-
|
179
|
-
<%= papermill_stylesheet_tag %>
|
180
|
-
<%= papermill_javascript_tag :with_jquery => "no_conflict" %>
|
181
|
-
# you don't need :with_jquery if you already had it loaded.
|
182
|
-
|
183
326
|
=== Translations:
|
184
327
|
|
185
|
-
Papermill is fully I18n-able
|
328
|
+
Papermill is fully I18n-able.
|
186
329
|
Copy config/locales/papermill.yml to your root config/locale folder to modify any wording in a any locale.
|
187
330
|
|
188
331
|
Copyright (c) 2009 Benoit Bénézech, released under the MIT license
|
data/TODO.txt
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0
|
@@ -36,14 +36,15 @@ class PapermillController < ApplicationController
|
|
36
36
|
@asset = params[:asset_class].constantize.new(params.reject{|k, v| !(PapermillAsset.columns.map(&:name)+["Filedata", "Filename"]).include?(k)})
|
37
37
|
if @asset.save
|
38
38
|
@old_asset.destroy if @old_asset
|
39
|
+
output = render_to_string(:partial => "papermill/asset", :object => @asset, :locals => { :gallery => params[:gallery], :thumbnail_style => params[:thumbnail_style], :targetted_geometry => params[:targetted_geometry] })
|
39
40
|
render :update do |page|
|
40
|
-
page
|
41
|
-
page
|
41
|
+
page << %{ jQuery('##{params[:Fileid]}').replaceWith('#{escape_javascript output}'); }
|
42
|
+
page << %{ jQuery('#papermill_asset_#{@old_asset.id}').remove() } if @old_asset
|
42
43
|
end
|
43
44
|
else
|
44
45
|
page << %{ notify("#{@asset.name}", @asset.errors.full_messages.join('<br />'), "error"); }
|
45
|
-
page
|
46
|
-
page
|
46
|
+
page << %{ jQuery('##{params[:Fileid]}').remove() }
|
47
|
+
page << %{ jQuery('#papermill_asset_#{@old_asset.id}').show() } if @old_asset
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
@@ -111,7 +111,7 @@ module Papermill
|
|
111
111
|
# To remove an option when overriding, set it to nil.
|
112
112
|
|
113
113
|
:swfupload => {
|
114
|
-
# :flash_url => "'/
|
114
|
+
# :flash_url => "'/swfupload/swfupload.swf'",
|
115
115
|
# :button_image_url => "'/papermill/images/upload-blank.png'",
|
116
116
|
# :button_width => 61,
|
117
117
|
# :button_height => 22,
|
@@ -230,8 +230,7 @@ module Papermill
|
|
230
230
|
# :authorize_update_and_destroy => "true",
|
231
231
|
|
232
232
|
# For example, this is my own setup.
|
233
|
-
#
|
234
|
-
# adapt the authorization part (can_edit(Assetable)) to your own needs :
|
233
|
+
# adapt the authorization part (can_edit(Assetable)) to your own authorization solution
|
235
234
|
|
236
235
|
# :authorize_create => %{
|
237
236
|
# unless @assetable.nil? || current_user.can_edit?(@assetable)
|
@@ -3,27 +3,25 @@
|
|
3
3
|
module PapermillHelper
|
4
4
|
|
5
5
|
# Sets all the javascript needed for papermill.
|
6
|
-
# If jQuery and JQueryUI (with Sortable
|
7
|
-
# If you
|
8
|
-
# If you want to rely on this helper to load jQuery and use
|
9
|
-
|
6
|
+
# If jQuery and JQueryUI (with Sortable) are already loaded, call papermill_javascript_tag
|
7
|
+
# If you use some other JS Framework, call papermill_javascript_tag(:with_jquery => "no_conflict")
|
8
|
+
# If you want to rely on this helper to load jQuery and JQueryUI and use them after, call papermill_javascript_tag(:with_jquery => true)
|
9
|
+
|
10
10
|
def papermill_javascript_tag(options = {})
|
11
11
|
html = []
|
12
|
+
html << %{<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>\
|
13
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script>} if options[:with_jquery]
|
12
14
|
html << %{<script type="text/javascript">}
|
13
|
-
|
15
|
+
["SWFUPLOAD_PENDING", "SWFUPLOAD_LOADING"].each do |js_constant|
|
14
16
|
html << %{var #{escape_javascript js_constant} = "#{t("papermill.#{escape_javascript js_constant}")}";}
|
15
17
|
end
|
18
|
+
html << %{jQuery.noConflict();} if options[:with_jquery].to_s == "no_conflict"
|
16
19
|
html << %{</script>}
|
17
|
-
html << javascript_include_tag(
|
18
|
-
html << %{<script type="text/javascript">jQuery.noConflict();</script>} if options[:with_jquery].to_s == "no_conflict"
|
20
|
+
html << javascript_include_tag("/facebox/facebox.js", "/jgrowl/jquery.jgrowl_minimized.js", "/Jcrop/jquery.Jcrop.min.js", "/swfupload/swfupload.js", "/papermill/papermill.js", :cache => "papermill")
|
19
21
|
unless @content_for_papermill_inline_js.blank?
|
20
|
-
html <<
|
21
|
-
html <<
|
22
|
-
html <<
|
23
|
-
html << @content_for_papermill_inline_js
|
24
|
-
html << '});'
|
25
|
-
html << '//]]>'
|
26
|
-
html << '</script>'
|
22
|
+
html << %{<script type="text/javascript">}
|
23
|
+
html << %{jQuery(document).ready(function() {#{@content_for_papermill_inline_js}});}
|
24
|
+
html << %{</script>}
|
27
25
|
end
|
28
26
|
html.join("\n")
|
29
27
|
end
|
@@ -31,7 +29,7 @@ module PapermillHelper
|
|
31
29
|
# Sets the css tags needed for papermill.
|
32
30
|
def papermill_stylesheet_tag(options = {})
|
33
31
|
html = []
|
34
|
-
html << stylesheet_link_tag("/facebox/facebox.css", "/jgrowl/jquery.jgrowl.css", "/
|
32
|
+
html << stylesheet_link_tag("/facebox/facebox.css", "/jgrowl/jquery.jgrowl.css", "/Jcrop/jquery.Jcrop.css", "/papermill/papermill.css", :cache => "papermill")
|
35
33
|
unless @content_for_papermill_inline_css.blank?
|
36
34
|
html << %{<style type="text/css">}
|
37
35
|
html << @content_for_papermill_inline_css
|
@@ -31,7 +31,7 @@ module Papermill
|
|
31
31
|
:style => nil
|
32
32
|
},
|
33
33
|
:swfupload => {
|
34
|
-
:flash_url => "'/
|
34
|
+
:flash_url => "'/swfupload/swfupload.swf'",
|
35
35
|
:button_image_url => "'/papermill/images/upload-blank.png'",
|
36
36
|
:button_width => 61,
|
37
37
|
:button_height => 22,
|
data/public/.DS_Store
CHANGED
Binary file
|
File without changes
|
@@ -5,7 +5,7 @@
|
|
5
5
|
{
|
6
6
|
font-size: 0;
|
7
7
|
position: absolute;
|
8
|
-
background: white url('images/Jcrop.gif') top left repeat;
|
8
|
+
background: white url('/Jcrop/images/Jcrop.gif') top left repeat;
|
9
9
|
}
|
10
10
|
.jcrop-vline { height: 100%; width: 1px !important; }
|
11
11
|
.jcrop-hline { width: 100%; height: 1px !important; }
|