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.

Application Private Messages Menu

View previous topic View next topic Go down

Solved Application Private Messages Menu

Post by daniloMD on April 23rd 2017, 9:37 pm

@what I was asking was too bothersome, consider it solved, ty.

Good everyone!

I've found this interesting code while I was searching for a good PM menu and I've tried it.

http://help.forumotion.com/t141662-application-popup-of-private-message-list
(also Rip Jscript, he made excelent codes )

I've made a widget on the right side of the forum that displays my Avatar and my Profile Link, and added a Link to the Inbox with it's respective Inbox PM's counter
Code:
{USERCOUNTPOST}

This was the code I used on the widget:

Widget:
Code:
<span id="avatar"></span> <span style="font-size: 1.2em;" id="avatar">      <br />    <span style="font-size: 18px;"> <span id="un">{USERLINK} </span></span> <br />  <br />  <a title="Inbox" href="/privmsg?folder=inbox"><strong>Messages:</strong> {USERCOUNTPOST}</a><br /> </span>
<h3 style="border-color: #1675BC;">
</h3>
  <script type="text/javascript">
//<![CDATA[
    jQuery(function () {
        jQuery('#avatar').html('<center>' + _userdata["avatar"] + '</center>');
    });
//]]>
</script>   

Then added Jscript's code on the Javascript for every page

APPLICATION CODE - JAVASCRIPT:
Code:
/***
 * Application: Private Message list.
 * Description: This application can displays the list of PM in related menus.
 * Version: 1.03102014-jq1.9.1 - Hermes Kriophoros
 * Made and Optimizations by JScript - 2014/03/10
 * View more in: http://ajuda.forumeiros.com
 * Copyright (c) 2013 JScript <jscriptbrasil at live dot com>
 * This work is free. You can redistribute it and/or modify it
 * under the terms of the WTFPL, Version 2
 */
jQuery(function () {
    /***
    * User Definition Variables
    ***/
    /* Put here the amount number of PMs returned!!! */
    var iAmount = 10;   
    /***
    * System Defined Variables - Do not edit if you don't know!
    ***/
    var oConfig = {
        sInfo:
            '<!--' +
            '* Application: Private Message List.' +
            '* Description: This application can displays the list of PM in related menus.' +
            '* Version: 1.03102014-jq1.9.1 - Hermes Kriophoros' +
            '* Made and Optimizations by JScript - 2014/03/10' +
            '* View more in: http://codeforum.besaba.com/forum/index.php' +
            '* Copyright (c) 2014 JScript <jscriptbrasil at live dot com>' +
            '* This work is free. You can redistribute it and/or modify it' +
            '* under the terms of the WTFPL, Version 2' +
            '-->',       
        sContent:
            '<div class="ipsHeaderMenu boxShadow" id="user_inbox_link_menucontent" style="display: none; width: 300px; position: absolute; z-index: 9999;">' +
                '<h4 class="ipsType_sectiontitle">Inbox Messages' +
                    '<p class="ipsPad_half ipsType_smaller right">' +
                        '<a class="configure" href="/privmsg?folder=inbox">Messages</a> <a href="/privmsg?mode=post" title="New message">New message</a>' +
                    '</p>' +
                '</h4>' +
                '<ul class="ipsList_withminiphoto"><img src="http://i55.servimg.com/u/f55/18/17/62/92/ajax-l10.gif" alt="- Load" style="display: block; margin-left: auto; margin-right: auto;"></ul>' +
            '</div>',       
        sCSS:
            '<style>' +
            '.ipsHeaderMenu {' +
                'background-color: #FFFFFF;' +
                'border-radius: 0 0 6px 6px;' +
                'overflow: hidden;' +
                'padding: 10px;' +
                'width: 340px;' +
            '}' +
            '.boxShadow {' +
                'box-shadow: 0 12px 25px rgba(0, 0, 0, 0.58);' +
            '}' +
            '.ipsHeaderMenu .ipsType_sectiontitle {' +
                'margin-bottom: 8px;' +
            '}' +
            '.ipsType_sectiontitle {' +
                'border-bottom: 1px solid #ECECEC;' +
                'color: #595959;' +
                'font-size: 16px;' +
                'font-weight: 400;' +
                'padding: 5px 0;' +
            '}' +
            '.ipsType_smaller, .ipsType_smaller a {' +
                'font-size: 11px !important;' +
            '}' +
            '.ipsPad_half {' +
                'padding: 4px !important;' +
            '}' +
            '.right {' +
                'float: right;' +
            '}' +
            '.ipsList_withminiphoto > li {' +
                'margin-bottom: 8px;' +
            '}' +
            '.ipsType_small {' +
                'font-size: 12px;' +
            '}' +
            '.ipsUserPhoto {' +
                'background: none repeat scroll 0 0 #FFFFFF;' +
                'border: 1px solid #D5D5D5 !important;' +
                'box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1);' +
                'padding: 1px;' +
            '}' +
            '.ipsUserPhoto_mini {' +
                'height: 30px;' +
                'width: 30px;' +
            '}' +
            '.left {' +
                'float: left;' +
            '}' +
            '.ipsList_withminiphoto > li .list_content {' +
                'margin-left: 40px;' +
            '}' +
            '#user_inbox_link_menucontent ul.ipsList_withminiphoto {' +
                'list-style: none outside none;' +
                'padding-left: 0 !important;' +
            '}' +
            '.desc.lighter, .desc.lighter.blend_links a {' +
                'color: #A4A4A4;' +
            '}' +
            '.ipsType_smaller, .ipsType_smaller a {' +
                'font-size: 11px !important;' +
            '}' +
            '.menu_active {' +
                'color: #595959 !important;' +
                'background-color: #FFFFFF !important;' +
                'background-position: center bottom;' +
                'border-radius: 3px 3px 0 0;' +
                'padding: 4px;' +
            '}' +
            '</style>',
        sTarget: '',
        sSearch: '',
        sExpression0: '',
        sExpression1: '',
        sExpression2: '',
        sGetIMG: ''
    };
    /* Add CSS */
    /*document.head.insertAdjacentHTML('beforeEnd', oConfig.sCSS);*/
    jQuery(oConfig.sCSS).insertBefore('body');
    jQuery('body').append(oConfig.sInfo + oConfig.sContent);
    /* Forum versions! */
    var phpBB2 = jQuery('.bodyline');
    var phpBB3 = jQuery('#wrap');
    var punbb = jQuery('#pun-intro');
    var invision = jQuery('#ipbwrapper');
   
    if (phpBB2.length) {
        oConfig.sSearch = 'form[name="privmsg_list"] .forumline tr';
        oConfig.sTarget = 'tr';
        oConfig.sExpression0 = 'memDiv.find("tr:first, tr:last").remove();';
        oConfig.sExpression1 = 'jQuery(this).find("a.topictitle").html()';
        oConfig.sExpression2 = 'jQuery(this).find("td .name").html() + " - " + jQuery(this).find("td .postdetails").html()';
        oConfig.sGetIMG = ' #emptyidcc .row1.gensmall img:eq(0)';
    } else if(phpBB3.length) {
        oConfig.sSearch = '.topiclist.pmlist.bg_none li';
        oConfig.sTarget = '.icon dt';
        oConfig.sExpression1 = 'jQuery(this).find("a.topictitle")[0].outerHTML';
        oConfig.sExpression2 = 'jQuery(this).find("em").html()';
        oConfig.sGetIMG = ' #profile-advanced-right img:eq(0)';
    } else if(punbb.length) {
        oConfig.sSearch = '.main-content tr .tcl.tdtopics';
        oConfig.sGetIMG = ' #profile-advanced-right .main-content img:first';
    } else if(invision.length) {
        oConfig.sSearch = '.borderwrap table.ipbtable tbody tr:not(":empty")';
        oConfig.sTarget = 'tr';
        oConfig.sExpression1 = 'var _tmp1 = jQuery(this).find("td:eq(2)");_tmp1.children("a.topictitle")[0].outerHTML';
        oConfig.sExpression2 = '_tmp1.children("a.topictitle").remove();_tmp1.html()';
        oConfig.sGetIMG = ' #profile-advanced-right .box-content.profile.center img:first';
    };
   
    jQuery('a[href*="/privmsg?folder=inbox"]').click(function () {
        var oClicked = jQuery(this);
        var oTarget = jQuery('#user_inbox_link_menucontent');
        if (oTarget[0].style.display == 'none') {
            oClicked.addClass('menu_active');
           
            if ( !jQuery('#user_inbox_link_menucontent ul.ipsList_withminiphoto > li').length ) {
                var memDiv = jQuery('<div>');
                memDiv.load('/privmsg?folder=inbox ' + oConfig.sSearch + ':lt(' + iAmount + ')', function() {
                    if (punbb.length) {
                        memDiv
                            .html(
                                memDiv.html()
                                    .replace(/\<\/a\> por/g, '</a></br><span class="ipsType_smaller desc lighter">')
                                    .replace(/\<\/td\>/g, '</span></div></li>')
                                    .replace(/\<td class="tcl tdtopics"\>/g, '<li class="ipsType_small clearfix"><img class="ipsUserPhoto ipsUserPhoto_mini left" alt="User image" src="http://i78.servimg.com/u/f78/18/17/62/92/defaul10.png"><div class="list_content">')
                            )
                            .find('span.status').remove();
                    } else {
                        if (oConfig.sExpression0) {
                            eval( oConfig.sExpression0 );
                        }
                        var sHtml = '';
                        oConfig.sTarget = memDiv.find(oConfig.sTarget);
                        jQuery.each(oConfig.sTarget, function( index, value ) {
                            sHtml +=
                                '<li class="ipsType_small clearfix">' +
                                    '<img class="ipsUserPhoto ipsUserPhoto_mini left" alt="User image" src="http://i78.servimg.com/u/f78/18/17/62/92/defaul10.png">' +
                                    '<div class="list_content">' +
                                        eval( oConfig.sExpression1 ) + '<br>' +
                                        '<span class="ipsType_smaller desc lighter">' + eval( oConfig.sExpression2 ) + '</span>' +
                                    '</div>' +
                                '</li>';
                        });
                        memDiv.html(sHtml);
                    }
                    jQuery('#user_inbox_link_menucontent ul.ipsList_withminiphoto').html(memDiv.html());
                    var oImgTarget = oTarget.find('.ipsType_small.clearfix');
                    oImgTarget.each(function( index ) {
                        var UserURL = jQuery(this).find('.ipsType_smaller a, .list_content a:last');
                        if (UserURL.length) {
                            UserURL = UserURL.attr('href');
                            var oImgTag = jQuery(this).find('.ipsUserPhoto');
                            var UserIMG = sessionStorage.getItem(UserURL); /* Gets the avatar saved in local storage */
                            /* If avatar alread saved, then no request member profile! */
                            if(UserIMG) {
                                jQuery(this).find('img').attr('src', UserIMG);
                            } else {
                                /* if not, then only request per session!!! */
                                jQuery.get(UserURL, function(data){
                                    var profile_img = jQuery(oConfig.sGetIMG, data).attr('src');
                                    if (profile_img !== undefined) {
                                        oImgTag.attr('src', profile_img);
                                        /* Saves the member avatar in local storage */
                                        sessionStorage.setItem(UserURL, profile_img);
                                    }
                                });
                            }
                        }
                    });
                });
            }
            oTarget
                .css({
                    'left': (oClicked.offset().left + oClicked.outerWidth()) - oTarget.outerWidth(),
                    'top': oClicked.offset().top + oClicked.outerHeight()
                })           
                .fadeIn(400);
            jQuery(document).mousedown(function() {
                if(!oTarget.is(":hover")) {
                    jQuery(document).unbind('mousedown');
                    oClicked.removeClass('menu_active');
                    oTarget.fadeOut(400);
                }
            });           
        } else {
            oClicked.removeClass('menu_active');
            oTarget.fadeOut(400);
        }
        return false;
    });
});

So Summing it up, Added that Widget to make a custom user Area (was going to add more links later, etc) and Added the javascript.

And I've 2 problems that I've noticed.

1st: The Counter doesn't Display the exact ammount of PM's in the inbox (I've none and it displays 1, and tried with a Dummy test forum, sent myself 5 pm's, deleted them all and in the end it displays 2).

2nd: When I click in "Messages" inside the Menu It simply closes the Menu and doesn't direct to the "inbox" (and before you ask, YES the path is correct).

This is the Dummy Forum where I'm testing it.

http://staiksdummy.forumeiros.com/

And I'm sorry I'm bringing this Code up, considering the obvious, but doesn't change the fact the guy was a genius compared to me and many others and since my knowledge is very limited don't want to put this Code to Waste, any help gentlemen?

Thank you very much in advance!
(NOTE: It's PunBB)

@EDIT Just realized the {USERCOUNPOST} is literally the ammount of posts my bad, being that so, is there one to count the pm's in the inbox?


Last edited by daniloMD on May 1st 2017, 7:15 pm; edited 1 time in total
avatar
daniloMD
New Member

Posts : 19
Reputation : 1
Language : italian

http://nexusteam.forumattivo.com/

Back to top Go down

Solved Re: Application Private Messages Menu

Post by daniloMD on April 25th 2017, 4:55 am

bump
avatar
daniloMD
New Member

Posts : 19
Reputation : 1
Language : italian

http://nexusteam.forumattivo.com/

Back to top Go down

Solved Re: Application Private Messages Menu

Post by SLGray on April 25th 2017, 5:15 am

Are you sure this is for PM's, not the number of posts:
Code:
  {USERCOUNTPOST}
?


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

avatar
SLGray
Administrator
Administrator

Male Posts : 40209
Reputation : 2716
Language : English
Location : United States

https://fmthemes.forumotion.com/

Back to top Go down

Solved Re: Application Private Messages Menu

Post by daniloMD on April 25th 2017, 6:11 am

@EDIT Just realized the {USERCOUNPOST} is literally the ammount of posts my bad, being that so, is there one to count the pm's in the inbox?

@SLGray I've put it there mate Smile
avatar
daniloMD
New Member

Posts : 19
Reputation : 1
Language : italian

http://nexusteam.forumattivo.com/

Back to top Go down

Solved Re: Application Private Messages Menu

Post by SLGray on April 25th 2017, 8:14 am



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

avatar
SLGray
Administrator
Administrator

Male Posts : 40209
Reputation : 2716
Language : English
Location : United States

https://fmthemes.forumotion.com/

Back to top Go down

Solved Re: Application Private Messages Menu

Post by daniloMD on April 25th 2017, 9:45 am

@SLGray I was already aware of that, like I said it was a mistake, but the main point of the post remains.

How can I make that "messages" link on the JS work?
And how can I make a messages counter?

I've seen it in another forum a similar subject, even tho I can't associate it to this case bcz my JS knowledge is beyond sad.

That Script was roughly sth like this: GET$ ( link of the messages i think) -> count number of Images with the "X" link (the unread messages icon) and display the icon ammount as a number aka lenght if I'm not mistaken, this was the principle, I'm sorry for writting in a miserable non technical way, but yeah, any help with those? Smile

@in the meantime found the code again
JAVASCRIPT:
Code:
$(function() {
  $.get('/privmsg?folder=inbox', function(data) {
 
    var unread_image = 'http://i38.servimg.com/u/f38/18/44/35/81/offlin10.png';
    var unread = $('.main-content .status img[src="' + unread_image + '"]', data).length;
   
      $('.navbar ul li ul li a[href="http://fineryworkshop.forumotion.com/privmsg?folder=inbox"]').append(unread);
  });
});
avatar
daniloMD
New Member

Posts : 19
Reputation : 1
Language : italian

http://nexusteam.forumattivo.com/

Back to top Go down

Solved Re: Application Private Messages Menu

Post by APE on May 2nd 2017, 12:14 am

Problem solved & topic archived.
Please read our forum rules: ESF General Rules



avatar
APE
Manager
Manager

Male Posts : 10672
Reputation : 997
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