home_page 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/fonts/socialicious.eot +0 -0
- data/app/assets/fonts/socialicious.svg +84 -0
- data/app/assets/fonts/socialicious.ttf +0 -0
- data/app/assets/fonts/socialicious.woff +0 -0
- data/app/assets/stylesheets/home_page/application.css +3 -0
- data/app/assets/stylesheets/home_page/base.less +1 -1
- data/app/assets/stylesheets/home_page/bootswatch.css.less +5 -1
- data/app/assets/stylesheets/home_page/loader.css.less +2 -2
- data/app/assets/stylesheets/home_page/pygments.css +63 -0
- data/app/assets/stylesheets/home_page/sign_in.css +40 -0
- data/app/assets/stylesheets/home_page/socialicious.css +655 -0
- data/app/controllers/devise_extensions/registrations_controller.rb +1 -1
- data/app/controllers/devise_extensions/sessions_controller.rb +21 -0
- data/app/controllers/home_page/application_controller.rb +22 -0
- data/app/controllers/users_controller.rb +0 -2
- data/app/helpers/home_page/application_helper.rb +34 -0
- data/app/helpers/home_page/layout_helper.rb +2 -2
- data/app/models/user.rb +4 -0
- data/app/views/devise/sessions/new.html.erb +9 -0
- data/app/views/layouts/application.html.erb +9 -29
- data/app/views/layouts/home_page/sign_in.html.erb +11 -0
- data/app/views/layouts/shared/_flash.html.erb +3 -0
- data/app/views/layouts/shared/_foot.html.erb +1 -0
- data/app/views/layouts/shared/_head.html.erb +10 -0
- data/app/views/layouts/shared/_navigation.html.erb +14 -0
- data/app/views/users/_form.html.erb +3 -1
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/friendly_id.rb +88 -0
- data/config/locales/general/en.yml +6 -0
- data/config/locales/resources/tag/en.yml +4 -0
- data/config/routes.rb +4 -1
- data/db/migrate/20150307152542_create_initial_schema.rb +2 -3
- data/db/migrate/20150307193102_create_friendly_id_slugs.rb +15 -0
- data/lib/home_page.rb +9 -0
- data/lib/home_page/engine.rb +6 -0
- data/lib/home_page/navigation.rb +13 -2
- data/lib/home_page/version.rb +1 -1
- metadata +146 -3
- data/config/initializers/devise.rb +0 -259
@@ -3,7 +3,7 @@ class DeviseExtensions::RegistrationsController < Devise::RegistrationsControlle
|
|
3
3
|
def create
|
4
4
|
build_resource(params[:user])
|
5
5
|
|
6
|
-
captcha_verified = if Rails.env == '
|
6
|
+
captcha_verified = if Rails.env == 'production'
|
7
7
|
verify_recaptcha(model: resource, message: I18n.t('general.exceptions.wrong_recaptcha'))
|
8
8
|
else
|
9
9
|
true
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class DeviseExtensions::SessionsController < Devise::SessionsController
|
2
|
+
layout :layout_by_resource
|
3
|
+
|
4
|
+
# GET /resource/sign_in
|
5
|
+
def new
|
6
|
+
@home_page_stylesheets = ['home_page/application', 'home_page/sign_in']
|
7
|
+
self.resource = resource_class.new(sign_in_params)
|
8
|
+
clean_up_passwords(resource)
|
9
|
+
respond_with(resource, serialize_options(resource))
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def layout_by_resource
|
15
|
+
if devise_controller? && resource_name == :user && action_name == 'new'
|
16
|
+
'home_page/sign_in'
|
17
|
+
else
|
18
|
+
'application'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -7,7 +7,29 @@ class HomePage::ApplicationController < ActionController::Base
|
|
7
7
|
|
8
8
|
rescue_from ActiveRecord::RecordNotFound, with: :not_found
|
9
9
|
|
10
|
+
helper_method :home_page_stylesheets, :home_page_javascripts, :resource
|
11
|
+
|
12
|
+
before_filter :custom_view_path
|
13
|
+
|
14
|
+
def home_page_stylesheets
|
15
|
+
@home_page_stylesheets || ['home_page/application']
|
16
|
+
end
|
17
|
+
|
18
|
+
def home_page_javascripts
|
19
|
+
@home_page_javascripts || ['home_page/application']
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def show_breadcrumbs
|
25
|
+
@show_breadcrumbs = true
|
26
|
+
end
|
27
|
+
|
10
28
|
private
|
29
|
+
|
30
|
+
def custom_view_path
|
31
|
+
prepend_view_path 'app/views/custom'
|
32
|
+
end
|
11
33
|
|
12
34
|
def not_found(e)
|
13
35
|
if Rails.env.development?
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module HomePage
|
2
2
|
module ApplicationHelper
|
3
|
+
include AutoHtml
|
4
|
+
|
3
5
|
# Taken from https://github.com/seyhunak/twitter-bootstrap-rails
|
4
6
|
# Modified to support html in flash message
|
5
7
|
def bootstrap_flash_raw
|
@@ -22,5 +24,37 @@ module HomePage
|
|
22
24
|
|
23
25
|
flash_messages.join("\n").html_safe
|
24
26
|
end
|
27
|
+
|
28
|
+
def markdown(text)
|
29
|
+
syntax_highlighter(
|
30
|
+
auto_html(text) do
|
31
|
+
youtube(width: 515, height: 300)
|
32
|
+
dailymotion(width: 515, height: 300)
|
33
|
+
vimeo(width: 515, height: 300)
|
34
|
+
google_video(width: 515, height: 300)
|
35
|
+
image
|
36
|
+
|
37
|
+
redcarpet(
|
38
|
+
renderer: Redcarpet::Render::XHTML.new(
|
39
|
+
no_images: true, no_styles: true, hard_wrap: true, with_toc_data: true
|
40
|
+
),
|
41
|
+
markdown_options: { no_intra_emphasis: true, autolink: true, fenced_code_blocks: true }
|
42
|
+
)
|
43
|
+
link :target => "_blank", :rel => "nofollow"
|
44
|
+
end.gsub(/(>https?:\/\/[^\<\\]+)/) do |match|
|
45
|
+
truncate(match)
|
46
|
+
end.gsub('<pre>', '').gsub('</pre>', '')
|
47
|
+
).html_safe
|
48
|
+
end
|
49
|
+
|
50
|
+
def syntax_highlighter(html)
|
51
|
+
doc = Nokogiri::HTML(html)
|
52
|
+
|
53
|
+
doc.search("//code[@class]").each do |code|
|
54
|
+
code.replace Albino.colorize(code.text.rstrip, code[:class])
|
55
|
+
end
|
56
|
+
|
57
|
+
doc.to_s
|
58
|
+
end
|
25
59
|
end
|
26
60
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module HomePage
|
2
2
|
module LayoutHelper
|
3
3
|
def breadcrumbs
|
4
|
-
result = render_navigation context:
|
4
|
+
result = render_navigation context: :main, renderer: :breadcrumbs_without_method_links, join_with: ' > '
|
5
5
|
result = result && result.scan('<a').length > 1 ? result : ''
|
6
6
|
|
7
7
|
if respond_to?(:resource) && resource.respond_to?(:ancestors)
|
@@ -21,7 +21,7 @@ module HomePage
|
|
21
21
|
|
22
22
|
def sidenav(links_count = 2)
|
23
23
|
links_count ||= 2
|
24
|
-
result = render_navigation context:
|
24
|
+
result = render_navigation context: :main, renderer: :twitter_sidenav, level: @twitter_sidenav_level
|
25
25
|
|
26
26
|
result && result.scan('<a').length >= links_count ? result : ''
|
27
27
|
end
|
data/app/models/user.rb
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
<%= simple_form_for resource, as: resource_name, url: session_path(resource_name), html: { class: 'form-signin' } do |f| %>
|
2
|
+
<h2 class="form-signin-heading"><%= t('general.sign_in_title') %></h2>
|
3
|
+
<%= f.input :email %>
|
4
|
+
<%= f.input :password %>
|
5
|
+
<%= f.input :remember_me, as: :boolean, label: false, inline_label: t('general.remember_me') %>
|
6
|
+
<%= f.submit t('general.sign_in'), class: 'btn btn-lg btn-primary btn-block' %>
|
7
|
+
<br/>
|
8
|
+
<%= render 'devise/shared/links' %>
|
9
|
+
<% end %>
|
@@ -1,43 +1,23 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html lang="en">
|
3
3
|
<head>
|
4
|
-
|
5
|
-
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7
|
-
<title><%= (yield(:title).blank? ? '' : yield(:title) + ' - ') + t('general.site.title') %></title>
|
8
|
-
<%= stylesheet_link_tag 'home_page/application', media: 'all' %>
|
9
|
-
<%= csrf_meta_tags %>
|
10
|
-
<link href="images/apple-touch-icon-144x144.png" rel="apple-touch-icon-precomposed" sizes="144x144"/>
|
11
|
-
<link href="images/apple-touch-icon-114x114.png" rel="apple-touch-icon-precomposed" sizes="114x114"/>
|
12
|
-
<link href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon-precomposed" sizes="72x72"/>
|
13
|
-
<link href="images/apple-touch-icon.png" rel="apple-touch-icon-precomposed"/>
|
4
|
+
<%= render partial: 'layouts/shared/head' %>
|
14
5
|
</head>
|
15
6
|
<body>
|
16
|
-
|
17
|
-
<div class="container">
|
18
|
-
<div class="navbar-header">
|
19
|
-
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
20
|
-
<span class="icon-bar"></span>
|
21
|
-
<span class="icon-bar"></span>
|
22
|
-
<span class="icon-bar"></span>
|
23
|
-
</button>
|
24
|
-
<a class="navbar-brand" href="#"><%= t('general.site.title') %></a>
|
25
|
-
</div>
|
26
|
-
|
27
|
-
<%= render_navigation context: :main, expand_all: false, renderer: :bootstrap %>
|
28
|
-
</div>
|
29
|
-
</div>
|
7
|
+
<%= render partial: 'layouts/shared/navigation' %>
|
30
8
|
|
31
9
|
<div class="container">
|
32
|
-
|
33
|
-
|
34
|
-
</div>
|
35
|
-
|
10
|
+
<%= render partial: 'layouts/shared/flash' %>
|
11
|
+
|
36
12
|
<div class="content">
|
37
13
|
<% if content_for?(:title) %>
|
38
14
|
<div class="row">
|
39
15
|
<div class="col-md-12">
|
40
16
|
<div class="page-header">
|
17
|
+
<% if @show_breadcrumbs %>
|
18
|
+
<%= raw breadcrumbs %><br/>
|
19
|
+
<% end %>
|
20
|
+
|
41
21
|
<h2 id="title"><%= yield :title %></h2>
|
42
22
|
</div>
|
43
23
|
</div>
|
@@ -51,6 +31,6 @@
|
|
51
31
|
</div>
|
52
32
|
</div>
|
53
33
|
|
54
|
-
<%=
|
34
|
+
<%= render partial: 'layouts/shared/foot' %>
|
55
35
|
</body>
|
56
36
|
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= javascript_include_tag *home_page_javascripts %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<meta charset="utf-8">
|
2
|
+
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
3
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
4
|
+
<title><%= (yield(:title).blank? ? '' : yield(:title) + ' - ') + t('general.site.title') %></title>
|
5
|
+
<%= stylesheet_link_tag *home_page_stylesheets, media: 'all' %>
|
6
|
+
<%= csrf_meta_tags %>
|
7
|
+
<link href="images/apple-touch-icon-144x144.png" rel="apple-touch-icon-precomposed" sizes="144x144"/>
|
8
|
+
<link href="images/apple-touch-icon-114x114.png" rel="apple-touch-icon-precomposed" sizes="114x114"/>
|
9
|
+
<link href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon-precomposed" sizes="72x72"/>
|
10
|
+
<link href="images/apple-touch-icon.png" rel="apple-touch-icon-precomposed"/>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<div class="navbar navbar-inverse navbar-fixed-top">
|
2
|
+
<div class="container">
|
3
|
+
<div class="navbar-header">
|
4
|
+
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
5
|
+
<span class="icon-bar"></span>
|
6
|
+
<span class="icon-bar"></span>
|
7
|
+
<span class="icon-bar"></span>
|
8
|
+
</button>
|
9
|
+
<a class="navbar-brand" href="<%= root_path %>"><%= t('general.index.title') %></a>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<%= render_navigation context: :main, expand_all: false, renderer: :bootstrap %>
|
13
|
+
</div>
|
14
|
+
</div>
|
@@ -14,8 +14,10 @@
|
|
14
14
|
|
15
15
|
<div class="form-group">
|
16
16
|
<div class="col-sm-offset-3 col-sm-9">
|
17
|
-
|
17
|
+
<% if resource.new_record? && (Rails.env == 'production') %>
|
18
|
+
<%= recaptcha_tags %>
|
18
19
|
<br/>
|
20
|
+
<% end %>
|
19
21
|
<%= f.button :submit %>
|
20
22
|
<br/>
|
21
23
|
<br/>
|
@@ -0,0 +1 @@
|
|
1
|
+
#Rails.application.config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# FriendlyId Global Configuration
|
2
|
+
#
|
3
|
+
# Use this to set up shared configuration options for your entire application.
|
4
|
+
# Any of the configuration options shown here can also be applied to single
|
5
|
+
# models by passing arguments to the `friendly_id` class method or defining
|
6
|
+
# methods in your model.
|
7
|
+
#
|
8
|
+
# To learn more, check out the guide:
|
9
|
+
#
|
10
|
+
# http://norman.github.io/friendly_id/file.Guide.html
|
11
|
+
|
12
|
+
FriendlyId.defaults do |config|
|
13
|
+
# ## Reserved Words
|
14
|
+
#
|
15
|
+
# Some words could conflict with Rails's routes when used as slugs, or are
|
16
|
+
# undesirable to allow as slugs. Edit this list as needed for your app.
|
17
|
+
config.use :reserved
|
18
|
+
|
19
|
+
config.reserved_words = %w(new edit index session login logout users admin
|
20
|
+
stylesheets assets javascripts images)
|
21
|
+
|
22
|
+
# ## Friendly Finders
|
23
|
+
#
|
24
|
+
# Uncomment this to use friendly finders in all models. By default, if
|
25
|
+
# you wish to find a record by its friendly id, you must do:
|
26
|
+
#
|
27
|
+
# MyModel.friendly.find('foo')
|
28
|
+
#
|
29
|
+
# If you uncomment this, you can do:
|
30
|
+
#
|
31
|
+
# MyModel.find('foo')
|
32
|
+
#
|
33
|
+
# This is significantly more convenient but may not be appropriate for
|
34
|
+
# all applications, so you must explicity opt-in to this behavior. You can
|
35
|
+
# always also configure it on a per-model basis if you prefer.
|
36
|
+
#
|
37
|
+
# Something else to consider is that using the :finders addon boosts
|
38
|
+
# performance because it will avoid Rails-internal code that makes runtime
|
39
|
+
# calls to `Module.extend`.
|
40
|
+
#
|
41
|
+
# config.use :finders
|
42
|
+
#
|
43
|
+
# ## Slugs
|
44
|
+
#
|
45
|
+
# Most applications will use the :slugged module everywhere. If you wish
|
46
|
+
# to do so, uncomment the following line.
|
47
|
+
#
|
48
|
+
# config.use :slugged
|
49
|
+
#
|
50
|
+
# By default, FriendlyId's :slugged addon expects the slug column to be named
|
51
|
+
# 'slug', but you can change it if you wish.
|
52
|
+
#
|
53
|
+
# config.slug_column = 'slug'
|
54
|
+
#
|
55
|
+
# When FriendlyId can not generate a unique ID from your base method, it appends
|
56
|
+
# a UUID, separated by a single dash. You can configure the character used as the
|
57
|
+
# separator. If you're upgrading from FriendlyId 4, you may wish to replace this
|
58
|
+
# with two dashes.
|
59
|
+
#
|
60
|
+
# config.sequence_separator = '-'
|
61
|
+
#
|
62
|
+
# ## Tips and Tricks
|
63
|
+
#
|
64
|
+
# ### Controlling when slugs are generated
|
65
|
+
#
|
66
|
+
# As of FriendlyId 5.0, new slugs are generated only when the slug field is
|
67
|
+
# nil, but if you're using a column as your base method can change this
|
68
|
+
# behavior by overriding the `should_generate_new_friendly_id` method that
|
69
|
+
# FriendlyId adds to your model. The change below makes FriendlyId 5.0 behave
|
70
|
+
# more like 4.0.
|
71
|
+
#
|
72
|
+
# config.use Module.new {
|
73
|
+
# def should_generate_new_friendly_id?
|
74
|
+
# slug.blank? || <your_column_name_here>_changed?
|
75
|
+
# end
|
76
|
+
# }
|
77
|
+
#
|
78
|
+
# FriendlyId uses Rails's `parameterize` method to generate slugs, but for
|
79
|
+
# languages that don't use the Roman alphabet, that's not usually sufficient.
|
80
|
+
# Here we use the Babosa library to transliterate Russian Cyrillic slugs to
|
81
|
+
# ASCII. If you use this, don't forget to add "babosa" to your Gemfile.
|
82
|
+
#
|
83
|
+
# config.use Module.new {
|
84
|
+
# def normalize_friendly_id(text)
|
85
|
+
# text.to_slug.normalize! :transliterations => [:russian, :latin]
|
86
|
+
# end
|
87
|
+
# }
|
88
|
+
end
|
@@ -5,11 +5,17 @@ en:
|
|
5
5
|
|
6
6
|
index:
|
7
7
|
title: Home
|
8
|
+
sign_in_title: Please sign in
|
9
|
+
sign_in: Sign in
|
10
|
+
remember_me: Remember me
|
8
11
|
submit: Submit
|
9
12
|
new: New
|
10
13
|
edit: Edit
|
11
14
|
destroy: Destroy
|
12
15
|
actions: Actions
|
16
|
+
coming_soon: Coming soon
|
17
|
+
back_to_top: Back to top
|
18
|
+
powered_by_home_page_software: Powered by %{link}.
|
13
19
|
|
14
20
|
form:
|
15
21
|
errors_count: '%{count} prohibited this object from being saved:'
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
|
-
devise_for :users, controllers: {
|
2
|
+
devise_for :users, controllers: {
|
3
|
+
registrations: 'devise_extensions/registrations',
|
4
|
+
sessions: 'devise_extensions/sessions'
|
5
|
+
}
|
3
6
|
|
4
7
|
resources :users, only: [:index, :edit, :update, :destroy]
|
5
8
|
|
@@ -39,6 +39,7 @@ class CreateInitialSchema < ActiveRecord::Migration
|
|
39
39
|
t.timestamps
|
40
40
|
end
|
41
41
|
|
42
|
+
add_index :users, :slug, unique: true
|
42
43
|
add_index :users, :name, unique: true
|
43
44
|
add_index :users, :email, unique: true
|
44
45
|
add_index :users, :reset_password_token, unique: true
|
@@ -46,8 +47,6 @@ class CreateInitialSchema < ActiveRecord::Migration
|
|
46
47
|
end
|
47
48
|
|
48
49
|
def self.down
|
49
|
-
|
50
|
-
# model already existed. Please edit below which fields you would like to remove in this migration.
|
51
|
-
raise ActiveRecord::IrreversibleMigration
|
50
|
+
drop_table :users
|
52
51
|
end
|
53
52
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateFriendlyIdSlugs < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :friendly_id_slugs do |t|
|
4
|
+
t.string :slug, :null => false
|
5
|
+
t.integer :sluggable_id, :null => false
|
6
|
+
t.string :sluggable_type, :limit => 50
|
7
|
+
t.string :scope
|
8
|
+
t.datetime :created_at
|
9
|
+
end
|
10
|
+
add_index :friendly_id_slugs, :sluggable_id
|
11
|
+
add_index :friendly_id_slugs, [:slug, :sluggable_type]
|
12
|
+
add_index :friendly_id_slugs, [:slug, :sluggable_type, :scope], :unique => true
|
13
|
+
add_index :friendly_id_slugs, :sluggable_type
|
14
|
+
end
|
15
|
+
end
|