Clasificación


Contenido popular

Showing most liked content since 17/03/12 en todas las áreas

  1. 79 likes
    Buenas, os dejo una V5 que hice a principios de año +y para no hacer otro topic decidí editar este, hay que destacar que esta hecha de 0 y sin códigos de anteriores versiones, también es importante decir que la idea no era compartirla pero estoy harto de recibir 1000 mensajes con problemas de versiones anteriores así que dejo esta totalmente lista para usarse y sin problemas ademas aclaro que NO daré soporte a viejas versiones solo a esta y por MP y comentarios, nada de correos ni eso. ACLARACIONES: Bueno cambie la V5 cansado de los problemas que traia la V5 que tenia este topic antes, igualmente dejare el link mas abajo de la vieja por si la quieren pero créanme la nueva es mucho mejor. COMUNIDADES: No trae nada de comunidades, quite todo y ahora sera como instalarlas en cualquier tema modificado completamente DESCARGA : https://www.mediafire.com/?d62w2n8au6sn1dq DESCARGAR ANTIGUA VERSION (LA 3.0 ORIGINAL QUE ESTABA POSTEADA AQUI): http://www.mediafire.com/?phd7sbpd0cph7z2 Otra cosa les comento que cualquier skin, modificación o uso de código de esta V5 que quieran realizar lo pueden hacerse sin preguntar ya que el propio phpost es open source así que pues a hacer lo que quieran y no hacerme 30 preguntas que responderé de la misma manera.
  2. 64 likes
    Comunidades Risus programadas por alexander1712 Buenos días a todos, les traigo uno de los mods que más me pidieron, antes que nada quiero aclarar algunas cositas: viene a ser el primer mod al que exijo copyright, el copy por default está en el footer bastante visible y puede que hasta molesto, si quieren pueden moverlo de lugar y ajustar un poco el tamaño, siempre que se vea y no se oculte por el fondo o alguna imagen, tiene que estar visible y legible. debe decir o bien desarrollado por alexander1712 o mod por alexander1712, unicamente exijo que sea visible dentro de comunidades... pero pueden ponerlo en otros sitios, siempre que se vea cuando entren a comunidades. sabrán algunos que se publicó una versión con un backdoor que me permitía a mi borrarles todos los post si quitaban el copy, puesto que lo charlé con muchos y la mayoría tenía miedo de que el backdoor se haga publico a pesar que tomé todas las precaciones para que solo yo pudiera usarlo, entonces decidí publicar la versión sin backdoor y confiar en los usuarios respetaran el trabajo, porque cuesta mucho hacer un mod de este tamaño.- por otra parte confiaré en la administración de phpost para que ayude a hacer cumplir el copy agradezco la postura de isidro de colaborar con el estatus del copy, que luego hablaré con ellos bien. esta versión está limpia sin más y sino que cualquier programador la revise y verá que no miento. Solo daré soporte de éste mod a quien cumpla los siguientes requicitos: Risus RC2 link en la respuesta del problema que tengan de su web con el copy reporte de bugs por mp. Agradecimientos: gracias a tron por ayudar con el buscador. a rhuancarlos por ayudar con el diseño y probar la primer alpha a toup por pasarlo a su v5 a megarick por ajustarlo a la v5 de gonza. a brian por prestarme su web para solucionar unos errores a ciberfull.com por dejarme probar las comus en su web. ellos son los unicos autorizados a quitar copy Aclaración final: quiero aclarar que estas comus no son igual a taringa, decidí darle originalidad para que no sea todo lo mismo asique verán cosas nuevas como por ejemplo: el go-random que te lleva a una comunidad al azar y la imagen de cabecera de la comunidad. Fotos: Instalación: ----------- instalando comunidades --------- hay un txt con las instrucciones adjunto al rar. ---------------------------------------------------- Para los que tengan la versión con backdoor solo suban los tpls de la carpeta comunidades y el archivo c.comunidades.php * bugs arreglados: la categoría. editar mi comunidad que no pida cambiar nombre quitamos el backdoor. Descarga: v4: Mediafire - por Rhuancarlos v5: Mediafire - por ToUp (no disponible) v5: Gonzalo - por Megaerick (no disponible) si tienen algun problema con el diseño de alguna de estas versiones por favor al autor del diseño se lo preguntan. cualquier duda sobre el lanzamiento de la versión de theme v5 preguntarle a megaerick si es la de gonza o a toup. Saludos Cordiales! - Alexander1712
  3. 55 likes
    Gente al fin, es todo suyo, disfrútenlo en tres colores. Hay que modificar unas pequeñas cosas para disfrutar a full el tema en su script de phpost. 1. Visitas en los "ultimos posts" en la home. En c.posts.php buscar las lineas: /*********/ $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); Al lado de p.post_title, agregar p.post_hits, (respetando la coma y el espacio) 2. Avatar del usuario en "ultimos comentarios" en la home. En c.posts.php buscar la linea: function getLastComentarios(){ Debajo de esta encontraras u.user_name, al lado de ella agrega u.user_id, (respetando la coma y el espacio) 3. Este es opcional, si quieres que las noticias se vean en la pagina principal, tanto como en /posts y /portal En c.core.php buscar if($_GET['do'] == 'portal' || $_GET['do'] == 'posts') Y borrarlo. 4. Este es un fix para las fotos en el perfil, porque se muestran unos cuadros vacios como si tuvieran fotos, ademas cuando se ve una publicación independiente no aparecen las fotos. Para eso en c.cuenta.php buscamos // ULTIMAS FOTOS if(empty($_GET['pid'])){ $query = mysql_query('SELECT foto_id, f_title, f_url FROM f_fotos WHERE f_user = \''.(int)$user_id.'\' ORDER BY foto_id DESC LIMIT 6'); $data['fotos'] = result_array($query); $total = count($data['fotos']); $data['fotos_total'] = $total; if($total < 6){ for($i = $total; $i <= 5; $i++){ $data['fotos'][$i] = NULL; } } } Y eso lo reemplazamos por: // ULTIMAS FOTOS $query = mysql_query('SELECT foto_id, f_title, f_url FROM f_fotos WHERE f_user = \''.(int)$user_id.'\' ORDER BY foto_id DESC LIMIT 8'); $data['fotos'] = result_array($query); $total = count($data['fotos']); $data['fotos_total'] = $total; 5. Este pequeño cambio sera para que todos vean el numero total de visitas en el perfil, en el mismo archivo c.cuenta.php buscamos: if($data['can_hits']){ $data['visitas'] = result_array(mysql_query('SELECT v.*, u.user_id, u.user_name FROM w_visitas AS v LEFT JOIN u_miembros AS u ON v.user = u.user_id WHERE v.for = \''.(int)$user_id.'\' && v.type = \'1\' && user > 0 ORDER BY v.date DESC LIMIT 7')); $q1 = mysql_fetch_row(mysql_query('SELECT COUNT(u.user_id) AS a FROM w_visitas AS v LEFT JOIN u_miembros AS u ON v.user = u.user_id WHERE v.for = \''.(int)$user_id.'\' && v.type = \'1\'')); $data['visitas_total'] = $q1[0]; } Lo reemplazamos por: $data['visitas'] = result_array(mysql_query('SELECT v.*, u.user_id, u.user_name FROM w_visitas AS v LEFT JOIN u_miembros AS u ON v.user = u.user_id WHERE v.for = \''.(int)$user_id.'\' && v.type = \'1\' && user > 0 ORDER BY v.date DESC LIMIT 21')); $q1 = mysql_fetch_row(mysql_query('SELECT COUNT(u.user_id) AS a FROM w_visitas AS v LEFT JOIN u_miembros AS u ON v.user = u.user_id WHERE v.for = \''.(int)$user_id.'\' && v.type = \'1\'')); $data['visitas_total'] = $q1[0]; Y ademas cambia el total de los últimos visitantes, ahora, como los seguidores y a quienes sigues, mostrara los últimos 21. 6. Para el modulo de "fotos mas vistas" en la home de fotos, en fotos.php debajo de: $smarty->assign("tsLastFotos", $tsFotos->getLastFotos()); Agregar $smarty->assign("tsBestFotos", $tsFotos->getBestFotos()); [iMPORTANTE] Reemplazar c.fotos.php para apreciar todos los cambios en la sección (Está en la descarga). 7. En el portal la sección de "posts favoritos" y "últimos posts de su interés" se le han añadido variables necesarias. En c.portal.php buscar: $query = mysql_query('SELECT p.post_id, p.post_category, p.post_title, p.post_date, p.post_puntos, p.post_private, u.user_name, 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 LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' AND '.$where.' ORDER BY p.post_id DESC LIMIT '.$pages['limit'].''); $posts['data'] = result_array($query); Al lado de p.post_id, agregar p.post_user, p.post_hits, post_comments, (respetando las comas y los espacio) Más abajo buscar: $query = mysql_query('SELECT f.fav_id, f.fav_date, p.post_id, p.post_title, p.post_date, p.post_puntos, p.post_category, p.post_private, COUNT(p_c.c_post_id) as post_comments, c.c_nombre, c.c_seo, c.c_img FROM p_favoritos AS f LEFT JOIN p_posts AS p ON p.post_id = f.fav_post_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category LEFT JOIN p_comentarios AS p_c ON p.post_id = p_c.c_post_id && p_c.c_status = \'0\' WHERE f.fav_user = \''.$tsUser->uid.'\' && p.post_status = \'0\' GROUP BY c_post_id ORDER BY f.fav_date DESC LIMIT '.$pages['limit']); $data['data'] = result_array($query); Y al lado de p.post_id, agregar p.post_user, p.post_hits, (Respetando las comas y los espacios) 8. Ahora vamos a reducir el total de posts tops en la home, serán solo 10 en vez de 15. En c.tops.php buscar la función: function getHomeTopUsersQuery($date){ Dentro de ella buscar DESC LIMIT y cambiar el numero que esta a su lado 15 por 10. Creo que no se me pasa ningún detalle xD aquí algunas capturas: Ahora lo más importante, la descarga! Descarga: directorio en dropbox con los 3 colores Y listo, eso es todo, espero les haya gustado, comenten si tienen problemas para actualizar la descarga y anotar algún fallo. Uds mismos verán todas las funciones y modificaciones que le hice al tema, la nueva sección de fotos, algunas mejoras de funciones que ya estaban, algunas mejoras en el seo como descripcion de imagenes [alt], titles, etc. Buscador, usuarios, perfil... en fin uds buceen el tema junto con los otros diseños de colores y pueden editarlos a su gusto, les dejo una demo del tema verde: http://postland.com.mx Hasta pronto, nos vemos en otro aporte, que lo disfruten. ! EDITADO [16-11-2013] FIX Captcha añadido. FIX Detalles de afiliado en la home. Por Jonvaor96 FIX Icono de categorías al agregar post . Por Vellenger FIX Barra de progreso al editar cuenta.
  4. 55 likes
    Mod Taringa Juegos 2012 Alexander1712 Bueno que más decir, desde ayer estoy con el mod. aclaro una cosita, no está hecho el bazar ni el registro, lo haré luego. * Más de 20 juegos * baner rotatorio de anuncio de juegos * juegos favoritos - agregar - quitar * lista completa de juegos * top de juegos * ayuda * licencia de uso para que no jodan los de mundijuegos.com * la página de juegos se ve para invitados (el menú no), pero si se hace click en alguna opcion pide registro. * integración de los juegos al theme de phpost, no hace un popup como taringa. * se usa server externo por tres motivos: 1 porque así se ocupa menos espacio y requisitos... 2 porque así siempre habrán jugadores parecerá super visitado tu sitio jejejeje.. 3 porque no tengo ni la más minima idea de como robarme un swf, editarlo y montar un servidor de juegos de esa forma. xD Fotos de mi mod: Descargar Mod desde Mediafire está con doble extensión, solo saquen el .alex del nombre las instrucciones están en un archivo txt igual las pongo a continuación: 1º abrir la carpeta themes de este mod, y cambiar el nombre de la carpeta nombre_de_mi_tema por el nombre de tu tema 2º abrir la carpeta inc/php/ de este mod, y abrir los archivos juegos.php e install_juegos.php que se encuentra en el raiz. modificar esto: $theme='default'; // cambiar nombre del theme si no es el default (en los dos archivos) 3º sube todos los archivos excepto el de instrucciones.txt 4º * abrir archivo htaccess y buscar: RewriteRule ^fotos/([A-Za-z0-9_-]+)/([0-9]+)/([A-Za-z0-9_-]+).html$ inc/php/fotos.php?action=ver&user=$1&fid=$2 [QSA,L][/code] * agregar debajo: [code] # juegos RewriteRule ^juegos/([A-Za-z0-9_-]+).php$ inc/php/juegos.php?action=$1 [QSA,L] [/code] [b]5º[/b] * abrir el archivo: themes\default\templates\sections\head_menu.tpl * buscar: [code]{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}[/code] * agregar debajo: [code]{if $tsUser->is_member} <li class="tabbed {if $tsPage == 'juegos'}here{/if}" id="tabbedjuegos"> <a title="Ir a Juegos!" href="{$tsConfig.url}/juegos/">Juegos <img alt="Drop Down" src="http://o2.t26.net/images/arrowdown.png"></a> </li> {/if}[/code] [b]6º[/b] * abrir el archivo: themes\default\templates\sections\head_submenu.tpl * buscar: [code] <div id="subMenuFotos" class="subMenu {if $tsPage == 'fotos'}here{/if}"> <ul class="floatL tabsMenu"> <li{if $tsAction == '' && $tsAction != 'agregar' && $tsAction != 'album' && $tsAction != 'favoritas' || $tsAction == 'ver'} class="here"{/if}><a href="{$tsConfig.url}/fotos/">Inicio</a></li> {if $tsAction == 'album' && $tsFUser.0 != $tsUser->uid}<li class="here"><a href="{$tsConfig.url}/fotos/{$tsFUser.1}">&Aacute;lbum de {$tsFUser.1}</a></li>{/if} <li{if $tsAction == 'agregar'} class="here"{/if}><a href="{$tsConfig.url}/fotos/agregar.php">Agregar Foto</a></li> <li{if $tsAction == 'album' && $tsFUser.0 == $tsUser->uid} class="here"{/if}><a href="{$tsConfig.url}/fotos/{$tsUser->nick}">Mis Fotos</a></li> </ul> <div class="clearBoth"></div> </div>[/code] * agregar debajo: [code]<div id="subMenuJuegos" class="subMenu {if $tsPage == 'juegos'}here{/if}"> <ul class="floatL tabsMenu"> <li{if $tsAction == '' && $tsAction != 'agregar' && $tsAction != 'album' && $tsAction != 'favoritas' || $tsAction == 'ver'} class="here"{/if}><a href="{$tsConfig.url}/juegos/">Inicio</a></li> <li{if $tsAction == 'juegos'} class="here"{/if}><a href="{$tsConfig.url}/juegos/juegos.php">Juegos</a></li> <li{if $tsAction == 'bazar'} class="here"{/if}><a href="{$tsConfig.url}/juegos/bazar.php">Bazar</a></li> <li{if $tsAction == 'ayuda'} class="here"{/if}><a href="{$tsConfig.url}/juegos/ayuda.php">Ayuda</a></li> </ul> <div class="clearBoth"></div> </div>[/code] [b]7º [/b]renombrar el .htaccess por .ht abrir en tu navegador: www.tuweb.com/juegos_install.php volver a renombrar el .ht por .htaccess [b]8º[/b] borrar el archivo /inc/php/juegos_install.php eso es todo amigos! cuando descubra por que no se puede robar el bazar, lo robaré y agregaré al mod. Saludos!
  5. 54 likes
    bueno amigos despues de tanto tiempo les traigo este gran mod, es la version 2 del chat que se hizo para la 1.5. tiene muchas mejoras desde el diseño hasta el consumo y demas cosas. esta basado en RISUS asi que todo el soporte sera solo para esa version, no se dara soporte si intentantan ponerlo en una version anterior. aviso: es un chat que consume(menos que el anterior) y es recomendable 100% para hosting pagos que sean robustos, fue probado de igual manera en hosting gratuitos y funciono bien pero no escapa a que si el host no se la banque la web caiga por un rato. funciones del chat: # admin y mod de la web por defecto lo son en el chat. # el admin puede dar o quitar rango en el chat a cualquier usuario. # el admin puede borrar todos los mensajes con un click. # el admin puede borrar mensajes de a uno. # el admin puede banear/reactivar. # el admin ve la lista de baneados. #el admin ve la ip en el mensaje. # el mod puede borrar mensajes de a uno. # el mod ve la ip en el mensaje. # el mod puede banear. todos los usuarios pueden cambiar el fondo del chat. los mensajes antiguos se borran solos despues de 4 hs. lo que van hacer es subir el archivo installchat.php a la raiz de su web, luego lo llaman asi http://tuweb/installchat.php/ una vez echo eso veran que en el install estan los pasos para la instalacion, de igual manera en el rar esta cada archivo en su carpeta correspondiente. Los archivos del chat deberan estar en las siguentes carpetas: c.chat.php ---->>>>> En la carpeta inc/class. chat.php ------>>>>> En la carpeta inc/php. ajax.chat.php --->>> En la carpeta inc/php/ajax. la carpeta completa chat ->>> En la carpeta themes/default/templates. la carpeta completa t.php_files_chat -->> En la carpeta themes/default/templates. t.chat.tpl --->>>>>> En la carpeta themes/default/templates el chat se veria en http://tuweb/chat/ trate de dejarlo sin errores si encuentran alguno bueno lo solucionare. lo unico que les pido es que no saquen el pequeño copy que tiene abajo de ese modo vere que valoran mi trabajo. saludos y espero que les guste. aqui los archivo http://www.mediafire...byj3qz3qlmdhh1g gracias a malvado por darme una mano.
  6. 52 likes
    Buenas gente eh venido a traer el tema identi, yo anteriormente hace mucho lo publique pero como una beta, tenia errores, en fin aca lo traje terminado y por lo que vi yo y los testers sin errores. Capturas: Descarga: http://www.mediafire.com/?pv0d1pizdx90k5d Bueno vamos con las 2 modificaciones que hay que hacer fuera de la carpeta theme, solo es en el archivo c.cuenta que esta en inc/class BUSCAN POR: ANTES LE AGREGAN: LUEGO BUSCAN POR: Y LO REEMPLAZAN POR:
  7. 50 likes
    Hola Comunidad de PHPost, Después de 7 meses del lanzamiento de la versión denominada Risus de PHPost, un usuario -cuya identidad se revelará próximamente- reportó un bug de seguridad que compromete los datos de los usuarios y la seguridad de la web en sí. Luego de una exhaustiva búsqueda de más vulnerabilidades de este índole se han detectado varias que se detallarán a continuación, junto a su respectivo fix. Básicamente lo que hay que hacer es actualizar algunas líneas y eliminar otra. Estos parches no tienen ninguna nueva función, pues su función es únicamente aplicar seguridad a algunas variables y arreglar uno que otro error en el filtrado de otras. Asimismo se han adjuntado los archivos a reemplazar en sus respectivos directorios para los que no tengan ganas de actualizar archivo por archivo y no hayan realizado ninguna modificación en el mismo. Son tres archivos de cada carpeta, nueve en total. Esta es la actualización más reciente que se le ha realizado a la plataforma y probablemente la última que se realice. Créditos: Usuario temporalmente oculto por seguridad - Por haber reportado esta falla de seguridad sin haber hecho ningún tipo de daño a PHPost ni ninguna web usando este script, este tipo de actitudes son valoradas y destacadas ya que pocas veces la gente actúa de esta manera. Isidro - Por haberme ayudado con la búsqueda de vulnerabilidades dentro de las clases y controladores. Nico - Por haberme avisado del topic y hacer pruebas en su web. inc.zip Fixes risus.txt
  8. 49 likes
    Buenas... Hace un rato el usuario Vellenger me indicó que la imagen que habitualmente aparecía como "Captcha" no se muestra en el registro de ninguna web. Comprobé si ocurría lo mismo en la demo oficial y efectivamente no funcionaba. Sin embargo, la edición que estaba programando hace unos meses sí que tiene funcionando el Captcha, ya que fue actualizado. La razón por la que no se muestra es que Google ha desactivado los anteriores enlaces donde se alojaban los archivos que Risus utiliza. La solución aplicada en la edición mencionada fue la siguiente: 1. Sobrescribir este archivo en /inc/ext/: recaptchalib.php 2. Abrir el archivo themes/{tu_plantilla}/templates/t.php_files/p.registro.form.tpl, buscar: http://api.recaptcha.net/js/recaptcha_ajax.js Y reemplazar por: http://www.google.com/recaptcha/api/js/recaptcha_ajax.js En teoría, eso sería suficiente para que la imagen volviera a aparecer y el registro vuelva a funcionar. La descarga del script también ha sido actualizada. Hasta otra
  9. 49 likes
    Hola a todos les comparto mi nueva creación... Como saben ya había mostrado avances pero les traigo la definitiva, está totalmente terminada y muy fácil de editar! SECCIONES INCLUIDAS Posts recientes Carrousel de 5 posts destacados (los 5 primeros de la semana) Posts destacados (los mejores de los últimos 15 días) Fotos recientes Portal con publicaciones de los seguidores Muro del perfil con las publicaciones de su respectivo usuario Notificaciones recientes Mensajes privados Mantenimiento de la web Suspensión de usuario DE LOS POSTS Votar post (puntos) Recomendar el post (en la página y redes sociales) Agregar a favoritos Comentar DE LAS FOTOS Votar foto (me gusta o no me gusta) Comentar DEL PERFIL Y PORTAL Compartir publicación portal/muro Seguir/Dejar de seguir usuario Me gusta en las publicaciones Comentar publicaciones DE LOS MENSAJES Responder mensajes CARACTERÍSTICAS No tiene logo, es el título de la web con un estilo personalizado Contiene scroll infinito en secciones como últimos posts, fotos, posts relacionados, perfil y portal Se ajusta automáticamente al tamaño de la pantalla del dispositivo detectado Tanto los avatares de los usuarios como los iconos de las categorías los tomará de la versión desktop Se puede volver a la versión de escritorio en cache por un (1) día, al terminar las 24 horas te redirige a la versión mobile o con el botón de "entrada" que te muestra la web en el header Las imágenes de portada de los posts son extraídas del contenido del post automáticamente y comprimidas para ahorrar carga Reducción parcial del paquete de instalación de 0.58Mb versus la de Risus 2.12Mb (Reducción de archivos de un 72%) Reducción de tiempo de carga de un 82% Test de velocidad en Postland vía Pingdom Website Speed Test VERSIÓN DESKTOP VERSIÓN MOBILE Se puede notar la gran diferencia tanto en velocidad de carga como tamaño de página, archivos y peticiones. IMAGENES (Tomadas desde Samsumg Galaxy Spica) INSTALACIÓN Dentro del zip de descarga se encuentra un archivo .html con la instalación completa del mod, sin embargo la colocaré a continuación: 1) Generar la siguiente consulta: ALTER TABLE `w_configuracion` ADD `mobile` TINYTEXT NOT NULL AFTER `url`; 2) En el archivo header.php buscar: // Limpiar variables... cleanRequest(); Agregar debajo: // Salir de version mobil por 1 dia if(isset($_GET['mobile'])){setcookie('mobile', $_GET['mobile'], time() + 86400);} Al final de ese mismo archivo agregar: if($tsCore->settings['isMobile']) { echo '<div style="background: #B8DCFF;width: 100%;overflow: hidden;font-size: 15px;padding: 16px;color: #000;text-align: center;">Navega mejor por '.$tsCore->settings['titulo'].' en nuestra versión mobile <a class="mBtn btnOk" href="'.$tsCore->settings['mobile'].'" onclick="document.cookie = \'mobile=;expires=Thu, 01 Jan 1970 00:00:01 GMT;\'">Entrar</a></div>'; } 3) En c.core.php buscar: function tsCore() Agregar arriba: public function isMobile() { $mobiles = array( "midp", "240x320", "blackberry", "netfront", "nokia", "panasonic", "portalmmm", "sharp", "sie-", "sonyericsson", "symbian", "windows ce", "windows phone", "benq", "mda", "mot-", "opera mini", "philips", "pocket pc", "sagem", "samsung", "sda", "sgh-", "vodafone", "xda", "iphone", "android" ); foreach($mobiles as $mobileClient) { if (strstr(strtolower($_SERVER['HTTP_USER_AGENT']), $mobileClient)) return true; } return false; } Mas abajo buscar: $this->settings['novemods'] = $this->getNovemods(); Agregar debajo: $this->settings['isMobile'] = $this->isMobile(); Mas abajo buscar: function getTema() { Agregar debajo: if($this->isMobile() && !empty($this->settings['mobile']) && empty($_COOKIE['mobile']) && empty($_GET['mobile'])) { header('Location: '.$this->settings['mobile'].$_SERVER['REQUEST_URI']); } 4) En c.admin.php buscar: 'url' => $tsCore->setSecure($tsCore->parseBadWords($_POST['url'])), Agregar debajo: 'mobile' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mobile'])), Mas abajo buscar: `url` = \'' . $c['url'] . '\', Agregar al lado: `mobile` = \'' . $c['mobile'] . '\', 5) En templates/admin_mods/m.admin_configs.tpl buscar: <dl> <dt><label for="ai_url">Dirección del sitio:</label></dt> <dd><input type="text" id="ai_url" name="url" maxlength="32" value="{$tsConfig.url}" /></dd> </dl> Agregar debajo: <dl> <dt><label for="mobile">Dirección del sitio para móviles:</label></dt> <dd><input type="text" id="mobile" name="mobile" maxlength="40" value="{$tsConfig.mobile}" /></dd> </dl> 6) Copiar el archivo config.inc.php de tu web a la carpeta donde se descomprimió los archivos del mod Risus Mobile. Ahora dependiendo de como quieren que se ejecute el mod Risus Mobile, sea en subdominio m.tuweb o lo tengan en una carpeta tuweb/mobile/, deberás descomprimir el zip descargado y dentro encontraras la carpeta themes como si fuera Risus normal, dentro de ella habráotra carpeta llamada default y si el tema que tienes ES DIFERENTE AL DEFAULT tendrás que cambiarle el nombre exactamente igual al nombre de la carpeta del tema que tengas instalado en tu web principal. Ejemplo, si en mi web principal tengo el theme KM-Tronos azul y su carpeta es themes/KM-Tronos_b entonces en la carpeta del mod mobile cambiare el nombre de la carpeta themes/default a themes/KM-Tronos_b para que asi se ajuste cada tema a ambas versiones de la web. Si deseas crear tu propio tema dependiendo del que tengas en la web principal, solo debes duplicar la carpeta default, cambiarle el nombre al del teme que tienes y editar el css y los tpls que quieras para hacer tu diseño acorde al theme que tengas, no está de más recordar que el tema que hice es el de Taringa!. Esa anterior instalación es mas que todo para activar en tu web su versión mobile Obviamente si no hay url, al entrar con un celular o tablet, no redireccionará a ningún lado. CRÉDITOS aperpen Por su función para detectar modelos de los dispositivos. Vellenger Por compartir Timthumb para comprimir las imágenes de portadas de los posts. Me ayudó a optimizar la función de extraer la portada del cuerpo de los posts. kevinzonaa Me ayudó a testear la web en distintos celulares. DEMO Puedes acceder desde tu celular a http://www.postland.com.mx/ que te redirecciona a http://m.postland.com.mx/ ACTUALIZACIONES 22/06/2014 - Etiqueta <meta> para adaptación de diseño a distintas resoluciones. 24/06/2014 - Enlace a sitio desktop (y no mobile) en los shares facebook, twitter y google. 22/07/2014 - Fix vídeos en posts: 26/07/2014 - Fix notificación: "La publicación que has solicitado no existe" DESCARGA risus_mobile V2.3.zip (515Kb) http://www.phpost.net/?showtopic=28313 Espero les guste el mod y comenten sus sugerencias, criticas, recomendaciones y obviamente si encuentran bugs. Nos vemos en otro aporte, disfrútenlo!
  10. 47 likes
    Importante! Ésta versión está desactualizada, para instalar la nueva versión entra a este tema: http://www.phpost.net/index.php?showtopic=28557 _____________________________________________________________________________________________________________ Hola, esta es la segunda versión del editor wysiwyg y posiblemente la última si no se encuentran fallos graves. Para los que ya habían instalado el anterior mod, sugiero realizar toda la instalación otra vez aunque parezca que ya lo habéis hecho. Actualización 16/12/2013 a las 02:10 - Se actualizó la descarga, faltaba el archivo iupload.php (necesario). 16/12/2013 a las 02:15 - Se actualizó la descarga, faltaba el archivo Instrucciones.txt. 16/12/2013 a las 19:57 - Se actualizó el complemento, nueva descarga, se actualizan: wysibb.js y wysibb.css (necesario). 16/12/2013 a las 20:09 - Se actualizó la instalación, añadida una nueva modificación en el paso 2 (necesario). 18/12/2013 a las 14:21 - Se actualizó la descarga (wysibb.js), error en tamaño de fuente corregido. 01/07/2014 a las 23:58 - Se actualizó la descarga (wysibb.js), corrección temporal para los interrogantes. 09/07/2014 a las 18:31 - Se actualizó la descarga (wysibb.js), añadido fix de Goear. Mejoras de la versión Se han corregido cerca de 30 errores menores. Todos los bbcodes funcionan al 100% Se ha añadido el editor a los mensajes y comentarios. Se han agregado nuevos bbcodes. Los vídeos de YouTube ahora funcionan con SSL. Y muchas más cosas que iré poniendo cuando me acuerde xD Instalación: Paso 1 - Descargar y subir archivos necesarios. Descargar el archivo wysiwyg_beta_v1.2.1.zip, extraer su contenido y subir el contenido de los directorios extraídos en el lugar que se indica en las instrucciones. Paso 2 - Incluir archivos necesarios para el funcionamiento del editor. Abrir el archivo main_header.tpl y agregar: <link href="{$tsConfig.css}/wysibb.css" rel="stylesheet" type="text/css" /> debajo de: <link href="{$tsConfig.tema.t_url}/extras.css" rel="stylesheet" type="text/css" /> Después, en el mismo archivo, agregar: <script src="{$tsConfig.js}/wysibb.js" type="text/javascript"></script> debajo de: <script src="{$tsConfig.js}/funciones.js" type="text/javascript"></script> Por último, añadir: {literal} $(document).ready(function() { var comments = { buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link,|,fontcolor,fontsize,fontfamily,|,bullist,numlist,spoiler,table,|,left,center,right,|,quote,code,goear,swf,|,removeFormat", resize_maxheight: 400, } var messages = { buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link,|,removeFormat", resize_maxheight: 400, } $("#wysibb").wysibb(); $("#respuesta").wysibb(messages); $("#body_comm").wysibb(comments); }); {/literal} antes de: </script> </head> Paso 3 - Sustituir el editor actual. Abrir el archivo m.agregar_form.tpl, buscar: <textarea id="markItUp" name="cuerpo" tabindex="2" style="min-height:400px;" class="required">{$tsDraft.b_body}</textarea> <div style="margin:10px 0 0;">{include file='modules/m.global_emoticons.tpl'}</div> y sustituirlo por: <textarea id="wysibb" name="cuerpo" tabindex="2" style="min-height:400px;" class="required">{$tsDraft.b_body}</textarea> (sí, se ha eliminado una línea) Después, abrir el archivo m.posts_comments_form.tpl, buscar: <textarea id="body_comm" class="onblur_effect autogrow" tabindex="1" title="Escribir un comentario..." style="resize:none;" onfocus="onfocus_input(this)" onblur="onblur_input(this)">Escribir un comentario...</textarea> y sustituirlo por: <textarea id="body_comm" class="onblur_effect autogrow" tabindex="1" title="" style="height: 100px; resize: none;" onfocus="onfocus_input(this)" onblur="onblur_input(this)"></textarea> (se ha vaciado title="", borrado el texto antes de </textarea> y agregado height: 100px; al style="") En el mismo archivo, buscar: <div class="floatR"> <a href="#" onclick="moreEmoticons(true); return false;" class="floatR" id="moreemofn"> M&aacute;s emoticones</a> </div> {include file='modules/m.global_emoticons.tpl'} y borrarlo. Finalmente, abrir m.mensajes_leer.tpl y buscar: <textarea id="respuesta" onfocus="onfocus_input(this)" onblur="onblur_input(this)" title="Escribe una respuesta..." class="autogrow onblur_effect">Escribe una respuesta...</textarea> y sustituirlo por: <textarea id="respuesta" style="height: 100px;" onfocus="onfocus_input(this)" onblur="onblur_input(this)" title="" class="autogrow onblur_effect"></textarea> (se ha vaciado title="", borrado el texto antes de </textarea> y añadido style="height: 100px;") Paso 4 - Editar el JavaScript para adaptar las funciones del editor. Abrir el archivo m.agregar_javascript.tpl y buscar: obj = $(obj).parent().parent().parent(); y sustituir por: obj = $(obj).parent().parent(); (hay dos líneas así, se sustituyen las dos) Después, en el mismo archivo, buscar: function save_borrador(){ agregar debajo: wysi.on(); y antes de que cierre la función (antes del "}" de la línea 85 en el tema default), añadir: wysi.off(); Debería quedar algo así: function save_borrador(){ wysi.on(); <CONTENIDO DE LA FUNCIÓN> wysi.off(); } Después, aún en el mismo archivo, buscar: function postSave() { y debajo agregar: wysi.on(); Por último en este archivo, antes de: </script> {/literal} agregar: $(function() { $(window).scroll(function() { var position = $('.wysibb').offset(), y = position.top, h = $('.wysibb').height(), yh = y + h, w = $('.wysibb').width() - 47; var th = $('.wysibb-toolbar').height(), pad = $('.wysibb-toolbar').height(); if(window.pageYOffset > y && window.pageYOffset < yh) { $('.wysibb-toolbar').css({'position':'fixed', 'top':'0', 'width':w, 'height':th}); $('#wysibb, .wysibb-body').addClass('padtop'); }else { $('.wysibb-toolbar').removeAttr('style'); $('#wysibb, .wysibb-body').removeClass('padtop'); } }); }); Ahora, abrir acciones.js y buscar: if($('#body_comm') && !$('#markItUpbody_comm').length){ $('#body_comm').markItUp(mySettings_cmt); } y borrarlo. En el mismo archivo, buscar: mydialog.buttons(true, true, 'Enviar', 'mensaje.enviar(0)', true, true, true, 'Cancelar', 'close', true, false); mydialog.center(); y agregar debajo: var messages = {buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link,|,removeFormat",resize_maxheight: 400,} $('#msg_body').wyisbb(messages); Un poco más abajo, buscar: enviar: function (enviar){ debajo agregar: wysi.on('msg_body'); y antes de que cierre la función (antes de "},"), agregar: wysi.off('msg_body'); Quedaría algo así: Por último, siguiendo en el mismo archivo y dentro de la misma variable, buscar: responder: function(mp_id){ debajo agregar: wysi.on('respuesta'); después, dentro de la función buscar: $('#respuesta').val(''); // LIMPIAMOS y agregar debajo: $('.wysibb-body').html(''); y antes de cerrar la función (antes de "},"), agregar: wysi.off('respuesta'); Debería quedar así: Ahora, abrir el archivo funciones.js y buscar la función: nuevo: function(mostrar_resp, comentarionum){ debajo agregar: wysi.on('body_comm'); y antes de que termine la función (antes de "},"), agregar: wysi.off('body_comm'); Así es como debe quedar: Por último, en el mismo archivo buscamos la función: preview: function(id, type){ y debajo agregar: wysi.on('body_comm'); y antes de que termine la función (antes de "},"), agregar: wysi.off('body_comm'); Así es como debe quedar: Paso 5 - Añadir nuevos bbcodes en PHP Abrir el archivo bbcode.inc.php, buscar: public $restriction = Array("url", "code", "quote", "quotePHPost", "font", "size", "color", "img", "b", "i", "u", "align", "spoiler", "swf", "goear", "hr", "li"); y añadir antes de ");" esto: , "s", "sub", "sup", "table", "td", "tr", "ul", "ol", "li", "notice", "info", "warning", "error", "success" En el mismo archivo, buscar: array("name" => "b","pre" => "<b>","suf" => "</b>"), y debajo añadir: array("name" => "s","pre" => "<s>","suf" => "</s>"), array("name" => "sub","pre" => "<sub>","suf" => "</sub>"), array("name" => "sup","pre" => "<sup>","suf" => "</sup>"), array("name" => "table","pre" => "<table class=\"bbctab\"><tbody>","suf" => "</tbody></table>"), array("name" => "tr","pre" => "<tr>","suf" => "</tr>"), array("name" => "td","pre" => "<td>","suf" => "</td>"), array("name" => "ul","pre" => "<ul class=\"bbclist\">","suf" => "</ul>"), array("name" => "ol","pre" => "<ol class=\"bbclist\">","suf" => "</ol>"), array("name" => "li","pre" => "<li>","suf" => "</li>"), array("name" => "notice","pre" => "<div class=\"bbcmsg notice\">","suf" => "</div>"), array("name" => "info","pre" => "<div class=\"bbcmsg info\">","suf" => "</div>"), array("name" => "warning","pre" => "<div class=\"bbcmsg warning\">","suf" => "</div>"), array("name" => "error","pre" => "<div class=\"bbcmsg error\">","suf" => "</div>"), array("name" => "success","pre" => "<div class=\"bbcmsg success\">","suf" => "</div>"), Para acabar la instalación, abrir el archivo c.core.php y buscar: case 'normal': en el array que tiene debajo: $parser->restriction = array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 'align', 'spoiler', 'swf', 'goear', 'hr', 'li'); añadir antes de ");" esto: , 's', 'sup', 'sub', 'table', 'tr', 'td', 'ul', 'ol', 'li', 'notice', 'info', 'warning', 'error', 'success' Y por fin tienes instalado el editor Demo y capturas: Demo: wysibb.rcdesign.es Usuario: demo Contraseña: demo123
  11. 46 likes
    Hola amigos de PHPost hoy les traigo al tema de taringa v5 identico solo le faltan las funciones como los novatos y destacados para que quede identico Mi idea no era hacer una plantilla (lol) si no hacer una copia de taringa en diseño para una mejor experincia en sus webs bueno sin mas preambulos Caps Desconectado Login menu usuario bueno notaran que los menus admin y mod no estan en los menus como suele ser comunmente yo pienso que es mas eficas ponerlo en el menu de usuario ya que es algo segun el rango Perfil Posts que tal si dejamos de poner caps ahora vamos a grano +info bueno el tema no es del todo mio tambien use un archivo css del tema v5 de To-Up y tambien algunos tpl extras Creditos: T0-UP Y YO Link: www.mediafire.com/?m2uzr96skvi2ril espero lo disfruten y que no hagan malas criticas como algunos users icieron en mi topic de Titan-Time Gracias y espero +1
  12. 45 likes
    Bueno gente vengo con casi nada de tiempo a publicar la plantilla. Bueno esta v5 es básicamente la anterior mía pero fixeada 100% y con algunas pequeñas mejoras, tmb modifique cosas que no les gustaron . me limitare a dejar solo una cap, ya vieron como era la otra, y como dije esta es básicamente la otra pero arregle absolutamente todos los errores que había. BUENO AHORA ATENTOS CON ESTO CUANDO BAJEN EL ARCHIVO VERAS 2 CARPETAS, UNA ES THEMES Y LA OTRA TEMAS, SUBAN AMBAS, LA CARPETA TEMAS SOLO TIENE UNAS POCAS IMÁGENES QUE LAS PUSE AHÍ PARA DISTINGUIR MI ESTA V5 DE OTRAS Mediafire QUIERO DESTACAR EL GRAN TRABAJO DE Cinthy, Juan55667 , Manutripero y de chetinga y un poco de drake o ivan como le quieran llamar. por aver testeado por muchos dias y muchas veces la v5. BUENO EN REALIDAD QUERÍA SEGUIRLA UN POCO MAS, PERO EN ESTOS DÍAS ME IRÉ DE VACACIONES UNOS 15 DÍAS EN LOS CUALES NO CREO HACER NINGÚN TRABAJO Y CREO QUE DEJARLA TIRADA OTROS 15 DÍAS MAS NO DABA, ASÍ QUE TERMINE LOS PEQUEÑOS ERRORES QUE AUN QUEDABAN Y SE LAS VINE A DEJAR, TAMBIÉN ACLARO QUE NO ME INTERESA SI LA USAN O NO ANTES ME HUBIERA INTERESADO PERO VIENDO LOS COMENTARIOS DE VARIOS USUARIOS LA VERDAD QUE DAN GANAS DE LARGAR TODO JEJE, PERO BUENO SIGO PORQUE A PESAR DE QUE HAY MUCHOS NOOB QUE ANDAN POR AHÍ COMENTANDO SIN SABER TMB HAY OTROS QUE SI SON PENSANTES Y QUE SON PERSONAS DIGNAS DE CONFIANZA, POR ESTOS POCOS SON POR LO QUE SIGO AHORA SI UN SALUDO HASTA LA PRÓXIMA GENTE.
  13. 43 likes
    Hola, a principios de este años libere la plantilla en mi sitio pero por razones que ahora no existen no pude publicarla por aqui como me hubiera gustado mas que nada como respaldo si algun dia yo dejo de seguir con mi proyecto, en fin ahora que ya puedo lo hago esperando que les guste y disfruten de una versión gratuita de calidad, solo pide se respete mi copyright que simplemente dirige a mi sitio y bueno no creo que sea competencia para ustedes ya que mi web no se dedica a la pirateria y esas cosas tenemos porno pero ese ya es otro tema, entonces les dejo el link. http://www.mediafire.com/download/rfywu2gs8g2623w/Taringa-V5.zip PD: No me digan que ya hay muchas v5 porque en realidad todas se basan en la mia y puedo comprobarlo las unicas que habia diferentes las hicieron 2 usuarios que ya no estan con nosotros (no estan muertos, aclaro jeje) ya que se fueron del foro porque ellos si tenian una vida social. Ni tampo que no se hacer otra cosa jaja creanme que ideas y plantillas tengo de sobra pero desgraciadamente las vendo para mantener a mis hijos que desgraciadamente son ninfomanos y como sabrán las mujerzuelas no son nada barratas ni crecen en los arboles. Las ultimas lineas no estan dirigidas a nadie en especial a si que no me jodan si creen que son para ustedes, no creo que sean tan importantes para mi como para dedicarselas que les quede claro vale.
  14. 43 likes
    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)
  15. 41 likes
    Hola amigos de PHPost, les traigo un theme al cuál le he estado dando vueltas por mucho tiempo. No es una obra maestra pero creo que es lo que puedo dar. MEGABlog V1.0 Es un theme basado en el sitio web de alojamientos Mega.co.nz, es un theme que dejé de trabajarlo por 5 meses pero cuando MEGA actualizó su diseño, me dio el impulso para continuar con el theme. ¿Porqué V1.0? Por que tal vez muchos me notifiquen bugs y tenga que corregirlos y puedan tener un mejor theme. ¿Serán compatibles con las comunidades? No creo, no las he probado en éste theme. Puede que es un futuro saque una adaptación. ¿Qué paso con la versión móvil? Aún no la termino, puede que para el Sábado o Domingo la éste publicando. ¿La edición de éste theme es por completo? No, estimo que está editado un 75%. No se preocupen que la razón que no he editado es por que estoy pensando qué hacer con las otras secciones. ¿Cuales son ésas secciones? Mi, Top's, Fotos, Buscador (Tengo una buena idea para ésta sección), Moderación (Que no creo que deba editarla), Historial y los Pages (es decir, términos y condiciones, Report Abuse, etc). Bueno, primero hay que mostrarles las capturas algunas cosas. Home (Dejo un enlace ya que la imagen es grande): http://i.imgur.com/x7nCbDQ.jpg Posts (Sin portada de post): Post (Con portada de post): Perfil: Y la administración: Hay mas pero las tienes si las pongo todas va a demorar en cargar éste articulo. Bueno ahora lo que tienen que hacer para que funcione correctamente. Instalación: 1º - Subir el archivo c.post.php en inc/class: link de descarga https://mega.co.nz/#...ubl-tO7menE67T8 luego abren c.cuenta.php en inc/php y buscan (OJO LO HAGO ASI SUPONIENDO QUE NO HAN EDITADO NADA DE SU WEB Y TAMBIEN PARA QUE NO SE LES COMPLIQUE): u.user_baneado, p.user_sexo, y reemplazan por: u.user_baneado, p.user_sexo, p.p_fondoper, Buscar en c.cuenta.php: 'sitio' => $tsCore->setSecure($tsCore->parseBadWords($_POST['sitio']), true), y agregar abajo: 'fondoper' => $tsCore->setSecure($tsCore->parseBadWords($_POST['fondoper']), true), luego van al SQL de su host y hacen ésta consulta: ALTER TABLE p_posts ADD post_cover VARCHAR( 250 ) NOT NULL; también: ALTER TABLE u_perfil ADD p_fondoper VARCHAR( 250 ) NOT NULL; Y LISTO, CREO... Bueno ahora la instalación del theme... bueno la carpeta se llama default. solo reemplacen la carpeta por la de theme MEGABlog y se van a la carpeta cache en la raíz del servidor y borran todo el contenido (OJO es importante para que se vea bien el theme sino se va a ver algo raro el theme.) Bueno ahora la descarga: Enlace: MEGA.CO.NZ Espero les guste...
  16. 41 likes
    Hola chicos, xD bueno si después de hacerlos esperar mucho tiempo acá les traigo el mod de videos . Algunos dirán otros . Sin mas que decir les explico para que se entienda voy a ir separandólos por carpetas osea así inc/class todo los archivos a editar en esa carpeta ok? ///* inc/class *\\\ 1) abrimos el archivo c.admin.php a) buscan /****************** ADMINISTRACIÓN DE NOTICIAS ******************/ arriba de eso ponen esto /****************** ADMINISTRACIÓN DE VIDEOS ******************/ function GetAdminVideos() { global $tsCore; // $max = 15; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); // $query = mysql_query('SELECT u.user_id, u.user_name, v.* FROM v_videos AS v LEFT JOIN u_miembros AS u ON v.vid_user = u.user_id WHERE v.vid_id > \'0\' ORDER BY v.vid_id DESC LIMIT ' . $limit); // $data['data'] = result_array($query); // PAGINAS $query = mysql_query('SELECT COUNT(*) FROM v_videos WHERE vid_id > \'0\''); list($total) = mysql_fetch_row($query); $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . "/admin/videos?", $_GET['s'], $total, $max); // return $data; } function DelVideo() { // $video = intval($_POST['vid_id']); if (mysql_num_rows(mysql_query('SELECT vid_id FROM `v_videos` WHERE vid_id = \'' . (int)$video . '\''))) { if (mysql_query('DELETE FROM v_videos WHERE vid_id = \'' . (int)$video . '\'')) { return '1: Video eliminado'; } else return '0: El video no se pudo eliminar'; } else return '0: El video no existe'; } function setOpenClosedVideo() { global $tsUser; $query = mysql_query('SELECT vid_closed FROM v_videos WHERE vid_id = \'' . (int)$_POST['vid'] . '\''); $data = mysql_fetch_assoc($query); // COMPROBAMOS if ($data['vid_closed'] == 1) { if (mysql_query('UPDATE v_videos SET vid_closed = \'0\' WHERE vid_id = \'' . (int) $_POST['vid'] . '\'')) { return '2: Comentarios abiertos'; } else return '0: Ocurri&amp;oacute, un error'; } elseif ($data['v_closed'] == 0) { if (mysql_query('UPDATE v_videos SET vid_closed = \'1\' WHERE vid_id = \'' . (int) $_POST['vid'] . '\'')) { return '1: Comentarios cerrados.'; } else return 'Ocurrió un error'; } } function setShowHideVideo() { global $tsUser; $query = mysql_query('SELECT vid_status FROM v_videos WHERE vid_id = \'' . (int)$_POST['vid'] . '\''); $data = mysql_fetch_assoc($query); // COMPROBAMOS if ($data['vid_status'] == 1) { if (mysql_query('UPDATE v_videos SET vid_status = \'0\' WHERE vid_id = \'' . (int) $_POST['vid'] . '\'')) { return '2: Video rehabilitado'; } else return '0: Ocurri&amp;oacute, un error'; } elseif ($data['vid_status'] == 0) { if (mysql_query('UPDATE v_videos SET vid_status = \'1\' WHERE vid_id = \'' . (int) $_POST['vid'] . '\'')) { return '1: Video deshabilitado.'; } else return 'Ocurrió un error'; } } buscan function GetAdminStats() { $num = mysql_fetch_assoc(mysql_query('SELECT COUNT(DISTINCT m.user_id) AS usuarios_activos, COUNT(DISTINCT s.user_id) AS usuarios_totales, COUNT(DISTINCT p.post_id) AS stats_posts, COUNT(DISTINCT f.foto_id) AS stats_fotos, COUNT(DISTINCT c.cid) AS comentarios_fotos, COUNT(DISTINCT fc.cid) AS stats_foto_comments FROM u_miembros AS u LEFT JOIN p_posts AS p ON u.user_id = p.post_user &amp;&amp; p.post_status = \'0\' LEFT JOIN f_fotos AS f ON u.user_id = f.f_user &amp;&amp; f.f_status = \'0\' LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user &amp;&amp; c.c_status = \'0\' LEFT JOIN f_comentarios AS fc ON u.user_id = fc.c_user WHERE u.user_activo = \'1\' &amp;&amp; u.user_baneado = \'0\' ')); $num = mysql_fetch_assoc(mysql_query('SELECT (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fotos_eliminadas, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'1\') as fotos_ocultas, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'0\') as fotos_visibles, (SELECT count(post_id) FROM p_posts WHERE post_status = \'0\') as posts_visibles, (SELECT count(post_id) FROM p_posts WHERE post_status = \'1\') as posts_ocultos, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as posts_eliminados, (SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as posts_revision, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'0\') as comentarios_posts_visibles, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'1\') as comentarios_posts_ocultos, (SELECT count(user_id) FROM u_miembros WHERE user_activo = \'1\') as usuarios_activos, (SELECT count(user_id) FROM u_miembros WHERE user_activo = \'0\' ) as usuarios_inactivos, (SELECT count(user_id) FROM u_miembros WHERE user_baneado = \'1\' ) as usuarios_baneados, (SELECT count(cid) FROM f_comentarios) as comentarios_fotos_total, (SELECT count(follow_id) FROM u_follows WHERE f_type = \'1\' ) AS usuarios_follows, (SELECT count(follow_id) FROM u_follows WHERE f_type = \'2\' ) AS posts_follows, (SELECT count(follow_id) FROM u_follows WHERE f_type = \'3\' ) AS posts_compartidos, (SELECT count(fav_id) FROM p_favoritos) AS posts_favoritos, (SELECT count(mr_id) FROM u_respuestas) AS usuarios_respuestas, (SELECT count(mp_id) FROM u_mensajes) AS mensajes_total, (SELECT count(mp_id) FROM u_mensajes WHERE mp_del_to = \'1\') AS mensajes_de_eliminados, (SELECT count(mp_id) FROM u_mensajes WHERE mp_del_from = \'1\') AS mensajes_para_eliminados, (SELECT count(bid) FROM p_borradores) AS posts_borradores, (SELECT count(bid) FROM u_bloqueos) AS usuarios_bloqueados, (SELECT count(bid) FROM u_bloqueos) AS usuarios_bloqueados, (SELECT count(medal_id) FROM w_medallas WHERE m_type = \'1\') AS medallas_usuarios, (SELECT count(medal_id) FROM w_medallas WHERE m_type = \'2\') AS medallas_posts, (SELECT count(medal_id) FROM w_medallas WHERE m_type = \'3\') AS medallas_fotos, (SELECT count(id) FROM w_medallas_assign) AS medallas_asignadas, (SELECT count(aid) FROM w_afiliados WHERE a_active = \'1\') AS afiliados_activos, (SELECT count(aid) FROM w_afiliados WHERE a_active = \'0\') AS afiliados_inactivos, (SELECT count(pub_id) FROM u_muro) AS muro_estados, (SELECT count(cid) FROM u_muro_comentarios) AS muro_comentarios ')); $num['usuarios_total'] = $num['usuarios_activos'] + $num['usuarios_inactivos'] + $num['usuarios_baneados']; $num['seguidos_total'] = $num['posts_follows'] + $num['usuarios_follows']; $num['muro_total'] = $num['muro_estados'] + $num['muro_comentarios']; $num['afiliados_total'] = $num['afiliados_activos'] + $num['afiliados_inactivos']; $num['posts_total'] = $num['posts_visibles'] + $num['posts_ocultos'] + $num['posts_eliminados']; $num['comentarios_posts_total'] = $num['comentarios_posts_visibles'] + $num['comentarios_posts_ocultos']; $num['medallas_total'] = $num['medallas_usuarios'] + $num['medallas_posts'] + $num['medallas_fotos']; $num['fotos_total'] = $num['fotos_visibles'] + $num['fotos_ocultas'] + $num['fotos_eliminadas']; lo remplazan por esto function GetAdminStats() { $num = mysql_fetch_assoc(mysql_query('SELECT COUNT(DISTINCT m.user_id) AS usuarios_activos, COUNT(DISTINCT s.user_id) AS usuarios_totales, COUNT(DISTINCT p.post_id) AS stats_posts, COUNT(DISTINCT f.foto_id) AS stats_fotos, COUNT(DISTINCT v.vid_id) AS stats_videos, COUNT(DISTINCT c.cid) AS comentarios_videos, COUNT(DISTINCT fc.cid) AS stats_foto_comments FROM u_miembros AS u COUNT(DISTINCT vc.cid) AS stats_video_comments FROM u_miembros AS u LEFT JOIN p_posts AS p ON u.user_id = p.post_user &amp;&amp; p.post_status = \'0\' LEFT JOIN f_fotos AS f ON u.user_id = f.f_user &amp;&amp; f.f_status = \'0\' LEFT JOIN v_videos AS v ON u.user_id = v.vid_user &amp;&amp; v.vid_status = \'0\' LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user &amp;&amp; c.c_status = \'0\' LEFT JOIN f_comentarios AS fc ON u.user_id = fc.c_user WHERE u.user_activo = \'1\' &amp;&amp; u.user_baneado = \'0\' LEFT JOIN v_comentarios AS vc ON u.user_id = vc.c_user WHERE u.user_activo = \'1\' &amp;&amp; u.user_baneado = \'0\' ')); $num = mysql_fetch_assoc(mysql_query('SELECT (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fotos_eliminadas, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'1\') as fotos_ocultas, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'0\') as fotos_visibles, (SELECT count(vid_id) FROM v_videos WHERE vid_status = \'2\') as videos_eliminados, (SELECT count(vid_id) FROM v_videos WHERE vid_status = \'1\') as videos_ocultos, (SELECT count(vid_id) FROM v_videos WHERE vid_status = \'0\') as videos_visibles, (SELECT count(post_id) FROM p_posts WHERE post_status = \'0\') as posts_visibles, (SELECT count(post_id) FROM p_posts WHERE post_status = \'1\') as posts_ocultos, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as posts_eliminados, (SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as posts_revision, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'0\') as comentarios_posts_visibles, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'1\') as comentarios_posts_ocultos, (SELECT count(user_id) FROM u_miembros WHERE user_activo = \'1\') as usuarios_activos, (SELECT count(user_id) FROM u_miembros WHERE user_activo = \'0\' ) as usuarios_inactivos, (SELECT count(user_id) FROM u_miembros WHERE user_baneado = \'1\' ) as usuarios_baneados, (SELECT count(cid) FROM f_comentarios) as comentarios_fotos_total, (SELECT count(cid) FROM v_comentarios) as comentarios_videos_total, (SELECT count(follow_id) FROM u_follows WHERE f_type = \'1\' ) AS usuarios_follows, (SELECT count(follow_id) FROM u_follows WHERE f_type = \'2\' ) AS posts_follows, (SELECT count(follow_id) FROM u_follows WHERE f_type = \'3\' ) AS posts_compartidos, (SELECT count(fav_id) FROM p_favoritos) AS posts_favoritos, (SELECT count(mr_id) FROM u_respuestas) AS usuarios_respuestas, (SELECT count(mp_id) FROM u_mensajes) AS mensajes_total, (SELECT count(mp_id) FROM u_mensajes WHERE mp_del_to = \'1\') AS mensajes_de_eliminados, (SELECT count(mp_id) FROM u_mensajes WHERE mp_del_from = \'1\') AS mensajes_para_eliminados, (SELECT count(bid) FROM p_borradores) AS posts_borradores, (SELECT count(bid) FROM u_bloqueos) AS usuarios_bloqueados, (SELECT count(bid) FROM u_bloqueos) AS usuarios_bloqueados, (SELECT count(medal_id) FROM w_medallas WHERE m_type = \'1\') AS medallas_usuarios, (SELECT count(medal_id) FROM w_medallas WHERE m_type = \'2\') AS medallas_posts, (SELECT count(medal_id) FROM w_medallas WHERE m_type = \'3\') AS medallas_fotos, (SELECT count(medal_id) FROM w_medallas WHERE m_type = \'4\') AS medallas_videos, (SELECT count(id) FROM w_medallas_assign) AS medallas_asignadas, (SELECT count(aid) FROM w_afiliados WHERE a_active = \'1\') AS afiliados_activos, (SELECT count(aid) FROM w_afiliados WHERE a_active = \'0\') AS afiliados_inactivos, (SELECT count(pub_id) FROM u_muro) AS muro_estados, (SELECT count(cid) FROM u_muro_comentarios) AS muro_comentarios ')); $num['usuarios_total'] = $num['usuarios_activos'] + $num['usuarios_inactivos'] + $num['usuarios_baneados']; $num['seguidos_total'] = $num['posts_follows'] + $num['usuarios_follows']; $num['muro_total'] = $num['muro_estados'] + $num['muro_comentarios']; $num['afiliados_total'] = $num['afiliados_activos'] + $num['afiliados_inactivos']; $num['posts_total'] = $num['posts_visibles'] + $num['posts_ocultos'] + $num['posts_eliminados']; $num['comentarios_posts_total'] = $num['comentarios_posts_visibles'] + $num['comentarios_posts_ocultos']; $num['medallas_total'] = $num['medallas_usuarios'] + $num['medallas_posts'] + $num['medallas_videos'] + $num['medallas_fotos']; $num['fotos_total'] = $num['fotos_visibles'] + $num['fotos_ocultas'] + $num['fotos_eliminadas']; $num['videos_total'] = $num['videos_visibles'] + $num['videos_ocultos'] + $num['videos_eliminados']; 2) abrimos el archivo c.moderacion.php a) buscan case 'mps': $query = mysql_query('SELECT r.*, m.mp_id, m.mp_to, m.mp_from, m.mp_subject, m.mp_preview, m.mp_date FROM w_denuncias AS r LEFT JOIN u_mensajes AS m ON r.obj_id = m.mp_id WHERE d_type = 2 GROUP BY r.obj_id ORDER BY r.d_date DESC'); $data = result_array($query); break; debajo ponen case 'videos': $query = mysql_query('SELECT r.*, SUM(d_total) AS total, v.vid_id, v.vid_title, v.vid_status, u.user_id, u.user_name FROM w_denuncias AS r LEFT JOIN v_videos AS v ON r.obj_id = v.vid_id LEFT JOIN u_miembros AS u ON v.vid_user = u.user_id WHERE d_type = \'5\' &amp;&amp; v.vid_status < 2 GROUP BY r.obj_id ORDER BY total DESC, r.d_date DESC'); $data = result_array($query); break; buscan case 'users': $d_type = 3; $query = mysql_query('SELECT user_id, user_name FROM u_miembros WHERE user_id = ' . $obj . ' LIMIT 1'); break; abajo ponen case 'videos': $d_type = 5; $query = mysql_query('SELECT v.vid_id, v.vid_title, v.vid_status, u.user_name FROM v_videos AS v LEFT JOIN u_miembros AS u ON v.vid_user = u.user_id WHERE v.vid_id = ' . $obj . ' LIMIT 1'); break; c) buscan $query = mysql_query('SELECT f.foto_id, f.f_title, f.f_user, f.f_date, f.f_ip, u.user_name FROM f_fotos AS f LEFT JOIN u_miembros AS u ON f.f_user = u.user_id WHERE ' . ($tipo == 1 ? 'f.f_ip ' . $met . '' : 'f.f_title ' . $met . ' OR f.f_description ' . $met)); $data['fotos'] = result_array($query); $data['f_total'] = count($data['fotos']); // debajo ponen $query = mysql_query('SELECT v.vid_id, v.vid_title, v.vid_user, v.vid_date, v.vid_ip, u.user_name FROM v_videos AS f LEFT JOIN u_miembros AS u ON v.vid_user = u.user_id WHERE ' . ($tipo == 1 ? 'v.vid_ip ' . $met . '' : 'v.vid_title ' . $met . ' OR v.vid_description ' . $met)); $data['videos'] = result_array($query); $data['v_total'] = count($data['videos']); d) buscan // $query = mysql_query('SELECT u.user_id, u.user_name, f.* , c.* FROM f_comentarios AS c LEFT JOIN u_miembros AS u ON u.user_id = c.c_user LEFT JOIN f_fotos AS f ON f.foto_id = c.c_foto_id WHERE ' . ($tipo == 1 ? 'c.c_ip ' . $met . '' : 'c.c_user ' . $met . ' OR c.c_body ' . $met)); $data['f_comentarios'] = result_array($query); $data['c_f_total'] = count($data['f_comentarios']); // debajo agregan $query = mysql_query('SELECT u.user_id, u.user_name, v.* , c.* FROM v_comentarios AS c LEFT JOIN u_miembros AS u ON u.user_id = c.c_user LEFT JOIN v_videos AS f ON v.vid_id = c.c_video_id WHERE ' . ($tipo == 1 ? 'c.c_ip ' . $met . '' : 'c.c_user ' . $met . ' OR c.c_body ' . $met)); $data['v_comentarios'] = result_array($query); $data['c_v_total'] = count($data['v_comentarios']); // e) buscan /** * @name deletePost($pid) * @access public * @param int * @return string */ arriba ponen function rebootVideo($vid) { global $tsUser; if ($tsUser->is_admod) { $rows = mysql_num_rows(mysql_query('SELECT obj_id FROM w_denuncias WHERE obj_id = \'' . (int)$mid . '\' AND `d_type` = \'5\'')); if ($rows && $tsUser->is_admod) { $canview = true; } //BORRAMOS LA DENUNCIA if (mysql_query('DELETE FROM `w_denuncias` WHERE `obj_id` = \'' . (int)$vid . '\' AND `d_type` = \'5\'')) { mysql_query('UPDATE `v_videos` SET vid_status= \'0\' WHERE `vid_id` = \'' . (int) $vid . '\''); return '1: Denuncia eliminada'; } else return '0: No se pudo eliminar la denuncia'; } else return '0: No contin&uacute;e por aqu&iacute;.'; } f) buscan /** * @name setSticky * @access public * @param $post_id * @return string * @info Pone sticky un post */ public function setSticky($post_id) { arriba ponen public function deleteVideo($vid) { global $tsCore, $tsMonitor, $tsUser; if ($tsUser->is_admod) { // RAZON $razon = $tsCore->setSecure($_POST['razon']); $razon_desc = $tsCore->setSecure($_POST['razon_desc']); $razon_db = ($razon != 8) ? $razon : $razon_desc; // if (mysql_query('UPDATE `v_videos` SET `vid_status` = \'2\' WHERE `vid_id` = \'' . $vid . '\'')) { mysql_query('UPDATE `w_stats` SET `stats_videos` = stats_videos - \'1\' WHERE `stats_no` = \'1\''); if ($data['vid_user'] != $tsUser->uid) { // ENVIAR AVISO $query = mysql_query('SELECT v.vid_user, v.vid_title, u.user_name FROM v_videos AS v LEFT JOIN u_miembros AS u ON v.vid_user = u.user_id WHERE v.vid_id = \'' . (int)$vid . '\' LIMIT 1'); $data = mysql_fetch_assoc($query); // RAZON if (is_numeric($razon_db)) { include (TS_EXTRA . 'datos.php'); $razon_db = $tsDenuncias['videos'][$razon_db]; } // AVISO $aviso = 'Hola <b>' . $data['user_name'] . "</b>\n\n Lamento contarte que tu video titulado <b>" . $data['vid_title'] . "</b> ha sido eliminado.\n\n Causa: <b>" . $razon_db . "</b>\n\n Te recomendamos leer el <a href=\"" . $tsCore->settings['url'] . "/pages/protocolo/\">Protocolo</a> para evitar futuras sanciones.\n\n Muchas gracias por entender!"; $status = $tsMonitor->setAviso($data['vid_user'], 'Video eliminado', $aviso, 1); // } // ELIMINAR DENUNCIAS mysql_query('DELETE FROM `w_denuncias` WHERE `obj_id` = \'' . $vid . '\' AND `d_type` = \'5\''); $this->setHistory('borrar', 'video', $vid); return '1: El video ha sido eliminado.'; } // return '0: El video NO pudo ser eliminado.'; } else return '0: No deberías continuar con esto.'; } g) buscan } public function getPospelera() { arriba ponen elseif ($type == 'video') { // DATOS $query = mysql_query('SELECT `vid_id`, `vid_description`, `vid_title`, `vid_user` FROM `v_videos` WHERE `vid_id` = \'' . (int)$data . '\' LIMIT 1'); $video = mysql_fetch_assoc($query); switch ($action) { case 'borrar': // RAZON $razon = $tsCore->setSecure($_POST['razon']); $razon_desc = $tsCore->setSecure($_POST['razon_desc']); $razon_db = ($razon != 8) ? $razon : $razon_desc; // INSERTAR mysql_query('INSERT INTO w_historial (`pofid`, `action`, `type`, `mod`, `reason`, `date`, `mod_ip`) VALUES (\'' . (int)$video['vid_id'] . '\', \'2\', \'2\', \'' . $tsUser->uid . '\', \'' . $tsCore->setSecure($razon_db) . '\', \'' . time() . '\', \'' . $tsCore->setSecure($_SERVER['REMOTE_ADDR']) . '\')'); return true; break; } } h) buscan public function getComentariosD() arriba ponen public function getVipelera() { global $tsUser, $tsCore; // $max = 20; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); // PAGINAS $query = mysql_query('SELECT COUNT(*) FROM v_videos AS v LEFT JOIN u_miembros AS u ON u.user_id = v.vid_user LEFT JOIN w_historial AS h ON h.pofid = v.vid_id WHERE h.type = \'2\' AND h.action = \'2\' AND v.vid_status = \'2\''); list($total) = mysql_fetch_row($query); $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . "/moderacion/vipelera?", $_GET['s'], $total, $max); // $query = mysql_query('SELECT u.user_id, u.user_name, h.*, v.vid_id, v.vid_title, v.vid_user FROM v_videos AS v LEFT JOIN u_miembros AS u ON u.user_id = v.vid_user LEFT JOIN w_historial AS h ON h.pofid = v.vid_id WHERE h.type = \'2\' AND h.action = \'2\' AND v.vid_status = \'2\' LIMIT ' . $limit); // DENUNCIAS include ("../ext/datos.php"); // while ($row = mysql_fetch_assoc($query)) { $row['mod_name'] = $tsUser->getUserName($row['mod']); $row['reason'] = (is_numeric($row['reason'])) ? $tsDenuncias['videos'][$row['reason']] : $tsCore->setSecure($row['reason']); // $data['datos'][] = $row; } // return $data; } 3) abrimos c.swat.php a) buscan // MENSAJES case 'mensaje': arriba ponen case 'video': // ¿ES MI VIDEO O ESTÁ OCULTO? $query = mysql_query('SELECT `vid_id`, `vid_user`, `vid_status` FROM `v_videos` WHERE `vid_id` = \''.(int)$obj_id.'\' LIMIT 1') or die(mysql_error()); $my_video = mysql_fetch_assoc($query); if(empty($my_video['vid_id'])) return '0: Este video no existe'; if($my_video['vid_user'] == $tsUser->uid) return '0: No puedes denunciar tus propios videos.'; if($my_video['vid_status'] == '1') return '0: No puedes denunciar videos ocultos.'; // YA HA REPORTADO? $query = mysql_query('SELECT `did` FROM `w_denuncias` WHERE `obj_id` = \''.(int)$obj_id.'\' AND `d_user` = '.$tsUser->uid.' AND `d_type` = \'5\''); $denuncio = mysql_num_rows($query); if(!empty($denuncio)) return '0: Ya habías denunciado este video.'; // CUANTAS DENUNCIAS LLEVA? $denuncias = mysql_num_rows(mysql_query('SELECT `did` FROM `w_denuncias` WHERE `obj_id` = \''.(int)$obj_id.'\'')); // OCULTAMOS EL VIDEO SI YA LLEVA MÁS DE 3 DENUNCIAS if($denuncias >= 2){ mysql_query('UPDATE `v_videos` SET `vid_status` = \'1\' WHERE `vid_id` = \''.(int)$obj_id.'\'') or die(mysql_error()); mysql_query('UPDATE `w_stats` SET `stats_videos` = stats_videos - \'1\' WHERE `stats_no` = \'1\''); } // INSERTAR NUEVA DENUNCIA if(mysql_query('INSERT INTO `w_denuncias` (`obj_id`, `d_user`, `d_razon`, `d_extra`, `d_type`, `d_date`) VALUES (\''.(int)$obj_id.'\', \''.$tsUser->uid.'\', \''.$razon.'\', \''.$extras.'\', \'5\', \''.$date.'\')')){ return '1: La denuncia fue enviada.'; } else return '0: Error, inténtalo más tarde.'; break; 4) abren el c.core.php a) buscan 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; } la remplazan 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(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'5\') as repvideos, (SELECT count(susp_id) FROM u_suspension) as suspusers, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as pospelera, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fospelera, (SELECT count(vid_id) FROM v_videos WHERE vid_status = \'2\') as vispelera')); $datos['total'] = $datos['repposts'] + $datos['repfotos'] + $datos['repvideos'] + $datos['repmps'] + $datos['repusers'] + $datos['revposts'] + $datos['revcomentarios']; return $datos; } ahora bamos a ///* inc/php *\\\ 1) abrimos c.admin.php a) buscan //FOTOS } elseif($action == 'fotos'){ if(!$act) { $smarty->assign("tsAdminFotos",$tsAdmin->GetAdminFotos()); } abajo ponen //VIDEOS } elseif($action == 'videos'){ if(!$act) { $smarty->assign("tsAdminVideos",$tsAdmin->GetAdminVideos()); } 2) abrimos moderacion.php a) buscamos // SUSPENSIONES elseif($action == 'banusers'){ $smarty->assign("tsSuspendidos",$tsMod->getSuspendidos()); } arriba ponemos elseif($action == 'videos'){ include('../ext/datos.php'); if(empty($act)){ $smarty->assign("tsReports",$tsMod->getDenuncias($action)); $smarty->assign("tsDenuncias",$tsDenuncias[$action]); }elseif($act == 'info'){ $smarty->assign("tsDenuncia",$tsMod->getDenuncia($action)); $smarty->assign("tsDenuncias",$tsDenuncias[$action]); } elseif ($act == 'borrar'){ $tsMod->deleteVideo($vid_); header('location: /moderacion/videos'); } } buscamos elseif($action == 'fopelera'){ $smarty->assign("tsFopelera",$tsMod->getFopelera()); } abajo ponen elseif($action == 'vipelera'){ $smarty->assign("tsVipelera",$tsMod->getVipelera()); } ahora bamos a ///* inc/php/ajax *\\\ 1) abrimos ajax.admin.php a) buscamos 'admin-badwords-delete' => array('n' => 4, 'p' => ''), abajo ponen 'admin-video-borrar' => array('n' => 4, 'p' => ''), 'admin-video-setOpenClosed' => array('n' => 4, 'p' => ''), 'admin-video-setShowHide' => array('n' => 4, 'p' => ''), buscamos case 'admin-users-InActivo': arriba ponemos case 'admin-video-borrar': //<--- echo $tsAdmin->DelVideo(); //---> break; case 'admin-video-setOpenClosed': //<--- echo $tsAdmin->setOpenClosedVideo(); //---> break; case 'admin-video-setShowHide': //<--- echo $tsAdmin->setShowHideVideo(); //---> break; 2) abrimos ajax.denuncia.php a) buscamos 'denuncia-usuario' => array('n' => 2, 'p' => 'form'), abajo ponen 'denuncia-video' => array('n' => 2, 'p' => 'form'), buscan case 'denuncia-mensaje': arriba ponen case 'denuncia-video': // CREAR DENUNCIA if($_POST['razon']){ $tsAjax = 1; echo $tsSwat->setDenuncia($obj_id, 'video'); // FORMULARIO DE DENUNCIA } else { // VARS $tsData = array( 'obj_id' => $obj_id, 'obj_title' => $tsCore->setSecure($_POST['obj_title']), 'obj_user' => $tsCore->setSecure($_POST['obj_user']), ); // DATOS include("../ext/datos.php"); $smarty->assign("tsData",$tsData); $smarty->assign("tsDenuncias",$tsDenuncias['videos']); } break; 3) abrimos ajax.moderacion.php a) buscan 'moderacion-mps' => array('n' => 3, 'p' => 'main'), abajo ponen 'moderacion-videos' => array('n' => 3, 'p' => 'main'), buscan case 'moderacion-fotos': arriba ponen case 'moderacion-videos': //<-- $vid = (int)$_POST['vid']; // ACCIONES SECUNDARIAS switch($do){ case 'reboot': $tsAjax = 1; echo $tsMod->rebootVideo($_POST['id']); break; case 'borrar': if($_POST['razon']){ $tsAjax = 1; echo $tsMod->deleteVideo($vid); }else { include('../ext/datos.php'); $tsPage = 'php_files/p.videos.mod'; $smarty->assign("tsDenuncias",$tsDenuncias['videos']); } break; ahora vamos a ///* inc/ext *\\\ 1) abrimos datos.php a) buscamos 'fotos' => array( arriba ponemos 'videos' => array( '', 'Ya está publicado', 'Se hace Spam', 'El video no anda', 'Es racista o irrespetuosa', 'Contiene información personal', 'Contiene pedofilia', 'Es gore o asquerosa', 'Otra razón (especificar)' ), bien ahora vamos a ///* themes/TUTHEME/js *\\\ 1) abrimos acciones.js a) buscan case 'fotoid': if(global_data.fotoid!='') return r+global_data.fotoid; break; abajo ponen case 'videoid': if(global_data.videoid!='') return r+global_data.videoid; break; 2) abrimos admin.js a) buscamos medallas : { borrar:function(mid, gew){ arriba ponen videos : { borrar:function(vid, gew){ if(!gew){ mydialog.show(); mydialog.title('Borrar Video'); mydialog.body('&amp;#191;Quiere borrar este video permanentemente?'); mydialog.buttons(true, true, 'Sí', 'admin.videos.borrar(' + vid + ', 1)', true, false, true, 'No', 'close', true, true); mydialog.center(); }else{ $('#loading').fadeIn(250); $.post(global_data.url + '/admin-video-borrar.php', 'vid_id=' + vid, function(a){ mydialog.alert((a.charAt(0) == '0' ? 'Opps!' : 'Hecho'), a.substring(3), false); mydialog.center(); success: $('#video_' + vid).fadeOut(); $('#loading').fadeOut(350); }); } }, setOpenClosed:function(vid){ $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url +'/admin-video-setOpenClosed.php', data: 'vid=' + vid, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.alert('Error', h.substring(3)); break; case '1': // $('#comments_video_' + vid).html('<font color="red">Cerrados</font>'); break; case '2': // $('#comments_video_' + vid).html('<font color="green">Abiertos</font>'); break; } $('#loading').fadeOut(350); } }); }, setShowHide:function(vid){ $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url +'/admin-video-setShowHide.php', data: 'vid=' + vid, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.alert('Error', h.substring(3)); break; case '1': // $('#status_video_' + vid).html('<font color="purple">Oculto</font>'); break; case '2': // $('#status_video_' + vid).html('<font color="green">Visible</font>'); break; } $('#loading').fadeOut(350); } }); }, }, 3) abrimos moderacion.js a) buscamos users: { arriba ponen videos : { // BORRAR borrar:function(vid, redirect, aceptar){ if(!aceptar){ $.ajax({ type: 'POST', url: global_data.url + '/moderacion-videos.php?do=borrar', success: function(h){ mydialog.show(); mydialog.title('Borrar Video'); mydialog.body(h); mydialog.buttons(true, true, 'Borrar', 'mod.videos.borrar(' + vid + ", '" + redirect + "', 1);", true, false, true, 'Cancelar', 'close', true, true); $('#modalBody').css('padding', '20px 10px 0'); mydialog.center(); return; } }); } else { mydialog.procesando_inicio('Eliminando...', 'Borrar Video'); var razon = $('#razon').val() var razon_desc = $('input[name=razon_desc]').val(); $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/moderacion-videos.php?do=borrar', data: 'vid=' + vid + '&amp;razon=' + razon + '&amp;razon_desc=' + razon_desc, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.alert('Error', h.substring(3)); break; case '1': if(redirect == 'true') mod.redirect("/moderacion/videos", 1200); else if(redirect == 'videos') { mydialog.alert('Aviso', h.substring(3)); mod.redirect("/videos/", 2000); } else { mydialog.close(); $('#report_' + vid).slideUp(); } break; } $('#loading').fadeOut(350); }, complete: function(){ mydialog.procesando_fin(); $('#loading').fadeOut(350); } }); } }, }, ahora vamos a ///* themes/TUTHEME/templates/t.php_files *\\\ 1) abrimos p.denuncia.form.tpl a) buscamos {elseif $tsAction == 'denuncia-mensaje'} arriba ponen {elseif $tsAction == 'denuncia-video'} <div align="center" style="padding:10px 10px 0"> <b>Denunciar video:</b><br /> {$tsData.obj_title}<br /><br /> <b>Razón de la denuncia:</b><br /> <select name="razon"> {foreach from=$tsDenuncias key=i item=denuncia} {if $denuncia}<option value="{$i}">{$denuncia}</option>{/if} {/foreach} </select><br /> <b>Aclaración y comentarios:</b><br /> <textarea tabindex="6" rows="5" cols="40" name="extras"><textarea><br /> <span class="size9">Para atender tu caso rápidamente, adjunta pruevas de tu denuncia.<br /> (capturas de pantalla)</span> </div> ahora vamos a ///* themes/TUTHEME/templates/sections *\\\ 1) abrimos main_header.tpl a) buscan fotoid:'{$tsFoto.foto_id}', abajo ponen videoid:'{$tsVideo.vid_id}', 2) abrimos head_menu.tpl a) buscamos {if $tsConfig.c_fotos_private == '1' &amp;&amp; !$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} abajo ponen <li class="tabbed {if $tsPage == 'videos'}here{/if}" id="tabbedvideos"> <a title="Ir a Videos" onclick="menu('videos', this.href); return false;" href="{$tsConfig.url}/videos/">Videos <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> 3) abren el head_submenu.tpl a) buscan <div id="subMenuTops" class="subMenu {if $tsPage == 'tops'}here{/if}"> arriba agregan <div id="subMenuVideos" class="subMenu {if $tsPage == 'videos'}here{/if}"> <ul class="floatL tabsMenu"> <li{if $tsAction == '' && $tsAction != 'agregar' && $tsAction != 'album' && $tsAction != 'favoritas' || $tsAction == 'ver'} class="here"{/if}><a href="{$tsConfig.url}/videos/">Inicio</a></li> {if $tsAction == 'album' && $tsVUser.0 != $tsUser->uid}<li class="here"><a href="{$tsConfig.url}/videos/{$tsVUser.1}">&Aacute;lbum de {$tsVUser.1}</a></li>{/if} {if $tsUser->is_admod}<li{if $tsAction == 'agregar'} class="here"{/if}><a href="{$tsConfig.url}/videos/agregar/">Agregar Video</a></li>{/if} {if $tsUser->is_member} <li{if $tsAction == 'album' && $tsVUser.0 == $tsUser->uid} class="here"{/if}><a href="{$tsConfig.url}/videos/album/{$tsUser->nick}">Mis Videos</a></li>{/if} <li><a href="{$tsConfig.url}/buscadorv/">Buscador</a></li> </ul> <div class="clearBoth"></div> </div> ahora vamos a {elseif $tsAction == 'afs'} {include file='admin_mods/m.admin_afiliados.tpl'} arriba ponen {elseif $tsAction == 'videos'} {include file='admin_mods/m.admin_videos.tpl'} 2) abren el t.moderacion.tpl a) buscan {elseif $tsAction == 'fotos'} {include file='admin_mods/m.mod_report_fotos.tpl'} abajo ponen {elseif $tsAction == 'videos'} {include file='admin_mods/m.mod_report_videos.tpl'} buscan {elseif $tsAction == 'fopelera'} {if $tsUser->is_admod || $tsUser->permisos.morf}{include file='admin_mods/m.mod_papelera_fotos.tpl'}{/if} abajo ponen {elseif $tsAction == 'vipelera'} {if $tsUser->is_admod}{include file='admin_mods/m.mod_papelera_videos.tpl'}{/if} ahora vamos a <li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/cats">Categorías</a></span></li> abajo ponen <li id="a_film"><span class="cat-title"><a href="{$tsConfig.url}/admin/videos">Todos los Videos</a></span></li> 2) abrimos m.mod_sidemenu.tpl a) buscamos <li id="a_users"><span class="cat-title"><a onclick="$('#a_users').addClass('active');" href="{$tsConfig.url}/moderacion/users">Usuarios <span class="cadGe cadGe_{if $tsConfig.novemods.repusers > 15}red{elseif $tsConfig.novemods.repusers > 5}purple{else}green{/if}">{$tsConfig.novemods.repusers}</span></a></span></li> abajo ponen <li id="a_film"><span class="cat-title"><a onclick="$('#a_film').addClass('active');" href="{$tsConfig.url}/moderacion/videos">Videos <span class="cadGe cadGe_{if $tsConfig.novemods.repvideos > 15}red{elseif $tsConfig.novemods.repvideos > 5}purple{else}green{/if}">{$tsConfig.novemods.repvideos}</span></a></span></li> buscan {if $tsUser->is_admod || $tsUser->permisos.morf}<li id="a_fopelera"><span class="cat-title"><a onclick="$('#a_fopelera').addClass('active');" href="{$tsConfig.url}/moderacion/fopelera">Fotos eliminadas <span class="cadGe cadGe_{if $tsConfig.novemods.fospelera > 15}red{elseif $tsConfig.novemods.fospelera > 5}purple{else}green{/if}">{$tsConfig.novemods.fospelera}</span></a></span></li>{/if} abajo ponen {if $tsUser->is_admod}<li id="a_vipelera"><span class="cat-title"><a onclick="$('#a_vipelera').addClass('active');" href="{$tsConfig.url}/moderacion/vipelera">Videos eliminados <span class="cadGe cadGe_{if $tsConfig.novemods.vispelera > 15}red{elseif $tsConfig.novemods.vispelera > 5}purple{else}green{/if}">{$tsConfig.novemods.vispelera}</span></a></span></li>{/if} ahora vamos a li#a_badwords {background-image: url(../images/icons/stop.png);} abajo agregamos li#a_film {background-image: url(../images/film.png);} 2) abrimos moderacion.css a) buscamos li#a_revposts {background-image: url(../images/icons/exclamation.png);} abajo agregamos li#a_vipelera {background-image: url(../images/film.png);} li#a_film {background-image: url(../images/film.png);} ahora vamos al .htaccess que esta en la raiz del ftp y buscamos # ADMIN arriba agregan # VIDEOS RewriteRule ^videos/([A-Za-z0-9_-]+).php$ inc/php/videos.php?action=$1 [QSA,L] RewriteRule ^videos/album/([A-Za-z0-9_-]+)$ inc/php/videos.php?action=album&amp;user=$1 [QSA,L] RewriteRule ^videos/album/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/videos.php?action=album&amp;user=$1&amp;page=$2 [QSA,L] RewriteRule ^videos/([A-Za-z0-9_-]+)/([0-9]+)/([A-Za-z0-9_-]+).html$ inc/php/videos.php?action=ver&amp;user=$1&amp;vid=$2 [QSA,L] RewriteRule ^admin/videos/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/admin.php?action=videos&amp;act=$1&amp;vid=$2 [QSA,L] RewriteRule ^videos/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/videos.php?action=$1&amp;id=$2 [QSA,L] ahora suben los archivos que les dejo. cada archivo esta en su respectiva carpeta para no tener problemas PD: EL ARCHIVO AJAX.COMENTARIO.PHP lo deben remplazar http://www.mediafire...cqvrcssbv6nap4i al archivo installvid va en la raiz para ejecutarlo entran asi suweb/installvid/index.php creditos a Aperpen: que sin su ayuda no podria haber terminado el mod Alan: que me ayudo en las notificaciones y los top megaerick, gonzalo, esteven, chito, trane: por hacer diseños que por sus motivos no terminaron. chito lo tiene casi listo creo que lo posteara cuando lo tenga Profecy; por testear todo xD Carlo: por darme un host y dominio y su web para probarlos PD2: luego aperpen postea las: notificaciones, perfil, medallas, buscador. el diseño es de la v4 así que deben adaptarlo a sus themes DEMO: http://megazfull.com/ para los vagos aca les dejo el rar con los archivos editados oksi http://www.mediafire...znmdxvnc25pm2nm deben poner el parche de seguridad en el ajax.moderacion.php en la parte de video buscan $vid = $_POST['vid']; la remplazan por $vid = (int)$_POST['vid']; y ya hagan back up de sus aarchivos y sus otros mods por las dudas -bye ///* themes/TUTHEME/templates *\\\ 1) abrimos t.admin.tpl a) buscan ///*themes/TUTHEME/templates/admin_mods*\\\ 1) abrimos m.admin_sidemenu.tpl a) buscan ///* themes/TUTHEME/css *\\\ 1) abrimos admin.css a) buscamos
  17. 40 likes
    Llevo dos meses haciendo este theme desde que comencé. Me ha costado mucho porque, al basarme en la BETA, tuve que corregir muchos bugs. Además, adaptar las comunidades no ha sido nada fácil. El diseño no lo he cambiado, en parte por que es la v1, porque estoy sin ideas y porque el diseño que hizo Zero me encanta tal y como está. No es muy posible que haga una v2 de este theme, la razón es simple: lo habéis gastado mucho. No hay theme que no tenga referencias de boxes, menú, footer... Y eso, quieras o no, influye. Zero-Time V1 - Navideño - Con comunidades y juegos + Mods adaptados - Fixeado ¿Quieres más caps de secciones como juegos, admin, moderación, generador, registro, login y caps de todo lo que se ha agregado? Entra aquí y mira las 25 imágenes disponibles Cosas nuevas y arregladas que hay en este theme: El instalador ya funciona perfectamente. Bugs de diseño en el perfil y el MI arreglados. Bug en los comentarios de los posts arreglado. Karma adaptado. Edad en "información" de los perfiles. Retoques en los perfiles. Adaptación de todas las secciones de la administración y la moderación. Generador de posts. Nuevos bbcodes en los posts: Info, aviso, note, mensaje y descargas. (Créditos a sharkur post esto) Header de los posts arreglado: muestra avatar del usuario. Mod últimos shouts adaptado. Error en imágenes arreglado. Nuevos módulos en la home, retocados: Recomendamos, Últimas fotos. Nuevos iconos en las boxes. Avatar en últimos posts del posteador. Sección comunidades 100% adaptada. Sección juegos 100% adaptada. Nuevo diseño de fotos. Más de 10 headers incluidos en la carpeta zero-img Copos de nieve moviéndose en el body. Incluye header navideño. Agregadas funciones de Recuperar contraseña y reenviar correo de validación. El logo se ha bajado, queda mejor, ¿no? Pequeños fixeos. ATENCIÓN El theme viene con unos headers en la carpeta zero-img para que podáis cambiar si queréis el que viene por default (de navidad). Si queréis quitar los copos abrid el estilo.css y buscáis: /*Keyframes*/ @keyframes snow { 0% { background-position: 0px 0px, 0px 0px, 0px 0px } 100% { background-position: 500px 1000px, 400px 400px, 300px 300px } } @-moz-keyframes snow { 0% { background-position: 0px 0px, 0px 0px, 0px 0px } 100% { background-position: 500px 1000px, 400px 400px, 300px 300px } } @-webkit-keyframes snow { 0% { background-position: 0px 0px, 0px 0px, 0px 0px } 50% { background-color: #b4cfe0 } 100% { background-position: 500px 1000px, 400px 400px, 300px 300px; background-color: #6b92b9; } } @-ms-keyframes snow { 0% { background-position: 0px 0px, 0px 0px, 0px 0px } 100% { background-position: 500px 1000px, 400px 400px, 300px 300px } } Una vez al principio y otra al final. Sólo se dará soporte en este topic y por mp a los usuarios que: -Den su web con el theme en el mensaje o, si es un bug, link en la demo. -Hayan instalado el theme con los pasos que vienen a continuación. -Hayan instalado la V1 y no la BETA. Pasos de instalación recomendados para no tener errores. 1- Subir el theme "zero-time" al directorio /themes/. Sólo eso. 2- Instalarlo con el nombre "zero-time" en "Temas y apariencia" de la administración. 3- Subir el .htaccess a la raíz de tu web. 4- Reemplazar todos los archivos de tu carpeta /inc/ por estos (no se incluye smarty). Sube primero el contenido de la carpeta /inc/class e /inc/ext. 5- Sin subir /inc/php sube el instalador install_juegos.php a raíz. Renombra el .htaccess a .ht y ahora lo ejecutas desde TUWEB.COM/install_juegos.php 6- Renombra de nuevo .ht por .htaccess e importa comunidades.sql desde tu phpmyadmin. 7- Sube los tres archivos de la carpeta /inc/php. 8- Ahora sube la carpeta /pages/ a la raíz ¡Todo en este orden! No subas todo de una o quizá tengas errores... ¿Quieres ayudar a mejorar este theme? Entra en la demo y regístrate. No necesitarás activación por correo, se hará automáticamente. Obtendrás el rango "Administrador", suficiente para entrar en el panel de moderación. Testea en la demo y si ves algo, dímelo. Te lo agradecería con créditos (: No sé si me queda algo por decir o hacer Así que supongo que me voy. Os dejo con la descarga. DESCARGA ZERO-TIME V1 (Viene con el theme default por si lo queréis subir , con el generador, el install, el .htacces, la carpeta inc y un .txt) Aquí tenéis el comunidades.sql para importar, click. Sería bonito que mantuviérais el copy, para agradecer de alguna forma el trabajo que realicé. Obviamente no es obligatorió y no tendré en cuenta al que lo quite, pero sí al que lo deje puesto, me animará FIXES: -BBcode de imágenes (al agregar post si quieres colocar una imagen saldrá [/*img] en vez de El error está en acciones.js de /themes/zero-time/js. Lo abrís y buscáis: *img [/code] [/center] [center]reemplazadlo por:[/center] [center][code] img [/code] [/center] [center]Muy simple.[/center] [center][color=#008080]-Buscador. [/color][/center] [center]Los iconos del buscador no se ven.[/center] [center]Reemplaza el t.buscador.tpl de /themes/zero-time/templates por este.[/center] [center]-[color=#008080]Botón seguir en posts:[/color][/center] [center]En los posts de otro usuario el botón de seguir no se ve. Abre m.posts_autor.tpl de /themes/zero-time/templates/modules y busca:[/center] [center][CODE] /themes/zero-time/img/eye.png [/code] [/center] [center]reemplaza por:[/center] [center][CODE] /themes/zero-time/zero-img/eye.png [/code][/center] [center]aparecerá como mínimo dos veces. Reemplaza hasta que no haya más.[/center] [center]Gracias por ayudar a testear a:[/center] [center]-Spider.[/center] [center]-qwerty.[/center] [center][u][size=6][font=lucida sans unicode', 'lucida grande', sans-serif]CRÉDITOS ESPECIALES[/font][/size][/u][/center] [center][size=5][font=lucida sans unicode, lucida grande, sans-serif]-A Daniel Abel, creador del theme en el que me basé.[/font][/size][/center] [center][size=5][font=lucida sans unicode, lucida grande, sans-serif]-A los creadores de los mods que añadí al theme.[/font][/size][/center] [center][size=5][font=lucida sans unicode, lucida grande, sans-serif]-Y a vosotros.[/font][/size][/center] [size=6]Ah, por cierto. [/size]
  18. 40 likes
    Hola amigos de phpost para terminar el año bien , publico este tema que tenia pensado publicar el 1 de enero pero algunas razones lo publicare hoy . Bueno primero que nada quisiera decirles que gracias por este año que me han apoyado de diferentes formas y por formar un caracter como persona y diseñador bueno pero antes que nada mi tema Descargar: http://www.mediafire...u0uygu3ymc67b6e Instalación: Colocan los archivos dentro del rar en donde se indica Entramos a PHPmyadmin , vamos a p_post y en sql ponemos esto : se instala como "megablog" Demo: http://demo.wordpost.net/ Bueno antes que nada les aclaro que el unico CSS que copia fue el del header y el menu desplegable , ¿Porqué? porque simplemente sabia que se veria bien y no tiene bugs. Espero que les haya gustado , este tema Es uno de los que mas disfrute diseñar . Espero que la pasen bien este año 2013 , que se diviertan y que sigan en esta familia que es PHPost. Feliz y Prospero 2013!!!
  19. 38 likes
    amigos les dejo este mod que me pidio un usuario para risus, es el envio de mps masivos, solo para administradores, no solo eso, el admin puede elegir a quien mandar los mensajes; a todos, a administradores o a moderadores, esta bueno, una imagen. comienzan los pasos: abrimos el c.admin. php que se encuentra en inc/class y buscamos $num['medallas_total'] = $num['medallas_usuarios'] + $num['medallas_posts'] + $num['medallas_fotos']; $num['fotos_total'] = $num['fotos_visibles'] + $num['fotos_ocultas'] + $num['fotos_eliminadas']; return $num; } debajo ponemos //////////////////////INICIA EL MOD DE TRON///////////////// /* newMpsall() ENVIAMOS MP MASIVO */ function newMpsall(){ global $tsUser, $tsCore; // $cuerpo=$tsCore->setSecure($_POST['cuerpo']); $rangos=(int)$_POST['rangos']; $fecha= time(); if($tsUser->is_admod==1){ if($rangos==1){ $where='WHERE user_id != \''.$tsUser->uid.'\''; }elseif($rangos==2){ $where='WHERE user_id != \''.$tsUser->uid.'\' AND user_rango = 1'; }elseif($rangos==3){ $where='WHERE user_id != \''.$tsUser->uid.'\' AND user_rango = 2'; } $query = mysql_query('SELECT user_id,user_name FROM u_miembros '.$where.' ORDER BY user_id DESC'); if(!$query) die(mysql_error()); $data = result_array($query); foreach($data as $dato){ $subject='Mensaje de la administracion'; $sql = "INSERT INTO u_mensajes (mp_to,mp_from,mp_subject,mp_preview,mp_date) VALUES ('{$dato['user_id']}','{$tsUser->uid}','{$subject}','{$cuerpo}','{$fecha}')"; $result = mysql_query($sql); $mp_id = mysql_insert_id(); mysql_query('INSERT INTO `u_respuestas` (mp_id, mr_from, mr_body, mr_ip, mr_date) VALUES (\''.(int)$mp_id.'\', \'1\', \''.$cuerpo.'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.time().'\')'); } } if($result) return true; else return false; } luego abrimos ajax.admin.php que se encuentra en inc/php/ajax y buscamos 'admin-badwords-delete' => array('n' => 4, 'p' => ''), debajo ponemos 'admin-mpsall' => array('n' => 4, 'p' => 'mpsall'), luego buscamos case 'admin-badwords-delete': //<--- echo $tsAdmin->deleteBadWord(); //---> break; abajo de eso ponemos case 'admin-mpsall': if($_POST['cuerpo']){ echo $tsAdmin->newMpsall(); }else{ $smarty->assign("tsExit",'2'); } break; luego abrimos el archivo m.admin_sidemenu.ypl que se encuentra en themes/default/templates/admin_mods y buscamos <li id="a_rangos"><span class="cat-title"><a href="{$tsConfig.url}/admin/rangos">Rangos de Usuarios</a></span></li> debajo ponemos <li id="a_badwords"><span class="cat-title"><a href="javascript:enviar.mps.all();">Mensajes masivos</a></span></li> luego abrimos el admin.js que se encuentra en themes/default/js y buscamos /* AFILIADOS */ var ad_afiliado = { cache: {}, detalles: function(aid){ $.ajax({ type: 'POST', url: global_data.url + '/afiliado-detalles.php', data: 'ref=' + aid, success: function(h){ mydialog.show(true); mydialog.title('Detalles del Afiliado'); mydialog.body(h); mydialog.buttons(true, true, 'Aceptar', 'mydialog.close()', true, true); mydialog.center(); } }); } } debajo ponemos var enviar = { mps : { all:function(uid, redirect, aceptar){ if(!aceptar){ $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/admin-mpsall.php?ts=false', success: function(h){ mydialog.show(); mydialog.title('Mps masivo'); mydialog.body(h); mydialog.buttons(true, true, 'Enviar', 'enviar.mps.all(' + uid + ", '" + redirect + "', 1);", true, false, true, 'Cancelar', 'close', true, true); $('#modalBody').css('padding', '20px 10px 0'); mydialog.center(); $('#loading').fadeOut(350); return; } }); } else { mydialog.procesando_inicio('Enviando...', 'Mps masivo'); var cuerpo = $('input[name=cuerpo]').val(); var rangos = $('#rangos').val(); $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/admin-mpsall.php?ts=false', data: 'cuerpo=' + cuerpo + '&rangos=' + rangos, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.alert('Error', h.substring(3)); all.redirect("/admin/", 500); break; case '1': if(redirect == 'true') all.redirect("/admin/", 1700); else if(redirect == 'true') { mydialog.alert('Aviso', h.substring(3)); all.redirect("/admin/", 2000); } else { mydialog.close(); $('#report_' + pid).slideUp(); } break; } $('#loading').fadeOut(350); }, complete: function(){ mydialog.procesando_fin(); $('#loading').fadeOut(350); } }); } }, }, redirect: function(url_ref, time){ setTimeout(function(){document.location.href = global_data.url + url_ref;}, time) } } por ultimo subimos el archivo que les dejo a la carpeta themes/default/templates/t.php_files http://www.mediafire...oei7ddxwxdyhggx espero no haberme olvidado de nada, meavisan de algun error asi lo solucionamos. saludos
  20. 38 likes
    Aqui les dejo mi segundo theme.. Lo hice basandome en el diseño de youtube.. Necesitan hacer estas sentencias SQL: ALTER TABLE `p_posts` ADD `post_seg` int(1) NOT NULL DEFAULT '0' [/CODE] [center][b]( Es del Mods solo para seguidores )[/b][/center] [center][font=courier new,courier,monospace][size=5][color=#ff0000][b]Y Esta Tambien:[/b][/color][/size][/font][/center] [center][b](Imagen Portada en post en la Home)[/b][/center] [CODE] ALTER TABLE `p_posts` ADD `post_img` VARCHAR( 180 ) NOT NULL AFTER `post_title` , ADD `post_desc` VARCHAR( 80 ) NOT NULL AFTER `post_img` Necesitan Reemplazar el archivo c.posts.php en inc/class/ (Importante Para el Funcionamiento) ( Hagan copia de sus Archivos) http://www.mediafire...vtnmy4lqq0ky4pv Aqui el link del Theme http://www.mediafire...nqrhw5mq2lzd3i8 NOTAS: Si tiene Problemas en el Funcionamiento me Avisan y se los respondere ok.. Aclaracion.. Para ver los posts solo para seguidores a los Administradores no le afecta.. Para verlo entrar con otro rango.. Espero que les guste.. Hasta la Proxima..
  21. 38 likes
    Bueno amigos aquí les traigo la segunda entrega de mi tema y penúltima en la siguiente ya les traeré todo super mejorado y con una nueva administración -few Aqui Caps -few Bueno la instalación es cotidiana solo deben hacer un paso chiquito que es para que se vea mejor la galería de fotos oksi Deben abrir el archivo c.fotos.php que esta en /inc/class/ y buscan $max = 10; // MAXIMO A MOSTRAR y lo reemplazan por $max = 6; // MAXIMO A MOSTRAR Listo y por ultimo suben el tema e instalan como siempre -few Link: http://www.mediafire.com/?tq3mhdmucdxcg1n Créditos Gonzalogranate Duvan J Alex Parra Thespeed Zero Listo eso es todo espero lo disfruten oksi
  22. 37 likes
    Que tal a todos comparto esta versión de portadas para los posts que es un poco más completa y que había hecho antes pero para la versión de to-up, así es como quedaría: Para la default: Para esto no deben tener NINGÚN MOD DE ESTE TIPO ya que manejo otra variable en la BD y puede crear confusión a la hora de instalarla.... Bueno la instalación es la siguiente: 1) Crean esta consulta en la BD ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL 2) Abrimos c.posts.php y buscamos: /* getPreview() */ function getPreview(){ global $tsCore; // $titulo = $tsCore->setSecure($_POST['titulo'], true); $cuerpo = $tsCore->setSecure($_POST['cuerpo'], true); // return array('titulo' => $titulo, 'cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true)); } Reemplazamos por: /* getPreview() */ function getPreview(){ global $tsCore; // $titulo = $tsCore->setSecure($_POST['titulo'], true); $imagen = $tsCore->setSecure($_POST['imagen'], true); $cuerpo = $tsCore->setSecure($_POST['cuerpo'], true); // return array('titulo' => $titulo, 'imagen' => $imagen, 'cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true)); } 3) Buscamos un poco mas abajo: 'title' => $tsCore->parseBadWords($tsCore->setSecure($_POST['titulo'], true)),2, Debajo de eso agregamos 'portada' => $tsCore->setSecure($_POST['imagen']), 4) Buscamos un poco mas abajo: // INSERTAMOS $_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if(!filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); } if(mysql_query('INSERT INTO `p_posts` (post_user, post_category, post_title, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) { $postID = mysql_insert_id(); Reemplazamos por: // INSERTAMOS $_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if(!filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); } if(mysql_query('INSERT INTO `p_posts` (post_user, post_category, post_title, post_portada, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['portada'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) { $postID = mysql_insert_id(); 5) Ahora un poco mas abajo buscamos 'title' => $tsCore->parseBadWords($_POST['titulo'], true), Agregamos debajo: 'portada' => $tsCore->setSecure($_POST['imagen'], true), 6) Mas abajo buscamos: // ACTUALIZAMOS if($tsUser->uid == $data['post_user'] || !empty($tsUser->is_admod) || !empty($tsUser->permisos['moedpo'])){ if(mysql_query('UPDATE p_posts SET post_title = \''.$postData['title'].'\', post_body = \''.$postData['body'].'\', post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_category = \''.(int)$postData['category'].'\', post_private = \''.$postData['private'].'\', post_block_comments = \''.$postData['block_comments'].'\', post_sponsored = \''.$postData['sponsored'].'\', post_smileys = \''.$postData['smileys'].'\', post_visitantes = \''.$postData['visitantes'].'\', post_sticky = \''.$postData['sticky'].'\' WHERE post_id = \''.(int)$post_id.'\'') or die(mysql_error())) { Lo reemplazamos por: // ACTUALIZAMOS if($tsUser->uid == $data['post_user'] || !empty($tsUser->is_admod) || !empty($tsUser->permisos['moedpo'])){ if(mysql_query('UPDATE p_posts SET post_title = \''.$postData['title'].'\', post_portada = \''.$postData['portada'].'\', post_body = \''.$postData['body'].'\', post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_category = \''.(int)$postData['category'].'\', post_private = \''.$postData['private'].'\', post_block_comments = \''.$postData['block_comments'].'\', post_sponsored = \''.$postData['sponsored'].'\', post_smileys = \''.$postData['smileys'].'\', post_visitantes = \''.$postData['visitantes'].'\', post_sticky = \''.$postData['sticky'].'\' WHERE post_id = \''.(int)$post_id.'\'') or die(mysql_error())) { 7) Mas abajo buscamos: // ES SU POST EL Q INTENTA BORRAR? $query = mysql_query('SELECT post_id, post_title, post_user, post_body, post_category FROM p_posts WHERE post_id = \''.(int)$post_id.'\' AND post_user = \''.$tsUser->uid.'\''); $data = mysql_fetch_assoc($query); mysql_query('UPDATE `w_stats` SET `stats_posts` = stats_posts - \'1\' WHERE `stats_no` = \'1\''); mysql_query('UPDATE `u_miembros` SET `user_posts` = user_posts - \'1\' WHERE `user_id` = \''.$data['post_user'].'\''); // ES MIO O SOY MODERADOR/ADMINISTRADOR... if(!empty($data['post_id']) || !empty($tsUser->is_admod)){ // SI ES MIS POST LO BORRAMOS Y MANDAMOS A BORRADORES if(mysql_query('DELETE FROM p_posts WHERE post_id = \''.(int)$post_id.'\'')) { if(mysql_query('DELETE FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\'')) { if(mysql_query('INSERT INTO `p_borradores` (b_user, b_date, b_title, b_body, b_tags, b_category, b_status, b_causa) VALUES (\''.$tsUser->uid.'\', \''.time().'\', \''.$tsCore->setSecure($data['post_title']).'\', \''.$tsCore->setSecure($data['post_body']).'\', \'\', \''.$data['post_category'].'\', \'2\', \'\')')) return "1: El post fue eliminado satisfactoriamente."; } Lo reemplazamos por: // ES SU POST EL Q INTENTA BORRAR? $query = mysql_query('SELECT post_id, post_title, post_portada, post_user, post_body, post_category FROM p_posts WHERE post_id = \''.(int)$post_id.'\' AND post_user = \''.$tsUser->uid.'\''); $data = mysql_fetch_assoc($query); mysql_query('UPDATE `w_stats` SET `stats_posts` = stats_posts - \'1\' WHERE `stats_no` = \'1\''); mysql_query('UPDATE `u_miembros` SET `user_posts` = user_posts - \'1\' WHERE `user_id` = \''.$data['post_user'].'\''); // ES MIO O SOY MODERADOR/ADMINISTRADOR... if(!empty($data['post_id']) || !empty($tsUser->is_admod)){ // SI ES MIS POST LO BORRAMOS Y MANDAMOS A BORRADORES if(mysql_query('DELETE FROM p_posts WHERE post_id = \''.(int)$post_id.'\'')) { if(mysql_query('DELETE FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\'')) { if(mysql_query('INSERT INTO `p_borradores` (b_user, b_date, b_title, b_portada, b_body, b_tags, b_category, b_status, b_causa) VALUES (\''.$tsUser->uid.'\', \''.time().'\', \''.$tsCore->setSecure($data['post_title']).'\', \''.$tsCore->setSecure($data['post_portada']).'\', \''.$tsCore->setSecure($data['post_body']).'\', \'\', \''.$data['post_category'].'\', \'2\', \'\')')) return "1: El post fue eliminado satisfactoriamente."; } 8) Más abajo buscamos: /*********/ $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start); $lastPosts['data'] = result_array($query); Lo reemplazamos por: /*********/ $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_portada, p.post_date, p.post_comments, p.post_puntos, p.post_hits, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start); $lastPosts['data'] = result_array($query); 9) Casi al final buscamos: $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_favoritos, p.post_puntos, u.user_name, c.c_seo, c.c_nombre, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON u.user_id = p.post_user LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' '.$where_cat.' '.$w_autor.' '.$w_search.' ORDER BY p.post_date DESC LIMIT '.$data['pages']['limit']); $data['data'] = result_array($query); Lo reemplazamos por: $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_portada, p.post_date, p.post_comments, p.post_favoritos, p.post_puntos, u.user_name, c.c_seo, c.c_nombre, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON u.user_id = p.post_user LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' '.$where_cat.' '.$w_autor.' '.$w_search.' ORDER BY p.post_date DESC LIMIT '.$data['pages']['limit']); $data['data'] = result_array($query); 10) Ahora abrimos c.borradores.php y buscamos: 'title' => $tsCore->setSecure($tsCore->parseBadWords($_POST['titulo']), true), Agregamos debajo: 'portada' => $tsCore->setSecure($_POST['imagen'], true), 11) Más abajito buscamos: // INSERT if(mysql_query('INSERT INTO `p_borradores` (`b_user`, `b_date`, `b_title`, `b_body`, `b_tags`, `b_category`, `b_private`, `b_block_comments`, `b_sponsored`, `b_sticky`, `b_smileys`, `b_visitantes`, `b_status`, `b_causa`) VALUES (\''.$tsUser->info['user_id'].'\', \''.$draftData['date'].'\', \''.$draftData['title'].'\', \''.$draftData['body'].'\', \''.$draftData['tags'].'\', \''.$draftData['category'].'\', \''.$draftData['private'].'\', \''.$draftData['block_comments'].'\', \''.$draftData['sponsored'].'\', \''.$draftData['sticky'].'\', \''.$draftData['smileys'].'\', \''.$draftData['visitantes'].'\', \'1\', \'\')')) return '1: '.mysql_insert_id(); else return '0: '.mysql_error(); Lo reemplazamos por // INSERT if(mysql_query('INSERT INTO `p_borradores` (`b_user`, `b_date`, `b_title`, `b_portada`, `b_body`, `b_tags`, `b_category`, `b_private`, `b_block_comments`, `b_sponsored`, `b_sticky`, `b_smileys`, `b_visitantes`, `b_status`, `b_causa`) VALUES (\''.$tsUser->info['user_id'].'\', \''.$draftData['date'].'\', \''.$draftData['title'].'\', \''.$draftData['portada'].'\', \''.$draftData['body'].'\', \''.$draftData['tags'].'\', \''.$draftData['category'].'\', \''.$draftData['private'].'\', \''.$draftData['block_comments'].'\', \''.$draftData['sponsored'].'\', \''.$draftData['sticky'].'\', \''.$draftData['smileys'].'\', \''.$draftData['visitantes'].'\', \'1\', \'\')')) return '1: '.mysql_insert_id(); else return '0: '.mysql_error(); 12) Más abajo buscamos: $bid = intval($_GET['action']); $query = mysql_query('SELECT bid, b_user, b_date, b_title, b_body, b_tags, b_category, b_private, b_block_comments, b_sponsored, b_sticky, b_smileys, b_post_id, b_status, b_causa FROM `p_borradores` WHERE `bid` = \''.(int)$bid.'\' AND `b_user` = \''.$tsUser->info['user_id'].'\' AND b_status = \''.$status.'\' LIMIT 1'); // Lo reeemplazamos por: $bid = intval($_GET['action']); $query = mysql_query('SELECT bid, b_user, b_date, b_title, b_portada, b_body, b_tags, b_category, b_private, b_block_comments, b_sponsored, b_sticky, b_smileys, b_post_id, b_status, b_causa FROM `p_borradores` WHERE `bid` = \''.(int)$bid.'\' AND `b_user` = \''.$tsUser->info['user_id'].'\' AND b_status = \''.$status.'\' LIMIT 1'); // Guardamos y ahora nos vamos con elde diseño: 13) abrimos m.agregar_from.tpl que esta en templates/modules y buscamos <li> <label>T&iacute;tulo</label> <span style="display: none;" class="errormsg"></span> <input type="text" tabindex="1" name="titulo" maxlength="60" size="60" class="text-inp required" value="{$tsDraft.b_title}" style="width:760px"/> <div id="repost"></div> </li> Agregamos debajo: <li> <label>Portada</label> <span style="display: none;" class="errormsg"></span> <input type="text" tabindex="2" name="imagen" maxlength="180" size="60" class="text-inp required" value="{$tsDraft.b_portada}" /> <p style="color:#999;font-size: 11px;margin: 2px 0 5px 2px;">URL de la imagen como caratula para la home</p> </li> Y un poco más abajo donde dice "Contenido del post" buscamos tabindex y ese "2" lo cambiamos a "3" 14) Abrimos t.buscador.tpl y buscamos: <td title="{$r.c_nombre}" style="background:url({$tsConfig.tema.t_url}/images/icons/cat/{$r.c_img}) no-repeat center center;">&nbsp;</td> Lo reemplazamos por: <td title="{$r.c_nombre}"><a href="{$tsConfig.url}/posts/{$r.c_seo}/{$r.post_id}/{$r.post_title|seo}.html"><img height="47" width="47" style="border: solid 1px gray;" src="{$r.post_portada}"/></a></td> 15) Al final de estilo.css agregamos #ppostc { padding: 5px; float: left; } #listpost { width: 200px; height: 150px; display: inline-block; position: relative; margin: 5px; box-shadow: 0 1px 4px #BBB; border-radius: 4px; float: left; } #listpost a { display: block; position: relative; text-decoration: none; } #listpost .ptitle { display: table-cell; vertical-align: middle; text-align: center; position: relative; max-width: 170px; color: #FFF; background-color: rgba(0,0,0,0.57); padding: 3px 5px; border-radius: 5px; opacity: 1; z-index: 10; top: 4px; text-shadow: 0 1px 0 black; font-size: 10px; font-family: Helvetica,Arial,sans-serif; font-weight: bold; font-style: italic; } #listpost .pimagen { position: absolute; top: 0; left: 0; display: block; border-radius: 4px; width: 200px; height: 150px; background-color: #f7f7f7; background-image: url('images/load-img.gif'); background-position: center center; background-repeat: no-repeat; } #listpost .pimagen:hover { opacity: 0.7; } #listpost .pimagen img { width: 200px; height: 150px; border: 0; border-radius: 4px; -webkit-filter: grayscale(0%); image-rendering: optimizespeed; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; -ms-interpolation-mode: nearest-neighbor; } #listpost .pinfo { position: absolute; right: 7px; top: 129px; color: white; background-color: rgba(0,0,0,0.57); font-size: 10px; padding: 3px 5px; border-radius: 5px; z-index: 9; text-shadow: 0 1px 0 black; line-height: 9px; } #listpost .pavatar { top: 114px; left: 5px; border-radius: 4px; position: absolute; } #listpost .pavatar img { width: 30px; border-radius: 4px; box-shadow: 0 0 3px black; } #listpost .pbloq { background-position: -220px -120px!important; background: url(images/p-icons.png) no-repeat; display: block; top: 129px; left: 179px; opacity: 0.5; padding: 0px 18px 16px 0; position: absolute; } #listpost .pstar{ display: block; background: url(images/pstar.png) no-repeat; top: 5px; left: 182px; padding: 0px 24px 24px 0; position: absolute; z-index: 10; } #listpost .pinfo span { background: url(images/p-icons.png) no-repeat; display: inline-block; margin: -1px 2px; width: 14px; height: 9px; text-indent: 17px; } #listpost .pinfo .puntos{ background-position: -160px -217px; } #listpost .pinfo .visitas { background-position: -254px -199px; } #listpost .pinfo .comentarios { background-position: -237px -218px; } Descargan este rar → http://puu.sh/2FezU.zip 16) Ahora guardamos y reemplazamos los siguientes archivos de la carpeta modules m.home_last_posts.tpl m.agregar_javascript.tpl 17) subimos las imágenes a la carpeta images load-img.gif p-icons.png pstar.png Y con eso queda terminado el mod, los borradores funcionan perfectamente y le agregue el titulo y la portada al previsualizar el post: He desactivado la opción de "nuevo" o "popular" Si ven en m.home_last_posts.tpl que he modificado, está la linea: <!--{if $p.post_hits > 5} <span class="pstar qtip" title="Popular"></span> {/if}--> Que, si quieren activarlo para que muestre, si tiene más de 5 visitas, una estrella como titulo de "popular", se lo pueden editar a su gusto para cuantas visitas quieran donde dice $p.post_hits > 5 y simplemente eliminan el bloqueo: <!-- y --> Para que quede normalmente así y activo: {if $p.post_hits > 5} <span class="pstar qtip" title="Popular"></span> {/if} Y como extra se podrá ver también en el buscador de post: Y listo, eso es todo, espero les haya gustado el mod ya que muchos me lo habían pedido hace ya un rato pero no lo había publicado para la V4... el diseño pueden cambiárselo a su gusto o editar simplemente m.home_last_posts.tpl donde se ve las portadas en la home y adapten a otros temas. Nos vemos en otro mod, adios.
  23. 37 likes
    Bueno gente les traigo el theme AdminLte, lo hice a pedido... bueno pues vamos con las caps. Caps bueno hasta ahora no le he encontrado ningun bug al theme... y el theme no tiene mi copy ni nada...ya que no es un diseño propio no vale la pena poner copy e,e Descarga :3 https://mega.co.nz/#!iQclXATZ!wuyq6RZtP_QT0IVHOLHQkhdX1MCk67SbnXDgm8A2bZE Demo http://social.jdesign.com.es/ si tienen algun problema lo dejan en los comentarios :3
  24. 35 likes
    Hola, os traigo una nueva versión del editor que aunque aparentemente no tengo muchos cambios, se han corregido muchos errores y tiene algunas cosas nuevas, además de una instalación simplificada. Actualización 26/08/2014 a las 16:50 - Descarga actualizada (wysibb.css), se añadió el fix de los iconos en Firefox. 26/08/2014 a las 23:40 - Descarga actualizada (wysibb.js), se añadió el fix de los vídeos de YouTube. 26/09/2014 a las 02:00 - Descarga actualizada, nueva versión (1.1.0) con todos los bugs conocidos corregidos. 09/03/2015 a las 00:15 - Descarga actualizada, instalador compatible con Risus 1.2. Mejoras de la versión final Nuevos BBCodes: Justificar y Separador. Se han corregido errores menores de manera definitiva. Editor ahora también al enviar el mensaje, no solo al responder. Ahora será más fácil implementar el editor en otros lugares como: comunidades, juegos, etc. Instalación simplificada, aunque la instalación parezca larga, la mayoría de los pasos no los tendréis que hacer. Posibilidad de utilizar el editor en modo de Pantalla Completa. Cambio en el diseño del editor y los diálogos. Mejoras de la final 1.1 Mejora del rendimiento. Error sincronización solucionado Error al editar posts solucionado. Error 0 al publicar posts solucionado. Error al enviar un mensaje solucionado. El editor ya no se expande horizontalmente. Ahora las imagenes se adaptan al tamaño del editor para mejorar la creación de posts. Ya no desaparecen los emoticonos del "mi" que tenían algunas "v5". Se han añadido todos los fixes publicados hasta ahora. Al subir una imagen ya no se duplicará. Capturas Descarga wysiwyg_final_v1.1.1.zip Instalación La instrucciones para acceder a la instalación están dentro de la descarga en el archivo Instrucciones.txt, leer con atención toda la página de la instalación y recordar que la instalación cambia dependiendo si tienes instalada o no la antigua versión del editor.
  25. 35 likes
    Instrucciones para tener lo Home de Mediafire con slide y toda la cosa de Dann Cx Bueno esto lo hago por un pedido que hicieron ahce como 13 dias y dije que en 15 dias lo hacia, bueno con ustedes he aprendido un buen de cosas y queria compartirles esto como agradecimiento Cx esta home estara instalada en 5 segundos .. Vamos a la instalacion ahora si: solo arrastren a la raiz los archivos.. images.. inc.. y index.php van en la raíz :important!; y lo de la carpeta TUTHEME va a dentro de tu theme Las imagenes pueden cambiarlas por las que quieran en la carpeta images recuerden que va en la raiz de la web y no dentro del theme es gracioso porque si abren mediafire y esta index casi no sabran cual es cual Cx tiene copy mio y de phpost no los borren eso es importante otra cosa es que los links de la parte superor de la web de ver más etc etc. los encuentran en el t.guest.tpl son 4 buscan el archivo y buscan por ejemplo: link1 link2 link3 y link4 Cx antes que se me olvide la fecha 2013 la buscan en el t.guest.tpl cambian por 2014 eso seria todo les dejo una captura y una demo (laweb no es mia me la prestaron) cuando instalen la home podemos usar cualquiera de sus webs para usar de demo saludos y espero que les guste por ultimo solo doy soporte dentro de este topic y los creditos.. creditos a todos los usuarios de phpost en especial aquellos que les gusta compartir y no vender y me han hecho aprender varias cosas ahora si la descarga por MEDIAFIRE Cx : http://www.mediafire.com/download/54w5m245wk4791n/index+mediafire.rar capturas: Demo (solo la pedi una semana) luego me prestan otra si quieren cuando instalen Cx http://f.shek.com.es/ si les gusto +1 que son mi droga Cx por cierto igual hize esa imagen si quieren bajenla o usenla Cx nos vemos! -gola
  26. 35 likes
    Les dejo este nuevo tema "Life". Para usarlo deben agregar este mod, es para mostrar el ultimo usuario registrado: Se van a c.posts.php (inc/class) y buscan: /* getLastComentarios() : PARA EL PORTAL */ function getLastComentarios(){ global $tsUser, $tsCore; // $query = mysql_query('SELECT cm.cid, cm.c_status, u.user_name, u.user_activo, u.user_baneado, p.post_id, p.post_title, p.post_status, c.c_seo FROM p_comentarios AS cm LEFT JOIN u_miembros AS u ON cm.c_user = u.user_id LEFT JOIN p_posts AS p ON p.post_id = cm.c_post_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'WHERE p.post_status = \'0\' AND cm.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY cid DESC LIMIT 10'); if(!$query) die(mysql_error()); $data = result_array($query); // return $data; } y abajo de eso agregan: /* getLastUs() : PARA EL PORTAL MOD Ultimos Registrados by LuchoPHP */ function getLastUS(){ global $tsCore; // $query = mysql_query('SELECT user_id, user_name,user_activo FROM u_miembros WHERE user_activo= \'1\' AND user_baneado= \'0\' ORDER BY user_id DESC LIMIT 1'); if(!$query) die(mysql_error()); $data = result_array($query); // return $data; } Ahora van a posts.php (inc/php) y buscan: // DO <= PARA EL MENU $smarty->assign("tsDo",$_GET['do']); y abajo agregan: // Mod Ultimos registrados by LuchoPHP $smarty->assign("tsUlt",$tsPosts->getLastUs()); Al hacer click en la barra de ultimos posts y estadisticas, se ocultan y desocultan Descargalo aquí y te agradezco si mantienes mi copy
  27. 34 likes
    bueno traigo estas adaptaciones del fondo de perfil (tron) y cabecera de perfil tipo facebook (thespeed94) con lightbox (yo) Van a su phpmyadmin y ejecuta las siguientes consultas: ALTER TABLE `u_perfil` ADD `p_fondo` VARCHAR( 120 ) NOT NULL luego esta: ALTER TABLE `u_perfil` ADD `p_fondoper` VARCHAR( 120 ) NOT NULL Abren c.cuenta y buscan: 'sitio' => $tsCore->setSecure($_POST['sitio']), debajo agregan. 'fondo' => $tsCore->setSecure($_POST['fondo']), 'fondoper' => $tsCore->setSecure($_POST['fondoper']), luego buscan: (arriba) /* loadHeadInfo($user_id) */ function loadHeadInfo($user_id){ global $tsUser, $tsCore; // INFORMACION GENERAL $query = mysql_query('SELECT u.user_id, u.user_name, u.user_registro, u.user_last_ip , u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\''); $data = mysql_fetch_assoc($query); reemplazan por: /* loadHeadInfo($user_id) */ function loadHeadInfo($user_id){ global $tsUser, $tsCore; // INFORMACION GENERAL $query = mysql_query('SELECT u.user_id, u.user_name, u.user_registro, u.user_last_ip , u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.p_fondo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_fondoper, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\''); $data = mysql_fetch_assoc($query); luego abren t.perfil y buscan de {include file='sections/main_header.tpl'} <script type="text/javascript" src="{$tsConfig.default}/js/perfil.js"></script> reemplazan por: {include file='sections/main_header.tpl'} <body style="background-image:url('{$tsInfo.p_fondo}');background-attachment: fixed; background-repeat: no-repeat;background-position: center"> <script type="text/javascript" src="{$tsConfig.default}/js/perfil.js"></script> {if $tsInfo.p_fondoper != ''} <div class="cover" style="margin-top: 0px;" data-collapse="97" id="u3yiwu_4"><div class="coverImage"> <div id="zoom-fondo" onClick="zoom('ocultar','zoom')"></div> <div id="zoom"> <center><b id='zoom_contenido'></b></center> </div> <a class="coverWrap" style="{if $tsInfo.p_fondoper}position: relative!important;{/if}" rel="theater" id="fbCoverImageContainer"> <img class="photo img" src="{$tsInfo.p_fondoper}" id="{$tsInfo.p_fondoper}" text="Foto de {$tsInfo.nick}" style="top:-13px;height:300px;width:100%;" data-fbid="2738175107697" onclick="zoom('mostrar','zoom','{$tsInfo.p_fondoper}')"> </a> </div></div> {/if} luego abrimos m.cuenta_perfil_me.tpl y buscan: <div class="field"> <label for="sitio">Sitio Web</label> <input type="text" value="{$tsPerfil.p_sitio}" maxlength="60" name="sitio" id="sitio" class="text cuenta-save-2" style="width:230px"> </div> debajo agregan: <div class="field"> <label for="sitio">Cabecera de Perfil:<br /><font color="red"><span>url de una imagen mayor a 1000 x 230</span></font></label><br /> <input type="text" value="{$tsPerfil.p_fondoper}" maxlength="120" name="fondoper" id="sitio" class="text cuenta-save-2" style="width:230px"> </div> <div class="field"> <label for="sitio">Fondo del perfil:<br /><span><font color="red">url de una imagen mayor a 800 x 600</span></font></label><br /> <input type="text" value="{$tsPerfil.p_fondo}" maxlength="120" name="fondo" id="sitio" class="text cuenta-save-2" style="width:230px"> </div> luego abren su estilo.css y al final ponen: /*-----Cabecera de Perfil-------*/ .coverWrap { display: block; position: absolute; height: 300px; overflow: hidden; margin: 0 auto; text-decoration: none; min-height: 0px; max-height: 300px; } /****** Timeline by tutan ******/ .perfil-avatar2 { float:left; border:6px solid #fff;-webkit-border-radius:2px; margin: -80px 10px 10px 0; } .perfil-avatar2 img { background-color: #FFF; border:1px solid #CCCCCC; height:120px; width:120px; } #zoom-fondo { display:none;/*ocultar el fondo*/ position: fixed; /*posicionamos el fondo movible*/ cursor: pointer;/*colocamos el cursor de mano al fondo*/ top: 0; left: 0; width: 100%; /*fondo al total de la pantalla*/ height: 100%; background:#000; /*color de fondo*/ z-index:101;/*posicion de primer plano*/ /*opacidad del fondo*/ filter:alpha(opacity=75); -moz-opacity:0.6; -khtml-opacity: 0.6; opacity: 0.6; } .cerrar-fondo { display:none;/*ocultar el fondo*/ position: fixed; /*posicionamos el fondo movible*/ cursor: pointer;/*colocamos el cursor de mano al fondo*/ top: 1; left: 1; background:#000 url(images/icons/close.png) no-repeat;/*color de fondo*/ z-index:101;/*posicion de primer plano*/ /*opacidad del fondo*/ } #zoom{ height: auto; margin: 0 auto; width: 50%; display:none;/*ocultar el contenedor*/ position: fixed; margin-top:-5%; text-shadow: 0 1px 1px rgba(0,0,0,.3);/*sombra del texto*/ color: #FFF; font: 14px arial,sans-serif;text-align:left; background:#000;/*color de fondo*/ z-index:101;/*pocicionamiento de segundo plano*/ border : 5px solid #000;/*ancho y color de borde*/ -moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px/*redondes del marco*/ } .maxin { max-width: 620px; max-height: 430px; } .a { color: #00BFFF; padding:3px; margin:2px; background:#78899; } Abren su m.perfil_headinfo y buscan: <div class="perfil-avatar"> <a href="{$tsConfig.url}/perfil/{$tsInfo.nick}"><img alt="" src="{$tsConfig.url}/files/avatar/{if $tsInfo.p_avatar}{$tsInfo.uid}_120{else}avatar{/if}.jpg"/></a> </div> reemplazan por: {if $tsInfo.p_fondoper != ''} <div class="perfil-avatar2"> <a href="{$tsConfig.url}/perfil/{$tsInfo.nick}"><img alt="" src="{$tsConfig.url}/files/avatar/{if $tsInfo.p_avatar}{$tsInfo.uid}_120{else}avatar{/if}.jpg"/></a> </div> {else} <div class="perfil-avatar"> <a href="{$tsConfig.url}/perfil/{$tsInfo.nick}"><img alt="" src="{$tsConfig.url}/files/avatar/{if $tsInfo.p_avatar}{$tsInfo.uid}_120{else}avatar{/if}.jpg"/></a> </div> {/if} para terminar abren su acciones.js y al final agregan: caps: Demo: http://isidro.mytech.com.mx/perfil/jtaco263
  28. 34 likes
    Que tal comunidad... Es hora de aclarar algunas cosas y dar algunas noticias poco agradables para algunos. PHPost está por cumplir 2 años desde que yo (Neutrón) con un poco de tiempo y ganas comencé a desarrollar un script que se pareciera a T! pues los que existían no me gustaban después de 6 meses de desarrollo lancé lo que sería la Alfa 1.0 todo esto lo hice sin conocimientos sólidos en cuanto a la programación, estándares web y demás cosas que llevan a scripts como este a ser grandes proyectos, tal vez por eso nunca llegamos a un auge tan grande como yo lo esperaba, sin embargo tuvimos éxito, gracias a las nuevas "herramientas" que se le incorporaron al script como el muro, fotos y demás (Taringa! nos copiaría después xD) al ver este éxito prometí una versión mejorada corrigiendo todos los errores, pero... jamás cumplí por una u otra razón sea personal o escolar. Después y gracias al flojo de Ismael xD "contratamos" a Isidro como administrador y poco tiempo después fue el quien arregló un poco la versión existente y la lanzó con el nombre clave de Risus, esta versión estaba más completa y corregía la mayoría de errores, esto fue a un año después de la versión original Alfa 1.0, sin embargo no fue la versión que yo tanto había prometido... En varias ocasiones intenté retomar el desarrollo de PHPost "Rain" que sería la nueva versión, pero casi siempre terminaba desechandola por falta de tiempo o incluso de "ganas" para trabajar en ella, hace poco se unieron a la comunidad personas con conocimientos sólidos en programación que se ofrecieron al desarrollo de PHPost sin embargo por mi falta "interés" y su poca paciencia decidieron comenzar con su propio proyecto (Otro "clon" de Taringa!). Recordemos que actualmente existe otro proyecto clon de T! llamado Spirate el cual también hace meses ha prometido una nueva versión y hasta ahora sigue sin aparecer. Lo anterior me hizo reflexionar sobre el futuro del PHPost, sumado a lo que sucedió hace algunos meses con el cierre de Megaupload y otros servidores que permitían compartir archivos y los cuales eran las fuentes principales de visitas a sitios como Taringa! también la aprobación de nuevas leyes que tratan de erradicar la piratería en internet ha obligado incluso a la propia Taringa! a censurar su contenido, seamos claros las visitas y fama de T! se lo ha ganado gracias a las descargas ilegales, ahora que ha censurado está sufriendo las consecuencias, hace poco leí un post en T! donde hablaba que la actividad y visitas su sitio www.taringa.net están cayendo demasiado bajo todo a consecuencia del ya no permitir enlaces a archivos. También me puse a revisar las estadísticas de PHPost, las cuales van cayendo, algunas personas dicen que la falta de actividad en nuestro sitio es porque no damos soporte al script, sin embargo no creo que esa sea la causa principal, al igual que Taringa! los sitios clones sean hechos con PHPost o no también van en declive pues las visitas disminuyen cada vez más. Una desventaja de tener un sitio similar a Taringa! es que si permitimos las descargas no podremos colocar Adsense para ganar un poco de dinero con publicidad y es por eso que varios usuarios han cerrado su sitio y ya no vuelven a PHPost, hablando de ganancias... PHPost no deja $$$ como muchos pensarían con la publicidad de Adsense (captura: http://puu.sh/1c37p) muchas veces nos hemos visto en la necesidad de poner de nuestra bolsa para pagar servidor, dominio, ip.board, etc. Pero bueno no quiero hacer esto más largo... En base a todo lo anterior se ha tomado una decisión... PHPost deja de ser un software clon de Taringa! Actualmente existen algunos scripts sobrevivientes de Zinfinal, Spirate está por sacar su nueva versión y pronto otro script será lanzado para competir en la categoría de (Link Sharing System) nosotros creemos que ya no tiene caso seguir desarrollando un script clon de un sitio que va en declive, y que no permite al administrador obtener ingresos con publicidad por el tipo de contenido.Tal vez esta decisión no les parezca a muchos de ustedes he incluso les moleste y lo entendemos, algunos ponen mucho esfuerzo en sus "webs" sin embargo es una decisión definitiva. Esto no quiere decir que PHPost desaparezca o cierre definitivamente, (el foro para pedir y dar soporte para PHPost Risus seguirá abierto). Nosotros simplemente queremos desarrollar algo nuevo y diferente... Para esto necesitamos de su ayuda, necesitamos ideas para un nuevo software, script, o como le quieran llamar, queremos saber que les gustaría que se desarrollara, que características debería tener, no hay imposibles "Si se puede imaginar, se puede programar." Por favor dejen sus ideas y opiniones en este topic, seleccionaremos las mejores y pronto se hará un tema para ver que hemos decidido. Espero comprendan el porqué de nuestra decisión. ¡Gracias por todo! La administración.
  29. 34 likes
    Hola. Tenía la idea de publicar este mod hace varios meses, y ya que tutan no tiene tiempo para reparar el de él, decidí hacer mi propio fb connect. Pronto publicaré más complementos para este plugin, por ahora sólo dejé lo más importante. La instalación es idéntica a la de y Twitter Connect, pero la clase núcleo del mod (/inc/class/c.facebook.php) está más renovada, completamente con funciones y variables estáticas y la cualidad que no globalicé ninguna variable dentro de las funciones, directamente utilicé la variable superglobal $GLOBALS que ahorra más memoria del servidor. De paso es la segunda vez que hago este post, lo había dejado en borradores y se eliminó automáticamente -.- Instalación 1) Ir a https://developers.facebook.com/apps?ref=mb y hacer click en "Crear nueva aplicación" (Deben tener confirmada su cuenta de facebook para poder crear aplicaciones). Les aparecerá una ventana modal como esta: En nombre de la aplicación pueden poner el nombre de su web, en espacio de nombres de la aplicación ponen un nombre corto, la última casilla no la tilden. Los llevará a un dashboard con los datos de su aplicación, donde también podrán configurarla. De ahí utilizaremos App ID y App Secret. Lo configuran así: En "App Domains" coloquen la url de su web sin http ni www. En sandbox mode tilden "desactivado". Abajo, en "selecciona cómo tu aplicación se integra con Facebook" Seleccionan la primera opción de Sitio web con Facebook Login y coloquen la url de su sitio con http y sin las www. Opcional: En el sidebar de la izquierda, en el apartado de "Detalles de la aplicación" pueden configurar otros datos como la imagen de la aplicación, descripción, categoría, etc. 2) Ejecutar la siguiente consulta en la pestaña "SQL" de su phpMyAdmin: ALTER TABLE `u_miembros` ADD `user_fb` VARCHAR( 40 ) NOT NULL 3) Subir los archivos del zip que dejé adjunto, en ese solo zip está el template del facebook-finish para el theme TaringaV5gonzalogranate y el theme default, lo descomprimen en la raíz del sitio y reemplazar, abrir c.facebook.php que está en /inc/class/ y en: private static $FBPublic = ''; Entre las comillas '' coloquen su App ID. En la línea de abajo: private static $FBPrivate = ''; Entre las comillas '' colocan su App Secret. 4) Abrir header.php y buscar include TS_EXTRA.'QueryString.php'; Debajo colocar: // Facebook Connect include TS_CLASS.'c.facebook.php'; Buscar: $smarty =& tsSmarty::getInstance(); Debajo colocar: // Facebook Connect $facebook = new FBConnect; Buscar: $smarty->assign('tsMPs',$tsMP->mensajes); Debajo colocar: // Facebook Connect $s = FBConnect::$fbData; $s['username'] = str_replace('.', '_', $s['username']); $smarty->assign('facebook', $s); 5) Abrir /inc/class/c.user.php (si tienen instalado el twitter connect o el microsoft account connect no tienen que hacer esta parte) y buscar: function loginUser($username, $password, $remember = FALSE, $redirectTo = NULL) { reemplazar por: function loginUser($username, $password, $remember = FALSE, $redirectTo = NULL, $fb = false) { Buscan: $pp_password = md5(md5($password) . $username); reemplazan por: if($fb === false) $pp_password = md5(md5($password) . $username); else $pp_password = $password; Si usan V4 (theme default): 6) Abrir head_menu.tpl que está en /themes/tutheme/templates/sections/ y buscar: <div id="login_error" style="display: none; padding:3px 0;"></div> Abajo poner: <center><a href="/facebook-connect/"><img src="http://i.imgur.com/cw9IOMM.png"></a></center><br /> 7) Abrir m.cuenta_sidebar.tpl que está en /themes/tutheme/templates/modules/ y buscar: <div id="prueba"></div> Arriba poner: {if !$tsUser->info.user_fb} <br /><center><a href="/facebook-connect/"><img src="http://i.imgur.com/cw9IOMM.png"></a></center> {else} <br /><center><span style="color:green">Estás vinculado con Facebook</span></center>{/if} 8) Abrir p.registro.form.tpl que está en /themes/tutheme/templates/t.php_files/ y buscar: <div id="RegistroForm"> Abajo poner: <center><a href="/facebook-connect/"><img src="http://i.imgur.com/cw9IOMM.png"></a></center><br /> Si usan V5 (Hecho en theme Taringa V5 3.0 de Gonzalo): 6) Abrir main_header.tpl que está en /themes/tuthemev5/templates/sections/ y buscar: <a style="float:left;background:url(/themes/TaringaV5gonzalogranate/imagesgonza/fb-icon.png);width:22px;height:22px;margin:14px 14px 0 0"></a> Reemplazar por: <a href="/facebook-connect/" style="float:left;background:url(/themes/TaringaV5gonzalogranate/imagesgonza/fb-icon.png);width:22px;height:22px;margin:14px 14px 0 0"></a> En el mismo archivo buscar: <div class="login_cuerpo"> y abajo poner: <center><a href="/facebook-connect/"><img src="http://i.imgur.com/cw9IOMM.png"></a></center><br /> 7) Abrir m.cuenta_sidebar.tpl que está en /themes/tuthemev5/templates/modules/ y buscar: <div style="background: #CCC;padding:2px;line-height:17px"><div style="width: {$tsPerfil.porcentaje}%; height:17px;border-right:1px solid #004b8d; border-left: 1px solid #004b8d;background: url('{$tsConfig.tema.t_url}/images/barra.gif') top left repeat-x;" id="porc-completado-barra"></div></div> y abajo poner: {if !$tsUser->info.user_fb}<center><a href="/facebook-connect/"><img src="http://i.imgur.com/cw9IOMM.png"></a></center><br />{else} <center><span style="color:green">Estás vinculado con Facebook</span></center><br />{/if} 8) Abrir p.registro.form.tpl que está en /themes/tuthemev5/templates/t.php_files/ y buscar: <div id="RegistroForm"> Abajo poner: <center><a href="/facebook-connect/"><img src="http://i.imgur.com/cw9IOMM.png"></a></center><br /> Demo: http://phpost.clanpirata.com.ar No me parece necesario dejar capturas ya que dejé la demo para que vean por ustedes mismos. FAQs ¿Es compatible con Microsoft y Twitter Connect? R = Sí, es totalmente compatible ¿Es compatible con el Facebook Connect que publicó tutan hace unos meses? R = No he probado, pero sería en vano tener dos facebooks connects, lo ideal sería quitar el otro. Como dije, esto es sólo lo más importante (1.0). Pronto lanzaré otra versión que tendrá agregados y más mejoras, en cuanto a diseño, funcionalidades, etc. Saludos Facebook Connect.zip
  30. 33 likes
    Hola a todos Hemos notado que ha habido personas malintencionadas con ganas de joder a nuestros usuarios con promesas de Mods para sus webs, pero lo que hay detrás de esto es que borran tablas de la base de datos, entregan informacion valiosa como la cuenta del ftp o cPanel ._. Por esa razon es que queremos que los inocentes usuarios con ganas de mejorar su web primero revisen que están instalando por favor y seguir estas recomendaciones. Ver quien ha publicado el Mod (sospechar de los miembros que tengan pocos mensajes publicados en el foro), de cumplirse eso, preguntarle a algún Moderador o Programador revisar el mod publicado. Sospechar de Mods que tengan como forma de Instalación un archivo install.php (no estoy diciendo que ninguno lo pueda tener, pero revisar el siguiente punto) Hemos visto ya como 3 topics con mods con un installer cuya sentencia SQL era el siguiente: ("DROP TABLE `f_comentarios`, `f_fotos`, `f_votos`, `p_borradores`, `p_comentarios`, `p_posts`, `p_votos`, `u_miembros`, `u_sessions`, `u_suspension`, `w_configuracion`, `w_stats`") Lo que hace es eliminar las tablas, dejando como producto la web hecha m** ._. No instalar Mods en Categorías diferentes a esta "Mods Terminados", si es sospechoso el aporte se dará de baja al usuario y a su suspuesto "mod". Y por último repetirles, hacer backup de los archivos que vayan a reemplazar y de la base de datos por si algo malo pasa. Cualquier información es bien recibida, saludos y lamentamos los inconvenientes que se presentaron esa semana con esos lammers, saludos.
  31. 32 likes
    Theme IpBoard Phpost 2013 Bueno gente de phpost, Aqui les quiero dejar este theme que lo hice vasado en el que usa el foro.. Trae algunas funciones similares, que la podran ver cuando la usen.. Esta trae el Mods de las categorias principales que habia dejado antes, Que trae este Theme.. Puntage similar al de foro de phpos, en los posts y comentarios. Firma del usuario en los comentarios. Rangos asignados estylo el foro, cambian por puntos autmoaticamente. Trae las categorias Principales donde solo se veran los posts en sus prespectivas seccion. Aqui les dejo el theme, http://www.mediafire.com/?cj4mmteqv6qcl3f dentro del el trae junto el instalar.php que deberan ejecutarlo. http://tuweb/instalar.php/ Son para las categorias principales.. Tambien Aclaro que hay archivos de la carpeta class y php, que deberan de sustituir.. Les iva a dejar la forma manual pero seria demaciada extensa.. pero para el que la quiera probar, tome precausiones y aga una copia de sus archivos ok.. NOTAS IMPORTANTES... Recuerden de configurar las secciones de las categorias en admin / categorias deben de darle a las categoria una que la identifique, si no todas se veran en la categoria default que seria la categoria D, las principales son las A, B, y C. Cada una se vera en su respectiva categria Nadamas.. Si usan Un posts para Stiky y esta en una categoria principal solo se vera en la de la rincipal, Claro que tendra un resalto en ello. Para mas cosas a entenderlo mejor.. les dej una capas.. y una Demo para que la entiendan.. Talves les cueste un poco entenderla pero veran que es facil comprender su mecanismo.. Aclaro que este theme es una vercion v1 xq me faltaron hacerle mas cosas. Por motivos de estudio no las puedo terminar ahora, sacare la V2 cuando regrese ok.. sera con muchas cosas diferente ... DEMO Espero que les sea de su Agrado.. por cualquier cosa me envian mp y les respondere.. Siempre lean los comentarios xq surgen cosas nuevas que les interesarasn.. Saludos...
  32. 32 likes
    Tercer mod del día bueno este es uno a pedido, agregar y quitar emoticonos desde el admin obviamente SOLO PARA RISUS fotos: instrucciones: Ejecutar esta consulta: CREATE TABLE `test`.`w_emoticonos` ( `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `code` VARCHAR( 50 ) NOT NULL , `imagen` VARCHAR( 50 ) NOT NULL ) ENGINE = InnoDB; abrir bbcode.inc.php (inc/ext) buscar y borrar: $bbcode[] =""; $html[] = $pre."001.png".$end; $bbcode[] =""; $html[] = $pre."002.png".$end; $bbcode[] =""; $html[] = $pre."003.gif".$end; $bbcode[] =""; $html[] = $pre."004.png".$end; $bbcode[] ="(H)"; $html[] = $pre."006.png".$end; $bbcode[] =""; $html[] = $pre."104.png".$end; $bbcode[] ="8o|"; $html[] = $pre."049.png".$end; $bbcode[] =":S"; $html[] = $pre."009.png".$end; $bbcode[] =":$"; $html[] = $pre."008.png".$end; $bbcode[] =""; $html[] = $pre."010.png".$end; $bbcode[] =":'("; $html[] = $pre."011.gif".$end; $bbcode[] =":|"; $html[] = $pre."012.png".$end; $bbcode[] ="(6)"; $html[] = $pre."013.png".$end; $bbcode[] ="8-|"; $html[] = $pre."050.png".$end; $bbcode[] =":-/"; $html[] = $pre."083.png".$end; $bbcode[] ="^o)"; $html[] = $pre."051.png".$end; // EXTRAS SMILES $bbcode[] = "(A)"; $html[] = $pre."014.png".$end; $bbcode[] = ":["; $html[] = $pre."043.png".$end; $bbcode[] = ":-#"; $html[] = $pre."048.png".$end; $bbcode[] = ":-*"; $html[] = $pre."052.png".$end; $bbcode[] = "+o("; $html[] = $pre."053.png".$end; $bbcode[] = "(brb)"; $html[] = $pre."066.gif".$end; $bbcode[] = ":^)"; $html[] = $pre."072.gif".$end; $bbcode[] = "*-)"; $html[] = $pre."073.gif".$end; $bbcode[] = "<o)"; $html[] = $pre."075.gif".$end; $bbcode[] = "8-)"; $html[] = $pre."076.gif".$end; $bbcode[] = "|-)"; $html[] = $pre."078.gif".$end; $bbcode[] =";-/"; $html[] = $pre."082.png".$end; $bbcode[] ="(jk)"; $html[] = $pre."084.png".$end; $bbcode[] = "(j)"; $html[] = $pre."086.png".$end; $bbcode[] = "(V)"; $html[] = $pre."087.png".$end; $bbcode[] = "(lol)"; $html[] = $pre."089.gif".$end; $bbcode[] = "(xD)"; $html[] = $pre."090.png".$end; $bbcode[] = ":8)"; $html[] = $pre."088.png".$end; $bbcode[] = "(ff)"; $html[] = $pre."091.gif".$end; $bbcode[] = "(fm)"; $html[] = $pre."092.gif".$end; $bbcode[] = ":'|"; $html[] = $pre."093.gif".$end; $bbcode[] = ":]"; $html[] = $pre."094.gif".$end; $bbcode[] = ":}"; $html[] = $pre."095.png".$end; $bbcode[] = "(BOO)"; $html[] = $pre."096.png".$end; $bbcode[] = "*|"; $html[] = $pre."097.gif".$end; $bbcode[] = "*\\"; $html[] = $pre."098.png".$end; $bbcode[] = "(wm)"; $html[] = $pre."100.png".$end; $bbcode[] = "(xo)"; $html[] = $pre."101.gif".$end; // OBJECTOS $bbcode[] = "(l)"; $html[] = $pre."015.png".$end; $bbcode[] = "(u)"; $html[] = $pre."016.png".$end; $bbcode[] = "(@)"; $html[] = $pre."018.png".$end; $bbcode[] = "(&)"; $html[] = $pre."019.png".$end; $bbcode[] = "(S)"; $html[] = $pre."020.png".$end; $bbcode[] = "(*)"; $html[] = $pre."021.png".$end; $bbcode[] = "(~)"; $html[] = $pre."022.png".$end; $bbcode[] = "(8)"; $html[] = $pre."023.png".$end; $bbcode[] = "(E)"; $html[] = $pre."024.png".$end; $bbcode[] = "(F)"; $html[] = $pre."025.png".$end; $bbcode[] = "(W)"; $html[] = $pre."026.png".$end; $bbcode[] = "(O)"; $html[] = $pre."027.gif".$end; $bbcode[] = "(K)"; $html[] = $pre."028.png".$end; $bbcode[] = "(G)"; $html[] = $pre."029.png".$end; $bbcode[] = "(^)"; $html[] = $pre."030.png".$end; $bbcode[] = "(P)"; $html[] = $pre."031.png".$end; $bbcode[] = "(I)"; $html[] = $pre."032.png".$end; $bbcode[] = "(C)"; $html[] = $pre."033.png".$end; $bbcode[] = "(T)"; $html[] = $pre."034.png".$end; $bbcode[] = "({)"; $html[] = $pre."035.png".$end; $bbcode[] = "(})"; $html[] = $pre."036.png".$end; $bbcode[] = "("; $html[] = $pre."037.png".$end; $bbcode[] = "(D)"; $html[] = $pre."038.png".$end; $bbcode[] = "(Z)"; $html[] = $pre."039.png".$end; $bbcode[] = "(X)"; $html[] = $pre."040.png".$end; $bbcode[] = "(Y)"; $html[] = $pre."041.png".$end; $bbcode[] = "(N)"; $html[] = $pre."042.png".$end; $bbcode[] = "(nnh)"; $html[] = $pre."044.png".$end; $bbcode[] = "(#)"; $html[] = $pre."046.png".$end; $bbcode[] = "(R)"; $html[] = $pre."047.png".$end; $bbcode[] = "(sn)"; $html[] = $pre."054.png".$end; $bbcode[] = "(tu)"; $html[] = $pre."055.png".$end; $bbcode[] = "(pl)"; $html[] = $pre."056.png".$end; $bbcode[] = "(||)"; $html[] = $pre."057.png".$end; $bbcode[] = "(pi)"; $html[] = $pre."058.png".$end; $bbcode[] = "(so)"; $html[] = $pre."059.png".$end; $bbcode[] = "(au)"; $html[] = $pre."060.png".$end; $bbcode[] = "(ap)"; $html[] = $pre."061.png".$end; $bbcode[] = "(um)"; $html[] = $pre."062.png".$end; $bbcode[] = "(ip)"; $html[] = $pre."063.png".$end; $bbcode[] = "(co)"; $html[] = $pre."064.png".$end; $bbcode[] = "(mp)"; $html[] = $pre."065.png".$end; $bbcode[] = "(st)"; $html[] = $pre."067.png".$end; $bbcode[] = "(pu)"; $html[] = $pre."102.png".$end; $bbcode[] = "(yn)"; $html[] = $pre."068.png".$end; $bbcode[] = "(h5)"; $html[] = $pre."069.gif".$end; $bbcode[] = "(mo)"; $html[] = $pre."070.png".$end; $bbcode[] = "(bah)"; $html[] = $pre."071.png".$end; $bbcode[] = "(li)"; $html[] = $pre."074.gif".$end; $bbcode[] = "(wo)"; $html[] = $pre."077.png".$end; $bbcode[] = "'.'"; $html[] = $pre."080.png".$end; $bbcode[] = "(bus)"; $html[] = $pre."045.png".$end; $bbcode[] = "*p*"; $html[] = $pre."079.png".$end; $bbcode[] ="*s*"; $html[] = $pre."085.png".$end; $bbcode[] = "(M)"; $html[] = $pre."017.png".$end; $bbcode[] = "(xx)"; $html[] = $pre."103.png".$end;[/code] en su lugar ponen: [code] $query = mysql_query('SELECT code, imagen FROM w_emoticonos'); while($reg=mysql_fetch_array($query)) { $bbcode[] = $reg['code']; $html[] = $pre.$reg['imagen'].$end; } luego insertan todos los emoticonos en la rabla w_emoticonos que creamos ejecutando la siguiente consulta sql: INSERT INTO `w_emoticonos` (`id`, `code`, `imagen`) VALUES ('', '001.png'), ('', '002.png'), ('', '003.gif'), ('', '004.png'), ('(H)', '006.png'), ('', '104.png'), ('8o|', '049.png'), (':S', '009.png'), (':$', '008.png'), ('', '010.png'), (':''(', '011.gif'), (':|', '012.png'), ('(6)', '013.png'), ('8-|', '050.png'), (':-/', '083.png'), ('^o)', '051.png'), ('(A)', '014.png'), (':[', '043.png'), ('-#', '048.png'), (':-*', '052.png'), ('+o(', '053.png'), ('(brb)', '066.gif'), (':^)', '072.gif'), ('*-)', '073.gif'), ('<o)', '075.gif'), ('8-)', '076.gif'), ('|-)', '078.gif'), (';-/', '082.png'), ('(jk)', '084.png'), ('(j)', '086.png'), ('(V)', '087.png'), ('(lol)', '089.gif'), ('(xD)', '090.png'), (':8)', '088.png'), ('(ff)', '091.gif'), ('(fm)', '092.gif'), (':''|', '093.gif'), (':]', '094.gif'), (':}', '095.png'), ('(BOO)', '096.png'), ('*|', '097.gif'), ('*\\\\', '098.png'), ('(wm)', '100.png'), ('(xo)', '101.gif'), ('(l)', '015.png'), ('(u)', '016.png'), ('(@)', '018.png'), ('(&)', '019.png'), ('(S)', '020.png'), ('(*)', '021.png'), ('(~)', '022.png'), ('(8)', '023.png'), ('(E)', '024.png'), ('(F)', '025.png'), ('(W)', '026.png'), ('(O)', '027.gif'), ('(K)', '028.png'), ('(G)', '029.png'), ('(^)', '030.png'), ('(P)', '031.png'), ('(I)', '032.png'), ('(C)', '033.png'), ('(T)', '034.png'), ('({)', '035.png'), ('(})', '036.png'), ('(', '037.png'), ('(D)', '038.png'), ('(Z)', '039.png'), ('(X)', '040.png'), ('(Y)', '041.png'), ('(N)', '042.png'), ('(nnh)', '044.png'), ('(#)', '046.png'), ('(R)', '047.png'), ('(sn)', '054.png'), ('(tu)', '055.png'), ('(pl)', '056.png'), ('(||)', '057.png'), ('(pi)', '058.png'), ('(so)', '059.png'), ('(au)', '060.png'), ('(ap)', '061.png'), ('(um)', '062.png'), ('(ip)', '063.png'), ('(co)', '064.png'), ('(mp)', '065.png'), ('(st)', '067.png'), ('(pu)', '102.png'), ('(h5)', '069.gif'), ('(mo)', '070.png'), ('(bah)', '071.png'), ('(li)', '074.gif'), ('(wo)', '077.png'), ('&#039;.&#039;', '080.png'), ('(bus)', '045.png'), ('*p*', '079.png'), ('*s*', '085.png'), ('(M)', '017.png'), ('(xx)', '103.png');[/code] ahora editamos el archivo [b]m.admin_sidemenu.tpl[/b] (themes/default/templates/admin_mods/) buscar: [code]<li id="a_medals"><span class="cat-title"><a href="{$tsConfig.url}/admin/medals">Medallas</a></span></li> agregar debajo: <li id="a_medals"><span class="cat-title"><a href="{$tsConfig.url}/admin/emoticones">Emoticones</a></span></li>[/code] ahora editamos el archivo [b]t.admin.tpl [/b](themes/default/templates/) buscar: [code] {elseif $tsAction == 'medals'} {include file='admin_mods/m.admin_medallas.tpl'}[/code] agregar debajo: [code]{elseif $tsAction == 'emoticones'} {include file='admin_mods/m.admin_emoticones.tpl'}[/code] Abrir [b]admin.php[/b] (inc/php) buscar: [code]/** MEDALLAS **/[/code] agregar arriba: [code] /** Emoticonos **/ } elseif($action == 'emoticones'){ if(empty($act)) { $que = mysql_query('SELECT id, code, imagen FROM w_emoticonos'); $smarty->assign('tsEmos',result_array($que)); } elseif ($act == 'newpost') { $code = $tsCore->setSecure($_POST['code']); $imagen = $tsCore->setSecure($_POST['imagen']); if(!empty($code) && !empty($imagen)) { mysql_query('INSERT INTO w_emoticonos(code, imagen) values(\''.$code.'\',\''.$imagen.'\')'); $que = mysql_query('SELECT id, code, imagen FROM w_emoticonos'); $smarty->assign('tsEmos',result_array($que)); $act=''; } else { $smarty->assign('tsError','Debe completar los campos'); $act='nuevo'; } } elseif ($act == 'del') { $id = (int) $_GET['id']; mysql_query('DELETE FROM w_emoticonos WHERE id = '.$id); $que = mysql_query('SELECT id, code, imagen FROM w_emoticonos'); $smarty->assign('tsEmos',result_array($que)); $act = ''; }[/code] ahora crean m.admin_emoticones.tpl (themes/default/templates/admin_mods/) con el siguiente contenido: [code] <div class="boxy-title"> <h3>Emoticones</h3> </div> <div id="res" class="boxy-content"> {if $tsSave}<div class="mensajes ok">Tus cambios han sido guardados.</div>{/if} {if $tsError}<div class="mensajes error">{$tsError}</div>{/if} {if !$tsAct} {if !$tsEmos} <div class="phpostAlfa">No hay emoticones.</div> {else} <table cellpadding="0" cellspacing="0" border="0" class="admin_table" width="550" align="center"> <thead> <th>ID</th> <th>Imagen</th> <th>Codigo</th> <th>Archivo</th> <th>Acciones</th> </thead> <tbody> {foreach from=$tsEmos item=e} <tr id="medal_id_{$m.medal_id}"> <td>{$e.id}</td> <td><img src="{$tsConfig.default}/images/smiles/{$e.imagen}" /></td> <td>{$e.code}</td> <td>{$e.imagen}</td> <td class="admin_actions"> <a href="{$tsConfig.url}/admin/emoticones?act=del&id={$e.id}"><img src="{$tsConfig.default}/images/icons/close.png" title="Borrar Emoticono" /></a> </td> </tr> {/foreach} </tbody> </table><hr /> {/if} <input type="button" onclick="location.href = '{$tsConfig.url}/admin/emoticones?act=nuevo'" value="Agregar nuevo emoticono" class="mBtn btnOk"/> {elseif $tsAct == 'nuevo'} <form action="{$tsConfig.url}/admin/emoticones?act=newpost" method="post" autocomplete="off"> <fieldset> <legend>Nuevo emoticono</legend> <dl> <dt><label for="med_name">Imagen:</label><br /><span>(ejemplo: 002.png)</span></dt> <dd><input type="text" id="" name="imagen" value="{$tsMed.m_title}" /></dd> </dl> <dl> <dt><label for="ai_desc">Codigo:</label><br /><span>el c&oacute;digo para el emoticono ej: </span></dt> <dd><input type="text" id="" name="code" value="{$tsMed.m_title}" /></dd> </dl> <hr /> <p><input type="submit" name="save" value="Crear Emoticono" class="btn_g"/></p></fieldset> </form> {/if} </div>[/code] listo, ya tenemos el administrador de emoticones salute!
  33. 32 likes
    Buenas gente vine a traer la ultima v5 que hare oksi bueno pensaba dejarla posteada solo en la web de erick pero por motivos personales creo que es mejor tambien postearla aca. BUENO ESTO ES IMPORTANTE DEBEN SEGUIR PASO A PASO TODO LO QUE ESTE ESCRITO EN EL ARCHIVO .TXT QUE DEJE ADENTRO DEL RAR. NI BIEN ABREN EL RAR METEN TODO LO QUE HALLA EN LA RAIZ DE SU WEB.DEBEN ASEGURARSE QUE ESTEN PONIENDO EL TEMA EN UNA WEB CON EL SCRIPT LIMPIO, SI YA TIENEN MODS NO ACOSEJO USAR LA PLANTILLA SIN ANTES CONTACTARME PORQUE PUEDE DAR ERRORES QUE LUEGO UDS ATRIBUYEN A MI CULPA CUANDO EN REALIDAD NO ES ASI. Dejo caps: DESDE ACA LAS CAPS VAN EN LINK PORQUE NO PUEDO PONER MAS FOTOS http://i.imgur.com/Ao9Vo.png ACLARO PUSE LA SECCION DE USUARIOS OSEA TUWEB/USUARIOS/ COMO EN LA V5 DE TOUP, ACLARO PARA QUE NO ME DIGAN CHORRO OK? SIMPLEMENTE ME GUSTO Y LO PUSE VALE? http://i.imgur.com/evOkO.png http://i.imgur.com/sdIDo.png http://i.imgur.com/O4ulj.png VIENDO MI PERFIL LOGEADO COMO OTRO USER http://i.imgur.com/rHvPJ.png VIENDO MI PERFIL LOGEADO COMO YO -YAO http://i.imgur.com/gk4XF.png http://i.imgur.com/xnbi9.png BUENO ESO ES TODO SI TIENEN ALGUN ERROR ME AVISAN A MI POR MP (PROMETO AHORITA IR A BORRAR MENSAJES PARA QUE PUEDA RECIBIR LOS QUE ME MANDEN -OK? Bueno dejo el link y les recuerdo que valoren que yo si comparto saben porque digo esto? porque uds piden 2 v5 de las cuales para que tengan 1 de esas el creador los extorciona con "si no soy diseñador no publico nada" o "si en las postulaciones no llego al rango creo que no publicare nada jeje" y la otra "gran" v5 la cual JAMAS salio a luz y uds JAMAS la tuvieron ni la van a tener porque NO existe. Ahora me parece que yo de buena onda la comparto no da para que me vengan a insultar, si vuelven a cerrar este topic porque me arman bardo quisa sea mi ultimo aporte. link: http://www.mediafire.com/?5ju7b8rj5cc6jld
  34. 31 likes
    Hola amigos, pues a pedido de Maxi(http://www.phpost.net/user/673-maxi/) os traigo este MOD de que para poder ver los links del post el usuario debe comentarlo 1º. ¿Que tiene? - Si es un visitante se le pide que se registre - Si no comentó el post se le dice que tiene que comentar para poder ver los links - Fácil instalación Asi que empecenis: Abren el c.posts.php de inc/class y buscan: // DATOS DEL POST $query = mysql_query('SELECT c.* ,m.*, u.user_id FROM `p_posts` AS c LEFT JOIN `u_miembros` AS u ON c.post_user = u.user_id LEFT JOIN `u_perfil` AS m ON c.post_user = m.user_id WHERE `post_id` = \''.(int)$post_id.'\' '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' LIMIT 1'); // $postData = mysql_fetch_assoc($query); Abajo agregan: //Comentó este post $sql_comment = mysql_query('SELECT cid FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' AND c_user = \''.(int)$tsUser->uid.'\' LIMIT 1'); if(!$tsUser->is_member){ $replacement = '<div class="emptyData">Para poder ver los links necesitas estar <a href="javascript:registro_load_form();"> Registrado </a> . O.. ya tienes cuenta? <a href="javascript:open_login_box();"> Logueate!</a></div>'; $postData[post_body] = preg_replace('/[url[^>]+\]\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$][\/url[^>]+\]/i', $replacement, $postData[post_body]); }elseif(mysql_num_rows($sql_comment) == 0){ $replacement = '<div class="emptyData">Para poder ver los links debes comentar el post</div>'; $postData[post_body] = preg_replace('/[url[^>]+\]\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$][\/url[^>]+\]/i', $replacement, $postData[post_body]); } Y listo!! Caps: (Deslogueado) (Logueado pero sin comentar el post): (Logueado y con el post comentado) Creditos: WiberRZ por hacer el MOD de links ocultos para visitantes Saludos y espero que les guste
  35. 31 likes
    Hola Gente de PhPost hoy le comparto el theme Google Play como les había dicho en un avance de este. Bueno sin mas que decir pasemos a lo que nos Importa. Lo primero vamos a ir a nuestro phpmyadmin y hacemos las siguientes consultas ALTER TABLE p_posts ADD post_imgport VARCHAR(500) NOT NULL AFTER post_tags ALTER TABLE `u_perfil` ADD `p_fondo` VARCHAR( 120 ) NOT NULL ALTER TABLE `u_perfil` ADD `p_fondoper` VARCHAR( 120 ) NOT NULL 1.- Eso es todo para la DB, ahora los vamos a inc/class/c.posts.php y abrimos ese archivo 1.1.- Buscamos esto 'category' => intval($_POST['categoria']), 1.1.1.- Debajo pegamos esto 'imgport' => $tsCore->setSecure($_POST['imgport']), 1.2.- Buscamos esto post_tags, 1.2.1.- Lo Remplazamos por esto post_tags, post_imgport, 1.3.- Buscamos esto \''.$postData['tags'].'\', 1.3.1.- Lo Remplazamos por esto \''.$postData['tags'].'\', \''.$postData['imgport'].'\', 1.4.- Buscamos esto 'category' => $_POST['categoria'], 1.4.1.- Debajo pegamos esto 'imgport' => $_POST['imgport'], 1.5.- Buscamos esto post_tags = \''.$tsCore->setSecure($postData['tags']).'\', 1.5.1.- Lo Remplazamos por esto post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_imgport = \''.$tsCore->setSecure($postData['imgport']).'\', 1.6.- Buscamos esto p.post_sponsored, 1.6.1.- Lo Remplazamos por esto p.post_sponsored, p.post_imgport, Esto es para que en la home se le pueda agregar un IMG de portada como esta 2.- Ahora vamos a inc/class/c.cuenta.php y abrimos ese archivo 2.1.- Buscamos esto 'sitio' => $tsCore->setSecure($_POST['sitio']), 2.1.1.- Debajo pegamos esto 'fondo' => $tsCore->setSecure($_POST['fondo']), 'fondoper' => $tsCore->setSecure($_POST['fondoper']), 2.2.- Buscan esto /* loadHeadInfo($user_id) */ function loadHeadInfo($user_id){ global $tsUser, $tsCore; // INFORMACION GENERAL $query = mysql_query('SELECT u.user_id, u.user_name, u.user_registro, u.user_last_ip , u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\''); $data = mysql_fetch_assoc($query); 2.2.1.- Lo Remplazan por /* loadHeadInfo($user_id) */ function loadHeadInfo($user_id){ global $tsUser, $tsCore; // INFORMACION GENERAL $query = mysql_query('SELECT u.user_id, u.user_name, u.user_registro, u.user_last_ip , u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.p_fondo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_fondoper, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\''); $data = mysql_fetch_assoc($query); Todo esto es para el perfil tipo facebook mas el fonde de perfil (Créditos a Tutan), y se vería asi Link de Descarga: http://www.blindzone...google-play.zip Cap Full Login Finalmente los Créditos: Mod Fondo de Perfil y Cabecera tipo facebook <!-- tutan-kabron --> PHPost por Compartir el Script Mod Slider para las Ultimas fotos (Adaptado por mi para los ultimos Post) <!-- Whistler --> Diseño del Login al diseñador del theme del FORO y a mi por diseñar y compartir este Theme Espero que les guste mi theme ( OjO: el copy que esta debajo del logo no es obligatorio es que no me ocurrió que ponerle hay, el que esta al final de la web ese por favor consérvenlo.) Una demo Online no esta la Demo oficial por eso esta cerrado el registro de nuevos User pronto demo oficial en el mismo Link) http://games.blindzone.net/
  36. 30 likes
    Hola, este complemento podría considerarse en realidad una "plantilla" para el anterior RChat que publiqué ya que la mayor parte del funcionamiento es el mismo. Para instalar este chat no es necesario tener el anterior RChat y si lo tienes también puedes instalarlo sin problemas, los archivos se sobrescribirán. Actualización 06/03/2015 a las 18:00 - Descarga actualizada: se ha corregido un fallo en el instalador que evita que aparezca el icono de los emoticonos. 08/03/2015 a las 22:10 - Descarga actualizada: se añadió seguridad adicional para evitar el flood. 09/03/2015 a las 23:15 - Descarga actualizada: ahora se muestran todos los emoticonos y se pueden agregar desde el chat. Más capturas Caja de emoticonos abierta. Lista de moderación. Eliminar mensajes (onmouseover). Suspender usuario (onmouseover). Características Color de nick aleatorio como en grupos de WhatsApp. Suspender usuario por nick y por mensaje. Ver/editar/eliminar usuarios suspendidos. Borrar mensajes individualmente o todos de un usuario. Agrupar mensajes seguidos del mismo usuario. Mensajes propios diferenciados (alineado a la derecha en verde) BBCodes: [b], [i], [u], [br], [url], [color]. Imágenes y URLs automáticas. Censuras globales. Emoticonos globales a través de censuras. Antiflood, suspende durante 2 horas. El antiflood no afecta al staff. Diseño separado para funcionar con cualquier plantilla. Agregar emoticonos desde el chat. Selector de emoticonos. Descarga Para Risus 1.2 o superior: rchat_whatsapp_1.2.zip Instrucciones Subir el directorio "install" a la raíz y acceder desde el navegador a tuweb.com
  37. 30 likes
    BUENAS GENTE VENGO A TRAERLES ESTE SIMPLE THEME, OJALA LES GUSTE QUIERO ACLARARLES QUE DENTRO DE LA CARPETA DEL THEME INCLUI UN ARCHIVO LLAMADO "DEDICACION.TXT" LES PIDO QUE NO LO BORREN YA QUE AHI PUSE UN GRUPO DE GENTE A LA CUAL LE DEDIQUE PRINCIPALMENTE EL THEME, DISCULPEN SI FALTO ALGUIEN LO ESCRIBI MUY RAPIDO Y ADEMAS SOY UN POCO DESPISTADO ASI QUE SI FALTO ALGUIEN ME AVISA Y LO INCLUYO EN LA PROXIMA CAPS: SOLO DEJO ALGUNAS CAPS EL THEME TIENE MAS SORPRESAS XD DESCARGA: http://brontofile.com/download.php?id=50397DAE7 SALUDOS Y POR FAVOR RESPETEN MI COPY Link en mediafire: http://www.mediafire.com/?y5wiq28hct1g5fx
  38. 30 likes
    bueno amigos les dejo este mod que existia en la 1.5 pero funcionaba solo en default, este es para risus y funciona en todos los temas, es mucho mas sencillo. el usuario se registra y automaticamente se le asigna un avatar aleatorio. en este caso subo 4 avatares solo de muestra ustedes pongan los que quieran, son gif pero mas abajo les dire como editar eso. lo primero que haremos es abrir el archivo c.registro que se encuentra en inc/class y buscamos // INSERTAMOS EL PERFIL mysql_query('INSERT INTO `u_perfil` (`user_id`, `user_dia`, `user_mes`, `user_ano`, `user_pais`, `user_estado`, `user_sexo`) VALUES (\''.(int)$tsData['user_id'].'\', \''.(int)$tsData['user_dia'].'\', \''.(int)$tsData['user_mes'].'\', \''.(int)$tsData['user_anio'].'\', \''.$tsData['user_pais'].'\', \''.$tsData['user_estado'].'\', \''.(int)$tsData['user_sexo'].'\')'); mysql_query('INSERT INTO `u_portal` (`user_id`) VALUES (\''.(int)$tsData['user_id'].'\')'); debajo ponemos /////////////////////AVATAR ALEATORIO///////////////////// $number=rand(1,4); $name=$number.'.gif'; $namemini=$number.'_50.gif'; copy('../../files/avatar/avatarregistro/'.$name.'','../../files/avatar/'.$tsData['user_id'].'_120.jpg'); copy('../../files/avatar/avatarregistro/mini/'.$namemini.'','../../files/avatar/'.$tsData['user_id'].'_50.jpg'); mysql_query('UPDATE u_perfil SET p_avatar= 1 WHERE user_id = \''.$tsData['user_id'].'\''); ////////////////FIN ALEATORIO///////////// por ultimo subimos a la carpeta files/avatar las carpetas que les dejo contienen 8 avatares gif http://www.mediafire...om8ecjv2daevo8d avatarregistro.zip eso es todo, facil no???? como cambiar algunas cosas a su gusto bueno si quieren cambiar la cantidad de avatares primero deberan cambiar este numero $number=rand(1,4); cambian el 4 por la cantidad de avatares nuevos que pongan ustedes la extencion que puse es gif pero si cambian y ponen por ejemplo png deberan cambiar esto $name=$number.'.gif'; $namemini=$number.'_50.gif'; cambian los 2 'gif' por la extencion que pongan ustedes. y por ultimo obviamente deberan poner los avatares nuevos y ponerle un numero, recuerden que hay 2 pares el que mide 100px y el otro 50px por ejemplo una nueva imagen seria 5.gif y la misma con medida a la mitad 5_50.gif espero que lo hallan entendido cualquier duda me avisan. edito: puede que tengan que poner permisos 777 a la carpeta que suben.
  39. 29 likes
    Aqui les quiero dejar este Complemento que es para poder ver y controlar las conversaciones de los usuarios mediante los mensajes. Ya que la vercion anterior fue eliminada por ser vulnerable, y ya que lo pedian aqui les dejo mi vercion para su utilidad. Trae opcion de vista previa de las conversaciones. Opcion para eliminar el mensaje. VIsta completa de las conversaciones. Paginacion Incluida. Opcion para responder el mensaje. No dispone de la Opcion para editar ya que no me parece util. ademas de que se tendria que hacer mas cosas, y no seria de mucha utilidad.. Comenzamos. En admin.php Bscamos: // CAMBIAR RANGO PREDETERMINADO DEL REGISTRO elseif($act == 'setdefault'){ if($tsAdmin->SetDefaultRango()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/rangos?save=true'); } Y agregamos despues: /** Control de Mensajes x Vellenger **/ } elseif($action == 'control_mp'){ if(isset($_GET['delete'])) { $tsAdmin->delControl_mp($_GET['delete']); } $smarty->assign("tsControl_mp",$tsAdmin->getControl_mp()); En el archivo c.admin.php buscamos: } /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ } Y agregamos Arriba: public function getControl_mp() { global $tsCore; // $max = 20; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); $retorno['data']=result_array(mysql_query('SELECT mp.mp_id, mp.mp_from, mp.mp_subject, mp.mp_preview, u.user_name, u.user_id FROM u_mensajes AS mp LEFT JOIN u_miembros AS u ON u.user_id = mp.mp_from ORDER BY mp.mp_id DESC LIMIT '.$limit)); // PAGINAS $query = mysql_query('SELECT COUNT(mp_id) FROM u_mensajes'); list($total) = mysql_fetch_row($query); $retorno['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . '/admin/control_mp?', $_GET['s'], $total, $max); return $retorno; } public function delControl_mp($id) { // filtramos // $id = (int) $id; mysql_query('DELETE FROM u_mensajes WHERE mp_id = '.$id); } En el archivo m.admin_sidemenu.tpl buscamos: <li id="a_rangos"><span class="cat-title"><a href="{$tsConfig.url}/admin/rangos">Rangos de Usuarios</a></span></li> Y agregamos Abajo: <li id="a_users"><span class="cat-title"><a href="{$tsConfig.url}/admin/control_mp">Control de Mp</a></span></li> En el archivo t.admin.tpl buscamos: {/if} Y agregamos arriba: {elseif $tsAction == 'control_mp'} {include file='admin_mods/m.control_mp.tpl'} Subimos el Archivo m.control_mp.tpl a la carpeta admin_mods http://puu.sh/3xa3c.zip Eso seria todo.. dentro del zip les dejo las instrucciones en un txt para el que lo quiera.. Espero que les sea de Utilidad.. Si precisan que lo mejore me avisan cuales serian y vemos que se puede hacer ok.. Hasta la Proxima..
  40. 28 likes
    Hola amigos hoy les traigo un mod a pedido de Nico Bueno dejo cap: Nota: Hagan backup por las dudas Instalación: 1. Primero se van a c.posts.php (inc/class) y buscan: /* getLastComentarios() : PARA EL PORTAL */ function getLastComentarios(){ global $tsUser, $tsCore; // $query = mysql_query('SELECT cm.cid, cm.c_status, u.user_name, u.user_activo, u.user_baneado, p.post_id, p.post_title, p.post_status, c.c_seo FROM p_comentarios AS cm LEFT JOIN u_miembros AS u ON cm.c_user = u.user_id LEFT JOIN p_posts AS p ON p.post_id = cm.c_post_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'WHERE p.post_status = \'0\' AND cm.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY cid DESC LIMIT 10'); if(!$query) die(mysql_error()); $data = result_array($query); // return $data; } [/CODE] [b]y abajo de eso agregan:[/b] [CODE] /* getLastUs() : PARA EL PORTAL MOD Ultimos Registrados by LuchoPHP */ function getLastUS(){ global $tsCore; // $query = mysql_query('SELECT user_id, user_name,user_activo FROM u_miembros WHERE user_activo= \'1\' AND user_baneado= \'0\' ORDER BY user_id DESC LIMIT 5'); if(!$query) die(mysql_error()); $data = result_array($query); // return $data; } 2. En el segundo paso se van a posts.php (inc/php) y buscan: // DO <= PARA EL MENU $smarty->assign("tsDo",$_GET['do']); [/code] [b]y abajo agregan:[/b] [code] // Mod Ultimos registrados by LuchoPHP $smarty->assign("tsUlt",$tsPosts->getLastUs()); 3. Luego se van a t.home.tpl (themes/tutema/templates/) y buscan: {include file='modules/m.home_afiliados.tpl'} <br class="spacer"/> [/code] [b]y arriba agregan:[/b] [CODE] {include file='modules/m.ultimor.tpl'} 4. Suben este archivo a themes/tutema/templates/modules http://www.mediafire...z5bl44t2hbjsfn5 Eso es todo, aclaro que no sé diseñar muy bien, pero lo pueden mejorar ;D y abrá una v2. Por teoría debería funcionar en cualquier theme. Hasta la próxima saludos.
  41. 28 likes
    Hola amigos de phpost hoy tengo y les traigo el tema twitter actual caps: y muchas mas sorpresas Creditos: Zero: por usar sus css pero yo edite los tpl para que tengan todas las funciones de la risus TheSpeed94: por resolverme un problema en los perfiles Y YO por hacerlo mejorar y me base en el default de la risus Link: http://www.mediafire.com/?knwwxuzofam23gc Demo: http://t.xtrweb.com/
  42. 28 likes
    Hola amigos de phpost!!! Como se los prometi les traigo el tema de top.post, que ya muchos me lo andaban pidiendo... Bueno sin mas!! la caps: Con el chat desplegado XD Con la cabecera de perfil XD Sin la cabecera de perfil XD Ok para que todos los mod funcionen... tienen que entrar a si MysQL y ejecutar las siguiente consultas....... Y ahora importan este archivo a su DB... Para que les funcione el chat buscan m.chat_chat1.tpl en /themes/default/templates/modules Y buscan esto y lo reemplazan por su codigo del chat.... Link para descargar el scrip Espero que les guste!!! Cortesía de su servidor MAYA!!
  43. 28 likes
    Bueno este mini mod que ya habia posteado pero con el cambio del foro, el topic se eliminó 77 xD bueno vamos a Themes/tutema/templates/sections/main_header.tpl buscamos <script src="{$tsConfig.js}/jquery.min.js" type="text/javascript"></script> y abajo ponemos <!-- ScrolltoTop JS --> <script src="http://static.tumblr.com/ikeq9mi/DfYl6o46t/scrolltotop.min.js"></script> Ahora vamos a vamos a Themes/tutema/templates/sections/main_footer.tpl abajo de <!--end-cuerpo--> ponemos <a href="javascript:;" id="scrollToTop"><img src="http://static.tumblr.com/pjueksb/wfGm5hbm3/arrowtop.png"/></a> y por ultimo en Themes/tutema/extras.css y al final de ese archivo ponemos esto /* ScrolltoTop by KeviNxDTM */ #scrollToTop:link, #scrollToTop:visited { display: none; width: 40px; height: 40px; position: fixed; top: 10px; z-index: 9999; right: 35px; opacity: 0.5; cursor: pointer; } #scrollToTop:hover, #scrollToTop:active { display: none; width: 40px; height: 40px; position: fixed; top: 10px; z-index: 9999; right: 35px; opacity: 0.8; cursor: pointer; } /* FIN ScrolltoTop by KeviNxDTM */ y listo eso seria todo >.< Caps: no tengo demo, por que mi web está en localhost :c espero les sirva ! dejen su +1 o si no no apretes nada c: Saludos!
  44. 28 likes
    Hace unos días informamos sobre una actualización inminente del foro. Se ha llevado acabo durante aproximadamente tres días, aunque aún faltan otra tareas por realizar. Hemos realizado una limpieza de varios foros que con la versión risus quedarán inservibles. Estos foros son: desarrollo de mods, desarrollo de plantillas, plantillas terminadas, reporte de bugs, fixes y soporte general. La siguiente versión no se hará basada en Risus, así que no sería posible corregir bugs ya que no existirían. Se han mantenido problemas solucionados y mods terminados, por si alguien desea adaptar mods antiguos a la nueva versión. Echen un vistazo a todos los nuevos foros. Para una mayor motivación, los rangos de usuarios tendrán que ir avanzando a través de nuevos mensajes en distintos foros, para así alcanzar un rango superior y obtener las ventajas que éste ofrece. Por ejemplo, el rango miembro no puede editar el contenido de su topic, pero miembro junior podrá hacerlo, incluído el título. Además también podrá votar negativamente y regalar más positivos al día en los temas. Esto es sólo un ejemplo, hemos usado todas las características que la plataforma IP.Board nos ofrece para hacerlo de una manera más acorde a estos nuevos rangos, así como cualquier elemento al alcance del usuario, como la mensajería privada o la personalización de perfiles estarán. Por el momento no revelaremos el nombre ni las ventajas totales de cada uno de ellos. Se mantendrá el misterio y ustedes irán averiguando por sí mismos lo que ahora puede hacer y antes no. Cualquier rango ahora podrá usar un avatar animado (gif), el cual también aparecerá en el chat. Sobre el chat, habrán podido notar que el chat no requiere nombre ni url, y es porque lo hemos integrado al foro. Se usará tu nick, avatar y enlace del foro automáticamente. Cuando un moderador advierte a un usuario, éste no podrá volver a publicar nada a menos que reconozca lo que haya hecho. Desde la versión anterior de IP.Board, el usuario puede ver sus advertencias. Se han realizado otros cambios, como una mejora de visualización y la muestra de notificaciones, además de otras características que irán notando. Y lo que todos estaban esperando.... PHPost Risus Ya pueden descargarla desde la página principal. Asimismo os recomendamos leer las más de 400 novedades resumidas aquí. Lea las guías de los docs para obtener más información sobre instalaciones y actualizaciones. Saludos y gracias por su paciencia.
  45. 28 likes
    Este es un importante topic para mí, y supongo que también para muchos que me han pedido el theme Zero-Time. Como muchos vendrán por él, empezaré por mi despedida (troll) Como he sacado muy malas notas en inglés mis padres han decidido enviarme a un campamento de inglés, en el que estaré 15 días. Por esto no podré conectarme ni aportar a PHPost. Para mí esto será triste, ya que me pierdo mucho... Quizá toup saque su V5, Isidro haga alguna sorpresa, JNeutron postee su Rain, Nico se vuelva g...racioso... Así que os echaré de menos. Lo bueno es que cuando vuelva estaré más activo que nunca ! Con themes y mods que tengo preparados... ¡ya veréis! Zero-Time BETA El theme de Zero es para mí uno de los mejores, no hay archivo que no esté modificado (es un theme muuy bonito & complejo). Por eso me ha costado taaaaanto hacerlo. Pero no quise irme de vacaciones sin postearlo, así que lo intenté y lo terminé Caps: En la cap no se ve, pero trae los últimos visitantes. Todas las caps aquí: http://imgur.com/a/4htfF La demo aquí: http://gytech.skn1.com User: phpost Pass: demo33 ¿Por qué BETA? Porque no sé si queda algo. Si veis que algo no está adaptado o hay algún bug reportadlo en la DEMO en un post. Ni por mp ni por el topic. Qué trae nuevo: Los emoticonos de Taringa. (Estarán subidos en un directorio dentro de la raíz. Vosotros subís este directorio a /themes/default/images si queréis añadir los emoticonos a vuestra web. Últimas fotos en la home. Posts relacionados. Dos clases de afiliados (Recomendados y Afiliados) en la home. Los dos funcionan, pero en "Recomendamos" si tú vas a la administración, en afiliados, aunque aceptes un afiliado, los cambios no se verán en el bloque. De todas formas, el bloque manda la información a la admin. Un nuevo logo. Estadísticas "mejoradas". Categorías de posts (Creadas por Alt) Qué falta: El generador. Algunos detalles. Cuando vuelva miraré si habéis reportado bugs y hecho fixes y sacaré la v1 con el generador. (Cambiado). Abrid el .txt si queréis y después borradlo. (Está en la raíz) Se instala con el nombre de "zero" Descargad desde aquí, se solucionarán problemas con el instalador: http://www.mediafire...d1xcj31iulbsfy9 Créditos: -A todos vosotros, los que me habéis hecho mejorar. - A Jarm, cerec, Altffenser, Whistler, DjLucho, MegaErick, Gonzalo, Isidro, Nico, Joseph y una larga lista de gente que es importante para mí. -A Zero, un legendario diseñador. (Y el creador de este gran theme)!! -A Geni0h, el genio que creó el logo del theme. -Al que me dio la idea de hacer esto, que no me acuerdo quién fue. (Él se dará por aludido) -Y a Zero otra vez. http://i.imgur.com/8...r.com/8b2wY.gif Problemas en el theme, en la descarga y cualquier cosa ya sabéis Hasta dentro de 15 días amigos. FIX-MODERACIÓN (BAN USERS) Abrid t.moderacion.tpl y buscad: {include file='admin_mods/m.mod_report_users.tpl'} elseif $tsAction == 'banusers'} [/CODE] [/size] [size=4]reemplazáis, por:[/size] [size=4][CODE] {include file='admin_mods/m.mod_report_users.tpl'} {elseif $tsAction == 'banusers'} Simple error ya podréis entrar a la sección de la moderación.
  46. 28 likes
    [msg]Presten atención al siguiente mensaje, la expresión es únicamente informativa de una forma más acercada, aún así se hace desde la profesionalidad tuteada.[/msg] Hola Comunidad de PHPost, Hoy se cumplen 154 días desde el lanzamiento de Alfa v1.5.1, 397 días desde que se lanzó la primera versión de PHPost. Durante todo este tiempo, se han planeado versiones con diferentes características y estructuras. Primero se habló de una versión Beta de PHPost, que no tendría smarty, aunque seguiría utilizando poo. Luego, con el anuncio de una versión denominada Rain, se canceló el desarrollo de la beta para continuar con éste. Han pasado 105 días desde el anuncio de Rain. El desarrollo de esta versión no ha sido tan eficiente como se esperaba al principio, por tanto, el desarrollo está parado. Pero no hay mal que por bien no venga, la próxima versión, que sigue siendo Rain, cuenta con un equipo de programación apto para este proyecto. No puedo decir nada más al respecto, pues todavía no se ha organizado ni empezado. ¿Y mientras? Como no hay fecha de inicio del proyecto, no se han ideado características ni formulado el sistema completamente, no podemos dar una fecha de salida de Rain, así que os recomendamos descargar Risus cuando esté disponible. ¿Qué es Risus? Risus es la última versión Alfa de PHPost, sigue utilizando smarty y la misma estructura. Esta versión con 321 (sí, trescientas veintiuna) características importantes, de las cuales 105 son mostradas en el archivo adjunto como más relevantes. PHPost Risus (con nombre clave Anaconda), empezó el 16 de abril a las 15:31, es decir, hace 24 días. Su desarrollo no fue oficial porque no sabíamos el tiempo que estaríamos programándola. Se empezó para agregar seguridad al script, se ha terminado por agregar todas las funcionalidades de la administración, moderación y mucho más. Los temas y mods hasta ahora dejan de ser compatibles con esta versión. Los mods hasta ahora han usado funciones que a partir de ésta, y para ahorrar consumo, no existirán. Los temas podrán usarse, pero las nuevas características que se han editado en los archivos de plantillas no funcionarán, por tanto no recomendamos usar algo obsoleto. No obstante, tanto mods como temas pueden ser adaptados sin muchos problemas. Si quieren ver una demo, pueden ir a http://demo.phpost.net y registrarse. En unos días se les otorgará el rango administrador para que puedan ver todas las funciones administrativas. La versión ya está desarrollada, pero la fecha de lanzamiento esta vez la ponen ustedes, busquen errores y hagan temas (en la demo) reportándolos para su publicación inminente. Créditos: En el tiempo que me ausenté, estuve desarrollando la versión, pero varias personas aportaron sus granitos, granazos y tiempo en ofrecer sus ideas y ayudas. Estas personas son DjAlan98, JNeutron, ouch01, Roodaka y shout. El staff participó en su primera inspección de errores. Destaco la participación de DjAlan98 y ouch01, pues no les importó ayudar en gran parte de las ediciones de consultas. Archivo PDF adjunto
  47. 27 likes
    V6 Redesign BETA Hola a PHPost, vengo a presentar la plantilla V6 Redesign, sólo en versión BETA, ya que existen muchos cambios a hacer. ¿Por qué publico una versión BETA y no mejor la terminas? Existen 2 razones: 1 - Para verificar y corregir bugs en la plantilla, también que para la versión FULL voy a crear una versión responsive. 2 - Muchos usuarios impacientes que creen que estoy mintiendo sobre la plantilla y que no la voy a publicar. ¿Dijiste responsive? Si, la versión FULL sera responsive, es decir, que se adaptará a los dispositivos móviles. ¿Y que mas tendrá? Se terminarán de diseñar distintas secciones de la plantilla. como El TOP, el monitor, los mensajes. La admin no será rediseñada por que no es relevante. Features: Home: Notificaciones (globales): se juntaron la mensajería y notificaciones [No preguntes como lo hice por que no me acuerdo -yao] Post: Comentarios BETA: Portal (Mi): Agregar Post V1.3: Entre otras cosas. INSTALACIÓN: editar el archivo c.fotos.php en inc/class y buscar: function getLastFotos(){ y en la segunda consulta query buscar: f.f_date, f.f_description, f.f_url, f.f_status, y reemplazar por: f.f_date, f.f_description, f.f_url, f.f_status, f.f_user, listo. ahora nos vamos a c.posts.php en la misma carpeta y buscamos: function getLastComentarios(){ y en la consulta de query buscamos: SELECT cm.cid, cm.c_status, y reemplazamos por: SELECT cm.cid, cm.c_status, u.user_id, y listo. ahora para las imagenes de cabecera del perfil. editar el archivo c.cuenta.php y buscar: function loadHeadInfo($user_id){ en la primera consulta query buscar: p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, y luego reemplazar por: p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, p.p_fondoper, luego ir al phpmyadmin de su server y en la pestaña SQL pegar ésta consulta: ALTER TABLE `u_perfil` ADD `p_fondoper` VARCHAR(120) NOT NULL Ahora para que funcione el botón de Compartir en Google+: Subir el archivo sharrre.php en la raíz del server. Luego subir la plantilla en la carpeta themes/ Con eso debería funcionar. Links de descarga: La plantilla: https://mega.co.nz/#!HY0iGQBQ!hds4L_VWVtYZt_H9hOxI9Z9pXWlw6uVOmXM2bEdliWk archivo sharre.php: https://mega.co.nz/#!bJFSwZbQ!qZWr0Q4bLKtVEXjgtxGNiWYLXrkZu63DGtSeNhxiOTE Demo: http://latinconect.tk/ Agradezco a: HADES (por el host para la demo), fem (la recomendación de la home), brianmoyano, RafaGT, a Juani Ruiz Echazú (por el concepto de estructuración) y a Isidro Espero les haya gustado. Salu2, espero que en el topic mencionen los bugs y/o sugerencias sobre el theme para la versión FULL Responsive.
  48. 27 likes
    Hola gente a pedidos de muchos users, especialmente Chito les comparto este mod. La instalación es un poco larga puesto que la gran mayoria de los temas tienen la sección de fotos modificada y asi nos evitamos adaptaciones, errores, descuadres, etc... Bueno primero aclaro quienes tengan un tema diferente al default sigan los siguientes pasos, de lo contrario solo pasen al final del topic que dejo la descarga de los archivos para que los modifiquen y no tengan que hacer la instalación (si lo desean). Sin embargo si no quieren hacer los pasos que modifican los archivos .php de igual forma descarguen ese archivo que les dejo al final, reemplazan los archivos .php y omitan la siguiente instalación de estos archivos. Si tienen la sección muy editada y no quieren perder sus cambios entonces sigan todos los pasos. ARCHIVOS PHP 1. Abrimos fotos.php y buscamos: case 'agregar':Debajo de el agregamos: $smarty->assign("tsAlbums", $tsFotos->getAlbums($tsUser->uid));Más abajo buscamos: else $smarty->assign("tsFoto", $tsFoto);Debajo de eso agregamos: $smarty->assign("tsAlbums", $tsFotos->getAlbums($tsUser->uid));Más abajo buscamos: case 'album':Debajo de eso agregamos: $album = empty($_GET['folder']) ? 0 : intval($_GET['folder']);Un poco más abajo buscamos: $smarty->assign("tsFUser", array($user_id, $username));Debajo de eso agregamos: //ALBUMES if(empty($album)) { $tsAlbums = $tsFotos->getAlbums($user_id); $smarty->assign("tsCover", $tsFotos); } else { $tsAlbums = false; } $smarty->assign("tsAlbums", $tsAlbums);2. En el archivo c.fotos.php buscamos: 'visitas' => empty($_POST['visitas']) ? 0 : 1,Debajo de eso agregamos: 'album' => empty($_POST['album']) ? 0 : $tsCore->setSecure($_POST['album']),Más abajo buscamos: if(mysql_query('INSERT INTO `f_fotos` (f_title, f_date, f_description, f_url, f_user, f_closed, f_visitas, f_last, f_ip) VALUES (\''.$fData['titulo'].'\', \''.time().'\', \''.$fData['desc'].'\', \''.$img_url.'\', \''.$tsUser->uid.'\', \''.$fData['closed'].'\', \''.$fData['visitas'].'\', \'1\', \''.$_SERVER['REMOTE_ADDR'].'\')')) {Lo reemplazamos por if(mysql_query('INSERT INTO `f_fotos` (f_title, f_date, f_description, f_url, f_user, f_closed, f_visitas, f_album, f_last, f_ip) VALUES (\''.$fData['titulo'].'\', \''.time().'\', \''.$fData['desc'].'\', \''.$img_url.'\', \''.$tsUser->uid.'\', \''.$fData['closed'].'\', \''.$fData['visitas'].'\', \''.(int)$fData['album'].'\', \'1\', \''.$_SERVER['REMOTE_ADDR'].'\')')) {Más abajo buscamos: 'razon' => empty($_POST['razon']) ? 'undefined' : $tsCore->setSecure($_POST['razon'], true),Arriba agregamos: 'album' => empty($_POST['album']) ? 0 : $tsCore->setSecure($_POST['album'], true),Un poco más abajo buscamos: f_visitas = \''.$fData['visitas'].'\'Al lado agregamos: , f_album = \''.$fData['album'].'\' (con esa coma al principio) Mas abajo buscamos: /* getFotos($user_id) */ function getFotos($user_id){ global $tsCore, $tsUser; // $query = 'SELECT f.foto_id, f.f_title, f.f_date, f.f_description, f.f_url, f.f_status, u.user_name, u.user_activo FROM f_fotos AS f LEFT JOIN u_miembros AS u ON u.user_id = f.f_user WHERE f.f_user = \''.(int)$user_id.'\' '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && f.f_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY f.foto_id DESC'; // PAGINAR $total = mysql_num_rows(mysql_query($query)); $pages = $tsCore->getPagination($total, 12); $data['pages'] = $pages; // $data['data'] = result_array(mysql_query($query.' LIMIT '.$pages['limit'])); // return $data; }Lo reemplazamos por: /* getFotos($user_id, $album) */ function getFotos($user_id, $album){ global $tsCore, $tsUser; // $query = 'SELECT f.foto_id, f.f_title, f.f_date, f.f_description, f.f_url, f.f_status, u.user_name, u.user_activo FROM f_fotos AS f LEFT JOIN u_miembros AS u ON u.user_id = f.f_user WHERE f.f_user = \''.(int)$user_id.'\' AND f.f_album = \''.(int)$album.'\''.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && f.f_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY f.foto_id DESC'; // PAGINAR $total = mysql_num_rows(mysql_query($query)); $pages = $tsCore->getPagination($total, 9); $data['pages'] = $pages; // $data['data'] = result_array(mysql_query($query.' LIMIT '.$pages['limit'])); // HAY ALBUM? if(!empty($album)) { $query = mysql_fetch_assoc(mysql_query('SELECT album_id, album_name FROM f_album WHERE album_id = '.$album)); $data['album_id'] = $query['album_id']; $data['album_name'] = $query['album_name']; } // return $data; } /* getAlbums($user_id) */ function getAlbums($user_id){ global $tsCore, $tsUser; // $query = 'SELECT COUNT(f.foto_id) AS total, a.album_id, a.album_name FROM f_album AS a LEFT JOIN f_fotos AS f ON f.f_album = a.album_id LEFT JOIN u_miembros AS u ON u.user_id = a.album_user WHERE a.album_user = \''.(int)$user_id.'\' GROUP BY a.album_id ORDER BY a.album_date DESC'; $data['total'] = mysql_num_rows(mysql_query($query)); $data['data'] = result_array(mysql_query($query)); // return $data; } /* getAlbumCover($album_id) */ function getAlbumCover($album_id){ global $tsUser; // $data = mysql_fetch_assoc(mysql_query('SELECT f_url FROM f_fotos WHERE f_album = \''.(int)$album_id.'\' AND f_user = \''.$tsUser->uid.'\' ORDER BY RAND() LIMIT 1')); // return $data['f_url']; } /* newAlbum() */ function newAlbum(){ global $tsCore, $tsUser; // $a = array ( 'name' => $tsCore->setSecure($_POST['nombre'], true), 'user' => $tsUser->uid, 'date' => time(), ); // if(!empty($a['name'])) { if(mysql_query('INSERT INTO f_album (`album_name`, `album_user`, `album_date`) VALUES (\''.$a['name'].'\', \''.(int)$a['user'].'\', \''.$a['date'].'\')')) { return '1: '.mysql_insert_id(); } else return '0: ocurri&oacute; un error, int&eacute;ntalo m&aacute;s tarde.'; } else return '0: Debes colocar un nombre.'; } /* editAlbum() */ function editAlbum(){ global $tsCore, $tsUser; // $album_id = intval($_POST['album']); $name = $tsCore->setSecure($_POST['nombre'], true); // $sql = mysql_fetch_assoc(mysql_query('SELECT album_id, album_user FROM f_album WHERE album_id = \''.(int)$album_id.'\'')); if(!empty($name)) { if(!empty($sql['album_id'])) { if($sql['album_user'] == $tsUser->uid) { if(mysql_query('UPDATE f_album SET album_name = \''.$name.'\' WHERE album_id = \''.(int)$album_id.'\' AND album_user = \''.$tsUser->uid.'\'')) { return '1: Ok'; } else return '0: ocurri&oacute; un error, int&eacute;ntalo m&aacute;s tarde.'; } else return '0: Est&aacute;s intentando algo no permitido.'; } else return '0: El album no existe.'; } else return '0: Debes colocar un nombre.'; } /* borrarAlbum() */ function borrarAlbum(){ global $tsCore, $tsUser; // $album_id = intval($_POST['album']); // $sql = mysql_fetch_assoc(mysql_query('SELECT album_id, album_user FROM f_album WHERE album_id = \''.(int)$album_id.'\'')); if(!empty($sql['album_id'])) { if($sql['album_user'] == $tsUser->uid) { if(mysql_query('DELETE FROM f_album WHERE album_id = \''.(int)$album_id.'\'')) { // RESTAURAMOS LAS FOTOS QUE ESTABAN EN EL ALBUM mysql_query('UPDATE f_fotos SET f_album = \'0\' WHERE f_album = \''.(int)$album_id.'\''); return '1: Adios :P'; } else return '0: ocurri&oacute; un error, int&eacute;ntalo m&aacute;s tarde.'; }else return '0: Est&aacute;s intentando algo no permitido.'; } else return '0: El &aacute;lbum no existe.'; } FUNCIONES JS 1. Abrimos fotos.js que está en tutema/js y arriba de: } $(function(){Agregamos: crear_album: function(gew){ if(!gew) { mydialog.show(); mydialog.title('Nuevo &aacute;lbum'); mydialog.body('<input type="text" placeholder="Nombre del &aacute;lbum..." id="album_name" size="55" maxlength="150">'); mydialog.buttons(true, true, 'Aceptar', 'fotos.crear_album(true)', true, false, true, 'Cancelar', 'close', true, true); mydialog.center(); $('#album_name').focus(); } else { var nombre = $('#album_name').val(); if (empty(nombre)) $('#album_name').focus(); else { mydialog.procesando_inicio(); $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/fotos-newalbum.php', data: 'nombre=' + nombre, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.procesando_fin(); mydialog.alert('Error', h.substring(3)); break; case '1': //OK var selectt = $('select[name=album]'); var option = '<option value="' + h.substring(3) + '">' + nombre + '</option>'; selectt.html(selectt.html() + ' ' + option); selectt.focus(); mydialog.procesando_fin(); $('#loading').fadeOut(350); mydialog.close(); break; } } }); } } }, editar_album: function(album, gew){ var title = $('#AlbumTitle'); if(!gew) { mydialog.show(); mydialog.title('Editar t&iacute;tulo'); mydialog.body('<input type="text" value="' + title.text() + '" id="album_name" size="55" maxlength="150">'); mydialog.buttons(true, true, 'Aceptar', 'fotos.editar_album(' + album + ', true)', true, false, true, 'Cancelar', 'close', true, true); mydialog.center(); $('#album_name').focus(); } else { var nombre = $('#album_name').val(); if (empty(nombre)) $('#album_name').focus(); else { mydialog.procesando_inicio(); $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/fotos-editar_album.php', data: 'album=' + album + '&nombre=' + nombre, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.procesando_fin(); mydialog.alert('Error', h.substring(3)); break; case '1': //OK title.html(nombre); mydialog.close(); break; } } }); } } }, borrar_album: function(album, gew){ if(!gew) { mydialog.show(); mydialog.title('Borrar album'); mydialog.body('&iquest;Est&aacute;s seguro que deseas borrar este &aacute;lbum?<br />Las fotos contenidas en este permaneceran.'); mydialog.buttons(true, true, 'Eliminar', 'fotos.borrar_album(' + album + ', true)', true, false, true, 'Volver', 'close', true, true); mydialog.center(); $('#album_name').focus(); } else { mydialog.procesando_inicio(); $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/fotos-borrar_album.php', data: 'album=' + album, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.procesando_fin(); mydialog.alert('Error', h.substring(3)); break; case '1': //OK location.href=global_data.url + '/fotos/'; break; } } }); } } DISEÑO CSS 1. Abrimos fotos.css que está en tutema/css y al final de todo agregamos: /* albumes by kmario19 */ .album-fotos li { width: 230px; height: 230px; display: inline-block; } .album-fotos li .album-fotos-out { position: relative; width: 100%; height: 100%; } .album-fotos li .album-fotos-out a { display: block; width: 100%; height: 100%; } .album-fotos li .album-fotos-out a .f_front_title { position: absolute; width: 200px; left: 3px; bottom: 17px; padding: 5px; background: rgba(0, 0, 0, 0.73); color: white; text-align: center; z-index: 4; } .album-fotos li .album-fotos-out a .f_front_total { position: absolute; left: 3px; bottom: 193px; padding: 5px 9px; font-weight: bold; background: rgba(0, 0, 0, 0.73); color: white; text-align: center; border-radius: 0 2px 2px 0; z-index: 4; } .album-fotos li .album-fotos-out a .f_front_cover { position: absolute; padding: 2px; background: white; border: solid 1px #ccc; border-radius: 3px; width: 210px; height: 210px; z-index: 3; -webkit-transition: all linear 0.25s; } .album-fotos li .album-fotos-out a .f_out_1 { position: absolute; z-index: 1; width: 210px; height: 210px; background: white; padding: 2px; border: solid 1px #ccc; border-radius: 4px; -webkit-transition: all linear 0.25s; -moz-transition: all linear 0.25s; } .album-fotos li .album-fotos-out a .f_out_2 { position: absolute; z-index: 1; width: 210px; height: 210px; background: white; padding: 2px; border: solid 1px #ccc; border-radius: 4px; -webkit-transition: all linear 0.25s; -moz-transition: all linear 0.25s; } .album-fotos li .album-fotos-out:hover .f_out_1 { -webkit-transform: rotate(4deg); -moz-transform: rotate(4deg); } .album-fotos li .album-fotos-out:hover .f_out_2 { -webkit-transform: rotate(-4deg); -moz-transform: rotate(4deg); } ARCHIVOS TPL 1. Abrimos t.fotos.tpl que está en tutema/templates y buscamos: {include file='modules/m.fotos_add_form.tpl'} {include file='modules/m.fotos_add_sidebar.tpl'}Lo reemplazamos por: <form name="add_foto" method="post" action="" enctype="multipart/form-data" autocomplete="off"> {include file='modules/m.fotos_add_form.tpl'} {include file='modules/m.fotos_add_sidebar.tpl'} </form>2. Abrimos el archivo m.fotos_add_form.tpl que está en tutema/templates/modules y buscamos: <form name="add_foto" method="post" action="" enctype="multipart/form-data" id="foto_form" class="form-add-post" autocomplete="off">Lo reemplazamos por: <div id="foto_form" class="form-add-post">Casi al final buscamos: </form> lo reemplazamos por </div>. 3. Abrimos el archivo m.fotos_add_sidebar.tpl y arriba de: <center>{$tsConfig.ads_300}</center>Agregamos: <div class="categoriaList"> <h6>Guardar en &aacute;lbum</h6> <ul style="text-align: center;"> <li> <select name="album" class="size12"> <option value="0">Seleccionar &aacute;lbum</option> {foreach from=$tsAlbums.data item=a} <option value="{$a.album_id}" title="{$a.album_name}" {if $tsFoto.f_album == $a.album_id}selected="selected"{/if}>{$a.album_name|truncate:40}</option> {/foreach} </select> </l> <li> <br /> <a href="#" onclick="fotos.crear_album()" class="mBtn btnOk">Crear &aacute;lbum</a> </li> </ul> </div>4. En el archivo m.fotos_album.tpl arriba de: <div class="title-w clearfix">Agregamos: {if $tsAlbums} <div class="title-w clearfix"> <h2>{if $tsFUser.0 == $tsUser->uid}Mis &aacute;lbumes{else}&Aacute;lbumes de {$tsFUser.1}{/if}</h2> </div> <ul class="album-fotos"> {foreach from=$tsAlbums.data item=a} <li> <div class="album-fotos-out"> <a href="{$tsConfig.url}/fotos/{$tsFUser.1}/album/{$a.album_id}/{$a.album_name|seo}" title="{$a.album_name}"> {if $a.total > 0}<span class="f_front_total" title="{$a.total} foto{if $a.total >1}s{/if}">{$a.total}</span>{/if} <span class="f_front_title">{$a.album_name|truncate:35}</span> <img class="f_front_cover" src="{if $tsCover->getAlbumCover($a.album_id)}{$tsCover->getAlbumCover($a.album_id)}{else}{$tsConfig.images}/no_cover.png{/if}" /> <div class="f_out_1"></div> <div class="f_out_2"></div> </a> </div> </li> {/foreach} </ul> {/if}Ahora buscamos: <h2>{if $tsFUser.0 == $tsUser->uid}Mis fotos{else}Fotos de {$tsFUser.1}{/if}</h2>Lo reemplazaremos por: <h2>{if $tsFotos.album_name}<span id="AlbumTitle">{$tsFotos.album_name}</span><span class="floatR"><a href="#" onclick="fotos.editar_album({$tsFotos.album_id})" class="mBtn btnOk">Editar</a> <a href="#" onclick="fotos.borrar_album({$tsFotos.album_id})" class="mBtn btnDelete">Borrar</a></span>{else}{if $tsFUser.0 == $tsUser->uid}Mis fotos{else}Fotos de {$tsFUser.1}{/if}{/if}</h2>Casi al final buscamos: {$tsConfig.url}/fotos/{$tsFUser.1}/{$tsFotos.pages.prev}Lo reemplazamos por: if $tsAlbums.total}{$tsFotos.pages.prev}{else}{$tsConfig.url}/fotos/{$tsFUser.1}/{$tsFotos.pages.prev}{/if}Mas abajo buscamos: {$tsConfig.url}/fotos/{$tsFUser.1}/{$tsFotos.pages.next}Lo reemplazamos por: {if $tsAlbums.total}{$tsFotos.pages.next}{else}{$tsConfig.url}/fotos/{$tsFUser.1}/{$tsFotos.pages.next}{/if} ARCHIVOS ADICIONALES Simplemente subimos los archivos ajax.fotos.php en la carpeta inc/php/ajax y la imagen no_cover.png en la carpeta images de su tema MOD Albumes de fotos Kmario19.zip.zip] SI NO QUIEREN HACER LA INSTALACIÓN ANTERIOR Solo reemplacen todos los archivos que les dejo la descarga, son estos: c.fotos.php fotos.php ajax.fotos.php (agregar) t.fotos.tpl m.fotos_album.tpl m.fotos_add_from.tpl m.fotos_add_sidebar no_cover.png (agregar) fotos.css fotos.js MOD Albumes de fotos Kmario19.zip.zip] HTACCES Y SQL [NECESARIA] Ahora todos tienen que hacer estos dos pasos para terminar el mod. 1. Abrimos .htaccess que está en la raiz de tu web y buscamos: RewriteRule ^fotos/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/fotos.php?action=album&user=$1&page=$2 [QSA,L]Debajo agregamos: RewriteRule ^fotos/([A-Za-z0-9_-]+)/album/([0-9]+)/([A-Za-z0-9_-]+)$ inc/php/fotos.php?action=album&user=$1&folder=$2 [QSA,L] RewriteRule ^fotos/([A-Za-z0-9_-]+)/album/([0-9]+)/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/fotos.php?action=album&user=$1&folder=$2&page=$4 [QSA,L]2. En phpMyAdmin generamos la siguiente consulta: ALTER TABLE `f_fotos` ADD `f_album` INT NOT NULL AFTER `f_visitas` ; CREATE TABLE IF NOT EXISTS `f_album` ( `album_id` int(11) NOT NULL AUTO_INCREMENT, `album_name` varchar(150) NOT NULL, `album_user` int(11) NOT NULL, `album_date` varchar(15) NOT NULL, PRIMARY KEY (`album_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; IMÁGENES INFORMACIÓN ADICIONAL Ya que todas las fotos son públicas no le puse privacidad a los álbumes. La portada de cada álbum será una foto de su contenido al azar (se actualiza al recargar la página de "mis fotos"). Sólo se podrán crear álbumes al momento de añadir una nueva foto, asimismo guardarlo en el creado o uno a existente. Al borrar un álbum con fotos, las fotos volverán al inicio de "mis fotos" y el álbum será eliminado. Sólo se podrán borrar las fotos individualmente (como es lo normal). el efecto de "rotacion" en css para el diseño de los álbumes solo está disponible para Crhome y Mozilla, sin embargo quien tiene conocimientos en CSS3 puede adaptar las propiedades del efecto para otros navegadores, incluyendo IE Explorer (si alguien lo utiliza) xD. Cualquier fallo, problema, bug, error, duda o pregunta que tengan déjenla de comentario. Espero les haya gustado el mod y haya satisfecho las necesidades albumínicas de muchos, nos vemos en otro aporte, adios!
  49. 27 likes
    Comunidades v5 Titan / To-up Bueno Amigos.. aqui les quiero dejar para los que les interese las comunidades para el theme mencionado.. No vi que lo dejaron, pero vi que lo pidieron.. Aqui se las adapte.. Aclaro tiene el formato de la default.. Me resulto mejor su estilo.. Instalacion: Aqui suben los archivos. Aqui les dejo los archivos de las comus Completos.. Los que ya la tenian solo reemplazen la carpeta "comunidades" Y suban el archivo comusv5.css http://www.mediafire.com/?vccjg7t2i5vxa2x En el archivo main_header.tpl buscan: <link href="{$tsConfig.tema.t_url}/phpost.css" rel="stylesheet" type="text/css" /> Y lo cambian por: {if $tsPage == 'comunidades'} <link href="{$tsConfig.tema.t_url}/comusv5.css" rel="stylesheet" type="text/css" /> {else} <link href="{$tsConfig.tema.t_url}/phpost.css" rel="stylesheet" type="text/css" /> {/if} Eso seria todo.. Aqui algunas tomas para ver como les queda.. Espero que les sea Util.. SI tienen problemas me avisan que les respondere con gusto ok.. Adios Comus-v5.zip
  50. 27 likes
    Bueno gente la verdad no lo queria publicar ahora pero ya que aqui se los dejo, ya que estoy cansado me limitare a poner caps: DESCARGAR Este link tiene el fix ya puesto, si lo bajaron antes solo suban el estilo.css y el head_menu de este , sino bajenlo y subanlo a su ftp tal cual esta. Si notan algo mal me avisan -ok ME OLVIDABA DESDE LA ADMIN SE LLAMA CON EL NOMBRE "PHPost" sin comillas y con las mayus y minusculas tal cual estan ahi.