Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Example for dragging files from the desktop to any CPView in a Cappuccino app running in a browser.
Objective-J JavaScript
Branch: master
Failed to load latest commit information.
Frameworks adding all files
Resources adding all files
AppController.j Added support for CPCollectionView by using the insertAsFirstSubview:…
DCFileDropCollectionViewController.j Added support for CPCollectionView by using the insertAsFirstSubview:…
DCFileDropCollectionViewItemView.j Added support for CPCollectionView by using the insertAsFirstSubview:…
DCFileDropController.j Added support for NativeHost by using an iframe
DCFileDropRowView.j removed more the rest of the "pointers" :)
DCFileDropTableViewController.j Added support for CPCollectionView by using the insertAsFirstSubview:…
DCFileUpload.j Remove useless stuff I added since that particular method doesn't exi…
DCFileUploadManager.j Added better interaction with the upload manager delegate and individ…
DCFileUploadsPanel.j removed more the rest of the "pointers" :)
DCFileUploadsRowView.j adding all files
DCProgressIndicator.j adding all files
DragDropUpload.atlasproj Added support for NativeHost by using an iframe
Info.plist adding all files
Jakefile adding all files
README.markdown Removed pointer asterisks in README.markdown
index-debug.html adding all files
index.html adding all files
main.j adding all files
upload.php adding all files

README.markdown

Deep Drop Upload

Example

These classes allow you to turn any CPView in a Cappuccino app into a file upload drop zone. It supports multiple files dropped at once. It works in Safari and Chrome. Firefox support is possible, but hasn't been added.

The most useful classes are:

  • DCFileDropController.j
  • DCFileUploadManager.j
  • DCFileUpload.j

Usage

Import these classes:

@import "DCFileDropController.j"
@import "DCFileUploadManager.j"

Apply a DCFileDropController to any CPView:

var fileDropUploadController = [[DCFileDropController alloc] 
    initWithView:anyView 
    dropDelegate:self 
    uploadURL:[CPURL URLWithString:@"upload.php"] 
    uploadManager:[DCFileUploadManager sharedManager]];

If you want to change visual state of the view, you can do that with this dropDelegate method:

- (void)fileDropUploadController:(DCFileDropController)theController setState:(BOOL)visible {
    if (visible) {
        [theController.view setBackgroundColor:[CPColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:0.2]];
    } else {
        [theController.view setBackgroundColor:[CPColor clearColor]];
    }
}

If you want to display progress, you can set the DCFileUploadManager delegate:

[[DCFileUploadManager sharedManager] setDelegate:uploadsPanel];

And process it with this method:

- (void)fileUploadManagerDidChange:(DCFileUploadManager)theManager {
    var fileUploads = [theManager fileUploads];
}

Attribution

This technique is based on code from CSS Ninja.

License

MIT License

Something went wrong with that request. Please try again.