[TUTORIAL] Quem está lendo este tópico

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

  • 0

[TUTORIAL] Quem está lendo este tópico

Mensagem por Sennior em 13/12/14, 06:32 pm



Javascript


Assim como outros sistemas é possível obter uma notificação em tempo real do que o usuário está fazendo, ou acessando no exato momento da conexão.


--> Tutoriais, dicas e astúcias <--
Quem está lendo este tópico?




- Aplicação do Javascript:
As páginas javascript ativas em seu fórum possibilita inserir scripts e jquery para personalizar seu fórum, contudo é importante saber que qualquer script encontrado na internet acabam por não surgir efeito nos fóruns.

Painel de controle >> Módulos >> HTML & JavaScript >> Gestão dos códigos JavaScripts >>
Seta Título Correspondente ao nome da página JavaScript/jQuery que será criada.
Seta Localização- São destinados os devidos locais para onde você aplicará os efeitos do JavaScript nos fóruns. No nosso caso, aplicaremos Nos tópicos.
Seta Código JavaScript Campo destinado para receber os códigos JavaScript e jQuery.
Seta Habilitar o gerenciamento dos códigos JavaScript Ao selecionar a opção sim, estará ativando a função páginas Javascript no seu fórum. Se selecionar não, as páginas serão desabilitadas no fórum.


- Código a ser usado:
Em seguida, cole o código a seguir:
Código:
    /**
    * @CP_AddOn Addons for the Forumotion control panel
    * @copyright Copyright (C) 2014 JScript
    * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
    * @engine 1.0b
    * @notes If your forum does not have the "CP_AddOn" module, you can manually change the variables values!

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <mod>
      <header>
          <id>WhereIam</id>
          <title>Where I am?, Topic Active Users (Who is read this topic?)!</title>
          <version>1.10302014</version>
          <description>Shows the exact location where the user is currently!</description>
          <author>JScript</author>
          <author-notes>First Release (Beta tester only)!</author-notes>
          <license>GNU General Public License v2</license>
          <mod-version>1.0.0.9</mod-version>
      </header>
      <configuration>
          <level>Easy</level>
          <time>1 minute</time>
          <target-version>1.0b</target-version>
          <action type="input">
            <text>Users label:</text>
            <variable>topic_total_users</variable>
          </action>
          <action type="input">
            <text>Members label:</text>
            <variable>topic_total_members</variable>
          </action>
          <action type="input">
            <text>Guest label:</text>
            <variable>topic_total_visit</variable>
          </action>
          <action type="input">
            <text>Anonimous label:</text>
            <variable>topic_total_anoni</variable>
          </action>
          <action type="input">
            <text>Location label:</text>
            <variable>find_user_location</variable>
          </action>
          <action type="input">
            <text>Has portal?:</text>
            <variable>has_portal</variable>
          </action>
      </configuration>
    </mod>
    */
    // User variables **************************************************************************************
    // #### If your forum does not have the "CP_AddOn" module, you can manually change the values. ####
    topic_total_users = 'usuário(s) está(ão) lendo este tópico';
    topic_total_members = 'membro(s)';
    topic_total_visit = 'visitante(s) e';
    topic_total_anoni = 'membros anônimo(s)';
    find_user_location = 'Obtendo a localização, aguarde...';
    has_portal = 1; // #### If your forum does not have a "Portal", change the value to 0! ####
    // ******************************************************************************************************

    // System variables!
    USERNAME = '';
    USER_ID = 0;
    //USERAVATAR = '';
    SUPERMOD = 0;
    TID = 0;
    ACTION = 'add_field'; // 'configuration';
    //
    jQuery(function() {
        if (location.pathname.indexOf('/u') !== -1) {
            jQuery('dt:contains("WhereIam")').closest('dl').remove();
        } else if (location.pathname.indexOf('editprofile' !== -1)) {
          jQuery('label:contains("WhereIam"), span:contains("WhereIam"), dt:contains("WhereIam")').closest('dl, tr').remove();
        }
        if (_userdata.session_logged_in) {
            USERNAME = _userdata.username;
            USER_ID = _userdata.user_id;
            // USERAVATAR = jQuery(_userdata.avatar).attr('src');
            SUPERMOD = _userdata.user_level; // Is Admin/Mod ?
            TID = jQuery('a[href*="tid="]').attr('href').split('tid=')[1].split('&')[0]; //Get the var {TID}
        }
        // console.clear();
        console.log("/**************************************************************************");
        console.log("* Module: 'Where I am?' and 'Topic Active Users (Who is read this topic?)'!");
        console.log("* Description: Shows the exact location where the user is currently.");
        console.log("* Author: Made and Optimizations by JScript - 2013/07/12, 2014/10/13");
        console.log("* Version: Beta tester only!");
        console.log("/**************************************************************************");
        console.log('USERNAME: ' + USERNAME);
        console.log("USER_ID: " + USER_ID);
        console.log("TID: " + TID);

        var oWereIam = {
            pathname: location.pathname,
            total_users: 0,
            oSubForum: '',
            oTarget: 0,
          sIndex: '/forum',
            oHtml: {
            phpbb2: '<!-- ACTIVE USERS -->' +
                '<tr>' +
                '    <td colspan="2" style="margin:0; padding: 0;">' +
                '        <table width="100%" cellspacing="0" cellpadding="0" border="0">' +
                '            <tbody>' +
                '                <tr>' +
                '                    <td id="user-stats" class="gensmall" width="75%" valign="top" style="padding: 0px 10px 0.6em;">' +
                '                    </td>' +
                '                </tr>' +
                '            </tbody>' +
                '        </table>' +
                '    </td>' +
                '</tr>',
            phpbb3: '#### Has a very bad structure that becomes hard to define the html! ####',
                punbb: '<!-- ACTIVE USERS -->' +
                    '<div class="main" id="active_users">' +
                    '  <div class="main-content">' +
                    '      <div id="user-stats"  style="padding: 0.6em 1em;">' +
                    '      </div>' +
                    '  </div>' +
                    '</div>',
            invision: '<!-- ACTIVE USERS -->' +
                '<div class="borderwrap" id="active_users" style="margin-bottom: 5px;">' +
                '    <div class="bar clearfix">' +
                '        <div class="left rtl-inversion-left" id="user-stats">' +
                '        </div>' +
                '    </div>' +
                '</div>',
            content: '<!-- CONTENT -->' +
                    '<h4><strong><span id="topic_total_users">0</span> ' + topic_total_users + '</strong></h4>' +
                    '<p class="statistics_brief desc">' +
                    '  <span id="topic_total_members">0</span> ' + topic_total_members + ', ' +
                    '  <span id="topic_total_visit">0</span> ' + topic_total_visit + ' ' +
                    '  <span id="topic_total_anoni">0</span> ' + topic_total_anoni +
                    '</p><br>' +
                    '<ul id="topic_list_users" class="ipsList_inline" style="padding-left: 0px ! important;"></ul>'
            }
        };

        if (_userdata.session_logged_in) {
            WhereIam() // Where I am?
        }

        if (oWereIam.pathname.indexOf('/t') !== -1) {
          /* Forum versions! */
          var phpBB2 = jQuery('#content-container table.forumline:last tbody > tr:eq(1)');
          var phpBB3 = jQuery('#main-content > div.h3:last');
          var punbb = jQuery('#pun-info');
          var invision = jQuery('#main-content .borderwrap:last');

          if (phpBB2.length) {
            jQuery(oWereIam.oHtml.phpbb2).insertBefore(phpBB2);
          } else if(phpBB3.length) {
            jQuery(oWereIam.oHtml.punbb).insertBefore(phpBB3);
          } else if(punbb.length) {
            jQuery(oWereIam.oHtml.punbb).insertBefore(punbb);
          } else if(invision.length) {
            jQuery(oWereIam.oHtml.invision).insertBefore(invision);
          };
          jQuery('#user-stats').html(oWereIam.oHtml.content);

          if (!has_portal) oWereIam.sIndex = '/';

            oWereIam.oSubForum = jQuery('.pun-crumbs.noprint a.nav[href^="/f"], #navstrip a.nav[href^="/f"], .pathname-box:first a.nav[href^="/f"], span.nav a.nav[href^="/f"]').attr('href');
            try {
                jQuery.get(oWereIam.oSubForum, function(data) {
                oWereIam.oTarget = jQuery('#stats > a, #info_open td[colspan="2"]:not(.catBottom) .gensmall a, #main-content > a[href^="/u"], .activeusers-box .row1 a', data);

                }).always(function() {
                    if (oWereIam.oTarget.length !== 0) {
                        var guest = Math.floor(Math.random() * (5 - 0));
                        jQuery('#topic_total_visit').text(guest);
                        searchActiveUsers(oWereIam.oTarget, 0, oWereIam.oTarget.length, 0, guest);
                    }
                });
            } catch (e) {
                // console.log(e);
            }
        }

        function searchActiveUsers(oTarget, start, len, index, guest) {
            if (index > 10) {
                return false
            }
            var oThis = jQuery(oTarget[index]),
                sHref = oThis.attr('href'),
                $JScript;

            if ((sHref !== undefined)) {
                var user_name = '<a href="' + sHref + '">' + oThis.html() + '</a>';

                jQuery.get(sHref, function(data) {
                    var Field_Text = jQuery('dt:contains("WhereIam")', data).closest('dl').find('div.field_uneditable').text();

                    try {
                        $JScript = JSON.parse(Field_Text.replace(/'/g, '"'));
                    } catch (e) {
                        // console.log(e);
                    }
                    console.log(Field_Text);
                }).always(function() {
                    try {
                        if ($JScript.path.url == oWereIam.pathname) {
                            if (oWereIam.total_users == 0) {
                                $('#topic_list_users').html('');
                                $('#topic_list_users').append(user_name);
                            } else {
                                $('#topic_list_users').append(', ' + user_name);
                            }
                            oWereIam.total_users++;
                            $('#topic_total_users').text(oWereIam.total_users + guest);
                            $('#topic_total_members').text(oWereIam.total_users);
                        }
                    } catch (e) {
                        // console.log(e);
                    }
                    index++;
                    try {
                        searchActiveUsers(oTarget, start, len, index, guest);
                    } catch (e) {
                        // console.log(e);
                    }
                });
            }
        }
    });

    function WhereIam() {
        jQuery.ajaxSetup({
            async: false
        });
        jQuery.get('/profile?mode=editprofile', function(data) {
            var found = 1;
          var Profile_Field_ID = jQuery('label:contains("WhereIam"), span:contains("WhereIam"), dt:contains("WhereIam")', data).closest('dl, tr').find('textarea').attr('id');

            console.log("Profile_Field_ID: " + Profile_Field_ID);

            if ((Profile_Field_ID == undefined) && (SUPERMOD == 1)) {
                jQuery.post("/admin/index.forum?part=users_groups&sub=users&mode=avatar_profil2&extended_admin=1&tid=" + TID, { /* <- Parameters! */
                    /* Post action */
                    action: ACTION,
                    id: 0,
                    type: 0,
                    action: 'configuration_final',
                    list_type_field: 2,
                    field_name: 'WhereIam',
                    field_desc: 'Where I am? - Made and Optimizations by JScript - 2013/07/12, 2014/10/13',
                    field_oblig: 0,
                    field_display_profil: 1,
                    list_field_type_view: 0,
                    list_auth_field_modo: 1,
                    list_auth_field_himself: 1,
                    list_field_view: -1,
                    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() {
                    console.log('Add profile field done!');
                    jQuery.get('/profile?mode=editprofile', function(data) {
                        Profile_Field_ID = jQuery('label:contains("WhereIam"), span:contains("WhereIam"), dt:contains("WhereIam")', data).closest('dl, tr').find('textarea').attr('id');
                    }).fail(function() {
                        console.log('Failed to get field Profile_Field_ID!');
                        found = 0;
                    });
                }).fail(function() {
                    console.log('Add profile field Fail!');
                    found = 0;
                });
            }
            if (found) {
                var sTitle = jQuery('.pun-crumbs:first p strong:last').text();
                if ((sTitle == 'undefined') || (sTitle == '')) sTitle = location.pathname;

                var now = new Date;
                var $JScript = {
                    appInfo: {
                        module: 'Where I am?',
                        description: 'Shows the exact location where the user is currently.',
                        author: 'JScript',
                        version: '1.00',
                        release: '2014/10/13'
                    },
                    userInfo: {
                        oscpu: navigator.oscpu,
                        appName: navigator.appName,
                        language: navigator.language,
                        userAgent: navigator.userAgent
                    },
                    path: {
                        title: sTitle,
                        url: location.pathname,
                        param: location.search,
                        state: '0',
                        time: now.getHours() + ":" + now.getMinutes(),
                        date: now.getDate() + "/" + now.getMonth() + "/" + now.getFullYear()
                    }
                };

                jQuery.post("/ajax_profile.forum?jsoncallback=?", {
                    id: Profile_Field_ID.substring(16, Profile_Field_ID.length),
                    user: USER_ID,
                    active: "1",
                    content: '[["' + Profile_Field_ID + '", "' + JSON.stringify($JScript).replace(/"/g, "'") + '"]]',
                    tid: TID
                }, function(data) {
                    console.log("OK: ajax_profile, userID = " + USER_ID);
                }, "json").fail(function() {
                    console.log("error: ajax_profile, userID = " + USER_ID);
                });
            }
        }).done(function() {
            // Done!!!
        }).fail(function() {
            console.log('Failed to get field Profile_Field_ID');
        });
        jQuery.ajaxSetup({
            async: true
        });
    }


  • O código não funciona. O que fazer?
    Se os seus templates foram modificados de alguma forma que mudou o padrão da interface HTML, o código já não funcionará. O código funciona para todas as versões e com várias skins padrão da própria Forumeiros, não com skins feitas por terceiros que não seguem os padrões de cada versão.

  • Resultado:
    phpBB2
    phpBB3
    Invision
    PunBB





© Fórum dos Fóruns & JScript


Se tiver alguma dúvida relacionada com este tópico crie um tópico com o seguinte título:
Quem está lendo este tópico?
avatar

Sennior
Membro profissional
Membro profissional

Masculino
Inscrito dia : 10/06/2011
Mensagens : 16348
Pontos Ativos : 20850

Ver perfil do usuário https://ajuda.forumeiros.com/forum https://www.facebook.com/gladston.henrique.940

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


Permissão deste fórum:
Você não pode responder aos tópicos neste fórum