mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-04-23 14:58:43 +02:00
* Added frontend development files/environment * More items-categories related removals * Improvements in pages templates (inc. static pages) * Improvements in video player * Added empty home page message + cta * Updates in media, playlist and management pages * Improvements in material icons font loading * Replaced media & playlists links in frontend dev-env * frontend package version update * chnaged frontend dev url port * static files update * Changed default position of theme switcher * enabled frontend docker container
70 lines
2.0 KiB
TypeScript
Executable File
70 lines
2.0 KiB
TypeScript
Executable File
const merge = require('lodash.merge');
|
|
|
|
import { ConfigHtml, ConfigPages, ConfigWindow } from '../config';
|
|
|
|
function validateBoolean(value?: boolean | 0 | 1, defaultValue = false): boolean {
|
|
|
|
if (true === value || false === value) {
|
|
return value;
|
|
}
|
|
|
|
if (0 === value || 1 === value) {
|
|
return !!value;
|
|
}
|
|
|
|
return defaultValue;
|
|
}
|
|
|
|
function validateString(value?: string, defaultValue = ''): string {
|
|
return value ? value : defaultValue;
|
|
}
|
|
|
|
function getArrayType(sourcesArr?: Array<{ [key: string]: string }>, pageArr: Array<{ [key: string]: string }> = []): Array<{ [key: string]: string }> {
|
|
|
|
if ((!sourcesArr || !sourcesArr.length) && (!pageArr || !pageArr.length)) {
|
|
return [];
|
|
}
|
|
|
|
if (sourcesArr && sourcesArr.length && pageArr && pageArr.length) {
|
|
return sourcesArr.concat(pageArr);
|
|
}
|
|
|
|
if (sourcesArr && sourcesArr.length) {
|
|
return sourcesArr;
|
|
}
|
|
|
|
return pageArr;
|
|
}
|
|
|
|
function formatPagesConfig(sources: { title: string, filename: string, render: string, html: ConfigHtml, window: ConfigWindow }, pages: ConfigPages): ConfigPages {
|
|
|
|
const ret: ConfigPages = {};
|
|
|
|
for (const pk in pages) {
|
|
|
|
ret[pk] = {
|
|
staticPage: validateBoolean(pages[pk].staticPage, false),
|
|
buildExclude: validateBoolean(pages[pk].buildExclude, false),
|
|
title: validateString(pages[pk].title, sources.title),
|
|
filename: validateString(pages[pk].filename, sources.filename),
|
|
html: {
|
|
head: {
|
|
meta: getArrayType(sources.html.head.meta, pages[pk].html.head.meta),
|
|
links: getArrayType(sources.html.head.links, pages[pk].html.head.links),
|
|
scripts: getArrayType(sources.html.head.scripts, pages[pk].html.head.scripts),
|
|
},
|
|
body: {
|
|
scripts: getArrayType(sources.html.body.scripts, pages[pk].html.body.scripts),
|
|
snippet: validateString(pages[pk].html.body.snippet, sources.html.body.snippet),
|
|
},
|
|
},
|
|
window: merge({}, sources.window, pages[pk].window),
|
|
render: validateString(sources.render, pages[pk].render),
|
|
};
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
export default formatPagesConfig;
|