mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-07 22:45:46 +01:00
global widget areas (sidebar/footer) - closes #1097
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
};
|
||||
|
||||
ajaxify.widgets.render = function(tpl_url, url, callback) {
|
||||
var widgetLocations = [], numLocations;
|
||||
var widgetLocations = ['sidebar', 'footer'], numLocations;
|
||||
|
||||
$('#content [widget-area]').each(function() {
|
||||
widgetLocations.push($(this).attr('widget-area'));
|
||||
@@ -28,6 +28,17 @@
|
||||
function renderWidgets(location) {
|
||||
var area = $('#content [widget-area="' + location + '"]');
|
||||
|
||||
if (!area.length && window.location.pathname.indexOf('/admin') === -1) {
|
||||
if (location === 'footer') {
|
||||
$('#content').append($('<div class="col-xs-12"><div widget-area="footer"></div></div>'));
|
||||
} else if (location === 'sidebar') {
|
||||
$('#content > *').wrapAll($('<div class="col-xs-9"></div>'));
|
||||
$('#content').append($('<div class="col-xs-3"><div widget-area="sidebar"></div></div>'));
|
||||
}
|
||||
|
||||
area = $('#content [widget-area="' + location + '"]');
|
||||
}
|
||||
|
||||
socket.emit('widgets.render', {template: tpl_url + '.tpl', url: url, location: location}, function(err, renderedWidgets) {
|
||||
var html = '';
|
||||
|
||||
|
||||
@@ -109,7 +109,12 @@ adminController.logger.get = function(req, res, next) {
|
||||
adminController.themes.get = function(req, res, next) {
|
||||
async.parallel({
|
||||
areas: function(next) {
|
||||
plugins.fireHook('filter:widgets.getAreas', [], next);
|
||||
var defaultAreas = [
|
||||
{ name: 'Global Sidebar', template: 'global', location: 'sidebar' },
|
||||
{ name: 'Global Footer', template: 'global', location: 'footer' },
|
||||
];
|
||||
|
||||
plugins.fireHook('filter:widgets.getAreas', defaultAreas, next);
|
||||
},
|
||||
widgets: function(next) {
|
||||
plugins.fireHook('filter:widgets.getWidgets', [], next);
|
||||
|
||||
@@ -18,7 +18,16 @@ var async = require('async'),
|
||||
|
||||
var rendered = [];
|
||||
|
||||
Widgets.getArea(area.template, area.location, function(err, widgets) {
|
||||
async.parallel({
|
||||
global: function(next) {
|
||||
Widgets.getArea('global', area.location, next);
|
||||
},
|
||||
local: function(next) {
|
||||
Widgets.getArea(area.template, area.location, next);
|
||||
}
|
||||
}, function(err, data) {
|
||||
var widgets = data.global.concat(data.local);
|
||||
|
||||
async.eachSeries(widgets, function(widget, next) {
|
||||
plugins.fireHook('filter:widget.render:' + widget.widget, {
|
||||
uid: uid,
|
||||
|
||||
Reference in New Issue
Block a user