");
$("body").prepend(overlay);
// Create uploader
$("#fileupload").fileUploader({
dropTarget: ".upload-overlay",
onAdd: function (data) {
// Create a bindable version of the data object
var file = {
uploaderId: data.uploaderId,
itemId: data.itemId,
name: data.name,
size: data.size,
progress: ko.observable(data.progress),
cancel: function () {
if (this.progress() < 100)
$("#fileupload").fileUploader("cancelItem", this.itemId);
else
self._viewModel.queued.remove(this);
}
};
// Store item back in context for easy access later
data.context = file;
// Push bindable item into queue
self._viewModel.queued.push(file);
},
onDone: function (data) {
switch (data.status) {
case 'success':
//self._viewModel.queued.remove(data.context);
break;
case 'error':
self._viewModel.queued.remove(data.context);
break;
case 'canceled':
self._viewModel.queued.remove(data.context);
break;
}
},
onProgress: function (data) {
data.context.progress(data.progress);
}
});
// Hook up uploader buttons
$(".upload-overlay .upload").click(function (e) {
e.preventDefault();
$("#fileupload").fileUploader("uploadAll");
});
$(".upload-overlay .cancel").click(function (e) {
e.preventDefault();
$("#fileupload").fileUploader("cancelAll");
});
// Listen for drag events
$(".umbFolderBrowser").live('dragenter dragover', function (e) {
$(".upload-overlay").show();
});
$(".upload-overlay").live('dragleave dragexit', function (e) {
$(this).hide();
}).click(function () {
$(this).hide();
});
$(".upload-panel").click(function (e) {
e.stopPropagation();
});
},
_initContextMenu: function ()
{
var self = this;
// Setup context menus
$.contextMenu({
selector: '.umbFolderBrowser .items li',
callback: function (key, options) {
var id = options.$trigger.data("id");
switch (key) {
case "delete":
self._deleteItem(id);
break;
}
},
items: {
"edit": { name: "Edit", icon: "edit" },
"delete": { name: "Delete", icon: "delete" }
},
animation: { show: "fadeIn", hide: "fadeOut" }
});
},
// Constructor
constructor: function (el, opts)
{
var self = this;
// Store el info
self._el = el;
self._elId = el.id;
// Grab parent id from element
self._parentId = $(el).data("parentid");
// Merge options with default
self._opts = $.extend({
// Default options go here
}, opts);
self._initViewModel();
self._initToolbar();
self._initOverlay();
self._initContextMenu();
// Bind the viewmodel
ko.applyBindings(self._viewModel, el);
ko.applyBindings(self._viewModel, $(".upload-overlay").get(0));
// Grab children media items
self._getChildNodes();
}
// Public
});
$.fn.folderBrowser = function (o)
{
if ($(this).length != 1) {
throw "Only one folder browser can exist on the page at any one time";
}
return $(this).each(function () {
var folderBrowser = new Umbraco.Controls.FolderBrowser(this, o);
$(this).data("api", folderBrowser);
});
};
$.fn.folderBrowserApi = function ()
{
//ensure there's only 1
if ($(this).length != 1) {
throw "Requesting the API can only match one element";
}
//ensure thsi is a collapse panel
if ($(this).data("api") == null) {
throw "The matching element had not been bound to a folderBrowser";
}
return $(this).data("api");
};
})(jQuery, base2.Base, window, document)