DeNunCianDo

DeNunCianDo (https://www.denunciando.com/)
-   Internet Y Redes (https://www.denunciando.com/internet-y-redes-113/)
-   -   Smline - 2 Buenos Mod (https://www.denunciando.com/internet-y-redes-113/949206-smline-2-buenos-mod.html)

bastardo98 05-01-2015 02:55:18

Smline - 2 Buenos Mod
 
1 Archivos Adjunto(s)


les dejo 2 muy buena modificacione para el script Smline
tenemos por un lado la modificacion para lograr el editor
wisfflit para postear y el segundo es link oculta para verlo
registrarse... comenzemos

Primer Mod - Link Oculto Visitante - Registrarse para verlo...

el mod es muy simple lo que hace es que los visitante no puedan ver el link de descarga
al menos que se registren en la weeb .. un mod muy simple que lo que se quiere lograr
son usuario en la weeb...

-Abren el post.class.php que se encuentra en la ruta del script : PHP/class y buscas:

[code]$data['p_body'] = $bbcode->start(secure($data['p_body'], false, true), true, true, $data['p_title']);[/code]-lo remplazas por el siguiente codigo....

[code]
//Ocultar links a visitantes, Smline
if(!$user->uid){
$replacement = '<div class="item-info">Para poder ver los enlaces necesitas estar <a href="/registro">Registrado</a>. O.. ¿ya tienes cuenta? <a href="javascript:anonimo.show_login();">Logueate!</a></div>';
$data['p_body'] = secure($data['p_body'], false, true);
$data['p_body'] = preg_replace('/[url[^>]+\]\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$][\/url[^>]+\]/i', $replacement, $data['p_body']);
$data['p_body'] = preg_replace('/\[url=(.*?)\](.*?)\[\/url\]/is', $replacement, $data['p_body']);
$data['p_body'] = $bbcode->start($data['p_body'], true, true, $data['p_title']);
}else{
$data['p_body'] = $bbcode->start(secure($data['p_body'], false, true), true, true, $data['p_title']);
}
[/code]-resultado final de la modificacion es el siguiete captura:



Segundo Mod- Editor wisgflit para agrear post - Publicar

-este mod es para modificar el editor de post y logar un editor de post
por html.. que solo copias y pegas el contenido sin usar los bbcode....

-Nos descargamos el rar con el mod: Archivo Adjunto 2355697

-ahora hacemos lo siguiente:

-Subes las carpetas a la raíz de tu tema

se reemplazará agregar-post.js

-editas el archivo agregar-post.tpl
agregas después de
[code]
{include file='includes/header.tpl'}
[/code]esto
[code]
<link href="{$web.css}/wysibb.css" rel="stylesheet" type="text/css" />
<script src="{$web.js}/wysibb.js" type="text/javascript"></script>
[/code]-cambias markItUp por Mditor

(por la línea 20-25, está dos veces)

-Regresas a raíz
vas a libs en PHP
abres
bbcode.inc.php

reemplazas esto
[code]
"/\[code\](.*?)\[\/code\]/is"
[/code]-por esto
[code]
"/\[code\](.*?)\[\/code\]/is",
"/(?i)\[s\](.*?)\[\/s\]/i",
"/(?i)\[sub\](.*?)\[\/sub\]/i",
"/(?i)\[sup\](.*?)\[\/sup\]/i",
"/(?i)\[table\]\[tr\]\[td\](.*?)\[\/td\]\[\/tr\]\[\/table\]/i",
"/(?i)\[ul\](.*?)\[\/ul\]/i",
"/(?i)\[ol\](.*?)\[\/ol\]/i",
"/(?i)\[li\](.*?)\[\/li\]/i",
"/(?i)\[notice\](.*?)\[\/notice\]/i",
"/(?i)\[info\](.*?)\[\/info\]/i",
"/(?i)\[warning\](.*?)\[\/warning\]/i",
"/(?i)\[error\](.*?)\[\/error\]/i",
"/(?i)\[success\](.*?)\[\/success\]/i"

[/code]-y esto
[code]
"<pre class=\"text_code\">\\1</pre>"

[/code]-por esto
[code]
"<pre class=\"text_code\">\\1</pre>",
"<s>\\1</s>",
"<sub>\\1</sub>",
"<sup>\\1</sup>",
"<table class=\"bbctab\"><tbody><tr><td>\\1</td></tr></tbody></table>",
"<ul class=\"bbclist\">\\1</ul>",
"<ol class=\"bbclist\">\\1</ol>",
"<li>\\1</li>",
"<div class=\"bbcmsg notice\">\\1</div>",
"<div class=\"bbcmsg info\">\\1</div>",
"<div class=\"bbcmsg warning\">\\1</div>",
"<div class=\"bbcmsg error\">\\1</div>",
"<div class=\"bbcmsg success\">\\1</div>"

[/code]-el resultado el siguiente en la captura:


bastardo98 06-01-2015 18:49:56

Respuesta: Smline - 2 Buenos Mod
 
para agranda la caja de publicar post que es textarea
en el mod editor wisgflit para el script smline...
solo agregan al global.css del script este codigo:

[code]

.wysibb-text-editor {
min-height: 180px !important;
}

[/code]

bastardo98 14-01-2015 21:58:29

Respuesta: Smline - 2 Buenos Mod
 
1 Archivos Adjunto(s)
para aprender mas sobre codigo smarty esta este buen manual
leeanlon completo aprendan codigo smarty que usa este buen script:
Archivo Adjunto 2359631

commodore128 06-04-2015 11:27:52

Respuesta: Smline - 2 Buenos Mod
 
1 Archivos Adjunto(s)
Cargar portada del post desde el equipo por ajax

mod lo que hace es que despliega la opción de cargar desde la compu
examinas, eliges tu archivo lo recortas si quieres y ya se imprimen las coordenas
y se carga la imagen original en la carpeta thumbs/tmp/ con el nombre
"id de usuario"-"número aleatorio".jpg

http://s10.postimg.org/4whrbj83t/ibu_Grx_Mh_Yp_Apsl.png

No le puse que se borrara automáticamente
pero pueden entrar a esa carpeta y eliminar todas las imágenes cada 3 o 6 meses
Después agrego esa función

http://s13.postimg.org/man282eiv/i_O81lx_Zu_PPRh_D.png

Instrucciones

Ve a la raíz de tu web
entras a la carpeta thumbs
y creas la carpeta tmp
y le aumentas permisos
osea de lectura y escritura para que se puedan guardar las
imágenes que se carguen.

En posts.class.php
Después de :

[code]
function img_port($url){
$img_url = secure($url);
$data['img'] = getimagesize($img_url);
$min_w = 154;
$min_h = 116;
$max_w = 2000;
$max_h = 2000;
if(empty($data['img'][0])) return '0: La imagen de portada no existe o no es una imagen v&aacute;lida';
elseif($data['img'][0] < $min_w || $data['img'][1] < $min_h) return '0: La imagen debe tener un tama&ntilde;o superior a 154x116 pixeles';
elseif($data['img'][0] > $max_w || $data['img'][1] > $max_h) return '0: La imagen debe tener un tama&ntilde;o menor a 2000x2000 pixeles';
return '1: SMline';
}
[/code]

Agregas este codigo:

[code]
function newUpload(){
foreach($_FILES as $file)
$fReturn = $this->uploadFile($file);
if(empty($fReturn['msg'])) return array('error' => $fReturn[1]);
else return $fReturn;
}

function uploadFile($file){
global $mysqli, $user, $web;
$size = empty($this->file_size) ? getimagesize($file['tmp_name']) : $this->file_size;
if(empty($size)) die('0: Intentando subir un archivo que no es valido.');

$w = $size[0];
$h = $size[1];
$key = rand(0,1000);
$newName = $user->uid.'-'.$key.'.jpg';

$root = 'thumbs/tmp/'.$newName;
$msg = $web['url'].'/thumbs/tmp/'.$newName;
copy($file['tmp_name'],$root);
return array('msg' => $msg, 'error' => '', 'w' => $w, 'h' => $h);
}
[/code]

En posts.ajax.php

después de

[code]
case 'img_port':
$url = secure($_POST['url']);
echo $posts->img_port($url);
break;
[/code]

coloca:

Cita:

case 'img_file':
$result = $posts->newUpload();
echo json($result);
break;
En agregar-post.tpl
después de:

[code]
<div class="from-post">Desde el post</div>
[/code]

Pones lo siguiente:

[code]
<div class="from-pc">Desde tu equipo</div>
[/code]

atencion: si no has editado el archivo agregar-post.js
puedes reemplazarlo con el que dejo en el post
el archivo va en themes/smline/js
sino continueas editando lo siguiente:
En agregar-post.js:

Hasta arriba antes de:

[code]
$(document).ready(function(){
[/code]

Agrega esto

[code]
function isImageFile(filename){
var ext = (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename.toLowerCase()) : '';
if(ext && /^(jpg|png|jpeg|gif)$/.test(ext)) return true;
else return false;
}
[/code]

antes de

[code]
case 'from-post':
[/code]

Agrega:

[code]
case 'from-pc':
mydialog.close_button = false;
mydialog.mask_close = false;
mydialog.show();
mydialog.title('Agregar imagen');
mydialog.body('<div id="error" class="image-url-error" style="display:none"></div><b>Localizar imagen</b><br /><input type="file" id="i_image" name="i_image" style="width:400px"/><br />');
mydialog.buttons(true, 'Cargar imagen', 'Cancelar', 'new_post.cargar_portada();', 'close', true);
mydialog.center();
$('input[name=i_image]').focus();
break;
[/code]

Antes de

[code]
portada_cortar: function(url){
mydialog.show();
mydialog.title('Cortar imagen');
[/code]

Pones:

[code]
cargar_portada: function () {
if ($('input#i_image').val()) {
if(isImageFile($('input#i_image').val())){
mydialog.loading('Cargando imagen...');
$.ajaxFileUpload({ url: '/ajax/posts/img_file/', fileElementId: 'i_image', dataType: 'json', success: new_post.uploadsuccess });
} else mydialog.alert('Error', 'El archivo no es una imagen válida.');
} else mydialog.alert('Error', 'No seleccionó ningún archivo');
},
uploadsuccess: function (r) {
mydialog.end_loading();
mydialog.loading(' hola');

if (r.error == 'success') {
new_post.success = true;
new_post.close();
mydialog.loading(' imagen no cargada...');
} else if (r.msg) {
$('input[name=img_url]').val(r.msg);

$('.thumbnail-preview').attr('src', r.msg).css({'width':'auto','height':'auto'});
new_post.portada_cortar(r.msg);

} else {
mydialog.center();
mydialog.title('Error');
mydialog.body(r.error);
}
},
[/code]

Y esto al final:

[code]
jQuery.extend({
createUploadIframe: function(id, uri)
{
//create frame
var frameId = 'jUploadFrame' + id;
var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"';
if(window.ActiveXObject)
{
if(typeof uri== 'boolean'){
iframeHtml += ' src="' + 'javascript:false' + '"';

}
else if(typeof uri== 'string'){
iframeHtml += ' src="' + uri + '"';

}
}
iframeHtml += ' />';
jQuery(iframeHtml).appendTo(document.body);

return jQuery('#' + frameId).get(0);
},
createUploadForm: function(id, fileElementId, data)
{
//create form
var formId = 'jUploadForm' + id;
var fileId = 'jUploadFile' + id;
var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
if(data)
{
for(var i in data)
{
jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);
}
}
var oldElement = jQuery('#' + fileElementId);
var newElement = jQuery(oldElement).clone();
jQuery(oldElement).attr('id', fileId);
jQuery(oldElement).before(newElement);
jQuery(oldElement).appendTo(form);



//set attributes
jQuery(form).css('position', 'absolute');
jQuery(form).css('top', '-1200px');
jQuery(form).css('left', '-1200px');
jQuery(form).appendTo('body');
return form;
},

ajaxFileUpload: function(s) {
// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
s = jQuery.extend({}, jQuery.ajaxSettings, s);
var id = new Date().getTime()
var form = jQuery.createUploadForm(id, s.fileElementId, (typeof(s.data)=='undefined'?false:s.data));
var io = jQuery.createUploadIframe(id, s.secureuri);
var frameId = 'jUploadFrame' + id;
var formId = 'jUploadForm' + id;
// Watch for a new set of requests
if ( s.global && ! jQuery.active++ )
{
jQuery.event.trigger( "ajaxStart" );
}
var requestDone = false;
// Create the request object
var xml = {}
if ( s.global )
jQuery.event.trigger("ajaxSend", [xml, s]);
// Wait for a response to come back
var uploadCallback = function(isTimeout)
{
var io = document.getElementById(frameId);
try
{
if(io.contentWindow)
{
xml.responseText = io.contentWindow.document.body?io.contentWindow.document.bod y.innerHTML:null;
xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.docum ent.XMLDocument:io.contentWindow.document;

}else if(io.contentDocument)
{
xml.responseText = io.contentDocument.document.body?io.contentDocument.document .body.innerHTML:null;
xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.d ocument.XMLDocument:io.contentDocument.document;
}
}catch(e)
{
jQuery.handleError(s, xml, null, e);
}
if ( xml || isTimeout == "timeout")
{
requestDone = true;
var status;
try {
status = isTimeout != "timeout" ? "success" : "error";
// Make sure that the request was successful or notmodified
if ( status != "error" )
{
// process the data (runs the xml through httpData regardless of callback)
var data = jQuery.uploadHttpData( xml, s.dataType );
// If a local callback was specified, fire it and pass it the data
if ( s.success )
s.success( data, status );

// Fire the global callback
if( s.global )
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
} else
jQuery.handleError(s, xml, status);
} catch(e)
{
status = "error";
jQuery.handleError(s, xml, status, e);
}

// The request was completed
if( s.global )
jQuery.event.trigger( "ajaxComplete", [xml, s] );

// Handle the global AJAX counter
if ( s.global && ! --jQuery.active )
jQuery.event.trigger( "ajaxStop" );

// Process result
if ( s.complete )
s.complete(xml, status);

jQuery(io).unbind()

setTimeout(function()
{ try
{
jQuery(io).remove();
jQuery(form).remove();

} catch(e)
{
jQuery.handleError(s, xml, null, e);
}

}, 100)

xml = null

}
}
// Timeout checker
if ( s.timeout > 0 )
{
setTimeout(function(){
// Check to see if the request is still happening
if( !requestDone ) uploadCallback( "timeout" );
}, s.timeout);
}
try
{

var form = jQuery('#' + formId);
jQuery(form).attr('action', s.url);
jQuery(form).attr('method', 'POST');
jQuery(form).attr('target', frameId);
if(form.encoding)
{
jQuery(form).attr('encoding', 'multipart/form-data');
}
else
{
jQuery(form).attr('enctype', 'multipart/form-data');
}
jQuery(form).submit();

} catch(e)
{
jQuery.handleError(s, xml, null, e);
}
jQuery('#' + frameId).load(uploadCallback );
return {abort: function () {}};
},

uploadHttpData: function( r, type ) {
var data = !type;
data = type == "xml" || data ? r.responseXML : r.responseText;
// If the type is "script", eval it in global context
if ( type == "script" )
jQuery.globalEval( data );
// Get the JavaScript object, if JSON is used.
if ( type == "json" )
eval( "data = " + data );
// evaluate scripts within html
if ( type == "html" )
jQuery("<div>").html(data).evalScripts();

return data;
}
});
[/code]

instrucciones para descargar explicado del post aqui: Archivo Adjunto 2386858

commodore128 06-04-2015 13:00:27

Respuesta: Smline - 2 Buenos Mod
 
5 Archivos Adjunto(s)
Chat estilo a facebook

http://s3.postimg.org/k223nqr8j/Sin_...psbejvxsor.png


Primero ejecutan este sql en su base de datos:

[code]
CREATE TABLE `chat` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`from` VARCHAR(255) NOT NULL DEFAULT '',
`to` VARCHAR(255) NOT NULL DEFAULT '',
`message` TEXT NOT NULL,
`sent` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`recd` INTEGER UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
)
[/code] ahora tienen que ir a el archivo post.php en PHP/pages/

y arriba de:

[code]
$smarty->assign('last_posts', $posts->last_posts(0, false, $cat));
[/code]ponen esto:

[code]
if($user->uid==true){
session_start();
$_SESSION['username'] = $user->nick;
$variable1 = $_SESSION['username'];}
$smarty->assign("datos_chat",$variable1);
[/code]En themes/TUTEMA/Templates/ buscan home.tpl y debajo de:

[code]
<div class="home_right">
[/code]Agregan:

[code]
{include file='i_home/chat_users.tpl'}
[/code]
En esa misma carpeta buscan el archivo members.tpl y remplazan todo su contenido por:

[code]
{include file='includes/header.tpl'}
<div id="main-col" style="margin-right:5px;">
<div class="filterBy filterFull clearfix ui-corner-all">
<div class="floatL xResults">
Mostrando <strong>{$get_users.start} - {if $get_users.end < $get_users.total}{$get_users.end}{else}{$get_users.total}{/if}</strong> resultados de <strong>{$get_users.total}</strong> </div>
<ul class="floatR">
<li class="orderTxt">Ordenar por</li>
<li{if $order == 'nombre'} class="here"{/if}><a href="{$web.url}/miembros?order=nombre">Nombre de usuario</a></li>
<li{if $order == 'actividad' || $order == ''} class="here"{/if}><a href="{$web.url}/miembros?order=actividad">&Uacute;ltima actividad</a></li>
<li{if $order == 'online'} class="here"{/if}><a href="{$web.url}/miembros?order=online">Registro</a></li>
</ul>
<div class="clearBoth"></div>
</div>

<div id="showResult" class="resultFull mis-comunidades">
<ul class="clearfix">

{foreach from=$get_users.list item=u}
<li class="resultBox clearfix">
<div class="floatL avatarBox">
<a href="{$web.url}/{$u.u_nick}" class="img-ava{if $user->is_online($u.u_id)} online{/if}">
<img class="avatar-2" src="{$web.url}/avatar/{$u.u_id}_120.jpg?{$u.u_last_avatar}" alt="Avatar de {$u.u_nick}" title="{$u.u_nick} - {if $user->is_online($u.u_id)}Online{else}Offline{/if}">
</a>
</div>
<div class="floatL infoBox">
<h4>
<img src="{$web.icons}/ranks/{$u.r_image}" alt="Imagen del rango" title="{$u.r_name}" class="stip" />
<a href="{$web.url}/{$u.u_nick}">{$u.u_nick}</a>
</h4>
<ul>
<li>Registro: <strong>{$u.u_date|date_format:"%d/%m/%Y"}</strong></li>
<li>&Uacute;ltima actividad: <strong>{$u.u_last_active|hace}</strong></li>
<li>Posts: <strong>{$u.u_posts}</strong> - Puntos: <strong>{$u.u_points}</strong></li>
<li>Pa&iacute;s: <strong>{$array_paises[$u.u_country]}</strong></li>
<li>Usuario: {if $user->is_online($u.u_id)}<strong style=" color: #2B9B00; ">Conectado</strong> {else}<strong>Desconectado</strong>{/if}</li>
{if $user->uid}<li>{if $user->is_online($u.u_id)}Chat: <a class="u_nick" href="javascript:void(0)" onclick="javascript:chatWith('{$u.u_nick}')">Click aca</a>{/if}</li>{/if}
</ul>
</div>
</li>
{/foreach}
</ul>
</div>
{$get_users.pages}
</div>

<div id="sidebar">
<div class="box">
<div class="box_title">Usuarios recomendados</div>
<div class="box_body last_members list_element">

{if !$get_users.recomendados}<div class="emptyData">No hay usuarios recomendados</div>{/if}

{foreach from=$get_users.recomendados item=u}
<div class="list-element">
<a href="{$web.url}/{$u.u_nick}">
<img src="{$web.url}/avatar/{$u.u_id}_32.jpg?{$u.u_last_avatar}" alt="Avatar de {$u.u_nick}" title="Avatar de {$u.u_nick}" />
</a>
<a class="u_nick" href="{$web.url}/{$u.u_nick}">{$u.u_nick}</a>

</div>
{/foreach}

</div>
</div>
</div>

{include file='includes/footer.tpl'}
[/code]Ahora van a themes/TUTEMA/Templates/i_home y suben este archivo: Archivo Adjunto 2386859

Ahora van a themes/TUTEMA/Templates/includes y buscan el archivo header.tpl
y antes de:

[code]
</head>
[/code]Agregan:

[code]
{if $user->uid}
<link href="{$web.css}/live.css" rel="stylesheet" type="text/css">{/if}
<link href="{$web.css}/chat.css" rel="stylesheet" type="text/css">
<script src="{$web.js}/chat.js" type="text/javascript"></script>
{/if}
[/code]Suben a la raiz de su web (en donde se encuentra el .htaccess ) este archivo: Archivo Adjunto 2386860

En ese archivo buscan y ponen sus datos :

[code]
define ('DBPATH','Servidor');
define ('DBUSER','usuario');
define ('DBPASS','Contraseña');
define ('DBNAME','Base de datos');
[/code]Por ultimo suben este archivo a themes/TUTEMA/js/ Archivo Adjunto 2386861
Y este archivo a themes/TUTEMA/css/ Archivo Adjunto 2386862

Ejecutan esta funcion sql en su phpmyadmin:

[code]
ALTER TABLE `users` ADD `u_chat` INT(1) NOT NULL DEFAULT '1'
[/code]Van a su archivo posts.php que esta en PHP/pages y debajo de

[code]
$smarty->assign('last_members', $posts->last_members());
[/code]Agregan:

[code]
if($user->uid==true){
session_start();
$_SESSION['username'] = $user->nick;
}

$smarty->assign("datos_chat",$_SESSION['username']);
[/code]En el mismo archivo buscan:

[code]
$smarty->assign('cats', $posts->cats());
$smarty->assign('page', $page);
?>
[/code]Agregan arriba:

[code]
// Datos para el chat
require_once'PHP/libs/datos.php';
$smarty->assign('get_users', $user->get_users());
[/code]Ahora van a user_class.php que esta en PHP/class/ y buscan:

[code]
if($data){
$query = $mysqli->query('SELECT u.u_id, u.u_nick, u.u_rank, u.u_status, u.u_points_ava, u.u_update_points, u.u_last_avatar, s.*, ac.u_options FROM users AS u LEFT JOIN users_stats AS s ON u.u_id = s.u_id LEFT JOIN users_accounts AS ac ON ac.u_id = u.u_id WHERE u.u_id = \''.$data['s_user'].'\' LIMIT 1');

[/code]lo remplazan por:

[code]
if($data){
$query = $mysqli->query('SELECT u.u_id, u.u_chat, u.u_nick, u.u_rank, u.u_status, u.u_points_ava, u.u_update_points, u.u_last_avatar, s.*, ac.u_options FROM users AS u LEFT JOIN users_stats AS s ON u.u_id = s.u_id LEFT JOIN users_accounts AS ac ON ac.u_id = u.u_id WHERE u.u_id = \''.$data['s_user'].'\' LIMIT 1');

[/code]Mas abajo buscan:

[code]
$this->nick = $data['u_nick'];
[/code]Y abajo agregan:

[code]
$this->chat = $data['u_chat'];
[/code]En el mismo archivo buscan:

[code]
// SQL PRINCIPAL
$query = $mysqli->query('SELECT u.u_id, u.u_nick, u.u_last_avatar, u.u_country, u.u_last_active, u.u_date, u.u_sex, s.u_posts, s.u_points, ac.u_bio, r.r_image, r.r_name FROM users AS u LEFT JOIN users_stats AS s ON s.u_id = u.u_id LEFT JOIN users_accounts AS ac ON ac.u_id = u.u_id LEFT JOIN users_ranks AS r ON r.r_id = u.u_rank WHERE u.u_status = \'1\' '.$order.' LIMIT '.$start.', '.$limit) or die($mysqli->error);
[/code]y lo remplazan por:

[code]
// SQL PRINCIPAL
$query = $mysqli->query('SELECT u.u_id, u.u_chat, u.u_nick, u.u_last_avatar, u.u_country, u.u_last_active, u.u_date, u.u_sex, s.u_posts, s.u_points, ac.u_bio, r.r_image, r.r_name FROM users AS u LEFT JOIN users_stats AS s ON s.u_id = u.u_id LEFT JOIN users_accounts AS ac ON ac.u_id = u.u_id LEFT JOIN users_ranks AS r ON r.r_id = u.u_rank WHERE u.u_status = \'1\' '.$order.' LIMIT '.$start.', '.$limit) or die($mysqli->error);
[/code]Ahora van a account_class que esta en PHP/class y buscan:

[code]
$u_sex = intval($_POST['u_sex']) ? 1 : 0;
[/code]Abajo agregan:

[code]
$u_chat = secure($_POST['u_chat']);
[/code]Mas abajo buscan:

[code]
$mysqli->query('UPDATE users SET u_sex = \''.$u_sex.'\', u_country = \''.$require['country'].'\' WHERE u_id = \''.$user->uid.'\'');
return '1: SMline.NET';
break;
[/code]y lo remplazan por:

[code]
$mysqli->query('UPDATE users SET u_chat = \''.$u_chat.'\', u_sex = \''.$u_sex.'\', u_country = \''.$require['country'].'\' WHERE u_id = \''.$user->uid.'\'');
return '1: SMline.NET';
break;
[/code]Ahora van al archivo main.tpl que esta en themes/TUTEMA/Templates/i_account y buscan:

[code]
<li class="list_item">
<label for="u_sex">Sexo</label>
<select class="inp_text" name="u_sexo" id="u_sex" style="width: 262px;">
<option value="-1">Seleccionar Sexo</option>
<option value="1"{if $u_info.u_sex == 1} selected="selected"{/if}>Mujer</option>
<option value="0"{if $u_info.u_sex == 0} selected="selected"{/if}>Hombre</option>
</select>
</li>


[/code]Abajo agregan:

[code]
<li class="list_item">
<label for="u_chat">Activar chat</label>
<select class="inp_text" name="u_chat" id="u_chat" style="width: 262px;">
<option value="1"{if $u_info.u_chat == 1} selected="selected"{/if}>Conectado</option>
<option value="2"{if $u_info.u_chat == 2} selected="selected"{/if}>Desconectado</option>
</select>
<p>Desconectado: Podras ver a los usuarios conectados en el chat, pero ellos a vos no<p/>
<p>Conectado: Podras ver a los usuarios conectados en el chat y ellos a vos<p/>
</li>
[/code]Si instalaron la v2 hacen esto:

Van a themes/TUTEMA/Templates/i_profile y en el archivo sidebar.tpl buscan (y borran):

[code]
{if $user->uid}
{include file='i_profile/chat_disponible.tpl'}
{/if }
[/code]Ahora van a themes/TUTEMA/Templates/i_profile buscan el archivo chat_disponible.tpl (y lo borran)

------------ hasta aca lo de la v2----------------

Por ultimo descargan esto: Archivo Adjunto 2386864

Y hacen lo siguente:

La carpeta chat la suben a la raiz del host (en donde esta el .htaccess)
Remplazan el archivo chat.js que esta en themes/TUTEMA/js/
Remplazan el archivo chat.css themes/TUTEMA/css/
Remplazan el archivo chat.users.tpl themes/TUTEMA/Templates/i_home
Remplazan el archivo members.tpl themes/TUTEMA/Templates/
Remplazan el archivo chat.php que esta en la raiz del host (en donde esta el .htaccess)

Importante:
No se olviden de remplazar estos datos del archivo chat.php

[code]
define ('DBPATH','localhost');
define ('DBUSER','root');
define ('DBPASS','lokura16');
define ('DBNAME','db_tot');
[/code]Localhost (Por tu sevidor mysql)
root (Por tu usuario mysql)
lokura16 (Por tu contraseña mysql)
db_tot (Por tu base de datos mysql)

commodore128 07-04-2015 18:33:23

Respuesta: Smline - 2 Buenos Mod
 
2 Archivos Adjunto(s)
Bbcode Paguina Porno XXX

1- abrimos el archivo bbcode.inc.php que se encuentra en la carpeta /PHP/libs

buscamos:

[code]"/\[code\](.*?)\[\/code\]/is"[/code]remplazamos por:

[code]
"/\[code\](.*?)\[\/code\]/i",
"/\[xvideos\](.*?)\[\/xvideos\]/i",
"/\[redtube\](.*?)\[\/redtube\]/i",
"/\[xhamster\](.*?)\[\/xhamster\]/is"
[/code]Buscamos:

[code]"<pre class=\"text_code\">\\1</pre>"[/code]Remplazamos por:

[code]
"<pre class=\"text_code\">\\1</pre>",
"<iframe src='http://flashservice.xvideos.com/embedframe/\\1' frameborder=0 width=510 height=400 scrolling=no></iframe>",
"<iframe src='http://embed.redtube.com/?id=\\1&bgcolor=000000' frameborder='0' width='510' height='400'scrolling='no'></iframe>",
"<iframe width='510' height='400' src='http://xhamster.com/xembed.php?video=\\1' frameborder='0' scrolling='no'></iframe>"
[/code]2- Abrimos el archivo global.js que se encuentra en /themes/smline/js

Buscamos:

[code]lang['Ingrese la URL'] = "Ingrese la URL";[/code]Agregamos abajo:

[code]
lang['xvideos'] = "xvideos";
lang['redtube'] = "redtube";
lang['xhamster'] = "xhamster";
[/code]Buscamos:

[code]
{
name: 'Agregar spoiler',
openWith: '[*spoiler]',
closeWith: '[*/spoiler]',
}
[/code]Remplazamos por:

[code]
{
name: 'Agregar spoiler',
openWith: '[*spoiler]',
closeWith: '[*/spoiler]',
},
{
name: 'Videos XXX',
dropMenu: [
{
name: lang['xvideos'],
openWith: '[xvideos]Ingresa aca El Id de el video',
closeWith: '[/xvideos]',
},
{
name: lang['redtube'],
openWith: '',
},
{
name: lang['xhamster'],
openWith: '',
}

]
}
[/code]

si esta parte del codigo no logro visualizarse bien descargarlo en bloc de nota desde aqui: http://www.denunciando.com/images/fu...attach/txt.gif Archivo Adjunto 2387325

Importante: en el código anterior tuve que poner un * adelante de cada palabra spoiler ustedes sáquenlo

3- Abrimos el archivo global.css que se encuentra en /themes/smline/css

Buscamos:

[code]
.markItUp .markItUpButton1 a {
background-position: 0 -78px
}

.markItUp .markItUpButton2 a {
background-position: 0 -104px
}

.markItUp .markItUpButton3 a {
background-position: 0 -312px
}

.markItUp .markItUpButton4 a {
background-position: 0 0
}

.markItUp .markItUpButton5 a {
background-position: 0 -26px
}

.markItUp .markItUpButton6 a {
background-position: 0 -52px
}

.markItUp .markItUpButton7 a {
background-position: 0 -338px
}

.markItUp .markItUpButton8 a {
background-position: 0 -364px
}

.markItUp .markItUpButton9 a {
background-position: 0 -286px
}

.markItUp .markItUpButton10 a {
background-position: 0 -130px
}

.markItUp .markItUpButton11 a {
background-position: 0 -78px
}

.markItUp .markItUpButton11 a {
background-position: 0 -182px
}

.markItUp .markItUpButton12 a {
background-position: 0 -208px
}

.markItUp .markItUpButton13 a {
background-position: 0 -234px
}

.markItUp .markItUpButton14 a {
background-position: 0 -260px
}

.markItUp .markItUpButton15 a {
background-position: 0 -156px
}

.markItUp .markItUpButton16 a {
background-position: 0 -832px;
}

.markItUp .markItUpButton17 a {
background-position: 0 -858px;
}

.markItUp .markItUpButton1 a:hover {
background-position: -25px -78px
}

.markItUp .markItUpButton2 a:hover {
background-position: -25px -104px
}

.markItUp .markItUpButton3 a:hover {
background-position: -25px -312px
}

.markItUp .markItUpButton4 a:hover {
background-position: -25px 0
}

.markItUp .markItUpButton5 a:hover {
background-position: -25px -26px
}

.markItUp .markItUpButton6 a:hover {
background-position: -25px -52px
}

.markItUp .markItUpButton7 a:hover {
background-position: -25px -338px
}

.markItUp .markItUpButton8 a:hover {
background-position: -25px -364px
}

.markItUp .markItUpButton9 a:hover {
background-position: -25px -286px
}

.markItUp .markItUpButton10 a:hover {
background-position: -25px -130px
}

.markItUp .markItUpButton11 a:hover {
background-position: -25px -182px
}

.markItUp .markItUpButton12 a:hover {
background-position: -25px -208px
}

.markItUp .markItUpButton13 a:hover {
background-position: -25px -234px
}

.markItUp .markItUpButton14 a:hover {
background-position: -25px -260px
}

.markItUp .markItUpButton15 a:hover {
background-position: -25px -156px
}

.markItUp .markItUpButton16 a:hover {
background-position: -25px -832px
}

.markItUp .markItUpButton17 a:hover {
background-position: -25px -858px
}

.markItUp .markItUpButton1 a:active {
background-position: -50px -78px
}

.markItUp .markItUpButton2 a:active {
background-position: -50px -104px
}

.markItUp .markItUpButton3 a:active {
background-position: -50px -312px
}

.markItUp .markItUpButton4 a:active {
background-position: -50px 0
}

.markItUp .markItUpButton5 a:active {
background-position: -50px -26px
}

.markItUp .markItUpButton6 a:active {
background-position: -50px -52px
}

.markItUp .markItUpButton7 a:active {
background-position: -50px -338px
}

.markItUp .markItUpButton8 a:active {
background-position: -50px -364px
}

.markItUp .markItUpButton9 a:active {
background-position: -50px -286px
}

.markItUp .markItUpButton10 a:active {
background-position: -50px -130px
}

.markItUp .markItUpButton11 a:active {
background-position: -50px -182px
}

.markItUp .markItUpButton12 a:active {
background-position: -50px -208px
}

.markItUp .markItUpButton13 a:active {
background-position: -50px -234px
}

.markItUp .markItUpButton14 a:active {
background-position: -50px -260px
}

.markItUp .markItUpButton15 a:active,.markItUp .markItUpButton15.selected a {
background-position: -50px -156px
}

.markItUp .markItUpButton16 a:active,.markItUp .markItUpButton16.selected a {
background-position: -50px -832px
}

.markItUp .markItUpButton17 a:active {
background-position: -50px -858px
}
[/code]Remplazamos por:

[code]
.markItUp .markItUpButton1 a {
background-position: 0 -82px
}

.markItUp .markItUpButton2 a {
background-position: 0 -108px
}

.markItUp .markItUpButton3 a {
background-position: 0 -316px
}

.markItUp .markItUpButton4 a {
background-position: 0 -4px
}

.markItUp .markItUpButton5 a {
background-position: 0 -30px
}

.markItUp .markItUpButton6 a {
background-position: 0 -56px
}

.markItUp .markItUpButton7 a {
background-position: 0 -342px
}

.markItUp .markItUpButton8 a {
background-position: 0 -368px
}

.markItUp .markItUpButton9 a {
background-position: 0 -290px
}

.markItUp .markItUpButton10 a {
background-position: 0 -134px
}

.markItUp .markItUpButton11 a {
background-position: 0 -82px
}

.markItUp .markItUpButton11 a {
background-position: 0 -186px
}

.markItUp .markItUpButton12 a {
background-position: 0 -212px
}

.markItUp .markItUpButton13 a {
background-position: 0 -238px
}

.markItUp .markItUpButton14 a {
background-position: 0 -264px
}

.markItUp .markItUpButton15 a {
background-position: 0 -160px
}

.markItUp .markItUpButton16 a {
background-position: 0 -840px;
}

.markItUp .markItUpButton17 a {
background-position: 0 -866px;
}
.markItUp .markItUpButton18 a {
background-position: 0 -918px
}
.markItUp .markItUpButton1 a:hover {
background-position: -25px -82px
}

.markItUp .markItUpButton2 a:hover {
background-position: -25px -108px
}

.markItUp .markItUpButton3 a:hover {
background-position: -25px -316px
}

.markItUp .markItUpButton4 a:hover {
background-position: -25px -4px
}

.markItUp .markItUpButton5 a:hover {
background-position: -25px -30px
}

.markItUp .markItUpButton6 a:hover {
background-position: -25px -56px
}

.markItUp .markItUpButton7 a:hover {
background-position: -25px -342px
}

.markItUp .markItUpButton8 a:hover {
background-position: -25px -368px
}

.markItUp .markItUpButton9 a:hover {
background-position: -25px -290px
}

.markItUp .markItUpButton10 a:hover {
background-position: -25px -134px
}

.markItUp .markItUpButton11 a:hover {
background-position: -25px -186px
}

.markItUp .markItUpButton12 a:hover {
background-position: -25px -212px
}

.markItUp .markItUpButton13 a:hover {
background-position: -25px -238px
}

.markItUp .markItUpButton14 a:hover {
background-position: -25px -264px
}

.markItUp .markItUpButton15 a:hover {
background-position: -25px -160px
}

.markItUp .markItUpButton16 a:hover {
background-position: -25px -840px
}

.markItUp .markItUpButton17 a:hover {
background-position: -25px -866px
}
.markItUp .markItUpButton18 a:hover {
background-position: -25px -918px
}

.markItUp .markItUpButton1 a:active {
background-position: -50px -82px
}

.markItUp .markItUpButton2 a:active {
background-position: -50px -108px
}

.markItUp .markItUpButton3 a:active {
background-position: -50px -316px
}

.markItUp .markItUpButton4 a:active {
background-position: -50px -4px
}

.markItUp .markItUpButton5 a:active {
background-position: -50px -30px
}

.markItUp .markItUpButton6 a:active {
background-position: -50px -56px
}

.markItUp .markItUpButton7 a:active {
background-position: -50px -342px
}

.markItUp .markItUpButton8 a:active {
background-position: -50px -368px
}

.markItUp .markItUpButton9 a:active {
background-position: -50px -290px
}

.markItUp .markItUpButton10 a:active {
background-position: -50px -134px
}

.markItUp .markItUpButton11 a:active {
background-position: -50px -186px
}

.markItUp .markItUpButton12 a:active {
background-position: -50px -212px
}

.markItUp .markItUpButton13 a:active {
background-position: -50px -238px
}

.markItUp .markItUpButton14 a:active {
background-position: -50px -264px
}

.markItUp .markItUpButton15 a:active,.markItUp .markItUpButton15.selected a {
background-position: -50px -160px
}

.markItUp .markItUpButton16 a:active,.markItUp .markItUpButton16.selected a {
background-position: -50px -840px
}

.markItUp .markItUpButton17 a:active {
background-position: -50px -866px
}
.markItUp .markItUpButton18 a:active {
background-position: -50px -918px
}
[/code]4- descargamos la siguiente imagen:

http://www.denunciando.com/attachmen...1&d=1428449553

la renombramos como bbcodes2.png y la movemos a /themes/smline/css/img remplazando la que viene por default

commodore128 12-04-2015 04:05:20

Respuesta: Smline - 2 Buenos Mod
 
http://s26.postimg.org/6f059hi55/Dibujo.png



Por cada post que se realize el sitemap
automatico en el script de smline lo pondra en el mismo y ya no ahi que
hacerlo manual ..
cada ves que el boot de google nos visite para indexar los post
en los buscadores lo que hace es copiar cada articulo desde el sitemap...



Antes de comenzar el tutorial recuerden que deben de tener una cuenta google
para realizar el registro en google de su weeb...

1-entramos al panel de weebmaster para indexar en google

http://s24.postimg.org/fjumte9ph/Dibujo.png

2-hacemos clic en el boton.. iniciar sesion en herramienta para webmaster

http://s9.postimg.org/x6kvgtiu7/Dibujo.png

3-hacemos clic en boton añadir un sitio y lo agregamos ....y luego hacemos clic en continuar

http://s26.postimg.org/j9ghaq045/Dibujo.png

http://s26.postimg.org/dmk4d8xll/Dibujo.png

4-aqui tiene varias opcion eligo la mas sencilla que es descargar el html y pegarlo en la rais del script mediate gestor ftp.............
Descarga este archivo HTML de verificación [googleXXXXXXXX.html] .
-luego hacemos clic en verificar............

http://s26.postimg.org/3qj1dlrtl/Dibujo.png

5-una ves q verifico el sitio gracia al html descargado y subido a la raiz del script.. hacemos
clic en continuar...

http://s26.postimg.org/h4386jzx5/Dibujo.png

6-ahora aparecen varias opciones y hacemos clic en el boton sitemap

http://s26.postimg.org/3t2x0fvh5/Dibujo.png

7-ahora hacemos clic en el boton Añadir o Probar Sitemap..
-nos aparece una ventana y le agregamos sitemap.xml
-luego hacemos clic en Enviar sitemap

http://s26.postimg.org/83hkw10k9/Dibujo.png

8-listo ya esta enviado el sitemap en google para que indexe los post realizado en nuestra
weeb y aparezca en el buscador...

http://s26.postimg.org/n5yekgahl/Dibujo.png

9-los post no apareceran enseguida deberemos esperar una semana hasta que google los indexe
en su buscador mientras tanto solo colocaremo en el buscador la palabra:
site:http://tu-weeb para ver cuanto link aparecen de nuestro post en el buscador google...


http://s26.postimg.org/wf0kukjdl/Dibujo.png

commodore128 21-04-2015 18:47:45

Respuesta: Smline - 2 Buenos Mod
 
crear box de una sola categoria


Depende si lo quieres con paginación o solo con unos 15 posts por ejemplo
la función porno_home te puede ser útil de mi mod

solo que la llamas así desde tu page

[code]$smarty->assign('porn', $porno->porno_home(0));[/code]

'porn' es con la que llamas en los tpl
$porno es el nombre de la page
porno_home es la llamada a la función

Está sería la función más simple (que iría en tu archivo class):

[code]function bloque(){
global $mysqli;
$sql['list'] = $mysqli->query('SELECT c.*, p.* FROM posts AS p LEFT JOIN posts_cats AS c ON p.p_cat = c.c_id WHERE p.p_id AND p.p_cat = \'69\' ORDER BY p.p_id DESC LIMIT 0, 10');
while($row = $sql['list']->fetch_assoc()) $result[] = $row;
return $result;
} [/code]

(le tendrías que cambiar AND p.p_cat = \'69\' por el id de tu categoría)

Esta en tu page

[code]$smarty->assign('bloque', $home->bloque());[/code]

y esto en tu tpl

[code]{foreach from=$bloque item=p}
<div class="list-element">
<i class="etip icon" title="{$p.c_name}" style="background: url({$web.icons}/cats/{$p.c_img}) no-repeat;"></i>
<a href="{$web.url}/posts/{$p.c_seo}/{$p.p_id}/{$p.p_title|seo}.html" title="{$p.p_title}" {if $p.p_status != 1}style="font-weight: normal;{if $p.p_status == 0}color:red{elseif $p.p_status == 2}color:indigo{/if}"{/if}>{$p.p_title}</a>
{if $p.p_status != 1}
<a class="stip floatR" title="Este post se encuentra {if $p.p_status == 0}eliminado{elseif $p.p_status == 2}en revisión{/if}">
<i class="icon info nm"></i>
</a>
{/if}
</div>
{/foreach} [/code]

commodore128 30-05-2015 20:04:27

Estas Saliendo de lo Weeb
 
2 Archivos Adjunto(s)
http://www.denunciando.com/attachmen...1&d=1433034245


este mos es conocido en las comunidades de warez
como para explicarle a los ususario que lo link de descarga
de la paguina weeb, no tienen nada que ver con la paguina
y que son paguina externa a la misma....


Primero vamos a PHP/libs/ abren el archivo bbcode.inc.php y buscan:

[code]"<a href=\"\\2\\3\\4\" target=\"_blank\">\\2\\3\\4</a>",
"<a href=\"\\1\\2\\3\" target=\"_blank\">\\4</a>", [/code]

y lo remplazan por:

[code]"<a href=/saliendo/?p=\\2\\3\\4 target=\"_blank\">\\2\\3\\4</a>",
"<a href=/saliendo/?p=\\1\\2\\3 target=\"_blank\">\\4</a>", [/code]

Ahora van a su SM_start.php que se encuentra en la raiz de la web y buscan:

[code]$pages_list = array([/code]

Justo alado de el parentesis agregan:

[code]'saliendo', [/code]

Por ultimo suben estos archivos:
Link: http://www.denunciando.com/images/fu...attach/rar.gif Archivo Adjunto 2410104

Suben saliendo.php a PHP/pages/
Suben saliendo.tpl a themes/TUTEMA/Templates

commodore128 19-06-2015 05:30:05

Efecto el post esta cargando
 
efecto de este mod para el script smline..
cuando uno entra a un post saldrá una barra de cargando y un texto
que diga el post esta cargando solo funciona en el tema por defecto de
smline pero lo pueden adaptar asu tema es fácil adaptarlo bueno después
de que cargue el post por completo les aparecerá todo
el contenido del post normal ..


1. nos vamos a TuWeb/themes/TuTema/templates/incluides/ y abrimos el archivo
header.tpl luego buscamos:

[code]</head>[/code]2. y arriba de eso ponemos:

[code]
<script type="text/javascript">
$(window).load(function () {
// Una vez se cargue al completo la página desaparecerá el div "cargando"
$('#cargando').hide();
});
</script>
[/code]3. luego nos vamos a TuWeb/themes/TuTema/templates/i_post y abrimos el
archivo content.tpl y buscamos:

[code]<div class="box_body post_content margin-top-5 clearfix"> [/code]4. debajo de eso pegamos:

[code]<div id="cargando">
<span style="color:red;font-size: x-large;margin-top: 100px;margin-left: 380px;display: block;">El Post esta cargando</span>
</div> [/code]5. luego nos vamos a TuWeb/themes/TuTema/css y abrimos
el archivo global.css y debajo de todo pegamos:

[code]
#cargando {
position:absolute;
width:100%;
height:100%;
background:#fff url(img/loading_bar.gif) no-repeat center;
background-position: 445px 165px;
margin-top: -110px;
margin-left: -275px;
z-index:11;
}
[/code]


La franja horaria es GMT -5. Ahora son las 11:51:11.

Desarrollado por: vBulletin® Versión 3.8.9
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.

DeNunCianDo.CoM ©

Page generated in 0,04074 seconds with 8 queries

SEO by vBSEO