Tempo online

3 participantes

Ir para baixo

Tópico resolvido Tempo online

Mensagem por skilledpt 20.10.16 14:02

Detalhes da questão


Endereço do fórum: lsteam.forumeiros.com
Versão do fórum: PunBB

Descrição


Boa tarde, estou a tentar por um campo de perfil "tempo online", ja li alguns topicos aqui no forum e tentei este codigo criado pelo JScript, mas não consegi po-lo funcional, tentei criar um campo de perfil chamado tempo online mas continua sem funcionar.

Codigos usado:

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...
  evalTID:  'jQuery(\'a[href*="tid="]\').attr("href").split("tid=")[1].split("&")[0]',
  TID:      0,

  /**
    * 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);
        }

        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);
      http://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();

Topico que consultei:

https://ajuda.forumeiros.com/t98130-colocar-um-campo-no-perfil-tempo-online#674614
skilledpt
skilledpt
*

Membro desde : 17/10/2016
Mensagens : 47
Pontos : 85

http://lsteam.forumeiros.com

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por while 20.10.16 15:28

Olá autor,

Vamos por parte tudo bem?

  • Como funciona: Esse código cria dois campos de perfil (não é preciso você criar), um para contabilizar o tempo online e outro para deixar visível o tempo em forma de Dia/Hora/minuto/segundo. Portanto é importante não excluir o ElapsedTime, e nem mexer em nada nele.

  • Como instalar o código: Você deve acessar:
    Painel de Controle -> Modulos -> HTML & Javascripts -> Gestão dos códigos Javascripts
    E crie um novo javascript com investimento em todas as paginas com o código que você citou no tópico. E pronto, estará resultando.


Até mais.
while
while
Hiper Membro

Membro desde : 24/04/2016
Mensagens : 3263
Pontos : 4761

http://www.ajuda.forumeiros.com https://www.facebook.com/profile.php?id=100012157981279

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por skilledpt 20.10.16 15:53

Obrigado desde ja pela resposta,

So mudei o nome do field porque no script diz que esse campo pode-se mudar. Mas agora tentei com o script tem mexer em nada dele e nao criou os campos de perfil na mesma..


Cumps,
skilledpt
skilledpt
*

Membro desde : 17/10/2016
Mensagens : 47
Pontos : 85

http://lsteam.forumeiros.com

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por while 20.10.16 16:06

Troque o script por este:

Código:
var elapsedTime = {
    autor: 'JScript'
    , version: '1.02202015-jq1.9.1'
    , codename: 'Narmer (Sheikh Muftah)'
    , fieldName: 'Tempo 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: ''
        }
    }
    , lInterval: 10
    , tTimeOut: 10000
    , checkTime: 30000
    , setLoop: 0
    , evalTID: 'jQuery(\'a[href*="tid="]\').attr("href").split("tid=")[1].split("&")[0]'
    , TID: 0
    , initialize: function () {
        $(window)
            .load(function () {
                return (!_userdata.session_logged_in) ? false : elapsedTime.setup()
            })
    }
    , setup: function () {
        elapsedTime.TID = eval(elapsedTime.evalTID);
        jQuery.get('/profile?mode=editprofile', function (response) {
                elapsedTime.response = eval(elapsedTime.evalTextarea);
                if ((!elapsedTime.response.length) && (_userdata.user_level == 1)) {
                    elapsedTime.async(false);
                    jQuery.post(elapsedTime.db_url + elapsedTime.TID, {
                            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, {
                            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) {});
                    elapsedTime.async(true)
                }
                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)
                    });
                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) {}, "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();
        date_now = date_now || new Date();
        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);
        return ((days) ? days + "d " : "") + ((hours) ? hours + "h " : "") + ((minutes) ? minutes + "m " : "") + ((seconds) ? seconds + "s " : "")
    }
};
elapsedTime.initialize();

veja se resulta agora.
Até mais.
while
while
Hiper Membro

Membro desde : 24/04/2016
Mensagens : 3263
Pontos : 4761

http://www.ajuda.forumeiros.com https://www.facebook.com/profile.php?id=100012157981279

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por skilledpt 20.10.16 16:36

Fiz o que disse mas ainda nao aconteceu nada..
skilledpt
skilledpt
*

Membro desde : 17/10/2016
Mensagens : 47
Pontos : 85

http://lsteam.forumeiros.com

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por skilledpt 23.10.16 14:39

up por ajuda
skilledpt
skilledpt
*

Membro desde : 17/10/2016
Mensagens : 47
Pontos : 85

http://lsteam.forumeiros.com

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por Shek 23.10.16 15:06

Olá!

Os códigos dos tutoriais do Javascript funcionam com os templates padrão dos fóruns. Ou seja, o seu template/tema não é o padrão ou aplicado via Histkin, e por isso não funciona.

Lamento.
Shek
Shek
Principal Contribuidor
Principal Contribuidor

Membro desde : 11/04/2009
Mensagens : 19006
Pontos : 22969

https://shiftactive.blogspot.com/ https://www.facebook.com/ShiftActif https://twitter.com/ShiftActif

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por skilledpt 23.10.16 15:25

Obrigado pela resposa. Existe algum codigo parecido que posso usar no meu forum?
skilledpt
skilledpt
*

Membro desde : 17/10/2016
Mensagens : 47
Pontos : 85

http://lsteam.forumeiros.com

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por Shek 23.10.16 15:30

Que conheço, não... Triste
Shek
Shek
Principal Contribuidor
Principal Contribuidor

Membro desde : 11/04/2009
Mensagens : 19006
Pontos : 22969

https://shiftactive.blogspot.com/ https://www.facebook.com/ShiftActif https://twitter.com/ShiftActif

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por skilledpt 23.10.16 15:32

Ok, obrigado pelo esclarecimento, pode fechar.
skilledpt
skilledpt
*

Membro desde : 17/10/2016
Mensagens : 47
Pontos : 85

http://lsteam.forumeiros.com

Ir para o topo Ir para baixo

Tópico resolvido Re: Tempo online

Mensagem por Shek 23.10.16 16:25

Tempo online Symbol10 Questão marcada como Resolvida ou o Autor solicitou que ela fosse arquivada.

Tópico marcado como Resolvido e movido para "Questões resolvidas".
Shek
Shek
Principal Contribuidor
Principal Contribuidor

Membro desde : 11/04/2009
Mensagens : 19006
Pontos : 22969

https://shiftactive.blogspot.com/ https://www.facebook.com/ShiftActif https://twitter.com/ShiftActif

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos