app/helpers/uploads_helper.rb in applicious_utils-0.1.30 vs app/helpers/uploads_helper.rb in applicious_utils-0.1.31
- old
+ new
@@ -1,148 +1,150 @@
module AppliciousUtils
+ module ViewHelpers
- # Creates an instance of a plupload S3 file uploader
- ###
- # required parameters:
- ###
- # key s3 'path' to uploaded files
- #
- ###
- # optional parameters:
- ###
- # s3_config_filename filename of s3 config yaml file (full path), defaults to "#{RAILS_ROOT}/config/amazon_s3.yml"
- #
- # content_type binary/octet-stream
- #
- # acl public-read
- #
- # expiration_date 10.hours.from_now.utc.iso8601
- #
- # max_filesize 2.megabytes
+ # Creates an instance of a plupload S3 file uploader
+ ###
+ # required parameters:
+ ###
+ # key s3 'path' to uploaded files
+ #
+ ###
+ # optional parameters:
+ ###
+ # s3_config_filename filename of s3 config yaml file (full path), defaults to "#{RAILS_ROOT}/config/amazon_s3.yml"
+ #
+ # content_type binary/octet-stream
+ #
+ # acl public-read
+ #
+ # expiration_date 10.hours.from_now.utc.iso8601
+ #
+ # max_filesize 2.megabytes
- def s3_uploader(options = {})
- options[:s3_config_filename] ||= "#{Rails.root}/config/amazon_s3.yml"
- config = YAML.load_file(options[:s3_config_filename])[Rails.env].symbolize_keys
- bucket = config[:bucket_name]
- access_key_id = config[:access_key_id]
- secret_access_key = config[:secret_access_key]
+ def s3_uploader(options = {})
+ options[:s3_config_filename] ||= "#{Rails.root}/config/amazon_s3.yml"
+ config = YAML.load_file(options[:s3_config_filename])[Rails.env].symbolize_keys
+ bucket = config[:bucket_name]
+ access_key_id = config[:access_key_id]
+ secret_access_key = config[:secret_access_key]
- options[:key] ||= 'test' # folder on AWS to store file in
- options[:acl] ||= 'public-read'
- options[:expiration_date] ||= 10.hours.from_now.utc.iso8601
- options[:max_filesize] ||= 500.megabytes
- options[:content_type] ||= 'image/' # Videos would be binary/octet-stream
- options[:filter_title] ||= 'Images'
- options[:filter_extentions] ||= 'jpg,jpeg,gif,png,bmp'
+ options[:key] ||= 'test' # folder on AWS to store file in
+ options[:acl] ||= 'public-read'
+ options[:expiration_date] ||= 10.hours.from_now.utc.iso8601
+ options[:max_filesize] ||= 500.megabytes
+ options[:content_type] ||= 'image/' # Videos would be binary/octet-stream
+ options[:filter_title] ||= 'Images'
+ options[:filter_extentions] ||= 'jpg,jpeg,gif,png,bmp'
- id = options[:id] ? "_#{options[:id]}" : ''
+ id = options[:id] ? "_#{options[:id]}" : ''
- policy = Base64.encode64(
- "{'expiration': '#{options[:expiration_date]}',
- 'conditions': [
- {'bucket': '#{bucket}'},
- {'acl': '#{options[:acl]}'},
- {'success_action_status': '201'},
- ['content-length-range', 0, #{options[:max_filesize]}],
- ['starts-with', '$key', ''],
- ['starts-with', '$Content-Type', ''],
- ['starts-with', '$name', ''],
- ['starts-with', '$Filename', '']
- ]
- }").gsub(/\n|\r/, '')
+ policy = Base64.encode64(
+ "{'expiration': '#{options[:expiration_date]}',
+ 'conditions': [
+ {'bucket': '#{bucket}'},
+ {'acl': '#{options[:acl]}'},
+ {'success_action_status': '201'},
+ ['content-length-range', 0, #{options[:max_filesize]}],
+ ['starts-with', '$key', ''],
+ ['starts-with', '$Content-Type', ''],
+ ['starts-with', '$name', ''],
+ ['starts-with', '$Filename', '']
+ ]
+ }").gsub(/\n|\r/, '')
- signature = Base64.encode64(
- OpenSSL::HMAC.digest(
- OpenSSL::Digest::Digest.new('sha1'),
- secret_access_key, policy)).gsub("\n","")
+ signature = Base64.encode64(
+ OpenSSL::HMAC.digest(
+ OpenSSL::Digest::Digest.new('sha1'),
+ secret_access_key, policy)).gsub("\n","")
- out = ""
+ out = ""
- out << javascript_tag("$(function() {
+ out << javascript_tag("$(function() {
- /*
- * S3 Uploader instance
- */
- // image uploader via plupload
- var uploader = new plupload.Uploader({
- runtimes : 'html5,flash,silverlight',
- browse_button : 'pickfiles',
- max_file_size : '500mb',
- url : 'http://#{bucket}.s3.amazonaws.com/',
- flash_swf_url: 'applicious/plupload/plupload.flash.swf',
- silverlight_xap_url: '/applicious/plupload/plupload.silverlight.xap',
- init : {
- FilesAdded: function(up, files) {
- plupload.each(files, function(file) {
- if (up.files.length > 1) {
- up.removeFile(file);
+ /*
+ * S3 Uploader instance
+ */
+ // image uploader via plupload
+ var uploader = new plupload.Uploader({
+ runtimes : 'html5,flash,silverlight',
+ browse_button : 'pickfiles',
+ max_file_size : '500mb',
+ url : 'http://#{bucket}.s3.amazonaws.com/',
+ flash_swf_url: 'applicious/plupload/plupload.flash.swf',
+ silverlight_xap_url: '/applicious/plupload/plupload.silverlight.xap',
+ init : {
+ FilesAdded: function(up, files) {
+ plupload.each(files, function(file) {
+ if (up.files.length > 1) {
+ up.removeFile(file);
+ }
+ });
+ if (up.files.length >= 1) {
+ $('#pickfiles').fadeOut('slow');
}
- });
- if (up.files.length >= 1) {
- $('#pickfiles').fadeOut('slow');
+ },
+ FilesRemoved: function(up, files) {
+ if (up.files.length < 1) {
+ $('#pickfiles').fadeIn('slow');
+ }
}
},
- FilesRemoved: function(up, files) {
- if (up.files.length < 1) {
- $('#pickfiles').fadeIn('slow');
- }
- }
- },
- multi_selection: false,
- multipart: true,
- multipart_params: {
- 'key': 'test/${filename}',
- 'Filename': '${filename}', // adding this to keep consistency across the runtimes
- 'acl': '#{options[:acl]}',
- 'Content-Type': '#{options[:content_type]}',
- 'success_action_status': '201',
- 'AWSAccessKeyId' : '#{access_key_id}',
- 'policy': '#{policy}',
- 'signature': '#{signature}'
- },
- filters : [
- {title : '#{options[:filter_title]}', extensions : '#{options[:filter_extentions]}'}
- ],
- file_data_name: 'file'
- });
+ multi_selection: false,
+ multipart: true,
+ multipart_params: {
+ 'key': 'test/${filename}',
+ 'Filename': '${filename}', // adding this to keep consistency across the runtimes
+ 'acl': '#{options[:acl]}',
+ 'Content-Type': '#{options[:content_type]}',
+ 'success_action_status': '201',
+ 'AWSAccessKeyId' : '#{access_key_id}',
+ 'policy': '#{policy}',
+ 'signature': '#{signature}'
+ },
+ filters : [
+ {title : '#{options[:filter_title]}', extensions : '#{options[:filter_extentions]}'}
+ ],
+ file_data_name: 'file'
+ });
- // instantiates the uploader
- uploader.init();
+ // instantiates the uploader
+ uploader.init();
- // shows the progress bar and kicks off uploading
- uploader.bind('FilesAdded', function(up, files) {
- $('#progress_bar .ui-progress').css('width', '5%');
- $('span.ui-label').show();
+ // shows the progress bar and kicks off uploading
+ uploader.bind('FilesAdded', function(up, files) {
+ $('#progress_bar .ui-progress').css('width', '5%');
+ $('span.ui-label').show();
- // start the uploader after the progress bar shows
- $('#progress_bar').show(function () {
- uploader.start();
- });
- });
+ // start the uploader after the progress bar shows
+ $('#progress_bar').show(function () {
+ uploader.start();
+ });
+ });
- // binds progress to progress bar
- uploader.bind('UploadProgress', function(up, file) {
- if(file.percent < 100){
- $('#progress_bar .ui-progress').css('width', file.percent+'%');
- }
- else {
- $('#progress_bar .ui-progress').css('width', '100%');
- $('span.ui-label').text('Complete');
- }
- });
+ // binds progress to progress bar
+ uploader.bind('UploadProgress', function(up, file) {
+ if(file.percent < 100){
+ $('#progress_bar .ui-progress').css('width', file.percent+'%');
+ }
+ else {
+ $('#progress_bar .ui-progress').css('width', '100%');
+ $('span.ui-label').text('Complete');
+ }
+ });
- // shows error object in the browser console (for now)
- uploader.bind('Error', function(up, error) {
- // unfortunately PLUpload gives some extremely vague
- // Flash error messages so you have to use WireShark
- // for debugging them (read the README)
+ // shows error object in the browser console (for now)
+ uploader.bind('Error', function(up, error) {
+ // unfortunately PLUpload gives some extremely vague
+ // Flash error messages so you have to use WireShark
+ // for debugging them (read the README)
- alert('There was an error. Check the browser console log for more info');
- console.log('Expand the error object below to see the error. Use WireShark to debug.');
+ alert('There was an error. Check the browser console log for more info');
+ console.log('Expand the error object below to see the error. Use WireShark to debug.');
- console.log(error);
- });
+ console.log(error);
+ });
- });")
+ });")
+ end
end
end
\ No newline at end of file