Clasificación


Contenido popular

Showing most liked content since 27/06/17 en todas las áreas

  1. 10 points
    Que tal les comparto esta modificacion para cambiar el sonido de las notificaciones por un audio mp3 y dejar de usar un archivo swf va. Se van al archivo live.js y buscan: $('#swf').html('<embed width="0px" height="0px" wmode="transparent" allowscriptaccess="always" quality="high" bgcolor="#ffffff" src="' + global_data.url + '/inc/ext/' + sound_type + '.swf" type="application/x-shockwave-flash">'); y lo cambiar por esto: var audio = new Audio('' + global_data.url + '/inc/ext/Rhea.mp3'); audio.play(); el archivo mp3 se los dejo aqui, lo suben a la ruta inc/ext y si no les gusta ese le dejo una pagina donde hay una gran variedad de estos sonidos de notificaciones solo le cambian el nombre para que funcione si usan otro vale, nos vemos. Pagina : https://www.ringtina.com.ar/category/ringtones/notificaciones/ Archivo de audio que yo uso: Rhea.mp3
  2. 9 points
    Acabo de instalar las comunidades en mi localhost y veo que son buenisimas pero tienen varios detallitos asi que conforme los vaya descubriendo los ire publicando, en el historial global y de cada comunidad hace mal las referencias a las acciones y al tipo de actividad moderativa. Se van al archivo c,historial.tpl y buscan: <tbody> y cambiar todo lo que este en esa seccion por esto: <tbody> {foreach from=$tsHistorial item=h} <tr> <td align="left"> {if $h.h_type < 4} {if $h.h_type == 2} <font color="#f00">{$h.t_titulo}</font> {else} <a href="{$tsConfig.url}/comunidades/{$h.c_nombre_corto}/{$h.t_id}/{$h.t_titulo|seo}.html">{$h.t_titulo}</a> {/if} {else} <a href="{$tsConfig.url}/comunidades/{$h.c_nombre_corto}/">{$h.c_nombre}</a> {/if} <br/>En <a href="{$tsConfig.url}/comunidades/{$h.c_nombre_corto}/">{$h.c_nombre}</a> </td> <td align="center">{if $h.h_type == 1}Tema Editado{elseif $h.h_type == 2}<font color="red">Tema Eliminado</font>{elseif $h.h_type == 3}<font color="green">Tema Reactivado</font>{elseif $h.h_type == 4}<font color="#0066CC">Cambio de avatar</font>{elseif $h.h_type == 5}<font color="#0066CC">Cambio de fondo</font>{elseif $h.h_type == 6}Comunidad Editada{/if}</td> <td align="center"><a href="{$tsConfig.url}/perfil/{$h.user_name}/" class="hovercard" uid="{$h.user_id}">{$h.user_name}</a></td> <td align="left" {if $h.h_razon == '-'}style="color: #f00;"{/if}>{if $h.h_razon == '-'}Sin especificar{else}{$h.h_razon}{/if}{*{if $h.h_razon != ''}{else}-{/if}*}</td> </tr> {/foreach} </tbody> Luego en el archivo c.com_historial.tpl buscan de nuevo esa misma etiqueta y la cambia completamente por: <tbody> {foreach from=$tsModHistory item=h} <tr> <td align="left"> {if $h.h_type < 4} {if $h.h_type == 2} <font color="#f00">{$h.t_titulo}</font> {else} <a href="{$tsConfig.url}/comunidades/{$h.c_nombre_corto}/{$h.t_id}/{$h.t_titulo|seo}.html">{$h.t_titulo}</a> {/if} {else} {$h.c_nombre} {/if} </td> <td align="center">{if $h.h_type == 1}Tema Editado{elseif $h.h_type == 2}<font color="red">Tema Eliminado</font>{elseif $h.h_type == 3}<font color="green">Tema Reactivado</font>{elseif $h.h_type > 3}<font>Comunidad Editada</font>{/if}</td> <td align="center"><a href="{$tsConfig.url}/perfil/{$h.user_name}/" class="hovercard" uid="{$h.user_id}">{$h.user_name}</a></td> <td align="left" {if $h.h_razon == '-'}style="color: #f00;"{/if}>{if $h.h_razon == '-'}Sin especificar{else}{$h.h_razon}{/if}</td> </tr> {/foreach} </tbody> Eso seria todo es un detalle quizás insignificante pero soy muy detallista, bueno espero les sirva y dentro de poco espero compartirles algo mas util.
  3. 9 points
    Hola que les párese este modificación? les dejo unas capturas de como quedo.
  4. 8 points
    Hola gente de Phpost, hoy les traigo Social Locker para PHPost administrable, para los que no lo conocen, nos permite bloquear cierto contenido (en este caso con el bbcode [sociallocker]) y pedir como "pago" una acción social. Unas capturas: Instalación: En admin.php buscar: /** NOTICIAS **/ Agregar arriba: /** Social locker **/ } elseif($action == 'social-locker'){ if(!empty($_POST['save'])){ if($tsAdmin->saveSocialLocker()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/social-locker?save=true'); } else { $smarty->assign('tsLocker', $tsAdmin->getLocker()); } En posts.php buscar: $smarty->assign("tsPages",$tsPages); Agregar abajo: // Social Locker $smarty->assign('tsLocker', $tsPosts->getLocker()); En c.admin.php buscar: /* savePConfigs() Agregar arriba: /* getLocker() */ function getLocker() { $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM s_locker'); $data = db_exec('fetch_assoc', $query); $data['btn'] = unserialize($data['botones_data']); return $data; } /* saveLocker() */ function saveSocialLocker() { global $tsCore; // $s = array( 'titulo' => $tsCore->setSecure($_POST['locker_titulo']), 'body' => $tsCore->setSecure($_POST['locker_body']), 'tema' => empty($_POST['locker_tema']) ? 0 : $_POST['locker_tema'], 'modo' => empty($_POST['locker_modo']) ? 0 : $_POST['locker_modo'], 'cerrar_seg' => (int)$_POST['locker_cerrar_seg'], 'cerrar' => empty($_POST['locker_cerrar']) ? 0 : 1, 'obligar' => empty($_POST['locker_obligar']) ? 0 : 1, 'hide_members' => empty($_POST['locker_hide_members']) ? 0 : 1, 'fb_app_id' => $tsCore->setSecure($_POST['locker_fb_app_id']), 'g_client_id' => $tsCore->setSecure($_POST['locker_g_client_id']), 'contador' => empty($_POST['locker_contador']) ? 0 : 1 ); // $btns = array ( // like 'like' => $_POST['locker_like'], 'like_url' => $_POST['locker_like_url'], 'like_text' => $_POST['locker_like_text'], // FB Share 'fbshare' => $_POST['locker_fbshare'], 'fbshare_url' => $_POST['locker_fbshare_url'], 'fbshare_text' => $_POST['locker_fbshare_text'], // Tweet 'tweet' => $_POST['locker_tweet'], 'tweet_url' => $_POST['locker_tweet_url'], 'tweet_body' => $_POST['locker_tweet_body'], 'tweet_via' => $_POST['locker_tweet_via'], 'tweet_text' => $_POST['locker_tweet_text'], // Follow 'follow' => $_POST['locker_follow'], 'follow_user' => $_POST['locker_follow_user'], 'follow_text' => $_POST['locker_follow_text'], // G+1 'g' => $_POST['locker_g'], 'g_url' => $_POST['locker_g_url'], 'g_text' => $_POST['locker_g_text'], // G Share 'gshare' => $_POST['locker_gshare'], 'gshare_url' => $_POST['locker_gshare_url'], 'gshare_text' => $_POST['locker_gshare_text'], // Linkedin Share 'inshare' => $_POST['locker_inshare'], 'inshare_url' => $_POST['locker_inshare_url'], 'inshare_text' => $_POST['locker_inshare_text'], // Youtube Subscribe 'yt' => $_POST['locker_yt'], 'yt_id' => $_POST['locker_yt_id'], 'yt_text' => $_POST['locker_yt_text'] ); $btns = $tsCore->setSecure(serialize($btns)); // UPDATE if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `s_locker` SET `titulo` = \'' . $s['titulo'] . '\', `body` = \'' . $s['body'] . '\', `tema` = \'' . $s['tema'] . '\', `modo` = \'' . $s['modo'] . '\', `cerrar_seg` = \'' . $s['cerrar_seg'] . '\', `cerrar` = \'' . $s['cerrar'] . '\', `obligar` = \'' . $s['obligar'] . '\', `hide_members` = \'' . $s['hide_members'] . '\', `fb_app_id` = \'' . $s['fb_app_id'] . '\', `g_client_id` = \'' . $s['g_client_id'] . '\', `contador` = \'' . $s['contador'] . '\', `botones_data` = \'' . $btns . '\' WHERE `id` = \'1\'')) return true; else exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ); } En c.posts.php buscar: /* getSideData($array) */ Agregar arriba: /* getLocker() */ function getLocker() { global $tsCore; $query = db_exec(array(__FILE__, __LINE__), "query", "SELECT * FROM s_locker"); $data = db_exec("fetch_assoc", $query); $data["btn"] = unserialize($data["botones_data"]); // Datos del post $dataPost = $this->getPost(); $post_id = intval($_GET["post_id"]); // Titulo del post $titulo = $dataPost["post_title"]; // Categoria $categoria = $dataPost["categoria"]; // URL del post $urlPost = $tsCore->settings["url"] . "/posts/" . $categoria["c_seo"] . "/" . $post_id . "/" . $tsCore->setSEO($titulo) . ".html"; // Fix saltos de linea $data["body"] = preg_replace("[\n|\r|\n\r]", " ", $data["body"]); // Remplazamos BBCodes $bbcodes = array("[post_title]", "[post_url]"); $bbreturn = array($titulo, $urlPost); $count = count($data); for($i = 0; $i < $count; $i++) { $data = str_replace($bbcodes, $bbreturn, $data); $data["btn"] = str_replace($bbcodes, $bbreturn, $data["btn"]); } return $data; } En c.core.php busca: // BBCodes permitidos $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 agrega , 'sociallocker' quedando de esta manera: // BBCodes permitidos $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', 'sociallocker')); En bbcode.inc.php busca: array('tag' => 'success', 'replace' => '<div class="bbcmsg success">{param}</div>') Y remplaza por: array('tag' => 'success', 'replace' => '<div class="bbcmsg success">{param}</div>'), array('tag' => 'sociallocker', 'replace' => '<div id="socialloker_by_Basdower">{param}</div>') (Agregamos una coma y el nuevo bbcode) En t.posts.tpl busca: {include file='sections/main_header.tpl'} Agrega abajo: <link href="{$tsConfig.tema.t_url}/css/pandalocker.css" rel="stylesheet" type="text/css" /> <script src="{$tsConfig.js}/pandalocker.js" type="text/javascript"></script> {if $tsLocker.hide_members == 1 && $tsUser->is_member == 1}{else} <script>{literal}$(function(){if($("#socialloker_by_Basdower").length) {$('#socialloker_by_Basdower').sociallocker({ text:{header: '{/literal}{$tsLocker.titulo}{literal}',message: '{/literal}{$tsLocker.body}{literal}'},{/literal}{if $tsLocker.obligar == 1}demo: true,{/if}{literal}theme: '{/literal}{if $tsLocker.tema == 0}starter{elseif $tsLocker.tema == 1}secrets{elseif $tsLocker.tema == 2}flat{elseif $tsLocker.tema == 3}dandyish{elseif $tsLocker.tema == 4}glass{/if}{literal}',overlap:{mode: '{/literal}{if $tsLocker.modo == 0}full{elseif $tsLocker.modo == 1}transparence{elseif $tsLocker.modo == 2}blurring{/if}{literal}'},locker:{{/literal}{if $tsLocker.cerrar_seg > 0}{literal}timer: '{/literal}{$tsLocker.cerrar_seg}{literal}',{/literal}{/if}{literal}close: {/literal}{if $tsLocker.cerrar == 1}true{else}false{/if}{literal}},{/literal}{if $tsLocker.btn.like == 1 || $tsLocker.btn.fbshare == 1}{literal}facebook:{{/literal}{if $tsLocker.btn.like == 1}{literal}like:{url: '{/literal}{$tsLocker.btn.like_url}{literal}',title: '{/literal}{$tsLocker.btn.like_text}{literal}'},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.fbshare == 1}{literal}share:{url: '{/literal}{$tsLocker.btn.fbshare_url}{literal}',title: '{/literal}{$tsLocker.btn.fbshare_text}{literal}'},{/literal}{/if}{literal}appId: '{/literal}{$tsLocker.fb_app_id}{literal}'},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.tweet == 1 || $tsLocker.btn.follow == 1}{literal}twitter:{{/literal}{if $tsLocker.btn.tweet == 1}{literal}tweet:{url: '{/literal}{$tsLocker.btn.tweet_url}{literal}',text: '{/literal}{$tsLocker.btn.tweet_body}{literal}',via: '{/literal}{$tsLocker.btn.tweet_via}{literal}',title: '{/literal}{$tsLocker.btn.tweet_text}{literal}'},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.follow == 1}{literal}follow:{url: '{/literal}{$tsLocker.btn.follow_user}{literal}',title: '{/literal}{$tsLocker.btn.follow_text}{literal}'}{/literal}{/if}{literal}},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.g == 1 || $tsLocker.btn.gshare == 1}{literal}google:{{/literal}{if $tsLocker.btn.g == 1}{literal}plus:{url: '{/literal}{$tsLocker.btn.g_url}{literal}',title: '{/literal}{$tsLocker.btn.g_text}{literal}'},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.gshare == 1}{literal}share:{url: '{/literal}{$tsLocker.btn.gshare_url}{literal}',title: '{/literal}{$tsLocker.btn.gshare_text}{literal}'}{/literal}{/if}{literal}},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.inshare == 1}{literal}linkedin:{share:{url: '{/literal}{$tsLocker.btn.inshare_url}{literal}',title: '{/literal}{$tsLocker.btn.inshare_text}{literal}'}},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.yt == 1}{literal}youtube:{subscribe:{channelId: '{/literal}{$tsLocker.btn.yt_id}{literal}',clientId: '{/literal}{$tsLocker.g_client_id}{literal}',title: '{/literal}{$tsLocker.btn.yt_text}{literal}'}},{/literal}{/if}{literal}buttons:{order: [{/literal}{if $tsLocker.btn.like == 1}{literal}"facebook-like",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.fbshare == 1}{literal}"facebook-share",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.tweet == 1}{literal}"twitter-tweet",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.follow == 1}{literal}"twitter-follow",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.g == 1}{literal}"google-plus",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.gshare == 1}{literal}"google-share",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.inshare == 1}{literal}"linkedin-share",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.yt == 1}{literal}"youtube-subscribe"{/literal}{/if}{literal}],counters: {/literal}{if $tsLocker.contador == 1}true{else}false{/if}{literal},lazy: true} }); }});{/literal}</script> {/if} En m.admin_sidemenu.tpl busca: <li id="a_ads"><span class="cat-title"><a href="{$tsConfig.url}/admin/ads">Publicidad</a></span></li> Y agrega abajo: <li id="a_social"><span class="cat-title"><a href="{$tsConfig.url}/admin/social-locker">Social Locker</a></span></li> En t.admin.tpl busca: {/if} Agrega arriba: {elseif $tsAction == 'social-locker'} {include file='admin_mods/m.admin_social_locker.tpl'} En admin.css busca: li#a_badwords {background-image: url(../images/icons/stop.png);} Y agrega abajo: li#a_social {background-image: url(../images/icons/social-locker.png);background-position: 0px -5px;} Realiza estas consultas SQL: CREATE TABLE IF NOT EXISTS `s_locker` ( `id` INT NOT NULL AUTO_INCREMENT , `titulo` VARCHAR(150) NOT NULL , `body` TEXT NOT NULL , `tema` INT NOT NULL , `modo` INT NOT NULL , `cerrar_seg` INT NOT NULL , `cerrar` INT NOT NULL , `obligar` INT NOT NULL , `hide_members` INT NOT NULL , `fb_app_id` VARCHAR(50) NOT NULL , `g_client_id` VARCHAR(100) NOT NULL , `contador` INT NOT NULL , `botones_data` TEXT NOT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; INSERT INTO `s_locker`(`titulo`, `body`, `tema`, `modo`, `cerrar_seg`, `cerrar`, `obligar`, `hide_members`, `fb_app_id`, `g_client_id`, `contador`, `botones_data`) VALUES ('¡Este contenido está bloqueado!', 'Utilice uno de los botones de abajo para desbloquear el contenido.', 0, 0, 0, 0, 0, 0, '', '', 1, 'a:26:{s:4:"like";s:1:"0";s:8:"like_url";s:0:"";s:9:"like_text";s:4:"Like";s:7:"fbshare";s:1:"0";s:11:"fbshare_url";s:0:"";s:12:"fbshare_text";s:5:"share";s:5:"tweet";s:1:"0";s:9:"tweet_url";s:0:"";s:10:"tweet_body";s:0:"";s:9:"tweet_via";s:0:"";s:10:"tweet_text";s:5:"tweet";s:6:"follow";s:1:"0";s:11:"follow_user";s:0:"";s:11:"follow_text";s:6:"follow";s:1:"g";s:1:"0";s:5:"g_url";s:0:"";s:6:"g_text";s:5:"+1 us";s:6:"gshare";s:1:"0";s:10:"gshare_url";s:0:"";s:11:"gshare_text";s:5:"share";s:7:"inshare";s:1:"0";s:11:"inshare_url";s:0:"";s:12:"inshare_text";s:5:"share";s:2:"yt";s:1:"0";s:5:"yt_id";s:0:"";s:7:"yt_text";s:9:"subscribe";}') Y finalmente sube estos archivos a sus respectivas carpetas. DEMO (No prometo que dure mucho xD) Notas: Utilizar el bbcode [sociallocker][/sociallocker] para bloquear el contenido. Debido a los límites de la API de Twitter y LinkedIn es posible desbloquear el contenido cerrando la ventana de dialogo sin compartir. Para el boton share de fb es recomendable utilizar Open Graph. Para los botones de Compartir con FB y Suscribirse a YT es necesario crear una api: Facebook App ID, Google Client ID si no los piensan usar, no es necesario. Bueno eso es todo, nos vemos en otro aporte.
  5. 7 points
    personalmente si quisiera usar un script de ese tipo para montar un sitio preferiría wordpress, igual cuando este la demo lista le dare un vistaso
  6. 7 points
  7. 6 points
    Esta idea no es nueva me rondaba desde que vi el uso de muros en un script clon de taringa y bueno el resultado es bueno y algo interesante para poder darle mas dinamismo a las comunidades, lastima que ya no existan sitios grandes donde se le pueda dar un buen uso...
  8. 5 points
    no pasa nada, cualquier variable que constantemente cambie y la coloques despues del signo "?", como es tomar el tiempo del servidor sirve para que el cache de una imagen se actualice, con phpost muchos usamos una variable que viene adaptada al script con smarty que es {$smarty.now} y listo sin mas problemas para actualizar la imagen al instante
  9. 5 points
    te dejo la estructura y el css lo hice lo mas simple que pude, haber si lo puedes adapta rapido salu2. index.html
  10. 5 points
    Hola a todos: Hace tiempo que no hago un post, bueno en este caso les presento a MozzFire es totalmente responsive o va a serlo, ya que recién la he empezado a hacerlo, lo más probable que les pida ayuda ya que por ahora tiene un poco de errores jaja... Usuario y Contraseña: MozzFire El post anteriot [creo] La traducción del Español al Inglés no va a ser posible porque he perdido esos archivos y en el sitio que lo tenia subido ha sido cancelada por el administrador... Ya para empezar tengo problemas con el registro... no me deja registrar nuevos usuarios...si alguien tiene los archivos modificados del registro para minimizarlo como en la web, me los pasarian jaja....
  11. 4 points
    ¿Se acuerdan de Blogex? ¡Volvio!, en forma de SidePost 1.0. Hola foro, bueno ya paso un buen tiempo desde que di noticias de mi script en el cual estaba trabajando desde hace mucho tiempo (Si eres nuevo puedes leer el enlace a Blogex que deje arriba), bueno, después de mucho, muchísimo tiempo he logrado retomar el proyecto y convertirlo en algo que esperaba desde 2013, algo ESTABLE Y FUNCIONAL. Esta sera la primera versión publica y oficial de SidePost. Pero bueno, ahora contestare una que otra pregunta para los que se pregunten ¿Que diablos es SidePost o Blogex? Bueno, SidePost es la renovación de Blogex tanto en nombre como en algunas funciones, la actualizacion del nombre se debe a que deseaba tomarme este proyecto mucho mas enserio y convertirlo en algo mas abierto a todos, aparte que deseaba renovar el script en ciertos aspectos para optimizar algunas ideas y añadir finalmente nuevas funciones. Ahora SidePost sera el nombre definitivo para el proyecto. Pero ahora enserio, SidePost es un script que permite la creacion de un blog simple y facil de administrar, con funciones basicas pero que te permitiran hacer muchisimo. La idea principal de este proyecto siempre fue hacer algo simple para cualquier usuario, con una forma de administracion facil y descriptiva para cualquier usuario. DEMO DE SIDEPOST Puedes probar la demo de SidePost en el siguiente enlace: http://krizthian.com/demo/home/ Puedes acceder al Panel de Administracion con los siguientes datos: Usuario: demo Contraseña: 12345 DESCARGAR SIDEPOST 1.0 SidePost puede ser descargado desde mi sitio web o directamente desde el siguiente enlace: DESCARGAR SIDEPOST 1.0 (LEMACIS) LISTA DE CAMBIOS Puedes revisar la lista de cambios de la version mas reciente de SidePost desde el siguiente enlace: LISTA DE CAMBIOS SIDEPOST ACTUALIZACIONES De momento no tengo una idea clara sobre como voy a llevar las actualizaciones del script de una manera sencilla para mi, sin embargo en cuanto tenga alguna actualización para el script o parche lo publicare de inmediato aquí, solo denme algo de tiempo, recuerden que estoy a nada de graduarme de la preparatoria y ahora es algo complicado manejar mi tiempo para este script NOTAS No soy un experto en PHP pero hice mi mayor esfuerzo en trabajar en este proyecto que comencé en 2013 con una idea muy basica, espero que muchos de ustedes puedan darme una critica constructiva de mi proyecto, ya que durante los años en este foro he recibido mucho (Muchísimo) apoyo por parte de los usuarios, y gracias a ese apoyo de esta pequeña comunidad es que he logrado llevar adelante este proyecto que sera la base para muchísimos mas que tendré en un futuro. Ahora lo único que puedo hacer es agradecer a esta comunidad por su apoyo, ideas y motivaciones, ustedes son las personas que desde 2013 (Fecha en que me uní a este foro) jamas he olvidado, ya sea por su humor o su increíble ayuda que dan a los nuevos usuarios que se unen a este foro. GRACIAS COMUNIDAD, USTEDES REALMENTE HICIERON POSIBLE ESTE PROYECTO
  12. 4 points
    apenas me paguen lo de acense lo voy a comprar haber que tal
  13. 4 points
    Hola buenas, muy corto de tiempo les traigo este minimod que es para que cuando te logues no te rediriga al inicio, si no que actualice la pagina simplemente. en acciones.js buscan if (h.substring(3)=='Home') { location.href='/'; } else if (h.substr(3) == 'Cuenta') { location.href = '/cuenta/'; } else { location.reload(); } y lo cambian por: location.reload(); saludos que les sirva!
  14. 4 points
    Hola a todos, en colaboración con @bits4me les traemos el actualizador de Smarty 3 automático para sus paginas webs con Risus 1.2.7. Pues solo lo suben a su página web por medio de ftp, admin de archivos, etc. Y lo descomprimen. Luego de eso, se van a su web y le agregan a la dirección /updater/index.php Ejemplo: Si mi web se ingresa a http://phpost.net entonces para entrar al actualizador sería http://phpost.net/updater/index.php así de simple. Luego de eso solo le dan a comenzar y el proceso será automático, les aviso que se tarda 1 minuto, así que no vayan a cancelar o reiniciar la pagina. /!\ Esta es una version beta y no es la final. Capturas: Le falta agregar código anti-errores, terminarlo, cambiar el diseño, pero en teoría a mi me funcionó con Php 5.4 y Risus 1.2.7. Descargar Gracias a todos, espero que me mencionen recomendaciones o sugerencias para terminarlo al 100%!
  15. 3 points
    Ya esta prácticamente terminado , esas son las notificaciones y como se ve cuando se abre el shout. Los shouts solo se ven en las comunidades, ya saben por eso de la privacidad jaja, pero aun no me decido si crear otro filtro en el Mi para todos esos shouts o crear ese filtro para cada comunidad, estoy muy animado y creativo jaja, entre mas complicado mas vale
  16. 3 points
    no lo conozco pero si tienes un sitio en linea pasalo y lo adapto
  17. 3 points
    ya lo desarrolle, estoy terminando las notificaciones para el muro de las comunides, pero me distraje creando otra funcion jeje
  18. 3 points
    por cierto para que tema lo quieres? default? o alguno en especifico?
  19. 3 points
    http://www.dejaelpost.net/ de ahi lo saco y no recuerdo ya el nombre de donde lo sacaron ellos
  20. 3 points
    igual y es que solo estas metiendo mal el link ya que se tiene que poner el id no la url completa
  21. 3 points
  22. 3 points
    Pues así va, los muros son independientes por comunidad y solo podrán publicar los miembros de la comunidad y tendrá opción para que sea publico o solo miembros o también solo x rango de la comunidad ya veré que mas se me ocurre, igual y los hastags también que sean privados de la comunidad y si se te ocurre otra cosa dime para agregarlo de una vez.
  23. 3 points
    Es algo sencillo pero que jode mucho al la hora de querer completar el perfil y tenerlo al 100% de manera falsa jaja, por si a alguien le interesa y le sirve en c.cuenta.php busacas: $updates = $tsCore->getIUP($perfilData, 'user_'); y abajo agregas: //FIX ESPACIOS BACIOS O LLENADO FALSO CON SALTOS DE LINEA O ESPACIOS if ($updates == ' '){ $updates = str_replace(' ', '', $updates); $updates = str_replace("\n"," ",$updates); }else{ $updates = str_replace(' ', '', $updates); $updates = str_replace("\n"," ",$updates); } // luego buscas un poco mas abajo esto: $updates = $tsCore->getIUP($perfilData, 'p_'); y abajo agregas: //FIX ESPACIOS BACIOS O LLENADO FALSO CON SALTOS DE LINEA O ESPACIOS if ($updates == ' '){ $updates = str_replace(' ', '', $updates); $updates = str_replace("\n"," ",$updates); }else{ $updates = str_replace(' ', '', $updates); $updates = str_replace("\n"," ",$updates); } // y ahora si ya no abra errores, gracias por reportarlo
  24. 2 points
    mucha suerte con la venta, por ahí pronto veremos alguno que lo pueda adquirir y poder verlo en vivo.
  25. 2 points
    adelante "apañatelas" solo entonces, pero yo no hago las reglas. Y creo que si vas a pedir "ayuda" deberias hacerlo bien no somos adivinos... y existen miles de razones por las que te pudo pasar eso, y ya hice la prueba en el sitio oficial y el problema es por el bbcode que no esta limpiado bien la url, pero bueno apañatelas solo ya te di la mitad la solución a tu problema, osea encontrar el origen del problema, de igual forma es un problema generalizado asi que ya lo resolveran, salu2. asi sale: solo hay que corregirlo, nada del otro mundo, cualquiera se lo puede "apañar solo" como dirías tu. [align=center][swf=http://www.youtube.com/v/https://www.youtube.com/watch?v=vpIGbY2g5fA]Link: [url]http://www.youtube.com/watch?v=https://www.youtube.com/watch?v=vpIGbY2g5fA[/url][/align]
  26. 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 ..
  27. 2 points
    Hola gente, hoy les traigo un minimod que al menos a mi me sirve para ganar algo de dinerillo extra. Es muy facil de instalar, empecemos... Solo busquen en su archivo main_header.tpl la etiqueta <head> y justo debajo copian este codigo: <script type="text/javascript"> var adfly_id = Aqui copian su codigo de Adf.ly; var adfly_advert = 'int'; var frequency_cap = 2; Veces que se redirige en 24 horas var frequency_delay = 15; Minutos entre cada anuncio mostrado var init_delay = 300; Esto son los segundos entre cada anuncio cada vez que se carga una pagina var popunder = true; </script> <script src="https://cdn.adf.ly/js/entry.js"></script> <script type="text/javascript"> var adfly_id = Aqui copian su codigo de Adf.ly; var adfly_advert = 'int'; var popunder = true; var exclude_domains = ['Aqui escriben su web', 'youtube.com']; Estas son las paginas excluidas, pueden incluir las que quieran </script> <script src="https://cdn.adf.ly/js/link-converter.js"></script> Si no quieren anuncios popunders solo cambian var popunder = true; por var popunder = false; Y eso es todo, espero que les sirva.
  28. 1 point
    ¡Muy buenas! Hace bastante tiempo que no se presenta información destacable aquí, y debido a mi escaso tiempo, no puedo ofrecer grandes novedades. Para empezar, y a pesar de mi empeño en que Risus sea el proyecto y PHPost el creador, he decidido que PHPost vuelva a ser el proyecto, y Risus la versión del mismo. Asimismo, esta plataforma de foros se llamará "comunidad de PHPost", como siempre. Para continuar, hemos actualizado la portada. No añade novedades pero nunca viene mal un toque de aire fresco. Además, con la intención de recuperar actividad y todo lo que eso conlleva, se va a poner en venta la versión 2.0 Alfa completa o por separado, la cual tal y como su nombre indica, es una versión no acabada y por ello no está exenta de algunos errores. La finalidad de dicha versión es su utilización para sacar el código útil y adaptarlos a la web del comprador, no está pensada para utilizarse como un sitio web, pues su desarrollo es incluso anterior a Risus 1.2; de ahí que no se haya lanzado a pesar de llevar tiempo programada. Se pone en venta para intentar recaudar fondos y con ellos incentivar a nuevos programadores y diseñadores en la realización del nuevo proyecto gratuito*, el cual no está consolidado aún. Así como también para mantener actualizada la comunidad (IPS) y a permitir la celebración de sorteos. Aquellos que colaboren comprando la versión 2.0A, tendrán diferentes recompensas aún no establecidas. Esta versión Alfa incluye características como las siguientes: - Visibilidad de posts por rangos (seleccionados o desde x rango) y permisos administrables - Cambio en la forma en que se obtiene un rango - Mejoras y añadidos en los BBCodes - Editor WYSIWYG - Smarty actualizado - Nuevos plugins agregados a Smarty - Mejoras SEO (enlaces únicos, redirecciones, .htaccess, metatags, etc.) - Paginador AJAX dinámico - Páginas de error (401, 403, y 404) - Permisos para usuarios individuales - Gestor de plantillas mejorado y administrable por usuario - Sistema de censuras - Sistema de idiomas (listo para implementar por programador) - Sistema de noticias prioritarias - Sistema de licencia y soporte (creado, pero no operativo) - Y más de 300 cambios importantes listos para adaptar a Risus 1.2 (fixes en monitor, borradores, posts; seguridad y optimización, etc.) - Se entrega con la lista de cambios realizados y cambios en proceso - Coste: + Normal: 75€ + Si has donado anteriormente: 65€ + Si has adquirido una licencia de copyright: 50€ + Complemento por separado: Desde 5€ (puedes adquirir las mejoras por separado si no puedes adquirir la versión completa) Nota: el precio puede variar dependiendo de las aportaciones del comprador a la comunidad y al script. * Para finalizar, y a pesar de no estar consolidado, me gustaría continuar con el nuevo proyecto. Dependiendo de la remuneración que obtengamos con esta versión alfa, el desarrollo será más o menos inmediato. Esperamos también, que dicho proyecto sea gratuito, pues es como hasta ahora lanzábamos las nuevas versiones. Tenemos la ilusión, y muchas ideas increíbles para él; con vuestra ayuda podremos hacerlas realidad. Para adquirir dicha versión o alguna de sus características, podéis contactar conmigo. ¡Un saludo!
  29. 1 point
    Hola a todos En este topic hablaré sobre algunas curiosidades de Risus. Esto fue sacado desde la última versión, es decir, Risus 1.2.7. 1.-Subir imagen de avatar por medio de un vídeo. 2.-Etiqueta [Tu] en el editor y bbcode. (esto funcionaba antes, no se porqué lo quitaron :/) Esta funcionaba para mostrar el nombre de usuario del usuario que estaba viendo el post. 3.-Editor Wysibb (partes). 4.-Logo de Movistar. (esto no sé porqué rayos está xD) 5.- La carpeta smilies son los iconos del Windows Live Messenger . 6.-El theme default no lleva un install.php (ya que la información se coloca cuando se instala). Bueno, eso es todo por esta parte, pronto haré la parte 2..
  30. 1 point
  31. 1 point
    si no estas trabajando en localhost creo que el usuario de tu base de datos esta mal y tambien el nombre de tu base de datos no recuerdo que los servidores de pago creen bases de datos con un nombre que no incluya el del dominio, pero bueno si no quieres que nos enteremos de tu sitio pues te puedo ayudar por mensaje privado va, salu2.
  32. 1 point
    Pues modificando todo el código de Risus, me dí cuenta que al guardar los datos de la cuenta (en /cuenta/ obviamente) y colocar uno o varios espacios los guarda de igual manera, esto jode bastante ya que si una condicional detecta que hay un valor (en este caso sería /n o un espacio) la interpreta de igual manera . ¿Hay alguna manera que no guarde los espacios? EDIT: Ya me respondí . Estoy casi seguro que hay que darle uso al STR_REPLACE y colocarlo en este código: // 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&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db')); } else { $updates = $tsCore->getIUP($perfilData, 'p_'); 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&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db')); } EDIT: Me dió ganas de hacerlo yo mismo xd Solo cambiar el código (que está en C.CUENTA.PHP) que puse por este: 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 $update = $tsCore->getIUP($perfilData, 'user_'); $updates = str_replace(' ', '', $update); 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&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db')); } else { $update = $tsCore->getIUP($perfilData, 'p_'); $updates = str_replace(' ', '', $update); 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&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db')); }
  33. 1 point
  34. 1 point
    Hola,para la 1.2... solo cambia el paso en c.posts.php ,tienes que poner este,el que te pone muerte es para la 1.1... /* getUltreg() */ function getUltreg(){ global $tsCore; // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_baneado, p.user_id, p.user_pais, v.pid, v.p_opcion, v.p_prefijo, v.p_img FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id LEFT JOIN u_paises AS v ON v.p_prefijo = p.user_pais WHERE u.user_baneado = 0 AND v.pid > 0 ORDER BY u.user_id DESC LIMIT 10'); if(!$query) exit( show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db') ); $data = result_array($query); // return $data; }
  35. 1 point
    hahahhahaha oie tranquilo viejo es que
  36. 1 point
    para los que tienen una pagina de login y no el box, deberias hacer uso del http_referer y asi al iniciar sesion te regrese ala pagina de donde viniste
  37. 1 point
  38. 1 point
    Si entendí bien solo los shouts del dueño del perfil, remplaza la funcion getNews() en c.posts.php por esta: /* Ultimos Shouts en la home */ function getNews($start = 0, $limit = 10){ global $tsUser, $tsCore; // OBTENEMOS LAS ULTIMAS PUBLICACIONES $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT *,u.* FROM u_muro LEFT JOIN u_miembros AS u ON p_user = u.user_id ORDER BY p_date DESC LIMIT '.$start.','.$limit.''); while($row = db_exec('fetch_array', $query)){ // Solo shouts del dueño del perfil para killer ¬¬ if ($row['p_user'] == $row['p_user_pub']) { // MENCIONES $row['p_body'] = $tsCore->parseBadWords($tsCore->parseBBCode($tsCore->setMenciones($row['p_body'])), true); // CARGAR ADJUNTOS if($row['p_type'] != 1){ $queryDos = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM u_muro_adjuntos WHERE pub_id = \''.$row['pub_id'].'\' LIMIT 1'); $adj = db_exec('fetch_assoc', $queryDos); // $data[] = array_merge($row,$adj); } else $data[] = $row; // } } // RETORNAMOS return array('total' => count($data), 'data' => $data); }
  39. 1 point
    muy bueno pero me deja cerrarlo U_u no deberia ser tan facil pero +1 papucho
  40. 1 point
    ¡VERSIÓN 0.6 DISPONIBLE! [DESCARGAR] ES IMPORTANTE BORRAR LA CARPETA /updater/ ANTERIOR ANTES DE APLICAR LA NUEVA VERSIÓN. Historial de cambios / changelog: Los que tengan versiones anteriores se les avisará por el mismo mod mediante el sistema de feed.
  41. 1 point
    Estaba pensando, ya que isidro no muestra señales de vida, y estoy seguro que al foro entra, nadie tiene una web y no entra nunca, ni una vez a la semana o al menos una vez al mes, asi que teniendo en cuenta que el entra al foro y lee todo lo que se dice aqui y aun asi no dice nada, mi pregunta es.... no se puede hacer algo sin isidro? a ver el script es muy bueno, esa es la verdad, no creo que le falten muchas cosas, lo que le faltaria serian algunos mods buenos, que hagan la diferencia, no se pulir un poco mas la seccion MI y hacer un theme "un theme oficial digo" para la version default, y esto no lo podria hacer otro usuario u otro grupo de usuarios? seguir el maravilloso trabajo que hasta aqui hizo isidro y tomar la posta y seguir mejorando el script por otro lado. no se podra hacer eso? el problema es que aqui ya nadie aporta nada, nadie tiene ganas de hacerlo porque si compaten algo solo dos comentan para dar las gracias.... hace falta motivacion, eso no se puede seguir en otro lado si es que aqui ya no se hace?
  42. 1 point
    Extraño las charlas que tenía con algunos de acá por el viejo MSN, me la pasaba todo el día y noche hablando con ellos, ya ni recuerdo de qué pero las extraño
  43. 1 point
    Bien, ahi ya te agregaron una parte que te falto para que funcione en el script.
  44. 1 point
    Te falto la etiqueta literal y comentar esos textos: (borre unas variables q se repetian) <script type="text/javascript"> {literal} var adfly_id = ; // Aqui copian su codigo de Adf.ly var adfly_advert = 'int'; var frequency_cap = 2; // Veces que se redirige en 24 horas var frequency_delay = 15; // Minutos entre cada anuncio mostrado var init_delay = 300; // Esto son los segundos entre cada anuncio cada vez que se carga una pagina var popunder = true; var exclude_domains = ['Aqui escriben su web', 'youtube.com']; // Estas son las paginas excluidas, pueden incluir las que quieran {/literal} </script> <script src="https://cdn.adf.ly/js/entry.js"></script> <script src="https://cdn.adf.ly/js/link-converter.js"></script>
  45. 1 point
    Que tal a todos comparto esta versión de portadas para los posts que es un poco más completa y que había hecho antes pero para la versión de to-up, así es como quedaría: Para la default: Para esto no deben tener NINGÚN MOD DE ESTE TIPO ya que manejo otra variable en la BD y puede crear confusión a la hora de instalarla.... Bueno la instalación es la siguiente: 1) Crean esta consulta en la BD ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL 2) Abrimos c.posts.php y buscamos: /* getPreview() */ function getPreview(){ global $tsCore; // $titulo = $tsCore->setSecure($_POST['titulo'], true); $cuerpo = $tsCore->setSecure($_POST['cuerpo'], true); // return array('titulo' => $titulo, 'cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true)); } Reemplazamos por: /* getPreview() */ function getPreview(){ global $tsCore; // $titulo = $tsCore->setSecure($_POST['titulo'], true); $imagen = $tsCore->setSecure($_POST['imagen'], true); $cuerpo = $tsCore->setSecure($_POST['cuerpo'], true); // return array('titulo' => $titulo, 'imagen' => $imagen, 'cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true)); } 3) Buscamos un poco mas abajo: 'title' => $tsCore->parseBadWords($tsCore->setSecure($_POST['titulo'], true)),2, Debajo de eso agregamos 'portada' => $tsCore->setSecure($_POST['imagen']), 4) Buscamos un poco mas abajo: // INSERTAMOS $_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if(!filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); } if(mysql_query('INSERT INTO `p_posts` (post_user, post_category, post_title, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) { $postID = mysql_insert_id(); Reemplazamos por: // INSERTAMOS $_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if(!filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); } if(mysql_query('INSERT INTO `p_posts` (post_user, post_category, post_title, post_portada, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['portada'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) { $postID = mysql_insert_id(); 5) Ahora un poco mas abajo buscamos 'title' => $tsCore->parseBadWords($_POST['titulo'], true), Agregamos debajo: 'portada' => $tsCore->setSecure($_POST['imagen'], true), 6) Mas abajo buscamos: // ACTUALIZAMOS if($tsUser->uid == $data['post_user'] || !empty($tsUser->is_admod) || !empty($tsUser->permisos['moedpo'])){ if(mysql_query('UPDATE p_posts SET post_title = \''.$postData['title'].'\', post_body = \''.$postData['body'].'\', post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_category = \''.(int)$postData['category'].'\', post_private = \''.$postData['private'].'\', post_block_comments = \''.$postData['block_comments'].'\', post_sponsored = \''.$postData['sponsored'].'\', post_smileys = \''.$postData['smileys'].'\', post_visitantes = \''.$postData['visitantes'].'\', post_sticky = \''.$postData['sticky'].'\' WHERE post_id = \''.(int)$post_id.'\'') or die(mysql_error())) { Lo reemplazamos por: // ACTUALIZAMOS if($tsUser->uid == $data['post_user'] || !empty($tsUser->is_admod) || !empty($tsUser->permisos['moedpo'])){ if(mysql_query('UPDATE p_posts SET post_title = \''.$postData['title'].'\', post_portada = \''.$postData['portada'].'\', post_body = \''.$postData['body'].'\', post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_category = \''.(int)$postData['category'].'\', post_private = \''.$postData['private'].'\', post_block_comments = \''.$postData['block_comments'].'\', post_sponsored = \''.$postData['sponsored'].'\', post_smileys = \''.$postData['smileys'].'\', post_visitantes = \''.$postData['visitantes'].'\', post_sticky = \''.$postData['sticky'].'\' WHERE post_id = \''.(int)$post_id.'\'') or die(mysql_error())) { 7) Mas abajo buscamos: // ES SU POST EL Q INTENTA BORRAR? $query = mysql_query('SELECT post_id, post_title, post_user, post_body, post_category FROM p_posts WHERE post_id = \''.(int)$post_id.'\' AND post_user = \''.$tsUser->uid.'\''); $data = mysql_fetch_assoc($query); mysql_query('UPDATE `w_stats` SET `stats_posts` = stats_posts - \'1\' WHERE `stats_no` = \'1\''); mysql_query('UPDATE `u_miembros` SET `user_posts` = user_posts - \'1\' WHERE `user_id` = \''.$data['post_user'].'\''); // ES MIO O SOY MODERADOR/ADMINISTRADOR... if(!empty($data['post_id']) || !empty($tsUser->is_admod)){ // SI ES MIS POST LO BORRAMOS Y MANDAMOS A BORRADORES if(mysql_query('DELETE FROM p_posts WHERE post_id = \''.(int)$post_id.'\'')) { if(mysql_query('DELETE FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\'')) { if(mysql_query('INSERT INTO `p_borradores` (b_user, b_date, b_title, b_body, b_tags, b_category, b_status, b_causa) VALUES (\''.$tsUser->uid.'\', \''.time().'\', \''.$tsCore->setSecure($data['post_title']).'\', \''.$tsCore->setSecure($data['post_body']).'\', \'\', \''.$data['post_category'].'\', \'2\', \'\')')) return "1: El post fue eliminado satisfactoriamente."; } Lo reemplazamos por: // ES SU POST EL Q INTENTA BORRAR? $query = mysql_query('SELECT post_id, post_title, post_portada, post_user, post_body, post_category FROM p_posts WHERE post_id = \''.(int)$post_id.'\' AND post_user = \''.$tsUser->uid.'\''); $data = mysql_fetch_assoc($query); mysql_query('UPDATE `w_stats` SET `stats_posts` = stats_posts - \'1\' WHERE `stats_no` = \'1\''); mysql_query('UPDATE `u_miembros` SET `user_posts` = user_posts - \'1\' WHERE `user_id` = \''.$data['post_user'].'\''); // ES MIO O SOY MODERADOR/ADMINISTRADOR... if(!empty($data['post_id']) || !empty($tsUser->is_admod)){ // SI ES MIS POST LO BORRAMOS Y MANDAMOS A BORRADORES if(mysql_query('DELETE FROM p_posts WHERE post_id = \''.(int)$post_id.'\'')) { if(mysql_query('DELETE FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\'')) { if(mysql_query('INSERT INTO `p_borradores` (b_user, b_date, b_title, b_portada, b_body, b_tags, b_category, b_status, b_causa) VALUES (\''.$tsUser->uid.'\', \''.time().'\', \''.$tsCore->setSecure($data['post_title']).'\', \''.$tsCore->setSecure($data['post_portada']).'\', \''.$tsCore->setSecure($data['post_body']).'\', \'\', \''.$data['post_category'].'\', \'2\', \'\')')) return "1: El post fue eliminado satisfactoriamente."; } 8) Más abajo buscamos: /*********/ $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start); $lastPosts['data'] = result_array($query); Lo reemplazamos por: /*********/ $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_portada, p.post_date, p.post_comments, p.post_puntos, p.post_hits, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start); $lastPosts['data'] = result_array($query); 9) Casi al final buscamos: $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_favoritos, p.post_puntos, u.user_name, c.c_seo, c.c_nombre, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON u.user_id = p.post_user LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' '.$where_cat.' '.$w_autor.' '.$w_search.' ORDER BY p.post_date DESC LIMIT '.$data['pages']['limit']); $data['data'] = result_array($query); Lo reemplazamos por: $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_portada, p.post_date, p.post_comments, p.post_favoritos, p.post_puntos, u.user_name, c.c_seo, c.c_nombre, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON u.user_id = p.post_user LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' '.$where_cat.' '.$w_autor.' '.$w_search.' ORDER BY p.post_date DESC LIMIT '.$data['pages']['limit']); $data['data'] = result_array($query); 10) Ahora abrimos c.borradores.php y buscamos: 'title' => $tsCore->setSecure($tsCore->parseBadWords($_POST['titulo']), true), Agregamos debajo: 'portada' => $tsCore->setSecure($_POST['imagen'], true), 11) Más abajito buscamos: // INSERT if(mysql_query('INSERT INTO `p_borradores` (`b_user`, `b_date`, `b_title`, `b_body`, `b_tags`, `b_category`, `b_private`, `b_block_comments`, `b_sponsored`, `b_sticky`, `b_smileys`, `b_visitantes`, `b_status`, `b_causa`) VALUES (\''.$tsUser->info['user_id'].'\', \''.$draftData['date'].'\', \''.$draftData['title'].'\', \''.$draftData['body'].'\', \''.$draftData['tags'].'\', \''.$draftData['category'].'\', \''.$draftData['private'].'\', \''.$draftData['block_comments'].'\', \''.$draftData['sponsored'].'\', \''.$draftData['sticky'].'\', \''.$draftData['smileys'].'\', \''.$draftData['visitantes'].'\', \'1\', \'\')')) return '1: '.mysql_insert_id(); else return '0: '.mysql_error(); Lo reemplazamos por // INSERT if(mysql_query('INSERT INTO `p_borradores` (`b_user`, `b_date`, `b_title`, `b_portada`, `b_body`, `b_tags`, `b_category`, `b_private`, `b_block_comments`, `b_sponsored`, `b_sticky`, `b_smileys`, `b_visitantes`, `b_status`, `b_causa`) VALUES (\''.$tsUser->info['user_id'].'\', \''.$draftData['date'].'\', \''.$draftData['title'].'\', \''.$draftData['portada'].'\', \''.$draftData['body'].'\', \''.$draftData['tags'].'\', \''.$draftData['category'].'\', \''.$draftData['private'].'\', \''.$draftData['block_comments'].'\', \''.$draftData['sponsored'].'\', \''.$draftData['sticky'].'\', \''.$draftData['smileys'].'\', \''.$draftData['visitantes'].'\', \'1\', \'\')')) return '1: '.mysql_insert_id(); else return '0: '.mysql_error(); 12) Más abajo buscamos: $bid = intval($_GET['action']); $query = mysql_query('SELECT bid, b_user, b_date, b_title, b_body, b_tags, b_category, b_private, b_block_comments, b_sponsored, b_sticky, b_smileys, b_post_id, b_status, b_causa FROM `p_borradores` WHERE `bid` = \''.(int)$bid.'\' AND `b_user` = \''.$tsUser->info['user_id'].'\' AND b_status = \''.$status.'\' LIMIT 1'); // Lo reeemplazamos por: $bid = intval($_GET['action']); $query = mysql_query('SELECT bid, b_user, b_date, b_title, b_portada, b_body, b_tags, b_category, b_private, b_block_comments, b_sponsored, b_sticky, b_smileys, b_post_id, b_status, b_causa FROM `p_borradores` WHERE `bid` = \''.(int)$bid.'\' AND `b_user` = \''.$tsUser->info['user_id'].'\' AND b_status = \''.$status.'\' LIMIT 1'); // Guardamos y ahora nos vamos con elde diseño: 13) abrimos m.agregar_from.tpl que esta en templates/modules y buscamos <li> <label>T&iacute;tulo</label> <span style="display: none;" class="errormsg"></span> <input type="text" tabindex="1" name="titulo" maxlength="60" size="60" class="text-inp required" value="{$tsDraft.b_title}" style="width:760px"/> <div id="repost"></div> </li> Agregamos debajo: <li> <label>Portada</label> <span style="display: none;" class="errormsg"></span> <input type="text" tabindex="2" name="imagen" maxlength="180" size="60" class="text-inp required" value="{$tsDraft.b_portada}" /> <p style="color:#999;font-size: 11px;margin: 2px 0 5px 2px;">URL de la imagen como caratula para la home</p> </li> Y un poco más abajo donde dice "Contenido del post" buscamos tabindex y ese "2" lo cambiamos a "3" 14) Abrimos t.buscador.tpl y buscamos: <td title="{$r.c_nombre}" style="background:url({$tsConfig.tema.t_url}/images/icons/cat/{$r.c_img}) no-repeat center center;">&nbsp;</td> Lo reemplazamos por: <td title="{$r.c_nombre}"><a href="{$tsConfig.url}/posts/{$r.c_seo}/{$r.post_id}/{$r.post_title|seo}.html"><img height="47" width="47" style="border: solid 1px gray;" src="{$r.post_portada}"/></a></td> 15) Al final de estilo.css agregamos #ppostc { padding: 5px; float: left; } #listpost { width: 200px; height: 150px; display: inline-block; position: relative; margin: 5px; box-shadow: 0 1px 4px #BBB; border-radius: 4px; float: left; } #listpost a { display: block; position: relative; text-decoration: none; } #listpost .ptitle { display: table-cell; vertical-align: middle; text-align: center; position: relative; max-width: 170px; color: #FFF; background-color: rgba(0,0,0,0.57); padding: 3px 5px; border-radius: 5px; opacity: 1; z-index: 10; top: 4px; text-shadow: 0 1px 0 black; font-size: 10px; font-family: Helvetica,Arial,sans-serif; font-weight: bold; font-style: italic; } #listpost .pimagen { position: absolute; top: 0; left: 0; display: block; border-radius: 4px; width: 200px; height: 150px; background-color: #f7f7f7; background-image: url('images/load-img.gif'); background-position: center center; background-repeat: no-repeat; } #listpost .pimagen:hover { opacity: 0.7; } #listpost .pimagen img { width: 200px; height: 150px; border: 0; border-radius: 4px; -webkit-filter: grayscale(0%); image-rendering: optimizespeed; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; -ms-interpolation-mode: nearest-neighbor; } #listpost .pinfo { position: absolute; right: 7px; top: 129px; color: white; background-color: rgba(0,0,0,0.57); font-size: 10px; padding: 3px 5px; border-radius: 5px; z-index: 9; text-shadow: 0 1px 0 black; line-height: 9px; } #listpost .pavatar { top: 114px; left: 5px; border-radius: 4px; position: absolute; } #listpost .pavatar img { width: 30px; border-radius: 4px; box-shadow: 0 0 3px black; } #listpost .pbloq { background-position: -220px -120px!important; background: url(images/p-icons.png) no-repeat; display: block; top: 129px; left: 179px; opacity: 0.5; padding: 0px 18px 16px 0; position: absolute; } #listpost .pstar{ display: block; background: url(images/pstar.png) no-repeat; top: 5px; left: 182px; padding: 0px 24px 24px 0; position: absolute; z-index: 10; } #listpost .pinfo span { background: url(images/p-icons.png) no-repeat; display: inline-block; margin: -1px 2px; width: 14px; height: 9px; text-indent: 17px; } #listpost .pinfo .puntos{ background-position: -160px -217px; } #listpost .pinfo .visitas { background-position: -254px -199px; } #listpost .pinfo .comentarios { background-position: -237px -218px; } Descargan este rar → http://puu.sh/2FezU.zip 16) Ahora guardamos y reemplazamos los siguientes archivos de la carpeta modules m.home_last_posts.tpl m.agregar_javascript.tpl 17) subimos las imágenes a la carpeta images load-img.gif p-icons.png pstar.png Y con eso queda terminado el mod, los borradores funcionan perfectamente y le agregue el titulo y la portada al previsualizar el post: He desactivado la opción de "nuevo" o "popular" Si ven en m.home_last_posts.tpl que he modificado, está la linea: <!--{if $p.post_hits > 5} <span class="pstar qtip" title="Popular"></span> {/if}--> Que, si quieren activarlo para que muestre, si tiene más de 5 visitas, una estrella como titulo de "popular", se lo pueden editar a su gusto para cuantas visitas quieran donde dice $p.post_hits > 5 y simplemente eliminan el bloqueo: <!-- y --> Para que quede normalmente así y activo: {if $p.post_hits > 5} <span class="pstar qtip" title="Popular"></span> {/if} Y como extra se podrá ver también en el buscador de post: Y listo, eso es todo, espero les haya gustado el mod ya que muchos me lo habían pedido hace ya un rato pero no lo había publicado para la V4... el diseño pueden cambiárselo a su gusto o editar simplemente m.home_last_posts.tpl donde se ve las portadas en la home y adapten a otros temas. Nos vemos en otro mod, adios.
  46. 1 point
    Hola, tras una larga espera para algunos, por fin voy a publicar la primera versión del chat de RC Design adaptado a Risus. Como cualquier chat que se desarrolla con ajax y php, el consumo de recursos del servidor es considerable y por esa razón no se recomienda utilizar este complemento en servidores gratuitos o con planes muy básicos, pero cabe mencionar que aunque este consumo sigue siendo elevado, si lo comparamos con otros chats publicados aquí, el de este es mucho menor. Actualización 16/02/2015 a las 16:00 - Descarga actualizada, corregido un bug que impedía mostrar emoticonos. 08/03/2015 a las 22:50 - Descarga actualizada: se añadió seguridad adicional para evitar el flood y se añadieron las mejoras de la versión "grupos de WhatsApp". Más capturas Eliminar un mensaje o todos del usuario. Suspender usuario por nick. Características Rangos y color iguales que en la web. Suspender usuario por nick y por mensaje. Ver/editar/eliminar usuarios suspendidos. Borrar mensajes individualmente o todos de un usuario. BBCodes: [b], [i], [u], [br], [url], [color]. Imágenes y URLs automáticas. Censuras globales (desde la administración). Emoticonos globales a través de censuras (desde la administración). Antiflood, suspende durante 2 horas. El antiflood no afecta al staff. Sonido al recibir mensajes (desactivado por defecto). Diseño separado para funcionar con cualquier plantilla. Créditos DuvanJ: por hacer de conejillo de indias y probar el chat en su web. tutan-kabron: por encontrar y dar solución al error al parsear emoticonos. Descarga Para Risus 1.2 o superior: rchat_cbox_1.1.zip Instrucciones Subir el directorio "install" a la raíz y acceder desde el navegador a tuweb.com
  47. 1 point
    Hola gente en este post les comparto las secciones que he desarrollado pero actualizadas a la versión de Risus 1.2 de la misma forma como las he revisado y he encontrado algunos errores y vulnerabilidades que he solucionado por lo cual recomiendo que actualicen para quienes tengan los mods que describiré a continuación. ARCHIVOS [Importante] Actualizado: [SECCIÓN] Archivos V2.1MEGA JUEGOS [Importante] Actualizado: [SECCIÓN] Juegos V2.1 MEGA VERSIÓN MOBILE Actualizado: [MOD] Risus Mobile V2.4 MEGA CALENDARIO [Importante] Actualizado: [MOD] Calendario de eventos V2.1 MEGA Esto es todo por ahora, espero les sirva a muchos que tal vez han intentado actualizar los mods y les ha dado algún error o no les funciona correctamente. Los que tienen el título de [Importante] para quienes tengan esos mods deben actualizarlos SI o SI ya que las anteriores versiones son vulnerables a inyecciones SQL. Ya que no puedo editar mis viejos aportes espero que algún mod de buen corazón pueda actualizar los enlaces de descargas en los respectivos posts. Si me dan privilegios para hacerlo sería mucho mejor e,e Si quieren que actualice algún otro aporte háganmelo saber y lo compartiré en este mismo topic. Que tengan buen día, nos vemos en otro mod Links actualizados 15/09: [MOD] Archivos V2.1 [Kmario19][1.2].zip 64 KB https://mega.nz/#!GoI0jYjY!9607goFbijGGS413IOvCDIjC5kBQW0pm_i9SujKKVnA [MOD] Calendario de eventos V2.1 [Kmario19][1.2].zip 6 KB https://mega.nz/#!b0ARgT7R!oiZPtT_YAJuHX50OjAyfVPR0JDf1GJhOXVkloM4s9pg [MOD] Emoticones Administrables V2 [Kmario19].zip 96 KB https://mega.nz/#!ylRgUTaL!ArAO6KJYJHMc_WM0ARqz5IRqxHRWCZShiKE_TQ9nXfc [MOD] Juegos V2 [Kmario19][1.2].zip 58 KB https://mega.nz/#!y0oxnIQQ!10h_R5DW-lNh5rDzFdgfVTpMZt9H58aLHGcIQV3Hm8Q [MOD] Risus Mobile V2.4 [Kmario19][1.2].zip 518 KB https://mega.nz/#!20pgkSJY!bKiOjE_NH8ktRQrjWyLXoBRFOmVeKlVkAyKZGosIQc4
  48. 1 point
    Hola, este complemento podría considerarse en realidad una "plantilla" para el anterior RChat que publiqué ya que la mayor parte del funcionamiento es el mismo. Para instalar este chat no es necesario tener el anterior RChat y si lo tienes también puedes instalarlo sin problemas, los archivos se sobrescribirán. Actualización 06/03/2015 a las 18:00 - Descarga actualizada: se ha corregido un fallo en el instalador que evita que aparezca el icono de los emoticonos. 08/03/2015 a las 22:10 - Descarga actualizada: se añadió seguridad adicional para evitar el flood. 09/03/2015 a las 23:15 - Descarga actualizada: ahora se muestran todos los emoticonos y se pueden agregar desde el chat. Más capturas Caja de emoticonos abierta. Lista de moderación. Eliminar mensajes (onmouseover). Suspender usuario (onmouseover). Características Color de nick aleatorio como en grupos de WhatsApp. Suspender usuario por nick y por mensaje. Ver/editar/eliminar usuarios suspendidos. Borrar mensajes individualmente o todos de un usuario. Agrupar mensajes seguidos del mismo usuario. Mensajes propios diferenciados (alineado a la derecha en verde) BBCodes: [b], [i], [u], [br], [url], [color]. Imágenes y URLs automáticas. Censuras globales. Emoticonos globales a través de censuras. Antiflood, suspende durante 2 horas. El antiflood no afecta al staff. Diseño separado para funcionar con cualquier plantilla. Agregar emoticonos desde el chat. Selector de emoticonos. Descarga Para Risus 1.2 o superior: rchat_whatsapp_1.2.zip Instrucciones Subir el directorio "install" a la raíz y acceder desde el navegador a http://www.tuweb.com/install/index.php
  49. 1 point
    no debe dar errores si esta bien escrito, smarty 2 te dejaba pasar errores de sintaxis y smarty 3 no U_u ademas si tienes codigo php directo en el tpl tienes que usar { include }, y los plugins que tengas agregados los tienes que agregar a la carpeta plugins si no es muy facil reconocer el error, te dice compiler error (y el modifier, ejemplo) {$post_title│seo}, y ya sabes con eso que el plugin seo no lo tienes o tiene error, ah si en el archivo ajax_files.php en inc/php/ tiene una linea que smarty no reconoce esta $smarty->template_ts = false; cuestion de borrarla y ya, si quieres dime un script que este muy modificado y lo actualizare para hacer una guia
  50. 1 point
    HOLA GENTE MI PRIMER APORTE A LA COMUNIDAD EN RESUBIR LINK "THEME ADMINLTE" LIMPIO SIN NINGUNA MODIFICACION http://www.mediafire.com/download/cnazhm5o6q2equu/AdminLTE.rar