1
0
mirror of https://github.com/fazo96/ipfs-boards synced 2025-01-10 12:24:20 +01:00
ipfs-boards/webapp/app.jsx

112 lines
3.1 KiB
React
Raw Normal View History

2015-11-14 01:34:03 +01:00
var React = require('react')
var ReactDOM = require('react-dom')
2015-11-14 13:12:48 +01:00
var Router = require('react-router').Router
var Route = require('react-router').Route
var IndexRoute = require('react-router').IndexRoute
2015-11-20 14:20:06 +01:00
// Load CSS
require('normalize.css')
require('skeleton.css')
require('style.css')
2015-11-20 17:24:06 +01:00
require('raleway.css')
2015-11-14 12:06:37 +01:00
// Load Components
2015-11-14 12:06:37 +01:00
var BoardsWrapper = require('boardsapiwrapper.js')
var boards = new BoardsWrapper()
var Icon = require('icon.jsx')
// Load pages
var Navbar = require('navbar.jsx')(boards)
var Users = require('users.jsx')(boards)
var Settings = require('settings.jsx')(boards)
var Profile = require('profile.jsx')(boards)
var Board = require('board.jsx')(boards)
var PostPage = require('postpage.jsx')(boards)
2015-11-26 19:04:47 +01:00
var CommentPage = require('commentpage.jsx')(boards)
var ProfileEditor = require('profile-editor.jsx')(boards)
2015-12-16 23:05:48 +01:00
var BoardEditor = require('board-editor.jsx')(boards)
var PostEditor = require('post-editor.jsx')(boards)
2015-12-19 13:52:38 +01:00
var Status = require('status.jsx')(boards)
// Define Main Components
var Container = React.createClass({
render () {
return (<div className="container app">{this.props.children}</div>)
}
})
var App = React.createClass({
render () {
return (<div><Navbar /><Container>{this.props.children}</Container></div>)
2015-11-14 12:06:37 +01:00
}
})
// Static pages
2015-11-21 16:29:54 +01:00
var Static = React.createClass({
html () {
2015-11-21 16:29:54 +01:00
return { __html: this.props.content }
},
render () {
if (this.props.content) {
2015-11-21 16:29:54 +01:00
return <div className={this.props.className} dangerouslySetInnerHTML={this.html()} />
} else {
return <NotFound />
}
}
})
var Homepage = React.createClass({
render () {
2015-11-21 16:29:54 +01:00
return <Static className="homepage" content={require('landing.md')} />
}
2015-11-14 15:03:38 +01:00
})
var NotFound = React.createClass({
render () {
return (<div className="text-center">
2015-12-17 16:18:07 +01:00
<h1><Icon name="ban" className="light"/></h1>
<h3>Sorry, there's nothing here!</h3>
</div>)
}
})
// Start
ReactDOM.render(
<Router>
<Route path="/" component={App}>
<IndexRoute component={Homepage} />
<Route path="/@:userid">
<IndexRoute component={Profile} />
2015-11-26 19:04:47 +01:00
<Route path="post/:posthash" >
<IndexRoute component={PostPage} />
2015-11-23 13:00:49 +01:00
</Route>
<Route path=":boardname">
<IndexRoute component={Board} />
2015-11-26 19:04:47 +01:00
<Route path=":posthash">
<IndexRoute component={PostPage} />
<Route path=":commenthash" component={CommentPage} />
</Route>
</Route>
</Route>
2015-12-16 23:05:48 +01:00
<Route path="edit">
<Route path="profile" component={ProfileEditor} />
<Route path="board(/:boardname)">
<IndexRoute component={BoardEditor} />
<Route path="post(/:posthash)" component={PostEditor} />
2015-12-17 16:18:07 +01:00
</Route>
2015-12-16 23:05:48 +01:00
</Route>
<Route path="post/:posthash" component={PostPage} />
<Route path="board/:boardname" component={Board} />
<Route path="users" component={Users} />
<Route path="settings" component={Settings} />
2015-12-19 13:52:38 +01:00
<Route path="status" component={Status} />
<Route path="*" component={NotFound} />
</Route>
</Router>, document.getElementById('root')
)