Utenti che stanno leggendo un topic


Tutorial Utenti che stanno leggendo un topic

Messaggio Da MattiaDes il Mar 14 Apr 2015 - 19:14

Utenti che stanno leggendo un topic


Ciao!

Hai sempre desiderato un metodo che ti segnali quanti e quali utenti stanno leggendo un determinato argomento? Finalmente grazie a questo tutorial sarà possibile farlo!


Installazione javascript

Vai verso Pannello di amministrazione ► Moduli ► HTML & Javascript ► Gestione del codice javascript e crea un nuovo codice :new:


  • Titolo: a tua scelta
  • Dove: in tutte le pagine
  • Codice:
    Codice:

        /**
         * @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 = 'utentei stanno visualizzando questo topic';
        topic_total_members = 'membri';
        topic_total_visit = 'ospiti e';
        topic_total_anoni = 'utenti anonimi';
        find_user_location = "Caricamento...";
        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"]: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
            });
        }



Infine clicca sul bottone Convalidare :new:

:thanks: :thanks:

Tutorial creato da: JScript
Copyrigth © FORUMATTIVO.COM




avatar
MattiaDes
Amminattivo
Amminattivo

Sesso : Maschile
Età : 21
Messaggi : 2969
Località : Modena, Italy


Vedi il profilo dell'utente http://www.habbolifeforum.com
MattiaDes è stato ringraziato dall'autore di questo topic.

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum