diff --git a/src/server/admin/api/getHandler.js b/src/server/admin/api/getHandler.js index f8d5262..3211802 100644 --- a/src/server/admin/api/getHandler.js +++ b/src/server/admin/api/getHandler.js @@ -10,12 +10,12 @@ const db = require( '../../backend/db/db.js' ); const pm = require( '../../backend/plugins/manager.js' ); const spm = require( '../startPageManager.js' ); -const startPageManager = new spm(); class GETHandler { constructor ( settings ) { this.pluginManager = new pm( settings ); this.settings = settings; + this.startPageManager = new spm( settings ); } handleCall ( call, query ) { @@ -115,9 +115,17 @@ class GETHandler { } else if ( call === 'getAllPlugins' ) { resolve( this.pluginManager.getPlugins() ); } else if ( call === 'getStartPageSettings' ) { - resolve( startPageManager.loadStartPagePreferences( query.name ) ); + resolve( this.startPageManager.loadStartPagePreferences( query.name ) ); } else if ( call === 'getAllStartPages' ) { - resolve( startPageManager.findAllStartPageTemplates() ); + resolve( this.startPageManager.findAllStartPageTemplates() ); + } else if ( call === 'buildStartPage' ) { + ( async() => { + if ( await this.startPageManager.renderStartPage( query.page ) ) { + resolve( 'ok' ); + } else { + reject( { 'code': 412, 'error': 'Missing entries' } ); + } + } )(); } else { reject( { 'code': 404, 'error': 'Route not found' } ); } diff --git a/src/server/admin/api/postHandler.js b/src/server/admin/api/postHandler.js index 9857373..99bb3cc 100644 --- a/src/server/admin/api/postHandler.js +++ b/src/server/admin/api/postHandler.js @@ -12,6 +12,8 @@ const pwdmanager = require( '../pwdmanager.js' ); const fs = require( 'fs' ); const path = require( 'path' ); const pm = require( '../../backend/plugins/manager.js' ); +const spm = require( '../startPageManager.js' ); +const startPageManager = new spm(); const letters = [ ',', '{' ]; @@ -178,6 +180,9 @@ class POSTHandler { } ).catch( err => { reject( { 'code': 500, 'message': err } ); } ); + } else if ( call === 'savePageSettings' ) { + startPageManager.saveStartPagePreferences( data.page, data.preferences ); + resolve( 'ok' ); } else { reject( { 'code': 404, 'error': 'Route not found' } ); } diff --git a/src/server/admin/startPageManager.js b/src/server/admin/startPageManager.js index 802548d..b6f4d28 100644 --- a/src/server/admin/startPageManager.js +++ b/src/server/admin/startPageManager.js @@ -18,7 +18,11 @@ class StartPageManager { } saveStartPagePreferences( startPageName, preferences ) { - fs.writeFileSync( path.join( __dirname + '/../ui/home/templates/' + startPageName + '/startPage.config.html' ), JSON.stringify( 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 ) { @@ -43,14 +47,19 @@ class StartPageManager { async renderStartPage( startPageName ) { this.setActiveStartPage( startPageName ); + let self = this; const app = createSSRApp( { data() { - return this.loadStartPagePreferences( startPageName ); + 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; } } diff --git a/src/server/config/settings.config.json b/src/server/config/settings.config.json index f03ff5c..55e24b6 100644 --- a/src/server/config/settings.config.json +++ b/src/server/config/settings.config.json @@ -1,17 +1 @@ -{ - "init":true, - "twoFA":"enforce", - "setupKey":"hello world", - "twoFAMode":"enhanced", - "db":"json", - "payments":"stripe", - "name":"libreevent", - "yourDomain":"http://localhost:8080", - "mailSender":"libreevent ", - "maxTickets":10, - "currency":"CHF", - "gcInterval":300, - "ticketTimeout":900, - "startPage":"default", - "version":"1.0.0" -} \ No newline at end of file +{"init":true,"twoFA":"enforce","setupKey":"hello world","twoFAMode":"enhanced","db":"json","payments":"stripe","name":"libreevent","yourDomain":"http://localhost:8080","mailSender":"libreevent ","maxTickets":10,"currency":"CHF","gcInterval":300,"ticketTimeout":900,"startPage":"default","version":"1.0.0"} \ No newline at end of file diff --git a/src/server/ui/home/index.html b/src/server/ui/home/index.html new file mode 100644 index 0000000..e2b8af5 --- /dev/null +++ b/src/server/ui/home/index.html @@ -0,0 +1,25 @@ + + + + + + + + + + + libreevent + + + + +

Welcome to libreevent!

+

No start page has been configured yet! Please configure one either by using the configurator in the settings or by uploading your own HTML page to the correct folder as detailed here

+ + \ No newline at end of file diff --git a/src/server/ui/home/templates/default/index.html b/src/server/ui/home/templates/default/index.html index 66181ec..c4c4293 100644 --- a/src/server/ui/home/templates/default/index.html +++ b/src/server/ui/home/templates/default/index.html @@ -20,6 +20,6 @@

Welcome to {{ pageName }}!

-

{{ description }}

+

{{ data.description }}

\ No newline at end of file diff --git a/src/server/ui/home/templates/default/startPage.config.json b/src/server/ui/home/templates/default/startPage.config.json index 6f861d4..a23d7f1 100644 --- a/src/server/ui/home/templates/default/startPage.config.json +++ b/src/server/ui/home/templates/default/startPage.config.json @@ -1,5 +1 @@ -{ - "subtitle": "this is a test", - "description": "this is a test description", - "banner": "homeBanner.jpg" -} \ No newline at end of file +{"subtitle":"this is a test","description":"this is a test description"} \ No newline at end of file diff --git a/src/server/ui/home/templates/default/startPage.json b/src/server/ui/home/templates/default/startPage.json index 08b5c50..3f48614 100644 --- a/src/server/ui/home/templates/default/startPage.json +++ b/src/server/ui/home/templates/default/startPage.json @@ -10,8 +10,8 @@ "type": "textarea", "display": "Description", "textarea-settings": { - "resize-y": true, - "resize-x": false, + "cols": 50, + "rows": 5, "max-length": 0, "min-length": 100 }, diff --git a/src/server/ui/home/templates/default/supportFiles copy/style.css b/src/server/ui/home/templates/default/supportFiles copy/style.css new file mode 100644 index 0000000..e2549c4 --- /dev/null +++ b/src/server/ui/home/templates/default/supportFiles copy/style.css @@ -0,0 +1,12 @@ +/* +* libreevent - style.css +* +* Created by Janis Hutz 08/29/2023, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +.logo { + height: 50vh; +} \ No newline at end of file diff --git a/src/server/ui/home/templates/default/supportFiles/index.html b/src/server/ui/home/templates/default/supportFiles/index.html new file mode 100644 index 0000000..c4c4293 --- /dev/null +++ b/src/server/ui/home/templates/default/supportFiles/index.html @@ -0,0 +1,25 @@ + + + + + + + + + + + {{ pageName }} :: Home + + + + +

Welcome to {{ pageName }}!

+

{{ data.description }}

+ + \ No newline at end of file diff --git a/src/server/ui/home/templates/default/supportFiles/startPage.config.json b/src/server/ui/home/templates/default/supportFiles/startPage.config.json new file mode 100644 index 0000000..a23d7f1 --- /dev/null +++ b/src/server/ui/home/templates/default/supportFiles/startPage.config.json @@ -0,0 +1 @@ +{"subtitle":"this is a test","description":"this is a test description"} \ No newline at end of file diff --git a/src/server/ui/home/templates/default/supportFiles/startPage.json b/src/server/ui/home/templates/default/supportFiles/startPage.json new file mode 100644 index 0000000..3f48614 --- /dev/null +++ b/src/server/ui/home/templates/default/supportFiles/startPage.json @@ -0,0 +1,31 @@ +{ + "subtitle": { + "id": "subtitle", + "type": "text", + "display": "Subtitle", + "can-be-empty": false + }, + "description": { + "id": "description", + "type": "textarea", + "display": "Description", + "textarea-settings": { + "cols": 50, + "rows": 5, + "max-length": 0, + "min-length": 100 + }, + "can-be-empty": false + }, + "banner": { + "id": "banner", + "type": "image", + "display": "Banner", + "image-settings": { + "upload-name": "homeBanner", + "accept-filetype": "image/jpeg", + "height": 200, + "width": 350 + } + } +} \ No newline at end of file diff --git a/src/server/ui/home/templates/modern/index.html b/src/server/ui/home/templates/modern/index.html index 66181ec..c4c4293 100644 --- a/src/server/ui/home/templates/modern/index.html +++ b/src/server/ui/home/templates/modern/index.html @@ -20,6 +20,6 @@

Welcome to {{ pageName }}!

-

{{ description }}

+

{{ data.description }}

\ No newline at end of file diff --git a/src/server/ui/home/templates/modern/startPage.config.json b/src/server/ui/home/templates/modern/startPage.config.json new file mode 100644 index 0000000..a23d7f1 --- /dev/null +++ b/src/server/ui/home/templates/modern/startPage.config.json @@ -0,0 +1 @@ +{"subtitle":"this is a test","description":"this is a test description"} \ No newline at end of file diff --git a/src/server/ui/home/templates/modern/startPage.json b/src/server/ui/home/templates/modern/startPage.json new file mode 100644 index 0000000..3f48614 --- /dev/null +++ b/src/server/ui/home/templates/modern/startPage.json @@ -0,0 +1,31 @@ +{ + "subtitle": { + "id": "subtitle", + "type": "text", + "display": "Subtitle", + "can-be-empty": false + }, + "description": { + "id": "description", + "type": "textarea", + "display": "Description", + "textarea-settings": { + "cols": 50, + "rows": 5, + "max-length": 0, + "min-length": 100 + }, + "can-be-empty": false + }, + "banner": { + "id": "banner", + "type": "image", + "display": "Banner", + "image-settings": { + "upload-name": "homeBanner", + "accept-filetype": "image/jpeg", + "height": 200, + "width": 350 + } + } +} \ No newline at end of file diff --git a/src/server/ui/home/templates/modern/supportFiles/index.html b/src/server/ui/home/templates/modern/supportFiles/index.html new file mode 100644 index 0000000..c4c4293 --- /dev/null +++ b/src/server/ui/home/templates/modern/supportFiles/index.html @@ -0,0 +1,25 @@ + + + + + + + + + + + {{ pageName }} :: Home + + + + +

Welcome to {{ pageName }}!

+

{{ data.description }}

+ + \ No newline at end of file diff --git a/src/server/ui/home/templates/modern/supportFiles/startPage.config.json b/src/server/ui/home/templates/modern/supportFiles/startPage.config.json new file mode 100644 index 0000000..a23d7f1 --- /dev/null +++ b/src/server/ui/home/templates/modern/supportFiles/startPage.config.json @@ -0,0 +1 @@ +{"subtitle":"this is a test","description":"this is a test description"} \ No newline at end of file diff --git a/src/server/ui/home/templates/modern/supportFiles/startPage.json b/src/server/ui/home/templates/modern/supportFiles/startPage.json new file mode 100644 index 0000000..3f48614 --- /dev/null +++ b/src/server/ui/home/templates/modern/supportFiles/startPage.json @@ -0,0 +1,31 @@ +{ + "subtitle": { + "id": "subtitle", + "type": "text", + "display": "Subtitle", + "can-be-empty": false + }, + "description": { + "id": "description", + "type": "textarea", + "display": "Description", + "textarea-settings": { + "cols": 50, + "rows": 5, + "max-length": 0, + "min-length": 100 + }, + "can-be-empty": false + }, + "banner": { + "id": "banner", + "type": "image", + "display": "Banner", + "image-settings": { + "upload-name": "homeBanner", + "accept-filetype": "image/jpeg", + "height": 200, + "width": 350 + } + } +} \ No newline at end of file diff --git a/src/server/ui/home/templates/modern/supportFiles/style.css b/src/server/ui/home/templates/modern/supportFiles/style.css new file mode 100644 index 0000000..e2549c4 --- /dev/null +++ b/src/server/ui/home/templates/modern/supportFiles/style.css @@ -0,0 +1,12 @@ +/* +* libreevent - style.css +* +* Created by Janis Hutz 08/29/2023, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +.logo { + height: 50vh; +} \ No newline at end of file diff --git a/src/webapp/main/src/views/admin/PagesView.vue b/src/webapp/main/src/views/admin/PagesView.vue index 5f30f9a..124d65c 100644 --- a/src/webapp/main/src/views/admin/PagesView.vue +++ b/src/webapp/main/src/views/admin/PagesView.vue @@ -11,19 +11,53 @@

Pages

Here you can modify your landing page (the start page of libreǝvent)

+

Select the template (see all here)

+

Change the settings of the start page here

+
- {{ setting }} +
+

{{ setting.display }}

+ +
+
+

{{ setting.display }}

+ +
+
+

{{ setting.display }}

+ + +
+ + + +