Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Sign in to follow this  

About This Club

Bueno lo que haremos en esta "ESCUELA" jaja, es la actualización desde cero!! Mirá primero "Presentación", ya que allí estarán todos los pasos ordenados... Existe 2 formas de actualización.. [ 1 - Actualización de Jquery y JS] y [ 2 - Actualización del Php 5.x a php 7.x]

  1. What's new in this club
  2. Lo que se hará es agregar las opciones para que se pueda elegir entre el recaptcha v2 y el recaptcha v3. 1 - Ejecutar estas consultas ALTER TABLE `w_configuracion` ADD `c_recaptcha` int(1) NOT NULL DEFAULT '0'; ALTER TABLE `w_configuracion` ADD `pkey3` varchar(55) NOT NULL; ALTER TABLE `w_configuracion` ADD `skey3` varchar(55) NOT NULL; 2 - Buscar en inc/class/c.registro.php /** reCAPTCHA **/ $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $tsCore->settings['skey'] . '&response=' . $tsData['user_captcha'] . '&remoteip=' . $tsCore->getIP(); y la reemplazamos por /** reCAPTCHA **/ if($tsCore->settings['c_recaptcha'] == 0) { $R_KEY = $tsCore->settings['skey']; } else { $R_KEY = $tsCore->settings['skey3']; } $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $R_KEY . '&response=' . $tsData['user_captcha'] . '&remoteip=' . $tsCore->getIP(); 3 - En config.inc.php que se encuentra en la raíz buscamos y la borramos define('RC_PUK',"6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L"); // public key recaptcha define('RC_PIK',"6LcXvL0SAAAAAEg1zizOxJPTjlD0ZtbbzubF2NjE"); // private key recaptcha 4 - En header.php buscamos // Mensajes $smarty->assign('tsMPs',$tsMP->mensajes); y debajo pegamos if($tsCore->settings['c_recaptcha'] == 0) { define('RC_PUK',$tsCore->settings['pkey']); define('RC_PIK',$tsCore->settings['skey']); } else { define('RC_PUK',$tsCore->settings['pkey3']); define('RC_PIK',$tsCore->settings['skey3']); } 5 - Luego buscan en templates/sections/main_header.tpl </head> <body> <!--JAVASCRIPT--> y arriba agregan esto {if !$tsUser->is_member && $tsConfig.c_recaptcha == 1} <script src="https://www.google.com/recaptcha/api.js?render={RC_PUK}"></script> {/if} 6 - Luego buscan en js/registro.js /* Terminos */ case 'terminos': var value = $(el).is(':checked'); y arriba agregan /* ReCaptcha V3 */ case 'recaptcha_response_field': this.datos['g-recaptcha-response'] = $('#RegistroForm #recaptchaResponse').val(); break; y un poco más abajo buscan var rnum = h.substring(0, strpos(h, ':')); if (rnum != '1' || rnum != '2') { registro.datos['g-recaptcha-response'] = ''; grecaptcha.reset(); } y lo reemplazan por if(SelectR == 0){ var rnum = h.substring(0, strpos(h, ':')); if (rnum != '1' || rnum != '2') { registro.datos['g-recaptcha-response'] = ''; grecaptcha.reset(); } } 7 - Luego buscan en t.php_files/p.registro.form.tpl (en el caso del mod de registro buscan en t.registro.tpl) <div class="form-group"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div> y la reemplazan por {if $tsConfig.c_recaptcha == 0} <div class="form-group"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{RC_PUK}"></div> <div class="help"><span><em></em></span></div> </div> {else} <div class="form-group"> <input type="hidden" name="g-recaptcha-response" id="response" class="g-recaptcha"> <div class="help"><span><em></em></span></div> </div> {/if} luego más abajo buscan <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script> {/literal} y lo reemplazan por {if $tsConfig.c_recaptcha == 0} <script src="https://www.google.com/recaptcha/api.js" async defer></script> {/if} <script type="text/javascript"> const SelectR = '{$tsConfig.c_recaptcha}'; $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script> {/literal} {if $tsConfig.c_recaptcha == 1} <script type="text/javascript"> var keyv3 = '{RC_PUK}'; grecaptcha.ready(function () { grecaptcha.execute(keyv3{literal}', {action: 'homepage'}).then(function (token) { var response = document.getElementById('response'); response.value = token; }); }); {/literal} </script> {/if} 8 - Por último en templates/admin_mods/m.admin_configs.tpl y buscan <dl> <dt> <label for="ai_xat">Xat ID:</label> <br /><span>Por defecto puedes agregar un chat de <a href="http://xat.com">Xat</a> para tu web, solo crea tu grupo he ingresa el nombre.</span></dt> <dd> <input type="text" id="ai_xat" name="xat" maxlength="20" value="{$tsConfig.xat_id}" /> </dd> </dl> y debajo agregan <hr /> <fieldset class="selectRecaptcha"> <legend>Seleccionar el reCaptcha</legend> <span>Puedes elegir entre el Recaptcha v2 o el Recaptcha v3</span> <select name="recaptcha" id="recaptcha"> <option value="0"{if $tsConfig.c_recaptcha == 0} selected="selected"{/if}>Recaptcha v2</option> <option value="1"{if $tsConfig.c_recaptcha == 1} selected="selected"{/if}>Recaptcha v3</option> </select> <div id="recaptchav2"> <h4>Recaptcha V2</h4> <dl> <dt> <label for="pkey">reCaptcha pública</label> <br /><span>Clave pública de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd><input type="text" id="pkey" name="pkey"{if !$tsConfig.pkey}placeholder="Sin clave" {/if}value="{$tsConfig.pkey}" /></dd> </dl> <dl> <dt> <label for="skey">reCaptcha secreta</label> <br /><span>Clave privada de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd><input type="text" id="skey" name="skey"{if !$tsConfig.skey}placeholder="Sin clave"{/if} value="{$tsConfig.skey}" /></dd> </dl> </div> <div id="recaptchav3"> <h4>Recaptcha V3</h4> <dl> <dt> <label for="pkey3">reCaptcha pública</label> <br /><span>Clave pública de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd><input type="text" id="pkey3" name="pkey3"{if !$tsConfig.pkey3}placeholder="Sin clave" {/if}value="{$tsConfig.pkey3}" /></dd> </dl> <dl> <dt> <label for="skey3">reCaptcha secreta</label> <br /><span>Clave privada de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd><input type="text" id="skey3" name="skey3"{if !$tsConfig.skey3}placeholder="Sin clave"{/if} value="{$tsConfig.skey3}" /></dd> </dl> </div> </fieldset> <hr /> y por último en el mismo archivo agregar <script>{literal} var rv3 = '{/literal}{$tsConfig.c_recaptcha}{literal}'; (rv3 == '1') ? $('#recaptchav2').hide() : $('#recaptchav3').hide(); $("select[name=recaptcha]").change(function(){ var reCaptcha = $(this).val(); (reCaptcha == '1') ? $('#recaptchav2').slideUp(),$('#recaptchav3').slideDown() : $('#recaptchav2').slideDown(),$('#recaptchav3').slideUp(); }); {/literal}</script> Y creo que eso sería todo, cualquier problema avisen!
  3. img(https://cdn.discordapp.com/attachments/465322846533451776/635989802839441408/2b.png) Proximamente estaré terminado este theme https://codexweb.ml NO HAY USUARIO DEMO
  4. Esta muy bueno el tema, muy ligero, buen trabajo
  5. Ya lo arregle, me había equivocado la contraseña! Aun le tengo que dar algunos detalles para que quede mejor!
  6. Excelente trabajo como siempre solo que quise probarlo pero no me dejo logear en la demo.
  7. Bueno he terminado con el theme Spectre, aún que le hace falta pulir un poco...pero está listo para usar. Lo pueden descargar directamente desde el repositorio en github, ya que si tengo que hacer cambios los subo directamente allí y es fácil buscar los cambios realizados. DESCARGAR SPECTRE V.1.0 RC-0.0.1 Detalles: Jquery 3.4.1 Smarty 3.1.32 PHP 7.+ PHPMailer 6.+ Componentes usados: Framework css - Spectre Spectre-Icons (36 iconos) LineIcons (460 iconos) Tienen 2 maneras: 1 - Instalar como si fuera un script desde cero, lo descargan, lo instalan y eso ya sería todo, no hay más...no hace falta que mires este topic! 2 - Es copiar el theme a su carpeta respectiva e instalarlo como Spectrev1.0 y poner la carpeta "Modulos" a la raíz de su sitio si seguir los siguientes paso: GUIA: Si instalaste la versión que realice con ambos recaptcha v2 y v3 no realices la consulta pero sigue los pasos y cabe destacar que algunas cosas las he tomado de la versión de Taringa V5: ALTER TABLE `w_configuracion` ADD `c_recaptcha` int(1) NOT NULL DEFAULT '0'; ALTER TABLE `w_configuracion` ADD `pkey3` varchar(55) NOT NULL; ALTER TABLE `w_configuracion` ADD `skey3` varchar(55) NOT NULL; Editar header.php Buscan estas líneas // Mensajes $smarty->assign('tsMPs',$tsMP->mensajes); y debajo pegan esta include 'modulos/spectre.php'; Luego buscan config.inc.php y borrar estas líneas define('RC_PUK',"6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L"); // public key recaptcha define('RC_PIK',"6LcXvL0SAAAAAEg1zizOxJPTjlD0ZtbbzubF2NjE"); // private key recaptcha ¿Para qué es el archivo spectre.php? Es un mini-archivo de configuración, en el que se puede hacer configuraciones globales y así evitar que busquen cada archivo para poder cambiar. EJ: quieren cambiar el header, simplemente buscan este archivo y modifican, sin tener que ir a templates/section/main_header.tpl. ANALIZANDO EL CONTENIDO DE SPECTRE.PHP Es la versión del theme y no deben tocarlo. define('VersionTheme', '1.0'); Este es el icono que se verá en el explorador define('LogoIco', $tsCore->settings['url'] . '/modulos/img/favicon.ico'); define('LogoPng', $tsCore->settings['url'] . '/modulos/img/favicon.png'); Para cambiar el header 1000 x 363 que sea más o menos con esa dimensión, si es PNG, JPG o JPEG es mejor que la conviertan a .WEBP para que esta sea más rápido al cargar (si no me equivo) define('Header', $tsCore->settings['url'] . '/modulos/img/header.webp'); Convertidores online gratuitos, use ambos y son buenos: https://convertio.co/es/png-webp/ https://imagen.online-convert.com/es/convertir-a-webp PONER FOTOS EN TOPS 1 - Ir a inc/class/c.tops.php y buscan /* getStats() : NADA QUE VER CON LA CLASE PERO BUENO PARA AHORRAR ESPACIO... : ESTADISTICAS DE LA WEB */ Arriba pegan lo siguiente 2 - Buscar en inc/php/top.php y buscan case 'usuarios': $smarty->assign("tsTops",$tsTops->getTopUsers($fecha, $cat)); break; Y debajo pegan case 'fotos': $smarty->assign("tsTops", $tsTops->getTopFotos($fecha, $desc)); break; 3 - Buscan en inc/class/c.posts.php y buscan la última llave } y arriba pegan lo siguiente 5 - En inc/php/posts.php buscan } else { // PAGINA $tsPage = "home"; y la reemplazan por } else if ($_GET['cate'] == 'categorias') { $tsPage = "categorias"; $tsTitle = $tsTitle.' - Categorías!'; $smarty->assign("tsTopcat",$tsPosts->topcat()); $smarty->assign("tsPostsAzar",$tsPosts->getPostsAzar()); } else { // PAGINA $tsPage = "home"; luego buscan // ULTIMOS COMENTARIOS $smarty->assign("tsComments",$tsPosts->getLastComentarios()); y debajo pegan //POSTS AL AZAR $smarty->assign("tsPostsAzar",$tsPosts->getPostsAzar()); //POSTS POPULARES $smarty->assign("tsPopular",$tsPosts->PostsPopular()); PD: Deben copiar el archivo ajax.feed.php que se encuentra en inc/php/ajax/ajax.feed.php, ya que allí sabrán si hay nueva versión o cambios en el theme porque esto es lo que verán en el panel de la administración GUIA CONFIGURAR PHPMAILER Para configurar visiten el repositorio de PHPMailer, allí explica cómo deben hacer para que este funcione correctamente, ya esta actualizado el PHPMailer Eso es todo, espero no olvidarme de nada! cualquier cosa avisen! Como siempre la demo: https://mozzfirev4x.skn1.com/Spectre/ USUARIO: Demo CONTRASEÑA: demouser
  8. Me maté con el nombre XD, simplemente lo llame como el framework css del mismo nombre, este theme estará conformado de 2 maneras: 1 - Es todo el script completo desde cero con instalador 2 - Es parte del script en el caso que sea una web con información. (vea las consultas al final de este topic) Es un framework que está en desarrollo, pero por el momento no utilizaremos todos los componentes. NOTA: Solo falta "Moderación" Descargar desde GitHub Spectre -> Smarty 3.1.31 | Jquery 3.4.1 | Php 7+ | PHPMailer 6.+ Spectre Framework Spectre Icons 36 Iconos LineIcons 460 Iconos El theme tendrá una carpeta adicional: Módulos - |-- css |-- LineIcons.min.css |-- spectre-exp.min.css |-- spectre-icons.min.css |-- spectre.min.css |-- fonts |-- Acme-Regular.woff2 |-- LineIcons.eot |-- LineIcons.svg |-- LineIcons.ttf |-- LineIcons.woff |-- img |-- favicon.ico |-- favicon.png |-- header.png |-- spectre-logo.png |-- js |-- spectre.js -- spectre.php CAPTURA: DEMO: SpectreDemo Usuario: Demo Contraseña: demouser Editar header.php Buscan estas líneas // Mensajes $smarty->assign('tsMPs',$tsMP->mensajes); y debajo pegan esta include 'modulos/spectre.php'; Como se incluyó el PHPMailer deben ver este mini tutorial Ver configuración del phpmailer Solo si ya tienen una web funcional (ya instalada): Buscar en config.inc.php y borran esto define('RC_PUK',"6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L"); // public key recaptcha define('RC_PIK',"6LcXvL0SAAAAAEg1zizOxJPTjlD0ZtbbzubF2NjE"); // private key recaptcha Deben instalar el theme como Spectrev1.0 Ejecutar consultas: ALTER TABLE `w_configuracion` ADD `c_recaptcha` int(1) NOT NULL DEFAULT '0'; ALTER TABLE `w_configuracion` ADD `pkey3` varchar(55) NOT NULL; ALTER TABLE `w_configuracion` ADD `skey3` varchar(55) NOT NULL;
  9. Gracias por actualizarlo amigo, a más de alguno le servirá jaja Saludos
  10. Es una plantilla originalmente creada por @Rhuan y que fue re-diseñada por @Tuente para hacerla más parecida a la plantilla original. Se actualizó a: Wysibb Recaptcha v2 NOTA: No he tocado el diseño! DESCARGAR Cualquier problema no dudes en dejarlo en los comentarios. Si hay algunos problemas puedes visitar
  11. La idea es borrar los emojis existentes incluyendo a las imágenes y agregar los smiles, aún no lo decido...No entiendo como agrega más peso si reemplazo código! no sería pesado si el script no tendría tanto código innecesario que no se usa(ej: MarkItUp)...Tal vez lo intente a tu manera!
  12. Aparte como?, ¿una nueva caja teniendo una?, agregar mas que?, si es mas emojic , en la caja que trae puedes poner los que quieras, la caja se estira, lo que quieres hacer es código innecesario y mas peso. Te aconsejo que aclares las cosas, lo que haces es confusión y lio.
  13. Si tienes razón, pero lo quise hacer aparte ya que tengo pensado agregar más...Bueno en el topic no lo he aclarado!
  14. Hola, no lo entiendo muy bien, porque veo muchos pasos y código para hacer lo que dice el titulo. ¿Todo eso es para poner los emoticones visibles sin scroll?, si es eso, no hace falta hacer todo eso, lo único que hay que hacer es irte a la regla css y jugar con las propiedades overflow, position, top y left , cambiandole los valores. Haciendo eso lo pones donde quieras. Si no es eso, perdona. Saludos
  15. Esto es lo que se va a hacer: Es muy fácil de realizar. 1 - Buscamos en js/live.js y lo borramos $(document).attr('title', global_data.s_title + ' (' + total_notis + ') - ' + global_data.s_slogan); 2 - Buscamos en sections/main_header.tpl $(document).ready(function(){ // {/literal} {if $tsNots > 0} notifica.popup({$tsNots}); {/if} {if $tsMPs > 0 && $tsAction != 'leer'} mensaje.popup({$tsMPs}); {/if} debajo agregamos {if $tsNots + $tsMPs + $tsAvisos} // {literal} var favicon = new Favico({ animation:'pop' }); // {/literal} favicon.badge({$tsNots + $tsMPs + $tsAvisos}) {/if} Aunque no es necesario que usemos el IF ya que el complemento si ve que es 0 no mostrará nada! Si tienes la versión v5/v6 que tiene $Shouts y $Posts lo puedes agregar tranquilamente var favBadge = {$tsNots + $tsMPs + $tsAvisos + $Shouts + $Posts}; 3 - Vamos a js/jquery.plugins.js y abajo de todo colocaremos esto: Ver código NOTA: Si quieres cambiar de color, posición, forma, efecto visita la página oficial del plugin Favico.js
  16. Bueno les traigo el script...digamos que esta actualizado jajaja. ¿Que contiene? Recaptcha v2 Recaptcha v3 Smarty 3.1.31 Jquery 3.4.1 Tiene ambos recaptcha que ustedes mismo podrán elegir desde la administración! En el caso que instalen el script desde cero en la instalación ya podrán elegir con qué recaptcha se quieren quedar... En la instalación seleccionan el tipo de recaptcha y le colocan las claves respectiva, lo mismo con la administración...porque tiene 2? básicamente si no les gusta la v3 puedan cambiar sin problemas a la v2.. La instalación es la misma de siempre! excepto que tiene para elegir las claves. ↓ DESCARGAR EL SCRIPT R2R3(Recaptcha v2 / Recaptcha v3) ↓ script_r2_r3.rar ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ Demo: https://mozzfirev4x.skn1.com Ya tiene activada la opción del recaptcha v3 y prueben que funcione...
  17. Recomendas usar la v3 o la v2?
  18. Basados en el mod anterior Actualizar Recaptcha v2 a V3 por @_morozov Ir a t.php_files/p.registro.form.tpl y buscamos o en t.registro.tpl <div class="form-line"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div> y reemplazamos por <div class="form-line"> <input type="hidden" name="g-recaptcha-response" id="recaptchaResponse" class="g-recaptcha"> <div class="help"><span><em></em></span></div> </div> Más abajo buscamos <script src="https://www.google.com/recaptcha/api.js" async defer></script> # En caso de ser una página ej: https://tuweb.com/registro/ (Mod registro) lo van a reemplazar por <script src="https://www.google.com/recaptcha/api.js?render={RC_PUK}"></script> # En caso ser un modal pegamos arriba de </head> y borramos el que está en p.registro.form.tpl <script src="https://www.google.com/recaptcha/api.js?render={RC_PUK}"></script> después de <script type="text/javascript"> agregamos var keyv3 = '{RC_PUK}'; debajo de $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); agregamos grecaptcha.ready(function () { grecaptcha.execute(keyv3).then(function (token) { var recaptchaResponse = document.getElementById('recaptchaResponse'); recaptchaResponse.value = token; }); }); Ir a js/registro.js y buscamos No hace falta agregar, ya que utilizaremos el de recaptcha v2 case 'captcha': this.datos['captcha'] = $('#RegistroForm #recaptchaResponse').val(); luego buscamos y borramos //Si hubo algun error, recargo recaptcha var rnum = h.substring(0, strpos(h, ':')); if (rnum != '1' || rnum != '2') { registro.datos['g-recaptcha-response'] = ''; grecaptcha.reset(); } Y listo... Registro en página https://newrisus.com Demo: Registro en modal https://mozzfirev4x.skn1.com
  19. Aunque esta modificación la puede usar tanto la recaptcha v2 como la v3 Recaptcha v3: "Actualizar Recaptcha v2 a V3" por @_morozov al final del topic dice: Importante : Reemplazar private y public key en config.inc.php Con claves recaptcha v3 Ir a config.inc.php y lo borramos o lo comentan! define('RC_PUK',"6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L"); // public key recaptcha define('RC_PIK',"6LcXvL0SAAAAAEg1zizOxJPTjlD0ZtbbzubF2NjE"); // private key recaptcha Luego vamos a header.php y debajo de $smarty->assign('tsMPs',$tsMP->mensajes); y pegamos lo siguiente define('RC_PUK',$tsCore->settings['pkey']); // public key recaptcha define('RC_PIK',$tsCore->settings['skey']); // private key recaptcha así si tienen que cambiar la clave por alguna razón lo puedan hacer tranquilamente desde la admin. También puede servir para Recaptcha v2, solo tienen que ir a t.php_files/p.registro.form.tpl y buscan <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> y solo reemplazan {$tsConfig.pkey} por {RC_PUK} cambian esta parte que tiene que agregar arriba del </head> (un mini arreglo, y evitan que aparezca en toda la web innecesariamente) {if !$tsUser->is_member} <script src="https://www.google.com/recaptcha/api.js?render={RC_PUK}"></script> {/if}
  20. Bueno decidí hacerlo porque me parece una forma de poder ver todos los smiles/emoticones sin problemas. Les va a quedar así. Literalmente me base en el mod de @Kmario19 [MOD] Emoticones Administrables V2, excepto que este NO ES ADMINISTRABLE. Bueno comencemos: 1 - En inc/php/ajax/ajax.emoticones.php buscamos foreach($emoticones as $key => $emo){ echo '<a smile="'.$emo[0].'" href="#"><img src="'.$tsCore->settings['default'].'/images/smiles/'.$emo[1].'" style="margin:auto 2px;"/></a>'; } y la reemplazamos por echo'<div class="smiles">'; foreach($emoticones as $key => $emo){ echo '<a smile="'.$emo[0].'" href="#"><img alt="'.$emo[0].'" src="'.$tsCore->settings['images'].'/smiles/'.$emo[1].'"></a>'; } echo'</div>'; 2 - En js/funciones.js buscamos function moreEmoticons(margin){ var emos = $('#emoticons'); // $('#loading').fadeIn(250); $.ajax({ type: 'GET', url: global_data.url + '/emoticones.php', data: 'ts=false', success: function(h){ if(margin) $(emos).css({marginTop : '1em'}) $(emos).append(h); $('#moreemofn').hide(); $('#loading').fadeOut(350); } }); } y la reemplazamos por function moreEmoticons(margin){ $('#emoticons').slideToggle('fast'); } 3 - En js/wysibb.js buscamos buildSmilebox: function(container,bn,opt) { if (this.options.smileList && this.options.smileList.length>0) { var $btnHTML = $(this.strf(opt.buttonHTML,opt)).addClass("btn-inner"); var $btn = $('<div class="wysibb-toolbar-btn wbb-smilebox wbb-'+bn+'">').appendTo(container).append($btnHTML).append(this.strf('<span class="btn-tooltip">{title}<ins/></span>',{title:opt.title})); var $sblock = $('<div class="wbb-list">').appendTo($btn); if ($.isArray(this.options.smileList)) { $.each(this.options.smileList,$.proxy(function(i,sm){ $('<span>').addClass("smile").appendTo($sblock).append($(this.strf(sm.img,this.options)).attr("title",sm.title)); },this)); } $btn.mousedown($.proxy(function(e) { e.preventDefault(); this.dropdownclick(".wbb-smilebox",".wbb-list",e); },this)); $btn.find('.smile').mousedown($.proxy(function(e) { e.preventDefault(); //this.selectLastRange(); this.insertAtCursor((this.options.bbmode) ? this.toBB($(e.currentTarget).html()):$($(e.currentTarget).html())); },this)) } }, y la reemplazamos por buildSmilebox: function(container,bn,opt) { var $btnHTML = $(this.strf(opt.buttonHTML,opt)).addClass("btn-inner"); var $btn = $('<div class="wysibb-toolbar-btn wbb-smilebox wbb-'+bn+'">').appendTo(container).append($btnHTML).append(this.strf('<span class="btn-tooltip">{title}<ins/></span>',{title:opt.title})); $btn.mousedown($.proxy(function(e) { e.preventDefault(); $('#emoticons').slideToggle('fast'); },this)); }, 4 - En templates/modules/m.global_emoticons.tpl y reemplazamos todo el contenido por <div id="emoticons" style="display:none;"> <!-- La imagen la pueden cambiar por la que deseen --> <img src="{$tsConfig.tema.t_url}/i/loading-spin.svg"> </div> {literal} <script type="text/javascript"> $(document).ready(function() { $.ajax({ url: global_data.url + '/emoticones.php', success: function(h) { $('#emoticons').html(h); } }); }); $('#emoticons').click(function(e) { e.preventDefault(); var smile = e.target.alt; $('.wysibb-body').append(smile); // Inserta el smile/emoticon al editor }); </script> {/literal} 5 - Ir templates/modules/m.posts_comments_form.tpl y buscamos <div id="procesando"><div id="post"></div></div> y debajo agregaremos {include file='modules/m.global_emoticons.tpl'} 6 - En extras.css al final de todo agregamos #emoticons { text-align: center; border: 3px solid #CCCCCCFF; padding: 4px; margin: 6px; } #emoticons .smiles { display: table; position: relative; z-index: 2; width: 100%; } #emoticons .smiles img { float: left; cursor: pointer; margin: 4px 2px; font-size: 20px; }
  21. Hoy traeré algo para que no se sientan tan viejos Fuera rodeos. Archivo : inc/c.registro.php Buscar : 'user_captcha' => $_POST['g-recaptcha-response'], Reemplazar: 'user_captcha' => $_POST['captcha'], Archivo : themes/{Tutema}/templates/t.php_files/p.registro.form.tpl Buscar: <div class="form-line"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div> Reemplazar : <div class="form-line"> <input type="hidden" name="recaptcha_response" id="recaptchaResponse" class="g-recaptcha"> <div class="help"><span><em></em></span></div> </div> Buscar : <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script> {/literal} Añadir Abajo: <script> var keyv3 = "{RC_PUK}"; grecaptcha.ready(function () { grecaptcha.execute(keyv3, { action: 'contact' }).then(function (token) { var recaptchaResponse = document.getElementById('recaptchaResponse'); recaptchaResponse.value = token; }); }); </script> Archivo : /templates/sections/main_header.tpl Agregamos antes de </head> <script src="https://www.google.com/recaptcha/api.js?render={RC_PUK}"></script> Archivo : {tutheme}/js/registro.js Buscar : case 'dia': case 'mes': case 'anio': //Almaceno el dato this.datos['dia'] = $('#RegistroForm #dia').val(); this.datos['mes'] = $('#RegistroForm #mes').val(); this.datos['anio'] = $('#RegistroForm #anio').val(); Reemplazar : /* nacimiento */ case 'dia': case 'mes': case 'anio': case 'captcha': //Almaceno el dato this.datos['dia'] = $('#RegistroForm #dia').val(); this.datos['mes'] = $('#RegistroForm #mes').val(); this.datos['anio'] = $('#RegistroForm #anio').val(); this.datos['captcha'] = $('#RegistroForm #recaptchaResponse').val(); Buscar (Linea 418 Aprox): // Estado case 'estado': if (this.no_requerido[campo]) { Ingresar Arriba : /* reCAPTCHA */ case 'recaptcha_response': this.datos[campo] = value; //!empty if (!value) { return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que eres humano'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break; // Estado Buscamos : /* reCAPTCHA */ case 'g-recaptcha-response': this.datos[campo] = value; //!empty if (!value) { return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que eres humano'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break; y lo eliminamos Buscamos show_status: function(el, status_aux, text, no_cache_data) { var campo = $(el).attr('name'); var status = (status_aux == 'empty') ? 'error' : status_aux; //Si es reCAPTCHA, lo busco directamente if (campo == 'recaptcha_response_field') el = $('#RegistroForm .pasoDos .help.recaptcha'); else { //Paso al siguiente elemento hasta encontrar un .help do { el = $(el).next(); } while (!$(el).is('.help')); } $(el).removeClass('ok').removeClass('error').removeClass('info').removeClass('loading').addClass(status).show().children().children().html(text); if (!no_cache_data) { this.datos_status[campo] = status_aux; this.datos_text[campo] = text; } return (status == 'ok'); }, hide_status: function(el, status, text) { var campo = $(el).attr('name'); //Si es reCAPTCHA, lo busco directamente if (campo == 'recaptcha_response_field') el = $('#RegistroForm .pasoDos .help.recaptcha'); else { //Paso al siguiente elemento hasta encontrar un .help do { el = $(el).next(); } while (!$(el).is('.help')); } $(el).hide(); this.datos_status[campo] = status; this.datos_text[campo] = text; return (status == 'ok'); }, Reemplazamos show_status: function(el, status_aux, text, no_cache_data) { var campo = $(el).attr('name'); var status = (status_aux == 'empty') ? 'error' : status_aux; //Si es reCAPTCHA, lo busco directamente if (campo == 'recaptcha_response') el = $('#RegistroForm .pasoDos .g-recaptcha'); else { //Paso al siguiente elemento hasta encontrar un .help do { el = $(el).next(); } while (!$(el).is('.help')); } $(el).removeClass('ok').removeClass('error').removeClass('info').removeClass('loading').addClass(status).show().children().children().html(text); if (!no_cache_data) { this.datos_status[campo] = status_aux; this.datos_text[campo] = text; } return (status == 'ok'); }, hide_status: function(el, status, text) { var campo = $(el).attr('name'); //Si es reCAPTCHA, lo busco directamente if (campo == 'recaptcha_response') el = $('#RegistroForm .pasoDos .g-recaptcha'); else { //Paso al siguiente elemento hasta encontrar un .help do { el = $(el).next(); } while (!$(el).is('.help')); } $(el).hide(); this.datos_status[campo] = status; this.datos_text[campo] = text; return (status == 'ok'); }, Buscar función submit: //Envio los datos y completo el registro submit: function() { //Compruebo datos del paso actual (PasoDos) if (!this.check_paso()) return false; //Oculto todos los mensajes informativos $('#RegistroForm .help').hide(); var params = ''; var amp = ''; for (var campo in this.datos) { params += amp + campo + '=' + encodeURIComponent(this.datos[campo]); amp = '&'; } if (this.dialog) mydialog.procesando_inicio('Enviando...', 'Registro'); //return false; //Envio los datos $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/registro-nuevo.php', data: params, success: function(h) { //Si hubo algun error, recargo recaptcha var rnum = h.substring(0, strpos(h, ':')); if (rnum != '1' || rnum != '2') { registro.datos['g-recaptcha-response'] = ''; grecaptcha.reset(); } switch (h.substring(0, strpos(h, ':'))) { case '0': //Error generico break; case 'nick': //Error nick registro.change_paso(1, true); registro.show_status($('#RegistroForm #nick'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'password': //Password registro.change_paso(1, true); registro.show_status($('#RegistroForm #password'), 'error', h.substring(strpos(h, ':') + 2)); registro.datos['password'] = ''; break; // case 'email': //Email registro.change_paso(1, true); registro.show_status($('#RegistroForm #email'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'nacimiento': //Dia|Mes|Anio registro.change_paso(1, true); registro.show_status($('#RegistroForm #anio'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'sexo': //Sexo registro.change_paso(2, true); registro.show_status($('#RegistroForm #sexo_f'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'pais': //Pais registro.change_paso(2, true); registro.show_status($('#RegistroForm #pais'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'estado': //Estado registro.change_paso(2, true); registro.show_status($('#RegistroForm #estado'), 'error', h.substring(strpos(h, ':') + 2)); break; /*case 'ciudad': //Ciudad registro.change_paso(2, true); registro.show_status($('#RegistroForm #ciudad'), 'error', h.substring(strpos(h, ':')+2)); break;*/ case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm .g-recaptcha'), 'error', h.substring(strpos(h, ':') + 2)); break; case '1': if (registro.dialog) { mydialog.body(h.substring(strpos(h, ':') + 2)); mydialog.buttons(true, true, 'Aceptar', 'mydialog.close()', true, true); mydialog.center(); } else { $('.reg-login .registro #RegistroForm').html(h.substring(strpos(h, ':') + 2)); $('.reg-login .registro #buttons').remove(); } break; case '2': if (registro.dialog) { mydialog.body(h.substring(strpos(h, ':') + 2)); mydialog.buttons(true, true, 'Aceptar', 'redireccionar()', true, true); mydialog.center(); } else { $('.reg-login .registro #RegistroForm').html(h.substring(strpos(h, ':') + 2)); $('.reg-login .registro #buttons').remove(); } break; } $('#loading').fadeOut(350); }, error: function() { mydialog.error_500("registro.submit()"); $('#loading').fadeOut(350); }, complete: function() { if (registro.dialog) mydialog.procesando_fin(); $('#loading').fadeOut(450); } }); } } Reemplazamos : //Envio los datos y completo el registro submit: function() { //Compruebo datos del paso actual (PasoDos) if (!this.check_paso()) return false; //Oculto todos los mensajes informativos $('#RegistroForm .help').hide(); var params = ''; var amp = ''; for (var campo in this.datos) { params += amp + campo + '=' + encodeURIComponent(this.datos[campo]); amp = '&'; } if (this.dialog) mydialog.procesando_inicio('Enviando...', 'Registro'); //return false; //Envio los datos $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/registro-nuevo.php', data: params, success: function(h) { console.log(h); //Si hubo algun error, recargo recaptcha switch (h.substring(0, strpos(h, ':'))) { case '0': //Error generico break; case 'nick': //Error nick registro.change_paso(1, true); registro.show_status($('#RegistroForm #nick'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'password': //Password registro.change_paso(1, true); registro.show_status($('#RegistroForm #password'), 'error', h.substring(strpos(h, ':') + 2)); registro.datos['password'] = ''; break; // case 'email': //Email registro.change_paso(1, true); registro.show_status($('#RegistroForm #email'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'nacimiento': //Dia|Mes|Anio registro.change_paso(1, true); registro.show_status($('#RegistroForm #anio'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'sexo': //Sexo registro.change_paso(2, true); registro.show_status($('#RegistroForm #sexo_f'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'pais': //Pais registro.change_paso(2, true); registro.show_status($('#RegistroForm #pais'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'estado': //Estado registro.change_paso(2, true); registro.show_status($('#RegistroForm #estado'), 'error', h.substring(strpos(h, ':') + 2)); break; /*case 'ciudad': //Ciudad registro.change_paso(2, true); registro.show_status($('#RegistroForm #ciudad'), 'error', h.substring(strpos(h, ':')+2)); break;*/ case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm #recaptchaResponse'), 'error', h.substring(strpos(h, ':')+2)); break; case '1': if (registro.dialog) { mydialog.body(h.substring(strpos(h, ':') + 2)); mydialog.buttons(true, true, 'Aceptar', 'mydialog.close()', true, true); mydialog.center(); } else { $('.reg-login .registro #RegistroForm').html(h.substring(strpos(h, ':') + 2)); $('.reg-login .registro #buttons').remove(); } break; case '2': if (registro.dialog) { mydialog.body(h.substring(strpos(h, ':') + 2)); mydialog.buttons(true, true, 'Aceptar', 'redireccionar()', true, true); mydialog.center(); } else { $('.reg-login .registro #RegistroForm').html(h.substring(strpos(h, ':') + 2)); $('.reg-login .registro #buttons').remove(); } break; } $('#loading').fadeOut(350); }, error: function() { mydialog.error_500("registro.submit()"); $('#loading').fadeOut(350); }, complete: function(data) { if (registro.dialog) mydialog.procesando_fin(); $('#loading').fadeOut(450); console.log('complete ?'); } }); } } Demo : https://zendfire.com Opcional Recaptcha completamente invisible Añadan en su css: .grecaptcha-badge { display: none !important; } Importante : Reemplazar private y public key en config.inc.php Con claves recaptcha v3
  22. (81)SMILES en wysibb Ya te puedes deshacer de la carpeta de smiles dentro de images(dependiendo del theme que estes) Buscamos en inc/ext/bbcode.inc.php y la reemplazamos por Ahora buscamos en js/wysibb.js y la reemplazamos por
  23. Editamos/Modificamos el WYSIBB Vamos a pasar de este diseño.... A este diseño Ya no estarán: * Mensajes * Tablas * Canción de Goear * SWF * Eliminar formato En el archivo para descargar estarán todos los SVG que se requiere para el wysibb, para eso descargamos EditarWysibb.rar y la descomprimen dentro del theme que esten usando. ♥###♦###♣###♠###♥###♦###♣###♠###♥###♦###♣###♠###♥ HAGAN COPIA DE SEGURIDAD DE: WYSIBB.CSS Y WYSIBB.JS ♥###♦###♣###♠###♥###♦###♣###♠###♥###♦###♣###♠###♥ En el caso que quieran modificar una imagen, busquen en wysibb.css en la línea 816 hasta la línea 837 que estan configuradas allí, verán esto: :root { --bold: url(../images/wysibb/bold.svg); --italic: url(../images/wysibb/italic.svg); --underline: url(../images/wysibb/underline.svg); --striketrought: url(../images/wysibb/striketrought.svg); --superscript: url(../images/wysibb/superscript.svg); --subscript: url(../images/wysibb/subscript.svg); --img: url(../images/wysibb/image.svg); --video: url(../images/wysibb/video-player.svg); --link: url(../images/wysibb/link.svg); --color: url(../images/wysibb/color.svg); --smile: url(../images/wysibb/smile.svg); --list: url(../images/wysibb/list.svg); --listol: url(../images/wysibb/ollist.svg); --spoiler: url(../images/wysibb/spoiler.svg); --left: url(../images/wysibb/left.svg); --center: url(../images/wysibb/center.svg); --right: url(../images/wysibb/right.svg); --justify: url(../images/wysibb/justify.svg); --quote: url(../images/wysibb/quote.svg); --code: url(../images/wysibb/code.svg); } Eso sería todo por el momento.... FIX: Si por algún motivo no salen los smiles hagan lo siguiente, buscan en main_header.tpl y buscan fotoid:'{$tsFoto.foto_id}', img:'{$tsConfig.tema.t_url}/', y debajo pegan esto smile:'{$tsConfig.tema.t_url}/images/smiles/',
  24.  
  • Patrocinador



    ×