|
|
|
import Settings, { SETTINGS_FILE } from '../../data/Settings';
|
|
|
|
const express = require('express');
|
|
|
|
const router = express.Router();
|
|
|
|
const FileHound = require('filehound');
|
|
|
|
const fs = require('fs-extra');
|
|
|
|
const settings = new Settings();
|
|
|
|
const moment = require('moment');
|
|
|
|
var config = [];
|
|
|
|
//--------------------------
|
|
|
|
// SETTINGS
|
|
|
|
//--------------------------
|
|
|
|
router.get('/', function (req, res) {
|
|
|
|
settings
|
|
|
|
.load(SETTINGS_FILE)
|
|
|
|
.then(obj => {
|
|
|
|
config = obj;
|
|
|
|
})
|
|
|
|
.catch(err => {
|
|
|
|
res.render('error', { error: err });
|
|
|
|
});
|
|
|
|
loadThemes()
|
|
|
|
.then(themes => {
|
|
|
|
if (req.session.user) {
|
|
|
|
let memberInfo = [];
|
|
|
|
let user = req.session.user;
|
|
|
|
memberInfo.push({
|
|
|
|
handle: user.handle,
|
|
|
|
email: user.email,
|
|
|
|
avi: user.avi
|
|
|
|
});
|
|
|
|
themes.sort(function (a, b) {
|
|
|
|
var textA = a.theme.name.toUpperCase();
|
|
|
|
var textB = b.theme.name.toUpperCase();
|
|
|
|
return textA < textB ? -1 : textA > textB ? 1 : 0;
|
|
|
|
});
|
|
|
|
|
|
|
|
res.render('settings', {
|
|
|
|
title: 'Dashboard | Settings',
|
|
|
|
welcome: 'Your Settings',
|
|
|
|
status: true,
|
|
|
|
themes: themes,
|
|
|
|
settings: config,
|
|
|
|
last_backup: moment(config.global.last_backup).fromNow(),
|
|
|
|
member: memberInfo[0]
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
res.redirect('/@/dashboard');
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch(err => {
|
|
|
|
res.render('error', { error: err });
|
|
|
|
});
|
|
|
|
});
|
|
|
|
module.exports = router;
|
|
|
|
|
|
|
|
function loadThemes() {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
settings
|
|
|
|
.load(SETTINGS_FILE)
|
|
|
|
.then(settings => {
|
|
|
|
FileHound.create()
|
|
|
|
.paths('content/themes')
|
|
|
|
.ext('json')
|
|
|
|
.find()
|
|
|
|
.then(files => {
|
|
|
|
let themes = [];
|
|
|
|
for (let index = 0; index < files.length; index++) {
|
|
|
|
fs.readJSON(files[index], (err, theme) => {
|
|
|
|
if (theme.name == settings.global.theme) {
|
|
|
|
themes.push({
|
|
|
|
theme: theme,
|
|
|
|
current: 'true'
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
themes.push({
|
|
|
|
theme: theme,
|
|
|
|
current: 'false'
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
setTimeout(() => {
|
|
|
|
resolve(themes);
|
|
|
|
}, 200);
|
|
|
|
})
|
|
|
|
.catch(err => {
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
})
|
|
|
|
.catch(err => {
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|