diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 04004034e..c1887a83f 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -274,7 +274,6 @@ const NewPage = createClass({ }, print : function(){ - localStorage.setItem('print', `\n\n${this.state.brew.text}`); window.open('/print?dialog=true&local=print', '_blank'); }, diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index 909adc1a9..e5b7160c6 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -7,6 +7,10 @@ const { Meta } = require('vitreum/headtags'); const MarkdownLegacy = require('naturalcrit/markdownLegacy.js'); const Markdown = require('naturalcrit/markdown.js'); +const BREWKEY = 'homebrewery-new'; +const STYLEKEY = 'homebrewery-new-style'; +const METAKEY = 'homebrewery-new-meta'; + const PrintPage = createClass({ getDefaultProps : function() { return { @@ -21,28 +25,42 @@ const PrintPage = createClass({ getInitialState : function() { return { - brewText : this.props.brew.text + brew : { + text : this.props.brew.text || '', + style : this.props.brew.style || undefined, + renderer : this.props.brew.renderer || 'legacy' + } }; }, componentDidMount : function() { - if(this.props.query.local){ - this.setState((prevState, prevProps)=>({ - brewText : localStorage.getItem(prevProps.query.local) - })); + if(this.props.query.local == 'print'){ + const brewStorage = localStorage.getItem(BREWKEY); + const styleStorage = localStorage.getItem(STYLEKEY); + const metaStorage = JSON.parse(localStorage.getItem(METAKEY)); + + this.setState((prevState, prevProps)=>{ + return { + brew : { + text : brewStorage, + style : styleStorage, + renderer : metaStorage.renderer || 'legacy' + } + }; + }); } if(this.props.query.dialog) window.print(); }, renderStyle : function() { - if(!this.props.brew.style) return; - return
${this.props.brew.style} ` }} />; + if(!this.state.brew.style) return; + return
${this.state.brew.style} ` }} />; }, renderPages : function(){ - if(this.props.brew.renderer == 'legacy') { - return _.map(this.state.brewText.split('\\page'), (pageText, index)=>{ + if(this.state.brew.renderer == 'legacy') { + return _.map(this.state.brew.text.split('\\page'), (pageText, index)=>{ return
; }); } else { - return _.map(this.state.brewText.split(/^\\page$/gm), (pageText, index)=>{ + return _.map(this.state.brew.text.split(/^\\page$/gm), (pageText, index)=>{ pageText += `\n\n \n\\column\n `; //Artificial column break at page end to emulate column-fill:auto (until `wide` is used, when column-fill:balance will reappear) return (
@@ -65,7 +83,7 @@ const PrintPage = createClass({ render : function(){ return
- + {/* Apply CSS from Style tab */} {this.renderStyle()}