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.

Members Viewing Threads

3 posters

Go down

In progress Members Viewing Threads

Post by RandomSil January 12th 2017, 8:55 pm

So I am currently using this script written by Jscript to allow viewing of people reading through specific threads.
https://help.forumotion.com/t141389-users-currently-viewing-this-topic

The idea is simply to allow users to see who is viewing each thread. However in practice it doesn't accurately show who is viewing threads. (It currently doesn't show my name when I am viewing a thread.)

Also in Member/Moderator only sections of the forum it shows guests viewing these particular areas which they don't have access to.

Forum Type: Invision
Browser: Google Chrome
Forum Link: www.nrlfantasyfanatics.com
RandomSil
RandomSil
Forumember

Posts : 72
Reputation : 1
Language : English

http://www.nrlfantasyfanatics.com/

Back to top Go down

In progress Re: Members Viewing Threads

Post by Guest January 12th 2017, 9:25 pm

Can you give this a try?
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 = 'user(s) are reading this topic';
topic_total_members = 'members';
topic_total_visit = 'guests and';
topic_total_anoni = 'anonymous users';
find_user_location = "Getting the user's location, wait...";
has_portal = 0; // #### 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"]:last, #navstrip a.nav[href^="/f"], .pathname-box:first a.nav[href^="/f"]:last, span.nav a.nav[href^="/f"]:last').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
  });
}
avatar
Guest
Guest


Back to top Go down

In progress Re: Members Viewing Threads

Post by RandomSil January 12th 2017, 10:33 pm

Tried the new code but it still doesn't show me that I am viewing threads.


If I click into a specific category it shows the users viewing that, but it doesn't show them in the specific threads.

Members Viewing Threads 298cb568c77f4169f66e71a25af0d4cf

An example, even though I am clearly logged in viewing the thread. (As it shows Moderator Controls.)
RandomSil
RandomSil
Forumember

Posts : 72
Reputation : 1
Language : English

http://www.nrlfantasyfanatics.com/

Back to top Go down

In progress Re: Members Viewing Threads

Post by SLGray January 13th 2017, 9:42 pm

It says that guests are viewing hidden areas, but they are not exactly seeing them.  They are seeing a page with a message about not being logged in and the login boxes.


Members Viewing Threads Slgray10

When your topic has been solved, ensure you mark the topic solved.
Never post your email in public.
SLGray
SLGray
Administrator
Administrator

Male Posts : 51482
Reputation : 3519
Language : English
Location : United States

https://forumsclub.com/gc/128-link-directory/

Back to top Go down

In progress Re: Members Viewing Threads

Post by RandomSil January 14th 2017, 8:36 am

Okay that solves that, is there any way to make it more accurate at reading who is viewing threads, because from what i have noticed. (At least from what I have noticed it seems to be incorrect.)
RandomSil
RandomSil
Forumember

Posts : 72
Reputation : 1
Language : English

http://www.nrlfantasyfanatics.com/

Back to top Go down

In progress Re: Members Viewing Threads

Post by Ape January 14th 2017, 5:37 pm

No the codes was not installed on our servers it is a plugin made by a member.

We do not have this be default the code reads parts of the who's online system and then makes a copy of such data to show in the code you used.


Members Viewing Threads Left1212Members Viewing Threads Center11Members Viewing Threads Right112
Members Viewing Threads Ape_b110
Members Viewing Threads Ape1010
Ape
Ape
Administrator
Administrator

Male Posts : 19109
Reputation : 1991
Language : fluent in dork / mumbojumbo & English haha

http://chatworld.forumotion.co.uk/

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum