uploader 2.0.2 → 3.0.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.
Files changed (263) hide show
  1. data/README.rdoc +55 -57
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/app/helpers/uploader_helper.rb +3 -3
  5. data/app/views/uploads/_swf_javascript.html.erb +9 -6
  6. data/app/views/uploads/_swf_upload.html.erb +2 -2
  7. data/app/views/uploads/_uploadify.html.erb +3 -3
  8. data/{locales → config/locales}/ar.yml +0 -0
  9. data/{locales → config/locales}/bg.yml +0 -0
  10. data/{locales → config/locales}/ca.yml +0 -0
  11. data/{locales → config/locales}/cs.yml +0 -0
  12. data/{locales → config/locales}/da.yml +0 -0
  13. data/{locales → config/locales}/de.yml +0 -0
  14. data/{locales → config/locales}/el.yml +0 -0
  15. data/{locales → config/locales}/en.yml +0 -0
  16. data/{locales → config/locales}/es.yml +0 -0
  17. data/{locales → config/locales}/et.yml +0 -0
  18. data/{locales → config/locales}/fa.yml +2 -2
  19. data/{locales → config/locales}/fi.yml +0 -0
  20. data/{locales → config/locales}/fr.yml +0 -0
  21. data/{locales → config/locales}/gl.yml +0 -0
  22. data/{locales → config/locales}/hi.yml +1 -1
  23. data/{locales → config/locales}/hr.yml +0 -0
  24. data/{locales → config/locales}/hu.yml +0 -0
  25. data/{locales → config/locales}/id.yml +1 -1
  26. data/{locales → config/locales}/it.yml +0 -0
  27. data/{locales → config/locales}/iw.yml +0 -0
  28. data/{locales → config/locales}/ja.yml +0 -0
  29. data/{locales → config/locales}/ko.yml +2 -2
  30. data/{locales → config/locales}/lt.yml +0 -0
  31. data/{locales → config/locales}/lv.yml +0 -0
  32. data/{locales → config/locales}/mt.yml +0 -0
  33. data/{locales → config/locales}/nl.yml +0 -0
  34. data/{locales → config/locales}/no.yml +0 -0
  35. data/{locales → config/locales}/pl.yml +0 -0
  36. data/{locales → config/locales}/pt-PT.yml +0 -0
  37. data/{locales → config/locales}/ro.yml +0 -0
  38. data/{locales → config/locales}/ru.yml +0 -0
  39. data/{locales → config/locales}/sk.yml +0 -0
  40. data/{locales → config/locales}/sl.yml +0 -0
  41. data/{locales → config/locales}/sq.yml +0 -0
  42. data/{locales → config/locales}/sr.yml +0 -0
  43. data/{locales → config/locales}/sv.yml +0 -0
  44. data/{locales → config/locales}/th.yml +1 -1
  45. data/{locales → config/locales}/tl.yml +0 -0
  46. data/{locales → config/locales}/tr.yml +0 -0
  47. data/{locales → config/locales}/uk.yml +0 -0
  48. data/{locales → config/locales}/vi.yml +2 -2
  49. data/{locales → config/locales}/zh-CN.yml +0 -0
  50. data/{locales → config/locales}/zh-TW.yml +0 -0
  51. data/{locales → config/locales}/zh.yml +0 -0
  52. data/config/routes.rb +8 -0
  53. data/lib/tasks/uploader.rake +22 -0
  54. data/lib/uploader/config.rb +65 -0
  55. data/lib/uploader/engine.rb +19 -0
  56. data/lib/uploader/models/upload.rb +229 -0
  57. data/lib/uploader.rb +4 -2
  58. data/test/{rails_root → rails_test}/.gitignore +0 -0
  59. data/test/{rails_root → rails_test}/.rake_tasks +0 -0
  60. data/test/rails_test/Gemfile +21 -0
  61. data/{Gemfile.lock → test/rails_test/Gemfile.lock} +21 -1
  62. data/test/rails_test/README +256 -0
  63. data/test/{rails_root → rails_test}/Rakefile +2 -7
  64. data/test/{rails_root → rails_test}/app/controllers/application_controller.rb +0 -0
  65. data/test/rails_test/app/controllers/default_controller.rb +18 -0
  66. data/test/{rails_root → rails_test}/app/controllers/uploads_controller.rb +5 -2
  67. data/test/{rails_root → rails_test}/app/models/.keep +0 -0
  68. data/test/rails_test/app/models/upload.rb +38 -0
  69. data/test/{rails_root → rails_test}/app/models/user.rb +0 -0
  70. data/test/{rails_root → rails_test}/app/views/default/index.html.erb +11 -1
  71. data/test/rails_test/app/views/default/uploadify.html.erb +27 -0
  72. data/test/{rails_root → rails_test}/app/views/layouts/application.html.erb +2 -2
  73. data/test/{rails_root → rails_test}/config/amazon_s3.yml +0 -0
  74. data/test/{rails_root → rails_test}/config/application.rb +6 -12
  75. data/test/rails_test/config/boot.rb +13 -0
  76. data/test/{rails_root → rails_test}/config/database.yml +3 -11
  77. data/test/rails_test/config/environment.rb +5 -0
  78. data/test/rails_test/config/environments/development.rb +26 -0
  79. data/test/rails_test/config/environments/production.rb +49 -0
  80. data/test/rails_test/config/environments/test.rb +35 -0
  81. data/test/{rails_root → rails_test}/config/global_config.yml +0 -0
  82. data/test/{rails_root → rails_test}/config/initializers/backtrace_silencers.rb +0 -0
  83. data/test/{rails_root → rails_test}/config/initializers/inflections.rb +2 -2
  84. data/test/{rails_root → rails_test}/config/initializers/mime_types.rb +0 -0
  85. data/test/{rails_root → rails_test}/config/initializers/s3_credentials.rb +1 -1
  86. data/test/{rails_root → rails_test}/config/initializers/secret_token.rb +1 -1
  87. data/test/rails_test/config/initializers/session_store.rb +8 -0
  88. data/test/rails_test/config/locales/en.yml +5 -0
  89. data/test/rails_test/config/routes.rb +13 -0
  90. data/test/rails_test/config.ru +4 -0
  91. data/test/{rails_root → rails_test}/db/.keep +0 -0
  92. data/test/{rails_root → rails_test}/db/migrate/20090517040220_create_uploads.rb +0 -0
  93. data/test/{rails_root → rails_test}/db/migrate/20090602041838_create_users.rb +0 -0
  94. data/test/rails_test/db/seeds.rb +7 -0
  95. data/test/rails_test/doc/README_FOR_APP +2 -0
  96. data/test/{rails_root → rails_test}/features/step_definitions/webrat_steps.rb +0 -0
  97. data/test/{rails_root → rails_test}/features/support/env.rb +0 -0
  98. data/test/{rails_root → rails_test}/lib/daemons/amazonaws.rb +0 -0
  99. data/test/{rails_root/public/favicon.ico → rails_test/lib/tasks/.gitkeep} +0 -0
  100. data/test/rails_test/public/404.html +26 -0
  101. data/test/rails_test/public/422.html +26 -0
  102. data/test/rails_test/public/500.html +26 -0
  103. data/test/{rails_root/public/stylesheets/.keep → rails_test/public/favicon.ico} +0 -0
  104. data/test/{rails_root → rails_test}/public/images/file_icons/excel.gif +0 -0
  105. data/test/{rails_root → rails_test}/public/images/file_icons/file.gif +0 -0
  106. data/test/{rails_root → rails_test}/public/images/file_icons/file.png +0 -0
  107. data/test/{rails_root → rails_test}/public/images/file_icons/file_aac.gif +0 -0
  108. data/test/{rails_root → rails_test}/public/images/file_icons/file_ai.gif +0 -0
  109. data/test/{rails_root → rails_test}/public/images/file_icons/file_avi.gif +0 -0
  110. data/test/{rails_root → rails_test}/public/images/file_icons/file_bin.gif +0 -0
  111. data/test/{rails_root → rails_test}/public/images/file_icons/file_bmp.gif +0 -0
  112. data/test/{rails_root → rails_test}/public/images/file_icons/file_cue.gif +0 -0
  113. data/test/{rails_root → rails_test}/public/images/file_icons/file_divx.gif +0 -0
  114. data/test/{rails_root → rails_test}/public/images/file_icons/file_doc.gif +0 -0
  115. data/test/{rails_root → rails_test}/public/images/file_icons/file_eps.gif +0 -0
  116. data/test/{rails_root → rails_test}/public/images/file_icons/file_flac.gif +0 -0
  117. data/test/{rails_root → rails_test}/public/images/file_icons/file_flv.gif +0 -0
  118. data/test/{rails_root → rails_test}/public/images/file_icons/file_gif.gif +0 -0
  119. data/test/{rails_root → rails_test}/public/images/file_icons/file_html.gif +0 -0
  120. data/test/{rails_root → rails_test}/public/images/file_icons/file_ical.gif +0 -0
  121. data/test/{rails_root → rails_test}/public/images/file_icons/file_indd.gif +0 -0
  122. data/test/{rails_root → rails_test}/public/images/file_icons/file_inx.gif +0 -0
  123. data/test/{rails_root → rails_test}/public/images/file_icons/file_iso.gif +0 -0
  124. data/test/{rails_root → rails_test}/public/images/file_icons/file_jpg.gif +0 -0
  125. data/test/{rails_root → rails_test}/public/images/file_icons/file_mov.gif +0 -0
  126. data/test/{rails_root → rails_test}/public/images/file_icons/file_mp3.gif +0 -0
  127. data/test/{rails_root → rails_test}/public/images/file_icons/file_mpg.gif +0 -0
  128. data/test/{rails_root → rails_test}/public/images/file_icons/file_pdf.gif +0 -0
  129. data/test/{rails_root → rails_test}/public/images/file_icons/file_php.gif +0 -0
  130. data/test/{rails_root → rails_test}/public/images/file_icons/file_png.gif +0 -0
  131. data/test/{rails_root → rails_test}/public/images/file_icons/file_pps.gif +0 -0
  132. data/test/{rails_root → rails_test}/public/images/file_icons/file_ppt.gif +0 -0
  133. data/test/{rails_root → rails_test}/public/images/file_icons/file_psd.gif +0 -0
  134. data/test/{rails_root → rails_test}/public/images/file_icons/file_qxd.gif +0 -0
  135. data/test/{rails_root → rails_test}/public/images/file_icons/file_qxp.gif +0 -0
  136. data/test/{rails_root → rails_test}/public/images/file_icons/file_raw.gif +0 -0
  137. data/test/{rails_root → rails_test}/public/images/file_icons/file_rtf.gif +0 -0
  138. data/test/{rails_root → rails_test}/public/images/file_icons/file_svg.gif +0 -0
  139. data/test/{rails_root → rails_test}/public/images/file_icons/file_tif.gif +0 -0
  140. data/test/{rails_root → rails_test}/public/images/file_icons/file_txt.gif +0 -0
  141. data/test/{rails_root → rails_test}/public/images/file_icons/file_vcf.gif +0 -0
  142. data/test/{rails_root → rails_test}/public/images/file_icons/file_wav.gif +0 -0
  143. data/test/{rails_root → rails_test}/public/images/file_icons/file_wma.gif +0 -0
  144. data/test/{rails_root → rails_test}/public/images/file_icons/file_xls.gif +0 -0
  145. data/test/{rails_root → rails_test}/public/images/file_icons/file_xml.gif +0 -0
  146. data/test/{rails_root → rails_test}/public/images/file_icons/mp3.gif +0 -0
  147. data/test/{rails_root → rails_test}/public/images/file_icons/pdf.gif +0 -0
  148. data/test/{rails_root → rails_test}/public/images/file_icons/pdf.png +0 -0
  149. data/test/{rails_root → rails_test}/public/images/file_icons/text.gif +0 -0
  150. data/test/{rails_root → rails_test}/public/images/file_icons/text.png +0 -0
  151. data/test/{rails_root → rails_test}/public/images/file_icons/word.gif +0 -0
  152. data/test/rails_test/public/images/rails.png +0 -0
  153. data/test/{rails_root/public/images → rails_test/public/images/swfupload}/SWFUploadButton.png +0 -0
  154. data/test/{rails_root/public/images → rails_test/public/images/swfupload}/cancelbutton.gif +0 -0
  155. data/test/{rails_root → rails_test}/public/images/uploadify/cancel.png +0 -0
  156. data/test/{rails_root → rails_test}/public/javascripts/application.js +0 -0
  157. data/test/{rails_root → rails_test}/public/javascripts/controls.js +75 -73
  158. data/test/{rails_root → rails_test}/public/javascripts/dragdrop.js +171 -169
  159. data/test/{rails_root → rails_test}/public/javascripts/effects.js +180 -177
  160. data/test/{rails_root/public/javascripts/jquery/jquery.js → rails_test/public/javascripts/jquery/jquery-1.4.2.min.js} +0 -0
  161. data/test/{rails_root/public/javascripts/jquery/jquery-ui.js → rails_test/public/javascripts/jquery/jquery-ui-1.8.4.custom.min.js} +0 -0
  162. data/test/{rails_root → rails_test}/public/javascripts/jquery/jquery.uploadify.min.js +0 -0
  163. data/test/rails_test/public/javascripts/prototype.js +6001 -0
  164. data/test/rails_test/public/javascripts/rails.js +175 -0
  165. data/test/{rails_root → rails_test}/public/javascripts/swf/swfobject.js +0 -0
  166. data/test/{rails_root → rails_test}/public/javascripts/swfupload/fileprogress.js +0 -0
  167. data/test/{rails_root → rails_test}/public/javascripts/swfupload/handlers.js +0 -0
  168. data/test/{rails_root → rails_test}/public/javascripts/swfupload/swfupload.cookies.js +0 -0
  169. data/test/{rails_root → rails_test}/public/javascripts/swfupload/swfupload.js +0 -0
  170. data/test/{rails_root → rails_test}/public/javascripts/swfupload/swfupload.proxy.js +0 -0
  171. data/test/{rails_root → rails_test}/public/javascripts/swfupload/swfupload.queue.js +0 -0
  172. data/test/{rails_root → rails_test}/public/javascripts/swfupload/swfupload.speed.js +0 -0
  173. data/test/{rails_root → rails_test}/public/javascripts/swfupload/swfupload.swfobject.js +0 -0
  174. data/test/rails_test/public/robots.txt +5 -0
  175. data/test/{rails_root/test/functional/.keep → rails_test/public/stylesheets/.gitkeep} +0 -0
  176. data/test/{rails_root → rails_test}/public/stylesheets/swfupload.css +0 -0
  177. data/test/{rails_root → rails_test}/public/stylesheets/uploadify.css +0 -0
  178. data/test/{rails_root → rails_test}/public/swf/expressInstall.swf +0 -0
  179. data/test/{rails_root → rails_test}/public/swf/swfupload.swf +0 -0
  180. data/test/{rails_root → rails_test}/public/swf/swfupload_fp9.swf +0 -0
  181. data/test/{rails_root → rails_test}/public/swf/uploadify.swf +0 -0
  182. data/test/rails_test/script/rails +6 -0
  183. data/test/{rails_root → rails_test}/test/factories.rb +1 -1
  184. data/test/{rails_root → rails_test}/test/fixtures/files/5k.png +0 -0
  185. data/test/{rails_root → rails_test}/test/fixtures/files/IT'sUPPERCASE!AND WeIRD.JPG +0 -0
  186. data/test/rails_test/test/fixtures/rails.png +0 -0
  187. data/test/{rails_root/test → rails_test/test/fixtures}/test.doc +0 -0
  188. data/test/{rails_root/test → rails_test/test/fixtures}/test.pdf +0 -0
  189. data/test/rails_test/test/fixtures/test.txt +1 -0
  190. data/test/{rails_root/test → rails_test/test/fixtures}/test.xls +0 -0
  191. data/test/{rails_root/test/integration → rails_test/test/functional}/.keep +0 -0
  192. data/test/{rails_root → rails_test}/test/functional/default_controller_test.rb +0 -0
  193. data/test/{rails_root → rails_test}/test/functional/uploads_controller_test.rb +0 -0
  194. data/test/{rails_root/test/mocks/development → rails_test/test/integration}/.keep +0 -0
  195. data/test/rails_test/test/performance/browsing_test.rb +9 -0
  196. data/test/{rails_root → rails_test}/test/shoulda_macros/paperclip.rb +0 -0
  197. data/test/rails_test/test/test_helper.rb +25 -0
  198. data/test/{rails_root/test/mocks/test → rails_test/test/unit}/.keep +0 -0
  199. data/test/{rails_root → rails_test}/test/unit/upload_test.rb +9 -18
  200. data/test/{rails_root/test/unit/.keep → rails_test/vendor/plugins/.gitkeep} +0 -0
  201. data/uploader.gemspec +225 -255
  202. metadata +228 -258
  203. data/Gemfile +0 -13
  204. data/config/uploader_routes.rb +0 -3
  205. data/lib/active_record/acts/uploader_upload.rb +0 -279
  206. data/lib/uploader/initialize_routes.rb +0 -8
  207. data/lib/uploader/tasks.rb +0 -42
  208. data/rails/init.rb +0 -38
  209. data/tasks/rails.rake +0 -2
  210. data/test/rails_root/Capfile +0 -3
  211. data/test/rails_root/app/controllers/default_controller.rb +0 -12
  212. data/test/rails_root/app/models/upload.rb +0 -55
  213. data/test/rails_root/app/views/default/uploadify.html.erb +0 -17
  214. data/test/rails_root/config/boot.rb +0 -109
  215. data/test/rails_root/config/environment.rb +0 -29
  216. data/test/rails_root/config/environments/development.rb +0 -19
  217. data/test/rails_root/config/environments/production.rb +0 -1
  218. data/test/rails_root/config/environments/test.rb +0 -27
  219. data/test/rails_root/config/initializers/requires.rb +0 -13
  220. data/test/rails_root/config/initializers/session_store.rb +0 -8
  221. data/test/rails_root/config/initializers/uploader.rb +0 -11
  222. data/test/rails_root/config/routes.rb +0 -13
  223. data/test/rails_root/db/development.sqlite3 +0 -0
  224. data/test/rails_root/db/schema.rb +0 -47
  225. data/test/rails_root/db/test.sqlite3 +0 -0
  226. data/test/rails_root/public/.htaccess +0 -40
  227. data/test/rails_root/public/404.html +0 -30
  228. data/test/rails_root/public/422.html +0 -30
  229. data/test/rails_root/public/500.html +0 -30
  230. data/test/rails_root/public/dispatch.rb +0 -10
  231. data/test/rails_root/public/images/rails.png +0 -0
  232. data/test/rails_root/public/images/swfupload/SWFUploadButton.png +0 -0
  233. data/test/rails_root/public/images/swfupload/cancelbutton.gif +0 -0
  234. data/test/rails_root/public/javascripts/builder.js +0 -136
  235. data/test/rails_root/public/javascripts/jquery/jquery.easing.js +0 -1
  236. data/test/rails_root/public/javascripts/jquery/jquery.fancybox.js +0 -9
  237. data/test/rails_root/public/javascripts/jquery/jquery.form.js +0 -637
  238. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +0 -2
  239. data/test/rails_root/public/javascripts/jquery/jquery.tips.js +0 -69
  240. data/test/rails_root/public/javascripts/jquery/jrails.js +0 -1
  241. data/test/rails_root/public/javascripts/prototype.js +0 -4225
  242. data/test/rails_root/public/javascripts/scriptaculous.js +0 -58
  243. data/test/rails_root/public/javascripts/slider.js +0 -277
  244. data/test/rails_root/public/javascripts/sound.js +0 -60
  245. data/test/rails_root/public/robots.txt +0 -1
  246. data/test/rails_root/script/about +0 -3
  247. data/test/rails_root/script/breakpointer +0 -3
  248. data/test/rails_root/script/console +0 -3
  249. data/test/rails_root/script/create_project.rb +0 -52
  250. data/test/rails_root/script/cucumber +0 -7
  251. data/test/rails_root/script/dbconsole +0 -3
  252. data/test/rails_root/script/destroy +0 -3
  253. data/test/rails_root/script/generate +0 -3
  254. data/test/rails_root/script/performance/benchmarker +0 -3
  255. data/test/rails_root/script/performance/profiler +0 -3
  256. data/test/rails_root/script/performance/request +0 -3
  257. data/test/rails_root/script/plugin +0 -3
  258. data/test/rails_root/script/process/inspector +0 -3
  259. data/test/rails_root/script/process/reaper +0 -3
  260. data/test/rails_root/script/process/spawner +0 -3
  261. data/test/rails_root/script/runner +0 -3
  262. data/test/rails_root/script/server +0 -3
  263. data/test/rails_root/test/test_helper.rb +0 -26
@@ -1,279 +0,0 @@
1
- module ActiveRecord
2
- module Acts #:nodoc:
3
-
4
- module UploaderUpload #:nodoc:
5
- def self.included(base)
6
- base.extend(ClassMethods)
7
- end
8
-
9
- module ClassMethods
10
-
11
- # options:
12
- # S3_no_wait - Immediately send files to S3 instead of waiting for an aysnc process to send them over.
13
- # keep_local_file - If using S3 determines whether or not to keep files local as well as sending to S3.
14
- #
15
- # acts_as_uploader requires an option for :has_attached_file. These values will be passed to paperclip.
16
- # i.e.
17
- # acts_as_uploader :has_attached_file => {
18
- # :url => "/uploads/:class/:id/:style_:basename.:extension",
19
- # :path => ":rails_root/public/uploads/:class/:id/:style_:basename.:extension",
20
- # :styles => { :icon => "30x30!", :thumb => "100>", :small => "150>", :medium => "300>", :large => "660>"},
21
- # :default_url => "/images/profile_default.jpg" },
22
- # :disable_halt_nonimage_processing => false
23
- #
24
- # disable_halt_nonimage_processing - By default all post processing is turned off for non image files. This is useful if you want to setup styles to generate thumbnails for
25
- # images but don't want the default Geometry processor to die on non-image files.
26
- def acts_as_uploader(options = {})
27
-
28
- default_options = {
29
- :S3_no_wait => false,
30
- :keep_local_file => true
31
- }
32
-
33
- options = default_options.merge(options)
34
-
35
- #Named scopes
36
- named_scope :newest, :order => "created_at DESC"
37
- named_scope :by_filename, :order => "local_file_name DESC"
38
- named_scope :newest, :order => "created_at DESC"
39
- named_scope :public, :conditions => 'is_public = true'
40
- named_scope :images, :conditions => "local_content_type IN (#{Uploader::MimeTypeGroups::IMAGE_TYPES.collect{|type| "'#{type}'"}.join(',')})"
41
- named_scope :documents, :conditions => "local_content_type IN (#{(Uploader::MimeTypeGroups::WORD_TYPES + Uploader::MimeTypeGroups::EXCEL_TYPES + Uploader::MimeTypeGroups::PDF_TYPES).collect{|type| "'#{type}'"}.join(',')})"
42
- named_scope :files, :conditions => "local_content_type NOT IN (#{Uploader::MimeTypeGroups::IMAGE_TYPES.collect{|type| "'#{type}'"}.join(',')})"
43
- named_scope :recent, lambda { |*args| { :conditions => ["created_at > ?", (args.first || 7.days.ago.to_s(:db)) ]} }
44
- named_scope :created_by, lambda { |*args| { :conditions => ["creator_id = ?", (args.first) ]} }
45
- named_scope :pending_s3_migrations, lambda { { :conditions => ["remote_file_name IS NULL"], :order => 'created_at DESC' } }
46
-
47
- @uploader_s3_no_wait = options.delete(:S3_no_wait)
48
- @uploader_keep_file_local = options.delete(:keep_local_file)
49
-
50
- # Paperclip
51
- has_attached_file :local, options[:has_attached_file].merge(:storage => :filesystem) # Override any storage settings. This one has to be local.
52
- has_attached_file :remote, options[:has_attached_file].merge(:url => ':s3_alias_url',
53
- :path => options[:s3_path],
54
- :storage => :s3)
55
-
56
- belongs_to :uploadable, :polymorphic => true
57
- belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id'
58
-
59
- before_save :determine_immediate_send_to_remote
60
-
61
- class_eval <<-EOV
62
-
63
- before_post_process :transliterate_file_name
64
- before_post_process :halt_nonimage_processing unless options[:disable_halt_nonimage_processing]
65
- before_create :add_width_and_height
66
-
67
- # prevents a user from submitting a crafted form that bypasses activation
68
- attr_protected :creator_id, :uploadable_id, :uploadable_type
69
- EOV
70
-
71
- include ActiveRecord::Acts::UploaderUpload::InstanceMethods
72
- extend ActiveRecord::Acts::UploaderUpload::SingletonMethods
73
- end
74
- end
75
-
76
- # class methods
77
- module SingletonMethods
78
-
79
- def s3_no_wait?
80
- @uploader_s3_no_wait
81
- end
82
-
83
- def keep_local_file?
84
- @uploader_keep_file_local
85
- end
86
-
87
- end
88
-
89
- # All the methods available to a record that has had <tt>acts_as_uploader</tt> specified.
90
- module InstanceMethods
91
-
92
- def file
93
- local_file_name ? local : remote
94
- end
95
-
96
- def file_name
97
- remote_file_name || local_file_name
98
- end
99
-
100
- def determine_immediate_send_to_remote
101
- if self.class.s3_no_wait?
102
- self.remote = local.to_file # This will result in the file being sent to S3
103
- end
104
- end
105
-
106
- def send_to_remote
107
- if local_file_name
108
- self.remote = local.to_file
109
- if self.save and remote.original_filename and remote.exists?
110
- self.local = nil unless keep_local_file?
111
- self.save
112
- else
113
- false
114
- end
115
- end
116
- end
117
-
118
- def multiupload_local=(filedata)
119
- filedata.content_type = MIME::Types.type_for(filedata.original_filename)[0].to_s
120
- self.local = filedata
121
- end
122
-
123
- def is_image?
124
- Uploader::MimeTypeGroups::IMAGE_TYPES.include?(self.local_content_type)
125
- end
126
-
127
- def is_mp3?
128
- Uploader::MimeTypeGroups::MP3_TYPES.include?(self.local_content_type)
129
- end
130
-
131
- def is_excel?
132
- Uploader::MimeTypeGroups::EXCEL_TYPES.include?(self.local_content_type)
133
- end
134
-
135
- def is_pdf?
136
- Uploader::MimeTypeGroups::PDF_TYPES.include?(self.local_content_type)
137
- end
138
-
139
- def is_word?
140
- Uploader::MimeTypeGroups::WORD_TYPES.include?(self.local_content_type)
141
- end
142
-
143
- def is_text?
144
- Uploader::MimeTypeGroups::TEXT_TYPES.include?(self.local_content_type)
145
- end
146
-
147
- def upload_type
148
- if self.is_pdf?
149
- 'Adobe pdf file'
150
- elsif self.is_word?
151
- 'Word document'
152
- elsif self.is_image?
153
- 'photo'
154
- elsif self.is_mp3?
155
- 'mp3'
156
- elsif self.is_excel?
157
- 'Excel document'
158
- elsif self.is_text?
159
- 'text file'
160
- else
161
- 'file'
162
- end
163
- end
164
-
165
- def icon
166
- if self.is_pdf?
167
- '/images/file_icons/file_pdf.gif'
168
- elsif self.is_word?
169
- '/images/file_icons/file_doc.gif'
170
- elsif self.is_image?
171
- self.file.url(:icon)
172
- elsif self.is_mp3?
173
- '/images/file_icons/file_mp3.gif'
174
- elsif self.is_excel?
175
- '/images/file_icons/file_xls.gif'
176
- elsif self.is_text?
177
- '/images/file_icons/file_txt.gif'
178
- else
179
- '/images/file_icons/file_raw.gif'
180
- end
181
- end
182
-
183
- # Only works for images
184
- def thumb
185
- if self.is_image?
186
- self.file.url(:thumb)
187
- end
188
- end
189
-
190
- def display_name
191
- CGI::escapeHTML(self.local_file_name)
192
- end
193
-
194
- def can_edit?(check_user)
195
- return false if check_user.blank?
196
- check_user == self.creator
197
- end
198
-
199
- # Image dimension calculations
200
-
201
- def width(style = :default)
202
- return nil unless self[:width]
203
- return self[:width] if style == :default
204
- calculate_sizes(style.to_sym)
205
- return @image_width.to_i
206
- end
207
-
208
- def height(style = :default)
209
- return nil unless self[:height]
210
- return self[:height] if style == :default
211
- calculate_sizes(style.to_sym)
212
- return @image_height.to_i
213
- end
214
-
215
- def size(style = :default)
216
- return nil unless width || height
217
- return "#{width}x#{height}" if style == :default
218
- calculate_sizes(style.to_sym)
219
- return @image_size
220
- end
221
-
222
- def max_dimension(style)
223
- @max_dimension ||= Paperclip::Geometry.parse(self.local.styles[style][:geometry]).width.to_f
224
- end
225
-
226
- def image_ratio
227
- @image_ratio ||= width.to_f / height.to_f
228
- end
229
-
230
- def calculate_sizes(style)
231
- if image_ratio > 1
232
- @image_width ||= width > max_dimension(style) ? max_dimension(style) : width
233
- @image_height ||= (@image_width / image_ratio).round
234
- else
235
- @image_height ||= height > max_dimension(style) ? max_dimension(style) : height
236
- @image_width ||= (@image_height * image_ratio).round
237
- end
238
- @image_size ||= "#{@image_width.to_i}x#{@image_height.to_i}"
239
- end
240
-
241
- protected
242
- def transliterate_file_name
243
- extension = File.extname(local_file_name).gsub(/^\.+/, '')
244
- filename = local_file_name.gsub(/\.#{extension}$/, '')
245
- self.local.instance_write(:file_name, "#{transliterate(filename)}.#{transliterate(extension)}")
246
- end
247
-
248
- def transliterate(str)
249
- # Lifted from permalink_fu by Rick Olsen
250
- # Escape str by transliterating to UTF-8 with Iconv,
251
- # downcasing, then removing illegal characters and replacing them with ’-’
252
- s = Iconv.iconv('ascii//ignore//translit', 'utf-8', str).to_s
253
- s.downcase!
254
- s.gsub!(/\'/, '')
255
- s.gsub!(/[^A-Za-z0-9]+/, ' ')
256
- s.strip!
257
- s.gsub!(/\ +/, '-') # set single or multiple spaces to a single dash
258
- return s
259
- end
260
-
261
- def add_width_and_height
262
- return unless self.is_image?
263
- if self.local.to_file
264
- geometry = Paperclip::Geometry.from_file self.local.to_file
265
- self[:width] = geometry.width.to_i
266
- self[:height] = geometry.height.to_i
267
- end
268
- end
269
-
270
- def halt_nonimage_processing
271
- if !self.is_image? && self.local.options[:styles]
272
- return false
273
- end
274
- end
275
-
276
- end
277
- end
278
- end
279
- end
@@ -1,8 +0,0 @@
1
- class ActionController::Routing::RouteSet
2
- def load_routes_with_uploader!
3
- uploader_routes = File.join(File.dirname(__FILE__), *%w[.. .. config uploader_routes.rb])
4
- add_configuration_file(uploader_routes) unless configuration_files.include? uploader_routes
5
- load_routes_without_uploader!
6
- end
7
- alias_method_chain :load_routes!, :uploader
8
- end
@@ -1,42 +0,0 @@
1
- require 'rake'
2
- require 'rake/tasklib'
3
- require 'fileutils'
4
-
5
- module Uploader
6
- class Tasks < ::Rake::TaskLib
7
- def initialize
8
- define
9
- end
10
-
11
- private
12
- def define
13
- namespace :uploader do
14
-
15
- task :app_env do
16
- Rake::Task[:environment].invoke if defined?(RAILS_ROOT)
17
- end
18
-
19
- desc 'Send all uploads to S3. (Will only send uploads from a model named Upload)'
20
- task :upload_to_s3 do
21
- uploads = Upload.pending_s3_migrations
22
- uploads.each do |upload|
23
- upload.remote = upload.local
24
- upload.save!
25
- end
26
- end
27
-
28
- desc "Sync required files from uploader."
29
- task :sync do
30
- path = File.join(File.dirname(__FILE__), *%w[.. ..])
31
- daemons_path = "#{RAILS_ROOT}/lib/daemons"
32
- system "rsync -ruv #{path}/public ."
33
- system "rsync -ruv #{path}/db ."
34
- FileUtils.mkdir_p(daemons_path) unless File.directory?(daemons_path)
35
- FileUtils.cp_r("#{path}/lib/daemons/amazonaws.rb", "#{RAILS_ROOT}/lib/daemons/amazonaws.rb")
36
- end
37
-
38
- end
39
- end
40
- end
41
- end
42
- Uploader::Tasks.new
data/rails/init.rb DELETED
@@ -1,38 +0,0 @@
1
- begin
2
- require 'paperclip'
3
- rescue LoadError
4
- begin
5
- gem 'paperclip'
6
- rescue Gem::LoadError
7
- puts "Please install the paperclip gem"
8
- end
9
- end
10
-
11
- begin
12
- require 'mime/types'
13
- rescue LoadError
14
- begin
15
- gem 'mime-types'
16
- rescue Gem::LoadError
17
- puts "Please install the mime-types gem"
18
- end
19
- end
20
-
21
- require 'uploader'
22
- require 'uploader/initialize_routes'
23
-
24
- ActiveRecord::Base.class_eval { include ActiveRecord::Acts::UploaderUpload }
25
- ActionController::Base.send :helper, UploaderHelper
26
- I18n.load_path += Dir[ File.join(File.dirname(__FILE__), '..', 'locales', '*.{rb,yml}') ]
27
-
28
- config.after_initialize do
29
- if defined?(Rails.application)
30
- # Rails 3
31
- Rails.application.config.middleware.insert_before(ActionDispatch::Session::CookieStore, Uploader::FlashSessionCookieMiddleware, Rails.application.config.session_options[:key])
32
- else
33
- # Rails 2
34
- ActionController::Dispatcher.middleware.use Uploader::FlashSessionCookieMiddleware, ActionController::Base.session_options[:key]
35
- end
36
- end
37
-
38
-
data/tasks/rails.rake DELETED
@@ -1,2 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../lib/uploader')
2
- require File.join(File.dirname(__FILE__), '/../lib/uploader/tasks')
@@ -1,3 +0,0 @@
1
- load 'deploy' if respond_to?(:namespace) # cap2 differentiator
2
- Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
3
- load 'config/deploy'
@@ -1,12 +0,0 @@
1
- class DefaultController < ApplicationController
2
-
3
- def index
4
- @user = User.find(params[:user_id]) rescue User.new
5
- end
6
-
7
- def uploadify
8
- @user = User.find(params[:user_id]) rescue User.new
9
- end
10
-
11
-
12
- end
@@ -1,55 +0,0 @@
1
- # == Schema Information
2
- #
3
- # Table name: uploads
4
- #
5
- # id :integer not null, primary key
6
- # creator_id :integer
7
- # name :string(255)
8
- # caption :string(1000)
9
- # description :text
10
- # is_public :boolean default(TRUE)
11
- # uploadable_id :integer
12
- # uploadable_type :string(255)
13
- # width :string(255)
14
- # height :string(255)
15
- # local_file_name :string(255)
16
- # local_content_type :string(255)
17
- # local_file_size :integer
18
- # local_updated_at :datetime
19
- # remote_file_name :string(255)
20
- # remote_content_type :string(255)
21
- # remote_file_size :integer
22
- # remote_updated_at :datetime
23
- # created_at :datetime
24
- # updated_at :datetime
25
- #
26
-
27
- class Upload < ActiveRecord::Base
28
-
29
- acts_as_uploader :enable_s3 => true,
30
- :has_attached_file => {
31
- :url => "/system/:attachment/:id_partition/:style/:basename.:extension",
32
- :path => ":rails_root/public/system/:attachment/:id_partition/:style/:basename.:extension",
33
- :styles => { :icon => "30x30!",
34
- :thumb => "100>",
35
- :small => "150>",
36
- :medium => "300>",
37
- :large => "660>" },
38
- :default_url => "/images/profile_default.jpg",
39
- :storage => :s3,
40
- :s3_credentials => AMAZON_S3_CREDENTIALS,
41
- :bucket => "assets.#{GlobalConfig.application_url}",
42
- :s3_host_alias => "assets.#{GlobalConfig.application_url}",
43
- :convert_options => {
44
- :all => '-quality 80'
45
- }
46
- }
47
-
48
- validates_attachment_presence :local
49
- validates_attachment_size :local, :less_than => 10.megabytes
50
-
51
- def can_edit?(user)
52
- return true
53
- end
54
-
55
- end
@@ -1,17 +0,0 @@
1
- <h1>Uploadify</h1>
2
-
3
- <p>
4
- <a href="/">SWFUpload</a> | <a href="/default/uploadify">uploadify</a>
5
- </p>
6
-
7
- <p>Upload One restricted to 10 MB:
8
- <%= uploadify_form(@user, true, container_prefix = '', :sizeLimit => 1310720) %>
9
- </p>
10
-
11
- <p>Upload restricted to images:
12
- <%= uploadify_form(@user, false, container_prefix = 'a_container_with_a_long_name', :fileExt => '*.jpg', :fileDesc => 'Images') %>
13
- </p>
14
-
15
- <p>Upload With Custom Background Button and rollover:
16
- <%= uploadify_form(@user, false, container_prefix = 'background', :buttonImg => '/images/SWFUploadButton.png', :width => 61, :height => 22, :rollover => true) %>
17
- </p>
@@ -1,109 +0,0 @@
1
- # Don't change this file!
2
- # Configure your app in config/environment.rb and config/environments/*.rb
3
-
4
- RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
5
-
6
- module Rails
7
- class << self
8
- def boot!
9
- unless booted?
10
- preinitialize
11
- pick_boot.run
12
- end
13
- end
14
-
15
- def booted?
16
- defined? Rails::Initializer
17
- end
18
-
19
- def pick_boot
20
- (vendor_rails? ? VendorBoot : GemBoot).new
21
- end
22
-
23
- def vendor_rails?
24
- File.exist?("#{RAILS_ROOT}/vendor/rails")
25
- end
26
-
27
- def preinitialize
28
- load(preinitializer_path) if File.exist?(preinitializer_path)
29
- end
30
-
31
- def preinitializer_path
32
- "#{RAILS_ROOT}/config/preinitializer.rb"
33
- end
34
- end
35
-
36
- class Boot
37
- def run
38
- load_initializer
39
- Rails::Initializer.run(:set_load_path)
40
- end
41
- end
42
-
43
- class VendorBoot < Boot
44
- def load_initializer
45
- require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
46
- Rails::Initializer.run(:install_gem_spec_stubs)
47
- end
48
- end
49
-
50
- class GemBoot < Boot
51
- def load_initializer
52
- self.class.load_rubygems
53
- load_rails_gem
54
- require 'initializer'
55
- end
56
-
57
- def load_rails_gem
58
- if version = self.class.gem_version
59
- gem 'rails', version
60
- else
61
- gem 'rails'
62
- end
63
- rescue Gem::LoadError => load_error
64
- $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
65
- exit 1
66
- end
67
-
68
- class << self
69
- def rubygems_version
70
- Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
71
- end
72
-
73
- def gem_version
74
- if defined? RAILS_GEM_VERSION
75
- RAILS_GEM_VERSION
76
- elsif ENV.include?('RAILS_GEM_VERSION')
77
- ENV['RAILS_GEM_VERSION']
78
- else
79
- parse_gem_version(read_environment_rb)
80
- end
81
- end
82
-
83
- def load_rubygems
84
- require 'rubygems'
85
- min_version = '1.1.1'
86
- unless rubygems_version >= min_version
87
- $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
88
- exit 1
89
- end
90
-
91
- rescue LoadError
92
- $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
93
- exit 1
94
- end
95
-
96
- def parse_gem_version(text)
97
- $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
98
- end
99
-
100
- private
101
- def read_environment_rb
102
- File.read("#{RAILS_ROOT}/config/environment.rb")
103
- end
104
- end
105
- end
106
- end
107
-
108
- # All that for this:
109
- Rails.boot!
@@ -1,29 +0,0 @@
1
- RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION
2
-
3
- require File.join(File.dirname(__FILE__), 'boot')
4
-
5
- # Load a global constant so the initializers can use them
6
- require 'ostruct'
7
- require 'yaml'
8
-
9
- ::GlobalConfig = OpenStruct.new(YAML.load_file("#{RAILS_ROOT}/config/global_config.yml")[RAILS_ENV])
10
-
11
- class << GlobalConfig
12
- def prepare_options_for_attachment_fu(options)
13
- attachment_fu_options = options.symbolize_keys.merge({:storage => options['storage'].to_sym,
14
- :max_size => options['max_size'].to_i.megabytes})
15
- end
16
- end
17
-
18
- class TestGemLocator < Rails::Plugin::Locator
19
- def plugins
20
- Rails::Plugin.new(File.join(File.dirname(__FILE__), *%w(.. .. ..)))
21
- end
22
- end
23
-
24
- Rails::Initializer.run do |config|
25
- config.load_paths += Dir.glob(File.join(RAILS_ROOT, 'vendor', 'gems', '*', 'lib'))
26
- config.time_zone = 'UTC'
27
- config.gem 'paperclip'
28
- config.plugin_locators << TestGemLocator
29
- end
@@ -1,19 +0,0 @@
1
- # Settings specified here will take precedence over those in config/environment.rb
2
-
3
- # In the development environment your application's code is reloaded on
4
- # every request. This slows down response time but is perfect for development
5
- # since you don't have to restart the webserver when you make code changes.
6
- config.cache_classes = false
7
-
8
- # Log error messages when you accidentally call methods on nil.
9
- config.whiny_nils = true
10
-
11
- # Show full error reports and disable caching
12
- config.action_controller.consider_all_requests_local = true
13
- config.action_controller.perform_caching = false
14
- config.action_view.debug_rjs = true
15
-
16
- # Don't care if the mailer can't send
17
- config.action_mailer.raise_delivery_errors = false
18
-
19
- HOST = "localhost"
@@ -1 +0,0 @@
1
- HOST = "http://example.com"
@@ -1,27 +0,0 @@
1
- # Settings specified here will take precedence over those in config/environment.rb
2
-
3
- # The test environment is used exclusively to run your application's
4
- # test suite. You never need to work with it otherwise. Remember that
5
- # your test database is "scratch space" for the test suite and is wiped
6
- # and recreated between test runs. Don't rely on the data there!
7
- config.cache_classes = true
8
-
9
- # Log error messages when you accidentally call methods on nil.
10
- config.whiny_nils = true
11
-
12
- # Show full error reports and disable caching
13
- config.action_controller.consider_all_requests_local = true
14
- config.action_controller.perform_caching = false
15
-
16
- # Disable request forgery protection in test environment
17
- config.action_controller.allow_forgery_protection = false
18
-
19
- # Tell ActionMailer not to deliver emails to the real world.
20
- # The :test delivery method accumulates sent emails in the
21
- # ActionMailer::Base.deliveries array.
22
- config.action_mailer.delivery_method = :test
23
-
24
- HOST = "localhost"
25
-
26
- config.gem 'shoulda', :version => '>= 2.11.3'
27
- config.gem 'factory_girl', :version => '>= 1.3.2'
@@ -1,13 +0,0 @@
1
- Dir[File.join(RAILS_ROOT, 'lib', 'extensions', '*.rb')].each do |f|
2
- require f
3
- end
4
-
5
- Dir[File.join(RAILS_ROOT, 'lib', '*.rb')].each do |f|
6
- require f
7
- end
8
-
9
- # Rails 2 doesn't like mocks
10
-
11
- Dir[File.join(RAILS_ROOT, 'test', 'mocks', RAILS_ENV, '*.rb')].each do |f|
12
- require f
13
- end
@@ -1,8 +0,0 @@
1
- # Your secret key for verifying cookie session data integrity.
2
- # If you change this key, all old sessions will become invalid!
3
- # Make sure the secret is at least 30 characters and all random,
4
- # no regular words or you'll be exposed to dictionary attacks.
5
- ActionController::Base.session = {
6
- :key => GlobalConfig.session_key,
7
- :secret => GlobalConfig.session_secret
8
- }