1
PatTang
Multimenu PM Inbox Count
  • 2008/3/10 3:25

  • PatTang

  • Just popping in

  • Posts: 9

  • Since: 2008/3/8 4


I have created a User Menu same as the default but I need the In-box message count to show in a different colour from the rest of the link text, like it does in the default menu it shows red so it stands out.
Also i wish to show the logged in Display name in the menu, i can show ID but thats just a number.

Using 2.2.6

2
blueteen
Re: Multimenu PM Inbox Count
  • 2008/3/10 9:14

  • blueteen

  • Quite a regular

  • Posts: 379

  • Since: 2004/7/16


Hello,
in your menu, you can use something like this :
le="color: #000000"><?php PM <font color="red">({pm_new})</font>


Same with {pm_total}

For your second question, you can modify multimenu's code to create your own variable (to display name instead of user_id).

Here's a file with this new variable {user_name} : /modules/multiMenu/blocks/multimenu_functions.php
Based on multimenu 1.9 code (rc1 but really stable since months).

<?php /** * XOOPS - PHP Content Management System * Copyright (c) 2001 - 2006 <https://xoops.org/> * * Module: multiMenu 1.90 * Licence : GPL * Authors : * - solo (http://www.wolfpackclan.com/wolfactory) * - herve * - blueteen * - DuGris */ function multimenu_makelink( $options, $myrow ) { global $xoopsUser, $xoopsConfig; global $columns_limit, $columns_limit_drop, $align; $myts =& MyTextSanitizer::getInstance(); $imenu['submenu'] = $myrow['submenu']; ///////////////////////// Create Titles ///////////////////////// // Link title if ( eregi('{alt}', $myrow['title']) ) { $titles = explode( '{alt}', $myrow['title'] ); $title = $myts->makeTareaData4Show($titles[0]); $alt_title = strip_tags( $myts->makeTareaData4Show( $titles[1] ) ); } else { $title = $myts->makeTareaData4Show($myrow['title']); $alt_title = strip_tags($myts->makeTareaData4Show($myrow['title'])); } if ( (($options[0] == 'dyn_02' OR $options[0] == 'dyn_03' ) AND ( $myrow['submenu'] == 1 OR $myrow['submenu'] == 2 ) ) OR $options[0] == 'dyn_06' OR $options[0] == 'dyn_07' OR $options[0] == 'dyn_10' ) { $title = addslashes($title); $alt_title = addslashes($alt_title); } // Get ride of special characters which cause dynamic's menu crash // If link title is too long... if ( $options[4] ) { //if ( $options[0] == 'dyn_06') { $title = strip_tags($title); } //Get ride of html if context menu if (strlen($title) >= $options[5]) { $mm_title = $myts->makeTboxData4Show(substr($title,0,($options[5]-1)))."..."; } else { $mm_title = $myts->makeTareaData4Show($title); } $imenu['title'] = $mm_title; } else { $imenu['title'] = ''; } // PM detection and conversion if ( eregi("{pm_new}", $title) || eregi("{pm_readed}", $title) || eregi("{pm_total}", $title) || eregi("{user_id}", $title) || eregi("{user_name}", $title) ) { //xoops username $new_messages = 0; $old_messages = 0; $som = 0; $user_id = 0; $user_name = '';//xoops username if (is_object($xoopsUser)) { $user_id = $xoopsUser->getVar('uid'); $user_name = XoopsUser::getUnameFromId($user_id);//xoops username $pm_handler =& xoops_gethandler('privmessage'); $uid = $xoopsUser->getVar('uid'); $criteria_new = new CriteriaCompo(new Criteria('read_msg', 0)); $criteria_new->add(new Criteria('to_userid', $xoopsUser->getVar('uid'))); $new_messages = $pm_handler->getCount($criteria_new); $criteria_old = new CriteriaCompo(new Criteria('read_msg', 1)); $criteria_old->add(new Criteria('to_userid', $xoopsUser->getVar('uid'))); $old_messages = $pm_handler->getCount($criteria_old); $som = $old_messages + $new_messages; $title = preg_replace('/{pm_new}/', $new_messages, $title); $title = preg_replace('/{pm_readed}/', $old_messages, $title); $title = preg_replace('/{pm_total}/', $som, $title); $title = preg_replace('/{user_id}/', $user_id, $title); $title = preg_replace('/{user_name}/', $user_name, $title);//xoops username $imenu['title'] = $title; } else { $imenu['title'] = 'Message'; } // $links = XOOPS_URL."/viewpmsg.php"; // Unquote if you want to automatically send to the PM box } // Create and remove html for alt title // $alt_title = strip_tags($myts->makeTareaData4Show($title)); $imenu['alt_title'] = $alt_title; if (is_object($xoopsUser)) { $user_id = $xoopsUser->getVar('uid'); $user_name = XoopsUser::getUnameFromId($user_id);//xoops username } //gère ces balises PM dans le title et le alt (pour les blocs) if ( eregi("{pm_new}", $imenu['alt_title']) || eregi("{pm_readed}", $imenu['alt_title']) || eregi("{pm_total}", $imenu['alt_title']) || eregi("{user_id}", $imenu['alt_title']) || eregi("{user_name}", $imenu['alt_title']) ) { //xoops username $imenu['alt_title'] = preg_replace('/{pm_new}/', $new_messages, $imenu['alt_title']); $imenu['alt_title'] = preg_replace('/{pm_readed}/', $old_messages, $imenu['alt_title']); $imenu['alt_title'] = preg_replace('/{pm_total}/', $som, $imenu['alt_title']); $imenu['alt_title'] = preg_replace('/{user_id}/', $user_id, $imenu['alt_title']); $imenu['alt_title'] = preg_replace('/{user_name}/', $user_name, $imenu['alt_title']); } //fin gestion de ces balises PM dans le title et le alt (pour les blocs) ///////////////////////// Create urls ///////////////////////// // Link url if ($myrow['link']) { $user_id = 0; $user_name = '';//xoops username if (is_object($xoopsUser)) { $user_id = $xoopsUser->getVar('uid'); $user_name = XoopsUser::getUnameFromId($user_id);//xoops username } // Link Type if ((eregi("mailto:", $myrow['link'])) || (eregi("http://", $myrow['link'])) || (eregi("https://", $myrow['link'])) || (eregi("file://", $myrow['link'])) || (eregi("ftp://", $myrow['link']))) { $link = $myrow['link']; $link = preg_replace('/{user_id}/', $user_id, $link); $link = preg_replace('/{user_name}/', $user_name, $link);//xoops username } else { $link = XOOPS_URL."/".$myrow['link']; $link = preg_replace('/{user_id}/', $user_id, $link); $link = preg_replace('/{user_name}/', $user_name, $link);//xoops username } // Target function if ($myrow['target'] != '_self') { $target = 'target="'.$myrow['target'].'" '; } else { $target = ' '; } $imenu['target'] = $target; $imenu['target_context'] = $myrow['target']; // utilisé dans le menu contextuel 2 // Create link $imenu['link'] = '<a href="'.$link.'" '.$target.'title="'.$alt_title.'">'; $imenu['linkurl'] = $link; $imenu['a'] = '</a>'; } else { $imenu['link'] = ''; $imenu['linkurl'] = ''; $imenu['a'] = ''; } ///////////////////////// Create images ///////////////////////// // Create image if( $myrow['imageurl'] AND $options[6] ) { // Image type : relative or absolute link /* if ((eregi("http://", $myrow['imageurl'])) || (eregi("file://", $myrow['imageurl'])) || (eregi("https://", $myrow['imageurl']))) { $image = $myrow['imageurl']; } else { */ $image = XOOPS_URL.'/uploads/multiMenu/'.$myrow['imageurl']; /* } */ // Theme and module tag replace $image = str_replace('{theme}', $xoopsConfig['theme_set'], $image); if ( !empty($xoopsModule) ) { $image = str_replace('{module}', $xoopsModule->getVar('dirname'), $image); } else { $image = str_replace('{module}', 'default', $image); } // Image resize if bigger if ( $options[7] == '' ) { $image_width = ''; $width = '1'; } else { $image_size = getimagesize("$image"); $width = $image_size[0]; if ($options[1] <= $width) { $image_width = 'width="'.$options[7].'" '; } else { $image_width = 'width="'.$width.'" '; } } // Create image $imenu['image'] = '<img src="'.$image.'" '.$image_width.'alt="'.$alt_title.'" '.$align.' style="vertical-align:middle;" />'; $imenu['imageurl'] = $image; if ( !$width ) { $imenu['image'] = '<img src="'.XOOPS_URL.'/modules/multiMenu/images/error.gif" '.$image_width.'alt="'.$alt_title.'" '.$align.' style="vertical-align:middle;" />'; } } else { $imenu['image'] = ""; } return $imenu; } ?>

3
PatTang
Re: Multimenu PM Inbox Count
  • 2008/3/10 9:54

  • PatTang

  • Just popping in

  • Posts: 9

  • Since: 2008/3/8 4


Message inbox color works perfect.
Will try out other mod soon.
Thank you very much