SugarClub
SugarClub
  • User
  • Site
  • Search
  • User
  • Groups & Discussions
    Groups & Discussions
    • Product Forums
      Product-focused Q&A, discussions, best practices, fixes, and help
      Product Forums
      • Sugar Market
      • Sugar Sell & Enterprise
      • Sugar Serve
      • sales-i
    • User Groups
      Professional, Industry, Language
    • Get Involved
      Learn how to become a Raving Fan
    • Social Club
      Live, interactive, virtual meetups with other Sugar customers and Sugar’s Subject Matter experts!
    • Leadership Lounge
      Network with fellow organizational leaders, ask questions, and share insights
    • Developers
      Visit DevClub, the SugarClub group for Sugar Developers
      Developers
      • DevClub
      • Mobile Developers
      • Developer Builds
        Supplemental access level required. Inquiries: developers@sugarcrm.com
    • Additional Groups (Access Required)
      Groups that require special access will be displayed here. Contact sugarclub@sugarcrm.com for assistance. Click here to see all groups
      Additional Groups (Access Required)
      • SugarCloud Platform
  • Product Information
    Product Information
    • Release Central
      Find release-specific content to prepare for your next Sugar update
    • Documentation & Resources
      Looking to expand your Sugar knowledge? Explore our in-depth documentation and other helpful resources!
    • Product Update Blogs
      Updates about each Sugar product
    • Customer Stories »
      Case Studies by SugarCRM
  • Training & Certification
    Training & Certification
    • Training & Certification Home
      Live & On-Demand classes, Quick Videos, Sugar Certifications, and more!
    • Quick Videos
      Short videos about using Sugar
    • My SugarU Dashboard »
    • SugarU News & Updates
  • Adoption
    Adoption
    • Grow Adoption Framework
      Get started on your adoption journey and review the adoption resources from SugarCRM
  • Calendar
  • News
    News
    • Sugar News
    • SugarCRM.com News »
    • Dev Blog
    • SugarCRM Marketplace Blog
  • Help
    Help
    • Welcome to Sugar!
      New to Sugar? Get started here!
    • SugarClub Help & Instructions
      Learn more about SugarClub and find answers to questions about this site
    • New to SugarClub?
      Start your community journey here
    • Technical Support
      Sugar's support resources
      Technical Support
      • Case Portal »
        Access the SugarCRM Case Portal
      • Working with Sugar Support »
        Find out more about engaging with the SugarCRM Support team
      • SugarCloud Information
        Find information about SugarCloud service updates and site status. Contact sugarclub@sugarcrm.com to request access
  • More from Sugar
    More from Sugar
    • DevClub
    • PartnerClub
    • Support
    • SugarOutfitters Marketplace
    • sugarcrm.com
  • DevClub
  • PartnerClub
  • Support
  • Marketplace
  • sugarcrm.com
DevClub
DevClub
Dev Tutorials Manipulate Modules from Sidebar Nav
Click here to join this group and curate your SugarClub experience.
  • +On-Boarding Framework
  • +Customization Guides
  • +Modern UI Technical Guide
      • Add/Remove Profile Action Links
      • Manipulate Modules from Sidebar Nav
      • Moving Footer content to Sidebar Nav
      • Pinned Modules Override
    • Expected Behavior
    • How to identify customizations to Refactor
    • Troubleshooting
  • +Automated PHP Compatibility Tool
  • Did you know? Copying related records is a breeze!
  • How to write code for SugarCloud webinar Q&A
  • HOW TO: enforce ACL on Tags
  • Programatically manage Dropdown List
  • Remove custom fields created via package installation
  • Sugar Developer Tools
  • Tutorial:  How to register custom platforms in Sugar instances via Platform extension
  • Adding a google reCAPTCHA in a Web-to-Lead form
  • Sugar Developer Blog Style Guide

Manipulate Modules from Sidebar Nav

A common use case for creating a custom module-list layout is to alter the list of modules that appear across the top Mega Menu and More Modules layouts. This can still be accomplished with the sidebar-nav layout, but as you may have guessed, your customization will need to be moved to a different layout. By default, the list of modules in sidebar is built in the sidebar-nav-item-group-modules layout.

Example: Hide Contacts Module for Non-Admin Users

If you had a previous custom layout to hide the Contacts module for non-admin users, it may have been similar to this:

./custom/clients/base/layouts/module-list/module-list.js

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
({
extendsFrom: 'ModuleListLayout',
initialize: function(options) {
this._super('initialize', [options])
},
_addDefaultMenus: function() {
var moduleList = app.metadata.getModuleNames({filter: 'display_tab', access: 'read'});
if (app.user.get('type') !== 'admin'){
moduleList = _.filter(moduleList, m => { if(m !== 'Contacts') return m });
}
_.each(moduleList, function(module) {
this._addMenu(module, true);
}, this);
},
})
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
({
    extendsFrom: 'ModuleListLayout',
    
    initialize: function(options) {
        this._super('initialize', [options])
    },

    _addDefaultMenus: function() {
        var moduleList = app.metadata.getModuleNames({filter: 'display_tab', access: 'read'});
        
        if (app.user.get('type') !== 'admin'){
            moduleList = _.filter(moduleList, m => { if(m !== 'Contacts') return m });
        }

        _.each(moduleList, function(module) {
            this._addMenu(module, true);
        }, this);
    },
})

As mentioned, these changes are now home in a new layout: ./clients/base/layouts/sidebar-nav-item-group-modules. Using a similar pattern as above, we can hide this module in the sidebar-nav layout. 

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
({
extendsFrom: 'SidebarNavItemGroupModulesLayout',
initialize: function(options) {
this._super('initialize', [options])
},
_getDefaultModuleList: function() {
let moduleList = app.metadata.getModuleNames({filter: 'display_tab', access: 'read'});
if (app.user.get('type') === 'admin'){
moduleList = _.filter(moduleList, m => { if(m !== 'Contacts') return m });
}
return _.without(moduleList, 'Home');
},
})
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
({
    extendsFrom: 'SidebarNavItemGroupModulesLayout',

    initialize: function(options) {
        this._super('initialize', [options])
    },

    _getDefaultModuleList: function() {
        let moduleList = app.metadata.getModuleNames({filter: 'display_tab', access: 'read'});

        if (app.user.get('type') === 'admin'){
            moduleList = _.filter(moduleList, m => { if(m !== 'Contacts') return m });
        }

        return _.without(moduleList, 'Home');
    },
})

Once these changes are added, you can run a Quick Repair and Rebuild and the list of modules will be updated. 

Note: You may need to refresh the page to see the profile menu items removed.

  • 0 comments
  • 0 members are here
  • Sign in to reply
Related
Recommended