Re: Creating multiple Node BB Admins but with limited access to ACP
@PitaJ , how can we create multiple admins? Can we assign a user as admin in Dashboard, please let me know.
To do this you want to:
filter:admin.header.build
in a plugin.First, add
<!-- IF custom_menu.length -->
<div class="sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header"><i class="fa fa-fw fa-th"></i>Your List Category</li>
<!-- BEGIN custom_menu -->
<li>
<a href="{relative_path}/admin{custom_menu.route}">
<!-- IF custom_menu.icon -->
<i class="fa {custom_menu.icon}"></i>
<!-- ENDIF custom_menu.icon -->
{custom_menu.name}
</a>
</li>
<!-- END custom_menu -->
</ul>
</div>
<!-- ENDIF custom_menu.length -->
to /src/views/admin/partials/menu.tpl.
Then, add
custom_menu: results.custom_header.custom_menu,
to
var data = {
relative_path: nconf.get('relative_path'),
configJSON: JSON.stringify(results.config),
user: userData,
userJSON: JSON.stringify(userData).replace(/'/g, "\\'"),
plugins: results.custom_header.plugins,
authentication: results.custom_header.authentication,
scripts: results.scripts,
'cache-buster': meta.config['cache-buster'] ? 'v=' + meta.config['cache-buster'] : '',
env: process.env.NODE_ENV ? true : false,
};
(around line 100) in /src/middleware/admin.js.
As for the plugin: I've created a quick and dirty example you can have a look at over at GitHub.
In a nutshell, the same aproach as you would add a normal "Installed Plugins" entry, with the exception that you define your own array that is passed to the template, hence the need to change two core files.
I know this is an old topic, but I just ran into this today and wanted to add an admin nav section in the minimally invasive way possible. This technique worked for me and I'm wondering if anybody has any thoughts about this being a good or bad approach to quickly adding a custom admin navigation menu from a plugin. Any critiques appreciated!
plugin/static/js/admin/custommenu.js:
var adminInitialized = false;
$(window).on('action:ajaxify.start', function(data) {
if (!adminInitialized) {
$('ul#main-menu').append('\
<li class="dropdown menu-item">\
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Custom Menu</a>\
<ul class="dropdown-menu" role="menu">\
<li><a href="/admin/my-custom-route">Custom Route</a></li>\
</ul>\
</li>');
adminInitialized = true;
}
});
plugin.json:
"acpScripts": [
"static/js/admin/custommenu.js"
]