feat(Gruntfile.coffee): #897 - updates and enhacements
- reference new S3-specific js files (TODO: further modify to allow exlusion of S3 modules in builds)
- remove redundant semicolon seperator added when combining files
- speed up watch task iterations
feat(client/js/jquery-plugin.js): #897 - more generic convention to allow uploaderType option determine the uploader module to instantiate
feat(uploader modules): #897 - creation of S3 uploader modules
- create S3 UI & basic uploader modules
- move public and private module APIs into separate files
- refactor existing uploader modules to make it easier to extend them further
test(test/raytest-jquery.html): reference the built (combined) js file instead of individual js files from client/js
chore(client/js/uploader.s3.js): #897 - remove console.log
feat(upload handlers): #897 - allow modular support of uploads to S3
- stubs for XHR and Form S3 upload handlers
- refactor base upload handler to allow uploader modules to specify specific upload handlers to use based on the UA
- refactor upload handler creator to allow upload modules to pass specific additional options to the specific handler
- reference new upload handlers js files in build
feat(server-side): #897 - sign upload to S3 policy docs
- create a servlet endpoint that returns a signature and a base64 policy doc
feat(upload request & signature modules): #897 - start of ability to upload files directly to S3
- generate S3-specific request params
- generate policy doc
- ajax call to server for signature and b64 encoded policy
- POST file to S3
feat(Gruntfile.coffee): #897 - ref new S3 signature ajax requester module & ensure images are copied to build
feat(server-side): #897 - fix jQuery plug-in callback xformation
feat(client/js/uploader.basic.s3.js): #897 - cleanup _onUpload override for S3, ensure super module is called on success
chore(utilities): move filename extension extraction logic to a util function
feat(client/js/uploader.basic.s3.js): #897 - key name determination
- support 'uuid' keyname option value
- support 'filename' keyname option value
- support functions (optionally promissory) as keyname option values
- ensure the extension is always appended to the key name
fix(client/js/util.js): prevent argument list from growing with each call to a bound function
refactor(utilities): getExtension's ret val should not include the dot
feat(s3 upload keynames): #897 - don't override _onUpload, instead, contribute a new internal callback to handle keyname determination
feat(client/js/handler.s3.xhr): #897 - set policy expiration date to 5 minutes from "now"
chore(utils): allow qq.each to iterate over chars in a str
test(test/unit/util.js): more qq.each tests, add tests for qq.getExtension
feat(client/js/handler.s3.xhr.js): #897 - pass custom params w/ S3 upload request, encode special chars