papermill 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -2,10 +2,6 @@
2
2
 
3
3
  Asset management made easy.
4
4
 
5
- == News..
6
-
7
- I can't make it work with IE6, there seems to be a jQuery problem. SWFUpload and jQuery should both work fine with it, but anyway, it dies with strange errors that I don't understand. Any help appreciated...
8
-
9
5
  == Install the gems
10
6
 
11
7
  $ gem source -a http://gemcutter.org
@@ -115,8 +111,7 @@ FormTagHelpers
115
111
  With generic papermill association, Papermill generates an #assets(:key, *args) named_scope
116
112
  @article.assets(:illustrations)
117
113
  @article.assets(:illustrations, :order => "created_at DESC")
118
- @article.illustrations.red.first
119
- @article.assets(:illustrations, :order => "created_at DESC").red.first
114
+ @article.assets(:illustrations).red.first
120
115
  # etc.
121
116
 
122
117
  With declarative papermill associations, Papermill generates an #<association_key>(*args) named_scope
data/TODO.txt CHANGED
@@ -1,3 +1,4 @@
1
1
  Edit views :
2
2
  * use Jcrop
3
3
  * try Picnic API
4
+ * trad errors
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.3
1
+ 1.0.4
@@ -27,11 +27,8 @@ class PapermillController < ApplicationController
27
27
 
28
28
  def update
29
29
  render :update do |page|
30
- if @asset.update_attributes(params[:papermill_asset])
31
- page << %{ notify("#{ escape_javascript t("papermill.updated", :ressource => @asset.name)}", "notice") }
32
- else
33
- page << %{ notify("#{ escape_javascript @asset.errors.full_messages.to_sentence }", "warning") }
34
- end
30
+ @asset.update_attributes(params[:papermill_asset])
31
+ page << %{ notify("#{ escape_javascript t("papermill.updated", :ressource => @asset.name)}", "notice") }
35
32
  end
36
33
  end
37
34
 
@@ -41,11 +38,8 @@ class PapermillController < ApplicationController
41
38
 
42
39
  def create
43
40
  @asset = params[:asset_class].constantize.new(params.reject{|k, v| !(PapermillAsset.columns.map(&:name)+["Filedata", "Filename"]).include?(k)})
44
- if @asset.save(:unique => !params[:gallery])
45
- render :partial => "papermill/asset", :object => @asset, :locals => {:gallery => params[:gallery], :thumbnail_style => params[:thumbnail_style]}
46
- else
47
- render :text => @asset.errors.full_messages.join('<br />'), :status => 500
48
- end
41
+ @asset.save(:unique => !params[:gallery])
42
+ render :partial => "papermill/asset", :object => @asset, :locals => {:gallery => params[:gallery], :thumbnail_style => params[:thumbnail_style]}
49
43
  end
50
44
 
51
45
  def sort
@@ -58,11 +52,8 @@ class PapermillController < ApplicationController
58
52
  def mass_delete
59
53
  render :update do |page|
60
54
  @assets.each do |asset|
61
- if asset.destroy
62
- page << "jQuery('#papermill_asset_#{asset.id}').remove()"
63
- else
64
- page << %{ notify('#{ escape_javascript t("papermill.not-deleted", :ressource => asset.name)}', 'error') }
65
- end
55
+ asset.destroy
56
+ page << "jQuery('#papermill_asset_#{asset.id}').remove()"
66
57
  end
67
58
  end
68
59
  end
@@ -11,8 +11,7 @@ en:
11
11
  delete-confirmation: "Delete '{{resource}}'?"
12
12
  SWFUPLOAD_PENDING: "Pending..."
13
13
  SWFUPLOAD_LOADING: "Loading..."
14
- SWFUPLOAD_ERROR: "File is too big, of unauthorized type, or an error occured on the server."
15
- file_type: "{{type.capitalize}} file"
14
+ file_type: "{{type}} file"
16
15
  name: "Name"
17
16
  content_type: "Content-type"
18
17
  size: "File size"
@@ -44,7 +43,6 @@ fr:
44
43
  delete-confirmation: "Êtes-vous sûr de vouloir supprimer '{{resource}}' ?"
45
44
  SWFUPLOAD_PENDING: "En attente..."
46
45
  SWFUPLOAD_LOADING: "Chargement..."
47
- SWFUPLOAD_ERROR: "Fichier trop gros, type de fichier non autorisé ou erreur serveur."
48
46
  file_type: "Fichier {{type}}"
49
47
  name: "Nom"
50
48
  content_type: "Content-type"
@@ -36,30 +36,18 @@ END
36
36
 
37
37
  file "app/views/articles/_form.html.erb", <<-END
38
38
  <% form_for(@article) do |f| %>
39
- <%= f.error_messages %>
40
- <p>
41
- <%= f.label :title %><br />
42
- <%= f.text_field :title %>
43
- </p>
44
- <p>
45
- <%= f.label :image_gallery %><br />
46
- <%= f.images_upload(:image_gallery) %>
47
- </p>
48
- <p>
49
- <%= f.label :my_other_image %><br />
50
- <%= f.image_upload(:my_other_image) %>
51
- </p>
52
- <p>
53
- <%= f.label :my_assets %><br />
54
- <%= f.assets_upload(:my_assets) %>
55
- </p>
56
- <p>
57
- <%= f.label :my_other_asset %><br />
58
- <%= f.asset_upload(:my_other_asset) %>
59
- </p>
60
- <p>
61
- <%= f.submit 'Send' %>
62
- </p>
39
+ <%= f.error_messages %><br /><br />
40
+ <%= f.label :title %><br />
41
+ <%= f.text_field :title %><br /><br />
42
+ <%= f.label :image_gallery %><br />
43
+ <%= f.images_upload(:image_gallery) %><br /><br />
44
+ <%= f.label :my_other_image %><br />
45
+ <%= f.image_upload(:my_other_image) %> <br /><br />
46
+ <%= f.label :my_assets %><br />
47
+ <%= f.assets_upload(:my_assets) %><br /><br />
48
+ <%= f.label :my_other_asset %><br />
49
+ <%= f.asset_upload(:my_other_asset) %><br /><br />
50
+ <%= f.submit 'Send' %>
63
51
  <% end %>
64
52
  END
65
53
 
@@ -115,8 +103,8 @@ file "app/views/layouts/application.html.erb", <<-END
115
103
  </head>
116
104
  <body>
117
105
  <%= yield %>
118
- </body>
119
106
  <%= papermill_javascript_tag :with_jquery => true %>
107
+ </body>
120
108
  </html>
121
109
  END
122
110
 
@@ -42,8 +42,8 @@ module ActionView::Helpers::FormTagHelper
42
42
 
43
43
  assetable = options[:assetable] || @template.instance_variable_get("@#{@object_name}")
44
44
  options = (
45
- if assetable && (association = (assetable.class.papermill_associations[key] || assetable.class.papermill_associations[Papermill::options[:base_association_name]]))
46
- association[:options].deep_merge(options)
45
+ if assetable && (association = (assetable.class.papermill_associations[key.to_sym] || assetable.class.papermill_associations[Papermill::options[:base_association_name]]))
46
+ association.deep_merge(options)
47
47
  elsif assetable.nil?
48
48
  Papermill::options.deep_merge(options)
49
49
  else
@@ -83,12 +83,12 @@ module ActionView::Helpers::FormTagHelper
83
83
  end
84
84
  end
85
85
  end
86
-
86
+
87
87
  url_options = {
88
88
  :escape => false,
89
89
  :controller => "/papermill",
90
90
  :action => "create",
91
- :asset_class => (options[:class_name] && options[:class_name].to_s.constantize || association && association[:class] || PapermillAsset).to_s,
91
+ :asset_class => (options[:class_name] || PapermillAsset).to_s,
92
92
  :gallery => !!options[:gallery],
93
93
  :thumbnail_style => options[:thumbnail] && options[:thumbnail][:style]
94
94
  }
@@ -152,6 +152,7 @@ module ActionView::Helpers::FormTagHelper
152
152
  file_dialog_complete_handler: Upload.file_dialog_complete,
153
153
  upload_start_handler: Upload.upload_start,
154
154
  upload_progress_handler: Upload.upload_progress,
155
+ file_queue_error_handler: Upload.file_queue_error,
155
156
  upload_error_handler: Upload.upload_error,
156
157
  upload_success_handler: Upload.upload_success,
157
158
  upload_complete_handler: Upload.upload_complete,
@@ -14,13 +14,10 @@ module Papermill
14
14
  attr_reader :papermill_associations
15
15
 
16
16
  def papermill(*args)
17
- assoc_name = (!args.first.is_a?(Hash) && args.shift.try(:to_sym) || Papermill::options[:base_association_name])
18
- options = args.first || {}
19
-
20
- (@papermill_associations ||= {}).merge!({ assoc_name => {
21
- :class => (class_name = options.delete(:class_name)) && class_name.to_s.constantize || PapermillAsset,
22
- :options => Papermill::options.deep_merge(options)
23
- }})
17
+ assoc_name = (!args.first.is_a?(Hash) && args.shift || Papermill::options[:base_association_name]).to_sym
18
+ local_options = args.first || {}
19
+
20
+ (@papermill_associations ||= {}).merge!( assoc_name => Papermill::options.deep_merge(local_options) )
24
21
 
25
22
  include Papermill::InstanceMethods
26
23
  before_destroy :destroy_assets
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module PapermillHelper
2
4
 
3
5
  # Sets all the javascript needed for papermill.
@@ -13,7 +15,7 @@ module PapermillHelper
13
15
  html << %{<script type="text/javascript">jQuery.noConflict();</script>} if options[:with_jquery] == "no_conflict"
14
16
  end
15
17
  html << %{<script type="text/javascript">}
16
- ["SWFUPLOAD_PENDING", "SWFUPLOAD_LOADING", "SWFUPLOAD_ERROR"].each do |js_constant|
18
+ ["SWFUPLOAD_PENDING", "SWFUPLOAD_LOADING"].each do |js_constant|
17
19
  html << %{var #{js_constant} = "#{t("papermill.#{js_constant}")}";}
18
20
  end
19
21
  html << %{</script>}
@@ -96,7 +96,7 @@ module Papermill
96
96
  :button_text_left_padding => 4,
97
97
  :debug => false,
98
98
  :prevent_swf_caching => true,
99
- :file_size_limit_mb => 10.megabytes
99
+ :file_size_limit => "10 MB"
100
100
  },
101
101
 
102
102
  # APPLICATION WIDE PARAMETERS
@@ -79,7 +79,7 @@ var Upload = {
79
79
  global_index++;
80
80
  } while (file != null);
81
81
  this.sorted_queue = file_queue.sort(function(a,b){
82
- if(b.name < a.name){return (1)}
82
+ if(b.name < a.name){ return (1) } else { return (-1) }
83
83
  })
84
84
  var self = this;
85
85
  jQuery(this.sorted_queue).each( function(index, file) {
@@ -107,11 +107,20 @@ var Upload = {
107
107
  percent = Math.ceil((bytes / total) * 100);
108
108
  jQuery('#' + file.id + ' .progress span').width(percent + '%');
109
109
  },
110
- upload_error: function(file, code, message)
111
- {
112
- notify(SWFUPLOAD_ERROR + " " + file.name + " (" + message + " [" + code + "])", "error");
113
- jQuery('#' + file.id).remove();
114
- },
110
+ upload_error: function(file, errorCode, message) {
111
+ try {
112
+ switch (errorCode) {
113
+ case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
114
+ notify("Too many files selected", "error");
115
+ return;
116
+ default:
117
+ notify("An error occurred while sending the file" + errorCode, "error");
118
+ return;
119
+ }
120
+ } catch (ex) {
121
+ }
122
+ },
123
+
115
124
  upload_success: function(file, data)
116
125
  {
117
126
  if(jQuery(data).length == 0) {
@@ -128,8 +137,28 @@ var Upload = {
128
137
  this.startUpload(this.sorted_queue[this.index++].id)
129
138
  }
130
139
  },
131
- file_queue_error: function(file, error_code, message) {
132
- upload_error(file, error_code, message)
140
+
141
+ file_queue_error: function(file, errorCode, message) {
142
+ try {
143
+ switch (errorCode) {
144
+ case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
145
+ notify("Too many files selected", "error");
146
+ return;
147
+ case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
148
+ notify("File is too big", "error");
149
+ return;
150
+ case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
151
+ notify("File is empty. Please select another file", "error");
152
+ return;
153
+ case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
154
+ notify("File is not an allowed file type", "error");
155
+ return;
156
+ default:
157
+ notify("An error occurred while sending the file" + errorCode, "error");
158
+ return;
159
+ }
160
+ } catch (e) {
161
+ }
133
162
  }
134
163
  }
135
164
 
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.0.3
4
+ version: 1.0.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: 2009-11-16 00:00:00 +01:00
12
+ date: 2009-11-18 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency