RD5 GOLD WEB EDITOR
π 0.gif
π 11.jpg
π 22.jpg
π AVISO-ALEX.PNG
π AVISO-ALEX2.PNG
π LOGUITO.JPG
π MUSICA.jpg
π OXODISCO-PLAY.gif
π OXODISCO2-STOP.gif
π XVOL1.gif
π XVOL2.gif
π aa4.html
π alex1.mp3
π aviso-evento.jpg
π barra0.gif
π barra1.gif
π barra2.gif
π barra3.gif
π barra4.gif
π binicio1.gif
π binicio2.gif
π canal.php.php
π centenax.gif
π click.mp3
π contacto.html
π cuenta.html
π decenax.gif
π decimax.gif
π dinero.html
π disco-c5d.html
π disco-d2.gif
π disco-oxo.gif
π disco-visitantes.html
π discob00.html
π discob000.html
π discob1.html
π donaciones.html
π donaciones.mp3
π donaciones.txt
π eliminar_video.php
π enapodcast.mp3
π eventos.html
π eventos.jpg
π filtro1.jpg
π filtro2.jpg
π fondo.jpg
π fondo2.jpg
π franja.GIF
π franja.gif
π franja2.GIF
π franja2.gif
π gold10-2.php
π gold10.php
π gold62.php
π gold93.php
π gp.php
π gw.php
π index.html
π index2.html
π index3.html
π index4.html
π logo.jpg
π manager3.php
π mdq lado 2.wav.
π meditacion-7.mp3
π mic.jpg
π minib2x2.html
π mm.php
π monitor.html
π musica.html
π oxoradio-play1.gif
π oxoradio-stop.gif
π pod-rlv.html
π pod-rlv2.html
π podcast-play.gif
π podcast-stops.gif
π podcast-visitantes.mp3
π podcast.jpg
π podcast2.jpg
π podcast2.mp3
π probando.html
π prueba.html
π prueba3.html
π publi-ing.jpg
π radio-c5d.html
π radio-rlv.html
π radio.GIF
π radio.jpg
π radio00.gif
π radio01.html
π radio02.html
π red.html
π repro2.html
π repros.html
π repros2.html
π repros4.html
π repros5.html
π repros6.html
π repros7.html
π repros8.html
π rlv-
π rlv-fresia.html
π rlv-logo2.gif
π rlv.html
π rlvv.html
π robots.txt
π rr.html
π sarita1.mp4
π sitemap.xml
π social.sqlite
π solo-podcast.html
π t-rlv.html
π titulo2.jpg
π unidadx.gif
π videos.html
π videos.jpg
π vinilo.mp3
π volumen-mas.jpg
π volumen-menos.jpg
π xrepros8.html
CΓDIGO (OSCURO GOLD)
VISTA PREVIA
πΎ GUARDAR
Tema: Monokai
Tema: Dracula
Tema: Material
Tema: Blackboard
Tema: Abyss
Monospace
Courier
12px
14px
16px
18px
20px
22px
24px
26px
28px
30px
32px
β· Rehacer
βΆ Deshacer
π BUSCAR
+ REPRO RADIO
SIG.
X
<?php // --- LΓGICA DE SERVIDOR (PHP) --- $archivo_actual = isset($_GET['edit']) ? $_GET['edit'] : 'nuevo.html'; $mensaje = ""; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['contenido'])) { $nombre = basename($_POST['nombre_archivo']); $datos = $_POST['contenido']; if (file_put_contents($nombre, $datos) !== false) { $archivo_actual = $nombre; $mensaje = "β GUARDADO"; } else { $mensaje = "β ERROR PERMISOS"; } } $contenido = file_exists($archivo_actual) ? file_get_contents($archivo_actual) : ""; $archivos = array_filter(scandir('.'), function($item) { return !is_dir($item) && preg_match('/\.(php|html|css|js)$/i', $item); }); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>GOLD EDITOR v6.0 - FINAL FIX</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.12/codemirror.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.12/theme/monokai.min.css"> <style> :root { --bg: #1e1e1e; --sidebar: #252526; --accent: #e67e22; --text: #cccccc; } body { margin:0; font-family: 'Segoe UI', sans-serif; height:100vh; background: var(--bg); color: var(--text); overflow: hidden; } .layout { display: flex; height: 100vh; } .sidebar { width: 220px; background: var(--sidebar); border-right: 1px solid #333; display: flex; flex-direction: column; } .sidebar-header { padding: 15px; font-weight: bold; color: #fff; border-bottom: 1px solid #333; font-size: 13px; } .file-list { flex: 1; overflow-y: auto; } .file-list a { display: block; padding: 10px 20px; color: #aaa; text-decoration: none; font-size: 13px; border-left: 3px solid transparent; border-bottom: 1px solid #2d2d2d; } .file-list a.active { background: BLACK; color: #fff; border-left-color: var(--accent); } .main { flex: 1; display: flex; flex-direction: column; } .toolbar { background: #333; padding: 10px 15px; display: flex; gap: 10px; align-items: center; border-bottom: 1px solid #000; } .tabs { display: flex; background: #2d2d2d; } .tab { padding: 10px 20px; cursor: pointer; background: #2d2d2d; font-size: 11px; border-right: 1px solid #1e1e1e; color: #888; font-weight: bold; } .tab.active { background: var(--bg); border-top: 2px solid var(--accent); color: white; } .content-area { flex: 1; position: relative; } .view { position: absolute; inset: 0; display: none; } .view.active { display: block; } .CodeMirror { height: 100%; font-family: 'Consolas', monospace; font-size: 14px; } iframe { width: 100%; height: 100%; border: none; background: #fff; } input, select { background: #3c3c3c; border: 1px solid #555; color: #fff; padding: 5px 8px; border-radius: 3px; } button { background: var(--accent); color: white; border: none; padding: 6px 14px; cursor: pointer; border-radius: 3px; font-weight: bold; } .btn-gray { background: GREEN; } .status-msg { font-size: 12px; color: #e67e22; margin-left: auto; font-weight: bold; } /* FORZAR FONDO NEGRO PURO */ .CodeMirror { background-color: #000000 !important; } /* FORZAR FONDO NEGRO EN LA BARRA DE NΓMEROS */ .CodeMirror-gutters { background-color: #000000 !important; border-right: 1px solid #222 !important; /* Una lΓnea sutil para separar */ } /* COLOR DE LOS NΓMEROS DE LΓNEA */ .CodeMirror-linenumber { color: #555 !important; } /* Pon esto al final de tu secciΓ³n de estilos <style> */ .CodeMirror-selected { background: #ff6600 !important; color: #000 !important; } .CodeMirror-focused .CodeMirror-selected { background: #ff6600 !important; } .CodeMirror-cursor { border-left: 2px solid #ffffff !important; } </style> </head> <body> <div class="layout"> <div class="sidebar"> <div class="sidebar-header">GOLD WM2</div> <div class="file-list"> <?php foreach ($archivos as $f): ?> <a href="?edit=<?= urlencode($f) ?>" class="<?= $archivo_actual == $f ? 'active' : '' ?>">π <?= htmlspecialchars($f) ?></a> <?php endforeach; ?> </div> </div> <div class="main"> <form method="POST" id="mainForm" action="?edit=<?= urlencode($archivo_actual) ?>" style="display:contents;"> <div class="toolbar"> <input type="text" name="nombre_archivo" value="<?= htmlspecialchars($archivo_actual) ?>"> <button type="button" onclick="ejecutarGuardado()">πΎ guardar</button> <button type="button" class="btn-gray" onclick="botonUndo()">β©</button> <button type="button" class="btn-gray" onclick="botonRedo()">βͺ</button> <select onchange="cambiarLetra(this.value)"> <option value="12px">12px</option> <option value="14px" selected>14px</option> <option value="16px">16px</option> <option value="20px">20px</option> </select> <button type="button" onclick="addRadioPro()" style="background:#d35400">π» radio </button> <div style="display:flex; gap:5px; margin-left: 10px;"> <input type="text" id="busqueda" placeholder="Buscar..."> <button type="button" class="btn-gray" onclick="buscarTexto()">π</button> </div> <span id="msg" class="status-msg"><?= $mensaje ?></span> </div> <div class="tabs"> <div id="t1" class="tab active" onclick="verTab('codigo')">EDITOR</div> <div id="t2" class="tab" onclick="verTab('preview')">VISTA PREVIA</div> </div> <div class="content-area"> <div id="codigo" class="view active"> <textarea id="editor" name="contenido"><?= htmlspecialchars($contenido) ?></textarea> </div> <div id="preview" class="view"> <iframe id="fPre"></iframe> </div> </div> </form> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.12/codemirror.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.12/mode/xml/xml.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.12/mode/javascript/javascript.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.12/mode/css/css.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.12/mode/htmlmixed/htmlmixed.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.12/addon/search/searchcursor.min.js"></script> <script> // InicializaciΓ³n del Editor con historial const editor = CodeMirror.fromTextArea(document.getElementById("editor"), { lineNumbers: true, mode: "htmlmixed", theme: "monokai", lineWrapping: true, undoDepth: 500 // Capacidad de historial }); // FUNCIONES UNDO Y REDO EXPLΓCITAS function botonUndo() { editor.undo(); editor.focus(); } function botonRedo() { editor.redo(); editor.focus(); } function ejecutarGuardado() { editor.save(); document.getElementById('mainForm').submit(); } function cambiarLetra(s) { document.querySelector('.CodeMirror').style.fontSize = s; editor.refresh(); } function buscarTexto() { let t = document.getElementById('busqueda').value; if(!t) return; let c = editor.getSearchCursor(t, editor.getCursor("to")); if(!c.findNext()) { c = editor.getSearchCursor(t); if(!c.findNext()) return alert("No hallado"); } editor.setSelection(c.from(), c.to()); editor.scrollIntoView({from: c.from(), to: c.to()}, 150); editor.focus(); } function verTab(tipo) { document.querySelectorAll('.tab, .view').forEach(e => e.classList.remove('active')); if(tipo === 'codigo') { document.getElementById('t1').classList.add('active'); document.getElementById('codigo').classList.add('active'); setTimeout(() => editor.refresh(), 50); } else { document.getElementById('t2').classList.add('active'); document.getElementById('preview').classList.add('active'); const d = document.getElementById('fPre').contentWindow.document; d.open(); d.write(editor.getValue()); d.close(); } } // Atajos de teclado (Undo con Ctrl+Z, Redo con Ctrl+Y) window.addEventListener('keydown', e => { if(e.ctrlKey && e.key === 's') { e.preventDefault(); ejecutarGuardado(); } if(e.ctrlKey && e.key === 'z') { /* CodeMirror ya lo maneja nativo */ } }); function addRadioPro() { const code = `\n<div style="background:black; color:#fff; padding:20px; border-radius:30px; width:300px; display:flex; flex-direction:column; align-items:center; border:2px solid #e67e22;"> <div style="position:relative; width:200px; height:200px;"> <canvas id="cv_v" width="200" height="200" style="position:absolute;"></canvas> <button id="p_b" onclick="c_rad()" style="position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:80px; height:80px; border-radius:50%; background:blue; border:none; color:green; font-size:30px; cursor:pointer; z-index:5;">βΆ</button> </div> <div style="width:100%; margin-top:15px; font-family:sans-serif; font-size:10px;"> VOL <input type="range" id="v_v" min="0" max="1" step="0.1" oninput="u_a()" style="width:100%"> BASS <input type="range" id="b_v" min="-15" max="15" value="0" oninput="u_a()" style="width:100%"> TREBLE <input type="range" id="t_v" min="-15" max="15" value="0" oninput="u_a()" style="width:100%"> </div> <script> var ac, s, an, g, b, t, d; var r = new Audio("https://stream.zeno.fm/nv7uudqyd5zuv"); r.crossOrigin = "anonymous"; function c_rad() { if(!ac){ ac = new (window.AudioContext || window.webkitAudioContext)(); s = ac.createMediaElementSource(r); an = ac.createAnalyser(); g = ac.createGain(); b = ac.createBiquadFilter(); t = ac.createBiquadFilter(); b.type="lowshelf"; b.frequency.value=200; t.type="highshelf"; t.frequency.value=3000; s.connect(b).connect(t).connect(g).connect(an).connect(ac.destination); an.fftSize=128; d=new Uint8Array(an.frequencyBinCount); draw(); } if(r.paused){ r.play(); ac.resume(); document.getElementById('p_b').innerText='βΈ'; } else { r.pause(); document.getElementById('p_b').innerText='βΆ'; } } function u_a(){ if(!g)return; g.gain.value=document.getElementById('v_v').value; b.gain.value=document.getElementById('b_v').value; t.gain.value=document.getElementById('t_v').value; } function draw(){ requestAnimationFrame(draw); an.getByteFrequencyData(d); var ctx = document.getElementById('cv_v').getContext('2d'); ctx.clearRect(0,0,200,200); for(var i=0; i<d.length; i++){ var h=d[i]/4; var a=(i*Math.PI*2)/d.length; ctx.strokeStyle='hsl('+(i*5)+',80%,50%)'; ctx.lineWidth=3; ctx.beginPath(); ctx.moveTo(100+Math.cos(a)*85, 100+Math.sin(a)*85); ctx.lineTo(100+Math.cos(a)*(85+h), 100+Math.sin(a)*(85+h)); ctx.stroke(); } } <\/script> </div>\n`; editor.replaceSelection(code); editor.focus(); } setTimeout(() => { if(document.getElementById('msg')) document.getElementById('msg').innerText = ''; }, 3000); </script> </body> </html>