plugins - filter:admin.header.build allows you to add plugins to navigation in ACP

v1.18.x
psychobunny
parent 338acb8fc2
commit 2b07917020

@ -76,35 +76,52 @@
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">NodeBB</li>
<li class='active'><a href='{relative_path}/admin/index'><i class='icon-home'></i> Home</a></li>
<li class=''><a href='{relative_path}/admin/categories/active'><i class='icon-folder-close-alt'></i> Categories</a></li>
<li class=''><a href='{relative_path}/admin/users/latest'><i class='icon-user'></i> Users</a></li>
<li class=""><a href="{relative_path}/admin/groups"><i class="icon-group"></i> Groups</a></li>
<li class=''><a href='{relative_path}/admin/topics'><i class='icon-book'></i> Topics</a></li>
<li class=''><a href='{relative_path}/admin/themes'><i class='icon-th'></i> Themes</a></li>
<li class=''><a href='{relative_path}/admin/plugins'><i class='icon-code-fork'></i> Plugins</a></li>
<li class=''><a href='{relative_path}/admin/settings'><i class='icon-cogs'></i> Settings</a></li>
<li class=''><a href='{relative_path}/admin/redis'><i class='icon-hdd'></i> Redis</a></li>
<li class=''><a href='{relative_path}/admin/logger'><i class='icon-th'></i> Logger</a></li>
<li class=''><a href="{relative_path}/admin/motd"><i class="icon-comment"></i> MOTD</a></li>
<li class='active'>
<a href='{relative_path}/admin/index'><i class='icon-home'></i> Home</a>
</li>
<li><a href='{relative_path}/admin/categories/active'><i class='icon-folder-close-alt'></i> Categories</a></li>
<li><a href='{relative_path}/admin/users/latest'><i class='icon-user'></i> Users</a></li>
<li><a href="{relative_path}/admin/groups"><i class="icon-group"></i> Groups</a></li>
<li><a href='{relative_path}/admin/topics'><i class='icon-book'></i> Topics</a></li>
<li><a href='{relative_path}/admin/themes'><i class='icon-th'></i> Themes</a></li>
<li><a href='{relative_path}/admin/plugins'><i class='icon-code-fork'></i> Plugins</a></li>
<li><a href='{relative_path}/admin/settings'><i class='icon-cogs'></i> Settings</a></li>
<li><a href='{relative_path}/admin/redis'><i class='icon-hdd'></i> Redis</a></li>
<li><a href='{relative_path}/admin/logger'><i class='icon-th'></i> Logger</a></li>
<li><a href="{relative_path}/admin/motd"><i class="icon-comment"></i> MOTD</a></li>
</ul>
</div>
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">Social Authentication</li>
<li class=''><a href='{relative_path}/admin/twitter'><i class='icon-twitter-sign'></i> Twitter</a></li>
<li class=''><a href='{relative_path}/admin/facebook'><i class='icon-facebook-sign'></i> Facebook</a></li>
<li class=''><a href='{relative_path}/admin/gplus'><i class='icon-google-plus-sign'></i> Google+</a></li>
<!--<li class="nav-header">Custom Modules</li>-->
<!-- <li class=''><a href=''>Search</a></li> -->
<li><a href='{relative_path}/admin/twitter'><i class='icon-twitter-sign'></i> Twitter</a></li>
<li><a href='{relative_path}/admin/facebook'><i class='icon-facebook-sign'></i> Facebook</a></li>
<li><a href='{relative_path}/admin/gplus'><i class='icon-google-plus-sign'></i> Google+</a></li>
</ul>
</div>
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">Plugins</li>
<!-- BEGIN plugins -->
<li>
<a href='{relative_path}/{plugins.route}'><i class="{plugins.icon}"></i> {plugins.name}</a>
</li>
<!-- END plugins -->
</ul>
</div>
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">Unit Tests</li>
<ul class="nav nav-list">
<li class=''><a href='{relative_path}/admin/testing/categories'>Categories</a></li>
<!--<li class=''><a href='{relative_path}/admin/testing/topics'>Topics</a></li>
<li class=''><a href='{relative_path}/admin/testing/posts'>Posts</a></li>
<li class=''><a href='{relative_path}/admin/testing/accounts'>Accounts</a></li>
<li class=''><a href='{relative_path}/admin/testing/chat'>Chat</a></li>
<li class=''><a href='{relative_path}/admin/testing/notifications'>Notifications</a></li>
<li class=''><a href='{relative_path}/admin/testing/friends'>Friends</a></li>
<li class=''><a href='{relative_path}/admin/testing/feed'>RSS Feed</a></li>
<li class=''><a href='{relative_path}/admin/testing/emails'>Emails</a></li>-->
<li><a href='{relative_path}/admin/testing/categories'>Categories</a></li>
<!--<li><a href='{relative_path}/admin/testing/topics'>Topics</a></li>
<li><a href='{relative_path}/admin/testing/posts'>Posts</a></li>
<li><a href='{relative_path}/admin/testing/accounts'>Accounts</a></li>
<li><a href='{relative_path}/admin/testing/chat'>Chat</a></li>
<li><a href='{relative_path}/admin/testing/notifications'>Notifications</a></li>
<li><a href='{relative_path}/admin/testing/friends'>Friends</a></li>
<li><a href='{relative_path}/admin/testing/feed'>RSS Feed</a></li>
<li><a href='{relative_path}/admin/testing/emails'>Emails</a></li>-->
</ul>
</ul>
</div><!--/.well -->

@ -18,10 +18,17 @@ var user = require('./../user.js'),
});
}
Admin.build_header = function (res) {
return templates['admin/header'].parse({
csrf: res.locals.csrf_token,
relative_path: nconf.get('relative_path')
Admin.build_header = function (res, callback) {
var custom_header = {
'plugins': []
};
plugins.fireHook('filter:admin.header.build', custom_header, function(err, custom_header) {
callback(err, templates['admin/header'].parse({
csrf: res.locals.csrf_token,
relative_path: nconf.get('relative_path'),
plugins: custom_header.plugins
}));
});
}
@ -38,7 +45,9 @@ var user = require('./../user.js'),
for (var i = 0, ii = routes.length; i < ii; i++) {
(function (route) {
app.get('/admin/' + route, Admin.isAdmin, function (req, res) {
res.send(Admin.build_header(res) + app.create_route('admin/' + route) + templates['admin/footer']);
Admin.build_header(res, function(err, header) {
res.send(header + app.create_route('admin/' + route) + templates['admin/footer']);
});
});
}(routes[i]));
}
@ -48,7 +57,9 @@ var user = require('./../user.js'),
for (var i = 0, ii = unit_tests.length; i < ii; i++) {
(function (route) {
app.get('/admin/testing/' + route, Admin.isAdmin, function (req, res) {
res.send(Admin.build_header(res) + app.create_route('admin/testing/' + route) + templates['admin/footer']);
Admin.build_header(res, function(err, header) {
res.send(header + app.create_route('admin/testing/' + route) + templates['admin/footer']);
});
});
}(unit_tests[i]));
}
@ -57,11 +68,15 @@ var user = require('./../user.js'),
app.namespace('/admin', function () {
app.get('/', Admin.isAdmin, function (req, res) {
res.send(Admin.build_header(res) + app.create_route('admin/index') + templates['admin/footer']);
Admin.build_header(res, function(err, header) {
res.send(header + app.create_route('admin/index') + templates['admin/footer']);
});
});
app.get('/index', Admin.isAdmin, function (req, res) {
res.send(Admin.build_header(res) + app.create_route('admin/index') + templates['admin/footer']);
Admin.build_header(res, function(err, header) {
res.send(header + app.create_route('admin/index') + templates['admin/footer']);
});
});
});

Loading…
Cancel
Save