public function init()
{
parent::init();
// TODO: Change the autogenerated stub
if (empty($this->model)) {
throw new InvalidConfigException("Property {model} cannot be blank");
}
FileHelper::removeDirectory($this->getModule()->getUserDirPath());
// Delete all uploaded files in past
$this->pluginOptions = array_replace($this->pluginOptions, ['uploadUrl' => Url::toRoute('/attachments/file/upload'), 'initialPreview' => $this->model->isNewRecord ? [] : $this->model->getInitialPreview(), 'initialPreviewConfig' => $this->model->isNewRecord ? [] : $this->model->getInitialPreviewConfig(), 'uploadAsync' => false]);
$this->options = array_replace($this->options, ['id' => $this->id]);
$js = <<<JS
var fileInput = \$('#file-input');
var form = fileInput.closest('form');
var filesUploaded = false;
var filesToUpload = 0;
var uploadButtonClicked = false;
//var formSubmit = false;
form.on('beforeSubmit', function(event) { // form submit event
console.log('submit');
if (!filesUploaded && filesToUpload) {
console.log('upload');
\$('#file-input').fileinput('upload').fileinput('lock');
return false;
}
});
fileInput.on('filebatchpreupload', function(event, data, previewId, index) {
uploadButtonClicked = true;
});
//fileInput.on('filebatchuploadcomplete', function(event, files, extra) { // all files successfully uploaded
fileInput.on('filebatchuploadsuccess', function(event, data, previewId, index) {
filesUploaded = true;
\$('#file-input').fileinput('unlock');
if (uploadButtonClicked) {
form.submit();
} else {
uploadButtonClicked = false;
}
});
fileInput.on('filebatchselected', function(event, files) { // there are some files to upload
filesToUpload = files.length
});
fileInput.on('filecleared', function(event) { // no files to upload
filesToUpload = 0;
});
JS;
\Yii::$app->view->registerJs($js);
}