-
Notifications
You must be signed in to change notification settings - Fork 2.8k
/
widgets.js
53 lines (45 loc) · 2.13 KB
/
widgets.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'use strict';
module.exports.render = function (template) {
if (template.match(/^admin/)) {
return;
}
const locations = Object.keys(ajaxify.data.widgets);
locations.forEach(function (location) {
let area = $('#content [widget-area="' + location + '"],#content [data-widget-area="' + location + '"]').eq(0);
const widgetsAtLocation = ajaxify.data.widgets[location] || [];
if (area.length || !widgetsAtLocation.length) {
return;
}
let html = '';
widgetsAtLocation.forEach(function (widget) {
html += widget.html;
});
if (!html) {
return;
}
if (location === 'footer' && !$('#content [widget-area="footer"],#content [data-widget-area="footer"]').length) {
$('#content').append($('<div data-widget-area="footer"></div>'));
} else if (location === 'sidebar' && !$('#content [widget-area="sidebar"],#content [data-widget-area="sidebar"]').length) {
if ($('[component="account/cover"]').length) {
$('[component="account/cover"]').nextAll().wrapAll($('<div class="row"><div class="col-lg-9 col-12"></div><div data-widget-area="sidebar" class="col-lg-3 col-12"></div></div></div>'));
} else if ($('[component="groups/cover"]').length) {
$('[component="groups/cover"]').nextAll().wrapAll($('<div class="row"><div class="col-lg-9 col-12"></div><div data-widget-area="sidebar" class="col-lg-3 col-12"></div></div></div>'));
} else {
$('#content > *').wrapAll($('<div class="row"><div class="col-lg-9 col-12"></div><div data-widget-area="sidebar" class="col-lg-3 col-12"></div></div></div>'));
}
} else if (location === 'header' && !$('#content [widget-area="header"],#content [data-widget-area="header"]').length) {
$('#content').prepend($('<div class="row"><div data-widget-area="header" class="col-12"></div></div>'));
}
area = $('#content [widget-area="' + location + '"],#content [data-widget-area="' + location + '"]').eq(0);
if (html && area.length) {
area.html(html);
area.find('img:not(.not-responsive)').addClass('img-fluid');
}
if (widgetsAtLocation.length) {
area.removeClass('hidden');
}
});
require(['hooks'], function (hooks) {
hooks.fire('action:widgets.loaded', {});
});
};