Jump to content

Clasificación


Contenido popular

Showing most liked content since 19/08/17 en todas las áreas

  1. 5 points
    Bueno esto ya lo tengo implementado en la última versión de risus2_v_0_1_2_alpha, ya que tiene agregado plugin smarty: "NOBBCODE", elimina el bbcode de una string. con lo que podemos lograr esto: Ver el contenido del post sin bbcodes ↓ ↓ ↓ Para lograr eso debemos buscar el archivo c.posts.php que esta alojado en la carpeta engine\inc\class\ una vez abierto el archivo procederemos a buscar [linea: 318] /*********/ $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_imgport, y a lado agregaremos p.post_body, con lo les quedará asi /*********/ $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_imgport, p.post_body, Luego va al theme Default y buscan en templates\modules\home\m.home_postshowcase.tpl y buscamos Linea 125 <div class="desc"><a><i class="fa fa-clock-o" aria-hidden="true"></i> {$p.post_date|hace}</a></div> y debajo pegamos <div class="p-2 small">{$p.post_body|nobbcode|truncate:80}</div> luego más abajo buscamos Linea 166 <div class="desc"><a><i class="p-1 fa fa-clock-o" aria-hidden="true"></i> {$p.post_date|hace}</a></div> y debajo pegamos <div class="p-2 small">{$p.post_body|nobbcode|truncate:80}</div>
  2. 4 points
    ¡Hola a todos! ¡Se que muchos estaban esperando una release más o menos presentable! ¡Y hoy se las traigo! La nueva release de Risus2, risus2_v_0_1_2_alpha, trae mas de 35 cambios, los cuales son: Para usar LazyLoad en <img> usas "data-lazy" en vez de "src". Para usar las Hovercard o Livecards usas "data-vcard" en vez de " class="hovercard" uid="XXX" ". Para usar los Bootstrap Tooltips basta con usar "title" y el JS lo convertirá automaticamente. Ahora se usa LazyLoad en todas las imagenes que se encuentren en los TPLS. Todas las secciones fueron re-diseñadas para ser 95% Bootstrap y Responsive. Se implementaron: Imagen y fondo del perfil (Gracias Kmario19) y Imagen de portada en los posts. Se trató de usar iconos font-awesome en vez de imagenes (quedó en un 40% aprox). Se usan sonidos .MP3 en vez de .SWF (y son nuevos) mediante Jquery en las notificaciones LIVE. Nuevos Emojis (Se implementarán más en la quinta release) Ahora puedes editar la imagen de afiliado y e-mail publico desde la administración. Se eliminó el public-id de Google ya que este no se usará más... Fix en Smarty ya que no mostraba los templates cuando estaba en modo: suspendido/mantenimiento. Funciones wastedbydie o wastedbyexit serán lo mismo que die y exit solo que con un estilo personalizado y cambiable desde functions.php Arreglos en el caché de Smarty. Funciones como bind() y live() actualizadas a on(). Nueva Hovercard/Vcard Fix Recaptcha v2 mal implementada. Se eliminaron todas las imagenes que venian en /files: uploads/ y avatar/. Nueva carpeta /res/ en la raíz del sitio para usar los recursos de Bootstrap, Jquery y algunas imagenes, ya sea en el script o instalador/upgrade. Se eliminaron los créditos y aportes de los archivos, ya que estos se mostrarán en la página de creditos del blog oficial. Responsive y Bootstrap: BBCODE. Actualización de Info/Leyenda de archivos del /engine/inc/ Cuando se accede directamente a los archivos de /inc/, aparece el mismo mensaje pero con un estilo. Nuevo favicon Se eliminan archivos y código innecesarios y obsoletos del script anterior (Risus) y nuevo (Risus2). Se renombran algunos templates. Nuevas mejoras/fixes en el instalador. Unificación de Acciones.js y Funciones.js por script.js Todos los recursos son locales, es decir, no hay nada que se cargue externamente en css, php, js, etc. Se realiza verificación de que la imagen exista en imagen de portada (posts/perfil) y fondo de perfil. Nuevo avatar default. Robots.txt (mejora de "seo") Fix header al redireccionar a la install Buscador: Ahora puedes buscar a personas mediante su correo electronico y usuario! Nuevo post y foto que se publican al finalizar instalación. Ahora puedes usar font-awesome en los iconos de las categorías, pronto las imágenes de las categorías quedarán obsoletas! Agregado plugin smarty: "NOBBCODE", elimina el bbcode de una string. Espero que les guste y la disfruten! Pronto seguiré mejorando y por favor, reporten todos los bugs que vayan encontrando. Muchas gracias! Descarga y LOG aquí:http://risus2.blogspot.cl/2017/08/risus2v012alpha.html
  3. 4 points
    Hola a todos. Estoy contento informarles que hubo más de 20 personas que instalaron el script, así que a todos, muchas gracias! Traté de corregir varios bugs en esa release, sobretodo, en el instalador, ya que en el ni siquiera se podía instalar el script. Tengo que decir que 12 horas después de que publiqué la primera release, publiqué la misma versión solo que con el instalador fixed, es decir, r2install_v_0_1_3_alpha. Ahora, creo que la próxima versión será la 1.0.0-beta, la cual traerá más cambios y fixes. Esta la publicaré a finales de mes y se podría decir que será una versión 100% estable para su uso. Por favor, si pueden publicar sus bugs y/o recomendaciones, se los agradecería bastante, ya que estos irán parcheados y/o incluidos en la versión ya mencionada. https://www.phpost.net/foro/forum/122-opinión/ https://www.phpost.net/foro/forum/123-bugs/ También modifiqué el sitio de Risus2 (el blog) para mostrar las versiones más recientes y también la sección de créditos. http://risus2.blogspot.com
  4. 3 points
    Bueno ya pueden descargar el proyecto ya tiene más modificaciones, aunque lo más probable que me haya olvidado de unas secciones pero todo lo que se ve ya esta terminado, en el caso que llegarán a encontrar parte sin editar por favor decirmelo. Tiene el instalador, los archivos INC modificados, 2 themes [Default, MozzFire], aunque cuando lo instalan ni siquiera tienen que ir a la administración a cambiar de theme porque ya lo tiene hecho, se agrego un nuevo panel que controla los METAS! Pueden leer el README.md que tiene todos los pasos que he hecho al theme y los que se hizo, y también pueden descargar el proyecto desde mi repositorio en gtihub → MozzFire V.2 ←, porque en el caso que le vaya haciendo actualizaciones las subo y les digo que archivos son los que tienen que modificar. Ya no se llama install, ahora es instalador y ni siquiera tienen que escribirlo se coloca solo y lo instalan como si fuera nuevo, hasta que logre crear el actualizador para que los que ya tienen no pierdan nada. En el README.md tiene los mods usados. Debe ir a https://www.google.com/recaptcha/admin#list para buscar y cambiar clave del sitio y clave secreta solo buscan los archivos y lo cambian por sus claves en inc/class/c.registro.php y templates/t.php_files/p.registro.form.tpl.php [ver mod ] → Descargar MozzFire V.2 ← → Demo Demo32 ← usuario: Demo pass: demouser Para entra al club MOZZFIRE: Aquí Para reportar Bugs: Aquí Apto para PHP 7.1
  5. 3 points
    Hola a todos! El momento que todos habían esperado, ¡Risus2! la versión más estable hasta el momento: Notas (r2install_v_1_0_0_beta | risus2_v_1_0_0_beta):Algunos hosts eliminan parte del archivo config.inc.php, por favor, copia el contenido manualmente y pasalo al archivo de tu host.Bugs arreglados en instalador y muchas mejoras:-Bug no poder continuar.-Bug al colocar la URL completa.-Funciones.-Nuevos archivos.-Al ingresar al instalador, y luego ingresar una base de datos anteriores de Risus2 o Phpost Risus podrás migrarlos y usarlas.Previsualizar post (obviamente con un límite) en el home.Funcion en el Núcleo implementada: limitwords($x, $length) [limita los caracteres mostrados de una string en php].Nueva VCARD.Más funciones actualizadas en los archivos .JS: bind() a on() | unbind() a off() | attr() por prop()Archivos header.php, footer.php y c.smarty.php modificados para que el caché de Smarty funcione correctamente y se guarde en la raíz del sitio.Nuevo sistema de errores functions.phpFix en los comentarios de los posts.Ahora al hacer click en las imagenes de portada de los posts en el home también se puede ingresar.Transformación Bootstrap al registro.Ahora se usa font-awesome icons en vez de la campanita que aparecía en las notificaciones (monitor) y en actividad.Fix c.monitor.php y c.muro.php para que funcione con Php 7.1+.Links arreglados en admin (créditos).Ahora cada página tendrá su propio icono font-awesome para ser usado en el Jumbotron (cambiable desde /engine/inc/php/...) [esto será administrable en futuras versiones].Ahora muestra Livecard en el último usuario registrado.Ahora puedes obtener el nombre del rango mediante la function $tsUser->getUserRango(ID) [esto se usa desde ahora en t.mensajes.tpl}Se agregaron clases como FORM-GROUP ., FORM-INPUT, custom-***, y switch-md en la mayoría de , <textarea>, radios y checkboxes.Cambios en el menú: Se agrego la condicional para las fotos.Se cambió /agregar/ un poco.Ahora el menú movil clona el menú normal, así que no es necesario editarlo dos veces.Ahora los iconos de categorías, medallas, rangos, editor y banderas de paises se encuentran dentro de la carpeta /res/ para que los temas no sean más pesados.Nuevo diseño para las fotos y posts (home). Descarga en Github Capturas: Cedida por @ElBatman:
  6. 3 points
    Les traigo el desarrollo de una plantilla que estaba haciendo para mi sitio, lo realizaba cuando tenía tiempo. Espero que a alguien le pueda llegar a servir pero bueno acá se los dejo: DESCARGA: https://drive.google.com/file/d/0B165_Uw6nN9KSzJuM3lXMk9jRTA/view?usp=sharing
  7. 3 points
    The Walking Dead - Season 1 gratis para Steam https://www.humblebundle.com/store/the-walking-dead-season-1 Deben agregarlo al carrito y completar la transacción. El juego está con un 100% de descuento, por lo que obviamente les saldrá $0. Tienen 2 días para obtenerlo. Cromos: Si Logros: Si Reviews: Extremadamente positivos (96%) Mas info en: http://store.steampowered.com/app/207610/The_Walking_Dead/
  8. 3 points
    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
  9. 2 points
    Bueno les presento el primer theme o skin como quieran llamarlo, pero usando Material Design aunque solo hay que hacer unos pequeños ajuste pero ya esta lista para usar... ASÍ QUEDARÁ ↓ ↓ ↓ ↓ ↓ Lo pueden descargar tranquilamente desde mi repositorio en GitHub así en el caso que vaya agregando las modificaciones ya solamente descargan el archivo modificado o ver para evitar descargar todo otra vez...tiene la carpeta res que solo tiene el css y el js necesario para que funcione y en la carpeta themes tiene el skin con algunas modificaciones PD: lo instalan como MaterialDesign
  10. 2 points
    6 años desde que mi uní al foro y casi dos años sin subir un nuevo tema, pero ver que aun hay gente que descarga mis antiguos "themes". Los amo <3
  11. 2 points
    Muy buenas gente de Phpost . Pues después de un mes de estar sin pc, por fin he podido terminar el theme Carbon. En esta versión están todas las paginas rediseñadas y se adaptan a diferentes tamaños de pantalla. El theme carbon, es un theme que utiliza como base el framework Bulma css. Con diseño simple, elegante, 100% adaptable a cualquier tamaño de pantalla (responsive), ademas de servir como base para nuevos diseños que podrían ser diseñados por la comunidad de Phpost. Características: 100% responsive (Gracias al framework bulma.io) Reemplazo de los iconos default, por la libreria de iconos fontawesome.io Portadas para cada post en la Home Ligero, pesa tan solo 1.93mb (En comparacion del theme default 2.56mb) Cambios v.1.0 Administración y moderación 100% responsive Arreglo de errores de diseño en las secciones: Tops, Cuenta, Buscador, Portal Arreglo de errores de diseño en las ventanas modal (Responsive) Nuevo diseño del editor de post y comentarios Rediseño del footer Pequeñas mejoras en la home Incluido Lazyload en las portadas (se utilizo la librería bLazy.js) Agradecimiento especial a @Rengo por ayudarme a corregir algunos errores. Y a @zkreations por el tutorial de como implementar el librería bLazy, la verdad me cayo como anillo al dedo, ya que pase horas y horas intentando implementar dicha librería hasta que me tope con su tutorial . Lo puedes encontrar en su blog zkreations.com lo recomiendo ya que hay bastantes artículos de diseño y son simples de implementar, ademas de tener consejos,etc. Imagenes Vista desde un teléfono móvil También dejo una demo DEMO User: demo Pass: demo123 Instalación Primero realiza la siguiente consulta en tu base de datos ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL Después descarga el theme y remplaza los archivos necesarios LINK Instala el theme desde el panel de administración Listo ya lo tienes Bueno eso es todo, espero disfruten el theme, cualquier sugerencia o duda los responderé en este tema. Te pido ademas que no retires mi copyright, fue bastante trabajoso editar todo desde la default y volverlo responsive. No olvides dejar tu me gusta para seguir compartiendo diseños y aumentar mi ego (Es mi único alimento ) Un saludo ..
  12. 2 points
    Hola,os este theme V5 actualizado a la versión 1.2.6.000 y aparte le he le he corregido algunas cosas,comunidades,shouts,fix en los juegos,rss web,rss usuario.... Esta versión es para intalar como el script de PHPOST,desde cero,despues cuando tenga otro rato, dejo aquí el theme,para que no tengan problemas el que ya tenga en su web un theme. Si la tienes instalada y no has instalado ningún mod,puedes subir todos los archivos menos config.inc , cache , files , install ,si tienes ya instalado algún mod ó algo,despues voy a dejar el theme y los archivos editado solo. Cualquier cosa avisan,saludos Instalación: www.tuweb.com www.tuweb.com/install/index.php Imágenes Rss web Rss usuario Actualizado 21/11/2016 Megahttps://mega.nz/#!9RdBDJxB!5l0kvAvkK9tFsEBFt6ttNAzlqKjDRBOSsnwP6Yqdfes Mediafirehttp://www.mediafire.com/file/mgxx2sancwrl12j/Theme+V5-v2a.rar Pass Tronlar
  13. 2 points
    Se refiere a que busques en el archivo c.posts.php de la carpeta inc/class la función "function newPost()" y que copies y pegues el contenido acá, es decir lo que está entre llaves De igual forma, que copies y peques el contenido del archivo m.agregar_form.tpl acá Tenias la web en modo mantenimiento, es por eso que él no puede revisar por el mismo el tpl
  14. 2 points
    Encontré un "pequeño" bug en las comunidades al intentar editar un tema sin estar siquiera logueado. Para solucionarlo vamos al archivo comunidades.php dentro de inc/php Buscamos }elseif($act == 'editar-tema') { y abajo agregamos if(!$tsCom->verify_permisos($get_com['com']['c_id'])) {$tsError = 'Tu rango no te permite realizar esta operación.';}; Esto es todo, créditos @bits4me
  15. 2 points
    FIX DE: [MOD -Actualizado] Sección Videos - parte 1 Primer error: imagen Solución: Buscar el archivo c.swat.php y buscamos case: 'videos': y borramos todos hasta el break; y en su lugar colocaremos este, también se SOLUCIONA el error de que no denunciaba, ahora con este si ya se podrá 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&iacute;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&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db') ); db_exec(array(__FILE__, __LINE__), 'UPDATE `w_stats` SET `stats_videos` = stats_videos - \'1\' WHERE `stats_no` = \'1\''); } // INSERTAR NUEVA DENUNCIA if(db_exec(array(__FILE__, __LINE__), 'query', '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&eacute;ntalo m&aacute;s tarde.'; break; Segundo error: imagen Solución: Buscamos el archivo p.denuncia.form.tpl y buscamos {elseif $tsAction == 'denuncia-video'} .... y reemplazamos por este {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> Tercer error: En moderación de videos, buscamos en c.moderacion.php case 'videos': $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT r.*, SUM(d_total) AS total, v.vid_id, v.vid_title, v.vid_status, u.user_id, u.user_name FROM w_denuncias AS r LEFT JOIN v_videos AS v ON r.obj_id = v.vid_id LEFT JOIN u_miembros AS u ON v.vid_user = u.user_id WHERE d_type = \'5\' && v.vid_status < 2 GROUP BY r.obj_id ORDER BY total DESC, r.d_date DESC'); $data = result_array($query); break; y la reemplazamos por case 'videos': $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT r.*, SUM(d_total) AS total, v.vid_id, v.vid_title, v.vid_status, u.user_id, u.user_name FROM w_denuncias AS r LEFT JOIN v_videos AS v ON r.obj_id = v.vid_id LEFT JOIN u_miembros AS u ON v.vid_user = u.user_id WHERE d_type = \'5\' && v.vid_status < 2 GROUP BY r.obj_id ORDER BY total DESC, r.d_date DESC'); $data = result_array($query); break; Luego buscamos el archivo t.moderacion.tpl y buscamos {elseif $tsAction == 'videos'} {include file='admin_mods/m.admin_videos.tpl'} y la reemplazamos por {elseif $tsAction == 'videos'} {include file='admin_mods/m.mod_report_videos.tpl'} Cuarto error: imagen Solución: Ir a ajax.moderacion.php y arriba de ?> le agregaremos una llave } Se que todavía falta arreglar algunas cosas pero, hasta ahora he podido solucionar eso, en cuanto tenga más soluciones se los haré saber!! Espero que sea suficiente, ya que no todos los usuarios serán moderadores ni administradores
  16. 2 points
    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!
  17. 2 points
  18. 2 points
    no es nuevo ni complicado lo tengo desde hace mucho.... por cierto si vas a compartir algo deberías de hacerlo aquí, sino que caso tiene
  19. 2 points
    Hola,de nada,no me molesta para nada,cualquier duda pregunta. Hola,de nada,despues cuando tenga otro rato lo miro. Para la imagen de portada,borrad lo que hayáis hecho de ese mod y hacéis esto. Suben esta carpeta le dan a sustituir y ejecutan esta consulta en vuestra base de datos. ALTER TABLE `p_posts` ADD `post_imgport` VARCHAR( 500 ) NOT NULL AFTER `post_title`
  20. 2 points
    Cromos: Sí Logros: Ni Análisis: Variados. http://store.steampowered.com/app/428430/Endorlight/ KEY: https://woobox.com/e5t9qs?embed=1
  21. 2 points
    Steam: http://store.steampowered.com/app/505440/GooCubelets_The_Void/ http://store.steampowered.com/app/460660/ Key: http://www.grabthegames.com/giveaway-goocubelets-ocd-and-the-void.html Cromos: Sí Logros: Sí Análisis: Variados.
  22. 2 points
    https://gleam.io/ZKqzW/free-steam-keys-for-safeguard-garrison Deben completar las 3 tareas del link (unirse a un grupo y hacer click en 2 links, no es necesario registrarse en ellos). Recomiendo que se salgan del grupo una vez que obtengan la key, para evitar que les envíen spam. Cromos: Si Logros: Si Reviews: Mayormente negativos (33%) Mas información del juego en: http://store.steampowered.com/app/585580/The_Safeguard_Garrison/ ??? Lo único bueno que tiene, es que se pueden sacar muchos logros y éstos sirven para adornar el perfil, pueden ver los logros disponibles en: http://steamcommunity.com/stats/585580/achievements
  23. 2 points
    Hola a todos. Las siguientes funciones de Risus fueron actualizadas en Risus2 a: Jquery 1.7.1 a 3.2.1. Live() por On() [gracias @Altffenser por decirme] Mydialog -> Bootstrap 4: Modals. Tipsy -> Bootstrap 4: Tooltips. Size() por Length. Plugin Jcrop actualizado a la última versión. Se removió autogrow, ya que será implementado de mejor manera en futuras versiones. Recaptcha 1 a Recaptcha 2. También creo que actualizaré Jquery colors, form. Y también el editor será reemplazado por el Wysibb, aunque todavía no puedo confirmar nada. Para concluir, Me falta actualizar los Hovercard o Vcard a los popovers de Bootstrap.
  24. 2 points
    http://store.steampowered.com/app/233130/Shadow_Warrior/ Cromos: Si Logros: Si Reviews: Muy positivos (93%) Ya lo habían regalado en HumbleBundle, pero ahora lo pueden sacar directamente en Steam sin tener que hacer cuentas aparte. La promoción termina el 23 de agosto, una vez que agreguen el juego a su cuenta, será suyo para siempre.
  25. 2 points
    Hola a todos. Primero que nada, hoy quiero agradecerles a todos los que están participando constantemente con el proyecto y también dar las gracias por la "gran" aceptación que tuvo en la primera versión (que fue un desastre, tengo que admitirlo ), y la segunda que venía con más fixes que la primera release traía. He estado trabajando arduamente a la par con mis estudios para poder traerles releases con muchos fixes, novedades, etc. Respondere algunas preguntas que varios usuarios haría ¿Puedo trabajar en themes o modificaciones? Por el momento, no recomiendo empezar a diseñar o trabajar en modificaciones, ya que hasta la quinta release (risus2_v_0_1_5_alpha), van a cambiar varias cosas que tengo pensadas, y por lo tanto, la idea es mantener una versión más o menos estable la cual se pueda trabajar tranquilamente. ¿Cómo puedo usar mis themes de Risus a Risus2? También, haré una guía de como adaptar temas de Risus a Risus2, ya que varios me la han pedido, no se que opinan al respecto, déjenlo acá abajo en las respuestas. ¿Qué es la herramienta del theme? La herramienta de theme no es un editor, es una herramienta la cual genera un .ZIP y el archivo install.php para poder empezar a trabajar en el theme y no hacerlo en el default. Esto es casi lo mismo que copiar la carpeta /default/, renombrarla y colocarle el install.php, aunque debido a los cambios, les recomendaría usar esta herramienta la cual será subida cuando @Miguel92 y yo terminemos de diseñar el theme default para la tercera release. ¿Cúando se publicará la tercera release? Aproximadamente la semana del 18 de Septiembre del 2017. Por cierto, me gustaría que opinaran de que les gustaría que hubiera en la segunda release y futuras para incluirlas, por favor, vayan a la sección de opinión y dejen lo que les gustaría ver. ¿Creación de archivos? Lo único que se requiere al crear un archivo nuevo, es colocar la información del archivo, aquí lo explico. ¿Mi Risus2? Exacto, es tu Risus2, en esta sección podrás publicar tu propia versión del script, es decir, cuando modifiques a gran escala el script, tu podrás publicarlo ahí. Nota: Esto no es para publicar themes o modificaciones, para ellos existe la sección diseño y mods. También los avances de la segunda release, no son muchos, pero algo es algo: Solución de bug al instalar un theme desde la Administración. Bugs de ortografía y al colocar keys de recaptcha en la instalación. Bugs de Recaptcha v2 mal implementado. Diseño V0.3 (Leer Más) Jquery 3.2.1 y Actualización de todas las funciones obsoletas en el JS como live por on, size por length, etc.. (Leer más) Nuevo archivo de las Keys de Recaptcha. Se eliminaron todas las fotos que vienen en /files/uploads/, las cuales, se me olvidaron borrar... Se crea una página de créditos dentro del blog para darle créditos al trabajo de cada persona. Ahora se usan cookies en vez de sesiones en el install. Espero que sigan apoyando al proyecto! Un saludo a todos!
  26. 2 points
    Hola a todos! Ha llegado el día que muchos estaban esperando, y es.... Risus2, con su primera release alpha. Claro que como es una versión alpha, el diseño no está ni el 1% hecho y casi ni se tocaron los archivos php internos. Pero en sí, el JS fue un 90% actualizado para que sea 100% compatible con Jquery 3 y claro, con Bootstrap 4.0.0. Todas las funciones de aquí van incluidas: Lo que sí, no me funcionaron los tooltips de Bootstrap, no sé por qué habrá sido, pero bueno, seguro en la siguiente release va solucionado. También espero que alguien pueda diseñar un tema para el script basado en este, sería genial! Y también espero usar Jquery 3.2.1, ya que me causaba un par de problemas con algunas funciones, pero según getbootstrap, esa es la versión correspondiente. También estoy trabajando para hacerlo compatible con php 7.1, ya que este no funciona... Gracias a los usuarios siguientes por sus aportes mientras el script estuvo en pre-alpha: @altffenser (js) @magicinventor (hosting) @miguel92 (sistema multi-lenguaje) @bits4me (smarty) Sin más que decir, aquí se los dejo para su descarga: risus2_v_0_1_0_alpha.zip7.5 MB https://mega.nz/#!cNVXzbiZ!4aRQMRV79zhpQRAT8HnXlBiOM36HjeRFMN9_ZOjZkqI Por favor, si tienen recomendaciones o aportes haganlo en su categoría correspondiente!
  27. 1 point
    hay un Complementos "para el themev5 Últimos posts de tu interés Elige las categorías que quieras filtrar en los últimos posts"
  28. 1 point
    Lindo theme, que bien que compartas tu trabajo..
  29. 1 point
    Muy buenas a todos Publico este topic para mostrar a través de vídeos la versión Alfa 2.0 de Risus, ya que son muchos los que lo habéis pedido. En estos vídeos, algunos nuevos y otros viejos, se pueden ver las principales novedades de esta versión, aunque hay otras como las mencionadas en otro topic: 31157 La mayoría de los cambios son a nivel "back-end", por lo que muchos podrían pensar que no hay prácticamente cambios, pues el diseño no presenta grandes novedades; pero como indico, los cambios están en el código y las funciones que presenta consigo. Aquel que tenga alguna duda sobre alguna función en concreto, puede indicarlo aquí y se le intentará responder con una explicación más extendida. Sin embargo, ya no se podrán comprar las nuevas funciones por separado, ya que se ha reducido el precio un 52% (más de la mitad) y sale casi más barato comprarlas todas que individualmente. Esto supone un ahorro de 39€. Precio anterior: 75€ Precio actual: 36€
  30. 1 point
  31. 1 point
    ve a inc/class/c.posts.php y busca esto y pasala toda function newPost(){ a y en themes/default o el que uses/ templates/modules/m.agregar_form.tpl porque tienes la web en mantenimiento y no puedo ver lo que envias pasa todo el form
  32. 1 point
    Hola amigos , hoy les traigo un tema que a raíz de la caída de phpost no lo pude compartir antes , pero como saben que cuando hago algo para phpost siempre lo termino compartiendo . Bueno Caps: Se instala como "dark_white" sin las comillas Descargar: http://www.mediafire.com/?cq8vidxl1y7u56y Demo: http://demo.wordpost.net/ Bueno espero que les haya gustado . es BETA ya que quisiera trabajar un poco mas con el pero para iniciar con el pie derecho lo publico, e dejado demo por si lo quieren probar antes de ponerlo en su web ; Solo que para ver algunas novedades necesitan poder ver su admin -few Saludos!!!
  33. 1 point
    en realidad lo único que aporto fue una carita
  34. 1 point
    Para hacer esto: 1- Vamos a c.cuenta.php y buscamos // REAL STATS $data['stats'] = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_rango, u.user_puntos, u.user_posts, y a lado agregamos → u.user_videos, más abajo buscamos $q3 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(cid) AS c FROM p_comentarios WHERE c_user = \''.(int)$user_id.'\' && c_status = \'0\'')); debajo pegamos $q4 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(vid_id) AS v FROM v_videos WHERE vid_user = \''.(int)$user_id.'\' && vid_status = \'0\'')); después buscamos $data['stats']['user_seguidores'] = $q2[0]; $data['stats']['user_comentarios'] = $q3[0]; y debajo pegamos $data['stats']['user_videos'] = $q4[0]; Luego en el archivo m.perfil_headinfo.tpl buscamos <li> <strong>{$tsInfo.stats.user_fotos}</strong> <span>Fotos</span> </li> y debajo pegamos <li> <strong>{$tsInfo.stats.user_videos}</strong> <span>Videos</span> </li> RESULTADO:
  35. 1 point
  36. 1 point
    entra a tu phpmyadmin en w_configuracion -> url verifica que sea http://localhost/pp
  37. 1 point
    Si no fuera tan malo con php, me encantaría ayudar! porque esta buena la idea...
  38. 1 point
  39. 1 point
    perfil.js: load: function(aid, obj){ // ACTUAL muro.stream.type = aid; // var atxt = (muro.stream.type == 'foto') ? 'a' : 'e'; atxt = 'Haz un comentario sobre est' + atxt + ' ' + muro.stream.type + '...'; // if(aid != 'status') { $('.btnStatus').hide(); $('.attaDesc').show(); $("#btn-adjuntar").css("display", "inline"); $('#attaDesc').attr('placeholder', atxt).val(atxt); } else { $('.btnStatus').show(); $('.attaDesc').hide(); } // $('span.uiComposer .nub, span.uiComposer span').hide(); $('span.uiComposer a').show(); $(obj).hide().parent().find('span, i').show(); // $('#attaContent > div').hide(); $('#' + aid + 'Frame').show(); // return false; },
  40. 1 point
    Es gracioso porque los veteranos no son tan veteranos.
  41. 1 point
    vale, lo are apenas tenga un rato libre
  42. 1 point
  43. 1 point
    Sube esta carpeta y le das a sustituir,los cambios no lo vas a ver en el momento,lo que está en rojo es lo que ve el usuario,las demás páginas fíjate lo que he hecho qué es muy fácil,inspecciona con el navegador y lo buscas en tus archivos... Para el título haz esto,en m.posts_content.tpl -->themes/default/templates/modules/m.posts_content.tpl buscas <div class="panero"> debajo añades: <h1>{$tsPost.post_title|truncate:50}</h1>
  44. 1 point
    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>
  45. 1 point
    te amo, ya no se como expresarte mi agradecimiento por toda la ayuda que me diste, muchísimas pero muchísimas gracias
  46. 1 point
    sisisi el problema aunque no lo puedan creer era que para entrar al portal la url es miweb.com/mi/ y no miweb.com/portal/ como pensaba que era hasta que entre a la demo de phpost y me di cuenta xD
  47. 1 point
    es facil solo hay que hacerle llegar el titulo a los bbcode primero en inc/class/c.posts.php busca esto $postData['post_body'] = $tsCore->parseBadWords($postData['post_smileys'] == 0 ? $tsCore->parseBBCode($postData['post_body']) : $tsCore->parseBBCode($postData['post_body'], 'firma'), true); y reemplaza con $postData['post_body'] = $tsCore->parseBadWords($postData['post_smileys'] == 0 ? $tsCore->parseBBCode($postData['post_body'], 'normal', $postData['post_title']) : $tsCore->parseBBCode($postData['post_body'], 'firma', $postData['post_title']), true); si prestas atencion solo enviamos ala funcion parsebbcode el cuerpo el typo y el titulo ahora en inc/class/c.core.php buscas esto function parseBBCode($bbcode, $type = 'normal') { y reemplaza con function parseBBCode($bbcode, $type = 'normal', $t) { con esto aclaramos que ahora la funcion va a recibir el titulo en forma de variable $t falta enviarlo al bbcode entonces buscas esto $parser->setRestriction(array('url', 'code', 'quote', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler', 'swf', 'video', 'goear', 'hr', 'sub', 'sup', 'table', 'td', 'tr', 'ul', 'li', 'ol', 'notice', 'info', 'warning', 'error', 'success')); y reemplazas con $parser->setRestriction(array('url', 'code', 'quote', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler', 'swf', 'video', 'goear', 'hr', 'sub', 'sup', 'table', 'td', 'tr', 'ul', 'li', 'ol', 'notice', 'info', 'warning', 'error', 'success'), $t); aqui el titulo va hacia bbcode, contenido en la variable $t en la funcion setRestriction() que recibe el array y ahora el titulo ahora hay que buscar la funcion mencionada y aclarar que recibira el titulo en inc/ext/bbcode.inc.php buscas esto public function setRestriction($array) { $this->restriction = $array; $this->addBBcodes(); } y reemplazas con public function setRestriction($array , $t) { $this->restriction = $array; $this->addBBcodes( $title = $t); } aqui ya tenemos el titulo en el bbcode, casi terminamos de aqui mandamos el titulo a addBBcodes() ahora buscamos function addBBcodes() y reemplazas con function addBBcodes($title) para este punto ya sabras lo que esta pasando, si no, no leiste y ya para terminar busca array('tag' => 'img', 'replace' => '<img src="{param}" onload="if(this.width > 735) {this.width=735}"/>', 'parse' => false, 'validParam' => $imgValidator), y reemplaza con array('tag' => 'img', 'replace' => '<img src="{param}" onload="if(this.width > 735) {this.width=735}" title="'.$title.'" alt="'.$title.'" />', 'parse' => false, 'validParam' => $imgValidator), ahora el titulo viene contenido en la variable $title y falta usarlo como alt y title. hasta aqui termino el recorrido del titulo U_u triste bueno espero te sirva
  48. 1 point
    si, eso era algo imagine jeje, por eso se me hacia raro que no lo hubieras puesto asi que es lo mas normal
  49. 1 point
    es por seo mi estimado.... así se indexa mejor en los navegadores, de igual forma el navegador cambiaría los caracteres especiales automáticamente.
  50. 1 point
    se puede aplicar a un script aunque tenga mil mods, solo se borra la carpeta smarty, guardando la carpeta plugins, se cambia c.smarty.php por el que viene en la descarga, en el archivo footer.php se cambia template_exist() por templateExist() y template_dir por setTemplateDir(), pones la carpeta smarty de la descarga y combinas tu carpeta plugins con la de la descarga y ya
×