Depuis la version 1.1
modifié par superadmin
sur 2026/01/29 14:13
sur 2026/01/29 14:13
Commentaire de modification :
Install extension [org.xwiki.platform:xwiki-platform-distribution-flavor-common/17.10.2]
Résumé
-
Propriétés de la Page (2 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Auteur du document
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. superadmin1 +xwiki:XWiki.Admin - Contenu
-
... ... @@ -1,40 +1,397 @@ 1 -== Bienvenue sur votre Wiki == 1 +{{html clean="false"}} 2 +<style> 3 +.bouton-guide-multicolore { 4 + display: inline-block; 5 + padding: 40px 80px; 6 + font-size: 36px; 7 + font-weight: bold; 8 + text-decoration: none; 9 + color: white; 10 + background: linear-gradient(135deg, #667eea 0%, #764ba2 25%, #f093fb 50%, #4facfe 75%, #00f2fe 100%); 11 + background-size: 300% 300%; 12 + border-radius: 60px; 13 + box-shadow: 0 0 40px rgba(102, 126, 234, 0.8), 0 0 80px rgba(118, 75, 162, 0.6); 14 + transition: all 0.3s ease; 15 + animation: gradient-shift 3s ease infinite, pulse-glow 1.5s ease-in-out infinite, flash-extreme 0.8s linear infinite; 16 + text-align: center; 17 + border: 3px solid rgba(255, 255, 255, 0.5); 18 + cursor: pointer; 19 + font-family: Arial, sans-serif; 20 + position: relative; 21 + overflow: hidden; 22 + z-index: 10; 23 +} 2 2 3 -XWiki est le meilleur outil pour organiser votre connaissance. Un //Wiki// est organisé suivant une hiérarchie de //pages//. Vous pouvez créer de multiples wikis, chacun avec son propre ensemble de pages. 25 +.bouton-guide-multicolore.falling { 26 + animation: fall-and-bounce 1.2s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards, 27 + gradient-shift 1s ease infinite, 28 + pulse-glow 0.5s ease-in-out infinite, 29 + flash-extreme 0.3s linear infinite, 30 + rotate-fall 1.2s ease-in forwards; 31 + box-shadow: 0 0 100px rgba(102, 126, 234, 1), 0 0 200px rgba(118, 75, 162, 0.8); 32 +} 4 4 5 -XWiki peut être utilisé comme base de connaissance (pour le support, la documentation, les ventes, etc.), pour créer des espaces collaboratifs, ou même comme un intranet complet. 34 +.bouton-guide-multicolore::before { 35 + content: ''; 36 + position: absolute; 37 + top: -50%; 38 + left: -50%; 39 + width: 200%; 40 + height: 200%; 41 + background: linear-gradient(45deg, transparent, rgba(255, 255, 255, 0.3), transparent); 42 + animation: shine 2s linear infinite; 43 +} 6 6 7 -== Les bases == 45 +.bouton-guide-multicolore:hover:not(.falling) { 46 + transform: translateY(-8px) scale(1.15) rotate(2deg); 47 + box-shadow: 0 0 60px rgba(102, 126, 234, 1), 0 0 120px rgba(118, 75, 162, 0.8), 0 20px 40px rgba(0, 0, 0, 0.5); 48 + animation: gradient-shift 1s ease infinite, pulse-glow 0.5s ease-in-out infinite, flash-extreme 0.3s linear infinite, shake 0.5s ease infinite; 49 +} 8 8 9 -Pour utiliser votre Wiki au maximum de son potentiel, identifiez-vous et : 51 +.bouton-guide-multicolore:active { 52 + transform: translateY(-3px) scale(1.1); 53 +} 10 10 11 -Utilisez le bouton {{displayIcon name="pencil"/}} ci-dessus pour //éditer// cette page et commencer à adapter ce Wiki à vos besoins. 55 +/* Animation de chute */ 56 +@keyframes fall-and-bounce { 57 + 0% { 58 + transform: translateY(0) scale(1); 59 + } 60 + 40% { 61 + transform: translateY(calc(100vh - 200px)) scale(1.1, 0.9); 62 + } 63 + 50% { 64 + transform: translateY(calc(100vh - 200px)) scale(1.1, 0.9); 65 + } 66 + 65% { 67 + transform: translateY(calc(100vh - 350px)) scale(0.95, 1.05); 68 + } 69 + 75% { 70 + transform: translateY(calc(100vh - 200px)) scale(1.05, 0.95); 71 + } 72 + 85% { 73 + transform: translateY(calc(100vh - 250px)) scale(0.98, 1.02); 74 + } 75 + 95% { 76 + transform: translateY(calc(100vh - 200px)) scale(1.02, 0.98); 77 + } 78 + 100% { 79 + transform: translateY(calc(100vh - 200px)) scale(1); 80 + } 81 +} 12 12 13 -Utilisez le bouton {{displayIcon name="add"/}} ci-dessus pour //ajouter// de nouvelles pages à votre Wiki et créez la //hiérarchie// qui vous convient le mieux pour organiser votre contenu. 83 +@keyframes rotate-fall { 84 + 0% { 85 + transform: rotate(0deg); 86 + } 87 + 100% { 88 + transform: rotate(720deg); 89 + } 90 +} 14 14 15 -Utilisez le fil d'Ariane {{displayIcon name="home"/}} localisé au dessus du titre pour //naviguer// parmi vos pages. Vous pouvez être facilement perdu dans un Wiki important sans ce fil d'Ariane. 92 +/* Cercles hypnotiques */ 93 +.hypnotic-circle { 94 + position: absolute; 95 + border-radius: 50%; 96 + border: 3px solid; 97 + animation: spin-hypnotic 4s linear infinite; 98 +} 16 16 17 -Vous pouvez aussi utiliser le [[bac à sable>>Sandbox.WebHome]] pour plus de contenu exemple ainsi que comme endroit pour expérimenter les fonctionnalités de votre Wiki. 100 +.circle1 { 101 + width: 300px; 102 + height: 300px; 103 + border-color: rgba(102, 126, 234, 0.6) transparent rgba(240, 147, 251, 0.6) transparent; 104 + animation: spin-hypnotic 3s linear infinite; 105 +} 18 18 19 - {{box}}Apprenez à utiliser XWiki avec le [[Guide "Getting Started" (en anglais)>>https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/GettingStarted/WebHome]].{{/box}} 107 +.circle2 { 108 + width: 400px; 109 + height: 400px; 110 + border-color: transparent rgba(118, 75, 162, 0.5) transparent rgba(79, 172, 254, 0.5); 111 + animation: spin-hypnotic-reverse 4s linear infinite; 112 +} 20 20 21 -(%class="row"%) 22 -((( 23 -(%class="col-xs-12 col-sm-6"%) 24 -((( 25 -== Étendez votre Wiki == 114 +.circle3 { 115 + width: 500px; 116 + height: 500px; 117 + border-color: rgba(0, 242, 254, 0.4) transparent rgba(240, 147, 251, 0.4) transparent; 118 + animation: spin-hypnotic 5s linear infinite; 119 +} 26 26 27 -Pour étendre les fonctionnalités de votre Wiki avec les modules dont //vous// avez besoin, allez sur le [[gestionnaire d'extensions>>XWiki.XWikiPreferences||queryString="editor=globaladmin§ion=XWiki.Extensions"]] où vous pouvez rechercher et installer des extensions. 121 +.circle4 { 122 + width: 600px; 123 + height: 600px; 124 + border-color: transparent rgba(102, 126, 234, 0.3) transparent rgba(118, 75, 162, 0.3); 125 + animation: spin-hypnotic-reverse 6s linear infinite; 126 +} 28 28 29 -Pour naviguer dans les 900+ extensions contribuées par la communauté XWiki, visitez la [[galerie d'extensions>>https://extensions.xwiki.org]]. 30 -))) 128 +/* Spirale hypnotique */ 129 +.spiral { 130 + position: absolute; 131 + width: 700px; 132 + height: 700px; 133 + border-radius: 50%; 134 + background: conic-gradient( 135 + from 0deg, 136 + transparent 0deg, 137 + rgba(102, 126, 234, 0.3) 90deg, 138 + transparent 180deg, 139 + rgba(240, 147, 251, 0.3) 270deg, 140 + transparent 360deg 141 + ); 142 + animation: spin-hypnotic 8s linear infinite; 143 +} 31 31 32 -(%class="col-xs-12 col-sm-6"%) 33 -((( 34 -== Créez votre application == 145 +/* Rayons rotatifs */ 146 +.ray { 147 + position: absolute; 148 + width: 400px; 149 + height: 4px; 150 + background: linear-gradient(90deg, transparent, rgba(79, 172, 254, 0.8), transparent); 151 + transform-origin: center; 152 + animation: spin-ray 3s linear infinite; 153 +} 35 35 36 -Pour aller plus loin que les extensions disponibles, définissez vos //propres structures// pour vos contenus en fonction de //vos// besoins et créez //vos// propres applications avec [["App Within Minutes">>AppWithinMinutes.WebHome]] (AWM). 155 +.ray:nth-child(2) { 156 + animation-delay: -1s; 157 +} 37 37 38 -AWM vous aide et simplifie pour vous et vos utilisateurs la création et la gestion de vos informations. 39 -))) 40 -))) 159 +.ray:nth-child(3) { 160 + animation-delay: -2s; 161 +} 162 + 163 +@keyframes gradient-shift { 164 + 0% { background-position: 0% 50%; } 165 + 50% { background-position: 100% 50%; } 166 + 100% { background-position: 0% 50%; } 167 +} 168 + 169 +@keyframes pulse-glow { 170 + 0%, 100% { 171 + box-shadow: 0 0 40px rgba(102, 126, 234, 0.8), 0 0 80px rgba(118, 75, 162, 0.6); 172 + } 173 + 50% { 174 + box-shadow: 0 0 80px rgba(240, 147, 251, 1), 0 0 160px rgba(79, 172, 254, 0.9), 0 0 200px rgba(0, 242, 254, 0.7); 175 + } 176 +} 177 + 178 +@keyframes flash-extreme { 179 + 0%, 49%, 51%, 100% { 180 + opacity: 1; 181 + filter: brightness(1); 182 + } 183 + 50% { 184 + opacity: 0.7; 185 + filter: brightness(1.8) saturate(1.5); 186 + } 187 +} 188 + 189 +@keyframes shine { 190 + 0% { 191 + transform: translateX(-100%) translateY(-100%) rotate(45deg); 192 + } 193 + 100% { 194 + transform: translateX(100%) translateY(100%) rotate(45deg); 195 + } 196 +} 197 + 198 +@keyframes shake { 199 + 0%, 100% { transform: translateY(-8px) scale(1.15) rotate(0deg); } 200 + 25% { transform: translateY(-8px) scale(1.15) rotate(-3deg); } 201 + 75% { transform: translateY(-8px) scale(1.15) rotate(3deg); } 202 +} 203 + 204 +@keyframes spin-hypnotic { 205 + from { transform: translate(-50%, -50%) rotate(0deg); } 206 + to { transform: translate(-50%, -50%) rotate(360deg); } 207 +} 208 + 209 +@keyframes spin-hypnotic-reverse { 210 + from { transform: translate(-50%, -50%) rotate(360deg); } 211 + to { transform: translate(-50%, -50%) rotate(0deg); } 212 +} 213 + 214 +@keyframes spin-ray { 215 + from { transform: translate(-50%, -50%) rotate(0deg); } 216 + to { transform: translate(-50%, -50%) rotate(360deg); } 217 +} 218 + 219 +.bouton-container { 220 + text-align: center; 221 + padding: 100px 20px; 222 + min-height: 400px; 223 + display: flex; 224 + align-items: center; 225 + justify-content: center; 226 + background: radial-gradient(circle at center, #1a1a2e 0%, #0f0f1e 100%); 227 + position: relative; 228 + overflow: hidden; 229 +} 230 + 231 +.hypnotic-background { 232 + position: absolute; 233 + top: 50%; 234 + left: 50%; 235 + transform: translate(-50%, -50%); 236 + width: 100%; 237 + height: 100%; 238 + display: flex; 239 + align-items: center; 240 + justify-content: center; 241 +} 242 + 243 +.sound-control { 244 + position: fixed; 245 + bottom: 20px; 246 + right: 20px; 247 + background: rgba(102, 126, 234, 0.8); 248 + color: white; 249 + border: none; 250 + padding: 10px 20px; 251 + border-radius: 30px; 252 + cursor: pointer; 253 + font-size: 16px; 254 + z-index: 1000; 255 + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); 256 +} 257 + 258 +.sound-control:hover { 259 + background: rgba(118, 75, 162, 0.9); 260 +} 261 +</style> 262 + 263 +<div class="bouton-container"> 264 + <div class="hypnotic-background"> 265 + <div class="spiral"></div> 266 + <div class="hypnotic-circle circle1"></div> 267 + <div class="hypnotic-circle circle2"></div> 268 + <div class="hypnotic-circle circle3"></div> 269 + <div class="hypnotic-circle circle4"></div> 270 + <div class="ray"></div> 271 + <div class="ray"></div> 272 + <div class="ray"></div> 273 + </div> 274 + 275 + <a href="https://epn.doc.decalog.net/wiki/epn/view/Guide%20administrateur%20%26%20utilisateur/" class="bouton-guide-multicolore" id="hypnoticButton"> 276 + Guide Administrateur & Utilisateur 277 + </a> 278 + 279 + <button class="sound-control" id="soundToggle">🔊 Son ON</button> 280 +</div> 281 + 282 +<script> 283 +// Création du contexte audio 284 +const audioContext = new (window.AudioContext || window.webkitAudioContext)(); 285 +let oscillator = null; 286 +let gainNode = null; 287 +let isPlaying = false; 288 +let currentDuration = 0.1; // Durée normale de chaque "tu" 289 +let patternTimeout = null; 290 + 291 +function playTututu() { 292 + if (oscillator) return; // Déjà en train de jouer 293 + 294 + oscillator = audioContext.createOscillator(); 295 + gainNode = audioContext.createGain(); 296 + 297 + oscillator.connect(gainNode); 298 + gainNode.connect(audioContext.destination); 299 + 300 + // Fréquence pour le son "tu" 301 + oscillator.frequency.value = 800; 302 + oscillator.type = 'square'; // Son électronique 303 + 304 + // Volume 305 + gainNode.gain.value = 0.1; 306 + 307 + oscillator.start(); 308 + isPlaying = true; 309 + 310 + // Créer l'effet tututututu en modulant la fréquence 311 + schedulePattern(); 312 +} 313 + 314 +function schedulePattern() { 315 + if (!isPlaying) return; 316 + 317 + const pattern = [800, 900, 800, 950, 800, 900, 800, 1000]; 318 + let time = audioContext.currentTime; 319 + 320 + pattern.forEach((freq, index) => { 321 + if (oscillator) { 322 + oscillator.frequency.setValueAtTime(freq, time + (index * currentDuration)); 323 + } 324 + }); 325 + 326 + patternTimeout = setTimeout(schedulePattern, pattern.length * currentDuration * 1000); 327 +} 328 + 329 +function stopSound() { 330 + if (oscillator) { 331 + isPlaying = false; 332 + oscillator.stop(); 333 + oscillator.disconnect(); 334 + oscillator = null; 335 + gainNode.disconnect(); 336 + gainNode = null; 337 + } 338 + if (patternTimeout) { 339 + clearTimeout(patternTimeout); 340 + patternTimeout = null; 341 + } 342 +} 343 + 344 +function speedUpSound() { 345 + currentDuration = 0.03; // Super rapide au survol ! 346 +} 347 + 348 +function normalizeSound() { 349 + currentDuration = 0.1; // Vitesse normale 350 +} 351 + 352 +// Contrôle du bouton 353 +const soundToggle = document.getElementById('soundToggle'); 354 +const hypnoticButton = document.getElementById('hypnoticButton'); 355 +let soundEnabled = true; 356 +let hasFallen = false; 357 + 358 +soundToggle.addEventListener('click', function() { 359 + soundEnabled = !soundEnabled; 360 + if (soundEnabled) { 361 + playTututu(); 362 + soundToggle.textContent = '🔊 Son ON'; 363 + } else { 364 + stopSound(); 365 + soundToggle.textContent = '🔇 Son OFF'; 366 + } 367 +}); 368 + 369 +// Événements de survol pour accélérer le son ET faire tomber le bouton 370 +hypnoticButton.addEventListener('mouseenter', function() { 371 + if (soundEnabled && isPlaying) { 372 + speedUpSound(); 373 + } 374 + 375 + // Faire tomber le bouton ! 376 + if (!hasFallen) { 377 + hypnoticButton.classList.add('falling'); 378 + hasFallen = true; 379 + 380 + // Réinitialiser après l'animation 381 + setTimeout(() => { 382 + hypnoticButton.classList.remove('falling'); 383 + hasFallen = false; 384 + }, 1200); 385 + } 386 +}); 387 + 388 +hypnoticButton.addEventListener('mouseleave', function() { 389 + if (soundEnabled && isPlaying) { 390 + normalizeSound(); 391 + } 392 +}); 393 + 394 +// Démarrer automatiquement le son 395 +playTututu(); 396 +</script> 397 +{{/html}}