refactored admin/themes.js
parent
f98e3aaf64
commit
b468404506
@ -0,0 +1,16 @@
|
||||
"use strict";
|
||||
/* global define, app, socket */
|
||||
|
||||
define('forum/admin/appearance/customise', ['forum/admin/settings'], function(Settings) {
|
||||
var Customise = {};
|
||||
|
||||
Customise.init = function() {
|
||||
var customCSSEl = $('textarea[data-field]')[0];
|
||||
tabIndent.config.tab = ' ';
|
||||
tabIndent.render(customCSSEl);
|
||||
|
||||
Settings.prepare();
|
||||
};
|
||||
|
||||
return Customise;
|
||||
});
|
@ -0,0 +1,73 @@
|
||||
"use strict";
|
||||
/* global define, app, socket */
|
||||
|
||||
define('forum/admin/appearance/skins', function() {
|
||||
var Skins = {};
|
||||
|
||||
Skins.init = function() {
|
||||
var scriptEl = $('<script />');
|
||||
scriptEl.attr('src', '//bootswatch.aws.af.cm/3/?callback=bootswatchListener');
|
||||
$('body').append(scriptEl);
|
||||
|
||||
$('#bootstrap_themes').on('click', function(e){
|
||||
var target = $(e.target),
|
||||
action = target.attr('data-action');
|
||||
|
||||
if (action && action === 'use') {
|
||||
var parentEl = target.parents('li'),
|
||||
themeType = parentEl.attr('data-type'),
|
||||
cssSrc = parentEl.attr('data-css'),
|
||||
themeId = parentEl.attr('data-theme');
|
||||
|
||||
socket.emit('admin.themes.set', {
|
||||
type: themeType,
|
||||
id: themeId,
|
||||
src: cssSrc
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
highlightSelectedTheme(themeId);
|
||||
|
||||
app.alert({
|
||||
alert_id: 'admin:theme',
|
||||
type: 'info',
|
||||
title: 'Theme Changed',
|
||||
message: 'Please restart your NodeBB to fully activate this theme',
|
||||
timeout: 5000,
|
||||
clickfn: function() {
|
||||
socket.emit('admin.restart');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Skins.render = function(bootswatch) {
|
||||
var themeContainer = $('#bootstrap_themes');
|
||||
|
||||
templates.parse('partials/admin/theme_list', {
|
||||
themes: bootswatch.themes.map(function(theme) {
|
||||
return {
|
||||
type: 'bootswatch',
|
||||
id: theme.name,
|
||||
name: theme.name,
|
||||
description: theme.description,
|
||||
screenshot_url: theme.thumbnail,
|
||||
url: theme.preview,
|
||||
css: theme.cssCdn
|
||||
};
|
||||
})
|
||||
}, function(html) {
|
||||
themeContainer.html(html);
|
||||
});
|
||||
};
|
||||
|
||||
function highlightSelectedTheme(themeId) {
|
||||
$('.themes li[data-theme]').removeClass('btn-warning');
|
||||
$('.themes li[data-theme="' + themeId + '"]').addClass('btn-warning');
|
||||
}
|
||||
|
||||
return Skins;
|
||||
});
|
@ -0,0 +1,93 @@
|
||||
"use strict";
|
||||
/* global define, app, socket */
|
||||
|
||||
define('forum/admin/appearance/themes', function() {
|
||||
var Themes = {};
|
||||
|
||||
Themes.init = function() {
|
||||
$('#installed_themes').on('click', function(e){
|
||||
var target = $(e.target),
|
||||
action = target.attr('data-action');
|
||||
|
||||
if (action && action === 'use') {
|
||||
var parentEl = target.parents('li'),
|
||||
themeType = parentEl.attr('data-type'),
|
||||
cssSrc = parentEl.attr('data-css'),
|
||||
themeId = parentEl.attr('data-theme');
|
||||
|
||||
socket.emit('admin.themes.set', {
|
||||
type: themeType,
|
||||
id: themeId,
|
||||
src: cssSrc
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
highlightSelectedTheme(themeId);
|
||||
|
||||
app.alert({
|
||||
alert_id: 'admin:theme',
|
||||
type: 'info',
|
||||
title: 'Theme Changed',
|
||||
message: 'Please restart your NodeBB to fully activate this theme',
|
||||
timeout: 5000,
|
||||
clickfn: function() {
|
||||
socket.emit('admin.restart');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('#revert_theme').on('click', function() {
|
||||
bootbox.confirm('Are you sure you wish to remove the custom theme and restore the NodeBB default theme?', function(confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('admin.themes.set', {
|
||||
type: 'local',
|
||||
id: 'nodebb-theme-vanilla'
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
highlightSelectedTheme('nodebb-theme-vanilla');
|
||||
app.alert({
|
||||
alert_id: 'admin:theme',
|
||||
type: 'success',
|
||||
title: 'Theme Changed',
|
||||
message: 'You have successfully reverted your NodeBB back to it\'s default theme.',
|
||||
timeout: 3500
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Installed Themes
|
||||
socket.emit('admin.themes.getInstalled', function(err, themes) {
|
||||
if(err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
|
||||
var instListEl = $('#installed_themes');
|
||||
|
||||
if (!themes.length) {
|
||||
instListEl.append($('<li/ >').addClass('no-themes').html('No installed themes found'));
|
||||
return;
|
||||
} else {
|
||||
templates.parse('partials/admin/theme_list', {
|
||||
themes: themes
|
||||
}, function(html) {
|
||||
instListEl.html(html);
|
||||
highlightSelectedTheme(config['theme:id']);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
function highlightSelectedTheme(themeId) {
|
||||
$('.themes li[data-theme]').removeClass('btn-warning');
|
||||
$('.themes li[data-theme="' + themeId + '"]').addClass('btn-warning');
|
||||
}
|
||||
|
||||
return Themes;
|
||||
});
|
Loading…
Reference in New Issue