The forum of the forums
Welcome to the Official Support Forum of Forumotion!

To take full advantage of everything offered by our forum, please log in if you are already a member, or join our community if you've not yet.



Create a free forum like this one.

Members Viewing Threads

View previous topic View next topic Go down

In progress Members Viewing Threads

Post by RandomSil on 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.
http://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
avatar
RandomSil
Forumember

Posts : 40
Reputation : 1
Language : English

http://www.nrlfantasyfanatics.com/

Back to top Go down

In progress Re: Members Viewing Threads

Post by Guest on 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
  });
}

Guest
Guest


Back to top Go down

In progress Re: Members Viewing Threads

Post by RandomSil on 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.



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

Posts : 40
Reputation : 1
Language : English

http://www.nrlfantasyfanatics.com/

Back to top Go down

In progress Re: Members Viewing Threads

Post by SLGray on 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.


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

avatar
SLGray
Administrator
Administrator

Male Posts : 38755
Reputation : 2603
Language : English
Location : United States

http://classifiedads.forumotion.com/

Back to top Go down

In progress Re: Members Viewing Threads

Post by RandomSil on 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.)
avatar
RandomSil
Forumember

Posts : 40
Reputation : 1
Language : English

http://www.nrlfantasyfanatics.com/

Back to top Go down

In progress Re: Members Viewing Threads

Post by APE on 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.



avatar
APE
Manager
Manager

Male Posts : 10117
Reputation : 944
Language : fluent in dork / mumbojumbo & English haha
Location : STUCK IN FORUMOTIONS SERVERS HELP ME !!!!!!

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

Back to top Go down

View previous topic View next topic Back to top


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