diff --git a/client/homebrew/homebrew.less b/client/homebrew/homebrew.less
index 7ef02bd98..3d031b871 100644
--- a/client/homebrew/homebrew.less
+++ b/client/homebrew/homebrew.less
@@ -8,10 +8,9 @@
background-color : @steel;
flex-direction : column;
.content{
- position : relative;
- overflow-y : hidden;
- height : calc(~"100% - 29px"); //Navbar height
- flex : auto;
+ position : relative;
+ height : calc(~"100% - 29px"); //Navbar height
+ flex : auto;
}
}
-}
+}
\ No newline at end of file
diff --git a/client/homebrew/navbar/recent.navitem.jsx b/client/homebrew/navbar/recent.navitem.jsx
index 37fece907..0e3daa7e7 100644
--- a/client/homebrew/navbar/recent.navitem.jsx
+++ b/client/homebrew/navbar/recent.navitem.jsx
@@ -1,72 +1,51 @@
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
+const cx = require('classnames');
const Moment = require('moment');
const Nav = require('naturalcrit/nav/nav.jsx');
-const EDIT_KEY = 'homebrewery-recently-edited';
const VIEW_KEY = 'homebrewery-recently-viewed';
+const EDIT_KEY = 'homebrewery-recently-edited';
-
-const RecentItems = createClass({
-
+const BaseItem = createClass({
getDefaultProps : function() {
return {
- storageKey : '',
- showEdit : false,
- showView : false
+ storageKey : '',
+ text : '',
+ currentBrew : {
+ title : '',
+ id : '',
+ url : ''
+ }
};
},
-
getInitialState : function() {
return {
showDropdown : false,
- edit : [],
- view : []
+ brews : []
};
},
componentDidMount : function() {
+ let brews = JSON.parse(localStorage.getItem(this.props.storageKey) || '[]');
- //== Load recent items list ==//
- let edited = JSON.parse(localStorage.getItem(EDIT_KEY) || '[]');
- let viewed = JSON.parse(localStorage.getItem(VIEW_KEY) || '[]');
-
- //== Add current brew to appropriate recent items list (depending on storageKey) ==//
- if(this.props.storageKey == 'edit'){
- edited = _.filter(edited, (brew)=>{
- return brew.id !== this.props.brew.editId;
- });
- edited.unshift({
- id : this.props.brew.editId,
- title : this.props.brew.title,
- url : `/edit/${this.props.brew.editId}`,
+ brews = _.filter(brews, (brew)=>{
+ return brew.id !== this.props.currentBrew.id;
+ });
+ if(this.props.currentBrew.id){
+ brews.unshift({
+ id : this.props.currentBrew.id,
+ url : this.props.currentBrew.url,
+ title : this.props.currentBrew.title,
ts : Date.now()
});
}
- if(this.props.storageKey == 'view'){
- viewed = _.filter(viewed, (brew)=>{
- return brew.id !== this.props.brew.shareId;
- });
- viewed.unshift({
- id : this.props.brew.shareId,
- title : this.props.brew.title,
- url : `/share/${this.props.brew.shareId}`,
- ts : Date.now()
- });
- }
-
- //== Store the updated lists (up to 8 items each) ==//
- edited = _.slice(edited, 0, 8);
- viewed = _.slice(viewed, 0, 8);
-
- localStorage.setItem(EDIT_KEY, JSON.stringify(edited));
- localStorage.setItem(VIEW_KEY, JSON.stringify(viewed));
-
+ brews = _.slice(brews, 0, 8);
+ localStorage.setItem(this.props.storageKey, JSON.stringify(brews));
this.setState({
- edit : edited,
- view : viewed
+ brews : brews
});
},
@@ -79,25 +58,14 @@ const RecentItems = createClass({
renderDropdown : function(){
if(!this.state.showDropdown) return null;
- const makeItems = (brews)=>{
- return _.map(brews, (brew)=>{
- return
- {brew.title || '[ no title ]'}
- {Moment(brew.ts).fromNow()}
- ;
- });
- };
+ const items = _.map(this.state.brews, (brew)=>{
+ return
+ {brew.title}
+ {Moment(brew.ts).fromNow()}
+ ;
+ });
- return
- {(this.props.showEdit && this.props.showView) ?
-
edited
: null }
- {this.props.showEdit ?
- makeItems(this.state.edit) : null }
- {(this.props.showEdit && this.props.showView) ?
- viewed
: null }
- {this.props.showView ?
- makeItems(this.state.view) : null }
- ;
+ return {items}
;
},
render : function(){
@@ -107,37 +75,126 @@ const RecentItems = createClass({
{this.props.text}
{this.renderDropdown()}
;
- }
+ },
});
+
+
module.exports = {
+ viewed : createClass({
+ getDefaultProps : function() {
+ return {
+ brew : {
+ title : '',
+ shareId : ''
+ }
+ };
+ },
+ render : function(){
+ return ;
+ },
+ }),
- edited : (props)=>{
- return ;
- },
+ edited : createClass({
+ getDefaultProps : function() {
+ return {
+ brew : {
+ title : '',
+ editId : ''
+ }
+ };
+ },
+ render : function(){
+ return ;
+ },
+ }),
- viewed : (props)=>{
- return ;
- },
+ both : createClass({
+ getDefaultProps : function() {
+ return {
+ errorId : null
+ };
+ },
- both : (props)=>{
- return ;
- }
+ getInitialState : function() {
+ return {
+ showDropdown : false,
+ edit : [],
+ view : []
+ };
+ },
+
+ componentDidMount : function() {
+
+ let edited = JSON.parse(localStorage.getItem(EDIT_KEY) || '[]');
+ let viewed = JSON.parse(localStorage.getItem(VIEW_KEY) || '[]');
+
+ if(this.props.errorId){
+ edited = _.filter(edited, (edit)=>{
+ return edit.id !== this.props.errorId;
+ });
+ viewed = _.filter(viewed, (view)=>{
+ return view.id !== this.props.errorId;
+ });
+
+ localStorage.setItem(EDIT_KEY, JSON.stringify(edited));
+ localStorage.setItem(VIEW_KEY, JSON.stringify(viewed));
+ }
+
+
+ this.setState({
+ edit : edited,
+ view : viewed
+ });
+ },
+
+ handleDropdown : function(show){
+ this.setState({
+ showDropdown : show
+ });
+ },
+
+ renderDropdown : function(){
+ if(!this.state.showDropdown) return null;
+
+ const makeItems = (brews)=>{
+ return _.map(brews, (brew)=>{
+ return
+ {brew.title}
+ {Moment(brew.ts).fromNow()}
+ ;
+ });
+ };
+
+ return
+
edited
+ {makeItems(this.state.edit)}
+ viewed
+ {makeItems(this.state.view)}
+ ;
+ },
+
+ render : function(){
+ return this.handleDropdown(true)}
+ onMouseLeave={()=>this.handleDropdown(false)}>
+ Recent brews
+ {this.renderDropdown()}
+ ;
+ }
+
+ })
};
\ No newline at end of file
diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index db7789b88..1b3b7a808 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -10,7 +10,7 @@ const Navbar = require('../../navbar/navbar.jsx');
const ReportIssue = require('../../navbar/issue.navitem.jsx');
const PrintLink = require('../../navbar/print.navitem.jsx');
const Account = require('../../navbar/account.navitem.jsx');
-const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
+//const RecentlyEdited = require('../../navbar/recent.navitem.jsx').edited;
const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
const Editor = require('../../editor/editor.jsx');
@@ -186,15 +186,14 @@ const EditPage = createClass({
{this.state.brew.title}
-
{this.renderSaveButton()}
+ {/**/}
Share
-
;
diff --git a/client/homebrew/pages/errorPage/errorPage.jsx b/client/homebrew/pages/errorPage/errorPage.jsx
index 9faaa479c..42fb8a60a 100644
--- a/client/homebrew/pages/errorPage/errorPage.jsx
+++ b/client/homebrew/pages/errorPage/errorPage.jsx
@@ -7,7 +7,7 @@ const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const PatreonNavItem = require('../../navbar/patreon.navitem.jsx');
const IssueNavItem = require('../../navbar/issue.navitem.jsx');
-const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
+const RecentNavItem = require('../../navbar/recent.navitem.jsx');
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
@@ -33,7 +33,7 @@ const ErrorPage = createClass({
-
+
diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx
index aca5a5e35..a62b68dd4 100644
--- a/client/homebrew/pages/homePage/homePage.jsx
+++ b/client/homebrew/pages/homePage/homePage.jsx
@@ -8,7 +8,7 @@ const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const PatreonNavItem = require('../../navbar/patreon.navitem.jsx');
const IssueNavItem = require('../../navbar/issue.navitem.jsx');
-const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
+const RecentNavItem = require('../../navbar/recent.navitem.jsx');
const AccountNavItem = require('../../navbar/account.navitem.jsx');
@@ -59,7 +59,7 @@ const HomePage = createClass({
Changelog
-
+
{/*}
diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
index 739925be5..169265f3b 100644
--- a/client/homebrew/pages/newPage/newPage.jsx
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -9,7 +9,6 @@ const Markdown = require('naturalcrit/markdown.js');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const AccountNavItem = require('../../navbar/account.navitem.jsx');
-const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const IssueNavItem = require('../../navbar/issue.navitem.jsx');
const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
@@ -136,7 +135,6 @@ const NewPage = createClass({
{this.renderSaveButton()}
{this.renderLocalPrintButton()}
-
;
diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx
index 2774bf339..b9c07a9ff 100644
--- a/client/homebrew/pages/sharePage/sharePage.jsx
+++ b/client/homebrew/pages/sharePage/sharePage.jsx
@@ -7,7 +7,7 @@ const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const PrintLink = require('../../navbar/print.navitem.jsx');
const ReportIssue = require('../../navbar/issue.navitem.jsx');
-const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
+//const RecentlyViewed = require('../../navbar/recent.navitem.jsx').viewed;
const Account = require('../../navbar/account.navitem.jsx');
@@ -53,11 +53,11 @@ const SharePage = createClass({
+ {/**/}
source
-
diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx
index fd48007c2..3b7cd7d40 100644
--- a/client/homebrew/pages/userPage/userPage.jsx
+++ b/client/homebrew/pages/userPage/userPage.jsx
@@ -6,7 +6,7 @@ const cx = require('classnames');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
-const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
+const RecentNavItem = require('../../navbar/recent.navitem.jsx');
const Account = require('../../navbar/account.navitem.jsx');
const BrewItem = require('./brewItem/brewItem.jsx');
@@ -57,7 +57,7 @@ const UserPage = createClass({
return
-
+
diff --git a/server/forcessl.mw.js b/server/forcessl.mw.js
index b84c20f27..1a34e41bc 100644
--- a/server/forcessl.mw.js
+++ b/server/forcessl.mw.js
@@ -1,7 +1,7 @@
-module.exports = (req, res, next)=>{
+module.exports = (req, res, next) => {
if(process.env.NODE_ENV === 'local') return next();
if(req.header('x-forwarded-proto') !== 'https') {
return res.redirect(302, `https://${req.get('Host')}${req.url}`);
}
return next();
-};
+};
\ No newline at end of file