public function init() { JuiAsset::register($this->view); parent::init(); FileHelper::removeDirectory($this->getModule()->getUserDirPath()); // Delete all uploaded files in past $this->pluginOptions = array_replace($this->pluginOptions, ['uploadUrl' => Url::toRoute('/file/file/upload'), 'initialPreview' => $this->model->isNewRecord ? [] : $this->model->getInitialPreview(), 'initialPreviewConfig' => $this->model->isNewRecord ? [] : $this->model->getInitialPreviewConfig(), 'uploadAsync' => false, 'otherActionButtons' => '<button type="button" class="js-caption-rename rename-button btn btn-xs btn-default" title="Переименовать" {dataKey}><i class="glyphicon glyphicon-comment text-danger"></i></button>' . '<input type="checkbox" class="jsFileMain" title="Главная" {dataKey}>', 'slugCallback' => new JsExpression(<<<JS function(text) {return text.split(/(\\|\\/)/g).pop();} JS ), 'layoutTemplates' => ['footer' => ' <div class="file-thumbnail-footer"> <div style="margin:5px 0"> <input class="form-control js-custom-caption" value="{caption}" /> </div>{actions} </div>']]); $this->options = array_replace($this->options, ['id' => $this->id]); $urlSetMain = Url::toRoute('/file/file/set-main'); $urlRenameFile = Url::toRoute('/file/file/rename'); $js = <<<JS var fileInput = \$('#file-input'); var form = fileInput.closest('form'); var filesUploaded = false; var filesToUpload = 0; var uploadButtonClicked = false; form.on('beforeSubmit', function() { // form submit event if (!filesUploaded && filesToUpload) { console.log('upload'); \$('#file-input').fileinput('upload').fileinput('lock'); return false; } }); fileInput.on('filebatchpreupload', function() { uploadButtonClicked = true; }); fileInput.on('filebatchuploadsuccess', function() { filesUploaded = true; \$('#file-input').fileinput('unlock'); if (uploadButtonClicked) { form.submit(); } else { uploadButtonClicked = false; } }); fileInput.on('filebatchselected', function(event, files) { filesToUpload = files.length }); fileInput.on('filecleared', function() { filesToUpload = 0; }); \$('.formInput-{$this->getId()}').on('change', '.jsFileMain', function() { var element = \$(this); var key = element.data('key'); \$.ajax( '{$urlSetMain}', { method: "POST", data: { id:key, value:element.prop('checked') }, success: function(data) { \$('.formInput-{$this->getId()} .jsFileMain').prop('checked', false); if(data.id) { \$('.formInput-{$this->getId()} .jsFileMain[data-key="' + data.id + '"]').prop('checked', true); } } } ); }); \$('.formInput-{$this->getId()}').on('click', '.js-caption-rename', function() { var element = \$(this); var key = element.data('key'); var input = \$(this).parents('.file-preview-frame').find('.js-custom-caption'); var name = input.val(); \$.ajax( '{$urlRenameFile}', { method: "POST", data: { id: key, name: name }, success: function(data) { } } ); }); JS; Yii::$app->view->registerJs($js); }