diff --git a/.gitmodules b/.gitmodules index 6b45069..a1aaa3f 100755 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "modules/qmining/qmining-page"] path = modules/qmining/qmining-page url = git@gitlab.com:MrFry/qmining-page.git +[submodule "modules/dataEditor/qmining-data-editor"] + path = modules/dataEditor/qmining-data-editor + url = git@gitlab.com:MrFry/qmining-data-editor.git diff --git a/make.sh b/make.sh index cb012d0..96baded 100755 --- a/make.sh +++ b/make.sh @@ -13,6 +13,13 @@ npm run export popd ln -sf "$PWD/modules/qmining/qmining-page/out" "$PWD/modules/qmining/public" +echo "Making data editor page" +pushd modules/dataEditor/qmining-data-editor/ +npm install +npm run export +popd +ln -sf "$PWD/modules/dataEditor/qmining-data-editor/out" "$PWD/modules/dataEditor/public" + echo "mkdir-ing/touching :3" # TODO: make server create these itself diff --git a/modules.json b/modules.json index fc738c4..55e02e9 100644 --- a/modules.json +++ b/modules.json @@ -1,4 +1,10 @@ { + "dataEditor": { + "path": "./modules/dataEditor/dataEditor.js", + "name": "dataeditor", + "urls": [ "dataeditor.frylabs.net" ], + "isNextJs": true + }, "qmining": { "path": "./modules/qmining/qmining.js", "name": "qmining", diff --git a/modules/dataEditor/dataEditor.js b/modules/dataEditor/dataEditor.js new file mode 100644 index 0000000..a3adc7a --- /dev/null +++ b/modules/dataEditor/dataEditor.js @@ -0,0 +1,88 @@ +/* ---------------------------------------------------------------------------- + + Question Server + GitLab: + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + ------------------------------------------------------------------------- */ + +const express = require('express') +const bodyParser = require('body-parser') +const busboy = require('connect-busboy') +const app = express() + +const utils = require('../../utils/utils.js') +const logger = require('../../utils/logger.js') + +app.set('view engine', 'ejs') +app.set('views', [ + './modules/dataEditor/views', + './sharedViews' +]) +app.use(express.static('modules/dataEditor/public')) +app.use(express.static('public')) +app.use(busboy({ + limits: { + fileSize: 10000 * 1024 * 1024 + } +})) +app.use(bodyParser.json()) +app.use(bodyParser.urlencoded({ + limit: '5mb', + extended: true +})) +app.use(bodyParser.json({ + limit: '5mb' +})) + +// -------------------------------------------------------------- + +function AddHtmlRoutes (files) { + const routes = files.reduce((acc, f) => { + if (f.includes('html')) { + acc.push(f.split('.')[0]) + return acc + } + return acc + }, []) + + routes.forEach((route) => { + logger.DebugLog(`Added route /${route}`, 'DataEditor routes', 1) + app.get(`/${route}`, function (req, res) { + logger.LogReq(req) + res.redirect(`${route}.html`) + }) + }) +} +AddHtmlRoutes(utils.ReadDir('modules/dataEditor/public')) + +// -------------------------------------------------------------- + +app.get('/', function (req, res) { + res.end('hai') + logger.LogReq(req) +}) + +app.get('*', function (req, res) { + res.status(404).render('404') +}) + +app.post('*', function (req, res) { + res.status(404).render('404') +}) + +exports.app = app + +logger.Log('DataEditor module started', logger.GetColor('yellow')) diff --git a/modules/dataEditor/qmining-data-editor b/modules/dataEditor/qmining-data-editor new file mode 160000 index 0000000..9e92b5d --- /dev/null +++ b/modules/dataEditor/qmining-data-editor @@ -0,0 +1 @@ +Subproject commit 9e92b5d5874ab41989f2032dc1760a5cda8adbb5