Adding landing page

This commit is contained in:
Eugen Rochko 2016-09-27 23:12:33 +02:00
parent 45a96e899e
commit e63aebff7a
16 changed files with 141 additions and 8 deletions

View file

@ -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)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

View 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/

View file

@ -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>
); );

View 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;
}
}

View file

@ -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';

View file

@ -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;

View file

@ -0,0 +1,5 @@
class AboutController < ApplicationController
def index
@body_classes = 'about-body'
end
end

View file

@ -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

View file

@ -0,0 +1,2 @@
module AboutHelper
end

View 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'

View file

@ -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'

View file

@ -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"

View 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

View file

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe AboutHelper, type: :helper do
end