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:
@@ -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'/>
|
||||||
|
|
||||||
|
|||||||
@@ -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 */}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
Reference in New Issue
Block a user