public static jQueryObject AddUploadInput(UploadInputOptions options)
{
options.Container.AddClass("fileinput-button");
var uploadInput = jQuery.FromHtml("<input/>").Attribute("type", "file").Attribute("name", options.InputName + "[]")
.Attribute("data-url", Q.ResolveUrl("~/File/TemporaryUpload"))
.Attribute("multiple", "multiple")
.AppendTo(options.Container);
if (options.AllowMultiple)
uploadInput.Attribute("multiple", "multiple");
uploadInput.As<dynamic>().fileupload(new
{
dataType = "json",
done = new Action<jQueryEvent, dynamic>((e, data) =>
{
var response = (UploadResponse)data.result;
if (options.FileDone != null)
options.FileDone(response, data.files[0].name, data);
}),
start = new Action(() =>
{
Q.BlockUI();
if (options.Progress != null)
options.Progress.Show();
}),
stop = new Action(() =>
{
Q.BlockUndo();
if (options.Progress != null)
options.Progress.Hide();
}),
progress = new Action<jQueryEvent, dynamic>((e, data) => {
if (options.Progress != null)
{
double percent = (double)data.loaded / (double)data.total * 100;
options.Progress.Children().CSS("width", percent.ToString() + "%");
}
})
});
return uploadInput;
}