mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 13:24:24 +00:00
67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
/*
|
|
* libreevent - startPageManager.js
|
|
*
|
|
* Created by Janis Hutz 09/04/2023, Licensed under the GPL V3 License
|
|
* https://janishutz.com, development@janishutz.com
|
|
*
|
|
*
|
|
*/
|
|
|
|
let createSSRApp = require( 'vue' ).createSSRApp;
|
|
let renderToString = require( 'vue/server-renderer' ).renderToString;
|
|
const fs = require( 'fs' );
|
|
const path = require( 'path' );
|
|
const db = require( '../backend/db/db.js' );
|
|
|
|
class StartPageManager {
|
|
constructor ( settings ) {
|
|
this.settings = settings;
|
|
}
|
|
|
|
saveStartPagePreferences( startPageName, preferences ) {
|
|
let conf = {};
|
|
for ( let setting in preferences ) {
|
|
conf[ setting ] = preferences[ setting ][ 'value' ];
|
|
}
|
|
fs.writeFileSync( path.join( __dirname + '/../ui/home/templates/' + startPageName + '/startPage.config.json' ), JSON.stringify( conf ) );
|
|
}
|
|
|
|
loadStartPagePreferences( startPageName ) {
|
|
let conf, options;
|
|
try {
|
|
options = JSON.parse( fs.readFileSync( path.join( __dirname + '/../ui/home/templates/' + startPageName + '/startPage.json' ) ) );
|
|
conf = JSON.parse( fs.readFileSync( path.join( __dirname + '/../ui/home/templates/' + startPageName + '/startPage.config.json' ) ) );
|
|
return { 'conf': conf, 'options': options };
|
|
} catch ( err ) {
|
|
return {};
|
|
}
|
|
}
|
|
|
|
findAllStartPageTemplates() {
|
|
return fs.readdirSync( path.join( __dirname + '/../ui/home/templates/' ) );
|
|
}
|
|
|
|
setActiveStartPage( startPageName ) {
|
|
this.settings[ 'startPage' ] = startPageName;
|
|
db.saveSettings( this.settings );
|
|
}
|
|
|
|
async renderStartPage( startPageName ) {
|
|
this.setActiveStartPage( startPageName );
|
|
let self = this;
|
|
const app = createSSRApp( {
|
|
data() {
|
|
return {
|
|
'data': self.loadStartPagePreferences( startPageName ),
|
|
'pageName': self.settings.pageName,
|
|
};
|
|
},
|
|
template: '' + fs.readFileSync( path.join( __dirname + '/../ui/home/templates/' + startPageName + '/index.html' ) )
|
|
} );
|
|
|
|
fs.writeFileSync( path.join( __dirname + '/../ui/home/active/en/index.html' ), await renderToString( app ) );
|
|
return true;
|
|
}
|
|
}
|
|
|
|
module.exports = StartPageManager; |