elapsedTime (Tempo total de conectado ao fórum)
5 participantes
Página 1 de 1
elapsedTime (Tempo total de conectado ao fórum)
Nome do Arquivo: [Tutorial] elapsedTime (Tempo total de conectado ao fórum)
Descrição: Vai mostrar quanto tempo cada membro gasta logado no site.
Autor: JScript
Funcionalidade: Todas as versões
Categoria: Recursos de Outros Autores
Olá amigos!
Eu comecei a fazer este - por assim falar - projeto no dia 18 deste mês (02) e tem o código tem o propósito de mostrar quanto tempo cada membro gasta logado no site.
Bem, o código é muito simples e eu explicarei abaixo como ele funciona:
1- É criado dois campos no perfil dos membros, o primeiro tem o propósito de mostrar o tempo de conexão, o outro é usado como um pseudo-banco de dados;
2- O contador inicia quando o membro se conecta no fórum (faz login);
3- Então, a cada 30 segundos (valor padrão que pode ser alterado) o contador do tempo é incrementado e salvo no campo do perfil;
4- O contador só é resetado (reiniciado) quando o membro faz o "Log Out" (se desconecta) do fórum!
Se apenas fechar a página ou o navegador, o contador permanece ativo e é incrementado novamente quando no próximo login.
Abaixo está o código que deve ser adicionado com investimento "Em todas as páginas":
Resultado:
Informação irrelevante e sem utilidade?
->Talvez sim ou não: Você é quem decide...
JS
Descrição: Vai mostrar quanto tempo cada membro gasta logado no site.
Autor: JScript
Funcionalidade: Todas as versões
Categoria: Recursos de Outros Autores
Olá amigos!
Eu comecei a fazer este - por assim falar - projeto no dia 18 deste mês (02) e tem o código tem o propósito de mostrar quanto tempo cada membro gasta logado no site.
Bem, o código é muito simples e eu explicarei abaixo como ele funciona:
1- É criado dois campos no perfil dos membros, o primeiro tem o propósito de mostrar o tempo de conexão, o outro é usado como um pseudo-banco de dados;
2- O contador inicia quando o membro se conecta no fórum (faz login);
3- Então, a cada 30 segundos (valor padrão que pode ser alterado) o contador do tempo é incrementado e salvo no campo do perfil;
4- O contador só é resetado (reiniciado) quando o membro faz o "Log Out" (se desconecta) do fórum!
Se apenas fechar a página ou o navegador, o contador permanece ativo e é incrementado novamente quando no próximo login.
Abaixo está o código que deve ser adicionado com investimento "Em todas as páginas":
- Código:
/*******************************************************************************************************
* Application: elapsedTime (Total Time Spent On Forums)
* Description: Will show how much time each member spends logged into the site.
* Version: RC1 - Beta tester only!
* Made and Optimizations by JScript - 2015/02/18
* Copyright (c) 2015 JScript <jscriptbrasil at live dot com>
* This work is free. You can redistribute it and/or modify it
* under the terms of the WTFPL, Version 2
********************************************************************************************************
-
Variables that can be changed by the user:
1- tTimeOut
2- checkTime
3- fieldName
Note: For those variables "tTimeout" and "checkTime" ->
- to avoid the "Request Limit" the lowest value should be 10 seconds and 30 seconds respectively!
*/
var elapsedTime = {
autor: 'JScript',
version: '1.02202015-jq1.9.1',
codename: 'Narmer (Sheikh Muftah)',
/**
* Related to database.
**/
fieldName: 'Time Online',
field_id: 0,
fd_description: 'Will show how much time each member spends logged into the site.',
db_field: 0,
db_content: '',
db_description: 'Database to store the data of the module elapsedTime!',
db_url: '/admin/index.forum?part=users_groups&sub=users&mode=avatar_profil2&extended_admin=1&tid=',
response: '',
evalTextarea: 'jQuery(\'label:contains("elapsedTime_DB"), span:contains("elapsedTime_DB"), dt:contains("elapsedTime_DB")\', response).closest("dl, tr").find("textarea")',
db_default: {
appInfo: {
module: 'elapsedTime_DB',
description: 'Database to store the data of the module elapsedTime!',
author: 'JScript',
version: 'RC1 b',
release: '2015/02/18'
},
userInfo: {
isOnline: 1,
dateOld: Number(new Date()),
dateNow: Number(new Date()),
dateSpent: ''
}
},
/**
* Related to intervals.
**/
lInterval: 10,
tTimeOut: 10000,
checkTime: 30000,
setLoop: 0,
// other variables...
TID: 0,
evalTID: 'jQuery(\'a[href*="tid="]\').attr("href").split("tid=")[1].split("&")[0]',
cssUrl: '/admin/index.forum?part=themes&sub=logos&mode=css&extended_admin=1&tid=',
/**
* JavaScript/jQuery functions
*/
initialize: function() {
$(function() {
return (!_userdata.session_logged_in) ? false : elapsedTime.setup();
});
},
setup: function() {
elapsedTime.TID = eval(elapsedTime.evalTID);
/**
* First checks if the database exists!
**/
jQuery.get('/profile?mode=editprofile', function(response) {
elapsedTime.response = eval(elapsedTime.evalTextarea);
// If the database does not exist, then an administrator will create it now!
if ((!elapsedTime.response.length) && (_userdata.user_level == 1)) {
elapsedTime.async(false);
jQuery.post(elapsedTime.db_url + elapsedTime.TID, { /* <- Parameters! */
/* Post action */
action: 'add_field',
id: 0,
type: 0,
action: 'configuration_final',
list_type_field: 2,
field_name: 'elapsedTime_DB',
field_desc: elapsedTime.db_description + ' - Made by JScript, 2015/02/18',
field_oblig: 0,
field_display_profil: 1,
list_field_type_view: 0,
list_auth_field_himself: 1,
list_field_view: 0,
list_separator: 0,
field_type_2_lng_max: 15000,
submit: 1,
field_type_11_max_before: 14,
field_type_11_max_after: 6
}).done(function() {
jQuery.get('/profile?mode=editprofile', function(response) {
elapsedTime.response = eval(elapsedTime.evalTextarea);
});
});
jQuery.post(elapsedTime.db_url + elapsedTime.TID, { /* <- Parameters! */
/* Post action */
action: 'add_field',
id: 0,
type: 0,
action: 'configuration_final',
list_type_field: 13,
field_name: elapsedTime.fieldName,
field_desc: elapsedTime.fd_description + ' - Made by JScript, 2015/02/18',
field_oblig: 0,
field_display_message: 1,
field_display_profil: 1,
list_field_type_view: 0,
list_auth_field_himself: 1,
list_field_view: -1,
list_separator: 1,
field_type_2_lng_max: 15000,
submit: 1,
field_type_11_max_before: 14,
field_type_11_max_after: 6
}).done(function(e) {
// console.log(e)
});
elapsedTime.async(true);
/*
$.ajax({
url: elapsedTime.cssUrl + elapsedTime.TID,
cache: false,
type: 'get',
dataType: 'text',
success: function(response) {
var edit_code = $(response).find('#edit_code').val() + "\n#field_id3 {display: none;}";
$.post(elapsedTime.cssUrl + elapsedTime.TID, {
edit_code: edit_code,
submit: 1
}).done(function() {
}).fail(function() {
});
}
});
*/
}
if (!elapsedTime.response.length) {
return false;
}
elapsedTime.db_field = elapsedTime.response.attr('id');
if (elapsedTime.response.val().length) {
elapsedTime.db_content = JSON.parse(elapsedTime.response.val().replace(/'/g, '"'));
}
if ((!elapsedTime.response.val().length) || (!elapsedTime.db_content.userInfo.isOnline)) {
elapsedTime.db_content = elapsedTime.db_default;
elapsedTime.async(false);
elapsedTime.dataSave(elapsedTime.db_field, JSON.stringify(elapsedTime.db_content).replace(/"/g, "'"));
elapsedTime.async(true);
elapsedTime.updateTime();
}
if (document.getElementById('fa_welcome') !== null) {
jQuery('a[href$="logout=1"]').attr('href', jQuery('#logout').attr('href'));
}
jQuery('a[href*="logout=1"]').click(function(event) {
elapsedTime.TID = eval(elapsedTime.evalTID);
elapsedTime.db_content.userInfo.isOnline = 0;
elapsedTime.async(false);
elapsedTime.dataSave(elapsedTime.db_field, JSON.stringify(elapsedTime.db_content).replace(/"/g, "'"));
elapsedTime.async(true);
});
/**
* Writes the current time in the profile field...
**/
setTimeout(function() {
setInterval(function() {
elapsedTime.updateTime();
}, elapsedTime.checkTime);
}, elapsedTime.tTimeOut);
}).fail(function(e) {
console.log(e);
});
},
async: function(mode) {
jQuery.ajaxSetup({
async: mode
});
},
dataSave: function(field, content) {
jQuery.post("/ajax_profile.forum?jsoncallback=?", {
id: field.split("_")[3],
user: _userdata.user_id,
active: "1",
content: '[["' + field + '", "' + content + '"]]',
tid: elapsedTime.TID
}, function(data) {
// OK!
}, "json").fail(function(e) {
console.log(e);
});
},
updateTime: function() {
elapsedTime.TID = eval(elapsedTime.evalTID);
jQuery.get('/profile?mode=editprofile', function(response) {
elapsedTime.response = jQuery('label:contains("' + elapsedTime.fieldName + '"), span:contains("' + elapsedTime.fieldName + '"), dt:contains("' + elapsedTime.fieldName + '")', response).closest('dl, tr').find('input');
elapsedTime.field_id = elapsedTime.response.attr('id');
if (elapsedTime.response.length) {
elapsedTime.response = eval(elapsedTime.evalTextarea);
elapsedTime.db_content = JSON.parse(elapsedTime.response.val().replace(/'/g, '"'));
elapsedTime.dataSave(elapsedTime.field_id, elapsedTime.getTime(elapsedTime.db_content.userInfo.dateOld));
}
}).fail(function(e) {
console.log(e);
});
},
getTime: function(date_old, date_now) {
date_old = date_old || new Date(); //.toLocaleString('en-US', { hour12: false });
date_now = date_now || new Date(); //.toLocaleString('en-US', { hour12: false });
//date_old = date_old.split("/").swap(0, 1).join("/");
//date_now = date_now.split("/").swap(0, 1).join("/");
date_old = new Date(date_old);
date_now = new Date(date_now);
var seconds = Math.floor((date_now - (date_old)) / 1000),
minutes = Math.floor(seconds / 60),
hours = Math.floor(minutes / 60),
days = Math.floor(hours / 24);
hours = hours - (days * 24);
minutes = minutes - (days * 24 * 60) - (hours * 60);
seconds = seconds - (days * 24 * 60 * 60) - (hours * 60 * 60) - (minutes * 60);
//console.log(days + "d " + hours + "h " + minutes + "m " + seconds + "s ");
return ((days) ? days + "d " : "") + ((hours) ? hours + "h " : "") + ((minutes) ? minutes + "m " : "") + ((seconds) ? seconds + "s " : "");
}
};
elapsedTime.initialize();
Resultado:
Informação irrelevante e sem utilidade?
->Talvez sim ou não: Você é quem decide...
JS
Re: elapsedTime (Tempo total de conectado ao fórum)
Gostei muito obrigado por compartilhar connosco.
Mas uma das coisas que eu não acho justo no código é isto:
"O contador só é resetado (reiniciado) quando o membro faz o "Log Out" (se desconecta) do fórum!"
Acho que devia permanecer sempre o mesmo cada vez a aumentar sempre que estivermos connectado no fórum pois se resetar depois começa de novo e na verdade não é muito justo, acho eu.
Tem como deixar o código nem que eja só para mim de uma forma que mesmo que ele se deslogue do fórum o tempo online fica lá na mesma ?
Quanto ao resto está perfeito, sem palavras.
Até Mais...
Mas uma das coisas que eu não acho justo no código é isto:
"O contador só é resetado (reiniciado) quando o membro faz o "Log Out" (se desconecta) do fórum!"
Acho que devia permanecer sempre o mesmo cada vez a aumentar sempre que estivermos connectado no fórum pois se resetar depois começa de novo e na verdade não é muito justo, acho eu.
Tem como deixar o código nem que eja só para mim de uma forma que mesmo que ele se deslogue do fórum o tempo online fica lá na mesma ?
Quanto ao resto está perfeito, sem palavras.
Até Mais...
DiogoR.- Membro
- Time Online : 325d 4h 18m 58s
Mensagens : 93
Data de inscrição : 03/03/2015
Re: elapsedTime (Tempo total de conectado ao fórum)
Abra um tópico para obter o suporte desejado ok?
JS
JS
Re: elapsedTime (Tempo total de conectado ao fórum)
Incrível seu código JS, você consegue criar mágicas rsrs, obrigado por compartilhar, irei estudar o código por completo e talvez se surgir uma ideia tentarei e enviarei para você.
Alex Habilidade- Moderadores
- Time Online : 286d 2h 8m 11s
Mensagens : 70
Data de inscrição : 30/11/2013
Localização : /root
Re: elapsedTime (Tempo total de conectado ao fórum)
A ideia é o maxímo mesmo, ajuda muito para estatísticas do fórum.
joelson0007- Moderadores
- Time Online : 28d 21h 58m 5s
Mensagens : 373
Data de inscrição : 15/06/2013
Localização : Guarapuava-PR
Re: elapsedTime (Tempo total de conectado ao fórum)
@JScript é possível o efeito apenas no Perfil do usuário, ignorando o perfil nas postagens?
Re: elapsedTime (Tempo total de conectado ao fórum)
Júnior Duarte escreveu:@JScript é possível o efeito apenas no Perfil do usuário, ignorando o perfil nas postagens?
Claro que sim amigo, é só personalizar o campo do perfil.
Acessa a:
Em Visualização é só desabilitar a opção Mensagens como pode ver no print que passei acima.
DiogoR.- Membro
- Time Online : 325d 4h 18m 58s
Mensagens : 93
Data de inscrição : 03/03/2015
Re: elapsedTime (Tempo total de conectado ao fórum)
Obrigado, eu ja havia percebido, fui um dos primeiros a testar quando o JS publicou na BS, minha dúvida seria mesmo, se haveria problema em trocar as configurações iniciais e se não iria causar problema isso.
Re: elapsedTime (Tempo total de conectado ao fórum)
Olá,
Andei a pesquisar uma solução para que o campo de perfil seja ocultado na edição do perfil do membro e cheguei a um resultado funcional.
Gostaria de saber se por gentileza gostaria de saber qual a minha resolução.
Aguardo Respostas.
Até Mais...
Andei a pesquisar uma solução para que o campo de perfil seja ocultado na edição do perfil do membro e cheguei a um resultado funcional.
Gostaria de saber se por gentileza gostaria de saber qual a minha resolução.
Aguardo Respostas.
Até Mais...
DiogoR.- Membro
- Time Online : 325d 4h 18m 58s
Mensagens : 93
Data de inscrição : 03/03/2015
Re: elapsedTime (Tempo total de conectado ao fórum)
@DiogoR. existem várias formas de se fazer isso, pode ser por CSS, JS, templates...
Eu simplesmente não adicionei nenhuma solução pois não achei necessário!
JS
Eu simplesmente não adicionei nenhuma solução pois não achei necessário!
JS
Tópicos semelhantes
» Chatbox sempre conectado!
» [Resolvido] Modificação do código "elapsedTime"
» Sessionstorage para tempo online
» [Resolvido] Modificação do código "elapsedTime"
» Sessionstorage para tempo online
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|