| |
|
| |
|
| | document.addEventListener('DOMContentLoaded', function() {
|
| |
|
| | var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
|
| | var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
|
| | return new bootstrap.Tooltip(tooltipTriggerEl);
|
| | });
|
| |
|
| |
|
| | setTimeout(function() {
|
| | var alerts = document.querySelectorAll('.alert');
|
| | alerts.forEach(function(alert) {
|
| | var bsAlert = new bootstrap.Alert(alert);
|
| | bsAlert.close();
|
| | });
|
| | }, 5000);
|
| |
|
| |
|
| | var uploadForm = document.querySelector('form[action*="upload_file"]');
|
| | if (uploadForm) {
|
| | uploadForm.addEventListener('submit', function(e) {
|
| | var fileInput = this.querySelector('input[type="file"]');
|
| | if (fileInput.files.length > 0) {
|
| | var fileSize = fileInput.files[0].size;
|
| | if (fileSize > 100 * 1024 * 1024) {
|
| | e.preventDefault();
|
| | alert('Файл слишком большой. Максимальный размер файла - 100MB.');
|
| | return false;
|
| | }
|
| |
|
| |
|
| | var modalBody = this.querySelector('.modal-body');
|
| | var progressDiv = document.createElement('div');
|
| | progressDiv.className = 'progress mt-3';
|
| | progressDiv.innerHTML = '<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 0%"></div>';
|
| | modalBody.appendChild(progressDiv);
|
| |
|
| |
|
| | var progressBar = progressDiv.querySelector('.progress-bar');
|
| | var width = 0;
|
| | var interval = setInterval(function() {
|
| | if (width >= 90) {
|
| | clearInterval(interval);
|
| | } else {
|
| | width += 5;
|
| | progressBar.style.width = width + '%';
|
| | }
|
| | }, 300);
|
| | }
|
| | });
|
| | }
|
| |
|
| |
|
| | var deleteForms = document.querySelectorAll('form[action*="delete_file"]');
|
| | deleteForms.forEach(function(form) {
|
| | form.addEventListener('submit', function(e) {
|
| | if (!confirm('Вы уверены, что хотите удалить этот элемент?')) {
|
| | e.preventDefault();
|
| | return false;
|
| | }
|
| | });
|
| | });
|
| |
|
| |
|
| | var shareLinks = document.querySelectorAll('.share-link-copy');
|
| | shareLinks.forEach(function(link) {
|
| | link.addEventListener('click', function(e) {
|
| | e.preventDefault();
|
| | var shareUrl = this.getAttribute('data-share-url');
|
| |
|
| |
|
| | var tempInput = document.createElement('input');
|
| | tempInput.value = shareUrl;
|
| | document.body.appendChild(tempInput);
|
| | tempInput.select();
|
| | document.execCommand('copy');
|
| | document.body.removeChild(tempInput);
|
| |
|
| |
|
| | alert('Ссылка скопирована в буфер обмена!');
|
| | });
|
| | });
|
| | });
|
| |
|
| |
|
| | function previewImage(input) {
|
| | if (input.files && input.files[0]) {
|
| | var reader = new FileReader();
|
| |
|
| | reader.onload = function(e) {
|
| | var previewContainer = document.getElementById('imagePreview');
|
| | if (!previewContainer) {
|
| | previewContainer = document.createElement('div');
|
| | previewContainer.id = 'imagePreview';
|
| | previewContainer.className = 'mt-3 text-center';
|
| | input.parentNode.appendChild(previewContainer);
|
| | }
|
| |
|
| | previewContainer.innerHTML = '<img src="' + e.target.result + '" class="img-thumbnail" style="max-height: 200px;">';
|
| | }
|
| |
|
| | reader.readAsDataURL(input.files[0]);
|
| | }
|
| | }
|
| |
|
| |
|
| | function filterFiles() {
|
| | var input = document.getElementById('fileFilter');
|
| | var filter = input.value.toUpperCase();
|
| | var table = document.querySelector('table');
|
| | var tr = table.getElementsByTagName('tr');
|
| |
|
| | for (var i = 1; i < tr.length; i++) {
|
| | var td = tr[i].getElementsByTagName('td')[0];
|
| | if (td) {
|
| | var txtValue = td.textContent || td.innerText;
|
| | if (txtValue.toUpperCase().indexOf(filter) > -1) {
|
| | tr[i].style.display = '';
|
| | } else {
|
| | tr[i].style.display = 'none';
|
| | }
|
| | }
|
| | }
|
| | } |