diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.jsx b/client/homebrew/editor/metadataEditor/metadataEditor.jsx index 65ab78de2..d692fe262 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.jsx +++ b/client/homebrew/editor/metadataEditor/metadataEditor.jsx @@ -7,6 +7,8 @@ const request = require('superagent'); const SYSTEMS = ['5e', '4e', '3.5e', 'Pathfinder']; +const homebreweryThumbnail = require('../../thumbnail.png'); + const MetadataEditor = createClass({ displayName : 'MetadataEditor', getDefaultProps : function() { @@ -25,6 +27,23 @@ const MetadataEditor = createClass({ }; }, + getInitialState : function(){ + return { + showThumbnail : true + }; + }, + + toggleThumbnailDisplay : function(){ + this.setState({ + showThumbnail : !this.state.showThumbnail + }); + }, + + renderThumbnail : function(){ + if(!this.state.showThumbnail) return; + return ; + }, + handleFieldChange : function(name, e){ this.props.onChange(_.merge({}, this.props.metadata, { [name] : e.target.value @@ -162,6 +181,18 @@ const MetadataEditor = createClass({ this.handleFieldChange('description', e)} /> + + thumbnail + this.handleFieldChange('thumbnail', e)} /> + + + + {this.renderThumbnail()} + {/*} tags diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.less b/client/homebrew/editor/metadataEditor/metadataEditor.less index 4a43158d0..9dd03b373 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.less +++ b/client/homebrew/editor/metadataEditor/metadataEditor.less @@ -24,6 +24,33 @@ flex : 1 1 auto; min-width : 200px; } + &.thumbnail{ + height : 1.4em; + label{ + line-height: 2.0em; + } + .value{ + overflow: hidden; + text-overflow: ellipsis; + } + button{ + border: 1px solid #999; + color: white; + padding: 0px 5px; + background-color: black; + &:hover{ + background-color: #777; + } + } + .thumbnail-preview{ + position : relative; + width : 80px; + height : min-content; + border : 2px solid white; + margin-left : 5px; + max-height : 115px; + } + } } .description.field textarea.value{ resize : none; diff --git a/client/homebrew/thumbnail.png b/client/homebrew/thumbnail.png new file mode 100644 index 000000000..38b6d9699 Binary files /dev/null and b/client/homebrew/thumbnail.png differ diff --git a/client/template.js b/client/template.js index e2e0893e3..d7ef107fa 100644 --- a/client/template.js +++ b/client/template.js @@ -1,4 +1,6 @@ module.exports = async(name, title = '', props = {})=>{ + const HOMEBREWERY_PUBLIC_URL=props.publicUrl; + return ` @@ -7,6 +9,13 @@ module.exports = async(name, title = '', props = {})=>{ + + + + + + + ${title.length ? `${title} - The Homebrewery`: 'The Homebrewery - NaturalCrit'} diff --git a/config/default.json b/config/default.json index f74ce3b8e..eded5231d 100644 --- a/config/default.json +++ b/config/default.json @@ -3,5 +3,6 @@ "naturalcrit_url" : "local.naturalcrit.com:8010", "secret" : "secret", "web_port" : 8000, - "enable_v3" : true + "enable_v3" : true, + "publicUrl" : "https://homebrewery.naturalcrit.com" } diff --git a/server/app.js b/server/app.js index de51c8882..fe5c12594 100644 --- a/server/app.js +++ b/server/app.js @@ -264,6 +264,7 @@ const templateFn = require('./../client/template.js'); app.use((req, res)=>{ const props = { version : require('./../package.json').version, + publicUrl : config.get('publicUrl') ?? '', url : req.originalUrl, brew : req.brew, brews : req.brews, diff --git a/server/googleActions.js b/server/googleActions.js index 3a202cbce..89691e0d8 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -126,7 +126,8 @@ const GoogleActions = { views : parseInt(file.properties.views), tags : '', published : file.properties.published ? file.properties.published == 'true' : false, - systems : [] + systems : [], + thumbnail : file.properties.thumbnail }; }); return brews; @@ -147,7 +148,8 @@ const GoogleActions = { renderer : brew.renderer, tags : brew.tags, pageCount : brew.pageCount, - systems : brew.systems.join() + systems : brew.systems.join(), + thumbnail : brew.thumbnail } }, media : { @@ -185,7 +187,8 @@ const GoogleActions = { 'title' : brew.title, 'views' : '0', 'pageCount' : brew.pageCount, - 'renderer' : brew.renderer || 'legacy' + 'renderer' : brew.renderer || 'legacy', + 'thumbnail' : brew.thumbnail || '' } }; @@ -286,6 +289,7 @@ const GoogleActions = { views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined version : parseInt(obj.data.properties.version) || 0, renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy', + thumbnail : obj.data.properties.thumbnail || '', gDrive : true, googleId : id diff --git a/server/homebrew.model.js b/server/homebrew.model.js index acc78a624..be6b2f6cd 100644 --- a/server/homebrew.model.js +++ b/server/homebrew.model.js @@ -17,6 +17,7 @@ const HomebrewSchema = mongoose.Schema({ renderer : { type: String, default: '' }, authors : [String], published : { type: Boolean, default: false }, + thumbnail : { type: String, default: '' }, createdAt : { type: Date, default: Date.now }, updatedAt : { type: Date, default: Date.now },