mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-13 17:05:56 +00:00
Swapped over all urls and refs to old url scheme
This commit is contained in:
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -28,20 +28,20 @@ var Homebrew = React.createClass({
|
|||||||
},
|
},
|
||||||
componentWillMount: function() {
|
componentWillMount: function() {
|
||||||
Router = CreateRouter({
|
Router = CreateRouter({
|
||||||
'/homebrew/edit/:id' : (args) => {
|
'/edit/:id' : (args) => {
|
||||||
return <EditPage id={args.id} brew={this.props.brew} />
|
return <EditPage id={args.id} brew={this.props.brew} />
|
||||||
},
|
},
|
||||||
|
|
||||||
'/homebrew/share/:id' : (args) => {
|
'/share/:id' : (args) => {
|
||||||
return <SharePage id={args.id} brew={this.props.brew} />
|
return <SharePage id={args.id} brew={this.props.brew} />
|
||||||
},
|
},
|
||||||
'/homebrew/changelog' : (args) => {
|
'/changelog' : (args) => {
|
||||||
return <SharePage brew={{title : 'Changelog', text : this.props.changelog}} />
|
return <SharePage brew={{title : 'Changelog', text : this.props.changelog}} />
|
||||||
},
|
},
|
||||||
'/homebrew/new' : (args) => {
|
'/new' : (args) => {
|
||||||
return <NewPage />
|
return <NewPage />
|
||||||
},
|
},
|
||||||
'/homebrew*' : <HomePage welcomeText={this.props.welcomeText} />,
|
'*' : <HomePage welcomeText={this.props.welcomeText} />,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
render : function(){
|
render : function(){
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ var React = require('react');
|
|||||||
var Nav = require('naturalcrit/nav/nav.jsx');
|
var Nav = require('naturalcrit/nav/nav.jsx');
|
||||||
|
|
||||||
module.exports = function(props){
|
module.exports = function(props){
|
||||||
return <Nav.item newTab={true} href='https://github.com/stolksdorf/naturalcrit/issues' color='red' icon='fa-bug'>
|
return <Nav.item newTab={true} href='https://github.com/stolksdorf/homebrewery/issues' color='red' icon='fa-bug'>
|
||||||
report issue
|
report issue
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
};
|
};
|
||||||
@@ -8,10 +8,10 @@ var Navbar = React.createClass({
|
|||||||
return <Nav.base>
|
return <Nav.base>
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
<Nav.logo />
|
<Nav.logo />
|
||||||
<Nav.item href='/homebrew' className='homebrewLogo'>
|
<Nav.item href='/' className='homebrewLogo'>
|
||||||
<div>The Homebrewery</div>
|
<div>The Homebrewery</div>
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item>v2.1.1</Nav.item>
|
<Nav.item>v2.2.0</Nav.item>
|
||||||
</Nav.section>
|
</Nav.section>
|
||||||
{this.props.children}
|
{this.props.children}
|
||||||
</Nav.base>
|
</Nav.base>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ var React = require('react');
|
|||||||
var Nav = require('naturalcrit/nav/nav.jsx');
|
var Nav = require('naturalcrit/nav/nav.jsx');
|
||||||
|
|
||||||
module.exports = function(props){
|
module.exports = function(props){
|
||||||
return <Nav.item newTab={true} href={'/homebrew/print/' + props.shareId +'?dialog=true'} color='purple' icon='fa-print'>
|
return <Nav.item newTab={true} href={'/print/' + props.shareId +'?dialog=true'} color='purple' icon='fa-print'>
|
||||||
print
|
print
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
};
|
};
|
||||||
@@ -90,7 +90,7 @@ module.exports = {
|
|||||||
currentBrew={{
|
currentBrew={{
|
||||||
id : this.props.brew.shareId,
|
id : this.props.brew.shareId,
|
||||||
title : this.props.brew.title,
|
title : this.props.brew.title,
|
||||||
url : `/homebrew/share/${this.props.brew.shareId}`
|
url : `/share/${this.props.brew.shareId}`
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
},
|
},
|
||||||
@@ -110,7 +110,7 @@ module.exports = {
|
|||||||
currentBrew={{
|
currentBrew={{
|
||||||
id : this.props.brew.editId,
|
id : this.props.brew.editId,
|
||||||
title : this.props.brew.title,
|
title : this.props.brew.title,
|
||||||
url : `/homebrew/edit/${this.props.brew.editId}`
|
url : `/edit/${this.props.brew.editId}`
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -92,10 +92,10 @@ var EditPage = React.createClass({
|
|||||||
if(!confirm("are you sure you want to delete this brew?")) return;
|
if(!confirm("are you sure you want to delete this brew?")) return;
|
||||||
if(!confirm("are you REALLY sure? You will not be able to recover it")) return;
|
if(!confirm("are you REALLY sure? You will not be able to recover it")) return;
|
||||||
|
|
||||||
request.get('/homebrew/api/remove/' + this.props.brew.editId)
|
request.get('/api/remove/' + this.props.brew.editId)
|
||||||
.send()
|
.send()
|
||||||
.end(function(err, res){
|
.end(function(err, res){
|
||||||
window.location.href = '/homebrew';
|
window.location.href = '/';
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ var EditPage = React.createClass({
|
|||||||
});
|
});
|
||||||
|
|
||||||
request
|
request
|
||||||
.put('/homebrew/api/update/' + this.props.brew.editId)
|
.put('/api/update/' + this.props.brew.editId)
|
||||||
.send({
|
.send({
|
||||||
text : this.state.text,
|
text : this.state.text,
|
||||||
title : this.state.title
|
title : this.state.title
|
||||||
@@ -177,7 +177,7 @@ var EditPage = React.createClass({
|
|||||||
<Nav.section>
|
<Nav.section>
|
||||||
{this.renderSaveButton()}
|
{this.renderSaveButton()}
|
||||||
<RecentlyEdited brew={this.props.brew} />
|
<RecentlyEdited brew={this.props.brew} />
|
||||||
<Nav.item newTab={true} href={'/homebrew/share/' + this.props.brew.shareId} color='teal' icon='fa-share-alt'>
|
<Nav.item newTab={true} href={'/share/' + this.props.brew.shareId} color='teal' icon='fa-share-alt'>
|
||||||
Share
|
Share
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<PrintLink shareId={this.props.brew.shareId} />
|
<PrintLink shareId={this.props.brew.shareId} />
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ var request = require("superagent");
|
|||||||
var Nav = require('naturalcrit/nav/nav.jsx');
|
var Nav = require('naturalcrit/nav/nav.jsx');
|
||||||
var Navbar = require('../../navbar/navbar.jsx');
|
var Navbar = require('../../navbar/navbar.jsx');
|
||||||
var PatreonNavItem = require('../../navbar/patreon.navitem.jsx');
|
var PatreonNavItem = require('../../navbar/patreon.navitem.jsx');
|
||||||
|
var IssueNavItem = require('../../navbar/issue.navitem.jsx');
|
||||||
|
|
||||||
|
|
||||||
var SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
var SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
||||||
@@ -26,7 +27,7 @@ var HomePage = React.createClass({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
handleSave : function(){
|
handleSave : function(){
|
||||||
request.post('/homebrew/api')
|
request.post('/api')
|
||||||
.send({
|
.send({
|
||||||
title : 'Change This',
|
title : 'Change This',
|
||||||
text : this.state.text
|
text : this.state.text
|
||||||
@@ -34,7 +35,7 @@ var HomePage = React.createClass({
|
|||||||
.end((err, res)=>{
|
.end((err, res)=>{
|
||||||
if(err) return;
|
if(err) return;
|
||||||
var brew = res.body;
|
var brew = res.body;
|
||||||
window.location = '/homebrew/edit/' + brew.editId;
|
window.location = '/edit/' + brew.editId;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleSplitMove : function(){
|
handleSplitMove : function(){
|
||||||
@@ -49,13 +50,11 @@ var HomePage = React.createClass({
|
|||||||
return <Navbar>
|
return <Navbar>
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
<PatreonNavItem />
|
<PatreonNavItem />
|
||||||
<Nav.item newTab={true} href='https://github.com/stolksdorf/naturalcrit/issues' color='red' icon='fa-bug'>
|
<IssueNavItem />
|
||||||
report issue
|
<Nav.item newTab={true} href='/changelog' color='purple' icon='fa-file-text-o'>
|
||||||
</Nav.item>
|
|
||||||
<Nav.item newTab={true} href='/homebrew/changelog' color='purple' icon='fa-file-text-o'>
|
|
||||||
Changelog
|
Changelog
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item href='/homebrew/new' color='green' icon='fa-external-link'>
|
<Nav.item href='/new' color='green' icon='fa-external-link'>
|
||||||
New Brew
|
New Brew
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
</Nav.section>
|
</Nav.section>
|
||||||
@@ -77,7 +76,7 @@ var HomePage = React.createClass({
|
|||||||
Save current <i className='fa fa-save' />
|
Save current <i className='fa fa-save' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a href='/homebrew/new' className='floatingNewButton'>
|
<a href='/new' className='floatingNewButton'>
|
||||||
Create your own <i className='fa fa-magic' />
|
Create your own <i className='fa fa-magic' />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ var request = require("superagent");
|
|||||||
var Nav = require('naturalcrit/nav/nav.jsx');
|
var Nav = require('naturalcrit/nav/nav.jsx');
|
||||||
var Navbar = require('../../navbar/navbar.jsx');
|
var Navbar = require('../../navbar/navbar.jsx');
|
||||||
var EditTitle = require('../../navbar/editTitle.navitem.jsx');
|
var EditTitle = require('../../navbar/editTitle.navitem.jsx');
|
||||||
|
var IssueNavItem = require('../../navbar/issue.navitem.jsx');
|
||||||
|
|
||||||
|
|
||||||
var SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
var SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
||||||
@@ -64,7 +65,7 @@ var NewPage = React.createClass({
|
|||||||
this.setState({
|
this.setState({
|
||||||
isSaving : true
|
isSaving : true
|
||||||
});
|
});
|
||||||
request.post('/homebrew/api')
|
request.post('/api')
|
||||||
.send({
|
.send({
|
||||||
title : this.state.title,
|
title : this.state.title,
|
||||||
text : this.state.text
|
text : this.state.text
|
||||||
@@ -80,7 +81,7 @@ var NewPage = React.createClass({
|
|||||||
window.onbeforeunload = function(){};
|
window.onbeforeunload = function(){};
|
||||||
var brew = res.body;
|
var brew = res.body;
|
||||||
localStorage.removeItem(KEY);
|
localStorage.removeItem(KEY);
|
||||||
window.location = '/homebrew/edit/' + brew.editId;
|
window.location = '/edit/' + brew.editId;
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -96,7 +97,6 @@ var NewPage = React.createClass({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
renderNavbar : function(){
|
renderNavbar : function(){
|
||||||
return <Navbar>
|
return <Navbar>
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
@@ -105,9 +105,7 @@ var NewPage = React.createClass({
|
|||||||
|
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
{this.renderSaveButton()}
|
{this.renderSaveButton()}
|
||||||
<Nav.item newTab={true} href='https://github.com/stolksdorf/naturalcrit/issues' color='red' icon='fa-bug'>
|
<IssueNavItem />
|
||||||
report issue
|
|
||||||
</Nav.item>
|
|
||||||
</Nav.section>
|
</Nav.section>
|
||||||
</Navbar>
|
</Navbar>
|
||||||
},
|
},
|
||||||
@@ -116,7 +114,6 @@ var NewPage = React.createClass({
|
|||||||
return <div className='newPage page'>
|
return <div className='newPage page'>
|
||||||
{this.renderNavbar()}
|
{this.renderNavbar()}
|
||||||
|
|
||||||
|
|
||||||
<div className='content'>
|
<div className='content'>
|
||||||
<SplitPane onDragFinish={this.handleSplitMove} ref='pane'>
|
<SplitPane onDragFinish={this.handleSplitMove} ref='pane'>
|
||||||
<Editor value={this.state.text} onChange={this.handleTextChange} ref='editor'/>
|
<Editor value={this.state.text} onChange={this.handleTextChange} ref='editor'/>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ var SharePage = React.createClass({
|
|||||||
<Nav.section>
|
<Nav.section>
|
||||||
<RecentlyViewed brew={this.props.brew} />
|
<RecentlyViewed brew={this.props.brew} />
|
||||||
<PrintLink shareId={this.props.brew.shareId} />
|
<PrintLink shareId={this.props.brew.shareId} />
|
||||||
<Nav.item href={'/homebrew/source/' + this.props.brew.shareId} color='teal' icon='fa-code'>
|
<Nav.item href={'/source/' + this.props.brew.shareId} color='teal' icon='fa-code'>
|
||||||
source
|
source
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
</Nav.section>
|
</Nav.section>
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
var React = require('react');
|
|
||||||
var _ = require('lodash');
|
|
||||||
var cx = require('classnames');
|
|
||||||
|
|
||||||
var Router = require('pico-router');
|
|
||||||
|
|
||||||
var NaturalCritIcon = require('naturalcrit/svg/naturalcrit.svg.jsx');
|
|
||||||
var HomebrewIcon = require('naturalcrit/svg/homebrew.svg.jsx');
|
|
||||||
|
|
||||||
var Main = React.createClass({
|
|
||||||
getDefaultProps: function() {
|
|
||||||
return {
|
|
||||||
tools : [
|
|
||||||
{
|
|
||||||
id : 'homebrew',
|
|
||||||
path : '/homebrew',
|
|
||||||
name : 'The Homebrewery',
|
|
||||||
icon : <HomebrewIcon />,
|
|
||||||
desc : 'Make authentic-looking 5e homebrews using Markdown',
|
|
||||||
|
|
||||||
show : true,
|
|
||||||
beta : false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id : 'homebrew2',
|
|
||||||
path : '/homebrew',
|
|
||||||
name : 'The Homebrewery',
|
|
||||||
icon : <HomebrewIcon />,
|
|
||||||
desc : 'Make authentic-looking 5e homebrews using Markdown',
|
|
||||||
|
|
||||||
show : false,
|
|
||||||
beta : true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id : 'homebrewfg2',
|
|
||||||
path : '/homebrew',
|
|
||||||
name : 'The Homebrewery',
|
|
||||||
icon : <HomebrewIcon />,
|
|
||||||
desc : 'Make authentic-looking 5e homebrews using Markdown',
|
|
||||||
|
|
||||||
show : false,
|
|
||||||
beta : false
|
|
||||||
}
|
|
||||||
|
|
||||||
]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
renderTool : function(tool){
|
|
||||||
if(!tool.show) return null;
|
|
||||||
|
|
||||||
return <a href={tool.path} className={cx('tool', tool.id, {beta : tool.beta})} key={tool.id}>
|
|
||||||
<div className='content'>
|
|
||||||
{tool.icon}
|
|
||||||
<h2>{tool.name}</h2>
|
|
||||||
<p>{tool.desc}</p>
|
|
||||||
</div>
|
|
||||||
</a>;
|
|
||||||
},
|
|
||||||
|
|
||||||
renderTools : function(){
|
|
||||||
return _.map(this.props.tools, (tool)=>{
|
|
||||||
return this.renderTool(tool);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
render : function(){
|
|
||||||
return <div className='main'>
|
|
||||||
<div className='top'>
|
|
||||||
<div className='logo'>
|
|
||||||
<NaturalCritIcon />
|
|
||||||
<span className='name'>
|
|
||||||
Natural
|
|
||||||
<span className='crit'>Crit</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<p>Top-tier tools for the discerning DM</p>
|
|
||||||
</div>
|
|
||||||
<div className='tools'>
|
|
||||||
{this.renderTools()}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = Main;
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
@import 'naturalcrit/styles/core.less';
|
|
||||||
.main{
|
|
||||||
height : 100vh;
|
|
||||||
background-color : white;
|
|
||||||
.top{
|
|
||||||
.fadeInTop(1s);
|
|
||||||
.delay(0.5);
|
|
||||||
margin-bottom : 100px;
|
|
||||||
padding-top : 100px;
|
|
||||||
text-align : center;
|
|
||||||
.logo{
|
|
||||||
font-size : 4em;
|
|
||||||
color : black;
|
|
||||||
svg{
|
|
||||||
height : .9em;
|
|
||||||
margin-right : .2em;
|
|
||||||
cursor : pointer;
|
|
||||||
fill : black;
|
|
||||||
}
|
|
||||||
.name{
|
|
||||||
font-family : 'CodeLight';
|
|
||||||
.crit{
|
|
||||||
font-family : 'CodeBold';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p{
|
|
||||||
margin-top : 10px;
|
|
||||||
font-size : 1.3em;
|
|
||||||
font-style : italic;
|
|
||||||
color : @grey;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.tools{
|
|
||||||
width : 100%;
|
|
||||||
text-align : center;
|
|
||||||
.tool{
|
|
||||||
.sequentialDelay(0.5s, 1s);
|
|
||||||
.fadeInDown(1s);
|
|
||||||
.keep();
|
|
||||||
display : inline-block;
|
|
||||||
cursor : pointer;
|
|
||||||
opacity : 0;
|
|
||||||
color : black;
|
|
||||||
text-align : center;
|
|
||||||
text-decoration : none;
|
|
||||||
&+.tool{
|
|
||||||
border-left : 1px solid #666;
|
|
||||||
}
|
|
||||||
.content{
|
|
||||||
.addSketch(360px);
|
|
||||||
.animateAll(0.5s);
|
|
||||||
position : relative;
|
|
||||||
width : 320px;
|
|
||||||
padding : 35px;
|
|
||||||
&:hover{
|
|
||||||
svg, h2{
|
|
||||||
.transform(scale(1.3));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
h2{
|
|
||||||
.animateAll(0.5s);
|
|
||||||
font-family : 'CodeBold';
|
|
||||||
font-size : 2em;
|
|
||||||
}
|
|
||||||
p{
|
|
||||||
max-width : 300px;
|
|
||||||
margin : 20px auto;
|
|
||||||
line-height : 1.5em;
|
|
||||||
}
|
|
||||||
svg{
|
|
||||||
.animateAll(0.5s);
|
|
||||||
height : 10em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.content:hover{
|
|
||||||
background-color : fade(@teal, 20%);
|
|
||||||
}
|
|
||||||
//Beta styles
|
|
||||||
&.beta{
|
|
||||||
cursor : initial;
|
|
||||||
.content{
|
|
||||||
&:hover{
|
|
||||||
svg, h2{
|
|
||||||
.transform(scale(1.0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
svg, h2{
|
|
||||||
opacity : 0.3;
|
|
||||||
}
|
|
||||||
&:after{
|
|
||||||
.animateAll();
|
|
||||||
content : "beta!";
|
|
||||||
position : absolute;
|
|
||||||
display : block;
|
|
||||||
top : 120px;
|
|
||||||
left : 0px;
|
|
||||||
width : 100%;
|
|
||||||
padding : 10px 0px;
|
|
||||||
//opacity : 0;
|
|
||||||
background-color : fade(@grey, 50%);
|
|
||||||
font-size : 2em;
|
|
||||||
font-weight : 800;
|
|
||||||
text-align : center;
|
|
||||||
text-transform : uppercase;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.addSketch(@length, @color : black){
|
|
||||||
path, line, polyline, circle, rect, polygon {
|
|
||||||
.sketch(@length, @color, 4s);
|
|
||||||
stroke-dasharray : @length;
|
|
||||||
stroke-dashoffset : 0px;
|
|
||||||
stroke : @color;
|
|
||||||
stroke-width : 0.5px;
|
|
||||||
fill : @color;
|
|
||||||
//.animateAll(3s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sketch(@length, @color : black, @duration : 3s, @easing : @defaultEasing){
|
|
||||||
.createAnimation(sketch, @duration, @easing);
|
|
||||||
.sketchKeyFrames(){
|
|
||||||
0% { stroke-dashoffset : @length; fill: transparent;}
|
|
||||||
50% { stroke-dashoffset : @length; fill: transparent;}
|
|
||||||
80% { stroke-dashoffset : 0px; fill: transparent;}
|
|
||||||
100% { stroke-dashoffset : 0px; fill:@color;}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes sketch {.sketchKeyFrames();}
|
|
||||||
@-moz-keyframes sketch {.sketchKeyFrames();}
|
|
||||||
@-ms-keyframes sketch {.sketchKeyFrames();}
|
|
||||||
@-o-keyframes sketch {.sketchKeyFrames();}
|
|
||||||
@keyframes sketch {.sketchKeyFrames();}
|
|
||||||
}
|
|
||||||
@@ -4,10 +4,10 @@
|
|||||||
<script>global=window</script>
|
<script>global=window</script>
|
||||||
<link href="//netdna.bootstrapcdn.com/font-awesome/4.6.2/css/font-awesome.min.css" rel="stylesheet" />
|
<link href="//netdna.bootstrapcdn.com/font-awesome/4.6.2/css/font-awesome.min.css" rel="stylesheet" />
|
||||||
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700" rel="stylesheet" type="text/css" />
|
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700" rel="stylesheet" type="text/css" />
|
||||||
<link rel="icon" href="/assets/main/favicon.ico" type="image/x-icon" />
|
<link rel="icon" href="/assets/homebrew/favicon.ico" type="image/x-icon" />
|
||||||
{{=vitreum.css}}
|
{{=vitreum.css}}
|
||||||
{{=vitreum.globals}}
|
{{=vitreum.globals}}
|
||||||
<title>Natural Crit - D&D Tools</title>
|
<title>The Homebrewery - NaturalCrit</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="reactContainer">{{=vitreum.component}}</div>
|
<div id="reactContainer">{{=vitreum.component}}</div>
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ var gulp = require("gulp");
|
|||||||
|
|
||||||
var gulp = vitreumTasks(gulp, {
|
var gulp = vitreumTasks(gulp, {
|
||||||
entryPoints: [
|
entryPoints: [
|
||||||
'./client/main',
|
|
||||||
'./client/homebrew',
|
'./client/homebrew',
|
||||||
'./client/admin'
|
'./client/admin'
|
||||||
],
|
],
|
||||||
|
|||||||
113
server.js
113
server.js
@@ -43,17 +43,120 @@ app.get('/admin', function(req, res){
|
|||||||
|
|
||||||
//Populate homebrew routes
|
//Populate homebrew routes
|
||||||
app = require('./server/homebrew.api.js')(app);
|
app = require('./server/homebrew.api.js')(app);
|
||||||
app = require('./server/homebrew.server.js')(app);
|
//app = require('./server/homebrew.server.js')(app);
|
||||||
|
|
||||||
|
var HomebrewModel = require('./server/homebrew.model.js').model;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Edit Page
|
||||||
|
app.get('/edit/:id', function(req, res){
|
||||||
|
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
||||||
|
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
||||||
|
|
||||||
|
var resObj = null;
|
||||||
|
var errObj = {text: "# oops\nCould not find the homebrew."}
|
||||||
|
if(objs.length){
|
||||||
|
resObj = objs[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
vitreumRender({
|
||||||
|
page: './build/homebrew/bundle.dot',
|
||||||
|
globals:{},
|
||||||
|
prerenderWith : './client/homebrew/homebrew.jsx',
|
||||||
|
initialProps: {
|
||||||
|
url: req.originalUrl,
|
||||||
|
brew : resObj || errObj
|
||||||
|
},
|
||||||
|
clearRequireCache : !process.env.PRODUCTION,
|
||||||
|
}, function (err, page) {
|
||||||
|
return res.send(page)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//Share Page
|
||||||
|
app.get('/share/:id', function(req, res){
|
||||||
|
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
||||||
|
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
||||||
|
|
||||||
|
var resObj = null;
|
||||||
|
var errObj = {text: "# oops\nCould not find the homebrew."}
|
||||||
|
|
||||||
|
if(objs.length){
|
||||||
|
resObj = objs[0];
|
||||||
|
resObj.lastViewed = new Date();
|
||||||
|
resObj.views = resObj.views + 1;
|
||||||
|
resObj.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
vitreumRender({
|
||||||
|
page: './build/homebrew/bundle.dot',
|
||||||
|
globals:{},
|
||||||
|
prerenderWith : './client/homebrew/homebrew.jsx',
|
||||||
|
initialProps: {
|
||||||
|
url: req.originalUrl,
|
||||||
|
brew : resObj || errObj
|
||||||
|
},
|
||||||
|
clearRequireCache : !process.env.PRODUCTION,
|
||||||
|
}, function (err, page) {
|
||||||
|
return res.send(page)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
//Print Page
|
||||||
|
var Markdown = require('marked');
|
||||||
|
var PHBStyle = '<style>' + require('fs').readFileSync('./phb.standalone.css', 'utf8') + '</style>'
|
||||||
|
app.get('/print/:id', function(req, res){
|
||||||
|
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
||||||
|
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
||||||
|
|
||||||
|
var brew = null;
|
||||||
|
if(objs.length){
|
||||||
|
brew = objs[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
var content = _.map(brew.text.split('\\page'), function(pageText){
|
||||||
|
return '<div class="phb print">' + Markdown(pageText) + '</div>';
|
||||||
|
}).join('\n');
|
||||||
|
|
||||||
|
var dialog = '';
|
||||||
|
if(req.query && req.query.dialog) dialog = 'onload="window.print()"';
|
||||||
|
|
||||||
|
var title = '<title>' + brew.title + '</title>';
|
||||||
|
var page = `<html><head>${title} ${PHBStyle}</head><body ${dialog}>${content}</body></html>`
|
||||||
|
|
||||||
|
return res.send(page)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//Source page
|
||||||
|
String.prototype.replaceAll = function(s,r){return this.split(s).join(r)}
|
||||||
|
app.get('/source/:id', function(req, res){
|
||||||
|
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
||||||
|
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
||||||
|
var brew = null;
|
||||||
|
if(objs.length) brew = objs[0];
|
||||||
|
var text = brew.text.replaceAll('<', '<').replaceAll('>', '>');
|
||||||
|
return res.send(`<code><pre>${text}</pre></code>`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//Home and 404, etc.
|
||||||
|
var welcomeText = require('fs').readFileSync('./client/homebrew/pages/homePage/welcome_msg.txt', 'utf8');
|
||||||
|
var changelogText = require('fs').readFileSync('./changelog.md', 'utf8');
|
||||||
app.get('*', function (req, res) {
|
app.get('*', function (req, res) {
|
||||||
vitreumRender({
|
vitreumRender({
|
||||||
page: './build/main/bundle.dot',
|
page: './build/homebrew/bundle.dot',
|
||||||
globals:{},
|
globals:{},
|
||||||
prerenderWith : './client/main/main.jsx',
|
prerenderWith : './client/homebrew/homebrew.jsx',
|
||||||
initialProps: {
|
initialProps: {
|
||||||
url: req.originalUrl
|
url: req.originalUrl,
|
||||||
|
welcomeText : welcomeText,
|
||||||
|
changelog : changelogText
|
||||||
},
|
},
|
||||||
clearRequireCache : !process.env.PRODUCTION,
|
clearRequireCache : !process.env.PRODUCTION,
|
||||||
}, function (err, page) {
|
}, function (err, page) {
|
||||||
@@ -62,6 +165,8 @@ app.get('*', function (req, res) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var port = process.env.PORT || 8000;
|
var port = process.env.PORT || 8000;
|
||||||
app.listen(port);
|
app.listen(port);
|
||||||
console.log('Listening on localhost:' + port);
|
console.log('Listening on localhost:' + port);
|
||||||
@@ -30,13 +30,13 @@ var getTopBrews = function(cb){
|
|||||||
|
|
||||||
module.exports = function(app){
|
module.exports = function(app){
|
||||||
|
|
||||||
app.get('/homebrew/top', function(req, res){
|
app.get('/api/top', function(req, res){
|
||||||
getTopBrews(function(topBrews){
|
getTopBrews(function(topBrews){
|
||||||
return res.json(topBrews);
|
return res.json(topBrews);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/homebrew/api', function(req, res){
|
app.post('/api', function(req, res){
|
||||||
var newHomebrew = new HomebrewModel(req.body);
|
var newHomebrew = new HomebrewModel(req.body);
|
||||||
newHomebrew.save(function(err, obj){
|
newHomebrew.save(function(err, obj){
|
||||||
if(err) return;
|
if(err) return;
|
||||||
@@ -44,7 +44,7 @@ module.exports = function(app){
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
app.put('/homebrew/api/update/:id', function(req, res){
|
app.put('/api/update/:id', function(req, res){
|
||||||
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
||||||
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
|
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
|
||||||
var resEntry = objs[0];
|
var resEntry = objs[0];
|
||||||
@@ -58,7 +58,7 @@ module.exports = function(app){
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/homebrew/api/remove/:id', function(req, res){
|
app.get('/api/remove/:id', function(req, res){
|
||||||
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
||||||
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
|
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
|
||||||
var resEntry = objs[0];
|
var resEntry = objs[0];
|
||||||
@@ -70,7 +70,7 @@ module.exports = function(app){
|
|||||||
});
|
});
|
||||||
|
|
||||||
//Removes all empty brews that are older than 3 days and that are shorter than a tweet
|
//Removes all empty brews that are older than 3 days and that are shorter than a tweet
|
||||||
app.get('/homebrew/api/invalid', mw.adminOnly, function(req, res){
|
app.get('/api/invalid', mw.adminOnly, function(req, res){
|
||||||
var invalidBrewQuery = HomebrewModel.find({
|
var invalidBrewQuery = HomebrewModel.find({
|
||||||
'$where' : "this.text.length < 140",
|
'$where' : "this.text.length < 140",
|
||||||
createdAt: {
|
createdAt: {
|
||||||
@@ -94,7 +94,7 @@ module.exports = function(app){
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
app.get('/homebrew/api/search', mw.adminOnly, function(req, res){
|
app.get('/api/search', mw.adminOnly, function(req, res){
|
||||||
var page = req.query.page || 0;
|
var page = req.query.page || 0;
|
||||||
var count = req.query.count || 20;
|
var count = req.query.count || 20;
|
||||||
|
|
||||||
|
|||||||
@@ -1,135 +0,0 @@
|
|||||||
var _ = require('lodash');
|
|
||||||
var vitreumRender = require('vitreum/render');
|
|
||||||
var HomebrewModel = require('./homebrew.model.js').model;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = function(app){
|
|
||||||
|
|
||||||
/*
|
|
||||||
app.get('/homebrew/new', function(req, res){
|
|
||||||
var newHomebrew = new HomebrewModel();
|
|
||||||
newHomebrew.save(function(err, obj){
|
|
||||||
return res.redirect('/homebrew/edit/' + obj.editId);
|
|
||||||
})
|
|
||||||
})
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
//Edit Page
|
|
||||||
app.get('/homebrew/edit/:id', function(req, res){
|
|
||||||
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
|
||||||
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
|
||||||
|
|
||||||
var resObj = null;
|
|
||||||
var errObj = {text: "# oops\nCould not find the homebrew."}
|
|
||||||
if(objs.length){
|
|
||||||
resObj = objs[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
vitreumRender({
|
|
||||||
page: './build/homebrew/bundle.dot',
|
|
||||||
globals:{},
|
|
||||||
prerenderWith : './client/homebrew/homebrew.jsx',
|
|
||||||
initialProps: {
|
|
||||||
url: req.originalUrl,
|
|
||||||
brew : resObj || errObj
|
|
||||||
},
|
|
||||||
clearRequireCache : !process.env.PRODUCTION,
|
|
||||||
}, function (err, page) {
|
|
||||||
return res.send(page)
|
|
||||||
});
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
//Share Page
|
|
||||||
app.get('/homebrew/share/:id', function(req, res){
|
|
||||||
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
|
||||||
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
|
||||||
|
|
||||||
var resObj = null;
|
|
||||||
var errObj = {text: "# oops\nCould not find the homebrew."}
|
|
||||||
|
|
||||||
if(objs.length){
|
|
||||||
resObj = objs[0];
|
|
||||||
resObj.lastViewed = new Date();
|
|
||||||
resObj.views = resObj.views + 1;
|
|
||||||
resObj.save();
|
|
||||||
}
|
|
||||||
|
|
||||||
vitreumRender({
|
|
||||||
page: './build/homebrew/bundle.dot',
|
|
||||||
globals:{},
|
|
||||||
prerenderWith : './client/homebrew/homebrew.jsx',
|
|
||||||
initialProps: {
|
|
||||||
url: req.originalUrl,
|
|
||||||
brew : resObj || errObj
|
|
||||||
},
|
|
||||||
clearRequireCache : !process.env.PRODUCTION,
|
|
||||||
}, function (err, page) {
|
|
||||||
return res.send(page)
|
|
||||||
});
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
//Print Page
|
|
||||||
var Markdown = require('marked');
|
|
||||||
var PHBStyle = '<style>' + require('fs').readFileSync('./phb.standalone.css', 'utf8') + '</style>'
|
|
||||||
app.get('/homebrew/print/:id', function(req, res){
|
|
||||||
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
|
||||||
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
|
||||||
|
|
||||||
var brew = null;
|
|
||||||
if(objs.length){
|
|
||||||
brew = objs[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
var content = _.map(brew.text.split('\\page'), function(pageText){
|
|
||||||
return '<div class="phb print">' + Markdown(pageText) + '</div>';
|
|
||||||
}).join('\n');
|
|
||||||
|
|
||||||
var dialog = '';
|
|
||||||
if(req.query && req.query.dialog) dialog = 'onload="window.print()"';
|
|
||||||
|
|
||||||
var title = '<title>' + brew.title + '</title>';
|
|
||||||
var page = `<html><head>${title} ${PHBStyle}</head><body ${dialog}>${content}</body></html>`
|
|
||||||
|
|
||||||
return res.send(page)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
//Source page
|
|
||||||
String.prototype.replaceAll = function(s,r){return this.split(s).join(r)}
|
|
||||||
app.get('/homebrew/source/:id', function(req, res){
|
|
||||||
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
|
||||||
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
|
||||||
var brew = null;
|
|
||||||
if(objs.length) brew = objs[0];
|
|
||||||
var text = brew.text.replaceAll('<', '<').replaceAll('>', '>');
|
|
||||||
return res.send(`<code><pre>${text}</pre></code>`);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
//Home and 404, etc.
|
|
||||||
var welcomeText = require('fs').readFileSync('./client/homebrew/pages/homePage/welcome_msg.txt', 'utf8');
|
|
||||||
var changelogText = require('fs').readFileSync('./changelog.md', 'utf8');
|
|
||||||
app.get('/homebrew*', function (req, res) {
|
|
||||||
vitreumRender({
|
|
||||||
page: './build/homebrew/bundle.dot',
|
|
||||||
globals:{},
|
|
||||||
prerenderWith : './client/homebrew/homebrew.jsx',
|
|
||||||
initialProps: {
|
|
||||||
url: req.originalUrl,
|
|
||||||
welcomeText : welcomeText,
|
|
||||||
changelog : changelogText
|
|
||||||
},
|
|
||||||
clearRequireCache : !process.env.PRODUCTION,
|
|
||||||
}, function (err, page) {
|
|
||||||
return res.send(page)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return app;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user