forked from projects/fipamo
refactored settings methodology, added theme settings files, initiated settings page
This commit is contained in:
parent
3845ca9552
commit
069854d041
17 changed files with 186 additions and 568 deletions
|
@ -1,4 +1,3 @@
|
|||
var express = require('express');
|
||||
import DateUtils from '../../tools/utilities/DateUtils';
|
||||
import StringUtils from '../../tools/utilities/StringUtils';
|
||||
import * as DataEvent from '../../tools/events/DataEvent';
|
||||
|
@ -17,6 +16,7 @@ import RightsManager,
|
|||
OBJECT_POST
|
||||
}
|
||||
from '../../tools/utilities/RightsManager';
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const multer = require('multer');
|
||||
const md = require('markdown-it')('commonmark');
|
||||
|
|
|
@ -44,6 +44,7 @@ app.use(flash());
|
|||
var front = require('./routes/front/index')(session);
|
||||
var back = require('./routes/back/index');
|
||||
var postDashboard = require('./routes/back/dash_posts');
|
||||
var settingsDashboard = require('./routes/back/dash_settings');
|
||||
//api
|
||||
var postLibrary = require('./api/content/posts');
|
||||
var mailer = require('./api/content/mailer');
|
||||
|
@ -54,6 +55,7 @@ app.use('/api/post', postLibrary);
|
|||
app.use('/', front);
|
||||
app.use('/@/dashboard', back);
|
||||
app.use('/@/dashboard/posts', postDashboard);
|
||||
app.use('/@/dashboard/settings', settingsDashboard);
|
||||
//app.use('/mailer', mailer);
|
||||
// catch 404 and forward to error handler
|
||||
app.use(function(req, res, next)
|
||||
|
|
50
brain/routes/back/dash_settings.js
Normal file
50
brain/routes/back/dash_settings.js
Normal file
|
@ -0,0 +1,50 @@
|
|||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const FileHound = require('filehound');
|
||||
const Models = require('../../models');
|
||||
const fs = require("fs-extra");
|
||||
var themes = [];
|
||||
var settings = [];
|
||||
//--------------------------
|
||||
// SETTINGS
|
||||
//--------------------------
|
||||
router.get('/', function(req, res)
|
||||
{
|
||||
fs.readJson('site-settings.json').then(obj =>
|
||||
{
|
||||
settings = obj;
|
||||
}).catch(err =>
|
||||
{
|
||||
//console.error(err)
|
||||
})
|
||||
FileHound.create().paths('themes').ext('json').find().then(files =>
|
||||
{
|
||||
for (let index = 0; index < files.length; index++)
|
||||
{
|
||||
fs.readJson(files[index]).then(theme =>
|
||||
{
|
||||
(theme.name == settings.theme) ? themes.push({theme: theme, current:true}) : themes.push({theme: theme, current:false})
|
||||
}).catch(err =>
|
||||
{
|
||||
//console.error(err)
|
||||
})
|
||||
}
|
||||
});
|
||||
if (req.session.user)
|
||||
{
|
||||
let memberInfo = [];
|
||||
memberInfo.push({handle:req.session.user.handle, email:req.session.user.email, avi:req.session.user.avatar});
|
||||
res.render('dash/settings',
|
||||
{
|
||||
title: 'Dashboard | Settings',
|
||||
themes: themes,
|
||||
settings: settings,
|
||||
member: memberInfo[0]
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
res.redirect('/@/dashboard');
|
||||
}
|
||||
});
|
||||
module.exports = router;
|
|
@ -9,64 +9,40 @@ router.get('/', function(req, res)
|
|||
{
|
||||
var loggedIn = false
|
||||
if (req.session.user) loggedIn = true;
|
||||
Models.FreshPost.sync().then(f =>
|
||||
Models.FreshPost.findAll(
|
||||
{
|
||||
Models.FreshPost.findAll(
|
||||
order: [
|
||||
['id', 'DESC']
|
||||
],
|
||||
limit: 5
|
||||
}).then(function(posts)
|
||||
{
|
||||
let filtered = [];
|
||||
for (let index = 0; index < posts.length; index++)
|
||||
{
|
||||
order: [
|
||||
['id', 'DESC']
|
||||
],
|
||||
limit: 5
|
||||
}).then(function(posts)
|
||||
{
|
||||
let filtered = [];
|
||||
for (let index = 0; index < posts.length; index++)
|
||||
let item = posts[index].post;
|
||||
if (typeof item.deleted == 'undefined' || item.deleted == false)
|
||||
{
|
||||
let item = posts[index].post;
|
||||
if (typeof item.deleted == 'undefined' || item.deleted == false)
|
||||
{
|
||||
filtered.push(posts[index])
|
||||
}
|
||||
else
|
||||
{
|
||||
continue
|
||||
}
|
||||
filtered.push(posts[index])
|
||||
}
|
||||
res.render('dash/index',
|
||||
else
|
||||
{
|
||||
title: 'Dashboard',
|
||||
user_status: loggedIn,
|
||||
items: filtered
|
||||
});
|
||||
}).then(function(value)
|
||||
continue
|
||||
}
|
||||
}
|
||||
res.render('dash/index',
|
||||
{
|
||||
//console.log(value);
|
||||
}).catch(function(err)
|
||||
{
|
||||
//next(err);
|
||||
})
|
||||
}).catch(err =>
|
||||
{
|
||||
console.log("ERR: " + err);
|
||||
})
|
||||
});
|
||||
//--------------------------
|
||||
// SETTINGS
|
||||
//--------------------------
|
||||
router.get('/settings/', function(req, res)
|
||||
{
|
||||
if (req.session.user)
|
||||
{
|
||||
res.render('dash/settings',
|
||||
{
|
||||
title: 'Dashboard | Settings',
|
||||
mode: 'admin'
|
||||
title: 'Dashboard',
|
||||
user_status: loggedIn,
|
||||
items: filtered
|
||||
});
|
||||
}
|
||||
else
|
||||
}).then(function(value)
|
||||
{
|
||||
res.redirect('/@/dashboard');
|
||||
}
|
||||
//console.log(value);
|
||||
}).catch(function(err)
|
||||
{
|
||||
//next(err);
|
||||
})
|
||||
});
|
||||
//--------------------------
|
||||
// Login
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
var Models = require('../../models');
|
||||
var config = require('../../../config.json');
|
||||
var config = require('../../../site-settings.json');
|
||||
module.exports = function (session) {
|
||||
//--------------------------
|
||||
// Index
|
||||
|
|
|
@ -1,59 +0,0 @@
|
|||
import TransformEffects from './TransformEffects.jsx';
|
||||
|
||||
class Slideshow{
|
||||
|
||||
//--------------------------
|
||||
// constructor
|
||||
//--------------------------
|
||||
constructor(slides)
|
||||
{
|
||||
this.slides = slides;
|
||||
var timer = null;
|
||||
this.slideIndex = 0;
|
||||
for(let i of slides)
|
||||
{
|
||||
new TransformEffects().rotateY(i, 0, 90, "top right");
|
||||
i.style.opacity = 1;
|
||||
}
|
||||
|
||||
this.start();
|
||||
}
|
||||
|
||||
//--------------------------
|
||||
// methods
|
||||
//--------------------------
|
||||
start()
|
||||
{
|
||||
new TransformEffects().rotateY(this.slides[this.slideIndex], 1, 0, "top right");
|
||||
this.startTimer()
|
||||
}
|
||||
|
||||
startTimer()
|
||||
{
|
||||
var self = this;
|
||||
this.timer = setTimeout(f=>
|
||||
{
|
||||
self.slideTranstion();
|
||||
}, 4000);
|
||||
}
|
||||
|
||||
slideTranstion()
|
||||
{
|
||||
new TransformEffects().rotateY(this.slides[this.slideIndex], 1, 90, "top right");
|
||||
++this.slideIndex;
|
||||
if(this.slideIndex > this.slides.length-1)
|
||||
this.slideIndex = 0;
|
||||
new TransformEffects().rotateY(this.slides[this.slideIndex], 1, 0, "top right");
|
||||
this.startTimer();
|
||||
}
|
||||
|
||||
setDisplayType()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------
|
||||
// eventhandlers
|
||||
//--------------------------
|
||||
}
|
||||
export {Slideshow as default}
|
252
package-lock.json
generated
252
package-lock.json
generated
|
@ -1771,8 +1771,7 @@
|
|||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"base": {
|
||||
"version": "0.11.2",
|
||||
|
@ -1895,19 +1894,10 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"boom": {
|
||||
"version": "2.10.1",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
|
||||
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
|
||||
"requires": {
|
||||
"hoek": "2.x.x"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -2239,8 +2229,7 @@
|
|||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"concat-stream": {
|
||||
"version": "1.6.2",
|
||||
|
@ -2364,14 +2353,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"cryptiles": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
|
||||
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
|
||||
"requires": {
|
||||
"boom": "2.x.x"
|
||||
}
|
||||
},
|
||||
"css-parse": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
|
||||
|
@ -2699,6 +2680,11 @@
|
|||
"brfs": "^1.4.3"
|
||||
}
|
||||
},
|
||||
"err-code": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
|
||||
"integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA="
|
||||
},
|
||||
"es5-ext": {
|
||||
"version": "0.10.46",
|
||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
|
||||
|
@ -3089,11 +3075,34 @@
|
|||
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
||||
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
|
||||
},
|
||||
"file-js": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz",
|
||||
"integrity": "sha1-+rRr94I0bJKUSZ8fDSrQfYOPJdE=",
|
||||
"requires": {
|
||||
"bluebird": "^3.4.7",
|
||||
"minimatch": "^3.0.3",
|
||||
"proper-lockfile": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"file-uri-to-path": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
|
||||
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
|
||||
},
|
||||
"filehound": {
|
||||
"version": "1.16.5",
|
||||
"resolved": "https://registry.npmjs.org/filehound/-/filehound-1.16.5.tgz",
|
||||
"integrity": "sha512-pMGt+Fl/msSDMBU/3/jUtNkBvDKAeRb0eIrhyz3qB/gqFSGqWMrExCGfgTJjtch9YEKYTi1Z/N5Tpuzfj/pkBg==",
|
||||
"requires": {
|
||||
"bluebird": "^3.5.1",
|
||||
"file-js": "0.3.0",
|
||||
"lodash": "^4.17.10",
|
||||
"minimatch": "^3.0.4",
|
||||
"moment": "^2.22.1",
|
||||
"unit-compare": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
|
||||
|
@ -3961,17 +3970,6 @@
|
|||
"integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
|
||||
"dev": true
|
||||
},
|
||||
"hawk": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
|
||||
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
|
||||
"requires": {
|
||||
"boom": "2.x.x",
|
||||
"cryptiles": "2.x.x",
|
||||
"hoek": "2.x.x",
|
||||
"sntp": "1.x.x"
|
||||
}
|
||||
},
|
||||
"he": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
||||
|
@ -3983,11 +3981,6 @@
|
|||
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz",
|
||||
"integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A=="
|
||||
},
|
||||
"hoek": {
|
||||
"version": "2.16.3",
|
||||
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
|
||||
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
|
||||
},
|
||||
"html-encoding-sniffer": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
|
||||
|
@ -4428,14 +4421,6 @@
|
|||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||
},
|
||||
"json-stable-stringify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
|
||||
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
|
||||
"requires": {
|
||||
"jsonify": "~0.0.0"
|
||||
}
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||
|
@ -4455,11 +4440,6 @@
|
|||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"jsonify": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
|
||||
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
|
||||
},
|
||||
"jsprim": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||
|
@ -4804,7 +4784,6 @@
|
|||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
|
@ -5448,6 +5427,17 @@
|
|||
"with-callback": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"proper-lockfile": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "http://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz",
|
||||
"integrity": "sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ=",
|
||||
"requires": {
|
||||
"err-code": "^1.0.0",
|
||||
"extend": "^3.0.0",
|
||||
"graceful-fs": "^4.1.2",
|
||||
"retry": "^0.10.0"
|
||||
}
|
||||
},
|
||||
"proto-list": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
|
||||
|
@ -5861,6 +5851,11 @@
|
|||
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
|
||||
"dev": true
|
||||
},
|
||||
"retry": {
|
||||
"version": "0.10.1",
|
||||
"resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
|
||||
"integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q="
|
||||
},
|
||||
"retry-as-promised": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.3.2.tgz",
|
||||
|
@ -5944,140 +5939,6 @@
|
|||
"integrity": "sha1-io6pbtN0G4WpKgSCQuniBxyePLE=",
|
||||
"dev": true
|
||||
},
|
||||
"scrape-metadata": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/scrape-metadata/-/scrape-metadata-2.0.0.tgz",
|
||||
"integrity": "sha1-fr9sO14F211ZzX6I/G8auTuIL/4=",
|
||||
"requires": {
|
||||
"htmlparser2": "3.9.2",
|
||||
"request": "2.81.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "4.11.8",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
|
||||
"integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
|
||||
"requires": {
|
||||
"co": "^4.6.0",
|
||||
"json-stable-stringify": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"assert-plus": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
|
||||
"integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
|
||||
},
|
||||
"aws-sign2": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
|
||||
"integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
|
||||
"integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.5",
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"har-schema": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
|
||||
"integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
|
||||
},
|
||||
"har-validator": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
|
||||
"integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
|
||||
"requires": {
|
||||
"ajv": "^4.9.1",
|
||||
"har-schema": "^1.0.5"
|
||||
}
|
||||
},
|
||||
"htmlparser2": {
|
||||
"version": "3.9.2",
|
||||
"resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
|
||||
"integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
|
||||
"requires": {
|
||||
"domelementtype": "^1.3.0",
|
||||
"domhandler": "^2.3.0",
|
||||
"domutils": "^1.5.1",
|
||||
"entities": "^1.1.1",
|
||||
"inherits": "^2.0.1",
|
||||
"readable-stream": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"http-signature": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
|
||||
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
|
||||
"requires": {
|
||||
"assert-plus": "^0.2.0",
|
||||
"jsprim": "^1.2.2",
|
||||
"sshpk": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
|
||||
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
|
||||
},
|
||||
"performance-now": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
|
||||
"integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
|
||||
},
|
||||
"punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.4.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
|
||||
"integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
|
||||
},
|
||||
"request": {
|
||||
"version": "2.81.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
|
||||
"integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
|
||||
"requires": {
|
||||
"aws-sign2": "~0.6.0",
|
||||
"aws4": "^1.2.1",
|
||||
"caseless": "~0.12.0",
|
||||
"combined-stream": "~1.0.5",
|
||||
"extend": "~3.0.0",
|
||||
"forever-agent": "~0.6.1",
|
||||
"form-data": "~2.1.1",
|
||||
"har-validator": "~4.2.1",
|
||||
"hawk": "~3.1.3",
|
||||
"http-signature": "~1.1.0",
|
||||
"is-typedarray": "~1.0.0",
|
||||
"isstream": "~0.1.2",
|
||||
"json-stringify-safe": "~5.0.1",
|
||||
"mime-types": "~2.1.7",
|
||||
"oauth-sign": "~0.8.1",
|
||||
"performance-now": "^0.2.0",
|
||||
"qs": "~6.4.0",
|
||||
"safe-buffer": "^5.0.1",
|
||||
"stringstream": "~0.0.4",
|
||||
"tough-cookie": "~2.3.0",
|
||||
"tunnel-agent": "^0.6.0",
|
||||
"uuid": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
|
||||
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
|
||||
"requires": {
|
||||
"punycode": "^1.4.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "http://registry.npmjs.org/semver/-/semver-4.3.2.tgz",
|
||||
|
@ -6463,14 +6324,6 @@
|
|||
"kind-of": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"sntp": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
|
||||
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
|
||||
"requires": {
|
||||
"hoek": "2.x.x"
|
||||
}
|
||||
},
|
||||
"socks": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/socks/-/socks-2.2.1.tgz",
|
||||
|
@ -6657,11 +6510,6 @@
|
|||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"stringstream": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
|
||||
"integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
|
@ -7014,6 +6862,14 @@
|
|||
"integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
|
||||
"dev": true
|
||||
},
|
||||
"unit-compare": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz",
|
||||
"integrity": "sha1-DHRZ8OW/U2N+qHPKPO4Y3i7so4Y=",
|
||||
"requires": {
|
||||
"moment": "^2.14.1"
|
||||
}
|
||||
},
|
||||
"universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
"esm": "^3.0.84",
|
||||
"express": "^4.16.4",
|
||||
"express-session": "^1.15.6",
|
||||
"filehound": "^1.16.5",
|
||||
"fs-extra": "latest",
|
||||
"highlight.js": "^9.13.1",
|
||||
"jsdom": "^12.2.0",
|
||||
|
@ -48,7 +49,6 @@
|
|||
"reframe.js": "^2.2.1",
|
||||
"request": "^2.88.0",
|
||||
"sanitize-html": "^1.19.1",
|
||||
"scrape-metadata": "^2.0.0",
|
||||
"sequelize": "^4.37.6",
|
||||
"sequelize-cli": "^5.3.0",
|
||||
"serve-favicon": "latest",
|
||||
|
|
17
site-settings.json
Normal file
17
site-settings.json
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"url": "http://fipamo.local/",
|
||||
"description":"The most chill blog framework ever.",
|
||||
"theme": "default",
|
||||
"private": false,
|
||||
"email": {
|
||||
"smtp": {
|
||||
"domain":"",
|
||||
"email": "",
|
||||
"password": ""
|
||||
},
|
||||
"mailgun": {
|
||||
"domain": "",
|
||||
"api-key": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1907,175 +1907,6 @@ svg.icons {
|
|||
}
|
||||
/**
|
||||
-------------------------------
|
||||
-- Fipamo
|
||||
-------------------------------
|
||||
**/
|
||||
#bm-content {
|
||||
width: 100%;
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#bm-content #header-two {
|
||||
font: 400 1.5em $bodyType;
|
||||
}
|
||||
#bm-content #bookmark-display {
|
||||
padding: 0;
|
||||
}
|
||||
#bm-content #bookmark-display .bookmark-list .bookmark-entry {
|
||||
background: #1e272f;
|
||||
width: 50%;
|
||||
height: 500px;
|
||||
background-size: cover;
|
||||
overflow: hidden;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
padding: 10px;
|
||||
}
|
||||
#bm-content #bookmark-display .bookmark-list .bookmark-entry .bookmark-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
#bm-content #bookmark-display .bookmark-list .bookmark-entry .bookmark-info label {
|
||||
display: block;
|
||||
font-size: 0.5em;
|
||||
padding: 10px;
|
||||
background: #374857;
|
||||
border-radius: 5px;
|
||||
}
|
||||
#bm-content #bookmark-display .bookmark-list #paginate-control {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
background: #3b4e5e;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
#bm-content #bookmark-display .bookmark-list #paginate-control #paginate {
|
||||
margin: 0 auto;
|
||||
}
|
||||
#bm-content #bookmark-display .bookmark-list #paginate-control #paginate a,
|
||||
#bm-content #bookmark-display .bookmark-list #paginate-control #paginate label {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
#bm-content #bookmark-display .bookmark-list #paginate-control #paginate label {
|
||||
padding: 5px;
|
||||
color: #f5ab35;
|
||||
font-size: 2.2em;
|
||||
}
|
||||
#bm-content #bookmark-display .bookmark-list #paginate-control #paginate a {
|
||||
padding: 20px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
@media only screen and (max-width: 768px) {
|
||||
#bm-content #bookmark-display .bookmark-list .bookmark-entry {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
/**
|
||||
-------------------------------
|
||||
-- Folio
|
||||
-------------------------------
|
||||
**/
|
||||
#work-content {
|
||||
width: 100%;
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#work-content #header #header-two p {
|
||||
font: 400 1.5em $bodyType;
|
||||
}
|
||||
#work-content #header #header-two p span {
|
||||
color: #b2cce5;
|
||||
}
|
||||
#work-content #work-display {
|
||||
padding: 0;
|
||||
margin: 0 0 40px 0;
|
||||
opacity: 0;
|
||||
}
|
||||
#work-content #work-list .work-item {
|
||||
width: 50%;
|
||||
height: 300px;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
background-size: cover;
|
||||
background-color: #f5ab35;
|
||||
color: #f5ab35;
|
||||
}
|
||||
#work-content #work-list .work-item span {
|
||||
font: 600 0.7em $titleType;
|
||||
}
|
||||
#work-content #work-contact #contact-form {
|
||||
opacity: 1;
|
||||
}
|
||||
#work-content #work-contact #contact-form label {
|
||||
font: 600 0.8em $titleType;
|
||||
color: #fc6399;
|
||||
margin: 0 0 15px 0;
|
||||
display: block;
|
||||
}
|
||||
#work-content #work-contact #contact-form #request-form input[type=email],
|
||||
#work-content #work-contact #contact-form #request-form input[type=password],
|
||||
#work-content #work-contact #contact-form #request-form input[type=text] {
|
||||
width: 100%;
|
||||
margin: 0 10px 10px 0;
|
||||
}
|
||||
#work-content #work-contact #contact-form #request-form select {
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#work-content #work-contact #contact-form #request-form textarea {
|
||||
width: 100%;
|
||||
}
|
||||
#work-content #work-contact #contact-info label#request-status {
|
||||
font: 600 0.8em $titleType;
|
||||
color: #fc6399;
|
||||
margin: 0 0 15px 0;
|
||||
display: block;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
#work-content #work-contact #contact-info p {
|
||||
font: 400 1em $bodyType;
|
||||
color: #f5ab35;
|
||||
}
|
||||
#work-content #work-contact #contact-info p i {
|
||||
color: #fc6399;
|
||||
}
|
||||
#project-content {
|
||||
width: 100%;
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#project-content #project-display {
|
||||
padding: 0 20px 20px 20px;
|
||||
}
|
||||
#project-content #project-display #project-info span {
|
||||
font: 400 2em $titleType;
|
||||
color: #f2f1ef;
|
||||
}
|
||||
#project-content #project-display #project-desc {
|
||||
font: 300 1.2em $bodyType;
|
||||
color: #f5ab35;
|
||||
}
|
||||
#project-content #project-images {
|
||||
margin: 10px 0 0 0;
|
||||
opacity: 1;
|
||||
}
|
||||
#project-content #project-images .folio-image {
|
||||
width: 100%;
|
||||
margin: 0 0 50px 0;
|
||||
opacity: 0;
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
#work-content #work-list .work-item {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
/**
|
||||
-------------------------------
|
||||
-- Forms
|
||||
-------------------------------
|
||||
**/
|
||||
|
|
File diff suppressed because one or more lines are too long
91
themes/dash/assets/js/dash.min.js
vendored
91
themes/dash/assets/js/dash.min.js
vendored
|
@ -8225,7 +8225,7 @@ function () {
|
|||
|
||||
exports.default = PostEditor;
|
||||
PostEditor.uploadFiles = [];
|
||||
},{"../../../../../brain/tools/utilities/DataUtils":"../../../../brain/tools/utilities/DataUtils.js","../../../../../brain/tools/events/DataEvent":"../../../../brain/tools/events/DataEvent.js","../actions/PostActions":"actions/PostActions.js","../../../../../brain/tools/events/EditorEvent":"../../../../brain/tools/events/EditorEvent.js","tiny-date-picker":"../../../../node_modules/tiny-date-picker/dist/tiny-date-picker.js","../../../../../brain/tools/utilities/DateUtils":"../../../../brain/tools/utilities/DateUtils.js","../../../../../brain/tools/ui/TextEditor":"../../../../brain/tools/ui/TextEditor.js","../../../../../brain/tools/utilities/DBUtils":"../../../../brain/tools/utilities/DBUtils.js"}],"../../../../brain/tools/effects/Animate.js":[function(require,module,exports) {
|
||||
},{"../../../../../brain/tools/utilities/DataUtils":"../../../../brain/tools/utilities/DataUtils.js","../../../../../brain/tools/events/DataEvent":"../../../../brain/tools/events/DataEvent.js","../actions/PostActions":"actions/PostActions.js","../../../../../brain/tools/events/EditorEvent":"../../../../brain/tools/events/EditorEvent.js","tiny-date-picker":"../../../../node_modules/tiny-date-picker/dist/tiny-date-picker.js","../../../../../brain/tools/utilities/DateUtils":"../../../../brain/tools/utilities/DateUtils.js","../../../../../brain/tools/ui/TextEditor":"../../../../brain/tools/ui/TextEditor.js","../../../../../brain/tools/utilities/DBUtils":"../../../../brain/tools/utilities/DBUtils.js"}],"controllers/PostIndex.js":[function(require,module,exports) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
|
@ -8233,70 +8233,6 @@ Object.defineProperty(exports, "__esModule", {
|
|||
});
|
||||
exports.default = void 0;
|
||||
|
||||
var _EventEmitter2 = _interopRequireDefault(require("../events/EventEmitter"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
||||
|
||||
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
||||
|
||||
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
||||
|
||||
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
||||
|
||||
var Animate =
|
||||
/*#__PURE__*/
|
||||
function (_EventEmitter) {
|
||||
_inherits(Animate, _EventEmitter);
|
||||
|
||||
//--------------------------
|
||||
// constructor
|
||||
//--------------------------
|
||||
function Animate() {
|
||||
_classCallCheck(this, Animate);
|
||||
|
||||
return _possibleConstructorReturn(this, _getPrototypeOf(Animate).call(this));
|
||||
} //--------------------------
|
||||
// methods
|
||||
//--------------------------
|
||||
|
||||
|
||||
_createClass(Animate, [{
|
||||
key: "object",
|
||||
value: function object(properties) {
|
||||
var animation = anime(properties); //animation.start(properties);
|
||||
} //--------------------------
|
||||
// event handlers
|
||||
//--------------------------
|
||||
|
||||
}]);
|
||||
|
||||
return Animate;
|
||||
}(_EventEmitter2.default);
|
||||
|
||||
var _default = Animate;
|
||||
exports.default = _default;
|
||||
},{"../events/EventEmitter":"../../../../brain/tools/events/EventEmitter.js"}],"controllers/PostIndex.js":[function(require,module,exports) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
|
||||
var _Animate = _interopRequireDefault(require("../../../../../brain/tools/effects/Animate"));
|
||||
|
||||
var _PostEditor = _interopRequireDefault(require("./PostEditor"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
@ -8354,7 +8290,7 @@ function () {
|
|||
}();
|
||||
|
||||
exports.default = PostIndex;
|
||||
},{"../../../../../brain/tools/effects/Animate":"../../../../brain/tools/effects/Animate.js","./PostEditor":"controllers/PostEditor.js"}],"controllers/DashManager.js":[function(require,module,exports) {
|
||||
},{"./PostEditor":"controllers/PostEditor.js"}],"controllers/DashManager.js":[function(require,module,exports) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
|
@ -8362,10 +8298,6 @@ Object.defineProperty(exports, "__esModule", {
|
|||
});
|
||||
exports.default = void 0;
|
||||
|
||||
var _PostEditor = _interopRequireDefault(require("./PostEditor"));
|
||||
|
||||
var _Animate = _interopRequireDefault(require("../../../../../brain/tools/effects/Animate"));
|
||||
|
||||
var _PostIndex = _interopRequireDefault(require("./PostIndex"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
@ -8424,7 +8356,7 @@ function () {
|
|||
}();
|
||||
|
||||
exports.default = DashManager;
|
||||
},{"./PostEditor":"controllers/PostEditor.js","../../../../../brain/tools/effects/Animate":"../../../../brain/tools/effects/Animate.js","./PostIndex":"controllers/PostIndex.js"}],"Base.js":[function(require,module,exports) {
|
||||
},{"./PostIndex":"controllers/PostIndex.js"}],"Base.js":[function(require,module,exports) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
|
@ -8463,8 +8395,7 @@ function () {
|
|||
this.dashManager = [];
|
||||
this.dataUtils = new _DataUtils.default();
|
||||
this.dbUtils = new _DBUtils.default();
|
||||
this.settings = []; //this.cacheAssets();
|
||||
|
||||
this.settings = [];
|
||||
this.storeLocalData();
|
||||
}
|
||||
|
||||
|
@ -8499,18 +8430,6 @@ function () {
|
|||
}).catch(function (err) {
|
||||
console.log(err);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "cacheAssets",
|
||||
value: function cacheAssets() {
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', function () {
|
||||
navigator.serviceWorker.register('https://fipamo.local/tim-duncan.js?' + Math.round(new Date().getTime() / 1000)).then(function (registration) {//console.log('Service worker successfully registered on scope', registration.scope);
|
||||
}).catch(function (error) {//console.log('Service worker failed to register');
|
||||
});
|
||||
});
|
||||
} else {//console.log("NOPE")
|
||||
}
|
||||
} //--------------------------
|
||||
// event handlers
|
||||
//--------------------------
|
||||
|
@ -8558,7 +8477,7 @@ var parent = module.bundle.parent;
|
|||
if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
|
||||
var hostname = "" || location.hostname;
|
||||
var protocol = location.protocol === 'https:' ? 'wss' : 'ws';
|
||||
var ws = new WebSocket(protocol + '://' + hostname + ':' + "60349" + '/');
|
||||
var ws = new WebSocket(protocol + '://' + hostname + ':' + "51778" + '/');
|
||||
|
||||
ws.onmessage = function (event) {
|
||||
var data = JSON.parse(event.data);
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -2,5 +2,16 @@ extends frame
|
|||
block main-content
|
||||
#settings-index
|
||||
#settings-index-wrapper
|
||||
h2 Settings
|
||||
#member-avatar-drop
|
||||
img(src="")
|
||||
input(id="avatar-upload" type="file" name="avatar-image-upload")
|
||||
input(type='text', name='handle' class='settings-handle', placeholder='handle', value=member.handle, autofocus)
|
||||
input(type='text', name='email' class='settings-email', placeholder='email', value=member.email, autofocus)
|
||||
br
|
||||
input(type='text', name='base-url' class='settings-url', placeholder='url', value=settings.url, autofocus)
|
||||
textarea(id="settings_desc" type='text', name='settings_desc' class='settings-dec', placeholder='description stuff', autofocus)
|
||||
=settings.description
|
||||
|
||||
br
|
||||
button#privacy-toggle SITE IS PUBLIC
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
$primary = #374857;
|
||||
//$primary = #200317; deep purple
|
||||
$secondary = #b2cce5;
|
||||
$tertiary = #f5ab35;
|
||||
$highlight = #fc6399;
|
||||
|
|
7
themes/default/theme.json
Normal file
7
themes/default/theme.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"name": "default",
|
||||
"display-name":"Fipama Oh Won",
|
||||
"author": "Are0h",
|
||||
"description": "The most dangerous default theme in the known universe.",
|
||||
"version": "1.0.0"
|
||||
}
|
7
themes/the-twelfth-house/theme.json
Normal file
7
themes/the-twelfth-house/theme.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"name": "the-twelfth-house",
|
||||
"display-name":"The Twelfth House",
|
||||
"author": "Are0h",
|
||||
"description": "The official theme for the personal site of Ro, The Twelfth House",
|
||||
"version": "3.0.0"
|
||||
}
|
Loading…
Reference in a new issue