diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index 083410804..7d162eb59 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -7,7 +7,7 @@ const { Meta } = require('vitreum/headtags'); const MarkdownLegacy = require('naturalcrit/markdownLegacy.js'); const Markdown = require('naturalcrit/markdown.js'); -const Themes = require('themes/themes.json'); +const staticThemes = require('themes/themes.json'); const BREWKEY = 'homebrewery-new'; const STYLEKEY = 'homebrewery-new-style'; @@ -30,11 +30,12 @@ const PrintPage = createClass({ getInitialState : function() { return { brew : { - text : this.props.brew.text || '', - style : this.props.brew.style || undefined, - renderer : this.props.brew.renderer || 'legacy', - theme : this.props.brew.theme || '5ePHB', - lang : this.props.brew.lang || 'en' + text : this.props.brew.text || '', + style : this.props.brew.style || undefined, + renderer : this.props.brew.renderer || 'legacy', + theme : this.props.brew.theme || '5ePHB', + lang : this.props.brew.lang || 'en', + userThemes : this.props.brew.userThemes } }; }, @@ -90,17 +91,43 @@ const PrintPage = createClass({ }, render : function(){ - const rendererPath = this.state.brew.renderer == 'V3' ? 'V3' : 'Legacy'; - const themePath = this.state.brew.theme ?? '5ePHB'; - const baseThemePath = Themes[rendererPath][themePath].baseTheme; + let rendererPath = this.state.brew.renderer == 'V3' ? 'V3' : 'Legacy'; + let baseRendererPath = this.state.brew.renderer == 'V3' ? 'V3' : 'Legacy'; + const blankRendererPath = this.state.brew.renderer == 'V3' ? 'V3' : 'Legacy'; + if(this.state.brew.theme[0] === '#') { + rendererPath = 'Brew'; + } + let themePath = this.state.brew.theme ?? '5ePHB'; + console.log(`this.state.brew.userThemes`); + console.log(this.state.brew); + console.log(`this.state.brew.userThemes`); + const Themes = { ...staticThemes, ...this.state.brew.userThemes }; + let baseThemePath = Themes[rendererPath][themePath]?.baseTheme; + + // Override static theme values if a Brew theme. + + if(themePath[0] == '#') { + themePath = themePath.slice(1); + rendererPath = ''; + } else { + rendererPath += '/'; + } + + if(baseThemePath && baseThemePath[0] == '#') { + baseThemePath = baseThemePath.slice(1); + baseRendererPath = ''; + } else { + baseRendererPath += '/'; + } + return
- + {baseThemePath && - + } - + {/* Apply CSS from Style tab */} {this.renderStyle()}
diff --git a/server/app.js b/server/app.js index 55ab52e13..4bd753c2d 100644 --- a/server/app.js +++ b/server/app.js @@ -348,7 +348,6 @@ app.get('/share/:id', asyncHandler(getBrew('share')), asyncHandler(async (req, r await HomebrewModel.increaseView({ shareId: brew.shareId }); } }; - req.brew.userThemes = await getUsersBrewThemes(req.account.username, req.brew.editId); sanitizeBrew(req.brew, 'share'); splitTextStyleAndMetadata(req.brew); return next(); @@ -356,7 +355,6 @@ app.get('/share/:id', asyncHandler(getBrew('share')), asyncHandler(async (req, r //Print Page app.get('/print/:id', asyncHandler(getBrew('share')), async (req, res, next)=>{ - req.brew.userThemes = await getUsersBrewThemes(req.account.username, req.brew.editId); sanitizeBrew(req.brew, 'share'); splitTextStyleAndMetadata(req.brew); next(); diff --git a/server/homebrew.api.js b/server/homebrew.api.js index b4d70a7a1..dff9da7a9 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -158,7 +158,11 @@ const api = { throw { name: 'BrewLoad Error', message: 'Brew not found', status: 404, HBErrorCode: '05', accessType: accessType, brewId: id }; } - const userID = accessType === 'edit' ? req.account.username : stub.authors.split(',')[0]; + console.log(`print`); + console.log(accessType); + console.log(stub); + console.log(`print`); + const userID = accessType === 'edit' ? req.account.username : stub.authors[0]; // Clean up brew: fill in missing fields with defaults / fix old invalid values const userThemes = await getUsersBrewThemes(userID, id);