How to display topic user active (who is read this topic) Hitskin_logo Hitskin.com

This is a Hitskin.com skin preview
Install the skinReturn to the skin page

The forum of the forums
Would you like to react to this message? Create an account in a few clicks or log in to continue.
3 posters

    How to display topic user active (who is read this topic)

    tonetone
    tonetone
    Forumember


    Male Posts : 31
    Reputation : 2
    Language : English
    Location : Japan

    How to display topic user active (who is read this topic) Empty How to display topic user active (who is read this topic)

    Post by tonetone January 13th 2015, 3:25 am

    This is sample:

    Code:
    /**
     * @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 = ' người đang xem chủ đề này:';
    topic_total_members = ' Thành viên';
    topic_total_visit = ' Khách,';
    topic_total_anoni = ' Ẩn danh';
    find_user_location = "Getting the user's location, wait...";
    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: First Release (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);
                    }/* else {
                        jQuery.get(oWereIam.sIndex, function(data) {
                            var oOnlineList = /(?:\b<br>([\s\S]*?)<br>)/
                                .exec(
                                    jQuery('#onlinelist > p:not(.right)', data).html()
                                )[1];
                            var memDiv = jQuery('<div>').html(oOnlineList);
                            oWereIam.oTarget = memDiv.find('a');
                        }).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) {
                /*jQuery.get(oWereIam.sIndex, function(data) {
                    var oOnlineList = /(?:\b<br>([\s\S]*?)<br>)/
                        .exec(
                            jQuery('#onlinelist > p:not(.right)', data).html()
                        )[1];
                    var memDiv = jQuery('<div>').html(oOnlineList);
                    oWereIam.oTarget = memDiv.find('a');
                }).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);
                    }
                });*/
            }
        }
        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) || (sHref.length !== 0)) {
                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
        });
    }

    The result:

    How to display topic user active (who is read this topic) FK3n34G

    But sometimes the statistics in the result is not correct. How to improve this thing?

    Thanks,
    tonetone
    masesm
    masesm
    Forumember


    Male Posts : 75
    Reputation : 7
    Language : Java, C++, C#, Python, JavaScript, PHP, MySQL, AWS
    Location : United States

    How to display topic user active (who is read this topic) Empty Re: How to display topic user active (who is read this topic)

    Post by masesm January 18th 2015, 6:38 am

    This is from personal experience: if you forum has too many javascripts, the forum will update quite late. I recommend using CSS and playing around with the template code rather than using javascript, so only use when necessary. Hope this helps.
    _Twisted_Mods_
    _Twisted_Mods_
    Helper
    Helper


    Male Posts : 2108
    Reputation : 336
    Language : English
    Location : Ms

    How to display topic user active (who is read this topic) Empty Re: How to display topic user active (who is read this topic)

    Post by _Twisted_Mods_ January 18th 2015, 8:05 am

    looks like huge script  it would be so much simpler and faster to grab the /viewonline page and grabs user,bots that's on same page you are  but i have a questions


    do you want it to show names of your members or just the # of users  for the bots and guest ill just use #'s

    if you decide to show name do you want it to also include your name on the list?

    also ? for anyone i need a list of the popular bots like bing,google 

    also .. if someone has open multi tabs it will only show last visited one
    tonetone
    tonetone
    Forumember


    Male Posts : 31
    Reputation : 2
    Language : English
    Location : Japan

    How to display topic user active (who is read this topic) Empty Re: How to display topic user active (who is read this topic)

    Post by tonetone January 19th 2015, 6:29 am

    It's not mean the /viewonline page.
    This is the statistics inside the topic when you read like as Vbb forum.

    Ex:
    How to display topic user active (who is read this topic) J6wSLu
    _Twisted_Mods_
    _Twisted_Mods_
    Helper
    Helper


    Male Posts : 2108
    Reputation : 336
    Language : English
    Location : Ms

    How to display topic user active (who is read this topic) Empty Re: How to display topic user active (who is read this topic)

    Post by _Twisted_Mods_ January 19th 2015, 8:11 am

    if you goto the viewonline page it shows what everyone is viewing .. simply grab all the user names that's in same topic as you and have them show at the bottom of the topic
    tonetone
    tonetone
    Forumember


    Male Posts : 31
    Reputation : 2
    Language : English
    Location : Japan

    How to display topic user active (who is read this topic) Empty Re: How to display topic user active (who is read this topic)

    Post by tonetone January 19th 2015, 10:44 am

    _Twisted_Mods_ wrote:if you goto the viewonline page it shows what everyone is viewing .. simply grab all the user names that's in same topic as you and have them show at the bottom of the topic

    Thank you.