mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-08 06:55: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) {
|
ajaxify.widgets.render = function(tpl_url, url, callback) {
|
||||||
var widgetLocations = [], numLocations;
|
var widgetLocations = ['sidebar', 'footer'], numLocations;
|
||||||
|
|
||||||
$('#content [widget-area]').each(function() {
|
$('#content [widget-area]').each(function() {
|
||||||
widgetLocations.push($(this).attr('widget-area'));
|
widgetLocations.push($(this).attr('widget-area'));
|
||||||
@@ -28,6 +28,17 @@
|
|||||||
function renderWidgets(location) {
|
function renderWidgets(location) {
|
||||||
var area = $('#content [widget-area="' + 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) {
|
socket.emit('widgets.render', {template: tpl_url + '.tpl', url: url, location: location}, function(err, renderedWidgets) {
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,12 @@ adminController.logger.get = function(req, res, next) {
|
|||||||
adminController.themes.get = function(req, res, next) {
|
adminController.themes.get = function(req, res, next) {
|
||||||
async.parallel({
|
async.parallel({
|
||||||
areas: function(next) {
|
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) {
|
widgets: function(next) {
|
||||||
plugins.fireHook('filter:widgets.getWidgets', [], next);
|
plugins.fireHook('filter:widgets.getWidgets', [], next);
|
||||||
|
|||||||
@@ -18,7 +18,16 @@ var async = require('async'),
|
|||||||
|
|
||||||
var rendered = [];
|
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) {
|
async.eachSeries(widgets, function(widget, next) {
|
||||||
plugins.fireHook('filter:widget.render:' + widget.widget, {
|
plugins.fireHook('filter:widget.render:' + widget.widget, {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
|
|||||||
Reference in New Issue
Block a user