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

Miguel92

Editor
  • Content Count

    1118
  • Posts on chatbox

    3
  • Joined

  • Last visited

  • Days Won

    30

Everything posted by Miguel92

  1. Pedido: [PEDIDO] Sección Videos con Youtube Usuario: @unfernacho Mod: [MOD] Sección Video Creado por: @aperpen Bueno comencemos: 1) - Abrimos c.admin.php y buscamos /****************** ADMINISTRACIÓN DE NOTICIAS ******************/ y arriba pegamos 1) - Abrimos c.moderacion.php y buscamos Ahora buscamos en el c.swat.php // MENSAJES case 'mensaje': // YA HA REPORTADO? y arriba pegamos case 'video': // ¿ES MI VIDEO O ESTÁ OCULTO? $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `vid_id`, `vid_user`, `vid_status` FROM `v_videos` WHERE `vid_id` = \''.(int)$obj_id.'\' LIMIT 1') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ); $my_video = db_exec('fetch_assoc', $query); if(empty($my_video['vid_id'])) return '0: Este video no existe'; if($my_video['vid_user'] == $tsUser->uid) return '0: No puedes denunciar tus propios videos.'; if($my_video['vid_status'] == '1') return '0: No puedes denunciar videos ocultos.'; // YA HA REPORTADO? $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `did` FROM `w_denuncias` WHERE `obj_id` = \''.(int)$obj_id.'\' AND `d_user` = '.$tsUser->uid.' AND `d_type` = \'5\''); $denuncio = db_exec('num_rows' $query); if(!empty($denuncio)) return '0: Ya habías denunciado este video.'; // CUANTAS DENUNCIAS LLEVA? $denuncias = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'SELECT `did` FROM `w_denuncias` WHERE `obj_id` = \''.(int)$obj_id.'\'')); // OCULTAMOS EL VIDEO SI YA LLEVA MÁS DE 3 DENUNCIAS if($denuncias >= 2){ db_exec(array(__FILE__, __LINE__), 'UPDATE `v_videos` SET `vid_status` = \'1\' WHERE `vid_id` = \''.(int)$obj_id.'\'') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ) mdb_exec(array(__FILE__, __LINE__), 'UPDATE `w_stats` SET `stats_videos` = stats_videos - \'1\' WHERE `stats_no` = \'1\''); } // INSERTAR NUEVA DENUNCIA if(mdb_exec(array(__FILE__, __LINE__), 'INSERT INTO `w_denuncias` (`obj_id`, `d_user`, `d_razon`, `d_extra`, `d_type`, `d_date`) VALUES (\''.(int)$obj_id.'\', \''.$tsUser->uid.'\', \''.$razon.'\', \''.$extras.'\', \'5\', \''.$date.'\')')){ return '1: La denuncia fue enviada.'; } else return '0: Error, inténtalo más tarde.'; break; En el archivo c.core.php buscamos function getNovemods() { $datos = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT (SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as revposts, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'1\' ) as revcomentarios, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'1\') as repposts, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'2\') as repmps, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'3\') as repusers, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'4\') as repfotos, (SELECT count(susp_id) FROM u_suspension) as suspusers, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as pospelera, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fospelera')); $datos['total'] = $datos['repposts'] + $datos['repfotos'] + $datos['repmps'] + $datos['repusers'] + $datos['revposts'] + $datos['revcomentarios']; return $datos; } y reemplazamos por function getNovemods() { $datos = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT (SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as revposts, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'1\' ) as revcomentarios, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'1\') as repposts, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'2\') as repmps, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'3\') as repusers, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'4\') as repfotos, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'5\') as repvideos, (SELECT count(susp_id) FROM u_suspension) as suspusers, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as pospelera, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fospelera')); $datos['total'] = $datos['repposts'] + $datos['repfotos'] + $datos['repvideos'] + $datos['repmps'] + $datos['repusers'] + $datos['revposts'] + $datos['revcomentarios']; return $datos; } Ahora en admin.php buscamos //FOTOS } elseif($action == 'fotos'){ if(!$act) { $smarty->assign("tsAdminFotos",$tsAdmin->GetAdminFotos()); } y debajo pegamos //VIDEOS } elseif($action == 'videos'){ if(!$act) { $smarty->assign("tsAdminVideos",$tsAdmin->GetAdminVideos()); } Ahora en moderacion.php buscamos // SUSPENSIONES elseif($action == 'banusers'){ y arriba pegamos elseif($action == 'videos'){ include('../ext/datos.php'); if(empty($act)){ $smarty->assign("tsReports",$tsMod->getDenuncias($action)); $smarty->assign("tsDenuncias",$tsDenuncias[$action]); }elseif($act == 'info'){ $smarty->assign("tsDenuncia",$tsMod->getDenuncia($action)); $smarty->assign("tsDenuncias",$tsDenuncias[$action]); } elseif ($act == 'borrar'){ $tsMod->deleteVideo($vid_); header('location: /moderacion/videos'); } } Luego buscamos // CONTENIDO DESAPROBADO y arriba pegamos elseif($action == 'vipelera'){ $smarty->assign("tsVipelera",$tsMod->getVipelera()); } Ahora en ajax buscamos el archivo ajax.admin.php y buscaremos 'admin-badwords-delete' => array('n' => 4, 'p' => ''), debajo pegamos 'admin-video-borrar' => array('n' => 4, 'p' => ''), 'admin-video-setOpenClosed' => array('n' => 4, 'p' => ''), 'admin-video-setShowHide' => array('n' => 4, 'p' => ''), luego buscamos case 'admin-users-InActivo': y arriba pegamos case 'admin-video-borrar': //<--- echo $tsAdmin->DelVideo(); //---> break; case 'admin-video-setOpenClosed': //<--- echo $tsAdmin->setOpenClosedVideo(); //---> break; case 'admin-video-setShowHide': //<--- echo $tsAdmin->setShowHideVideo(); //---> break; En ajax.denuncia.php buscamos 'denuncia-usuario' => array('n' => 2, 'p' => 'form'), y debajo pegamos 'denuncia-video' => array('n' => 2, 'p' => 'form'), después buscamos case 'denuncia-mensaje': y arriba pegamos case 'denuncia-video': // CREAR DENUNCIA if($_POST['razon']){ $tsAjax = 1; echo $tsSwat->setDenuncia($obj_id, 'video'); // FORMULARIO DE DENUNCIA } else { // VARS $tsData = array( 'obj_id' => $obj_id, 'obj_title' => $tsCore->setSecure($_POST['obj_title']), 'obj_user' => $tsCore->setSecure($_POST['obj_user']), ); // DATOS include("../ext/datos.php"); $smarty->assign("tsData",$tsData); $smarty->assign("tsDenuncias",$tsDenuncias['videos']); } break; Ahora en el archivo ajax.moderacion.php buscamos 'moderacion-mps' => array('n' => 3, 'p' => 'main'), y debajo pegamos 'moderacion-videos' => array('n' => 3, 'p' => 'main'), despues buscamos case 'moderacion-fotos': y arriba pegamos case 'moderacion-videos': //<-- $vid = (int)$_POST['vid']; // ACCIONES SECUNDARIAS switch($do){ case 'reboot': $tsAjax = 1; echo $tsMod->rebootVideo($_POST['id']); break; case 'borrar': if($_POST['razon']){ $tsAjax = 1; echo $tsMod->deleteVideo($vid); }else { include('../ext/datos.php'); $tsPage = 'php_files/p.videos.mod'; $smarty->assign("tsDenuncias",$tsDenuncias['videos']); } break; Ahora buscamos el archivo datos.php en el directorio inc/ext y buscamos al final de todo ); y arriba pegamos 'videos' => array( '', 'Ya está publicado', 'Se hace Spam', 'El video no anda', 'Es racista o irrespetuosa', 'Contiene información personal', 'Contiene pedofilia', 'Es gore o asquerosa', 'Otra razón (especificar)' ), Ahora buscamos en acciones.js case 'fotoid': if(global_data.fotoid!='') return r+global_data.fotoid; break; y debajo pegamos case 'videoid': if(global_data.videoid!='') return r+global_data.videoid; break; Ahora buscamos en admin.js medallas : { borrar:function(mid, gew){ y arriba pegamos videos : { borrar:function(vid, gew){ if(!gew){ mydialog.show(); mydialog.title('Borrar Video'); mydialog.body('&#191;Quiere borrar este video permanentemente?'); mydialog.buttons(true, true, 'Sí', 'admin.videos.borrar(' + vid + ', 1)', true, false, true, 'No', 'close', true, true); mydialog.center(); }else{ $('#loading').fadeIn(250); $.post(global_data.url + '/admin-video-borrar.php', 'vid_id=' + vid, function(a){ mydialog.alert((a.charAt(0) == '0' ? 'Opps!' : 'Hecho'), a.substring(3), false); mydialog.center(); success: $('#video_' + vid).fadeOut(); $('#loading').fadeOut(350); }); } }, setOpenClosed:function(vid){ $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url +'/admin-video-setOpenClosed.php', data: 'vid=' + vid, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.alert('Error', h.substring(3)); break; case '1': // $('#comments_video_' + vid).html('<font color="red">Cerrados</font>'); break; case '2': // $('#comments_video_' + vid).html('<font color="green">Abiertos</font>'); break; } $('#loading').fadeOut(350); } }); }, setShowHide:function(vid){ $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url +'/admin-video-setShowHide.php', data: 'vid=' + vid, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.alert('Error', h.substring(3)); break; case '1': // $('#status_video_' + vid).html('<font color="purple">Oculto</font>'); break; case '2': // $('#status_video_' + vid).html('<font color="green">Visible</font>'); break; } $('#loading').fadeOut(350); } }); }, }, En moderacion.js buscamos users: { action: function(uid, action, redirect){ y arriba pegamos videos : { // BORRAR borrar:function(vid, redirect, aceptar){ if(!aceptar){ $.ajax({ type: 'POST', url: global_data.url + '/moderacion-videos.php?do=borrar', success: function(h){ mydialog.show(); mydialog.title('Borrar Video'); mydialog.body(h); mydialog.buttons(true, true, 'Borrar', 'mod.videos.borrar(' + vid + ", '" + redirect + "', 1);", true, false, true, 'Cancelar', 'close', true, true); $('#modalBody').css('padding', '20px 10px 0'); mydialog.center(); return; } }); } else { mydialog.procesando_inicio('Eliminando...', 'Borrar Video'); var razon = $('#razon').val() var razon_desc = $('input[name=razon_desc]').val(); $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/moderacion-videos.php?do=borrar', data: 'vid=' + vid + '&razon=' + razon + '&razon_desc=' + razon_desc, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.alert('Error', h.substring(3)); break; case '1': if(redirect == 'true') mod.redirect("/moderacion/videos", 1200); else if(redirect == 'videos') { mydialog.alert('Aviso', h.substring(3)); mod.redirect("/videos/", 2000); } else { mydialog.close(); $('#report_' + vid).slideUp(); } break; } $('#loading').fadeOut(350); }, complete: function(){ mydialog.procesando_fin(); $('#loading').fadeOut(350); } }); } }, }, En el archivo p.denuncia.form.tpl buscamos {elseif $tsAction == 'denuncia-mensaje'} y arriba pegamos {elseif $tsAction == 'denuncia-video'} <div align="center" style="padding:10px 10px 0"> <b>Denunciar video:</b><br /> {$tsData.obj_title}<br /><br /> <b>Razón de la denuncia:</b><br /> <select name="razon"> {foreach from=$tsDenuncias key=i item=denuncia} {if $denuncia}<option value="{$i}">{$denuncia}</option>{/if} {/foreach} </select><br /> <b>Aclaración y comentarios:</b><br /> <textarea tabindex="6" rows="5" cols="40" name="extras"><textarea><br /> <span class="size9">Para atender tu caso rápidamente, adjunta pruebas de tu denuncia.<br /> (capturas de pantalla)</span> </div> Ahora en main_header.tpl buscamos fotoid:'{$tsFoto.foto_id}', y debajo pegamos videoid:'{$tsVideo.vid_id}', Ahora en head_menu.tpl buscamos {if $tsConfig.c_fotos_private == '1' && !$tsUser->is_member}{else} <li class="tabbed {if $tsPage == 'fotos'}here{/if}" id="tabbedfotos"> <a title="Ir a Fotos" onclick="menu('fotos', this.href); return false;" href="{$tsConfig.url}/fotos/">Fotos <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> {/if} y debajo pegamos <li class="tabbed {if $tsPage == 'videos'}here{/if}" id="tabbedvideos"> <a title="Ir a Videos" onclick="menu('videos', this.href); return false;" href="{$tsConfig.url}/videos/">Videos <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Ahora en head_submenu.tpl buscamos <div id="subMenuTops" class="subMenu {if $tsPage == 'tops'}here{/if}"> <ul class="floatL tabsMenu"> arriba pegamos <div id="subMenuVideos" class="subMenu {if $tsPage == 'videos'}here{/if}"> <ul class="floatL tabsMenu"> <li{if $tsAction == '' && $tsAction != 'agregar' && $tsAction != 'album' && $tsAction != 'favoritas' || $tsAction == 'ver'} class="here"{/if}><a href="{$tsConfig.url}/videos/">Inicio</a></li> {if $tsAction == 'album' && $tsVUser.0 != $tsUser->uid}<li class="here"><a href="{$tsConfig.url}/videos/{$tsVUser.1}">Álbum de {$tsVUser.1}</a></li>{/if} {if $tsUser->is_admod}<li{if $tsAction == 'agregar'} class="here"{/if}><a href="{$tsConfig.url}/videos/agregar/">Agregar Video</a></li>{/if} {if $tsUser->is_member} <li{if $tsAction == 'album' && $tsVUser.0 == $tsUser->uid} class="here"{/if}><a href="{$tsConfig.url}/videos/album/{$tsUser->nick}">Mis Videos</a></li>{/if} <li><a href="{$tsConfig.url}/buscadorv/">Buscador</a></li> </ul> <div class="clearBoth"></div> </div> Ahora en t.admin.tpl buscamos {/if} </div> y arriba pegamos {elseif $tsAction == 'videos'} {include file='admin_mods/m.admin_videos.tpl'} Ahora en t.moderacion.tpl buscamos {elseif $tsAction == 'posts'} {include file='admin_mods/m.mod_report_posts.tpl} y debajo pegamos {elseif $tsAction == 'videos'} {include file='admin_mods/m.admin_videos.tpl'} mas abajo buscamos {if $tsUser->is_admod || $tsUser->permisos.morp}{include file='admin_mods/m.mod_papelera_posts.tpl'}{/if} y debajo pegamos {elseif $tsAction == 'vipelera'} {if $tsUser->is_admod}{include file='admin_mods/m.mod_papelera_videos.tpl'}{/if} Ahora en m.admin_sidemenu.tpl buscamos <li id="a_posts"><span class="cat-title"><a href="{$tsConfig.url}/admin/posts">Todos los Posts</a></span></li> y debajo pegamos <li id="a_film"><span class="cat-title"><a href="{$tsConfig.url}/admin/videos">Todos los Videos</a></span></li> Ahora en m.mod_sidemenu.tpl buscamos </ul> {if $tsUser->is_admod || $tsUser->permisos.movub || $tsUser->permisos.moub} <h4>Gestión</h4> y arriba pegamos <li id="a_film"><span class="cat-title"><a onclick="$('#a_film').addClass('active');" href="{$tsConfig.url}/moderacion/videos">Videos <span class="cadGe cadGe_{if $tsConfig.novemods.repvideos > 15}red{elseif $tsConfig.novemods.repvideos > 5}purple{else}green{/if}">{$tsConfig.novemods.repvideos}</span></a></span></li> ahora buscamos </ul> {/if} {if $tsUser->is_admod || $tsUser->permisos.mocp || $tsUser->permisos.mocc} <h4>Contenido desaprobado</h4> y arriba pegan {if $tsUser->is_admod}<li id="a_vipelera"><span class="cat-title"><a onclick="$('#a_vipelera').addClass('active');" href="{$tsConfig.url}/moderacion/vipelera">Videos eliminados <span class="cadGe cadGe_{if $tsConfig.novemods.vispelera > 15}red{elseif $tsConfig.novemods.vispelera > 5}purple{else}green{/if}">{$tsConfig.novemods.vispelera}</span></a></span></li>{/if} Ahora en admin.css buscamos li#a_badwords {background-image: url(../images/icons/stop.png);} debajo pegamos li#a_film {background-image: url(../images/film.png);} Ahora en moderacion.css buscamos li#a_revposts {background-image: url(../images/icons/exclamation.png);} y debajo pegamos li#a_vipelera {background-image: url(../images/film.png);} li#a_film {background-image: url(../images/film.png);} Ahora en .htaccess buscamos # ADMIN y arriba pegamos # VIDEOS RewriteRule ^videos/([A-Za-z0-9_-]+).php$ inc/php/videos.php?action=$1 [QSA,L] RewriteRule ^videos/album/([A-Za-z0-9_-]+)$ inc/php/videos.php?action=album&user=$1 [QSA,L] RewriteRule ^videos/album/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/videos.php?action=album&user=$1&page=$2 [QSA,L] RewriteRule ^videos/([A-Za-z0-9_-]+)/([0-9]+)/([A-Za-z0-9_-]+).html$ inc/php/videos.php?action=ver&user=$1&vid=$2 [QSA,L] RewriteRule ^admin/videos/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/admin.php?action=videos&act=$1&vid=$2 [QSA,L] RewriteRule ^videos/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/videos.php?action=$1&id=$2 [QSA,L] Para hacer las consultas CREATE TABLE IF NOT EXISTS `v_videos` ( `vid_id` int(11) NOT NULL AUTO_INCREMENT, `vid_title` varchar(40) NOT NULL, `vid_date` int(10) NOT NULL, `vid_description` text NOT NULL, `vid_url` varchar(200) NOT NULL, `vid_user` int(11) NOT NULL, `vid_closed` int(1) NOT NULL DEFAULT '0', `vid_visitas` int(1) NOT NULL DEFAULT '0', `vid_votos_pos` int(3) NOT NULL DEFAULT '0', `vid_votos_neg` int(3) NOT NULL DEFAULT '0', `vid_status` int(1) NOT NULL DEFAULT '0', `vid_last` int(1) NOT NULL DEFAULT '0', `vid_hits` int(11) NOT NULL DEFAULT '0', `vid_ip` varchar(15) NOT NULL DEFAULT '0', PRIMARY KEY (`vid_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; CREATE TABLE IF NOT EXISTS `v_comentarios` ( `cid` int(11) NOT NULL AUTO_INCREMENT, `c_vid_id` int(11) NOT NULL, `c_user` int(11) NOT NULL, `c_date` int(10) NOT NULL, `c_body` text NOT NULL, `c_ip` varchar(15) NOT NULL, PRIMARY KEY (`cid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `v_votos` ( `vid` int(11) NOT NULL AUTO_INCREMENT, `v_vid_id` int(11) NOT NULL, `v_user` int(11) NOT NULL, `v_type` int(1) NOT NULL, `v_date` int(11) NOT NULL, PRIMARY KEY (`vid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; ALTER TABLE `w_medallas` ADD `m_cond_video` INT( 11 ) NOT NULL; ALTER TABLE `w_stats` ADD `stats_videos` INT NOT NULL; ALTER TABLE `w_stats` ADD `stats_video_comments` INT NOT NULL; ALTER TABLE `u_miembros` ADD `user_videos` INT(11) NOT NULL; Descargar [Mod] Sección Video Actualizado - By Miguel92
  2. 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
  3. Nota 22/11/2018 = No he continuado con esta versión ya que existe Mozzfire y no le veo sentido hacerlo con la versión 3 de bootstrap! ==================================================================================================================== Bueno acá les dejó SYNTAXIS V.3.0.1, ya les voy advirtiendo que tiene problemas de diseño que los iré solucionando con las otras versiones por ahora son 8, aunque el último creo que no lo terminé.... van a tener 3 archivos comprimidos 1) Primer archivo: "InstalarSyntaxis.rar" ← Este contiene 4 archivos[.txt] para modificar los php, esto en el caso que tengan otros mods instalados 2) Segundo archivo: "ThemeSyntaxis.rar" ← Este contiene el theme lo instalan como Syntaxis_v3. 3) Tercer archivo: "IncSyntaxis.rar" ← Este contiene los archivos del directorio inc modificados de la versión 3.0.1, si lo quieren reemplazar directamente (si lo tienen por default). Obviamente que esto se irá mejorando, terminará así: [[ PD: la web ya no funciona ]] Otra cosa capaz les aparezca esto No se preocupen, no tiene ninguno de esos mods, pero da el mismo error... Se publica y sube la foto igual....No he encontrado solución alguna. Si tienen problemas con alguno de los enlaces, pueden acceder a la capeta Syntaxis_V3 He saltado a la V.3.0.1 porque la V.1 tenia un error el menú pero era solo diseño, y la V.2 era muy fea para presentarla...
  4. Miguel92

    [MOD - Actualizados] Sección videos

    Buscas en head_submenu.tpl y buscas {if $tsPage == 'tops'} y reemplazas por {if $tsPage == 'videos'} <ul> <li><a {if $tsAction == 'videos'}class="viendo" {/if}href="{$tsConfig.url}/videos/">Inicio</a></li> {if $tsAction == 'album' && $tsVUser.0 != $tsUser->uid} <li><a class="viendo" href="{$tsConfig.url}/videos/{$tsVUser.1}">Álbum de {$tsVUser.1}</a></li> {/if}{if $tsUser->is_admod} <li><a{if $tsAction == 'agregar'} class="viendo"{/if} href="{$tsConfig.url}/videos/agregar/">Agregar Video</a></li> {/if}{if $tsUser->is_member} <li><a{if $tsAction == 'album' && $tsVUser.0 == $tsUser->uid} class="viendo"{/if} href="{$tsConfig.url}/videos/album/{$tsUser->nick}">Mis Videos</a></li> {/if} <li><a{if $tsAction == 'buscadorv'} class="viendo"{/if} href="{$tsConfig.url}/buscadorv/">Buscador</a></li> </ul> {elseif $tsPage == 'tops'}
  5. Esto es algo que siempre quise hacer, pero como he mencionado anteriormente "SOY MALíSIMO EN PROGRAMACIÓN PHP", pero estaba buscando algo parecido en el foro...pero no encontré. Así que realice uno desde cero. 1 - En inc/class/c.posts.php buscan /* getCatData() :: OBTENER DATOS DE UNA CATEGORIA */ y arriba agregan /* OBTENER LOS TITULOS DE LOS POSTS ANTERIOR/SIGUIENTE */ function TituloAnterior() { global $tsCore; $post_id = intval($_GET['post_id']-1); $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title FROM p_posts WHERE post_id = \''.$tsCore->setSecure($post_id).'\' LIMIT 1'); $data = db_exec('fetch_assoc', $query); return $data['post_title']; } function TituloSiguente() { global $tsCore; $post_id = intval($_GET['post_id']+1); $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title FROM p_posts WHERE post_id = \''.$tsCore->setSecure($post_id).'\' LIMIT 1'); $data = db_exec('fetch_assoc', $query); return $data['post_title']; } 2 - Luego en inc/php/posts.php buscan // COMENTARIOS /*$tsComments = $tsPosts->getComentarios($tsPost['post_id']); $tsComments = array('num' => $tsComments['num'], 'data' => $tsComments['data']); $smarty->assign("tsComments",$tsComments);*/ // PAGINAS y arriba pegan $smarty->assign("tsTituloAnterior",$tsPosts->TituloAnterior()); $smarty->assign("tsTituloSiguente",$tsPosts->TituloSiguente()); y en la sección del post donde esta anterior, aleatorio y siguente le agregan {$tsTituloAnterior} o {$tsTituloSiguente} hasta ahora todo bien, pero cual es el problema Ejemplo 1: Llegaste al último post, pero ya no veras ningún nombre de post siguente...Pero lo que quiero es que muestre el nombre del post actual ya que es el último Ejemplo 2: Tienes los posts con las id (1,2,3,6) hay falta el 4 y 5, y esto no funcionaría ya que le esta sumando o restando a la ID actual y en este caso: ¿Como haría para buscar el ID más cercano?
  6. Tenes razón, no me percate de ese detalle que si el post esta suspendido/revisión que no lo muestre.
  7. Muchas gracias genio! Era lo que necesitaba...
  8. Pedido: [Mod-Pedido] Hoy es su Cumpleaños! Por: @Rebieta Nota: No sé si es exactamente lo que quiere, pero les dejo el mod (Bueno, conjunto de mods)... PD: les dejaré las imágenes y el archivo m.home_cumpleanos.tpl Cumpleaños completos Lo pongo de esta manera porque es un conjunto de mod en uno solo les quedará así, obviamente no se fijen en el diseño ya que lo hice para la default así no más ya que puede ser usada en cualquier theme LOS MODS USADOS: - [MOD] Notificación de cumpleaños del usuario que sigues by @Kmario19 - [MOD] Cumpleaños en la homeby @Kmario19 - [MOD] Cumpleaños v2 + Administración + Fecha en perfil by @k_jupiter MOD NUMERO 1: * Anuncia a tus seguidores de tu cumpleaños! MOD NUMERO 2: * Anunciar cumpleaños en la home! MOD NUMERO 3: * Logo especial de cumpleaños + Mensaje! Archivo m.home_cumpleanos.tpl + imagenes[cookie.png y cumple.png] → modis.zip ← lo descomprimen directamente en la carpeta de su theme Bueno, ni siquiera es un mod... es un conjunto, luego en la otra versión ya será diferente!
  9. La actualización es muy rápida y no requiere hacer ninguna modificación al menos que el usuario la requiera, pero se puede hacer otro tutorial agregando un plugin en smarty y/o uso de ello Incorporar un nobbcode: Quita las etiquetas del bbcode y usarlo como descripción del post en el home (Usando el contenido del body del post) -------------------------------------- O usar el strip_tags Referencias: → php.net (http://php.net/manual/es/function.strip-tags.php) → smarty.net (https://www.smarty.net/docsv2/es/language.modifier.strip.tags.tpl) Visiten la página en github: Web(del tutorial) Ver tutorial → Ver ahora ← Cambio adicional: Buscar en header.php define('TS_EXTRA', TS_ROOT.'/inc/ext/'); y debajo pegamos define('TS_SMARTY', TS_ROOT.'/inc/smarty/'); más abajo buscamos include TS_CLASS.'c.smarty.php'; y reemplazamos por include TS_SMARTY.'SmartyBC.class.php'; luego más abajo buscar $smarty = new tsSmarty(); y reemplazarlo por $smarty = new SmartyBC();
  10. Miguel92

    [MOD - Actualizados] Sección videos

    Y debería...
  11. Bueno realizando pedido: Usuario: @CJ23 Pedido: [Pedido] Selector de temas Espero que alguien más le sirva! solo un pequeño de talle con el cache, o solo creo que me pasa a mi porque tengo en uno de los themes más archivos que en los otros y me salta el error de que me falta un archivo que solo lo tiene un theme He tomado el [MOD] Selector de themes por usuario del usuario → @alexander1712, pero como no lo encontré actualizado he decidido actualizarlo a la Versión 1 y Versión 2(en uno solo), si ya existía pido perdón...Pero como dije antes "pero como no lo encontré actualizado" Sin utilizar el migrado migrador... Bueno empecemos 1) - Realizar la consulta ALTER TABLE `u_miembros` ADD `user_theme` INT NOT NULL 2) - Buscamos el archivo c.core.php en inc/class y vamos al final y arriba de la última llave colocaremos function set_theme_by_user($uid) { $uid = (int) $uid; $query = db_exec(array(__FILE__,__LINE__),'query', 'SELECT user_theme FROM u_miembros where user_id = '.$uid); if($result = db_exec('fetch_array',$query)) { if($result['user_theme']!=0) { $query = db_exec(array(__FILE__,__LINE__),'query', 'SELECT * FROM w_temas WHERE tid = '.$result['user_theme']); $data = db_exec('fetch_assoc', $query); $data['t_url'] = $this->settings['url'] . '/themes/' . $data['t_path']; $this->settings['tema'] = $data; } } } function get_RLtheme() { $query = db_exec(array(__FILE__,__LINE__),'query', 'SELECT tid, t_name FROM w_temas'); return result_array($query); } 3) - Ahora buscamos en la raíz header.php y buscamos // Mensajes $tsMP = new tsMensajes(); y debajo pegamos // definimos el template por usuario, si no esta loggeado queda default if($tsUser->is_member) $tsCore->set_theme_by_user($tsUser->uid); Luego más abajo buscamos // Smarty $smarty =& tsSmarty::getInstance(); y la reemplazamos por // Smarty // $smarty =& tsSmarty::getInstance(); // Por si tienen que volverlo a como estaba antes $smarty =& tsSmarty::getInstance($tsTema); 4) - Ahora en c.cuenta.php buscamos // ACTUALIZAR if($save == 1) { db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_email = \''.$tsCore->setSecure($perfilData['email'], true).'\' WHERE user_id = \''.$tsUser->uid.'\''); array_splice($perfilData, 0, 1); // HACK $updates = $tsCore->getIUP($perfilData, 'user_'); if(!db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_perfil SET '.$updates.' WHERE user_id = \''.$tsUser->uid.'\'')) return array('error' => show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db')); debajo pegamos db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_theme = '.(int)$_POST['theme'].' WHERE user_id = '.$tsUser->uid); 5) - Ahora en c.smarty.php buscamos function tsSmarty() { global $tsCore; // $this->template_dir = TS_ROOT.DIRECTORY_SEPARATOR.'themes'.DIRECTORY_SEPARATOR.TS_TEMA.DIRECTORY_SEPARATOR.'templates'; $this->compile_dir = TS_ROOT.DIRECTORY_SEPARATOR.'cache'; $this->template_cb = array('url' => $tsCore->settings['url'], 'title' => $tsCore->settings['titulo']); // $this->_tpl_hooks = array(); } y la reemplazamos por function tsSmarty($leader) { global $tsCore; // $this->template_dir = TS_ROOT.DIRECTORY_SEPARATOR.'themes'.DIRECTORY_SEPARATOR.TS_TEMA.DIRECTORY_SEPARATOR.'templates'; $this->compile_dir = TS_ROOT.DIRECTORY_SEPARATOR.'cache/'.$leader; $this->template_cb = array('url' => $tsCore->settings['url'], 'title' => $tsCore->settings['titulo']); // $this->_tpl_hooks = array(); } y un poco más abajo buscamos public static function &getInstance() { static $instance; if( is_null($instance) ) { $instance = new tsSmarty(); } y la reemplazamos, lo que se hizo fue agregar el $leader en public static function &getInstance() y en new tsSmarty() public static function &getInstance($leader) { static $instance; if( is_null($instance) ) { $instance = new tsSmarty($leader); } 6) - Ahora en c.admin.php buscamos // NUEVO if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `w_temas` (`t_name`, `t_url`, `t_path`, `t_copy`) VALUES (\'' . $tsCore->setSecure($temadb['nombre']) . '\', \'' . $tsCore->setSecure($temadb['url']) . '\', \'' . $tsCore->setSecure($tema_path) . '\', \'' . $tsCore->setSecure($temadb['copy']) . '\')')) return 1; else return 'Ocurrió un error durante la instalación. Consulta el foro ofcial de PHPost.'; } y la reemplazamos por // NUEVO if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `w_temas` (`t_name`, `t_url`, `t_path`, `t_copy`) VALUES (\'' . $tsCore->setSecure($temadb['nombre']) . '\', \'' . $tsCore->setSecure($temadb['url']) . '\', \'' . $tsCore->setSecure($tema_path) . '\', \'' . $tsCore->setSecure($temadb['copy']) . '\')')) { mkdir('../../cache/'.$tema_path); return 1; } else { return 'Ocurrió un error durante la instalación. Consulta el foro ofcial de PHPost.'; } 7) - Ahora en cuenta.php buscamos // PERFIL INFO $tsPerfil = $tsCuenta->loadPerfil(); $smarty->assign("tsPerfil",$tsPerfil); debajo pegamos // themes info $smarty->assign("tsRLThemes",$tsCore->get_RLtheme()); 8) - Y último paso buscamos m.cuenta_cuenta.tpl: <select class="cuenta-save-1" name="ano"> {section name=year start=$tsEndY loop=$tsEndY step=-1 max=$tsMax} <option value="{$smarty.section.year.index}" {if $tsPerfil.user_ano == $smarty.section.year.index}selected="selected"{/if}>{$smarty.section.year.index}</option> {/section} </select> </div> y debajo pegamos esto por cada theme que tengamos instalado <div class="field"> <label for="pais">Diseño:</label> <select class="cuenta-save-1" name="theme"> <option value="0">Tema por defecto</option> {foreach from=$tsRLThemes item=theme} <option value="{$theme.tid}" {if $code == $tsPerfil.user_pais}selected="selected"{/if}>{$theme.t_name}</option> {/foreach} </select> </div> Espero no haberme olvidado de algo!... Iba a usar también el mod Cambiar plantilla(usuario) de @Rhuan pero no me funciono, solo me recargaba la página...capaz lo hice mal pero ni idea...he seguido todos los pasos!
  12. 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!
  13. Miguel92

    V6 1.3 (ACT/FIX) 2019

    Comprueba que la dirección url este bien colocada! Porque no está aplicando los estilos y scripts necesarios.
  14. Miguel92

    V6 1.3 (ACT/FIX) 2019

    Hola, el mensaje #1046 te está diciendo que no has seleccionado ninguna base de datos, lo que debes hacer es hacer clic en la base "BASE_DE_DATOS"(Nombre de la base de datos que hayas creado) y luego ejecutar esa consulta
  15. 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
  16. Ya lo arregle, me había equivocado la contraseña! Aun le tengo que dar algunos detalles para que quede mejor!
  17. Miguel92

    algun tuto para hacer la instaladcion desde infinitifreee

    En skylium no puedes porque funciona mal! yo no puedo acceder al cpanel
  18. 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;
  19. Miguel92

    V6 Dark (Oscuro) 1.3 (ACT/FIX) 2019

    Puede ser, pero yo lo uso así y funciona bien...Me muestra el mensaje y luego de 2s se redirige! [Lo estaba usando en la web lincesx.ga(ya no existe)]
  20. Miguel92

    V6 Dark (Oscuro) 1.3 (ACT/FIX) 2019

    Que raro porque el mensaje que te debería mostrar sería este Bienvenido a PáginaWeb, Ahora estas registrado y tu cuenta ha sido activada, podrá;s disfrutar de esta comunidad inmediatamente. ¡Muchas gracias! :) Lo que puedes hacer momentáneamente es lo siguiente: Buscar en registro.js case '2': $('#RegistroForm').hide(); $('#ocumile').hide(); $('#boxms').html(h.substring(strpos(h, ':')+2)); $('.fulr').hide(); $('#login_box').addClass('fulltoupnet'); y debajo agregas redireccionar(2000); // Tiempo de espera (2s) esto obviamente va a redirigir a la cuenta del usuario ya que se hace uso del // REDIRECCIONAR function redireccionar() { location.href = global_data.url + '/cuenta/' } Hasta que Tronlar te de una solución eficaz!
  21. Miguel92

    PHPost Foro Antigua v1

    Por si te interesa
  22. 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; }
  23. 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!
  24. Si tienes razón, pero lo quise hacer aparte ya que tengo pensado agregar más...Bueno en el topic no lo he aclarado!
  25. 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
×