Jump to content

Rhuan

Moderador
  • Contenido

    1.545
  • Registrado

  • Última Visita

  • Days Won

    51

Rhuan last won the day on August 27

Rhuan had the most liked content!

Reputación en la Comunidad

623 Exaltado

Sobre Rhuan

  • Rango
    -- --- -.. . .-. .- -.. --- .-. .-.-.
  • Cumpleaños 20/04/11

Información de perfil

Visitantes recientes en el perfil

12.458 visitas al perfil
  1. Bootstrap 4 + Material Design

    Fuente: https://material.io/
  2. [Smarty-Plugin] NOBBcode

    @Muerte tiene razón, tienes que dejar un enlace de descarga directa desde aquí.
  3. No, no vi la estructura de los archivos .js, por eso te pregunté específicamente si lo que hiciste fue cambiar $('#algo').live( ... ) por $('#algo').on( ... ) porque así no funciona, y tu me dijiste que sí funciona. Pero bueno, solo ha sido un mal entendido entonces.
  4. No, la verdad es que no. La diferencia fundamental entre .live() y .on() es que .live() añade listeners (hover, click, change, blur, etc.) a los elementos aunque se añadan después del .live() mientras que .on() no lo hace. Para que sea más fácil de entender, te pongo dos ejemplos con jQuery 1.7.1 (la versión que usa Risus) para que funcione .live(). Esto NO funcionará porque se añade el elemento después del .on(): <body> <script src="https://code.jquery.com/jquery-1.7.1.min.js"></script> <script> // Elemento cualquiera que tendrá el listener "click" var algo = $('<button id="algo">').html('Haz clic'); // Añadimos el listener $('#algo').on('click', function() { alert('Clic detectado.'); }); // Añadimos el elemento a la página $('body').append(algo); </script> </body> En cambio esto SÍ funcionará dado que .live() funciona con elementos añadidos "en vivo" (de ahí el nombre de la función): <body> <script src="https://code.jquery.com/jquery-1.7.1.min.js"></script> <script> // Elemento cualquiera que tendrá el listener "click" var algo = $('<button id="algo">').html('Haz clic'); // Añadimos el listener $('#algo').live('click', function() { alert('Clic detectado.'); }); // Añadimos el elemento a la página $('body').append(algo); </script> </body> Para que .on() funcione igual que funcionaba el obsoleto .live(), se debe usar de esta forma: $('body').on('click', '#algo', function() {}); Y otro ejemplo (esta vez con jQuery 3.2.1): <body> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script> // Elemento cualquiera que tendrá el listener "click" var algo = $('<button id="algo">').html('Haz clic'); // Añadimos el listener $('body').on('click', '#algo', function() { alert('Clic detectado.'); }); // Añadimos el elemento a la página $('body').append(algo); </script> </body>
  5. Por cierto, no te recomiendo usar el editor Wysibb, tiene demasiados fallos (la mayoría ni están reportados) y parece estar descontinuado. Mejor usa CKEditor (el del foro) que es muy personalizable y tiene muchos plugins o SCEditor que, aunque es bastante viejo, lo siguen actualizando en GitHub.
  6. Solo una pequeña pregunta, ¿cómo estás reemplazando live() por on()? Lo digo porque no es lo mismo $('#algo').live( ... ) que $('#algo').on( ... ) aunque en un principio pueda parecer que funciona igual.
  7. Por que pasa esto con risus

    Deja la URL de tu web.
  8. A eso me refería con "ponerlo directamente en el TPL". No es necesario que sea justo arriba de </body> siempre y cuando esté debajo del elemento HTML que quieres manipular, en este caso los inputs de la contraseña y el checkbox del login. Si no te funciona, asegúrate que el <input> de la contraseña tenga el atributo id="password" y el del checkbox tenga id="vermipass".
  9. No te preocupes jajaja, se pone debajo de esta línea: elseif($contador_saltos > 5 || $contador_caracteres > 150) return '0: Tu shout es demasiado largo'; Es el mismo lugar que el anterior.
  10. Tienes que envolver el código con $(document).ready() para que se ejecute cuando el DOM este cargado. $(document).ready(function() { /* Aquí el código */ }); O ponerlo directamente en el TPL así: {literal} <script> /* Aquí el código */ </script> {/literal}
  11. Te has complicado bastante la vida. Mostrar la contraseña es tan simple como cambiar el atributo type del input de password a text. $('#vermipass').click(function(){ var newType = $('#password').attr('type') == 'text' ? 'password' : 'text'; $('#password').attr('type', newType); });
  12. Al parecer esa función es para los comentarios del shout. Si quieres que tengan la misma validación que los shouts sí deberías reemplazarlo. Pero en esa función es un poco diferente y cambia un poco el código del comentario anterior, en vez de buscar: $data = $tsCore->setSecure($_POST['data'], true); Deberías buscar: $data = $tsCore->setSecure($tsCore->parseBadWords($_POST['data'])); Y reemplazar por: $data = $_POST['data']; Y lo que tienes que poner al final en vez de: $data = $tsCore->setSecure($data, true); es: $data = $tsCore->setSecure($tsCore->parseBadWords($data));
  13. Ya dejé la prueba en el comentario que cité: https://regex101.com/r/1ZNTut/1. Y tienes razón en que mi solución falla, eso me pasa por probarlo en un archivo externo y no en Risus. El problema es que antes de pasar por mi validación la variable pasa por setSecure() y esta función reemplaza los saltos de línea por los caracteres "\n", supongo que por eso había un código para sustituir "\n" por "n", aún así me parece una mala solución. Pero bueno, para que el código que dije funcione debemos obtener los datos directamente de $_POST ya que $data ya ha sido modificada por setSecure() y causa errores. En c.muro.php buscar: $data = $tsCore->setSecure($_POST['data'], true); y reemplazar por: $data = !empty($_GET['type']) && $_GET['type'] != 'status' ? $tsCore->setSecure($_POST['data'], true) : $_POST['data']; Esto es para saltarse la función setSecure() que causa errores. Un poco más abajo en el mismo archivo, buscar (este código es una parte de mi solución): elseif($contador_saltos > 5 || $contador_caracteres > 150) return '0: Tu shout es demasiado largo'; y debajo añadir: $data = $tsCore->setSecure($data, true); Y esto es para volver a aplicar el setSecure() que nos hemos saltado arriba. De nada, pero deberías aplicar el pequeño ajuste de código que dejo en este comentario. Sobre lo de que estoy en otro nivel, te aseguro que si prácticas lograrás entender el código fácilmente, no es nada complicado. Sí que es verdad que "estoy en otro nivel" en algún sentido porque trabajo diariamente con algoritmos de aprendizaje profundo, inteligencias artificiales y hasta con biotecnología, pero no se parece nada a la programación web por lo que no me sirve de mucho aquí xD.
  14. Es un gasto innecesario de transferencia usar getimagesize() que descarga la imagen al servidor para obtener su información. Lo mejor es hacerlo directamente en el cliente con javascript: $('img').error(function () { $(this).attr('src', 'http://i.imgur.com/K1owxPQ.png'); }); Te aseguro que ahorrarás una cantidad inmensa de gasto de transferencia, sobre todo si se aplica a las imágenes de los posts.
  15. Es simple, abre c.muro.php y busca: $text = str_replace(array("\n","\t",' '),"",$data); // VACIO? if(strlen($text) <= 0) return '0: Tu publicación debe tener al menos una letra.'; lo borras y en su lugar pones: // Limpiamos espacios al principio y al final $data = trim($data); // Limpiamos caracteres de tipo espacio que estén seguidos $data = preg_replace('/[\h]{2,}/', ' ', $data); // Limpiamos saltos de línea seguidos aunque contengan tabulaciones y espacios en medio $data = preg_replace('/[\v\h]{2,}/', "\n", $data); // Contamos los saltos de línea $contador_saltos = count(preg_split('/[\r\n]/', $data)); // Contamos los caracteres $contador_caracteres = strlen($data); // Comprobamos si está vacío, // Si hay más de 5 saltos de línea // O si hay más de 150 caracteres if(!$data) return '0: Tu shout está vacío'; elseif($contador_saltos > 5 || $contador_caracteres > 150) return '0: Tu shout es demasiado largo'; Y ya está. Como dije en un comentario anterior con tu solución se puede saltar muy fácilmente la validación, tan simple como poner un espacio antes del salto de línea. Y esa solo es una de la muchas maneras.
×