Advertisement:
2by2host

Author Topic: How do i hide buttons on the menu bar?  (Read 809 times)

Offline kripz

  • Semi-Newbie
  • *
  • Posts: 63
How do i hide buttons on the menu bar?
« on: May 15, 2012, 10:37:14 PM »
Not at home atm so i dont have the code to look at but i found the code somewhere, it basically went like this:

Buttons hard coded into an array (with hard coded "show" property).
Loop through array and add to $context['menu'].
Figure out and set context['currentaction'].

Basically what i want to do is hide certain buttons based on the current action.

I have custom buttons added and wish to hide them if currentaction == "forum" (for example).

How can i do this since the buttons are generated before the currentaction is set?

Forum version 2.0.2

Offline kripz

  • Semi-Newbie
  • *
  • Posts: 63
Re: How do i hide buttons on the menu bar?
« Reply #1 on: May 16, 2012, 02:35:57 AM »
Thought i had the solution:

add showEx to buttons. In the loop where it adds the buttons to the context, check for showEx value and either include or skip it. However it doesnt behave as intended, can anybody see where i went wrong?

Code: [Select]
function setupMenuContext()
{
global $context, $modSettings, $user_info, $txt, $scripturl;

// Set up the menu privileges.
$context['allow_search'] = allowedTo('search_posts');
$context['allow_admin'] = allowedTo(array('admin_forum', 'manage_boards', 'manage_permissions', 'moderate_forum', 'manage_membergroups', 'manage_bans', 'send_mail', 'edit_news', 'manage_attachments', 'manage_smileys'));
$context['allow_edit_profile'] = !$user_info['is_guest'] && allowedTo(array('profile_view_own', 'profile_view_any', 'profile_identity_own', 'profile_identity_any', 'profile_extra_own', 'profile_extra_any', 'profile_remove_own', 'profile_remove_any', 'moderate_forum', 'manage_membergroups', 'profile_title_own', 'profile_title_any'));
$context['allow_memberlist'] = allowedTo('view_mlist');
$context['allow_calendar'] = allowedTo('calendar_view') && !empty($modSettings['cal_enabled']);
$context['allow_moderation_center'] = $context['user']['can_mod'];
$context['allow_pm'] = allowedTo('pm_read');

$cacheTime = $modSettings['lastActive'] * 60;

// showEx determines if button will appear on forums only or home page only or both.
// -1=both, 0=home, 1=forum

// All the buttons we can possible want and then some, try pulling the final list of buttons from cache first.
if (($menu_buttons = cache_get_data('menu_buttons-' . implode('_', $user_info['groups']) . '-' . $user_info['language'], $cacheTime)) === null || time() - $cacheTime <= $modSettings['settings_updated'])
{
$buttons = array(
'home' => array(
'title' => $txt['home'],
'href' => $scripturl,
'show' => true,
'showEx' => -1,
'sub_buttons' => array(
),
'is_last' => $context['right_to_left'],
),
'forum' => array(
'title' => isset($txt['tp-forum']) ? $txt['tp-forum'] : 'Forum',
'href' => $scripturl . '?action=forum',
'show' => true,
'showEx' => -1,
),
'aboutus' => array(
'title' => 'About Us',
'href' => $scripturl . '?action=aboutus',
'show' => true,
'showEx' => 0,
),
'help' => array(
'title' => $txt['help'],
'href' => $scripturl . '?action=help',
'show' => true,
'showEx' => 1,
'sub_buttons' => array(
'tphelp' => array(
'title' => 'TinyPortal',
'href' => $scripturl . '?action=tpmod;sa=help',
'show' => true,
'showEx' => 1,
),
),
),
'search' => array(
'title' => $txt['search'],
'href' => $scripturl . '?action=search',
'show' => $context['allow_search'],
'showEx' => 1,
'sub_buttons' => array(
),
),
'admin' => array(
'title' => $txt['admin'],
'href' => $scripturl . '?action=admin',
'show' => $context['allow_admin'],
'showEx' => 1,
'sub_buttons' => array(
'featuresettings' => array(
'title' => $txt['modSettings_title'],
'href' => $scripturl . '?action=admin;area=featuresettings',
'show' => allowedTo('admin_forum'),
'showEx' => 1,
),
'packages' => array(
'title' => $txt['package'],
'href' => $scripturl . '?action=admin;area=packages',
'show' => allowedTo('admin_forum'),
'showEx' => 1,
),
'errorlog' => array(
'title' => $txt['errlog'],
'href' => $scripturl . '?action=admin;area=logs;sa=errorlog;desc',
'show' => allowedTo('admin_forum') && !empty($modSettings['enableErrorLogging']),
'showEx' => 1,
),
'permissions' => array(
'title' => $txt['edit_permissions'],
'href' => $scripturl . '?action=admin;area=permissions',
'show' => allowedTo('manage_permissions'),
'showEx' => 1,
'is_last' => true,
),
),
),
'moderate' => array(
'title' => $txt['moderate'],
'href' => $scripturl . '?action=moderate',
'show' => $context['allow_moderation_center'],
'showEx' => 1,
'sub_buttons' => array(
'modlog' => array(
'title' => $txt['modlog_view'],
'href' => $scripturl . '?action=moderate;area=modlog',
'show' => !empty($modSettings['modlog_enabled']) && !empty($user_info['mod_cache']) && $user_info['mod_cache']['bq'] != '0=1',
'showEx' => 1,
),
'poststopics' => array(
'title' => $txt['mc_unapproved_poststopics'],
'href' => $scripturl . '?action=moderate;area=postmod;sa=posts',
'show' => $modSettings['postmod_active'] && !empty($user_info['mod_cache']['ap']),
'showEx' => 1,
),
'attachments' => array(
'title' => $txt['mc_unapproved_attachments'],
'href' => $scripturl . '?action=moderate;area=attachmod;sa=attachments',
'show' => $modSettings['postmod_active'] && !empty($user_info['mod_cache']['ap']),
'showEx' => 1,
),
'reports' => array(
'title' => $txt['mc_reported_posts'],
'href' => $scripturl . '?action=moderate;area=reports',
'show' => !empty($user_info['mod_cache']) && $user_info['mod_cache']['bq'] != '0=1',
'is_last' => true,
'showEx' => 1,
),
),
),
'profile' => array(
'title' => $txt['profile'],
'href' => $scripturl . '?action=profile',
'show' => $context['allow_edit_profile'],
'showEx' => 1,
'sub_buttons' => array(
'summary' => array(
'title' => $txt['summary'],
'href' => $scripturl . '?action=profile',
'show' => true,
'showEx' => 1,
),
'account' => array(
'title' => $txt['account'],
'href' => $scripturl . '?action=profile;area=account',
'show' => allowedTo(array('profile_identity_any', 'profile_identity_own', 'manage_membergroups')),
'showEx' => 1,
),
'profile' => array(
'title' => $txt['forumprofile'],
'href' => $scripturl . '?action=profile;area=forumprofile',
'show' => allowedTo(array('profile_extra_any', 'profile_extra_own')),
'showEx' => 1,
'is_last' => true,
),
),
),
'pm' => array(
'title' => $txt['pm_short'],
'href' => $scripturl . '?action=pm',
'show' => $context['allow_pm'],
'showEx' => 1,
'sub_buttons' => array(
'pm_read' => array(
'title' => $txt['pm_menu_read'],
'href' => $scripturl . '?action=pm',
'show' => allowedTo('pm_read'),
'showEx' => 1,
),
'pm_send' => array(
'title' => $txt['pm_menu_send'],
'href' => $scripturl . '?action=pm;sa=send',
'show' => allowedTo('pm_send'),
'showEx' => 1,
'is_last' => true,
),
),
),
'tpadmin' => array(
'title' => 'TinyPortal',
'href' => $scripturl . '?action=tpadmin',
'show' =>  TPcheckAdminAreas(),
'showEx' => -1,
'sub_buttons' => array(
),
),
'calendar' => array(
'title' => $txt['calendar'],
'href' => $scripturl . '?action=calendar',
'show' => $context['allow_calendar'],
'showEx' => -1,
'sub_buttons' => array(
'view' => array(
'title' => $txt['calendar_menu'],
'href' => $scripturl . '?action=calendar',
'show' => allowedTo('calendar_post'),
'showEx' => -1,
),
'post' => array(
'title' => $txt['calendar_post_event'],
'href' => $scripturl . '?action=calendar;sa=post',
'show' => allowedTo('calendar_post'),
'showEx' => -1,
'is_last' => true,
),
),
),
'mlist' => array(
'title' => $txt['members_title'],
'href' => $scripturl . '?action=mlist',
'show' => $context['allow_memberlist'],
'showEx' => 1,
'sub_buttons' => array(
'mlist_view' => array(
'title' => $txt['mlist_menu_view'],
'href' => $scripturl . '?action=mlist',
'show' => true,
'showEx' => 1,
),
'mlist_search' => array(
'title' => $txt['mlist_search'],
'href' => $scripturl . '?action=mlist;sa=search',
'show' => true,
'showEx' => 1,
'is_last' => true,
),
),
),
'login' => array(
'title' => $txt['login'],
'href' => $scripturl . '?action=login',
'show' => $user_info['is_guest'],
'showEx' => -1,
'sub_buttons' => array(
),
),
'register' => array(
'title' => $txt['register'],
'href' => $scripturl . '?action=register',
'show' => $user_info['is_guest'],
'showEx' => -1,
'sub_buttons' => array(
),
'is_last' => !$context['right_to_left'],
),
'logout' => array(
'title' => $txt['logout'],
'href' => $scripturl . '?action=logout;%1$s=%2$s',
'show' => !$user_info['is_guest'],
'showEx' => -1,
'sub_buttons' => array(
),
'is_last' => !$context['right_to_left'],
),
);

// Allow editing menu buttons easily.
call_integration_hook('integrate_menu_buttons', array(&$buttons));


// tinyportal //
$buttons['tpadmin']['sub_buttons'] = tp_getbuttons();

// Now we put the buttons in the context so the theme can use them.
$menu_buttons = array();
foreach ($buttons as $act => $button)
if (!empty($button['show']))
{
// showEx determines if button will appear on forums only or home page only or both.
// -1=both, 0=home, 1=forum
// currently on forum, skip buttons which should be on home page only
if ($context['current_action'] == 'profile' || $context['current_action'] ==  'admin' || $context['current_action'] ==  'register' || $context['current_action'] ==  'login' || $context['current_action'] ==  'moderate' || $context['current_action'] ==  'forum' || $context['current_action'] ==  'search')
{
if($button['showEx'] == 0)
continue;
} // not on forum, must be on home page or about us
else if ($button['showEx'] == 1)
continue;

$button['active_button'] = false;

// Make sure the last button truely is the last button.
if (!empty($button['is_last']))
{
if (isset($last_button))
unset($menu_buttons[$last_button]['is_last']);
$last_button = $act;
}

// Go through the sub buttons if there are any.
if (!empty($button['sub_buttons']))
foreach ($button['sub_buttons'] as $key => $subbutton)
{
if (empty($subbutton['show']))
unset($button['sub_buttons'][$key]);

// 2nd level sub buttons next...
if (!empty($subbutton['sub_buttons']))
{
foreach ($subbutton['sub_buttons'] as $key2 => $sub_button2)
{
if (empty($sub_button2['show']))
unset($button['sub_buttons'][$key]['sub_buttons'][$key2]);
}
}
}

$menu_buttons[$act] = $button;
}

if (!empty($modSettings['cache_enable']) && $modSettings['cache_enable'] >= 2)
cache_put_data('menu_buttons-' . implode('_', $user_info['groups']) . '-' . $user_info['language'], $menu_buttons, $cacheTime);
}

$context['menu_buttons'] = $menu_buttons;

// Logging out requires the session id in the url.
if (isset($context['menu_buttons']['logout']))
$context['menu_buttons']['logout']['href'] = sprintf($context['menu_buttons']['logout']['href'], $context['session_var'], $context['session_id']);

// Figure out which action we are doing so we can set the active tab.
// Default to home.
$current_action = 'home';

if (isset($context['menu_buttons'][$context['current_action']]))
$current_action = $context['current_action'];
elseif ($context['current_action'] == 'search2')
$current_action = 'search';
elseif ($context['current_action'] == 'aboutus')
$current_action = 'aboutus';
elseif ($context['current_action'] == 'theme')
$current_action = isset($_REQUEST['sa']) && $_REQUEST['sa'] == 'pick' ? 'profile' : 'admin';
elseif ($context['current_action'] == 'register2')
$current_action = 'register';
elseif ($context['current_action'] == 'login2' || ($user_info['is_guest'] && $context['current_action'] == 'reminder'))
$current_action = 'login';
elseif ($context['current_action'] == 'groups' && $context['allow_moderation_center'])
$current_action = 'moderate';
elseif (isset($_GET['board']) || isset($_GET['topic']))
$current_action = 'forum';

$context['menu_buttons'][$current_action]['active_button'] = true;

if (!$user_info['is_guest'] && $context['user']['unread_messages'] > 0 && isset($context['menu_buttons']['pm']))
{
$context['menu_buttons']['pm']['alttitle'] = $context['menu_buttons']['pm']['title'] . ' [' . $context['user']['unread_messages'] . ']';
$context['menu_buttons']['pm']['title'] .= ' [<strong>' . $context['user']['unread_messages'] . '</strong>]';
}
}
« Last Edit: May 16, 2012, 03:13:05 AM by kripz »

Online ChalkCat

  • Support Specialist
  • SMF Hero
  • *
  • Posts: 1,411
  • Gender: Female
  • Forum Tea Maker - go on have a cuppa!
    • ChalkCat
Re: How do i hide buttons on the menu bar?
« Reply #2 on: May 16, 2012, 02:53:01 AM »
Change "show" from true to false ;)

Offline kripz

  • Semi-Newbie
  • *
  • Posts: 63
Re: How do i hide buttons on the menu bar?
« Reply #3 on: May 16, 2012, 03:06:21 AM »
Actually it works, caching was enabled.
« Last Edit: May 16, 2012, 05:36:38 AM by kripz »