0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-06 18:42:40 +00:00

Heavy rework for usertheme parents.

This commit is contained in:
David Bolack
2024-03-06 18:55:12 -06:00
parent 9adafbd473
commit 87502f4249
4 changed files with 31 additions and 32 deletions

View File

@@ -200,13 +200,15 @@ const BrewRenderer = (props)=>{
rendererPath += '/'; rendererPath += '/';
} }
if(baseThemePath && baseThemePath[0] === '#') { if(rendererPath == '') {
baseThemePath = baseThemePath.slice(1); baseThemePath = 'Brew';
baseRendererPath = ''; baseRendererPath = '';
} else { } else {
baseRendererPath += '/'; baseRendererPath += '/';
} }
const staticOrUserParent = props?.theme[0] == '#' ? `/cssParent/${themePath}` : `/css/${baseRendererPath}${baseThemePath}`;
return ( return (
<> <>
{/*render dummy page while iFrame is mounting.*/} {/*render dummy page while iFrame is mounting.*/}
@@ -235,7 +237,7 @@ const BrewRenderer = (props)=>{
</div> </div>
<link href={`/css/${blankRendererPath}/Blank`} rel='stylesheet'/> <link href={`/css/${blankRendererPath}/Blank`} rel='stylesheet'/>
{baseThemePath && {baseThemePath &&
<link href={`/css/${baseRendererPath}${baseThemePath}`} rel='stylesheet'/> <link href={staticOrUserParent} rel='stylesheet'/>
} }
<link href={`/css/${rendererPath}${themePath}`} rel='stylesheet'/> <link href={`/css/${rendererPath}${themePath}`} rel='stylesheet'/>

View File

@@ -110,19 +110,20 @@ const PrintPage = createClass({
rendererPath += '/'; rendererPath += '/';
} }
if(baseThemePath && baseThemePath[0] == '#') { if(rendererPath == '') {
baseThemePath = baseThemePath.slice(1); baseThemePath = 'Brew';
baseRendererPath = ''; baseRendererPath = '';
} else { } else {
baseRendererPath += '/'; baseRendererPath += '/';
} }
const staticOrUserParent = this.state.brew.theme[0] == '#' ? `/cssParent/${themePath}` : `/css/${baseRendererPath}${baseThemePath}`;
return <div> return <div>
<Meta name='robots' content='noindex, nofollow' /> <Meta name='robots' content='noindex, nofollow' />
<link href={`/css/${blankRendererPath}/Blank`} rel='stylesheet'/> <link href={`/css/${blankRendererPath}/Blank`} rel='stylesheet'/>
{baseThemePath && {baseThemePath &&
<link href={`/css/${baseRendererPath}${baseThemePath}`} rel='stylesheet'/> <link href={staticOrUserParent} rel='stylesheet'/>
} }
<link href={`/css/${rendererPath}${themePath}`} rel='stylesheet'/> <link href={`/css/${rendererPath}${themePath}`} rel='stylesheet'/>
{/* Apply CSS from Style tab */} {/* Apply CSS from Style tab */}

View File

@@ -9,7 +9,7 @@ const yaml = require('js-yaml');
const app = express(); const app = express();
const config = require('./config.js'); const config = require('./config.js');
const { homebrewApi, getBrew, getBrewThemeWithCSS, getStaticTheme } = require('./homebrew.api.js'); const { homebrewApi, getBrew, getBrewThemeWithCSS, getStaticTheme, getBrewThemeParent } = require('./homebrew.api.js');
const GoogleActions = require('./googleActions.js'); const GoogleActions = require('./googleActions.js');
const serveCompressedStaticAssets = require('./static-assets.mv.js'); const serveCompressedStaticAssets = require('./static-assets.mv.js');
const sanitizeFilename = require('sanitize-filename'); const sanitizeFilename = require('sanitize-filename');
@@ -94,6 +94,7 @@ app.get('/robots.txt', (req, res)=>{
app.get('/css/:id', asyncHandler(getBrew('edit', true)), asyncHandler(getBrewThemeWithCSS)); app.get('/css/:id', asyncHandler(getBrew('edit', true)), asyncHandler(getBrewThemeWithCSS));
app.get('/css/:engine/:id/', asyncHandler(getStaticTheme)); app.get('/css/:engine/:id/', asyncHandler(getStaticTheme));
app.get('/cssParent/:id', asyncHandler(getBrew('theme', false)), asyncHandler(getBrewThemeParent));
//Home page //Home page

View File

@@ -86,23 +86,15 @@ const api = {
.catch((error)=>{throw 'Can not find brews';}); .catch((error)=>{throw 'Can not find brews';});
for await (const brew of brews) { for await (const brew of brews) {
api.getBrew('themes', req=req, res=res, next=next); userThemes.Brew[`#${brew.editId}`] = {
const brewTheme = req.brew; name : brew.title,
console.log(`Looking at themes.`); renderer : 'V3',
console.log(req); baseTheme : '',
console.log(`Looked at themes.`); baseSnippets : false,
if(brewTheme) { path : `#${brew.editId}`,
splitTextStyleAndMetadata(brewTheme); thumbnail : brew.thumbnail.length > 0 ? brew.thumbnail : '/assets/naturalCritLogoWhite.svg'
userThemes.Brew[`#${brew.editId}`] = { };
name : brew.title, }
renderer : 'V3',
baseTheme : brewTheme.theme,
baseSnippets : false,
path : `#${brew.editId}`,
thumbnail : brew.thumbnail.length > 0 ? brew.thumbnail : '/assets/naturalCritLogoWhite.svg'
};
}
};
return userThemes; return userThemes;
}, },
getBrew : (accessType, stubOnly = false)=>{ getBrew : (accessType, stubOnly = false)=>{
@@ -111,10 +103,9 @@ const api = {
// Get relevant IDs for the brew // Get relevant IDs for the brew
const { id, googleId } = api.getId(req); const { id, googleId } = api.getId(req);
console.log(`id: ${id}`);
// Try to find the document in the Homebrewery database -- if it doesn't exist, that's fine. // Try to find the document in the Homebrewery database -- if it doesn't exist, that's fine.
let stub = await HomebrewModel.get(accessType === 'edit' ? { editId: id } : { shareId: id }) let stub = await HomebrewModel.get((accessType === 'edit') || (accessType === 'theme') ? { editId: id } : { shareId: id })
.catch((err)=>{ .catch((err)=>{
if(googleId) { if(googleId) {
console.warn(`Unable to find document stub for ${accessType}Id ${id}`); console.warn(`Unable to find document stub for ${accessType}Id ${id}`);
@@ -163,7 +154,6 @@ const api = {
// Clean up brew: fill in missing fields with defaults / fix old invalid values // Clean up brew: fill in missing fields with defaults / fix old invalid values
const userThemes = accessType != 'themes' ? await api.getUsersBrewThemes(userID, id, req, res, next) : {}; const userThemes = accessType != 'themes' ? await api.getUsersBrewThemes(userID, id, req, res, next) : {};
console.log(userThemes);
if(stub) { if(stub) {
stub.tags = stub.tags || undefined; // Clear empty strings stub.tags = stub.tags || undefined; // Clear empty strings
stub.renderer = stub.renderer || undefined; // Clear empty strings stub.renderer = stub.renderer || undefined; // Clear empty strings
@@ -171,10 +161,6 @@ const api = {
stub.userThemes = userThemes; stub.userThemes = userThemes;
} }
if ( accessType == 'themes' ) {
console.log('Themes loaded');
console.log(stub);
}
req.brew = stub ?? {}; req.brew = stub ?? {};
next(); next();
}; };
@@ -293,6 +279,15 @@ const api = {
const parentThemeImport = `@import url(\"${req.brew.theme[0] != '#' ? staticTheme : userTheme}\");\n\n/* From Brew: ${req.brew.title}*/\n\n`; const parentThemeImport = `@import url(\"${req.brew.theme[0] != '#' ? staticTheme : userTheme}\");\n\n/* From Brew: ${req.brew.title}*/\n\n`;
return res.status(200).send(`${req.brew.renderer == 'legacy' ? '' : parentThemeImport}${req.brew.style}`); return res.status(200).send(`${req.brew.renderer == 'legacy' ? '' : parentThemeImport}${req.brew.style}`);
}, },
getBrewThemeParent : async (req, res)=>{
const brew = req.brew;
splitTextStyleAndMetadata(brew);
res.setHeader('Content-Type', 'text/css');
const staticTheme = `/css/${req.brew.renderer}/${req.brew.theme}`;
const userTheme = `/css/${req.brew.theme.slice(1)}`;
const parentThemeImport = `@import url(\"${req.brew.theme[0] != '#' ? staticTheme : userTheme}\");\n\n/* From Brew: ${req.brew.title}*/\n\n`;
return res.status(200).send(`${req.brew.renderer == 'legacy' ? '' : parentThemeImport}`);
},
getStaticTheme : async(req, res)=>{ getStaticTheme : async(req, res)=>{
const themeParent = isStaticTheme(req.params.engine, req.params.id); const themeParent = isStaticTheme(req.params.engine, req.params.id);
if(themeParent === undefined){ if(themeParent === undefined){