diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index edc43b040..2d6040e7c 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -200,13 +200,15 @@ const BrewRenderer = (props)=>{ rendererPath += '/'; } - if(baseThemePath && baseThemePath[0] === '#') { - baseThemePath = baseThemePath.slice(1); + if(rendererPath == '') { + baseThemePath = 'Brew'; baseRendererPath = ''; } else { baseRendererPath += '/'; } + const staticOrUserParent = props?.theme[0] == '#' ? `/cssParent/${themePath}` : `/css/${baseRendererPath}${baseThemePath}`; + return ( <> {/*render dummy page while iFrame is mounting.*/} @@ -235,7 +237,7 @@ const BrewRenderer = (props)=>{ {baseThemePath && - + } diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index ea409bd43..954d16e0b 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -110,19 +110,20 @@ const PrintPage = createClass({ rendererPath += '/'; } - if(baseThemePath && baseThemePath[0] == '#') { - baseThemePath = baseThemePath.slice(1); + if(rendererPath == '') { + baseThemePath = 'Brew'; baseRendererPath = ''; } else { baseRendererPath += '/'; } - + + const staticOrUserParent = this.state.brew.theme[0] == '#' ? `/cssParent/${themePath}` : `/css/${baseRendererPath}${baseThemePath}`; return
{baseThemePath && - + } {/* Apply CSS from Style tab */} diff --git a/server/app.js b/server/app.js index 91798d808..b0fe3f465 100644 --- a/server/app.js +++ b/server/app.js @@ -9,7 +9,7 @@ const yaml = require('js-yaml'); const app = express(); 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 serveCompressedStaticAssets = require('./static-assets.mv.js'); 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/:engine/:id/', asyncHandler(getStaticTheme)); +app.get('/cssParent/:id', asyncHandler(getBrew('theme', false)), asyncHandler(getBrewThemeParent)); //Home page diff --git a/server/homebrew.api.js b/server/homebrew.api.js index c053fdbdb..b2f5f941c 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -86,23 +86,15 @@ const api = { .catch((error)=>{throw 'Can not find brews';}); for await (const brew of brews) { - api.getBrew('themes', req=req, res=res, next=next); - const brewTheme = req.brew; - console.log(`Looking at themes.`); - console.log(req); - console.log(`Looked at themes.`); - if(brewTheme) { - splitTextStyleAndMetadata(brewTheme); - 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' - }; - } - }; + userThemes.Brew[`#${brew.editId}`] = { + name : brew.title, + renderer : 'V3', + baseTheme : '', + baseSnippets : false, + path : `#${brew.editId}`, + thumbnail : brew.thumbnail.length > 0 ? brew.thumbnail : '/assets/naturalCritLogoWhite.svg' + }; + } return userThemes; }, getBrew : (accessType, stubOnly = false)=>{ @@ -111,10 +103,9 @@ const api = { // Get relevant IDs for the brew 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. - 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)=>{ if(googleId) { 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 const userThemes = accessType != 'themes' ? await api.getUsersBrewThemes(userID, id, req, res, next) : {}; - console.log(userThemes); if(stub) { stub.tags = stub.tags || undefined; // Clear empty strings stub.renderer = stub.renderer || undefined; // Clear empty strings @@ -171,10 +161,6 @@ const api = { stub.userThemes = userThemes; } - if ( accessType == 'themes' ) { - console.log('Themes loaded'); - console.log(stub); - } req.brew = stub ?? {}; 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`; 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)=>{ const themeParent = isStaticTheme(req.params.engine, req.params.id); if(themeParent === undefined){