{% extends "base.html" %} {% block title %}Nowy temat - Forum - Norda Biznes Partner{% endblock %} {% block extra_css %} {% endblock %} {% block content %}

Utwórz nowy temat

Rozpocznij dyskusję z innymi członkami Norda Biznes

Zasady forum

  • Pisz zwięźle i na temat
  • Szanuj innych członków
  • Nie publikuj reklam ani spamu
  • Unikaj poufnych informacji biznesowych

Wybierz typ tematu

Minimum 5 znaków

Minimum 10 znaków. Im więcej szczegółów, tym lepsze odpowiedzi.

Przeciągnij obraz lub kliknij tutaj

Możesz też wkleić ze schowka (Ctrl+V) JPG, PNG, GIF do 5MB
Preview
Anuluj
{% endblock %} {% block extra_js %} function showToast(message, type = 'info', duration = 4000) { const container = document.getElementById('toastContainer'); const icons = { success: '✓', error: '✕', warning: '⚠', info: 'ℹ' }; const toast = document.createElement('div'); toast.className = `toast ${type}`; toast.innerHTML = `${icons[type]||'ℹ'}${message}`; container.appendChild(toast); setTimeout(() => { toast.style.animation = 'toastOut 0.3s ease forwards'; setTimeout(() => toast.remove(), 300); }, duration); } // Client-side validation document.querySelector('form').addEventListener('submit', function(e) { const title = document.getElementById('title'); const content = document.getElementById('content'); let valid = true; if (title.value.length < 5) { title.style.borderColor = 'var(--error)'; valid = false; } else { title.style.borderColor = ''; } if (content.value.length < 10) { content.style.borderColor = 'var(--error)'; valid = false; } else { content.style.borderColor = ''; } if (!valid) { e.preventDefault(); } }); // File upload handling const dropzone = document.getElementById('dropzone'); const fileInput = document.getElementById('attachment'); const uploadPreview = document.getElementById('uploadPreview'); const previewImage = document.getElementById('previewImage'); const fileName = document.getElementById('fileName'); const fileSize = document.getElementById('fileSize'); const removeFile = document.getElementById('removeFile'); // Click to upload dropzone.addEventListener('click', () => fileInput.click()); // Drag and drop dropzone.addEventListener('dragover', (e) => { e.preventDefault(); dropzone.classList.add('drag-over'); }); dropzone.addEventListener('dragleave', () => { dropzone.classList.remove('drag-over'); }); dropzone.addEventListener('drop', (e) => { e.preventDefault(); dropzone.classList.remove('drag-over'); const file = e.dataTransfer.files[0]; if (file && file.type.startsWith('image/')) { handleFile(file); } }); // File input change fileInput.addEventListener('change', (e) => { const file = e.target.files[0]; if (file) { handleFile(file); } }); // Paste from clipboard (Ctrl+V) document.addEventListener('paste', (e) => { const items = e.clipboardData?.items; if (!items) return; for (let i = 0; i < items.length; i++) { if (items[i].type.startsWith('image/')) { e.preventDefault(); const file = items[i].getAsFile(); if (file) { handleFile(file); } break; } } }); // Remove file removeFile.addEventListener('click', () => { fileInput.value = ''; uploadPreview.classList.remove('active'); dropzone.style.display = 'block'; }); function handleFile(file) { // Validate file size (5MB) if (file.size > 5 * 1024 * 1024) { showToast('Plik jest za duży (max 5MB)', 'error'); return; } // Validate file type if (!['image/jpeg', 'image/png', 'image/gif'].includes(file.type)) { showToast('Dozwolone formaty: JPG, PNG, GIF', 'warning'); return; } // Create a new File object and assign to input const dataTransfer = new DataTransfer(); dataTransfer.items.add(file); fileInput.files = dataTransfer.files; // Show preview const reader = new FileReader(); reader.onload = (e) => { previewImage.src = e.target.result; fileName.textContent = file.name; fileSize.textContent = formatFileSize(file.size); uploadPreview.classList.add('active'); dropzone.style.display = 'none'; }; reader.readAsDataURL(file); } function formatFileSize(bytes) { if (bytes < 1024) return bytes + ' B'; if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB'; return (bytes / (1024 * 1024)).toFixed(1) + ' MB'; } {% endblock %}