Adding landing page
This commit is contained in:
parent
45a96e899e
commit
e63aebff7a
10
Gemfile.lock
10
Gemfile.lock
@ -106,9 +106,9 @@ GEM
|
|||||||
ruby-progressbar (~> 1.4)
|
ruby-progressbar (~> 1.4)
|
||||||
globalid (0.3.7)
|
globalid (0.3.7)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.1.0)
|
||||||
goldfinger (1.0.3)
|
goldfinger (1.0.4)
|
||||||
addressable (~> 2.4)
|
addressable (~> 2.4)
|
||||||
http (~> 1.0)
|
http (~> 2.0)
|
||||||
nokogiri (~> 1.6)
|
nokogiri (~> 1.6)
|
||||||
hamlit (2.7.2)
|
hamlit (2.7.2)
|
||||||
temple (~> 0.7.6)
|
temple (~> 0.7.6)
|
||||||
@ -122,7 +122,7 @@ GEM
|
|||||||
hashdiff (0.3.0)
|
hashdiff (0.3.0)
|
||||||
hiredis (0.6.1)
|
hiredis (0.6.1)
|
||||||
htmlentities (4.3.4)
|
htmlentities (4.3.4)
|
||||||
http (1.0.4)
|
http (2.0.3)
|
||||||
addressable (~> 2.3)
|
addressable (~> 2.3)
|
||||||
http-cookie (~> 1.0)
|
http-cookie (~> 1.0)
|
||||||
http-form_data (~> 1.0.1)
|
http-form_data (~> 1.0.1)
|
||||||
@ -168,9 +168,9 @@ GEM
|
|||||||
pkg-config (~> 1.1.7)
|
pkg-config (~> 1.1.7)
|
||||||
oj (2.17.3)
|
oj (2.17.3)
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
ostatus2 (0.3)
|
ostatus2 (0.3.1)
|
||||||
addressable (~> 2.4)
|
addressable (~> 2.4)
|
||||||
http (~> 1.0)
|
http (~> 2.0)
|
||||||
nokogiri (~> 1.6)
|
nokogiri (~> 1.6)
|
||||||
paperclip (4.3.7)
|
paperclip (4.3.7)
|
||||||
activemodel (>= 3.2.0)
|
activemodel (>= 3.2.0)
|
||||||
|
BIN
app/assets/images/background-photo.jpeg
Normal file
BIN
app/assets/images/background-photo.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 MiB |
Binary file not shown.
Before Width: | Height: | Size: 1.3 MiB |
3
app/assets/javascripts/about.coffee
Normal file
3
app/assets/javascripts/about.coffee
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://coffeescript.org/
|
@ -19,8 +19,29 @@ const Button = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
|
const style = {
|
||||||
|
fontFamily: 'Roboto',
|
||||||
|
display: this.props.block ? 'block' : 'inline-block',
|
||||||
|
width: this.props.block ? '100%' : 'auto',
|
||||||
|
position: 'relative',
|
||||||
|
boxSizing: 'border-box',
|
||||||
|
textAlign: 'center',
|
||||||
|
border: '10px none',
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: '14px',
|
||||||
|
fontWeight: '500',
|
||||||
|
letterSpacing: '0',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
padding: '0 16px',
|
||||||
|
height: '36px',
|
||||||
|
cursor: 'pointer',
|
||||||
|
lineHeight: '36px',
|
||||||
|
borderRadius: '4px',
|
||||||
|
textDecoration: 'none'
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button className={`button ${this.props.secondary ? 'button-secondary' : ''}`} disabled={this.props.disabled} onClick={this.handleClick} style={{ fontFamily: 'Roboto', display: this.props.block ? 'block' : 'inline-block', width: this.props.block ? '100%' : 'auto', position: 'relative', boxSizing: 'border-box', textAlign: 'center', border: '10px none', color: '#fff', fontSize: '14px', fontWeight: '500', letterSpacing: '0', textTransform: 'uppercase', padding: '0 16px', height: '36px', cursor: 'pointer', lineHeight: '36px', borderRadius: '4px', textDecoration: 'none' }}>
|
<button className={`button ${this.props.secondary ? 'button-secondary' : ''}`} disabled={this.props.disabled} onClick={this.handleClick} style={style}>
|
||||||
{this.props.text || this.props.children}
|
{this.props.text || this.props.children}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
|
41
app/assets/stylesheets/about.scss
Normal file
41
app/assets/stylesheets/about.scss
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
@import url(https://fonts.googleapis.com/css?family=Montserrat);
|
||||||
|
@import url(https://fonts.googleapis.com/css?family=Judson);
|
||||||
|
|
||||||
|
.about-body {
|
||||||
|
.wrapper {
|
||||||
|
width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: #9baec8;
|
||||||
|
padding-top: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font: 46px/52px 'Roboto', sans-serif;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
color: #2b90d9;
|
||||||
|
padding: 20px 0;
|
||||||
|
|
||||||
|
img {
|
||||||
|
margin-bottom: -5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
width: 46px;
|
||||||
|
height: 46px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font: 20px/28px 'Judson', sans-serif;
|
||||||
|
font-weight: 300;
|
||||||
|
margin-bottom: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
em {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 7px 7px 5px 7px;
|
||||||
|
background: #9baec8;
|
||||||
|
color: #282c37;
|
||||||
|
font: 16px/16px 'Montserrat', sans-serif;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
}
|
@ -59,7 +59,7 @@ table {
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Roboto', sans-serif;
|
font-family: 'Roboto', sans-serif;
|
||||||
background: #282c37 image-url('background-photo.jpg');
|
background: #282c37 image-url('background-photo.jpeg');
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
@ -334,4 +334,5 @@ body {
|
|||||||
|
|
||||||
@import 'accounts';
|
@import 'accounts';
|
||||||
@import 'stream_entries';
|
@import 'stream_entries';
|
||||||
@import 'components'
|
@import 'components';
|
||||||
|
@import 'about';
|
||||||
|
@ -1,5 +1,22 @@
|
|||||||
.button {
|
.button {
|
||||||
background-color: #2b90d9;
|
background-color: #2b90d9;
|
||||||
|
font-family: 'Roboto';
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-align: center;
|
||||||
|
border: 10px none;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 0;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 0 16px;
|
||||||
|
height: 36px;
|
||||||
|
cursor: pointer;
|
||||||
|
line-height: 36px;
|
||||||
|
border-radius: 4px;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: #489fde;
|
background-color: #489fde;
|
||||||
|
5
app/controllers/about_controller.rb
Normal file
5
app/controllers/about_controller.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
class AboutController < ApplicationController
|
||||||
|
def index
|
||||||
|
@body_classes = 'about-body'
|
||||||
|
end
|
||||||
|
end
|
@ -10,6 +10,10 @@ class HomeController < ApplicationController
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def authenticate_user!
|
||||||
|
redirect_to about_path unless user_signed_in?
|
||||||
|
end
|
||||||
|
|
||||||
def find_or_create_access_token
|
def find_or_create_access_token
|
||||||
Doorkeeper::AccessToken.find_or_create_for(Doorkeeper::Application.where(superapp: true).first, current_user.id, nil, Doorkeeper.configuration.access_token_expires_in, Doorkeeper.configuration.refresh_token_enabled?)
|
Doorkeeper::AccessToken.find_or_create_for(Doorkeeper::Application.where(superapp: true).first, current_user.id, nil, Doorkeeper.configuration.access_token_expires_in, Doorkeeper.configuration.refresh_token_enabled?)
|
||||||
end
|
end
|
||||||
|
2
app/helpers/about_helper.rb
Normal file
2
app/helpers/about_helper.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
module AboutHelper
|
||||||
|
end
|
19
app/views/about/index.html.haml
Normal file
19
app/views/about/index.html.haml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
.wrapper
|
||||||
|
%h1
|
||||||
|
= image_tag 'logo.png'
|
||||||
|
Mastodon
|
||||||
|
|
||||||
|
%p
|
||||||
|
Mastodon is a
|
||||||
|
%em free, open-source
|
||||||
|
social network server. A
|
||||||
|
%em decentralized
|
||||||
|
alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Anyone can run Mastodon and participate in the
|
||||||
|
%em social network
|
||||||
|
seamlessly.
|
||||||
|
%p
|
||||||
|
%em= Rails.configuration.x.local_domain
|
||||||
|
is a Mastodon instance.
|
||||||
|
|
||||||
|
.actions
|
||||||
|
= link_to 'Get started', new_user_session_path, class: 'button'
|
@ -77,6 +77,8 @@ Rails.application.routes.draw do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get :about, to: 'about#index'
|
||||||
|
|
||||||
root 'home#index'
|
root 'home#index'
|
||||||
|
|
||||||
match '*unmatched_route', via: :all, to: 'application#raise_not_found'
|
match '*unmatched_route', via: :all, to: 'application#raise_not_found'
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
"react-redux": "^4.4.5",
|
"react-redux": "^4.4.5",
|
||||||
"react-redux-loading-bar": "^2.3.3",
|
"react-redux-loading-bar": "^2.3.3",
|
||||||
"react-router": "^2.8.0",
|
"react-router": "^2.8.0",
|
||||||
|
"react-simple-dropdown": "^1.1.4",
|
||||||
"redux": "^3.5.2",
|
"redux": "^3.5.2",
|
||||||
"redux-immutable": "^3.0.8",
|
"redux-immutable": "^3.0.8",
|
||||||
"redux-thunk": "^2.1.0"
|
"redux-thunk": "^2.1.0"
|
||||||
|
12
spec/controllers/about_controller_spec.rb
Normal file
12
spec/controllers/about_controller_spec.rb
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe AboutController, type: :controller do
|
||||||
|
|
||||||
|
describe "GET #index" do
|
||||||
|
it "returns http success" do
|
||||||
|
get :index
|
||||||
|
expect(response).to have_http_status(:success)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
5
spec/helpers/about_helper_spec.rb
Normal file
5
spec/helpers/about_helper_spec.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe AboutHelper, type: :helper do
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user