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

Search the Community

Showing results for tags 'complementos-mod'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • El núcleo de PHPost
    • Novedades e información
    • Off Topic
    • Presentaciones
  • PHPost Risus
    • Actualizaciones
    • Versión 1.1
    • Versión 1.2
  • La esquina
    • Rincón del PC
    • Rincón del móvil
  • Escuela de Actualización de Risus Phpost's PHP 7.X
  • Escuela de Actualización de Risus Phpost's Smarty
  • Escuela de Actualización de Risus Phpost's EXTRAS
  • Escuela de Actualización de Risus Phpost's Themes
  • Escuela de Actualización de Risus Phpost's Fixes
  • Escuela de Actualización de Risus Phpost's Actualizaciones

Calendars

There are no results to display.

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Sitio web


ICQ


Yahoo


Jabber


Skype


Localización


Intereses

Found 732 results

  1. Con este mod podrán publicar videos de Xvideos.com. En bbcode.inc buscan: "hr", "li" Al lado agregan: , "xvid" Luego buscan: array("swf", "/(?i)\[swf\=(.+?)\]/i", "<embed width=\"640\" height=\"390\" wmode=\"transparent\" autoplay=\"false\" allownetworking=\"internal\" allowfullscreen=\"true\" type=\"application/x-shockwave-flash\" quality=\"high\" src=\"\\1\"><br/>"), Arriba añaden: array("xvid", "/(?i)\[xvid\=(.+?)\]/i", "<iframe src=\"http://flashservice.xvideos.com/embedframe/\\1\" frameborder=\"0\" width=\"510\" height=\"400\" scrolling=\"no\"></iframe><br/>"), En c.core.php buscan: case 'normal': // RESTRICTIONS $parser->restriction = array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', Y al lado añaden: 'xvid', Luego buscan: case 'smiles': // RESTRICTIONS $parser->restriction = array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', Y al lado añades: 'xvid', Y listo, se usa de esta forma: [xvid=id_del_video] Créditos a Aperpen
  2. Aqui con poco tiempo pero con muchas ganas les dejo estepedido.. El cual da un mensaje para los posts que contengan link caidos.. Pueden activar o desactivar el mensaje. Previo denuncia por parte de los usuarios, o control por ellos mismos.. Comenzamos: Hacemos esta consulta SQL: ALTER TABLE `p_posts` ADD `post_link` int(1) NOT NULL DEFAULT '0'; En c.moderacion.php buscamos: case 'posts': $query = mysql_query('SELECT r.*, SUM(d_total) AS total, p.post_id, p.post_title, p.post_status, c.c_nombre, c.c_seo, c.c_img FROM w_denuncias AS r LEFT JOIN p_posts AS p ON r.obj_id = p.post_id LEFT JOIN p_categorias AS c ON p.post_category = c.cid WHERE d_type = 1 AND p.post_status < 2 GROUP BY r.obj_id ORDER BY total DESC, r.d_date DESC'); $data = result_array($query); Y agregamos en esa linea despues de p.post_status, p.post_link, Buscamos: /* getDenuncia() */ Y agregamos arriba: /* Linkcaidos() */ public function Linkcaidos($id) { // filtramos // $id = (int) $id; $activ = 1; mysql_query('UPDATE `p_posts` SET `post_link` = \''.$activ.'\' WHERE post_id = '.$id); }/* Linkreac() */ public function Linkreac($id) { // filtramos // $id = (int) $id; mysql_query('UPDATE p_posts SET post_link = post_link -1 WHERE post_id = '.$id); } En moderacion.php buscamos: }elseif($act == 'info'){ Y agregamos arriba: if(isset($_GET['link'])) { $tsMod->Linkcaidos($_GET['link']); } if(isset($_GET['link'])) {$tsCore->redirectTo($tsCore->settings['url'].'/moderacion/posts/');} if(isset($_GET['reac'])) { $tsMod->Linkreac($_GET['reac']); } if(isset($_GET['reac'])) {$tsCore->redirectTo($tsCore->settings['url'].'/moderacion/posts/');} En m.posts_content.tpl buscamos: <span> {$tsPost.post_body} </span> Y agregamos arriba: {if $tsPost.post_link==1} <div id="link-dead"> <h2>Oops.. Este Posts tiene los enlaces eliminados</h2> <p>{$tsConfig.domain} revisa las denuncias de los usuarios en busca de enlaces eliminados</p> <p>que no dejan descargar los archivos, este mensaje te informa que este posts</p> <p>que estas viendo <b>tiene los enlaces eliminados</b></p> </div> {/if} En m.mod_report_posts.tpl buscamos: {if $tsUser->is_admod || $tsUser->permisos.moep}<a href="#" onclick="mod.posts.borrar({$r.post_id}, false); return false"><img src="{$tsConfig.default}/images/icons/close.png" title="Borrar Post" /></a>{/if} Y agregamos abajo: {if $tsUser->is_admod || $tsUser->permisos.moep}{if $r.post_link==1}<a href="{$tsConfig.url}/moderacion/posts?reac={$r.post_id}"><img src="{$tsConfig.tema.t_url}/images/icons/flag_black.png" title="Enlaces Eliminados"/></a>{else}<a href="{$tsConfig.url}/moderacion/posts?link={$r.post_id}"><img src="{$tsConfig.tema.t_url}/images/icons/yes.png" title="Enlaces Estables"/></a>{/if}{/if} Agregan al final de extras.css #link-dead { height:150px; width:100%; background:#FFF url('images/eliminado.png') no-repeat left; background-position:20px 10px; border-top:3px solid #D90000; border-bottom:3px solid #0040FF; } #link-dead h2 { color:#D90000; margin-left:160px; } #link-dead p { color:#666; margin-left:160px; } Subimos esta imagen a la carpeta images/ Eso seria Todo.......... Aclaro que esto no jala los enlaces de manera automtica, Esto deberan ser controlados por Moderadores o admin, el cual podran acceder desde la moderacion de control de posts denunciados y de hay podran activar o no el mensaje dentro del posts. Espero que les sea de utilidad.. Esto fue medio rapido pero creo que les puede ser util. Al menos al que lo pido.. Hasta la Proxima..
  3. SpookFactory

    [MOD] Notificaciones en el MI

    Hola a todos, vengo a liberar este mod por motivos personales... Que no voy a explicar. El mod consiste basicamente en avisarte cuando alguien que sigues crea un nuevo shout. Bueno empecemos con la instalacion. Primero que todo haz esta consulta en tu base de datos: CREATE TABLE IF NOT EXISTS `notificiaciones_mi` ( `publicacion` varchar(200) NOT NULL, `usuario` int(20) NOT NULL, `view` int(20) NOT NULL, `time` varchar(200) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Abre el c.muro.php que esta en la carpeta inc/class busca esta linea: $tsActividad->setActividad(10, $pub_id, $is_my); agrega debajo: // INSERTAMOS SI NO EXISTE mysql_query('INSERT INTO notificiaciones_mi (`publicacion`, `usuario`, `view`, `time`) VALUES (\''.$pub_id.'\', \''.$tsUser->uid.'\', \'0\', '.time().') '); mas abajo busca: /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ /* getNews() */ Y agrega arriba de eso: function visto($shouts){ global $tsUser; $mi = mysql_num_rows(mysql_query('SELECT publicacion, usuario FROM notificiaciones_mi WHERE publicacion = \''.$shouts.'\' ')); if($mi > 0){ mysql_query('UPDATE notificiaciones_mi SET view = \'1\' WHERE publicacion = \''.$shouts.'\' && usuario != \''.$tsUser->uid.'\' '); } } mas abajo busca: while($row = mysql_fetch_array($query)){ abajo de eso agrega: // Notificacion mi $this->visto($row['pub_id']); luego abres el archivo c.monitor.php que esta en la misma carpeta inc/class y buscas: public $notificaciones = 0; debajo agregas: /** * @name mi * @access public * @info NUMERO DE NOTIFICACIONES DEL MI NUEVAS **/ public $mi = 0; luego busca en el mismo archivo: $this->notificaciones = $data['total']; y agrega debajo: // $this->noti_mi(); luego mas abajo busca: /** * @name makeMonitor * @access private * @params none * @return none */ y agrega arriba de eso: public function noti_mi(){ global $tsUser; $noti_mi = mysql_num_rows(mysql_query('SELECT p.pub_id FROM u_muro AS p LEFT JOIN notificiaciones_mi AS c ON p.pub_id = c.publicacion LEFT JOIN u_follows AS f ON f.f_user = \''.$tsUser->uid.'\' WHERE f.f_id = p.p_user_pub && c.view = \'0\'')); $this->mi = $noti_mi; } Luego abres el archivo header.php que esta en la raiz de tu web y buscas: // Nofiticaciones $smarty->assign('tsNots',$tsMonitor->notificaciones); y agregas debajo de ello: $smarty->assign('tsMi', $tsMonitor->mi); Luego vamos a la plantilla que usas y abres el main_menu.tpl o el archivo tpl que contenga el menu de tu pagina y buscas: <a onclick="menu('home', this.href); return false;" href="{$tsConfig.url}/mi/" title="Ir a Mi"><span></span></a> Arriba de eso agregas: {if $tsMi} <span class="badge" id="counter-newsfeed" style=""> +{$tsMi} </span> {/if} En estilos.css buscas .menuTabs li { float: left; position: relative; } Debajo agregas: .menuTabs li span.badge { background: #E4021D; color: #fff; font-size: 11px; line-height: 11px; padding: 2px 4px; display: inline-block; vertical-align: middle; margin: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; position: absolute; top: -3px; left: 12px; cursor: pointer; } Caps: Obviamente el diseño dependera de tu tema... lo puedes modificar a tu gusto. Bueno eso es todo. Si tienen algun problema no doy soporte. Sorry.
  4. JorgeMaldonado

    Modulo de Cajas con efecto.

    Hola amigos, este es mi primer aporte que hago a la comunidad jeje. Es un complemento que había visto una vez y me gustó adaptarlo a phpost. Desde ya les digo que mi manipulación de códigos es muy indígena así que seguro encuentran como mejorarlo e incluso fixearlo si hay algún bug que no vi. Dejo una CAP INSTALACION: 1)Vamos a "Template/Modules" y creamos un archivo al que llamaremos "m.home_caja.tpl". Pegamos el siguiente codigo. <div class="contenedor"><ul class="tabs"> <li class="active"><a href="#tab1">Tab 1</a></li> <li><a href="#tab2">Tab 2</a></li> <li><a href="#tab3">Tab 3</a></li> </ul> <!- Editar esto -> <div id="tabs"> <div id="tab1" class="cont">Contenido Caja 1</div> <div id="tab2" class="cont">Contenido Caja 2</div> <div id="tab3" class="cont">Contenido Caja 3</div> </div></div> 2)Vamos al archivo "estilo.css" y al final agregamos estas lineas: .cont{display:none;padding:8px;color:#444;} .tabs{margin:0;padding:0;list-style: none;} .tabs li{padding:8px;float: left;border-right:1px solid #ddd;} .tabs li a{color:#666;text-decoration: none;} .active{color:#000!important;background:#fefefe;font-weight:bold;} #tabs{border-top:1px solid #ddd;clear: both;} .contenedor{background:#f6f6f6;border:1px solid #ddd;width:100%;} /* La funcion "width" da el ancho que tendra la caja*/ 3) Vamos a "main_header.tpl" y debajo de: <script src="{$tsConfig.js}/live.js" type="text/javascript"></script> {/if} pegamos: <script type="text/javascript"> // {literal} $(document).ready(function(){ $(".cont:first").show(); $(".tabs li a").click(function(){ $(".cont").hide(); $(".tabs li").not(this).removeClass("active"); $(this).parent().addClass("active"); $($(this).attr("href")).fadeIn(250); return false; });});// {/literal} </script> 4) Vamos a "t.home.tpl" y agregamos debajo de: {include file='modules/m.home_stats.tpl'} agregamos {include file='modules/m.home_caja.tpl'} Ya apartir de acá es opcional, como veran en la imagen yo tengo puesto modulos dentro de este modulo. Lo que hice fue poner los "Include" que están en "t.home.tpl" y los puse dentro de este module en "<div id="tab1" class="cont">Contenido Caja 1</div>" Aun tengo mis dudas sobre el paso 3, creo que se podría mejorar esa inserción.
  5. Dinero por posts V4 - Primera Parte Este complemento es uno de lo que mas me pidieron ultimamente. Se trata de una version mejorada de las versiones anteriores que había dejado, ya que no estaban bien estructuradas. Esta version V4 Trae Muchas mejoras en el control en comparacion con las que deje anteriormente. El mod de Dinero por posts V4, trae de nuevo: Primera Parte Dinero por Rango. Aprobacion o Rechazo de posts por Moderacion. Panel de usuario. Solisitud de Pago. Recepción del pago. Posts Rechazados. Posts en esperas. Dinero acomulado y pagado. Avisos de acciones. Segunda Parte ( Administracion y Adicionales ) - - - - - - ( Proximamente) El Mod ha sido probado en su totalidad y hasta ahora no se encontro una metodo de escape a la seguridad que se le dio, igual se seguira buscando posibles fallas para eludir en sistema, ya que puede ser de mucha utilidad para insentivar a los usuarios a Crear Posts de Calidad. La instalacion la divide en dos partes, ya que se me hizo un poco extensa, pero con esto ya podran mantener el sistema funcionando correctamente, sin temor a que se pierdan datos o que no funcione con la segunda parte. La segunda parte hace referencia a un control mas extenso desde la Administracion, pero como la que deje pasa por la moderacion, los admin tambien podran controlarlo. Funcionamiento del Mod. Se debe ingresar por cada rango la cantidad determinada de dinero por crear un posts. Se debe abilitar en la admin el sistema, ademas de indicar la cantidad necesaria para efectuar la solicitud del pago. Los posts creados seran tratados con normalidad, lo que pasa por moderacion es la aprobacion o rechazo para sumar el dinero. El usuario al llegar al valor de cobro, podra solicitarlo. Mientras se controla la solicitud, los posts creados por el usuario no sumaran hasta que se confirme el pago. Hacemos estas consulta SQL ALTER TABLE `p_posts` ADD `x_dinero` float NOT NULL DEFAULT '0', ADD `p_validate` int(1) NOT NULL DEFAULT '0'; ALTER TABLE `w_configuracion` ADD `dinerox` int(1) NOT NULL DEFAULT '0', ADD `dinerp` float NOT NULL DEFAULT '0'; ALTER TABLE `u_miembros` ADD `uid_act` int(6) NOT NULL , ADD `dinok` float NOT NULL DEFAULT '0' ; CREATE TABLE IF NOT EXISTS `u_pagos` ( `pid` int(11) NOT NULL AUTO_INCREMENT, `p_user_id` int(11) NOT NULL, `p_up` int(6) NOT NULL, `p_dinero` float NOT NULL, `p_secret` varchar(50) NOT NULL, `p_date` int(10) NOT NULL, `p_autor_ip` varchar(15) NOT NULL, `p_type` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`pid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `u_cobros` ( `cid` int(11) NOT NULL AUTO_INCREMENT, `c_user_id` int(11) NOT NULL, `c_email` varchar(50) NOT NULL, `c_pais` varchar(50) NOT NULL, `c_dinero` float NOT NULL, `c_secret` varchar(50) NOT NULL, `c_coment` varchar(300) NOT NULL, `c_date` int(10) NOT NULL, `c_autor_ip` varchar(15) NOT NULL, `c_type` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`cid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `u_registros` ( `rid` int(11) NOT NULL AUTO_INCREMENT, `r_user_id` int(11) NOT NULL, `r_dinero` float NOT NULL, `r_codigo` varchar(50) NOT NULL, `r_comentario` varchar(200) NOT NULL, `r_autor_ip` varchar(15) NOT NULL, `r_date` int(10) NOT NULL, `r_type` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`rid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; En c.admin.php buscamos: 'gopfd' => $_POST['global-pointsforday']); Y agregamos arriba: 'gopxd' => $_POST['global-pointsxdinero'], buscamos nuevamnete : 'gopfd' => $_POST['global-pointsforday']); Y agregamos arriba: 'gopxd' => $_POST['global-pointsxdinero'], Buscamos: 'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])), Y agregamos abajo: 'dinerox' => empty($_POST['dinerox']) ? 0 : 1, 'dinerp' => $tsCore->setSecure($_POST['dinerp']), Buscamos: , `offline_message` = \'' . $c['offline_message'] . '\' Y agregamos al lado: , `dinerox` = \'' . $c['dinerox'] .'\', `dinerp` = \'' . $c['dinerp'] . '\' Buscamos al final: /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ } Y agregamos arriba: function setUserXdinero($user_id) { global $tsCore, $tsUser; $ipuser = $_SERVER['REMOTE_ADDR']; $din = (float)$tsCore->setSecure($_POST['dinero']); $csecret = $tsCore->setSecure($_POST['csecret']); $time = time(); $datinfo = 'Se h&aacute; enviado <b>$'.$din.'</b> ( Guarda este c&oacute;digo : '.$csecret.' )<br><a href="/dinero/confirma">Confirma desde Aqui</a>'; if($din!=0){ if (mysql_query('INSERT INTO `u_avisos` (`user_id`, `av_subject`, `av_body`, `av_date`, `av_type`) VALUES (\''.(int)$user_id.'\', \'Confirmaci&oacute;n\', \'' . $datinfo . '\', \''.$time.'\', \'0\')')) if (mysql_query('INSERT INTO `u_avisos` (`user_id`, `av_subject`, `av_body`, `av_date`, `av_type`) VALUES (\'1\', \'Se cambio el saldo \', \'</b> Se h&aacute; cambiado el saldo del usuario <a href="/perfil/'.$tsUser->getUserName($user_id).'">'.$tsUser->getUserName($user_id).'</a> <a href="/perfil/'.$tsUser->getUserName($user_id).'"><img class="hovercard" uid="'.(int)$user_id.'" style="width:16px; height:16px;margin:0 5px 0 5px;" src="'.$tsCore->settings['url'].'/files/avatar/'.(int)$user_id.'_50.jpg"></img></a><br/><span>Operaci&oacute;n realizada por <a href="/perfil/'.$tsUser->nick.'"><b>'.$tsUser->nick.'</b></a></span><br/>C&oacute;digo de la operaci&oacute;n : '.$csecret.'\', \''.$time.'\', \'0\')')) if (mysql_query('INSERT INTO `u_pagos` (`p_user_id`, `p_up`,`p_dinero`,`p_secret`, `p_date`, `p_autor_ip`, `p_type`) VALUES (\'' .(int)$user_id . '\', \'' . $tsUser->uid .'\', \'' . $din . '\', \'' . $csecret . '\', \'' . $time .'\', \'' . $ipuser .'\', \'0\')')) mysql_query('UPDATE u_cobros SET c_type = \'1\' WHERE c_user_id = \''.$user_id.'\' && c_secret = \''.$csecret.'\' LIMIT 1'); return '<div style="width:655px;" class="dinerok">Operaci&oacute;n Exitosa.</div>'; }else return '<div style="width:655px;" class="errorsol">No seleccionaste el dinero</div>'; } function getPostUserD($user_id) { global $tsCore; // $data['dinero'] = mysql_fetch_assoc(mysql_query('SELECT u.user_id, u.user_name, u.user_rango, u.user_posts, u.user_baneado, u.uid_act, v.post_user, v.x_dinero, v.post_status, v.p_validate, c.c_user_id, c.c_email, c.c_pais, c.c_secret, c.c_dinero, c.c_coment, c.c_date, c.c_autor_ip, c.c_type, r.rango_id, r.r_name, r.r_color FROM u_miembros AS u LEFT JOIN p_posts AS v ON v.post_user = u.user_id LEFT JOIN u_cobros AS c ON c.c_user_id = u.user_id LEFT JOIN u_rangos AS r ON r.rango_id = u.user_rango WHERE u.user_id = \''.(int)$user_id.'\' && c.c_type = 0 GROUP BY user_id')); $q1 = mysql_fetch_row(mysql_query('SELECT CAST(SUM(x_dinero) as DECIMAL(5,2)) FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); $q2 = mysql_fetch_row(mysql_query('SELECT COUNT(post_id) as p FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); $q3 = mysql_fetch_row(mysql_query('SELECT SUM(post_puntos) as ps FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); $q4 = mysql_fetch_row(mysql_query('SELECT COUNT(p_validate) as r FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'2\'')); $data['dinero']['x_dinero'] = $q1[0]; $data['dinero']['post_id'] = $q2[0]; $data['dinero']['post_puntos'] = $q3[0]; $data['dinero']['p_validate'] = $q4[0]; return $data; } function getSolprim($user_id) { global $tsCore; // $user_id = $tsCore->setSecure($_GET['uid']); $data['datainfo'] = mysql_fetch_assoc(mysql_query('SELECT u.user_id, u.user_name, u.user_posts, u.user_baneado, u.uid_act, p.post_user, p.x_dinero, p.post_status, p.p_validate FROM u_miembros AS u LEFT JOIN p_posts AS p ON p.post_user = u.user_id WHERE u.user_id = \''.(int)$user_id.'\' GROUP BY user_id')); $q1 = mysql_fetch_row(mysql_query('SELECT CAST(SUM(x_dinero) as DECIMAL(5,2)) FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); $data['datainfo']['x_dinero'] = $q1[0]; return $data; } En el archivo c.cuenta.php buscamos: // REAL STATS $data['stats'] = mysql_fetch_assoc(mysql_query('SELECT u.user_id, u.user_rango, u.user_puntos, u.user_posts, u.user_comentarios, u.user_seguidores, u.user_cache, r.r_name, r.r_color FROM u_miembros AS u LEFT JOIN u_rangos AS r ON u.user_rango = r.rango_id WHERE u.user_id = \''.(int)$user_id.'\'')); Y antes de FROM agregamos: , u.uid_act, u.dinok, v.post_user, v.x_dinero, v.post_status, v.p_validate En la misma linea buscamos: WHERE Y agregamos antes: LEFT JOIN p_posts AS v ON v.post_user = u.user_id Buscamos: $q3 = mysql_fetch_row(mysql_query('SELECT COUNT(cid) AS c FROM p_comentarios WHERE c_user = \''.(int)$user_id.'\' && c_status = \'0\'')); Y agregamos abajo: $q5 = mysql_fetch_row(mysql_query('SELECT CAST(SUM(x_dinero) as DECIMAL(5,2)) FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); Buscamos: $data['stats']['user_comentarios'] = $q3[0]; Y agregamos abajo: $data['stats']['x_dinero'] = $q5[0]; En c.modeacion.php antes de la ultima } agregamos arriba: public function getDineroP() { global $tsUser, $tsCore; $max = 10; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); // PAGINAS $query = mysql_query('SELECT COUNT(post_id) FROM p_posts WHERE post_status = \'0\' && x_dinero > \'0\' && p_validate = \'0\''); list($total) = mysql_fetch_row($query); $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . "/moderacion/dinero?", $_GET['s'], $total, $max); // $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_puntos, p.x_dinero, p.post_ip, p.post_status, p.p_validate, c.cid, c.c_seo, u.user_id, u.user_name FROM `p_posts` AS p LEFT JOIN p_categorias AS c ON c.cid = p.post_category LEFT JOIN u_miembros AS u ON u.user_id = p.post_user WHERE post_status = \'0\' && x_dinero > \'0\' && p_validate = \'0\' ORDER BY post_id DESC LIMIT ' . $limit); $data['datos'] = result_array($query); // return $data; } /* DineroA() */ public function DineroA($id) { // filtramos // $id = (int) $id; $activ = 1; mysql_query('UPDATE `p_posts` SET `p_validate` = \''.$activ.'\' WHERE post_id = '.$id); }/* DineroR() */ public function DineroR($id) { // filtramos // $id = (int) $id; $rech = (int) 0; mysql_query('UPDATE p_posts SET p_validate = 2 WHERE post_id = '.$id); mysql_query('UPDATE `p_posts` SET `x_dinero` = \''.$rech.'\' WHERE post_id = '.$id); } En moderacion.php buscamos: //PAPELERAS elseif($action == 'pospelera'){ $smarty->assign("tsPospelera",$tsMod->getPospelera()); } Y agregamos despues: //CONTROL DE DINERO elseif($action == 'dinero'){ $smarty->assign("tsDinero",$tsMod->getDineroP()); if(isset($_GET['link'])) { $tsMod->DineroA($_GET['link']); } if(isset($_GET['link'])) {$tsCore->redirectTo($tsCore->settings['url'].'/moderacion/dinero/');} if(isset($_GET['reac'])) { $tsMod->DineroR($_GET['reac']); } if(isset($_GET['reac'])) {$tsCore->redirectTo($tsCore->settings['url'].'/moderacion/dinero/');} } En c.core.php buscamos: function getNovemods() { $datos = mysql_fetch_assoc(mysql_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 lo cambiamos por: function getNovemods() { $datos = mysql_fetch_assoc(mysql_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, (SELECT count(post_id) FROM p_posts WHERE post_status = \'0\' && x_dinero > \'0\' && p_validate = \'0\') as dineromod')); $datos['total'] = $datos['repposts'] + $datos['repfotos'] + $datos['repmps'] + $datos['repusers'] + $datos['revposts'] + $datos['revcomentarios'] + $datos['dineromod']; return $datos; } En el archivo admin.php buscamos: case 8: if(!empty($_POST['save'])){ $update = $tsAdmin->setUserFirma($user_id); if($update == 'OK') $tsCore->redirectTo($tsCore->settings['url'].'/admin/users?act=show&uid='.$user_id.'&save=true'); else $smarty->assign("tsError",$update); } $smarty->assign("tsUserF",$tsAdmin->getUserData()); break; Y agregamos abajo: case 9: if(!empty($_POST['save'])){ $update = $tsAdmin->setUserXdinero($user_id); if($update == 'OK') $tsCore->redirectTo($tsCore->settings['url'].'/admin/users?act=show&uid='.$user_id.'&save=true'); else $smarty->assign("tsError",$update); } $smarty->assign("tsPostU",$tsAdmin->getPostUserD($user_id)); $smarty->assign("tsSolprim",$tsAdmin->getSolprim($user_id)); break; En c.posts.php buscamos: 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(); Y agregamos arriba: if($tsCore->settings['dinerox'] == 1 && $tsUser->info['uid_act']==0 && $tsUser->permisos['gopxd']){$dinerox = (float)$tsUser->permisos['gopxd'];}else $dinerox = 0; En la linea buscada buscamos , post_status ( o el ultimo campo que tengan agregado ) Y agregamos al lado: , x_dinero Al final de la misma linea buscamos: ? '\'3\'' : '\'0\'').')')) { Y lo cambiamos por: ? '\'3\'' : '\'0\'').', \''.$dinerox.'\')')) { En agregar.php buscamos: $smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => 'El post <b>'.$_POST['titulo'].'</b> fue agregado. '.(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_posts'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html")); Y lo cambiamos por: if($tsCore->settings['dinerox'] == 1 && $tsUser->info['uid_act']==0 && $tsUser->permisos['gopxd']){$smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => "El post <font color='#0099ff'><b>{$_POST['titulo']}</b></font> fue agregado.<i>Sumaste: $ </i><blink><font color='greenlima'><b>{$tsUser->permisos['gopxd']}</b></font></blink> de Dinero.".(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_posts'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html"));} else{ $smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => 'El post <b>'.$_POST['titulo'].'</b> fue agregado. '.(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_posts'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html")); } En m.admin_rangos.tpl buscamos: <dl> <dt><label for="goaf">Anti-flood</label><br /><span>Tiempo que deben esperar entre acci&oacute;n.</span></dt> <dd><input type="text" id="goaf" name="global-antiflood" value="{$tsRango.permisos.goaf}" style="width:30%"/></dd> </dl> Y agregamos arriba: <dl> <dt><label for="gopxd">Dinero por Posts</label><br /><span>Cantidad de dinero por posts creado</span></dt> <dd><input type="text" id="gopxd" name="global-pointsxdinero" value="{$tsRango.permisos.gopxd}" style="width:30%"/></dd> </dl> En m.admin_users.tpl buscamos: <option value="8"{if $tsType == 8} selected="true"{/if}>Firma</option> Y agregamos abajo: <option value="9"{if $tsType == 9} selected="true"{/if}>Dinero</option> Buscamos: {elseif $tsType == 8} <legend>Modificar firma de usuario</legend> <textarea name="firma" rows="3" cols="50">{$tsUserF.user_firma}</textarea> {else} <div class="phpostAlfa">Pendiente</div> {/if} <p><input type="submit" name="save" value="Enviar Cambios" class="btn_g"/></p> </fieldset> Y lo cambiamos por: {elseif $tsType == 8} <div style="overflow: hidden;clear: both;margin-bottom: 20px;"> <textarea class="searchBar autogrow markItUpEditor" name="firma" rows="3" cols="50" style="font-size: 14px;width: 570px;margin: 0;">{$tsUserF.user_firma}</textarea> </div> {elseif $tsType == 9} <legend>Dinero Disponible</legend> <a href="/perfil/{$tsSolprim.datainfo.user_name}">{$tsSolprim.datainfo.user_name}</a> acumula de saldo<b>&nbsp;${if $tsSolprim.datainfo.x_dinero!=''}{$tsSolprim.datainfo.x_dinero}{else}0.00{/if}</b><br/><br/> <br/>{if $tsSave}Cuando confirme su Dinero recibido le sera descontado el Importe.{/if} {if $tsSolprim.datainfo.uid_act == 0} No h&aacute; solicitado su pago. {/if} {if $tsPostU.dinero.uid_act==1} <div class="solicitud-user"> <h3>Informacion:</h3> <ul> <li>Usuario: <b> {$tsPostU.dinero.user_name}</b></li> <li>Rango: <b style="color:#{$tsPostU.dinero.r_color};"> {$tsPostU.dinero.r_name}</b></li> <li>H&aacute; solicitado: <b>$ {$tsPostU.dinero.c_dinero}</b></li> <li>Posts Aprobados: <b>{$tsPostU.dinero.post_id}</b></li> <li>Posts Rechazados: <b>{$tsPostU.dinero.p_validate}</b></li> <li>Puntos Recibidos: <b>{$tsPostU.dinero.post_puntos}</b></li> </ul> <h3>Datos Ofrecidos:</h3> <ul> <li>Enviado: {$tsPostU.dinero.c_date|hace}</li> <li>Paypal: {$tsPostU.dinero.c_email}</li> <li>Pa&iacute;s: {$tsPostU.dinero.c_pais}</li> <li>C&oacute;digo: {$tsPostU.dinero.c_secret}</li> <li>Comentario: {$tsPostU.dinero.c_coment}</li> <li>Ip: <a href="/moderacion/buscador/1/1/{$tsPostU.dinero.c_autor_ip }" target="_blank">{$tsPostU.dinero.c_autor_ip }</a></li> </ul> <br/> <input type="hidden" name="csecret" value="{$tsPostU.dinero.c_secret}"/> <select id="dinero" name="dinero" style="width: 120px;"> <option value="0" {if $tsPostU.dinero.x_dinero > 0}selected{/if} >Seleccionar dinero</option> <option value="{$tsPostU.dinero.x_dinero}" >Disponible $ {$tsPostU.dinero.x_dinero}</option> </select> <br/><br/><h4>El dinero Disponible le sera Descontado de su Saldo.<br/>Al enviar los cambios el usuario queda a disposici&oacute;n para la recepcion del dinero.</h4> </div> {/if} {else} <div class="phpostAlfa">Pendiente</div> {/if} {if $tsType == 9 && (($tsPostU.dinero.x_dinero >= $tsConfig.dinerp) && $tsPostU.dinero.uid_act == 1)} <p><input type="submit" name="save" value="Enviar Cambios" class="btn_g"/></p> {else} {if $tsType == 9 && $tsPostU.dinero.c_type == 0} {else} <p><input type="submit" name="save" value="Enviar Cambios" class="btn_g"/></p> {/if}{/if} </fieldset> En m.admin_configs.tpl buscamos: <dl> <dt><label for="ai_chat">Chatango ID:</label><br /><span>Por defecto puedes agregar un chat de <a href="http://chatango.com">Chatango</a> para tu web, solo crea tu grupo he ingresa el nombre. (Dejar vac&iacute;o para usar xat)</span></dt> <dd><input type="text" id="ai_chat" name="chat" maxlength="20" value="{$tsConfig.chat_id}" class="searchBar" style="width: 280px;"/> </dd> </dl> Y agregamos arriba: <hr> <dl> <dt><label for="dinerox">Activar Dinero por posts.</label><br /><span>Aqu&iacute; podras activar el pago de dinero por posts creados. Desea activarlo?</span></dt> <dd> <label><input name="dinerox" type="radio" id="dinerox" value="1" {if $tsConfig.dinerox == 1}checked="checked"{/if} class="radio"/> S&iacute;</label> <label><input name="dinerox" type="radio" id="dinerox" value="0" {if $tsConfig.dinerox != 1}checked="checked"{/if} class="radio"/> No</label> </dd> </dl> <dl> <dt><label for="dinerp">Cantidad Dinero</label><br /><span>Indique la cantidad m&iacute;nima de dinero que el usuario necesita para poder cobrar.</span></dt> <dd><input type="text" id="dinerp" name="dinerp" style="width:10%" maxlength="5" value="{$tsConfig.dinerp}" /> </dd> </dl> <hr> En el archivo m.perfil_headinfo.tpl buscamos: <li> <strong>{$tsInfo.stats.user_fotos}</strong> <span>Fotos</span> </li> Y agregamos despues: <li id="xdin"> <strong>${if $tsInfo.stats.x_dinero!=''}{$tsInfo.stats.x_dinero}{else}0{/if}</strong> <span>Dinero Acumulado</span> </li> <li id="xdin"> <strong>${$tsInfo.stats.dinok}</strong> <span>Dinero Pagado</span> </li> En t.moderacion.tpl buscamos: {elseif $tsAction == 'users'} {include file='admin_mods/m.mod_report_users.tpl'} Y agregamos abajo: {elseif $tsAction == 'dinero'} {include file='admin_mods/m.mod_dinero_posts.tpl'} En m.mod_sidemenu.tpl buscamos: {if $tsUser->is_admod || $tsUser->permisos.mocc}<li id="a_comentarios"><span class="cat-title"><a onclick="$('#a_comentarios').addClass('active');" href="{$tsConfig.url}/moderacion/comentarios">Comentarios <span class="cadGe cadGe_{if $tsConfig.novemods.revcomentarios > 15}red{elseif $tsConfig.novemods.revcomentarios > 5}purple{else}green{/if}">{$tsConfig.novemods.revcomentarios}</span></a></span></li>{/if} Y agregamos abajo: {if $tsUser->is_admod || $tsUser->permisos.mocc}<li id="a_dinero"><span class="cat-title"><a onclick="$('#a_dinero').addClass('active');" href="{$tsConfig.url}/moderacion/dinero">Dinero <span class="cadGe cadGe_{if $tsConfig.novemods.dineromod > 15}red{elseif $tsConfig.novemods.dineromod > 5}purple{else}green{/if}">{$tsConfig.novemods.dineromod}</span></a></span></li>{/if} En head_menu.tpl buscamos: $tsPage != 'fotos' Y agregamos al lado: && $tsPage != 'dinero' Buscamos: <li class="tabbed {if $tsPage == 'tops'}here{/if}" id="tabbedtops"> <a title="Ir a TOPs" onclick="menu('tops', this.href); return false;" href="{$tsConfig.url}/top/">TOPs <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Y agregamos abajo: {if $tsUser->is_member} <li class="tabbed {if $tsPage == 'dinero'}here{/if}" id="tabbedtops"> <a title="Ir l Panel" onclick="menu('dinero', this.href); return false;" href="{$tsConfig.url}/dinero/">Dinero <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> {/if} En head_submenu.tpl buscamos: <div id="subMenuTops" class="subMenu {if $tsPage == 'tops'}here{/if}"> Y agregamos arriba: <div id="subMenuPosts" class="subMenu {if $tsPage == 'dinero'}here{/if}"> <ul class="floatL tabsMenu"> <li{if $tsAction != 'rec' && $tsAction != 'rev'} class="here"{/if}><a href="{$tsConfig.url}/dinero/">Inicio</a></li> <li {if $tsAction == 'rec'}class="here"{/if}><a href="{$tsConfig.url}/dinero/rec">Rechazados</a></li> <li{if $tsAction == 'rev'} class="here"{/if}><a href="{$tsConfig.url}/dinero/rev">Revision</a></li> {if $tsDiner.dinero.x_dinero >= $tsConfig.dinerp}<li{if $tsAction == 'pagos'} class="here"{/if}><a href="{$tsConfig.url}/dinero/pagos">Solicitar</a></li>{/if} </ul> <div class="clearBoth"></div> </div> En moderacion.css buscamos: li#a_comentarios {background-image: url(../images/icons/comment.png);} Y agregamos abajo: li#a_dinero {background-image: url(../images/icons/currency.png);} A algunos de los estlio css agregamos al final: .dinerok { background:#00FF00; color:#FFF; width:590px; border:5px solid #00CC00; font-size:14px; font-weight:bold; margin-bottom:10px; padding:10px; text-align: center; } .errorsol { background:#D90000; color:#FFF; width:590px; border:5px solid orange; font-size:14px; font-weight:bold; margin-bottom:10px; padding:10px; text-align: center; } .errorlog { background:orange; color:#FFF; width:590px; border:5px solid orange; font-size:14px; font-weight:bold; margin-bottom:10px; padding:10px; text-align: center; } .solicitud-user { background:#EEE; width:660px; height:auto; padding:10px; border:1px solid #CCC; } .solicitud-user ul li { background:#FFF; display:block; border:1px solid #CCC; padding:5px; margin:5px 0; } #panel-userD { width:100%; height:auto; font-family: 'Helvetica',Arial; background: #FFF url('images/sidebar.png'); overflow: hidden; border:1px solid #DFDFD0; } .prindu { background:#EEE; border-bottom:1px solid #DFDFD0; width:620px; height:115px; overflow: hidden; } .prindu a img { width:100px; height:100px; padding:1px; border:1px solid #CCC; margin:5px; } .prindu a img:hover { opacity:0.70; background:#FFF; border:1px solid #FFF; } .prindu span { float:right; width:480px; margin:5px; font-size:12px; padding:5px; color:#666; } .list-du { background:#EEE; float:left; width:610px; margin:5px 0 5px 0; font-size:12px; padding:5px; } .din_table {background:#FFF;border:1px solid #ddd; border-width:1px 0 0 1px;} .din_table thead {background:#F4F4F4} .din_table th, .din_table td {padding:3px 4px;border:1px solid #ddd; border-width:0px 1px 1px 0px; vertical-align:middle; text-align:center} .panelud { background:#FFF; float:right; width:300px; margin-bottom:20px; height:auto; overflow: hidden; } .panelud span { text-align:left; } .panelud span p { font-size:12px; text-align:center; margin-top:20px; color:#666; } .panelud span p b { background:url('images/coins.png') no-repeat left; padding:4px 3px 4px 30px; margin-top:15px; font-size:26px; color:#000; } .regd { background:#EEE; width:620px; height:auto; margin-top:5px; border-bottom:1px solid #E7E7DA; } .regd span p { padding:0 10px 0 10px; } .dinx{margin-right:5px;margin-top:-3px;} .dinx img{width:16px;height:16px;margin-right:3px;margin-left:8px;} #xdin{background:#ECEAE1 url('images/coins.png') no-repeat;background-position: 110px 5px;} #xdin:hover {background: #FFF url('images/coins.png') no-repeat;background-position: 110px 5px;} .postsrev { width:620px; height:auto; } .postsrev ul { margin:5px; border-bottom: 1px solid #E0E0E0; } .postsrev ul li { display:block; padding:5px; background: #FFF; color:#666; } .postsrev ul li:nth-child(2n+1) { border-top: 1px solid #E0E0E0; background: whiteSmoke; } .postsrev ul li a { font-size: 12px; font-weight: bold; color:#005CA5; } .pag-din { overflow: hidden; clear: both; color: transparent; margin:10px 0 10px 25px; } .pag-din b { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; color: #fff; background: #65D43B; background: -moz-linear-gradient(top, #88E64F 0%, #5ED037 100%); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#88E64F), to(#5ED037)); border: 1px solid #53A32E; padding: 4px 10px; display: inline-block; text-shadow: 0 -1px 1px #6ACB3C; } .pag-din a { padding: 5px 10px; display: inline-block; font-weight: bold; border: 1px solid #bbb; color: #555!important; text-shadow: 0 1px 0 #EEE; background: #E4E4E4; background: -moz-linear-gradient(top, #FCFCFC 0%, #EEE 100%); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#FCFCFC), to(#EEE)); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .pag-din a:hover { color: #888!important; text-shadow: 0 1px 0 #EEE; background: #E4E4E4!important; text-decoration: none; background: -moz-linear-gradient(top, #FCFCFC 0%, #ddd 100%)!important; background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#FCFCFC), to(#ddd))!important; } /* Solicitud de Pagos */ .solicitud-pago { width:620px; height:auto; } .solicitud-pago ul { padding:10px; } .solicitud-pago ul li { display:block; margin-bottom:10px; border:1px solid #CCC; padding:15px 10px; color:#00468C; font-weight:600; } .input-opc { border: solid 1px #CECECE; box-shadow: 0 0 1px #D3D3D3; -moz-box-shadow: 0 0 1px #D3D3D3; -webkit-box-shadow: 0 0 1px #D3D3D3; color:#999; font-weight:bold; width: 280px; padding:5px 10px; float:right; margin-right:100px; margin-top:-7px; border-radius:2px; } .input-opc:hover { box-shadow: 0 0 5px 0 #B5DFF1; -moz-box-shadow: 0 0 5px 0 #B5DFF1; -webkit-box-shadow: 0 0 5px 0 #B5DFF1; border: 1px solid #38B2E5; } .input-opc:focus { box-shadow: 0 0 5px 0 #B5DFF1; -moz-box-shadow: 0 0 5px 0 #B5DFF1; -webkit-box-shadow: 0 0 5px 0 #B5DFF1; border: 1px solid #38B2E5; color:#00A3D9; } .recitext { border: solid 1px #CECECE; box-shadow: 0 0 1px #D3D3D3; -moz-box-shadow: 0 0 1px #D3D3D3; -webkit-box-shadow: 0 0 1px #D3D3D3; color:#999; font-weight:bold; width: 280px; padding:5px; margin-right:100px; margin-top:-2px; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; } .recitext:hover { box-shadow: 0 0 5px 0 #B5DFF1; -moz-box-shadow: 0 0 5px 0 #B5DFF1; -webkit-box-shadow: 0 0 5px 0 #B5DFF1; border: 1px solid #38B2E5; } .recitext:focus { box-shadow: 0 0 5px 0 #B5DFF1; -moz-box-shadow: 0 0 5px 0 #B5DFF1; -webkit-box-shadow: 0 0 5px 0 #B5DFF1; border: 1px solid #38B2E5; color:#00A3D9; } Les dejo la instalacion detallada en la descarga. MEGA Ya podran utilizar el Mod normalmente, y cuando saque la segunda parte no tendran problemas en agregarlo. Espero les agrade.. Cualquier problema o duda me avisan y les respondere. Importante..!! No hagan uso del mod si no van a cumplir con el pago a los usuarios. No me resposabilizo por el mal uso del mod para sacar beneficios sin cumplir. NOTA..... Para utilizar este mos no deben tener las versiones anteriores. Usar como un metodo para conseguir posts de calidad
  6. Hola a todos gente al fin les traigo uno de los mods más pedidos, este esta mejorado y fixeado. Intenté hacer de su instalación lo más minima posible ya que la V1 de este mod (que fué creada para el tema V5 de to-up) tenía una instalación muy larga y sin embargo tenía fallos. todos estos problemas fueron arreglados y el mod ha sido mejorado en esta V2, lo único que retiré fue la moderación de los juegos desde el panel de administración y el control de denuncias del panel de moderación. Más adelante intentare añadirle estas funciones minimizando la instalación para no modificar muchos archivos. Esta nueva versión tiene mejoras como: Control de comentarios mejorada y fixeada. Control de puntuación del juego por votos arreglada. Se añadieron categorias para los juegos. Nueva sección de favoritos para los juegos preferidos. Nueva sección de tops para ver el rankin de mejores juegos. Diseño llamativo de porcentajes de votos para mejor visualización de popularidad del juego (Como en YouTube). Mejoras de seguridad al agregar juego, campos requeridos, contenido verificado. Notificaciones y actividad de usuario completas. Bueno gente empecemos con la instalación. 1. Modificaremos el archivo .htaccess que está en la raiz de su web y arriba de: # ADMIN Agregaremos: # JUEGOS RewriteRule ^juegos/([A-Za-z0-9_-]+).php$ inc/php/juegos.php?action=$1 [QSA,L] RewriteRule ^juegos/cat/([A-Za-z0-9_-]+)$ inc/php/juegos.php?cat=$1 [QSA,L] RewriteRule ^juegos/([A-Za-z0-9_-]+)$ inc/php/juegos.php?action=album&user=$1 [QSA,L] RewriteRule ^juegos/([A-Za-z0-9_-]+)/$ inc/php/juegos.php?action=$1 [QSA,L] RewriteRule ^juegos/editar/([0-9]+)$ inc/php/juegos.php?action=editar&id=$1 [QSA,L] RewriteRule ^juegos/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/juegos.php?action=album&user=$1&page=$2 [QSA,L] RewriteRule ^juegos/([0-9]+)/([A-Za-z0-9_-]+).html$ inc/php/juegos.php?action=ver&jid=$1 [QSA,L] 2. En c.actividad.php debajo de: 11 => array( 'text' => 'Le gusta', 'css' => 'w_like', 0 => array('text' => 'su', 'link' => 'publicaci&oacute;n'), 1 => array('text' => 'su comentario'), 2 => array('text' => 'la publicaci&oacute;n de'), 3 => array('text' => 'el comentario'), ) Primero le agregan una coma ( , ) al lado del último parentesis y luego agregamos: 25 => array('text' => 'Subi&oacute; el juego', 'css' => 'juego'), 26 => array('text' => array('Coment&oacute;', 'el juego'), 'css' => 'blue_ball'), 27 => array('text' => array('Vot&oacute;', 'el juego'), 'css' => 'voto_'), 28 => array('text' => 'Agrego&oacute; a favoritos el juego', 'css' => 'star') Un poco más abajo buscamos: case 11: if($data['obj_dos'] == 0 || $data['obj_dos'] == 2) { return 'SELECT p.pub_id, u.user_name FROM u_muro AS p LEFT JOIN u_miembros AS u ON p.p_user = u.user_id WHERE p.pub_id = \''.(int)$data['obj_uno'].'\' LIMIT 1'; } else { return 'SELECT c.pub_id, c.c_body, u.user_name FROM u_muro_comentarios AS c LEFT JOIN u_muro AS p ON c.pub_id = p.pub_id LEFT JOIN u_miembros AS u ON p.p_user = u.user_id WHERE cid = \''.(int)$data['obj_uno'].'\' LIMIT 1'; } break; Debajo de eso agregamos: case 25: case 26: case 27: case 28: return 'SELECT j_title, j_url, juego_id FROM j_juegos WHERE juego_id = \''.(int)$data['obj_uno'].'\' LIMIT 1'; break; Un poco más abajo buscamos: case 11: // SEC TYPE $sec_type = $data['obj_dos']; $link_text = $this->actividad[$ac_type][$sec_type]['link']; // $oracion['text'] = $this->actividad[$ac_type]['text'].' '.$this->actividad[$ac_type][$sec_type]['text']; $oracion['link'] = $site_url.'/perfil/'.$data['user_name'].'?pid='.$data['pub_id']; // if($data['obj_dos'] == 0 || $data['obj_dos'] == 2) $oracion['ltext'] = empty($link_text) ? $data['user_name'] : $link_text; else { $end_text = (strlen($data['c_body']) > 35) ? '...' : ''; $oracion['ltext'] = substr($data['c_body'],0,30).$end_text; } break; Debajo de el agregamos case 25: case 26: case 27: case 28: // if($ac_type == 26) { $extra_text = ($data['obj_dos'] == 0) ? '' : ($data['obj_dos']+1).' veces'; $oracion['text'] = $this->actividad[$ac_type]['text'][0]." <b>{$extra_text}</b> ".$this->actividad[$ac_type]['text'][1]; } elseif($ac_type == 27) { $extra_text = ($data['obj_dos'] == 0) ? 'negativo' : 'positivo'; $oracion['text'] = $this->actividad[$ac_type]['text'][0]." <b>{$extra_text}</b> ".$this->actividad[$ac_type]['text'][1]; } else { $oracion['text'] = $this->actividad[$ac_type]['text']; } // $oracion['link'] = $site_url.'/juegos/'.$data['juego_id'].'/'.$tsCore->setSEO($data['j_title']).'.html'; $oracion['ltext'] = $data['j_title']; $oracion['style'] = ($ac_type == 27) ? 'voto_'.$extra_text : $oracion['style']; break; 3. Ahora en c.monitor.php buscamos: 17 => array('text' => 'Tu foto recibi&oacute; una medalla', 'css' => 'medal'), debajo de eso agregamos 25 => array('text' => array('subi&oacute; el'), 'ln_text' => 'juego', 'css' => 'juego'), 26 => array('text' => array('comento tu','_REP_ nuevos comentarios en tu'), 'ln_text' => 'juego', 'css' => 'blue_ball'), 27 => array('text' => array('vot&oacute; _REP_ tu', '_REP_ nuevos votos a tu'), 'ln_text' => 'juego', 'css' => 'voto_'), 28 => array('text' => array('agreg&oacute; a favoritos tu','_REP_ nuevos favoritos a tu'), 'ln_text' => 'juego', 'css' => 'star'), Más abajo buscamos: case 17: return 'SELECT f.foto_id, f.f_title, f.f_user, m.medal_id, m.m_title, m.m_image, a.medal_for, u.user_id, u.user_name FROM w_medallas_assign AS a LEFT JOIN f_fotos AS f ON f.foto_id = a.medal_for LEFT JOIN u_miembros AS u ON u.user_id = f.f_user LEFT JOIN w_medallas AS m ON m.medal_id = a.medal_id WHERE m.medal_id = \''.(int)$data['obj_uno'].'\' AND f.foto_id = \''.(int)$data['obj_dos'].'\' LIMIT 1'; break; Debajo de eso agregamos: // JUEGOS case 25: case 26: case 27: case 28: return 'SELECT j_title, j_url, juego_id, j_user, u.user_name FROM j_juegos LEFT JOIN u_miembros AS u ON j_user = u.user_id WHERE juego_id = \''.(int)$data['obj_uno'].'\' LIMIT 1'; break; Un poco más abajo buscamos: case 17: $oracion['text'] = 'Tu <a href="'.$site_url.'/fotos/'.$data['user_name'].'/'.$data['foto_id'].'/'.$tsCore->setSEO($data['f_title']).'.html" title="'.$data['f_title'].'"><b>foto</b></a> tiene una nueva <span class="qtip" title="'.$data['m_title'].'"><b>medalla</b> <img src="'.$site_url.'/themes/default/images/icons/med/'.$data['m_image'].'_16.png"/></span>'; break; Debajo de eso agregamos: case 25: case 26: case 27: case 28: // CUANTOS? if($no_type != 25) { $no_total = $data['not_total']; if($no_total > 1) { $text = $this->monitor[$no_type]['text'][1].$txt_extra; $oracion['text'] = str_replace('_REP_', "<b>{$no_total}</b>", $text); }else $oracion['text'] = $this->monitor[$no_type]['text'][0].$txt_extra; } else $oracion['text'] = $this->monitor[$no_type]['text'][0].$txt_extra; // TIPO DE VOTO if($no_type == 27) { $voto_type = ($data['obj_dos'] == 0) ? 'negativo' : 'positivo'; $oracion['text'] = str_replace('_REP_', '<b>'.$voto_type.'</b>', $oracion['text']); $oracion['style'] = 'voto_'.$voto_type; } $oracion['link'] = $site_url.'/juegos/'.$data['juego_id'].'/'.$tsCore->setSEO($data['j_title']).'.html'; $oracion['ltext'] = ($this->show_type == 1) ? $ln_text : $data['j_title']; $oracion['ltit'] = ($this->show_type == 1) ? $data['j_title'] : ''; break; 4. Vamos a head_menu.tpl y debajo de: {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} Agregamos: <li class="tabbed {if $tsPage == 'juegos'}here{/if}" id="tabbedjuegos"> <a title="Ir a Juegos" onclick="menu('juegos', this.href); return false;" href="{$tsConfig.url}/juegos/">Juegos <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> 5. En head_submenu.tpl buscamos: <div id="subMenuTops" class="subMenu {if $tsPage == 'tops'}here{/if}"> Arriba de eso agregamos: <div id="subMenuJuegos" class="subMenu {if $tsPage == 'juegos'}here{/if}"> <ul class="floatL tabsMenu"> <li{if $tsAction == '' && $tsAction != 'agregar' && $tsAction != 'album' || $tsAction == 'ver'} class="here"{/if}><a href="{$tsConfig.url}/juegos/">Inicio</a></li> {if $tsUser->is_member} <li{if $tsAction == 'agregar'} class="here"{/if}><a href="{$tsConfig.url}/juegos/agregar/">Agregar Juego</a></li> <li{if $tsAction == 'favoritos'} class="here"{/if}><a href="{$tsConfig.url}/juegos/favoritos/">Favoritos</a></li> <li{if $tsAction == 'album' && $tsJUser.0 == $tsUser->uid} class="here"{/if}><a href="{$tsConfig.url}/juegos/{$tsUser->nick}">Mis Juegos</a></li> {/if} <li{if $tsAction == 'tops'} class="here"{/if}><a href="{$tsConfig.url}/juegos/tops/">Tops</a></li> </ul> <div class="clearBoth"></div> </div> 6. En el archivo phpost.css buscar: span.ma_medal{ background: url(images/icons/med/blue_bronze_16.png);} Agregar debajo: span.ma_juego{ background: url(images/j-game.png);} 7. Suban el archivo juegos_SQL.sql a su base de datos para las tablas de los juegos. Hay una consulta que es para las categorías, pueden editarlas o agregar más a su gusto, solo le colocan un nombre visible (cat_title) y un pequeño nombre que sera para identificar la imagen de la categoría en la carpeta images/juegos y de formato PNG. Si no sabes como añadirlas solo edita ese archivo .sql y fijate en la estructura para añadir las categorías: (9, 'Deportes', 'deportes') al lado de ella ponen una coma para que signifique que continua otra inserción y debajo de ella agrega otra si lo deseas asi: (10, 'Dos jugadores', 'dos_jugadores') el primer numero es la id de la categoría que sigue (10, 11, 12.. n) luego el nombre de la categoría y después un pequeño nombre (sin espacios) que sera para nombrar la imagen .png para la categoría, no olviden subirla a la carpeta images/juegos. 8. Suban todos los archivos a sus respectivas carpetas (tema default predeterminado). [DESCARGA] Y listo, esas son todas las modificaciones que tiene que hacer, solo son actividades, notificaciones, el htacces y el menú para su página. es lo mas rendidor que pude hacer para no modificar muchas cosas y reducir las probabilidades de que por algún error de instalación ocurra algún problema en sus webs. Home Agregar juego Jugar! Top Juegos Notificaciones Actividad ACLARACIONES No es necesario la versión 1 que fue creada para el tema V5 de to-up, si tienen instalado el mod V1 deben desinstalarlo ya que este ha sido modificado en todos sus archivos y método de instalación. El tema esta diseñado para ser compatible para cualquier tema, especialmente la default. (probado también en KM-Tronos) La próxima versión tendrá añadida las cuestiones de moderación y control de juegos desde la administración. Bueno gente ya que tanto lo habían pedido, es todo suyo, disfruten el mod, nos vemos en otro aporte ahora diviértanse! EDITADO (24-10-13) Modificación CSS para las notificaciones de "nuevo juego subido". (Ver paso 6)
  7. Hola a todos les dejo este pequeño mod que muestra los próximos 10 eventos en la home. Primero que todo deben tener el luego ir a c.afiliado.php que está en inc/class y al final antes del ultimo } agregar: # Proximos eventos by Kmario19 function getEventos() { global $tsUser; $query = mysql_query('SELECT * FROM e_eventos ORDER BY e_year, e_mes, e_dia'); $data = result_array($query); // ZONA HORARIA date_default_timezone_set("America/Bogota"); // TIEMPO $dia = date('j'); $mes = date('n'); $year = date('Y'); // SOLO LOS EVENTOS QUE VIENEN $i = 0; foreach($data as $val) { if($val['e_year'] > $year || ($val['e_year'] == $year && $val['e_mes'] > $mes) || ($val['e_year'] == $year && $val['e_mes'] == $mes && $val['e_dia'] >= $dia)) { // ES PRIVADO? if($val['e_privado'] == 1) { $events[] = $data[$i]; }elseif($val['e_privado'] == 2 && $val['e_user'] == $tsUser->uid) { $events[] = $data[$i]; } } $i++; // SOLO LOS ULTIMOS 10 if(count($events) == 10) break; } return array('data' => $events, 'dia' => $dia, 'mes' => $mes, 'year' => $year); } Ahora en posts.php que está en inc/php buscamos: // AFILIADOS Y arriba agregamos: $smarty->assign("tsEventos",$tsAfiliado->getEventos()); Ahora vamos a t.home.tpl que está en tutema/templates y arriba de: {include file='modules/m.home_afiliados.tpl'} Agregamos: {include file='modules/m.home_eventos.tpl'} Ahora hay que crear un archivo llamado m.home_eventos.tpl y lo guardamos en tutema/templates/modules y en su contenido agregamos lo siguiente: <div class="box_title"><div class="box_txt noticias">Pr&oacute;ximos eventos</div></div> <div class="box_cuerpo clearfix"> {foreach from=$tsEventos.data item=e} <div class="clearfix" style="margin-bottom: 5px;"> <div class="floatL" style="margin-right: 3px;"> <a href="{$tsConfig.url}/perfil/{$e.user_name}" class="hovercard" uid="{$e.e_user}" style="display: block;"><img src="{$tsConfig.url}/files/avatar/{$e.e_user}_50.jpg" width="35" height="35"></a> </div> <div class="floatL"> <a href="{$tsConfig.url}/calendario/?dia={$e.e_dia}&mes={$e.e_mes}&year={$e.e_year}" title="{$e.e_titulo}" style="display: block;font-weight: bold;font-size: 12px;">{$e.e_titulo|truncate:25:'':true}</a> {if $e.e_dia == $tsEventos.dia && $e.e_mes == $tsEventos.mes && $e.e_year == $tsEventos.year}Hoy {elseif $e.e_dia-1 == $tsEventos.dia && $e.e_mes == $tsEventos.mes && $e.e_year == $tsEventos.year}Ma&ntilde;ana {else}El {$e.e_dia}/{$e.e_mes}/{$e.e_year} {/if} </div> </div> {/foreach} </div> Está probado en el theme Km-Tronos y probablemente para otros temas haya que adaptar un poco el box. Que les guste el aporte y nos vemos en otro mod
  8. Hola les comparto este pequeño mod ya que por ahí leí un tema donde solicitaban uno similar al de una web pero el de ellos y el que tiene todos es manual y bueno se que muchos de aquí les gusta darle dinamismo a su sitio y pocos manejan al 100 el lenguaje de las hojas de estilo, en fin la instalación es simple y anda en todos los temas ya que decidí hacerlo en versión default ya si gustan agréguenle su toque. DESCARGAR MOD les dejo una captura porque ya no puedo editar el topic je
  9. Hola a todos les vengo a mostrar una pequeña modificacion que hice! Caps: http://imgur.com/TxFMptq http://imgur.com/Qy0HCrM Son dos utilidades Una chat y otra Photoshop en ventanas modales! Instalacion: Al final de acciones.js agregamos: //Photoshop function photoshop(){ mydialog.class_aux = 'Photoshop'; mydialog.mask_close = false; mydialog.close_button = true; mydialog.show(true); mydialog.title('Photoshop'); mydialog.body('<br /><br/><iframe src="http://www.pixlr.com/editor/" style="border:10px #FFFFFF solid;" name="Habbo" frameborder="1" marginheight="1000px" marginwidth="1000px" height="1000px" width="900px">', 1000); mydialog.buttons(false); mydialog.center(); $.ajax({ }); } //Chat function chat(){ mydialog.class_aux = 'chat'; mydialog.mask_close = false; mydialog.close_button = true; mydialog.show(true); mydialog.title('Chat'); mydialog.body('<br /><br/><iframe src="http://www.neatchat.com/?id=21f8b1f2d87b3068a08f6dc2660915f8" style="border:10px #FFFFFF solid;" name="Habbo" frameborder="1" marginheight="1000px" marginwidth="1000px" height="1000px" width="900px">', 1000); mydialog.buttons(false); mydialog.center(); $.ajax({ }); } ----> La url que esta en rojo la cambiamos por la URL de nuestro chat. En t.home.tpl arriba de: {include file='b_toup/home/b.tags_recientes.tpl'} Agregamos: {include file='modules/m.home_utilidades.tpl'} Al final de estilo.css agregamos .btn_uti { background: #34495e; background: -moz-linear-gradient(top, #34495e 0%, #34495e 100%); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#34495e), to(#34495e)); border-top: 1px solid #34495e; border-right: 1px solid #34495e; border-bottom: 1px solid #34495e; border-left: 1px solid #34495e; -moz-box-shadow: inset 0 1px 0 0 #34495e, 0 1px 2px 0 #34495e; -webkit-box-shadow: inset 0 1px 0 0 #34495e, 0 1px 2px 0 #34495e; color: white!important; line-height: 1; -webkit-background-clip: padding-box; } .btn_uti:hover { background: #2980b9; background: -moz-linear-gradient(top, #2980b9 0%, #2980b9 100%); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#2980b9), to(#2980b9)); border-top: 1px solid #2980b9; border-right: 1px solid #2980b9; border-bottom: 1px solid #2980b9; border-left: 1px solid #2980b9; -moz-box-shadow: inset 0 1px 0 0 #2980b9; -webkit-box-shadow: inset 0 1px 0 0 #2980b9; -webkit-background-clip: padding-box; color: #FFF; text-decoration: none!important; } .btn_uti:active { background: #34495e!important; border: 1px solid #34495e!important; border-bottom: 1px solid #34495e!important; -moz-box-shadow: inset 0 0 6px 3px #34495e, 0 1px 0 0 #fff!important; -webkit-box-shadow: inset 0 0 6px 3px #34495e, 0 1px 0 0 #fff!important; -webkit-background-clip: padding-box!important; color: #FFF!important; } .Bt { padding: 8px 12px; font-size: 12px; font-weight: bold; text-align: center; cursor: pointer; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; display: inline-block; width: auto; } Subimos este archivo a modules/ https://mega.co.nz/#!8sY1SaaI!t39uUu9oy2jkbgzFQLDfBzgIL2x4DYRaxsaqd4g3d50 Y listo! Ya lo tenemos Tuto agregar mas utilidades: //Detalles descriptivos function Funcion con la que llamar a la utilidad(){ mydialog.class_aux = 'Clase'; mydialog.mask_close = false; mydialog.close_button = true; mydialog.show(true); mydialog.title('Titulo de la ventana modal'); mydialog.body('<br /><br/><iframe src="URL DE LA APLICACION" style="border:10px #FFFFFF solid;" name="Habbo" frameborder="1" marginheight="1000px" marginwidth="1000px" height="1000px" width="900px">', 1000); mydialog.buttons(false); mydialog.center(); $.ajax({ url: global_data.url + '/pages/photoshop', ---> Esto no es necesario pero es por si la aplicacion necesita un archivo... }); } --> Este codigo se agregaria al final de acciones.js Luego iriamos a m.home_utilidades.tpl Debajo de: <td align="left"><input value="Photoshop!" onclick="photoshop();" type="button" class="cB btn_v"></td> Añadiriamos: <td align="Donde lo quieres alinear"><input value="Texto del boton" onclick="Funcion con la que antes llamamos en acciones.js();" type="button" class="cB btn_v"></td> Tuto para cambiar color del boton: .btn_uti { background: #34495e; -----> COLOR DEL BOTON border-top: 1px solid #34495e; border-right: 1p x solid #34495e; border-bottom: 1px solid #34495e; -----> COLORES DE LOS BORDES border-left: 1px solid #34495e; -moz-box-shadow: inse t 0 1px 0 0 #34495e, 0 1px 2px 0 #34495e; ->COLORES DE LAS SOMBRAS -webkit-box-shadow: inset 0 1px 0 0 #34495e, 0 1px 2px 0 #34495e; color: white!important; line-height: 1; -webkit-background-clip: padding-box; } .btn_uti:hover { background: #2980b9; --> COLOR CUANDO EL RATON ESTA ENCIMA border-top: 1px solid #2980b9; border-right: 1px solid #2980b9; border-bottom: 1px solid #2980b9; border-left: 1px solid #2980b9; -moz-box-shadow: inset 0 1px 0 0 #2980b9; -webkit-box-shadow: inset 0 1px 0 0 #2980b9; -webkit-background-clip: padding-box; color: #FFF; text-decoration: none!important; } .btn_uti:active { --> Esto es cuando pinchamos! background: #34495e!important; ------> COLOR DEL BOTON CUANDO PINCHAMOS border: 1px solid #34495e!important; border-bottom: 1px solid #34495e!important; -----> COLOR BORDE color: #FFF!important; } Donde conseguir colores HTML: http://flatuicolors.com/ ----> RECOMENDADO http://html-color-codes.info/codigos-de-colores-hexadecimales/ Eso es todo. Gracias por la atencion! --------------- Actualizado (24/11/2014 06:05 GTM) --------------- Aclaraciones: -Las utilidades se situan en la home debajo de ultimas fotos. -Me base en la V5 Si no se ve bien en tu theme avisame y lo adapto!
  10. Política De Cookies (Alerta Frotante) Las cookies estan Prohibidas sin Consentimiento del usuario, aqui una Herramienta para que los Usuarios entrantes vean un mensaje flotante de que el sitio usa cookies. Ademas que creamos el pages con la informacion mas amplia de lo que son las politicas de privacidad que se usan en cookies. Consiste en un mensaje como sale en PHPost En pages.php buscamos: case 'dmca': break; Y agregamos abajo: case 'privacypolicy': break; En t.pages.tpl buscamos: {/if} Y agregamos arriba: {elseif $tsAction == 'privacypolicy'} {include file='modules/m.pages_cookies.tpl'} En main_header.tpl buscamos: <script src="{$tsConfig.js}/funciones.js" type="text/javascript"></script> Y agregamos abajo: <script src="{$tsConfig.js}/cookie.js" type="text/javascript"></script> Buscamos: <body> Y agregamos abajo: <!-- Cookies Mensaje De Alerta --> <div id="cookieMessageWrapper"> <div id="cookieMessage"> {$tsConfig.titulo} utiliza cookies. Lea nuestra <a href="{$tsConfig.url}/pages/privacypolicy/">Pol&iacute;tica de Privacidad</a> para obtener m&aacute;s informaci&oacute;n. Para eliminar este mensaje, haga clic en el siguiente bot&oacute;n: <a style="color:#FFF;" href='#' id='cookieClose'>Acepto el uso de cookies</a> </div> </div> <!-- Cookies Mensaje De Alerta --> Al final de extras.css agregamos: #cookieMessageWrapper { background: #E4FBD2; font-family: "Segoe UI",Verdana,Arial,Helvetica,Sans-Serif; font-size: 12px; font-weight: normal; color: #1F3916; position: fixed; text-align: center; width: 100%; top: 0px; z-index: 3000; left: 0px; padding: 0; display: none; border-bottom: solid 1px #71BE56; } #cookieMessageWrapper a { text-decoration:none; color:#005CA5; } #cookieMessage { width: 984px; padding: 10px 0 5px 0; margin: 0 auto; position: relative; } #cookieMessage:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } #cookieMessage p { margin: 5px 0 0; } #cookieClose { float: right; display: block; background:#25272C; border:1px solid #000; color:#FFF; border-width: 1px; padding:3px 5px 5px 5px; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; box-shadow:inset 0px 1px 1px #999; } .privco { font-family:Helvetica; padding:10px; background:#ECFED8; font-size:12px; color:#333; } .privco a { text-decoration:none; color:#005CA5; } Subimos los archivos a sus respectivas carpetas... Espero les sea de agrado. Hasta la Próxima.
  11. Este mod trata de notificarte si te mencionaron en un comentario en un post Abrimos c.posts.php y buscamos: function newComentario(){ dentro de esa función buscamos: $this->quoteNoti($post_id, $data['post_user'], $cid, $comentario); debajo agregamos: //notificamos si mencionaron en un post tutan-kabron $this->menTi($post_id, $data['post_user'], $cid, $comentario); mas abajo buscamos: /* editComentario() */ antes agregamos: //menciones notificacion tutan-kabron function menTi($post_id, $post_user, $cid, $comentario){ global $tsCore, $tsUser, $tsMonitor; $ids = array(); $total = 0; // preg_match_all("/\[email protected]([a-zA-Z0-9_-]{4,16}+)\b/",$comentario,$users); // if(!empty($users[1])) { foreach($users[1] as $user){ # DATOS $udata = explode('|',$user); if(!is_array($udata)) { $user = $user; $lcid = $cid; } else { $user = $udata[0]; $lcid = (int) $udata[1]; } # COMPROBAR if($user != $tsUser->nick){ $uid = $tsUser->getUserID($tsCore->setSecure($user)); if(!empty($uid) && $uid != $tsUser->uid && !in_array($uid, $ids)){ $ids[] = $uid; $tsMonitor->setNotificacion(18, $uid, $tsUser->uid, $post_id, $lcid); } ++$total; } } } // return true; } luego abrimos c.monitor y buscamos: 17 => array('text' => 'Tu foto recibi&oacute; una medalla', 'css' => 'medal'), despues agregamos: 18 => array('text' => array('te mencion&oacute; en un', '_REP_ te mencionaron en un'), 'ln_text' => 'comentario', 'css' => 'blue_ball'), ojo: si ya tiene una notificación con numero 18 ese numero cambienlo por otro numero que no tenga y con ese trabajaremos a partir de ahora. mas abajo buscamos: case 1: case 2: case 3: case 5: case 6: case 7: case 8: case 9: return 'SELECT p.post_id, p.post_title, c.c_seo FROM p_posts AS p LEFT JOIN p_categorias AS c ON p.post_category = c.cid WHERE p.post_id = \''.(int)$data['obj_uno'].'\' LIMIT 1'; break; despues de: agregamos : case 18: mas abajo buscamos: // PUEDEN SER MAS DE UNO case 2: case 6: case 7: case 8: case 9: debajo agregamos: case 18: mas abajo buscan: if($no_type == 8 || $no_type == 9 reemplazan por: if($no_type == 8 || $no_type == 9|| $no_type == 18 abren m.monitor_sidebar.tpl y buscan: <li><label style="font-weight: bold; color: #006595;"><span class="monac_icons ma_comment_resp"></span><input type="checkbox" {if $tsData.filtro.f9 != true}checked="checked"{/if}onclick="notifica.filter('9', this)"/> Respuestas</label></li> debajo agregan: <li><label style="font-weight: bold; color: #006595;"><span class="monac_icons ma_blue_ball"></span><input type="checkbox" {if $tsData.filtro.f18 != true}checked="checked"{/if}onclick="notifica.filter('18', this)"/> Menciones</label></li> Caps:
  12. Holas, esto lo he visto por ahí y yo solo lo adapte, es algo simple pero tal vez le puede gustar a alguien -yao pueden cambiar iconos, o acceso y hacerlo un poco mas adaptable a sus themes, proyectos,etc.. bueno aquí les muestro de que se trata, el nombre no tenia uno propio así que le mande rengo dock -yao Instalación: Descargas: Mega o Mediafire | elijen cualquiera, son iguales. 1. Subimos la carpeta rengodock en /themes/tutheme/images/ 2. subimos m.rengodock.tpl en /themes/tutheme/templates/modules 3. editamos main_footer.tpl de /themes/tutheme/templates/sections y agregamos abajo de <!--end-cuerpo--> {include file='modules/m.rengodock.tpl'}y listo. ahí ya estaría bueno solo eso, saludos.-
  13. Hola amigos después de tiempo sin publicar, estaba mas en el chat pero bueno hoy les traigo un mod muy bonito y que puede facilitar la vida a algunos. Es el mod Comentar con Disqus, permite comentar con varias cuentas de redes sociales ya sea IGN, Facebook, Twitter, Jasse, etc. Es totalmente administrarle desde el panel de administración de disqus y puedes obtener ganancias ya que tiene integrados los anuncios Veamos algunas imágenes. La administración :3 Bueno es simplemente tenemos que entrar aqui y registrarnos. Lo bueno de todo esto es que tiene soporte para importantes plataformas. Para ello (ya que estamos Usando PHPost) le daremos a Universal Code. Hora de editar nuestro escript creamos un fichero llamado m.valia_disqus.tpl y lo subes en /themes/tuskin/templates/modules y en el contenido pones: <div id="disqus_thread"></div> {literal} <script type="text/javascript"> /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ var disqus_shortname = 'elnombredetudisqus'; // required: replace example with your forum shortname /* * * DON'T EDIT BELOW THIS LINE * * */ (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); </script> {/literal} <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> <a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> No pongas el código original coloca esto ya que esta adaptado al script si no te producirá errores. donde dice elnombredetudisqus es lo que esta en tu código de disqus en la misma linea. Reemplazalo. Y Listo hemos terminado, si me olvidé algo o quieres que lo adapte a algún tema especial solo avisame. Si deseas te dejo una demo y si deseas prueba respondiendo mi comentario en la demo o comentando algo. Tu panel del admin es elnombredetupagina.disqus.com/admin/moderate/ Manuh' Guerra ©2013 Saludos
  14. Bueno, aquí les tengo la V2 donde los usuarios pueden crear eventos en el calendario ya sea para recordatorio o realizar alguna tarea en esa fecha. La instalación es prácticamente la misma que en la anterior versión (solamente el menú xD) esta hagan la siguiente consulta en su base de datos: CREATE TABLE IF NOT EXISTS `e_eventos` ( `eid` int(11) NOT NULL AUTO_INCREMENT, `e_user` int(11) NOT NULL, `e_titulo` varchar(160) NOT NULL, `e_cuerpo` text NOT NULL, `e_dia` int(2) NOT NULL, `e_mes` int(2) NOT NULL, `e_year` int(4) NOT NULL, `e_fecha` int(11) NOT NULL, `e_privado` int(1) NOT NULL, PRIMARY KEY (`eid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; Ahora suban y reemplacen estos archivos: calendario.php → inc/php calendario.tpl → themes/tu_tema/templates MOD Calendario de eventos Kmario19.zip.zip] Editen su zona horaria (si es necesario) como expliqué en la versión anterior. Y listo! Estas son las mejoras: Espero les haya gustado, si creen que faltó algo me avisan o si encuentran algún bug ya saben, cualquier mejora, recomendación o sugerencia es bienvenida, nos vemos en otro aporte, adios!
  15. Hola bueno hace dias chito pidio esto y quedo en nada asi que ayer con ayuda de isidro xD lo termine y aca se los dejo 1) Van a c.posts.php buscan $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); y lo remplazan por $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_body, 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); $elements = array( "/(?i)\[url\=(http|https|ftp|irc|ed2k|gopher|telnet|gopher|telnet)(\:\/\/)([^\<\>[:space:]]+?)\](.+?)(\[\/url\])/i", "/(?i)\[quote\=([^\n\r\t\<\>]+?)\]([^\a]+?)\[\/quote\]/i", "/(?i)\[img\=([0-9]{1,3})x([0-9]{1,3})\](http|https|ftp|irc|ed2k|gopher|telnet)(\:\/\/)([^\<\>[:space:]]+?)(\[\/img\])/i", "/(?i)\[img\=(http|https|ftp|irc|ed2k|gopher|telnet)?(\:\/\/)?([^\<\>[:space:]]+)\]/i", "/(?i)\[swf\=(.+?)\]/i", "/(?i)\[goear\=(.+?)\]/i", "/(?i)\[goear\]([a-z0-9]{7})\[\/goear\]/i" ); $size = count( $elements ); while ($row = mysql_fetch_assoc($query)) { for( $elm = 0; $elm < $size; $elm++ ) { $element = $elements[$elm]; // while( preg_match($element, $row['post_body'] ) ) { $row['post_body'] = preg_replace( $element, '', $row['post_body'] ); } } // $row['post_body'] = strip_tags(substr($tsCore->parseBBCode($row['post_body']), 0, 150)).'...'; // $lastPosts['data'][] = $row; } 2) Van a templates/modules abren m.home_last_posts.tpl y agregan (donde quieren) {$p.post_body} eso seria todo pd: no tiene diseño por que no sabia como hacerlo xD ustedes lo adaptan a gusto y piaccere demo: http://zona-xtrema.com.ar/ (lo que esta en rosado seria la breve descripcion)
  16. Primero subimos estos dos archivos a sus respectivas carpetas. https://mega.co.nz/#!YxJQRAjJ!iY0POB-oS4rGzI6CLk1anmXjk3xDZ9MAATDpkX9plt4 El nprogress.css en tjemes/TUTEMA/css/ El nprogress.js en themes/TUTEMA/js/ Luego nos vamos a main_header.tpl y arriba de </head> Añadimos <script src="{$tsConfig.js}/nprogress.js" type="text/javascript"></script> <link href="{$tsConfig.css}/nprogress.css" rel="stylesheet" type="text/css"></script> Luego nos vamos al main_footer.tpl y arriba de: </body> Agregamos <script> {literal} $('body').show(); $('.version').text(NProgress.version); NProgress.set(0.5); setTimeout(function() { NProgress.done(); $('.fade').removeClass('out'); }, 1000); {/literal} </script> Y listo. Cap La barra es azul con lo cual no contrasta mucho con mi web...pero le pueden cambiar el color si saben algo de css... Salu2
  17. Buenas tardes de vuelta, vengo con otro mod actualizado, Creditos a : Alan : Se que van a decir (Creo), que por ahi es perdida de tiempo crear estas actualizaciones para los mods, pero entiendan que hay usuarios de Phpost , que no saben que tiene que hacer para actualizar, y esperan hasta que uno o algunos lo hagan, y yo me ofrezco a actualizar casi todos los mods que sean utiles , asi la version 1.2 estara mas genial. Busquen el archivo c.registro.php , se encuentra en inc/class y busquen : db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_portal` (`user_id`) VALUES (\''.$tsData['user_id'].'\')'); Y abajo de eso, agregan este codigo: // COMPROBAMOS CLONES $realip = ($_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : $_SERVER['X_FORWARDED_FOR']); if($f = db_exec('num_rows', $q = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_name FROM u_miembros WHERE user_last_ip = \''.$tsCore->setSecure($realip).'\'')) || db_exec('num_rows', $qq = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_name FROM u_sessions AS s LEFT JOIN u_miembros AS u ON s.session_user_id = u.user_id WHERE s.session_ip = \''.$tsCore->setSecure($realip).'\' && s.session_user_id != \'0\''))){ $q = db_exec('fetch_row', $f ? $q : $qq); $ms = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_id FROM u_miembros WHERE user_rango = \'1\' || user_rango = \'2\''); while($row = db_exec('fetch_row', $ms)){ db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO u_avisos (user_id, av_subject, av_body, av_date, av_type) VALUES (\''.$row[0].'\', \'Posibles clones\', \'Posibles clones: @'.$q[0].' y @'.$tsCore->setSecure($tsData['user_nick']).'\', \''.time().'\', \'2\')') or die('0__'.show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db')); } } Captura : Aviso que le saque la imagen de Alan en su tema, ya que la mia esta para bloquear a los clones y no puedo sacar una captura . lo siento, pero el mod funciona Y listo , solo eso , no es nada mas, si quieren sigo actualizando los mods , saludos y hasta la proxima. Demo: http://www.linixweb.net/
  18. Buenas tardes gente, como veo que muchos ya ni actualizar los mods de la Risus 1.1 a la 1.2 , creo que yo voy a ser bueno con todos (? y les voy a actualizar casi todos los mods que anden . Asi muchos pueden usar las funciones de las Risus 1.1 en la 1.2 . Comenzemos Primero, antes que todo, CREDITOS a : Aperpen. Tema Original : AVISO: Estoy usando el theme V5 de To-Up, esta actualizacion tranquilamente se puede usar para Default y V5 ! funciona sin problemas y no altera nada del diseño Comenzemos con la Actualizacion del MOD : A) En c.admin.php que se encuentra en INC/CLASS, buscamos: function getSessions() { global $tsCore; // $max = 20; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); // $query = mysql_query('SELECT u.user_id, u.user_name, s.* FROM u_sessions AS s LEFT JOIN u_miembros AS u ON s.session_user_id = u.user_id ORDER BY s.session_time DESC LIMIT ' . $limit); // $data['data'] = result_array($query); // PAGINAS $query = mysql_query('SELECT COUNT(*) FROM u_sessions'); list($total) = mysql_fetch_row($query); $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . "/admin/sesiones?", $_GET['s'], $total, $max); // return $data; } Y Reemplazamos todo eso por esta Actualizacion : function getSessions() { global $tsCore; // $max = 20; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); // $user = !empty($_GET['user']) ? (int)$_GET['user'] : 0; if($_GET['user'] == 'v') $user = 'v'; if(!empty($user)){ if($user == 'v') $user = 0; $where = 'WHERE s.session_user_id = \''.$user.'\''; } // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, s.* FROM u_sessions AS s LEFT JOIN u_miembros AS u ON s.session_user_id = u.user_id '.$where.' ORDER BY s.session_time DESC LIMIT ' . $limit); // $data['data'] = result_array($query); // PAGINAS $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(*) FROM u_sessions'); list($total) = db_exec('fetch_row', $query); $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . "/admin/sesiones?", $_GET['s'], $total, $max); // return $data; } B ) Ahora vamos a m.admin_sessions.tpl (Default) o si no a m.admin_sesiones.tpl (V5 de To-Up). Buscamos : <a href="#" onclick="admin.sesiones.borrar('{$s.session_id}'); return false"><img src="{$tsConfig.url}/themes/default/images/icons/power_off.png" title="Cerrar sesi&oacute;n de {if $s.user_name}{$s.user_name}{else}este visitante{/if}"/></a> Arriba de eso, ponemos este Codigo: {if $s.user_id > 0 && !$smarty.get.user} <a href="{$tsConfig.url}/admin/sesiones/?user={$s.user_id}"><img src="{$tsConfig.url}/themes/default/images/icons/details.png" title="Detalles"/></a> {elseif !$smarty.get.user && $s.user_id == 0} <a href="{$tsConfig.url}/admin/sesiones/?user=v"><img src="{$tsConfig.url}/themes/default/images/icons/details.png" title="Detalles"/></a> {/if} Imagenes, antes de actualizar el Mod: (El color negro esta hecho a proposito por la seguridad de mis usuarios en mi pagina) Ahora con la Actualizacion, cuando apretas en Detalles, saldra asi : Y ya esta aplicado para Las V5 y para Default ! Demo: http://www.linixweb.net/ Saludos y hasta la proxima actualizacion de un Mod al azar que elija!
  19. Hola a todos en este nuevo tema quiero compartirles esta modificacion del monitor para que se pueda ver el avatar y la fecha de notificación, es algo facil y solo modifiqué el tpl del monitor, bueno sin tanto rodeo les dejo la descarga para que puedan verlo asi: Para tenerlo así solo reemplazemos todo el codigo que está en p.notificaciones.ajax.tpl que se encuentra en templates/t.php_files {if $tsData} {foreach from=$tsData item=noti} <li style="cursor:default;overflow:hidden;" {if $noti.unread > 0}class="unread"{/if}> <span class="floatL" ><a class="ectip" href="{$tsConfig.url}/perfil/{$noti.user}" title=""> <img class="ectip" style="float:left;background:white;padding:1px;border: 1px solid rgb(235, 235, 235);margin: 0px 4px 0px -2px;" height="35" width="35" title="{$noti.user}" src="{$tsConfig.url}/files/avatar/{$noti.avatar}"/> </a> {if $noti.total == 1}<a href="{$tsConfig.url}/perfil/{$noti.user}" title="{$noti.user}">{$noti.user}</a>{/if} {$noti.text} <a title="{$noti.ltit}" class="obj" href="{$noti.link}">{$noti.ltext}</a><br><span class="monac_icons ma_{$noti.style}"></span><span style="color:gray;">{$noti.date|fecha}</span> </span> </li> {/foreach} {else} <li style="padding:10px;"><b>No hay notificaciones</b></li> {/if} Y es todo lo que tienen que hacer, cualquier duda o problema me hacen saber, espero que les haya gustado y nos vemos en otro mod
  20. Aqui les dejo este Mod para poder limitar mensajes por rangos dentro de sus web. Como funciona... LEER..!! ¬¬ Al igual que el foro, segun sea el rango se le de una cantidad determinada para poder enviar mensajes. Y quien envia el mensaje se le descuenta de la cantidad de mensjaes que puede enviar, pero la conversacion puede seguir si usan el mismo mensaje enviado. Estas limitaciones impiden el envio de mensajes cuando se completo la cuota de mensajes permitidos. Ahora bien.. Ya en el script los mensajes enviados se pueden borrar solo por el receptor. Aqui se le agrega la opcion de poder dar permisos para poder borrar esos mensajes sin que el receptor lo aga. para ello deberan de darle los permisos a los rangos. O deberan de esperar que el receptor los elimine. Aclaro algo Importante. Antes de instalar el mod verifiquen que los mensajes enviados en su web por ustedesde esta manera: http://localhost/mensajes/enviados/ Y notaran que si los borran, no surge efecto, si en el momento, pero al darle F5 estaran hay. Esto es para aclarar que si les pasa no digan que es por el Mod. Pero con esto podran eliminarlos siempre y cuando tengan los permisos. COMENZAMOS: En c.admin.php buscamos: 'gopfd' => $_POST['global-pointsforday']); Y agregamos arriba: 'gopmen' => $_POST['global-permisomensajes'], 'gopmenv' => $_POST['global-permisomensajesv'], Buscamos nuevamente: 'gopfd' => $_POST['global-pointsforday']); Y agregamos arriba: 'gopmen' => $_POST['global-permisomensajes'], 'gopmenv' => $_POST['global-permisomensajesv'], En c.user.php buscamos: // NOMBRE $this->nick = $this->info['user_name']; Y agregamos arriba: $query= mysql_query('SELECT COUNT(m.mp_id) as total, m.mp_from, u.user_id FROM u_mensajes AS m LEFT JOIN u_miembros AS u ON u.user_id = m.mp_from WHERE u.user_id = \''.$this->info['user_id'].'\' GROUP BY u.user_id '); $data = mysql_fetch_assoc($query); $this->ran = $this->permisos['gopmen'] <= $data['total']; En el archivo mensajes.php buscamos: case 'leer': $smarty->assign("tsMensajes",$tsMP->readMensaje()); break; Y agregamos abajo: case 'borrar': $smarty->assign("tsMensajes",$tsMP->delmensaje()); if($tsMP->delmensaje()) $tsCore->redirectTo($tsCore->settings['url'].'/mensajes/enviados/'); break; En c.mensaje.php buscamos: $user_id = $tsUser->getUserID($para); Y agregamos arriba: if($tsUser->ran)die('H&aacute;z alcansado el maximo de mensajes permitidos por tu Rango.'); Buscamos al final antes de la ultima } Agregamos arriba: // BORRAMOS LOS MENSAJES SIN PERMISOS DEL RECEPTOR XD function delmensaje() { global $tsCore, $tsUser; $perm = $tsUser->permisos['gopmenv'] || $tsUser->permisos['sumo'] || $tsUser->permisos['suad'] ; //Por si un vivo se quiere pasar por la url ¬¬ if(!$perm) die("<SCRIPT language='Javascript'>alert(\"No puedes borrar el mensaje Pendejo!\");</SCRIPT><SCRIPT language='Javascript'> history.go(-1)</SCRIPT>"); $mpid = $_GET['id']; if (!mysql_num_rows(mysql_query('SELECT `mp_id` FROM `u_mensajes` WHERE `mp_id` = \'' . (int)$mpid . '\' LIMIT 1'))) { return 'El id ingresado no existe.'; } mysql_query('DELETE FROM `u_mensajes` WHERE `mp_id` = \'' . (int)$mpid . '\''); mysql_query('DELETE FROM `u_respuestas` WHERE `mp_id` = \'' . (int)$mpid . '\''); } En m.admin_rangos.tpl buscamos: <dl> <dt><label for="goaf">Anti-flood</label><br /><span>Tiempo que deben esperar entre acci&oacute;n.</span></dt> <dd><input type="text" id="goaf" name="global-antiflood" value="{$tsRango.permisos.goaf}" style="width:30%"/></dd> </dl> Y agregamos abajo: <dl> <dt><label for="gopmen">Mensajes Permitidos</label><br /><span>Cantidad de mensajes permitidos para enviar.</span></dt> <dd><input type="text" onkeyup="var no_digito = /\D/g; this.value = this.value.replace(no_digito , '');" id="gopmen" name="global-permisomensajes" value="{$tsRango.permisos.gopmen}" style="width:30%"/></dd> </dl> Buscamos: <legend>Global</legend> <input type="checkbox" id="godp" name="global-darpuntos" {if $tsRango.permisos.godp}checked{/if} /><label style="font-weight:bold;" for="godp">Puntuar Posts</label><label for="godp"> &nbsp; Podr&aacute;n puntuar posts.</label> <br /><hr> Y agregamos abajo: <input type="checkbox" id="gopmenv" name="global-permisomensajesv" {if $tsRango.permisos.gopmenv}checked{/if} /><label style="font-weight:bold;" for="gopmenv">Eliminar Mensajes</label><label for="gopmenv"> &nbsp; Podr&aacute;n eliminar mensajes enviados.</label> <br /><hr> En el archivo m.mensajes_list.tpl buscamos: <td class="pls"> <a href="#" class="qtip" title="Eliminar" onclick="mensaje.eliminar('{$mp.mp_id}:{$mp.mp_type}',1); return false;"><i class="delete"></i></a> </td> Y lo cambiamos por: <td class="pls"> {if $tsUser->permisos.suad || $tsUser->permisos.sumo || $tsUser->permisos.gopmenv} <a href="{$tsConfig.url}/mensajes/borrar?id={$mp.mp_id}"><i title="Eliminar Mensaje" class="delete"></i></a> {else} <a href="#" class="qtip" title="Eliminar" onclick="mensaje.eliminar('{$mp.mp_id}:{$mp.mp_type}',1); return false;"><i class="delete"></i></a> {/if}</td> FIN Importante..!! Deben de darle la cantidad de mensajes permitidos a cada rango sino, no le dejara enviar mensajes al rango que le falte la cantidad. Ahora tienen una nueva herramienta para hacer sus permisos de rangos, asi ya no solo se valeran por los puntos unicamente, Esos puntos los aclaran cada uno de Uds. en sus web con un Posts que le indiquen la nueva funcion de mensjaes por los rangos . Espero que les sea de agrado.. Cualquier duda me avisan y se los respondere en cuanto pueda,.. Sigan este Topic que si hay actualizaciones se los dejare aqui si.. Hasta la Proxima..
  21. Este mod lo que hace es mostrar un mensaje en los posts que ya votaste anteriormente y te da la cantidad. El script por default muestra la opcion de votar posts siempre y te da un mensaje si ya votaste anteriormente, pero aveces uno ni recuerda si ya ha votado y se entera recien al darle un voto otra ves. Asi que les dejo este mini-mod para que sepan si ya votaron un posts.. En c.posts.php al final antes de la ultima: } Agregamos: function getVoto(){ global $tsCore, $tsUser; $post_id = intval($_GET['post_id']); $query = mysql_query('SELECT tid, cant FROM p_votos WHERE tid = \''.(int)$post_id.'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'1\' LIMIT 1'); $data = mysql_fetch_assoc($query); return $data['cant']; } En posts.php buscamos: // DATOS DEL RANGO DEL PUTEADOR $smarty->assign("tsPunteador",$tsPosts->getPunteador()); Y agregamos abajo: // VOTOS DEL POSTS $smarty->assign("tsVoto",$tsPosts->getVoto()); En el archivo m.posts_content.tpl buscamos: {include file='modules/m.posts_metadata.tpl'} Y lo cambiamos por: {if $tsVoto==true} <div class="votod">Ya diste {$tsVoto} Puntos en este Post</div> {else} {include file='modules/m.posts_metadata.tpl'} {/if} Agregamos al final de extras.css .votod{ font-family:Arial; background:#C4E19B none repeat scroll 0 0; padding:10px; color:green; font-weight:bold; font-size:12px; text-align:center; } Espero les sea de agrado.. Gracias a xperia92 por la idea del Mod. Hasta la próxima
  22. Hola a todos, creo que este mod ya lo habían publicado, si mal no recuerdo fue Tutan quien lo publicó pero al parecer lo han eliminado, Joseph me recordó y me pidió realizarlo, y pues aquí está: 1. En el archivo c.muro.php debajo de: $tsMonitor->setNotificacion(12, $pid, $tsUser->uid, $pub_id); Agregar: $tsMonitor->setFollowNotificacion(60, 1, $tsUser->uid, $pub_id); 2. En el archivo c.monitor.php arriba de: 17 => array('text' => 'Tu foto recibi&oacute; una medalla', 'css' => 'medal'), Agregar: 60 => array('text' => 'actualiz&oacute; su', 'ln_text' => 'estado', 'css' => 'blue_ball'), Mas abajo buscar: case 14: Agregar abajo: case 60: Mas abajo buscar: case 17: $oracion['text'] = 'Tu <a href="'.$site_url.'/fotos/'.$data['user_name'].'/'.$data['foto_id'].'/'.$tsCore->setSEO($data['f_title']).'.html" title="'.$data['f_title'].'"><b>foto</b></a> tiene una nueva <span class="qtip" title="'.$data['m_title'].'"><b>medalla</b> <img src="'.$site_url.'/themes/default/images/icons/med/'.$data['m_image'].'_16.png"/></span>'; break; Agregar abajo: case 60: $oracion['text'] = ($this->show_type == 1) ? $this->monitor[$no_type]['text'] : $this->monitor[$no_type]['text'].' '.$ln_text.': '; $oracion['link'] = $site_url.'/perfil/'.$data['user_name'].'/'.$data['pub_id']; $oracion['ltext'] = ($this->show_type == 1) ? $ln_text : substr($data['p_body'],0,20).'...'; $oracion['ltit'] = ($this->show_type == 1) ? substr($data['p_body'],0,20).'...' : $ln_text; break; Y listo, con eso ya tienen la notificación activa cuando el usuario que siguen actualice su estado. (Le coloqué como notificación id = 60 porque no se cuantas notificaciones tengan en sus páginas, si quieren seguir un orden cambienselo a 19, 20 o el numero que sigan en su monitor, en todos los pasos donde vean el numero 60) Listo Joseph todo tuyo, falta el de y
  23. Hola amigos, vengo a dejarle esto a albert2227 y otros usuarios que lo pedían. Es un pedido, trata de administrar los anuncios. Pude notar que risus ya tiene esa opción pero le agregue mas opciones... Vamos a la Instalación. Instalación 1) Vamos al archivo c.admin.php y busca lo siguiente: $query = mysql_query('SELECT `not_id`, `not_body`, `not_date`, `not_active` FROM w_noticias WHERE not_id = \'' . (int)$not_id . '\' LIMIT 1'); Después del `not_active` agregar , `not_type` quedando así: `not_active`, `not_type` 2) En el mismo archivo buscamos: Remplazarlo por: 3) Buscamos el archivo m.admin_noticias.tpl y todo su contenido lo remplazamos por esto: 4) Buscamos el archivo head_noticias.tpl y todo su contenido lo remplazamos por esto: 5) Buscamos el archivo estilo.css y busca aproximadamente en la linea 244 lo siguiente: Remplazar por: 6) Crean una carpeta llamada "anuncio" dentro de la carpeta images y las imágenes la guardan dentro del el Descargar > Imágenes + Demo 7) Hacen esta consulta: ALTER TABLE w_noticias ADD not_type int(1) NOT NULL; En la descarga esta la DEMO Capturas: Eso es Todo.... Saludos
  24. Hola a todos en Phpost. Pues buscando una solución a la constante batalla de los que dependemos en gran medida de las publicidades para pagar el hosting de nuestras web, me encontré con este código en la web que hace un muy buen trabajo. Hay ya publicado un complemento similar en Phpost (), pero al aplicarlo en mi web, por ejemplo yo que empleo el script de GreaseMoneky "Anti-Adblock Killer" y Adblock Plus con tres suscripciones de filtros fallaba en detectar mi bloqueador, por lo que se reducía su eficiencia. Sin embargo, este que les propongo, si bien es super simple, detecta que mi bloqueador eliminó la inserción hecha por el código, por lo que podemos asumir que es bastante eficiente. Si le dan un vistazo al código, se percatarán que usa una técnica bastante sencilla pero eficaz. Por último dejar en claro que este código no es mío. Lo encontré en un foro (no lo menciono para no hacer spam) y el nombre de su autor está referenciado en el código. Mi único aporte fue adaptarlo a Phpost. Sin más demora, vamos a lo que vinieron... EN main_header.tpl BUSCAMOS: <body> Y AGREGAMOS DEBAJO: <img src="banner.gif" width="1" height="1" id="XcVCCW"> <div id="light" class="white_content"> <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'" style="text-decoration:none;position:absolute;top:0px;left:0px;display:none;"><img src="http://i.imgur.com/Hti73qI.png"></a> <img src="http://i.imgur.com/3GYHaFX.png" width="16px" style="position:absolute;top:2px;right:2px;" onclick="window.open('http://img98.xooimage.com/files/3/9/5/como_desactivar_adblock-4090b32.gif','_blank');"> <center> <img src="http://i.imgur.com/5kS2Ca8.png"><br/> <p>Este sitio se mantiene con publicidades. Por favor, deshabilita tu bloqueador para poder navegarlo.</p> </center> </div> <div id="fade" class="black_overlay"></div> EN main_footer.tpl BUSCAMOS: </body> </html> Y AGREGAMOS ENCIMA DE </body> : {literal} <script type="text/javascript"> function cicklow_XcVCCW(){ if(document.getElementById("XcVCCW")==null || document.getElementById("XcVCCW").offsetHeight<=0){ document.getElementById('light').style.display='block'; document.getElementById('fade').style.display='block' } } window.onload=cicklow_XcVCCW; </script> {/literal} AL FINAL DE EXTRAS.CSS AGREGAMOS: .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; background-color: black; z-index:1001; -moz-opacity: 0.8; opacity:.80; filter: alpha(opacity=80); } .white_content { display: none; position: absolute; top: 20%; left: 25%; width: 50%; height: 50%; padding: 16px; border: 16px solid orange; background-color: #121212 ; z-index:1002; overflow: auto; } .white_content p { color: #FFF ; font-family: verdana; } Y eso eso todo. Ahora bien, si por ejemplo desean que el usuario pueda cerrar el mensaje mostrado y continúe la navegación del sitio busquen en el primer paso: <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'" style="text-decoration:none;position:absolute;top:0px;left:0px;display:none;"><img src="http://i.imgur.com/Hti73qI.png"></a> Y CÁMBIENLO POR: <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'" style="text-decoration:none;position:absolute;top:0px;left:0px;"><img src="http://i.imgur.com/Hti73qI.png"></a> Eso es todo. Espero les sea útil, cualquier cosa avisen y veré en que puedo ayudar. Sitio de prueba: http://www.cicklow.com/adblock/ Créditos: Al autor original del código.
  25. Hola amigos después de tanto tiempo vengo con un pequeño aporte que me ha pedido el usuario UserxD y ya que se me hizo fácil hacerlo lo comparto con todos. Lo que hace es lo que dice en el título, al igual que el facebook te notifica cuando un user que sigues cumple años, (obviamente sólo si estás logueado). Para instalar el mod primero ve al archivo c.user.php que está en inc/class y debajo de: $this->is_banned = $this->info['user_baneado']; Agregar: $this->getFollowBirthday(); Luego arriba de: /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ Agregar: /* getFollowBirthday() */ function getFollowBirthday(){ /* Si quieres, activa la zona horaria deacuerdo a tu ubicacion para que las fechas se ajusten a tu zona y no a la del servidor de tu web. America/Bogota => Colombia (Ver zonas horarias disponibles en el topic de este mod). Para activar borra el #. */ # date_default_timezone_set("America/Bogota"); $type = 18; // Tipo de notificacion disponible $uid = $this->uid; $mes = date("n",time()); $dia = date("j",time()); $query = db_exec(array(__FILE__, __LINE__), 'query', "SELECT f.f_id FROM u_follows AS f LEFT JOIN u_miembros AS u ON f.f_id = u.user_id LEFT JOIN u_perfil AS p ON p.user_id = u.user_id WHERE f.f_user = '$uid' AND f.f_type = '1' AND p.user_dia = '$dia' AND p.user_mes = '$mes' AND f.f_id NOT IN(SELECT obj_uno FROM u_monitor WHERE user_id = '$uid' AND not_type = '18')"); $follows = result_array($query); // Notificamos foreach($follows as $val){ db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO u_monitor (user_id, obj_user, obj_uno, not_type, not_date) VALUES (\''.$uid.'\', \''.$val['f_id'].'\', \''.$val['f_id'].'\', \''.$type.'\', \''.time().'\')'); } } Zonas Horarias mencionadas Ahora ir al archivo c.monitor.php en la misma carpeta y debajo de: 17 => array('text' => 'Tu foto recibi&oacute; una medalla', 'css' => 'medal'), Agregar: 18 => array('text' => 'Est&aacute; de cumplea&ntilde;os <strong>&iexcl;Felic&iacute;talo!</strong>', 'css' => 'cake'), Mas abajo buscar: case 17: return 'SELECT f.foto_id, f.f_title, f.f_user, m.medal_id, m.m_title, m.m_image, a.medal_for, u.user_id, u.user_name FROM w_medallas_assign AS a LEFT JOIN f_fotos AS f ON f.foto_id = a.medal_for LEFT JOIN u_miembros AS u ON u.user_id = f.f_user LEFT JOIN w_medallas AS m ON m.medal_id = a.medal_id WHERE m.medal_id = \''.(int)$data['obj_uno'].'\' AND f.foto_id = \''.(int)$data['obj_dos'].'\' LIMIT 1'; break; Y debajo agregar: case 18: global $tsUser; $dato['user_name'] = $tsUser->getUserName($data['obj_uno']); return $dato; break; Mas abajo buscar: case 17: $oracion['text'] = 'Tu <a href="'.$site_url.'/fotos/'.$data['user_name'].'/'.$data['foto_id'].'/'.$tsCore->setSEO($data['f_title']).'.html" title="'.$data['f_title'].'"><b>foto</b></a> tiene una nueva <span class="qtip" title="'.$data['m_title'].'"><b>medalla</b> <img src="'.$site_url.'/themes/default/images/icons/med/'.$data['m_image'].'_16.png"/></span>'; break; Agregar debajo: case 18: $oracion['text'] = $this->monitor[$no_type]['text']; break; Por ultimo en el archivo phpost.css de tu tema, buscar: span.ma_medal{ background: url(images/icons/med/blue_bronze_16.png);} Y debajo de eso agregar: span.ma_cake{ background: url(images/icons/cat/cake.png);} Y eso es todo. Nota: El tipo de notificación que usé en este tutorial es el 18, este puede cambiar si ya tienes alguna otra notificación ocupando ese tipo; ya sea usadas por otros mods como las notificaciones de las comunidades, juegos, etc. Para cambiarlo mira en las modificaciones que hace este mod donde veas el número 18 cámbialo por el tipo de notificación disponible que tengas. También verificar que exista el icono cake.png en la carpeta images/icons/cat (Es el icono por defecto de la categoría Recetas y Cocina). Espero haber cumplido el pedido y le sirva a muchos para sus webs, nos vemos en otro aporte
×