Générateur de Pages Ressources - IA Formation

🎨 Générateur de Pages Ressources

IA Formation - Multi-thèmes & Multi-usages

📝 Configuration de la page

🔵 IA Formation
🟢 Corporate
🟣 Moderne
đź”´ Classique

📥 Mise à jour (Optionnel)

đź’ˇ Pour mettre Ă  jour une page existante

Collez le code HTML de votre page actuelle ci-dessous :

âž• Ajouter une ressource

🚀 Actions

📋 Ressources ajoutées

📱 Aperçu de la page

🚀 Configurez votre page et ajoutez des ressources pour voir l'aperçu

`; return html; } function importFromHTML() { const htmlContent = document.getElementById('importHTML').value.trim(); if (!htmlContent) { alert('⚠️ Veuillez coller du code HTML dans la zone de texte'); return; } try { // Créer un document temporaire pour parser le HTML const parser = new DOMParser(); const doc = parser.parseFromString(htmlContent, 'text/html'); // Extraire le titre et sous-titre const titleElement = doc.querySelector('.page-title'); const subtitleElement = doc.querySelector('.page-subtitle'); if (titleElement) { document.getElementById('pageTitle').value = titleElement.textContent.trim(); } if (subtitleElement) { document.getElementById('pageSubtitle').value = subtitleElement.textContent.trim(); } // Réinitialiser les ressources resources = { outils: [], guides: [], reunions: [], formations: [], pedagogiques: [], guides_peda: [], codage: [], pdf: [] }; // Extraire les ressources par section const sections = doc.querySelectorAll('.category-section'); sections.forEach(section => { const titleElement = section.querySelector('.category-title'); if (titleElement) { const sectionTitle = titleElement.textContent.trim(); let category = null; // Déterminer la catégorie basée sur le titre if (sectionTitle.includes('Outils de vente')) category = 'outils'; else if (sectionTitle.includes('Guides pratiques')) category = 'guides'; else if (sectionTitle.includes('Comptes-rendus') || sectionTitle.includes('réunions')) category = 'reunions'; else if (sectionTitle.includes('Formations')) category = 'formations'; else if (sectionTitle.includes('Outils pédagogiques')) category = 'pedagogiques'; else if (sectionTitle.includes('Guides pédagogiques')) category = 'guides_peda'; else if (sectionTitle.includes('Outils de codage')) category = 'codage'; else if (sectionTitle.includes('PDF')) category = 'pdf'; if (category) { const cards = section.querySelectorAll('.resource-card'); cards.forEach((card, index) => { const titleEl = card.querySelector('.resource-title'); const descEl = card.querySelector('.resource-description'); const linkEl = card.querySelector('.resource-link'); if (titleEl && descEl && linkEl) { let title = titleEl.textContent.trim(); let date = null; // Extraire la date si c'est un CR de réunion if (category === 'reunions') { const dateMatch = title.match(/- (\d{1,2} \w+ \d{4})$/); if (dateMatch) { const dateStr = dateMatch[1]; title = title.replace(dateMatch[0], '').trim(); // Convertir la date française en format ISO const months = { 'janvier': '01', 'février': '02', 'mars': '03', 'avril': '04', 'mai': '05', 'juin': '06', 'juillet': '07', 'août': '08', 'septembre': '09', 'octobre': '10', 'novembre': '11', 'décembre': '12' }; const parts = dateStr.split(' '); if (parts.length === 3) { const day = parts[0].padStart(2, '0'); const month = months[parts[1].toLowerCase()]; const year = parts[2]; if (month) { date = `${year}-${month}-${day}`; } } } } const resource = { id: Date.now() + index, title: title, description: descEl.textContent.trim(), link: linkEl.href, date: date }; resources[category].push(resource); } }); } } }); // Vider la zone d'import document.getElementById('importHTML').value = ''; // Mettre à jour l'affichage updateDisplay(); alert('✅ Données importées avec succès !'); } catch (error) { console.error('Erreur lors de l\'import:', error); alert('❌ Erreur lors de l\'import du HTML. Vérifiez le format du code.'); } } function copyHTML() { const htmlCode = document.getElementById('htmlCode'); htmlCode.select(); document.execCommand('copy'); alert('✅ Code HTML copié dans le presse-papiers !'); } function closeModal() { document.getElementById('htmlModal').style.display = 'none'; } function clearAll() { if (confirm('⚠️ Êtes-vous sûr de vouloir vider toutes les ressources ?')) { resources = { outils: [], guides: [], reunions: [], formations: [], pedagogiques: [], guides_peda: [], codage: [], pdf: [] }; updateDisplay(); } } function saveData() { const data = { resources: resources, pageTitle: document.getElementById('pageTitle').value, pageSubtitle: document.getElementById('pageSubtitle').value, theme: currentTheme }; const dataStr = JSON.stringify(data, null, 2); const blob = new Blob([dataStr], {type: 'application/json'}); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'page-ressources-' + new Date().toISOString().split('T')[0] + '.json'; a.click(); URL.revokeObjectURL(url); } function loadData() { const input = document.createElement('input'); input.type = 'file'; input.accept = '.json'; input.onchange = function(e) { const file = e.target.files[0]; if (file) { const reader = new FileReader(); reader.onload = function(e) { try { const data = JSON.parse(e.target.result); if (data.resources) resources = data.resources; if (data.pageTitle) document.getElementById('pageTitle').value = data.pageTitle; if (data.pageSubtitle) document.getElementById('pageSubtitle').value = data.pageSubtitle; if (data.theme) { currentTheme = data.theme; document.querySelectorAll('.theme-option').forEach(o => o.classList.remove('active')); document.querySelector(`[data-theme="${data.theme}"]`).classList.add('active'); } updateDisplay(); alert('✅ Données chargées avec succès !'); } catch (error) { alert('❌ Erreur lors du chargement du fichier'); } }; reader.readAsText(file); } }; input.click(); } // Fermer la modal en cliquant à l'extérieur document.getElementById('htmlModal').addEventListener('click', function(e) { if (e.target === this) { closeModal(); } }); // Initialisation updateDisplay();