language; $i = $attachmentCollection->getIndex(); $minify = $minify ?? false; $addNewFile = $addNewFile ?? true; $canDeleteFile = $canDeleteFile ?? true; $container_id = ($container_id ?? null); $message = Yii::t( 'abiturient/attachment-widget', 'Обычный текст сообщения подтверждающий удаление файла виджета сканов: `Вы уверены что хотите удалить прикреплённый файл?`' ); $attachment_is_required = $attachmentCollection->isRequired(); $required = $required ?? $attachment_is_required; $multiple = $multiple ?? true; if (!$attachmentCollection->attachments && $attachment_is_required) { $addNewFile = true; } $alertText = Yii::t( 'abiturient/attachment-widget', 'Текст сообщения алерта при попытки удаление единственного обязательного для прикрепления файла виджета сканов: `Вы пытаетесь удалить последнюю скан-копию. Для данного типа документа наличие скан-копий обязательно. Пожалуйста, добавьте другой файл и нажмите кнопку "Сохранить". После этого удаление текущего файла будет возможно.`' ); $attachmentFile = new Attachment(); $attr = "file[{$i}][]"; $model = ($model ?? $attachmentCollection->getModelEntity()); $id = $id ?? "{$model->formName()}{$i}"; $change_callback = << 0) { return true; } // файл уже сохранён ранее var preview = $(this).fileinput("getPreview"); return !!(preview && preview.content.length > 0); }); // проверяем есть ли для текущего набора документов прикреплённые файлы к любому attachment_type // все инпуты набора документов требуют файл если ни в одном из них нет уже загруженных var needs_required = filled_inputs_in_document_set.length === 0; document_set_selector.each(function () { var self = $(this); self.data("fileinput").required = needs_required; if (self.data("container_id")) { var container = $("#" + self.data("container_id")); if (needs_required) { container.addClass("required"); } else { container.removeClass("required"); } } }); // автоматом не скрываются ошибки $(".file-input.has-error").removeClass("has-error"); $(".file-error-message").hide(); } } } JS; $filepredelete_callback = << 0); }); is_last_file = filled_inputs_in_document_set.length === 0; } } if (is_last_file) { alert('{$alertText}'); return true; } } return !confirm("{$message}"); } JS; $initialPreviews = $attachmentCollection->getInitialPreviews(); $initialPreviewConfig = $attachmentCollection->getInitialPreviewConfig(); $config = [ 'id' => $id, 'model' => $model, 'attribute' => $attr, 'language' => $appLanguage, 'disabled' => $isReadonly, 'options' => [ 'id' => $id, 'class' => 'attachment_file', 'multiple' => $multiple, 'data' => [ 'is_required' => (int)$attachment_is_required, 'need_one_doc' => (int)!!ArrayHelper::getValue($attachmentCollection, 'attachmentType.need_one_of_documents'), 'document_set_uid' => ArrayHelper::getValue($attachmentCollection, 'attachmentType.documentSetRef.reference_uid'), 'container_id' => $container_id, ], ], 'pluginOptions' => [ 'theme' => 'fa4', 'msgProcessing' => Yii::t( 'abiturient/attachment-widget', 'Текст сообщения обработки скана виджета сканов: `Обработка ...`' ), 'allowedFileExtensions' => Attachment::getExtensionsList(), 'required' => $required && !$initialPreviews, 'removeClass' => 'btn btn-danger', 'overwriteInitial' => false, 'initialPreviewDownloadUrl' => $attachmentCollection->getFileDownloadUrl(), 'initialPreview' => $initialPreviews, 'deleteUrl' => $canDeleteFile ? $attachmentCollection->getFileDeleteUrl() : '', 'initialPreviewAsData' => true, 'initialPreviewConfig' => $initialPreviewConfig, 'removeLabel' => Yii::t( 'abiturient/attachment-widget', 'Подпись кнопки очистки добавленных файлов виджета сканов: `Очистить`' ), 'removeFromPreviewOnError' => true, 'showPreview' => !$minify, 'showCaption' => true, 'showUpload' => false, 'showBrowse' => $addNewFile, 'initialPreviewShowDelete' => $canDeleteFile, 'showRemove' => !$minify && $canDeleteFile, 'showClose' => false, 'showDownload' => true, 'showDelete' => false, 'maxFileSize' => iniGet::getUploadMaxFilesize(), 'dropZoneEnabled' => $addNewFile, ], 'pluginEvents' => array_merge( [ 'filepredelete' => $filepredelete_callback, 'change' => $change_callback, 'filecleared' => $files_check_callback, 'filedeleted' => $files_check_callback, ], $pluginEvents ?? [] ) ]; $file_input = null; if (isset($form)) { $attachmentTypeTemplate = ArrayHelper::getValue($attachmentCollection, 'attachmentType.attachmentTypeTemplate'); if ($attachmentTypeTemplate) { $label = $this->render( '@abiturient/views/partial/fileComponent/_modal_attachment_template_preview', [ 'attachmentTypeLabel' => $label, 'attachmentTypeTemplate' => $attachmentTypeTemplate, ] ); } $file_input = $form->field($model, $attr ?? "file[{$i}][]") ->widget(FileInput::class, $config)->label($label ?? false); } else { $file_input = FileInput::widget($config); } ?>
attachments as $attachment) : ?>

filename, $attachment->getFileDownloadUrl()) ?> attachments) == 1 && $attachmentCollection->isRequired())) : ?> ", $attachment->getFileDeleteUrl(true)) ?>