Initial commit

This commit is contained in:
Nicolas VARROT 2016-11-08 18:56:02 +01:00
commit fd75f24ef6
115 changed files with 5323 additions and 0 deletions

21
.gitignore vendored Executable file
View File

@ -0,0 +1,21 @@
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config.
/.bundle
# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal
# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore Byebug command history file.
.byebug_history

57
Gemfile Executable file
View File

@ -0,0 +1,57 @@
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
gem 'haml'
gem 'bootstrap-sass'
gem 'font-awesome-sass'
gem 'gmaps4rails'
gem 'underscore-rails'
source 'https://rails-assets.org/' do
gem 'rails-assets-adminlte'
end
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platform: :mri
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console'
gem 'listen', '~> 3.0.5'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

193
Gemfile.lock Executable file
View File

@ -0,0 +1,193 @@
GEM
remote: https://rubygems.org/
remote: https://rails-assets.org/
specs:
actioncable (5.0.0.1)
actionpack (= 5.0.0.1)
nio4r (~> 1.2)
websocket-driver (~> 0.6.1)
actionmailer (5.0.0.1)
actionpack (= 5.0.0.1)
actionview (= 5.0.0.1)
activejob (= 5.0.0.1)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.0.0.1)
actionview (= 5.0.0.1)
activesupport (= 5.0.0.1)
rack (~> 2.0)
rack-test (~> 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.0.0.1)
activesupport (= 5.0.0.1)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
activejob (5.0.0.1)
activesupport (= 5.0.0.1)
globalid (>= 0.3.6)
activemodel (5.0.0.1)
activesupport (= 5.0.0.1)
activerecord (5.0.0.1)
activemodel (= 5.0.0.1)
activesupport (= 5.0.0.1)
arel (~> 7.0)
activesupport (5.0.0.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
arel (7.1.4)
autoprefixer-rails (6.5.1.1)
execjs
bootstrap-sass (3.3.7)
autoprefixer-rails (>= 5.2.1)
sass (>= 3.3.4)
builder (3.2.2)
byebug (9.0.6)
coffee-rails (4.2.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.2.x)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.10.0)
concurrent-ruby (1.0.2)
debug_inspector (0.0.2)
erubis (2.7.0)
execjs (2.7.0)
ffi (1.9.14)
font-awesome-sass (4.7.0)
sass (>= 3.2)
globalid (0.3.7)
activesupport (>= 4.1.0)
gmaps4rails (2.1.2)
haml (4.0.7)
tilt
i18n (0.7.0)
jbuilder (2.6.0)
activesupport (>= 3.0.0, < 5.1)
multi_json (~> 1.2)
jquery-rails (4.2.1)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
loofah (2.0.3)
nokogiri (>= 1.5.9)
mail (2.6.4)
mime-types (>= 1.16, < 4)
method_source (0.8.2)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_portile2 (2.1.0)
minitest (5.9.1)
multi_json (1.12.1)
nio4r (1.2.1)
nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0)
puma (3.6.0)
rack (2.0.1)
rack-test (0.6.3)
rack (>= 1.0)
rails (5.0.0.1)
actioncable (= 5.0.0.1)
actionmailer (= 5.0.0.1)
actionpack (= 5.0.0.1)
actionview (= 5.0.0.1)
activejob (= 5.0.0.1)
activemodel (= 5.0.0.1)
activerecord (= 5.0.0.1)
activesupport (= 5.0.0.1)
bundler (>= 1.3.0, < 2.0)
railties (= 5.0.0.1)
sprockets-rails (>= 2.0.0)
rails-assets-adminlte (2.3.7)
rails-dom-testing (2.0.1)
activesupport (>= 4.2.0, < 6.0)
nokogiri (~> 1.6.0)
rails-html-sanitizer (1.0.3)
loofah (~> 2.0)
railties (5.0.0.1)
actionpack (= 5.0.0.1)
activesupport (= 5.0.0.1)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (11.3.0)
rb-fsevent (0.9.8)
rb-inotify (0.9.7)
ffi (>= 0.5.0)
sass (3.4.22)
sass-rails (5.0.6)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
spring (2.0.0)
activesupport (>= 4.2)
spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0)
sprockets (3.7.0)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.0)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
sqlite3 (1.3.12)
thor (0.19.1)
thread_safe (0.3.5)
tilt (2.0.5)
turbolinks (5.0.1)
turbolinks-source (~> 5)
turbolinks-source (5.0.0)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (3.0.3)
execjs (>= 0.3.0, < 3)
underscore-rails (1.8.3)
web-console (3.4.0)
actionview (>= 5.0)
activemodel (>= 5.0)
debug_inspector
railties (>= 5.0)
websocket-driver (0.6.4)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)
PLATFORMS
ruby
DEPENDENCIES
bootstrap-sass
byebug
coffee-rails (~> 4.2)
font-awesome-sass
gmaps4rails
haml
jbuilder (~> 2.5)
jquery-rails
listen (~> 3.0.5)
puma (~> 3.0)
rails (~> 5.0.0, >= 5.0.0.1)
rails-assets-adminlte!
sass-rails (~> 5.0)
spring
spring-watcher-listen (~> 2.0.0)
sqlite3
turbolinks (~> 5)
tzinfo-data
uglifier (>= 1.3.0)
underscore-rails
web-console
BUNDLED WITH
1.13.5

24
README.md Executable file
View File

@ -0,0 +1,24 @@
# README
This README would normally document whatever steps are necessary to get the
application up and running.
Things you may want to cover:
* Ruby version
* System dependencies
* Configuration
* Database creation
* Database initialization
* How to run the test suite
* Services (job queues, cache servers, search engines, etc.)
* Deployment instructions
* ...

6
Rakefile Executable file
View File

@ -0,0 +1,6 @@
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require_relative 'config/application'
Rails.application.load_tasks

3
app/assets/config/manifest.js Executable file
View File

@ -0,0 +1,3 @@
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css

0
app/assets/images/.keep Executable file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
app/assets/images/logo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 321.1 130.1" style="enable-background:new 0 0 321.1 130.1;" xml:space="preserve">
<style type="text/css">
.st0{fill:#3C6A82;}
</style>
<g>
<g>
<path class="st0" d="M52.1,67.8C51.4,75,51.3,87,51.3,94.1c0,1.1,0.9,2.2,0.6,3.3c-0.4,1.6-4.7,4.8-6.5,4.8
c-3.7,0-4.9-4.1-6.2-5.9c-5.7-9.1-13.3-19.1-25.4-22.9c-0.7,10.9,0.9,20.4-0.1,24.4c-0.7,3-8.3,4.4-10.1,4.4
c-5.4,0-3.1-21.1-3.1-25.3c0-21.2-0.1-46.5,0.7-67.6C1.4,6,2,4.9,4.2,4.2C5.8,3.6,10.6,2.8,14.4,3c3.2,0.1,2.5,2.5,3.7,5.1
c-2.2,15.7-4.2,39.8-3.8,55.8c8.5,0.2,16-1.4,24.5-1.2c-0.6-13.9,0.6-31.9,0.6-45.8c0-13.2,5.3-11.7,14.4-13.6
c3,1,2.5,2.3,3.7,5.1c-1.7,11.5-5.2,42.2-5.1,54.1c4.9-0.4,8.3-1,13.4-1c2.7,0,3.3,5.6,0,5.6C61.8,67,56.1,67.7,52.1,67.8z
M39,68.8c0,0-12,0.1-17.4,1c6.5,2.7,14.8,9.9,17.6,16.8C39.2,81.7,39,73.8,39,68.8z"/>
<path class="st0" d="M82.7,95.3c-11.5,0-18.9-12.7-18.9-22.8c0-13.2,5.1-37.4,21.7-37.4c8,0,13,10.4,13,17.4
c0,7.9-6.2,18.5-15.3,18.5c-2.1,0-5.7-0.2-7.8-0.6c-0.5,6.5,2.8,17.5,9.3,17.5c7,0,14.8-9.7,16.8-15.2c0.7-2,7.3-3.2,5.6,2.2
C103.7,85.4,94.1,95.3,82.7,95.3z M84.9,41.2c-4.2,0-7.5,13.3-8.6,22.2c1.7,0.1,6.3,0.6,8,0.6c2.8,0,7.5-4.9,7.5-9.7
C91.8,50.7,90.7,41.2,84.9,41.2z"/>
<path class="st0" d="M165.7,118.4c-1,0-2.1-0.5-2.6-1.5c-5.9-10.7-11.6-11.8-18.9-14.7c0.1,4.9,1,7.3,1,12.2
c0,9.7-10.5,15.7-21.8,15.7c-10.1,0-17.6-6.5-17.6-13.1c0-13.8,14.8-18.1,29.8-22.2c0-3.3-1-18-1.9-20.8
c-1.1,3.8-6.3,15.5-14.6,15.5c-14.9,0-17-18.3-17-29.5c0-3.7,2-25.7,4.9-27.4c0.7-0.4,1.2-0.7,3.2-0.6c3.7,0.2,8.6,0.2,8.3,5.4
c-1,11.2-3.7,19.2-3.7,33.9c0,4.9,0.5,11,7,11c4.8,0,8.1-8.9,10-14.8c-1.7-7.8-7.8-23.4-7.8-27.4c0-0.2,0.1-0.5,0.1-0.6
c1-3.2,5.2-5.8,7.6-5.8c0.4,0,0.6,0,0.9,0.1c5.8,2.5,10,45,10.7,60.7c7.4,0,23.8,12.1,25.2,19.1c0.1,0.5,0.1,0.9,0.1,1.2
C168.8,117.3,167.3,118.4,165.7,118.4z M135.9,102c-9.7,2.2-16.2,8.3-16.2,14.1c0,3.3,2,7.3,6,7.3c6.7,0,10.9-2.3,10.9-7.6
C136.7,110.6,136.4,106.9,135.9,102z"/>
<path class="st0" d="M182,67.8c0,8.6-10,27.6-20.1,27.6c-11.3,0-13-17.8-13-26.8c0-19.9,4.1-45,6-65.5C155.2,1,156,0,158.4,0
c1.5,0,2.3,0.2,5.4,0.2c2.2,0,3.5,1.4,3.3,3.2c-0.6,20.5-6.5,40.3-6.5,60.9c0,10.2,1.2,20.4,5.2,20.1c7.6-0.4,9.4-13.1,12.1-19.6
c0.4-0.9,1.5-1.1,2.2-1.1c1,0,1.9,1,1.9,3.8V67.8z"/>
<path class="st0" d="M185.3,94.6c-5.8,0-10.2-5.8-10.2-14.3c0-11.7,1.2-21.7,1.2-34.7v-3.7c0-2.3,1-3.7,3.2-3.7
c1.5,0,5.6,0.4,6.9,0.6c1.5,0.1,2,1.5,1.9,2.7c-0.9,11-1.9,25.3-1.9,35.6c0,5.7,1.2,8.1,3,8.1c5.4,0,8.9-15.8,10.6-22.1
c0.2-1.1,1.6-1.6,2.6-1.6c1.1,0,1.9,1,1.9,3.7C204.4,74,197.5,94.6,185.3,94.6z M184.2,23.3c-3.5,0-6.5-2.5-6.7-6.7v-0.2
c-0.1-3.1,2.6-6.3,7-6.3c4.2,0,6.5,2.6,6.5,6.4C191.1,21.2,187.5,23.3,184.2,23.3z"/>
<path class="st0" d="M234.7,98.2c-4.3,0-4.9-7.2-6.4-11c-4.6,6.8-6.8,9.7-14.1,9.7c-13.4,0-17.1-14.4-17.1-28.9
c0-9,1.5-18,2.8-23.4c1.2-4.7,3-5.4,11.6-5.7c2.2,0,2.5,0.5,2.5,2.6c0,1.1-2.3,9.6-3,11.6c-0.9,3.2-2.2,12.3-2.2,19.7
c0,8.1,2.6,15.7,8.1,15.7c5.9,0,9.3-7,9.9-12.6c0.4-3.5,0.4-30.2,0.4-32.1c0-4.4,0.7-7.5,6.2-7.5c1.2,0,2-0.9,3.3-0.9
c1.7,0,3.1,0.5,3.1,2.5c0,4.6-1,9.3-1,14.7c0,4.1-3.6,23.6-3.6,30.5c0,3.9,0.4,6.9,1.5,6.9c7.3,0,12.2-23.8,13.4-29.1
c0.2-1.1,1.4-2,2.5-2c0.9,0,1.7,0.9,1.7,3C254.4,71,246.8,98.2,234.7,98.2z"/>
<path class="st0" d="M302,99.8c-8.3,0-9.6-10.5-9.3-19.2c0.1-6.4,1.4-13.6,2-20c0.4-3.5,0.9-7,0.9-10.6c0-1.2-0.1-3.2-1.9-3.2
c-2.2,0-5.4,3.5-6.3,5.3c-3.8,7.8-5.4,28.1-5.4,37c-2,1.4-5.1,2.7-7.4,2.7c-2.1,0-3.1-1.2-3.1-3.3c0-13.9,5.3-28.5,5.3-40.8
c0-1.6-0.1-5.3-2.5-5.3c-4.4,0-14.1,14.1-14.9,18.1c-0.2,1-0.1,2.2-0.1,3.1c0,7.2,0.2,14.3,0.2,21.5c0,1.9,0,3.7-0.1,5.6
c-1.4,1.4-4.7,2.1-6.7,2.1c-1.6,0-3.7-0.5-3.7-2.5c0-11.3-1-22.7-1-33.9c0-2.8-0.5-18.3,3.2-18.3c2.6,0,5.1,0,7.6,0.5l1.4,1.7
c-0.1,3.8-0.1,7.6-0.5,11.5c2.8-5.6,10.6-18.5,17.6-18.5c5.6,0,7.8,8.5,8.6,12.6c3.9-4.3,8.6-8.5,14.9-8.5c6.2,0,7,6.2,7,11.1
c0,11.3-3.9,22.6-3.9,33.9c0,2.3,0.4,4.4,2.2,6.2c5.4-0.1,8.8-19.7,10.7-23.9c0.4-0.9,0.9-1.6,1.9-1.6c1.6,0,2.5,1.9,2.2,3.1
C320.2,73.6,312.3,99.8,302,99.8z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="595.281px" height="245.095px" viewBox="0 296.445 595.281 245.095" enable-background="new 0 296.445 595.281 245.095"
xml:space="preserve">
<g>
<g>
<path fill="#FFFFFF" d="M96.587,426.043c-1.297,13.349-1.482,35.595-1.482,48.757c0,2.04,1.668,4.079,1.112,6.118
c-0.742,2.966-8.714,8.898-12.051,8.898c-6.859,0-9.084-7.601-11.494-10.938c-10.566-16.87-24.656-35.409-47.088-42.454
c-1.298,20.207,1.668,37.819-0.186,45.234c-1.298,5.562-15.388,8.157-18.725,8.157c-10.011,0-5.747-39.116-5.747-46.903
c0-39.302-0.185-86.205,1.298-125.322c0.371-6.118,1.483-8.157,5.562-9.455c2.967-1.112,11.865-2.596,18.91-2.225
c5.933,0.185,4.635,4.635,6.859,9.455c-4.079,29.106-7.786,73.784-7.045,103.446c15.758,0.371,29.662-2.595,45.42-2.225
c-1.112-25.769,1.112-59.139,1.112-84.908c0-24.471,9.825-21.69,26.696-25.212c5.562,1.854,4.635,4.264,6.859,9.455
c-3.152,21.32-9.641,78.234-9.455,100.295c9.084-0.742,15.387-1.854,24.842-1.854c5.006,0,6.118,10.381,0,10.381
C114.57,424.561,104.003,425.857,96.587,426.043z M72.302,427.897c0,0-22.247,0.185-32.258,1.854
c12.05,5.006,27.438,18.354,32.628,31.146C72.672,451.813,72.302,437.166,72.302,427.897z"/>
<path fill="#FFFFFF" d="M153.316,477.024c-21.32,0-35.039-23.544-35.039-42.268c0-24.472,9.455-69.335,40.229-69.335
c14.831,0,24.101,19.28,24.101,32.257c0,14.646-11.494,34.297-28.364,34.297c-3.894,0-10.567-0.371-14.461-1.112
c-0.927,12.05,5.191,32.443,17.241,32.443c12.978,0,27.438-17.983,31.146-28.18c1.298-3.707,13.533-5.932,10.382,4.079
C192.247,458.672,174.45,477.024,153.316,477.024z M157.394,376.73c-7.786,0-13.904,24.657-15.943,41.156
c3.151,0.185,11.68,1.112,14.831,1.112c5.19,0,13.904-9.084,13.904-17.983C170.186,394.342,168.147,376.73,157.394,376.73z"/>
<path fill="#FFFFFF" d="M307.188,519.85c-1.854,0-3.894-0.927-4.82-2.781c-10.938-19.836-21.506-21.875-35.039-27.252
c0.186,9.084,1.854,13.533,1.854,22.617c0,17.983-19.466,29.106-40.415,29.106c-18.724,0-32.628-12.051-32.628-24.286
c0-25.583,27.438-33.555,55.245-41.156c0-6.117-1.854-33.369-3.522-38.561c-2.039,7.045-11.679,28.735-27.066,28.735
c-27.622,0-31.516-33.926-31.516-54.689c0-6.859,3.708-47.645,9.084-50.796c1.298-0.742,2.225-1.298,5.933-1.112
c6.859,0.371,15.943,0.371,15.387,10.011c-1.854,20.763-6.859,35.594-6.859,62.847c0,9.084,0.927,20.393,12.978,20.393
c8.898,0,15.017-16.5,18.539-27.438c-3.152-14.46-14.461-43.381-14.461-50.796c0-0.371,0.186-0.927,0.186-1.112
c1.854-5.933,9.641-10.752,14.09-10.752c0.741,0,1.112,0,1.668,0.185c10.753,4.635,18.539,83.424,19.837,112.531
c13.719,0,44.122,22.432,46.718,35.409c0.186,0.927,0.186,1.668,0.186,2.225C312.935,517.811,310.154,519.85,307.188,519.85z
M251.942,489.446c-17.982,4.078-30.033,15.387-30.033,26.14c0,6.117,3.708,13.533,11.124,13.533
c12.421,0,20.207-4.265,20.207-14.09C253.426,505.39,252.869,498.53,251.942,489.446z"/>
<path fill="#FFFFFF" d="M337.406,426.043c0,15.943-18.539,51.167-37.263,51.167c-20.949,0-24.101-32.999-24.101-49.684
c0-36.892,7.601-83.425,11.123-121.429c0.556-3.893,2.039-5.747,6.488-5.747c2.781,0,4.265,0.371,10.012,0.371
c4.078,0,6.488,2.595,6.117,5.932c-1.112,38.005-12.05,74.711-12.05,112.901c0,18.909,2.225,37.819,9.64,37.263
c14.09-0.741,17.427-24.285,22.433-36.336c0.741-1.668,2.78-2.039,4.078-2.039c1.854,0,3.522,1.854,3.522,7.045V426.043
L337.406,426.043z"/>
<path fill="#FFFFFF" d="M343.524,475.728c-10.753,0-18.91-10.753-18.91-26.511c0-21.69,2.225-40.229,2.225-64.33v-6.859
c0-4.264,1.854-6.859,5.933-6.859c2.781,0,10.382,0.742,12.792,1.112c2.78,0.186,3.708,2.781,3.522,5.005
c-1.669,20.393-3.522,46.903-3.522,65.998c0,10.567,2.225,15.017,5.562,15.017c10.011,0,16.5-29.291,19.651-40.971
c0.37-2.04,2.966-2.966,4.82-2.966c2.039,0,3.521,1.854,3.521,6.859C378.933,437.537,366.141,475.728,343.524,475.728z
M341.484,343.546c-6.488,0-12.05-4.635-12.421-12.421v-0.371c-0.185-5.747,4.82-11.68,12.978-11.68
c7.786,0,12.05,4.82,12.05,11.865C354.276,339.652,347.602,343.546,341.484,343.546z"/>
<path fill="#FFFFFF" d="M435.105,482.401c-7.972,0-9.084-13.349-11.864-20.393c-8.528,12.606-12.606,17.982-26.14,17.982
c-24.843,0-31.702-26.696-31.702-53.577c0-16.685,2.781-33.37,5.191-43.381c2.225-8.713,5.562-10.011,21.505-10.567
c4.078,0,4.635,0.927,4.635,4.82c0,2.04-4.264,17.797-5.562,21.505c-1.669,5.933-4.079,22.803-4.079,36.521
c0,15.017,4.82,29.105,15.017,29.105c10.938,0,17.241-12.977,18.354-23.358c0.741-6.488,0.741-55.987,0.741-59.509
c0-8.157,1.298-13.904,11.494-13.904c2.225,0,3.708-1.668,6.118-1.668c3.151,0,5.747,0.927,5.747,4.635
c0,8.528-1.854,17.241-1.854,27.252c0,7.601-6.675,43.752-6.675,56.543c0,7.23,0.742,12.792,2.781,12.792
c13.533,0,22.617-44.122,24.842-53.948c0.371-2.039,2.596-3.708,4.635-3.708c1.669,0,3.151,1.668,3.151,5.562
C471.627,431.976,457.538,482.401,435.105,482.401z"/>
<path fill="#FFFFFF" d="M559.872,485.367c-15.388,0-17.798-19.466-17.241-35.595c0.186-11.864,2.596-25.212,3.707-37.077
c0.742-6.489,1.669-12.977,1.669-19.651c0-2.225-0.186-5.932-3.522-5.932c-4.078,0-10.011,6.489-11.68,9.826
c-7.044,14.46-10.011,52.094-10.011,68.594c-3.708,2.595-9.454,5.005-13.719,5.005c-3.893,0-5.747-2.225-5.747-6.117
c0-25.77,9.826-52.836,9.826-75.639c0-2.966-0.186-9.826-4.635-9.826c-8.157,0-26.14,26.14-27.623,33.555
c-0.371,1.854-0.186,4.079-0.186,5.747c0,13.348,0.371,26.511,0.371,39.858c0,3.522,0,6.859-0.186,10.382
c-2.596,2.596-8.713,3.894-12.421,3.894c-2.966,0-6.859-0.928-6.859-4.635c0-20.949-1.854-42.083-1.854-62.847
c0-5.191-0.928-33.926,5.932-33.926c4.82,0,9.455,0,14.09,0.927l2.596,3.151c-0.186,7.045-0.186,14.089-0.927,21.32
c5.19-10.382,19.65-34.297,32.628-34.297c10.382,0,14.46,15.758,15.943,23.359c7.229-7.972,15.943-15.758,27.623-15.758
c11.493,0,12.977,11.494,12.977,20.578c0,20.949-7.229,41.898-7.229,62.846c0,4.265,0.741,8.157,4.078,11.494
c10.011-0.185,16.314-36.521,19.837-44.307c0.741-1.668,1.668-2.966,3.522-2.966c2.966,0,4.634,3.522,4.078,5.747
C593.612,436.796,578.967,485.367,559.872,485.367z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

45
app/assets/images/titre.svg Executable file
View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 321.1 130.1" style="enable-background:new 0 0 321.1 130.1;" xml:space="preserve">
<g>
<g>
<path d="M52.1,67.8C51.4,75,51.3,87,51.3,94.1c0,1.1,0.9,2.2,0.6,3.3c-0.4,1.6-4.7,4.8-6.5,4.8c-3.7,0-4.9-4.1-6.2-5.9
c-5.7-9.1-13.3-19.1-25.4-22.9c-0.7,10.9,0.9,20.4-0.1,24.4c-0.7,3-8.3,4.4-10.1,4.4c-5.4,0-3.1-21.1-3.1-25.3
c0-21.2-0.1-46.5,0.7-67.6C1.4,6,2,4.9,4.2,4.2C5.8,3.6,10.6,2.8,14.4,3c3.2,0.1,2.5,2.5,3.7,5.1c-2.2,15.7-4.2,39.8-3.8,55.8
c8.5,0.2,16-1.4,24.5-1.2c-0.6-13.9,0.6-31.9,0.6-45.8c0-13.2,5.3-11.7,14.4-13.6c3,1,2.5,2.3,3.7,5.1
c-1.7,11.5-5.2,42.2-5.1,54.1c4.9-0.4,8.3-1,13.4-1c2.7,0,3.3,5.6,0,5.6C61.8,67,56.1,67.7,52.1,67.8z M39,68.8c0,0-12,0.1-17.4,1
c6.5,2.7,14.8,9.9,17.6,16.8C39.2,81.7,39,73.8,39,68.8z"/>
<path d="M82.7,95.3c-11.5,0-18.9-12.7-18.9-22.8c0-13.2,5.1-37.4,21.7-37.4c8,0,13,10.4,13,17.4c0,7.9-6.2,18.5-15.3,18.5
c-2.1,0-5.7-0.2-7.8-0.6c-0.5,6.5,2.8,17.5,9.3,17.5c7,0,14.8-9.7,16.8-15.2c0.7-2,7.3-3.2,5.6,2.2
C103.7,85.4,94.1,95.3,82.7,95.3z M84.9,41.2c-4.2,0-7.5,13.3-8.6,22.2c1.7,0.1,6.3,0.6,8,0.6c2.8,0,7.5-4.9,7.5-9.7
C91.8,50.7,90.7,41.2,84.9,41.2z"/>
<path d="M165.7,118.4c-1,0-2.1-0.5-2.6-1.5c-5.9-10.7-11.6-11.8-18.9-14.7c0.1,4.9,1,7.3,1,12.2c0,9.7-10.5,15.7-21.8,15.7
c-10.1,0-17.6-6.5-17.6-13.1c0-13.8,14.8-18.1,29.8-22.2c0-3.3-1-18-1.9-20.8c-1.1,3.8-6.3,15.5-14.6,15.5
c-14.9,0-17-18.3-17-29.5c0-3.7,2-25.7,4.9-27.4c0.7-0.4,1.2-0.7,3.2-0.6c3.7,0.2,8.6,0.2,8.3,5.4c-1,11.2-3.7,19.2-3.7,33.9
c0,4.9,0.5,11,7,11c4.8,0,8.1-8.9,10-14.8c-1.7-7.8-7.8-23.4-7.8-27.4c0-0.2,0.1-0.5,0.1-0.6c1-3.2,5.2-5.8,7.6-5.8
c0.4,0,0.6,0,0.9,0.1c5.8,2.5,10,45,10.7,60.7c7.4,0,23.8,12.1,25.2,19.1c0.1,0.5,0.1,0.9,0.1,1.2
C168.8,117.3,167.3,118.4,165.7,118.4z M135.9,102c-9.7,2.2-16.2,8.3-16.2,14.1c0,3.3,2,7.3,6,7.3c6.7,0,10.9-2.3,10.9-7.6
C136.7,110.6,136.4,106.9,135.9,102z"/>
<path d="M182,67.8c0,8.6-10,27.6-20.1,27.6c-11.3,0-13-17.8-13-26.8c0-19.9,4.1-45,6-65.5C155.2,1,156,0,158.4,0
c1.5,0,2.3,0.2,5.4,0.2c2.2,0,3.5,1.4,3.3,3.2c-0.6,20.5-6.5,40.3-6.5,60.9c0,10.2,1.2,20.4,5.2,20.1c7.6-0.4,9.4-13.1,12.1-19.6
c0.4-0.9,1.5-1.1,2.2-1.1c1,0,1.9,1,1.9,3.8V67.8z"/>
<path d="M185.3,94.6c-5.8,0-10.2-5.8-10.2-14.3c0-11.7,1.2-21.7,1.2-34.7v-3.7c0-2.3,1-3.7,3.2-3.7c1.5,0,5.6,0.4,6.9,0.6
c1.5,0.1,2,1.5,1.9,2.7c-0.9,11-1.9,25.3-1.9,35.6c0,5.7,1.2,8.1,3,8.1c5.4,0,8.9-15.8,10.6-22.1c0.2-1.1,1.6-1.6,2.6-1.6
c1.1,0,1.9,1,1.9,3.7C204.4,74,197.5,94.6,185.3,94.6z M184.2,23.3c-3.5,0-6.5-2.5-6.7-6.7v-0.2c-0.1-3.1,2.6-6.3,7-6.3
c4.2,0,6.5,2.6,6.5,6.4C191.1,21.2,187.5,23.3,184.2,23.3z"/>
<path d="M234.7,98.2c-4.3,0-4.9-7.2-6.4-11c-4.6,6.8-6.8,9.7-14.1,9.7c-13.4,0-17.1-14.4-17.1-28.9c0-9,1.5-18,2.8-23.4
c1.2-4.7,3-5.4,11.6-5.7c2.2,0,2.5,0.5,2.5,2.6c0,1.1-2.3,9.6-3,11.6c-0.9,3.2-2.2,12.3-2.2,19.7c0,8.1,2.6,15.7,8.1,15.7
c5.9,0,9.3-7,9.9-12.6c0.4-3.5,0.4-30.2,0.4-32.1c0-4.4,0.7-7.5,6.2-7.5c1.2,0,2-0.9,3.3-0.9c1.7,0,3.1,0.5,3.1,2.5
c0,4.6-1,9.3-1,14.7c0,4.1-3.6,23.6-3.6,30.5c0,3.9,0.4,6.9,1.5,6.9c7.3,0,12.2-23.8,13.4-29.1c0.2-1.1,1.4-2,2.5-2
c0.9,0,1.7,0.9,1.7,3C254.4,71,246.8,98.2,234.7,98.2z"/>
<path d="M302,99.8c-8.3,0-9.6-10.5-9.3-19.2c0.1-6.4,1.4-13.6,2-20c0.4-3.5,0.9-7,0.9-10.6c0-1.2-0.1-3.2-1.9-3.2
c-2.2,0-5.4,3.5-6.3,5.3c-3.8,7.8-5.4,28.1-5.4,37c-2,1.4-5.1,2.7-7.4,2.7c-2.1,0-3.1-1.2-3.1-3.3c0-13.9,5.3-28.5,5.3-40.8
c0-1.6-0.1-5.3-2.5-5.3c-4.4,0-14.1,14.1-14.9,18.1c-0.2,1-0.1,2.2-0.1,3.1c0,7.2,0.2,14.3,0.2,21.5c0,1.9,0,3.7-0.1,5.6
c-1.4,1.4-4.7,2.1-6.7,2.1c-1.6,0-3.7-0.5-3.7-2.5c0-11.3-1-22.7-1-33.9c0-2.8-0.5-18.3,3.2-18.3c2.6,0,5.1,0,7.6,0.5l1.4,1.7
c-0.1,3.8-0.1,7.6-0.5,11.5c2.8-5.6,10.6-18.5,17.6-18.5c5.6,0,7.8,8.5,8.6,12.6c3.9-4.3,8.6-8.5,14.9-8.5c6.2,0,7,6.2,7,11.1
c0,11.3-3.9,22.6-3.9,33.9c0,2.3,0.4,4.4,2.2,6.2c5.4-0.1,8.8-19.7,10.7-23.9c0.4-0.9,0.9-1.6,1.9-1.6c1.6,0,2.5,1.9,2.2,3.1
C320.2,73.6,312.3,99.8,302,99.8z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,20 @@
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require adminlte
//= require underscore
//= require gmaps/google
//= require progressBar.js
//= require_tree .

13
app/assets/javascripts/cable.js Executable file
View File

@ -0,0 +1,13 @@
// Action Cable provides the framework to deal with WebSockets in Rails.
// You can generate new channels where WebSocket features live using the rails generate channel command.
//
//= require action_cable
//= require_self
//= require_tree ./channels
(function() {
this.App || (this.App = {});
App.cable = ActionCable.createConsumer();
}).call(this);

View File

View File

@ -0,0 +1,17 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
* files in this directory. Styles in this file should be added after the last require_* statement.
* It is generally better to create a new file per style scope.
*
*= require_tree .
*= require_self
*= require adminlte
*= require skin-blue
*/

View File

@ -0,0 +1,4 @@
@import "bootstrap-sprockets";
@import "bootstrap";
@import "font-awesome-sprockets";
@import "font-awesome";

View File

@ -0,0 +1,4 @@
module ApplicationCable
class Channel < ActionCable::Channel::Base
end
end

View File

@ -0,0 +1,4 @@
module ApplicationCable
class Connection < ActionCable::Connection::Base
end
end

View File

@ -0,0 +1,10 @@
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def balloon_not_found
render "not_found"
end
end

View File

@ -0,0 +1,22 @@
class BalloonsController< ApplicationController
def show
url = URI.parse("http://api.heylium.io/public/v1/balloons/#{params[:id]}")
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host, url.port) {|http|http.request(req) }
if res.code == "200"
@balloon = JSON.parse(res.body, {:symbolize_names => true})
url = URI.parse("http://api.heylium.io/public/v1/balloons/#{params[:id]}/comments")
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host, url.port) {|http|http.request(req)}
@comments = JSON.parse(res.body, {:symbolize_names => true})
else
balloon_not_found
end
end
end

0
app/controllers/concerns/.keep Executable file
View File

View File

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

22
app/helpers/avatar_helper.rb Executable file
View File

@ -0,0 +1,22 @@
module AvatarHelper
def avatar_tag (user, size, options={})
if user[:color] == nil
color = "#3c6a80"
else
color = user[:color]
end
if user[:current_avatar] == nil
image = image_url("avatar-placeholder-#{size}.png")
else
image = user[:current_avatar][size]
end
"<img style=\"background-color:#{color};#{options[:style]}\" src=\"#{image}\" class=\"avatar #{options[:class]}\">".html_safe
end
end

2
app/jobs/application_job.rb Executable file
View File

@ -0,0 +1,2 @@
class ApplicationJob < ActiveJob::Base
end

View File

@ -0,0 +1,4 @@
class ApplicationMailer < ActionMailer::Base
default from: 'from@example.com'
layout 'mailer'
end

View File

@ -0,0 +1,3 @@
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end

0
app/models/concerns/.keep Executable file
View File

View File

@ -0,0 +1,4 @@
%section.content
.container{style: "margin-top:30px"}
%h1
Ce ballon n'existe pas ou est expiré, vous arrivez trop tard !

138
app/views/balloons/show.html.haml Executable file
View File

@ -0,0 +1,138 @@
%section.content
.container{style: "margin-top:30px"}
.col-md-4
.box.box-body.box-profile{style: "border-top-color: #{@balloon[:user][:color]}"}
%h4.text-center
Auteur du ballon
= avatar_tag @balloon[:user], :large, {class: "profile-user-img img-responsive img-circle"}
%h3.profile-username.text-center
=@balloon[:user][:display_name]
%p.text-muted.text-center
=@balloon[:user][:about_me]
.box.box-body{style: "border-top-color: #{@balloon[:user][:color]}"}
%h4.text-center
Emplacement du ballon
%div{:style => "width: 100%;"}
#map{:style => "width: 100%; height: 300px;"}
.col-md-8
.box{style: "border-top-color: #{@balloon[:user][:color]}"}
.post
.user-block{style: "padding:20px"}
= avatar_tag @balloon[:user], :medium, {class: "img-circle img-bordered-sm"}
%span.username
= @balloon[:user][:display_name]
%span.description
Créé il y a
=time_ago_in_words(DateTime.parse(@balloon[:created_at]))
\/ Expire dans
=time_ago_in_words(DateTime.parse(@balloon[:expire_at]))
-if @balloon[:category]
%img{style:"position:absolute; right:20px; top:20px;",src: @balloon[:category][:flat_icon_url]}
%p{style:"font-size:18px; padding-left:30px;padding-right:30px;"}
= @balloon[:content]
-if @balloon[:image]
.image-content{style:"padding:30px"}
%img#balloon_image{style:"width:100%", :alt => "balloon image", :src => @balloon[:image][:original]}/
-if @balloon[:likes_count] == 1
%span.likes{style:"font-size:20px;position:absolute;bottom:20px;right:20px;"}
%i.fa.fa-heart{style:"color:#d9534f"}
= "Une personne aime ce ballon"
-elsif @balloon[:likes_count] > 1
%span.likes{style:"font-size:20px;position:absolute;bottom:20px;right:20px;"}
%i.fa.fa-heart{style:"color:#d9534f"}
= "#{@balloon[:likes_count] } personnes aiment ce ballon"
= "#{@comments.count} Commentaire(s)"
-if @comments.count > 0
.box
#chat-box.box-body.chat
- @comments.each do |comment|
.item
= avatar_tag comment[:user], :large, {style: "border-color:#{comment[:user][:color]}", class: "offline"}
%p.message
%span.name
%small.text-muted.pull-right
%i.fa.fa-clock-o
=time_ago_in_words(DateTime.parse(comment[:created_at]))
= comment[:user][:display_name]
= comment[:content]
-if comment[:image]
.image-content{style:"padding:30px"}
%img#balloon_image{style:"width:100%", :alt => "comment image", :src => comment[:image][:original]}/
%a.btn.btn-primary{style:"width:100%;", href:"http://heylium.io"}
Pour participer, téléchargez l'application Heylium sur iOS ou Android
:javascript
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map',zoom:10}}, function(){
var shape = {
coords: [1, 1, 1, 20, 18, 20, 18, 1],
type: 'poly'
};
markers = handler.addMarkers([
{
"lat": "#{@balloon[:location][:latitude]}",
"lng": "#{@balloon[:location][:longitude]}",
"shape": shape,
"infowindow": "hello!"
}
]);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
handler.getMap().setZoom(12)
});
- content_for :javascript do
%script{:src => "//maps.google.com/maps/api/js"}
%script{:src => "//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"}
%script{:src => "//cdn.rawgit.com/printercu/google-maps-utility-library-v3-read-only/master/infobox/src/infobox_packed.js", :type => "text/javascript"}
- content_for :header do
/ Schema.org markup for Google+
%meta{:content => "Ballon de #{@balloon[:user][:display_name]}", :itemprop => "name"}/
%meta{:content => @balloon[:content].to_s.truncate(200), :itemprop => "description"}/
-if @balloon[:image]
%meta{:content => @balloon[:image][:large], :itemprop => "image"}/
/ Twitter Card data
-if @balloon[:image]
%meta{:content => "balloon_image", :name => "twitter:card"}/
/ Twitter summary card with large image must be at least 280x150px
%meta{:content => @balloon[:image][:large], :name => "twitter:image:src"}/
%meta{:content => "@publisher_handle", :name => "twitter:site"}/
%meta{:content => "Ballon de #{@balloon[:user][:display_name]}", :name => "twitter:title"}/
%meta{:content => @balloon[:content].to_s.truncate(200), :name => "twitter:description"}/
%meta{:content => @balloon[:user][:display_name], :name => "twitter:creator"}/
/ Open Graph data
%meta{:content => "Ballon de #{@balloon[:user][:display_name]}", :property => "og:title"}/
%meta{:content => "article", :property => "og:type"}/
%meta{:content => "1675468199365503", :property => "fb:app_id"}
-if @balloon[:image]
%meta{:content => request.original_url, :property => "og:url"}/
%meta{:content => @balloon[:image][:large], :property => "og:image"}/
%meta{:content => @balloon[:content].to_s.truncate(200), :property => "og:description"}/
%meta{:content => "Heylium Webapp", :property => "og:site_name"}/
%meta{:content => DateTime.parse(@balloon[:created_at]), :property => "article:published_time"}/
-# %meta{:content => "2013-09-16T19:08:47+01:00", :property => "article:modified_time"}/
-# %meta{:content => "Article Section", :property => "article:section"}/
-# %meta{:content => "Article Tag", :property => "article:tag"}/
-# %meta{:content => "Facebook numberic ID", :property => "fb:admins"}/

View File

@ -0,0 +1,42 @@
!!!
%html
%head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
= yield :header
%title HeyliumApp
= csrf_meta_tags
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
= javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
= yield :javascript
%body.skin-blue.layout-top-nav{"cz-shortcut-listen" => "true"}
.wrapper
%header.main-header
%nav.navbar.navbar-static-top
.container
.navbar-header
%a{:href => "http://heylium.io"}
=image_tag "titre-white.svg", style:"height:30px;margin-top:10px;", class:"nav-logo"
#navbar-collapse.collapse.navbar-collapse.pull-left
%ul.nav.navbar-nav
%li
%a{:href => "http://heylium.io"}
Télécharger l'application Heylium pour iOS et Android
/ Full Width Column
.content-wrapper{:style => "min-height: 849px;"}
= yield
%footer.main-footer
.container
.pull-right.hidden-xs
%b Version
1.0.0
%strong
Copyright © 2016
= succeed "." do
%a{:href => "http://heylium.io"} Heylium
All rights
reserved.

View File

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
/* Email styles need to be inline */
</style>
</head>
<body>
<%= yield %>
</body>
</html>

View File

@ -0,0 +1 @@
<%= yield %>

3
bin/bundle Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env ruby
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
load Gem.bin_path('bundler', 'bundle')

9
bin/rails Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env ruby
begin
load File.expand_path('../spring', __FILE__)
rescue LoadError => e
raise unless e.message.include?('spring')
end
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'

9
bin/rake Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env ruby
begin
load File.expand_path('../spring', __FILE__)
rescue LoadError => e
raise unless e.message.include?('spring')
end
require_relative '../config/boot'
require 'rake'
Rake.application.run

34
bin/setup Executable file
View File

@ -0,0 +1,34 @@
#!/usr/bin/env ruby
require 'pathname'
require 'fileutils'
include FileUtils
# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
chdir APP_ROOT do
# This script is a starting point to setup your application.
# Add necessary setup steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
# puts "\n== Copying sample files =="
# unless File.exist?('config/database.yml')
# cp 'config/database.yml.sample', 'config/database.yml'
# end
puts "\n== Preparing database =="
system! 'bin/rails db:setup'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
puts "\n== Restarting application server =="
system! 'bin/rails restart'
end

16
bin/spring Executable file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env ruby
# This file loads spring without using Bundler, in order to be fast.
# It gets overwritten when you run the `spring binstub` command.
unless defined?(Spring)
require 'rubygems'
require 'bundler'
lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
if spring = lockfile.specs.detect { |spec| spec.name == "spring" }
Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
gem 'spring', spring.version
require 'spring/binstub'
end
end

29
bin/update Executable file
View File

@ -0,0 +1,29 @@
#!/usr/bin/env ruby
require 'pathname'
require 'fileutils'
include FileUtils
# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
chdir APP_ROOT do
# This script is a way to update your development environment automatically.
# Add necessary update steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
puts "\n== Updating database =="
system! 'bin/rails db:migrate'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
puts "\n== Restarting application server =="
system! 'bin/rails restart'
end

5
config.ru Executable file
View File

@ -0,0 +1,5 @@
# This file is used by Rack-based servers to start the application.
require_relative 'config/environment'
run Rails.application

18
config/application.rb Executable file
View File

@ -0,0 +1,18 @@
require_relative 'boot'
require 'rails/all'
require 'net/http'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
module HeyliumApp
class Application < Rails::Application
config.i18n.available_locales = :fr
config.i18n.default_locale = :fr
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
end
end

3
config/boot.rb Executable file
View File

@ -0,0 +1,3 @@
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
require 'bundler/setup' # Set up gems listed in the Gemfile.

9
config/cable.yml Executable file
View File

@ -0,0 +1,9 @@
development:
adapter: async
test:
adapter: async
production:
adapter: redis
url: redis://localhost:6379/1

25
config/database.yml Executable file
View File

@ -0,0 +1,25 @@
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3

5
config/environment.rb Executable file
View File

@ -0,0 +1,5 @@
# Load the Rails application.
require_relative 'application'
# Initialize the Rails application.
Rails.application.initialize!

View File

@ -0,0 +1,54 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Do not eager load code on boot.
config.eager_load = false
# Show full error reports.
config.consider_all_requests_local = true
# Enable/disable caching. By default caching is disabled.
if Rails.root.join('tmp/caching-dev.txt').exist?
config.action_controller.perform_caching = true
config.cache_store = :memory_store
config.public_file_server.headers = {
'Cache-Control' => 'public, max-age=172800'
}
else
config.action_controller.perform_caching = false
config.cache_store = :null_store
end
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
# Suppress logger output for asset requests.
config.assets.quiet = true
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
end

View File

@ -0,0 +1,86 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# Code is not reloaded between requests.
config.cache_classes = true
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both threaded web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
# Full error reports are disabled and caching is turned on.
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
# config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.action_controller.asset_host = 'http://assets.example.com'
# Specifies the header that your server uses for sending files.
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
# Mount Action Cable outside main process or domain
# config.action_cable.mount_path = nil
# config.action_cable.url = 'wss://example.com/cable'
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
# config.force_ssl = true
# Use the lowest log level to ensure availability of diagnostic information
# when problems arise.
config.log_level = :debug
# Prepend all log lines with the following tags.
config.log_tags = [ :request_id ]
# Use a different cache store in production.
# config.cache_store = :mem_cache_store
# Use a real queuing backend for Active Job (and separate queues per environment)
# config.active_job.queue_adapter = :resque
# config.active_job.queue_name_prefix = "heylium-app_#{Rails.env}"
config.action_mailer.perform_caching = false
# Ignore bad email addresses and do not raise email delivery errors.
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
# config.action_mailer.raise_delivery_errors = false
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation cannot be found).
config.i18n.fallbacks = true
# Send deprecation notices to registered listeners.
config.active_support.deprecation = :notify
# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new
# Use a different logger for distributed setups.
# require 'syslog/logger'
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
end

42
config/environments/test.rb Executable file
View File

@ -0,0 +1,42 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
# Do not eager load code on boot. This avoids loading your whole application
# just for the purpose of running a single test. If you are using a tool that
# preloads Rails for running tests, you may have to set it to true.
config.eager_load = false
# Configure public file server for tests with Cache-Control for performance.
config.public_file_server.enabled = true
config.public_file_server.headers = {
'Cache-Control' => 'public, max-age=3600'
}
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Raise exceptions instead of rendering exception templates.
config.action_dispatch.show_exceptions = false
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
config.action_mailer.perform_caching = false
# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
# Print deprecation notices to the stderr.
config.active_support.deprecation = :stderr
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
end

View File

@ -0,0 +1,6 @@
# Be sure to restart your server when you modify this file.
# ApplicationController.renderer.defaults.merge!(
# http_host: 'example.org',
# https: false
# )

11
config/initializers/assets.rb Executable file
View File

@ -0,0 +1,11 @@
# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )

View File

@ -0,0 +1,7 @@
# Be sure to restart your server when you modify this file.
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
# Rails.backtrace_cleaner.remove_silencers!

View File

@ -0,0 +1,5 @@
# Be sure to restart your server when you modify this file.
# Specify a serializer for the signed and encrypted cookie jars.
# Valid options are :json, :marshal, and :hybrid.
Rails.application.config.action_dispatch.cookies_serializer = :json

View File

@ -0,0 +1,4 @@
# Be sure to restart your server when you modify this file.
# Configure sensitive parameters which will be filtered from the log file.
Rails.application.config.filter_parameters += [:password]

View File

@ -0,0 +1,16 @@
# Be sure to restart your server when you modify this file.
# Add new inflection rules using the following format. Inflections
# are locale specific, and you may define rules for as many different
# locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
# end
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful'
# end

View File

@ -0,0 +1,4 @@
# Be sure to restart your server when you modify this file.
# Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf

View File

@ -0,0 +1,24 @@
# Be sure to restart your server when you modify this file.
#
# This file contains migration options to ease your Rails 5.0 upgrade.
#
# Read the Rails 5.0 release notes for more info on each option.
# Enable per-form CSRF tokens. Previous versions had false.
Rails.application.config.action_controller.per_form_csrf_tokens = true
# Enable origin-checking CSRF mitigation. Previous versions had false.
Rails.application.config.action_controller.forgery_protection_origin_check = true
# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`.
# Previous versions had false.
ActiveSupport.to_time_preserves_timezone = true
# Require `belongs_to` associations by default. Previous versions had false.
Rails.application.config.active_record.belongs_to_required_by_default = true
# Do not halt callback chains when a callback returns false. Previous versions had true.
ActiveSupport.halt_callback_chains_on_return_false = false
# Configure SSL options to enable HSTS with subdomains. Previous versions had false.
Rails.application.config.ssl_options = { hsts: { subdomains: true } }

View File

@ -0,0 +1,3 @@
# Be sure to restart your server when you modify this file.
Rails.application.config.session_store :cookie_store, key: '_heylium-app_session'

View File

@ -0,0 +1,14 @@
# Be sure to restart your server when you modify this file.
# This file contains settings for ActionController::ParamsWrapper which
# is enabled by default.
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
ActiveSupport.on_load(:action_controller) do
wrap_parameters format: [:json]
end
# To enable root element in JSON for ActiveRecord objects.
# ActiveSupport.on_load(:active_record) do
# self.include_root_in_json = true
# end

23
config/locales/en.yml Executable file
View File

@ -0,0 +1,23 @@
# Files in the config/locales directory are used for internationalization
# and are automatically loaded by Rails. If you want to use locales other
# than English, add the necessary files in this directory.
#
# To use the locales, use `I18n.t`:
#
# I18n.t 'hello'
#
# In views, this is aliased to just `t`:
#
# <%= t('hello') %>
#
# To use a different locale, set it with `I18n.locale`:
#
# I18n.locale = :es
#
# This would use the information in config/locales/es.yml.
#
# To learn more, please read the Rails Internationalization guide
# available at http://guides.rubyonrails.org/i18n.html.
en:
hello: "Hello world"

211
config/locales/fr.yml Executable file
View File

@ -0,0 +1,211 @@
fr:
activerecord:
errors:
messages:
record_invalid: 'La validation a échoué : %{errors}'
restrict_dependent_destroy:
has_one: "Vous ne pouvez pas supprimer l'enregistrement car une personne à charge %{record} existe"
has_many: "Vous ne pouvez pas supprimer l'enregistrement parce que les %{record} dépendants existent"
date:
abbr_day_names:
- dim
- lun
- mar
- mer
- jeu
- ven
- sam
abbr_month_names:
-
- jan.
- fév.
- mar.
- avr.
- mai
- juin
- juil.
- août
- sept.
- oct.
- nov.
- déc.
day_names:
- dimanche
- lundi
- mardi
- mercredi
- jeudi
- vendredi
- samedi
formats:
default: "%d/%m/%Y"
short: "%e %b"
long: "%e %B %Y"
month_names:
-
- janvier
- février
- mars
- avril
- mai
- juin
- juillet
- août
- septembre
- octobre
- novembre
- décembre
order:
- :day
- :month
- :year
datetime:
distance_in_words:
about_x_hours:
one: environ une heure
other: environ %{count} heures
about_x_months:
one: environ un mois
other: environ %{count} mois
about_x_years:
one: environ un an
other: environ %{count} ans
almost_x_years:
one: presqu'un an
other: presque %{count} ans
half_a_minute: une demi-minute
less_than_x_minutes:
zero: moins d'une minute
one: moins d'une minute
other: moins de %{count} minutes
less_than_x_seconds:
zero: moins d'une seconde
one: moins d'une seconde
other: moins de %{count} secondes
over_x_years:
one: plus d'un an
other: plus de %{count} ans
x_days:
one: 1 jour
other: "%{count} jours"
x_minutes:
one: 1 minute
other: "%{count} minutes"
x_months:
one: 1 mois
other: "%{count} mois"
x_seconds:
one: 1 seconde
other: "%{count} secondes"
prompts:
day: Jour
hour: Heure
minute: Minute
month: Mois
second: Seconde
year: Année
errors:
format: "%{attribute} %{message}"
messages:
accepted: doit être accepté(e)
blank: doit être rempli(e)
present: doit être vide
confirmation: ne concorde pas avec %{attribute}
empty: doit être rempli(e)
equal_to: doit être égal à %{count}
even: doit être pair
exclusion: n'est pas disponible
greater_than: doit être supérieur à %{count}
greater_than_or_equal_to: doit être supérieur ou égal à %{count}
inclusion: n'est pas inclus(e) dans la liste
invalid: n'est pas valide
less_than: doit être inférieur à %{count}
less_than_or_equal_to: doit être inférieur ou égal à %{count}
model_invalid: "Validation échouée: %{errors}"
not_a_number: n'est pas un nombre
not_an_integer: doit être un nombre entier
odd: doit être impair
required: doit exister
taken: n'est pas disponible
too_long:
one: est trop long (pas plus d'un caractère)
other: est trop long (pas plus de %{count} caractères)
too_short:
one: est trop court (au moins un caractère)
other: est trop court (au moins %{count} caractères)
wrong_length:
one: ne fait pas la bonne longueur (doit comporter un seul caractère)
other: ne fait pas la bonne longueur (doit comporter %{count} caractères)
other_than: doit être différent de %{count}
template:
body: 'Veuillez vérifier les champs suivants : '
header:
one: 'Impossible d''enregistrer ce(tte) %{model} : 1 erreur'
other: 'Impossible d''enregistrer ce(tte) %{model} : %{count} erreurs'
helpers:
select:
prompt: Veuillez sélectionner
submit:
create: Créer un(e) %{model}
submit: Enregistrer ce(tte) %{model}
update: Modifier ce(tte) %{model}
number:
currency:
format:
delimiter: " "
format: "%n %u"
precision: 2
separator: ","
significant: false
strip_insignificant_zeros: false
unit: "€"
format:
delimiter: " "
precision: 3
separator: ","
significant: false
strip_insignificant_zeros: false
human:
decimal_units:
format: "%n %u"
units:
billion: milliard
million: million
quadrillion: million de milliards
thousand: millier
trillion: billion
unit: ''
format:
delimiter: ''
precision: 3
significant: true
strip_insignificant_zeros: true
storage_units:
format: "%n %u"
units:
byte:
one: octet
other: octets
gb: Go
kb: ko
mb: Mo
tb: To
percentage:
format:
delimiter: ''
format: "%n%"
precision:
format:
delimiter: ''
support:
array:
last_word_connector: " et "
two_words_connector: " et "
words_connector: ", "
time:
am: am
formats:
default: "%d %B %Y %Hh %Mmin %Ss"
long: "%A %d %B %Y %Hh%M"
short: "%d %b %Hh%M"
pm: pm

47
config/puma.rb Executable file
View File

@ -0,0 +1,47 @@
# Puma can serve each request in a thread from an internal thread pool.
# The `threads` method setting takes two numbers a minimum and maximum.
# Any libraries that use thread pools should be configured to match
# the maximum value specified for Puma. Default is set to 5 threads for minimum
# and maximum, this matches the default thread size of Active Record.
#
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
threads threads_count, threads_count
# Specifies the `port` that Puma will listen on to receive requests, default is 3000.
#
port ENV.fetch("PORT") { 3000 }
# Specifies the `environment` that Puma will run in.
#
environment ENV.fetch("RAILS_ENV") { "development" }
# Specifies the number of `workers` to boot in clustered mode.
# Workers are forked webserver processes. If using threads and workers together
# the concurrency of the application would be max `threads` * `workers`.
# Workers do not work on JRuby or Windows (both of which do not support
# processes).
#
# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
# Use the `preload_app!` method when specifying a `workers` number.
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory. If you use this option
# you need to make sure to reconnect any threads in the `on_worker_boot`
# block.
#
# preload_app!
# The code in the `on_worker_boot` will be called if you are using
# clustered mode by specifying a number of `workers`. After each worker
# process is booted this block will be run, if you are using `preload_app!`
# option you will want to use this block to reconnect to any threads
# or connections that may have been created at application boot, Ruby
# cannot share connections between processes.
#
# on_worker_boot do
# ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
# end
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart

5
config/routes.rb Executable file
View File

@ -0,0 +1,5 @@
Rails.application.routes.draw do
resources :balloons
end

22
config/secrets.yml Executable file
View File

@ -0,0 +1,22 @@
# Be sure to restart your server when you modify this file.
# Your secret key is used for verifying the integrity of signed cookies.
# If you change this key, all old signed cookies will become invalid!
# Make sure the secret is at least 30 characters and all random,
# no regular words or you'll be exposed to dictionary attacks.
# You can use `rails secret` to generate a secure secret key.
# Make sure the secrets in this file are kept private
# if you're sharing your code publicly.
development:
secret_key_base: 8cdc069f727d6a14a195d6289736a7c0a5621b17e0033a87bb01d9b2d760300541eb5f1a75c2e9b0648d3d013307b8079eaca1b12c8399fcd12c5cedbe90feb5
test:
secret_key_base: 0898f521e2c294454b9eb43b863e6418b1d5dc15667309c14db1ef89bbe6d2015f36ade0d0fd087880276decd6d1100c23a4e00bdd31ec023d4f88ee9c286136
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

6
config/spring.rb Executable file
View File

@ -0,0 +1,6 @@
%w(
.ruby-version
.rbenv-vars
tmp/restart.txt
tmp/caching-dev.txt
).each { |path| Spring.watch(path) }

7
db/seeds.rb Executable file
View File

@ -0,0 +1,7 @@
# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
#
# Examples:
#
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
# Character.create(name: 'Luke', movie: movies.first)

0
lib/assets/.keep Executable file
View File

0
lib/tasks/.keep Executable file
View File

0
log/.keep Executable file
View File

67
public/404.html Executable file
View File

@ -0,0 +1,67 @@
<!DOCTYPE html>
<html>
<head>
<title>The page you were looking for doesn't exist (404)</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
body {
background-color: #EFEFEF;
color: #2E2F30;
text-align: center;
font-family: arial, sans-serif;
margin: 0;
}
div.dialog {
width: 95%;
max-width: 33em;
margin: 4em auto 0;
}
div.dialog > div {
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #BBB;
border-top: #B00100 solid 4px;
border-top-left-radius: 9px;
border-top-right-radius: 9px;
background-color: white;
padding: 7px 12% 0;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
h1 {
font-size: 100%;
color: #730E15;
line-height: 1.5em;
}
div.dialog > p {
margin: 0 0 1em;
padding: 1em;
background-color: #F7F7F7;
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #999;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-top-color: #DADADA;
color: #666;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
</style>
</head>
<body>
<!-- This file lives in public/404.html -->
<div class="dialog">
<div>
<h1>The page you were looking for doesn't exist.</h1>
<p>You may have mistyped the address or the page may have moved.</p>
</div>
<p>If you are the application owner check the logs for more information.</p>
</div>
</body>
</html>

67
public/422.html Executable file
View File

@ -0,0 +1,67 @@
<!DOCTYPE html>
<html>
<head>
<title>The change you wanted was rejected (422)</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
body {
background-color: #EFEFEF;
color: #2E2F30;
text-align: center;
font-family: arial, sans-serif;
margin: 0;
}
div.dialog {
width: 95%;
max-width: 33em;
margin: 4em auto 0;
}
div.dialog > div {
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #BBB;
border-top: #B00100 solid 4px;
border-top-left-radius: 9px;
border-top-right-radius: 9px;
background-color: white;
padding: 7px 12% 0;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
h1 {
font-size: 100%;
color: #730E15;
line-height: 1.5em;
}
div.dialog > p {
margin: 0 0 1em;
padding: 1em;
background-color: #F7F7F7;
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #999;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-top-color: #DADADA;
color: #666;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
</style>
</head>
<body>
<!-- This file lives in public/422.html -->
<div class="dialog">
<div>
<h1>The change you wanted was rejected.</h1>
<p>Maybe you tried to change something you didn't have access to.</p>
</div>
<p>If you are the application owner check the logs for more information.</p>
</div>
</body>
</html>

66
public/500.html Executable file
View File

@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<head>
<title>We're sorry, but something went wrong (500)</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
body {
background-color: #EFEFEF;
color: #2E2F30;
text-align: center;
font-family: arial, sans-serif;
margin: 0;
}
div.dialog {
width: 95%;
max-width: 33em;
margin: 4em auto 0;
}
div.dialog > div {
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #BBB;
border-top: #B00100 solid 4px;
border-top-left-radius: 9px;
border-top-right-radius: 9px;
background-color: white;
padding: 7px 12% 0;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
h1 {
font-size: 100%;
color: #730E15;
line-height: 1.5em;
}
div.dialog > p {
margin: 0 0 1em;
padding: 1em;
background-color: #F7F7F7;
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #999;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-top-color: #DADADA;
color: #666;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
</style>
</head>
<body>
<!-- This file lives in public/500.html -->
<div class="dialog">
<div>
<h1>We're sorry, but something went wrong.</h1>
</div>
<p>If you are the application owner check the logs for more information.</p>
</div>
</body>
</html>

View File

0
public/apple-touch-icon.png Executable file
View File

0
public/favicon.ico Executable file
View File

5
public/robots.txt Executable file
View File

@ -0,0 +1,5 @@
# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
#
# To ban all spiders from the entire site uncomment the next two lines:
# User-agent: *
# Disallow: /

0
test/controllers/.keep Executable file
View File

0
test/fixtures/.keep vendored Executable file
View File

0
test/fixtures/files/.keep vendored Executable file
View File

0
test/helpers/.keep Executable file
View File

0
test/integration/.keep Executable file
View File

0
test/mailers/.keep Executable file
View File

0
test/models/.keep Executable file
View File

10
test/test_helper.rb Executable file
View File

@ -0,0 +1,10 @@
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all
# Add more helper methods to be used by all tests here...
end

0
tmp/.keep Executable file
View File

0
vendor/assets/javascripts/.keep vendored Executable file
View File

6
vendor/assets/javascripts/progressBar.js vendored Executable file

File diff suppressed because one or more lines are too long

0
vendor/assets/stylesheets/.keep vendored Executable file
View File

1770
vendor/assets/stylesheets/_all-skins.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,173 @@
/*
* Skin: Black
* -----------
*/
/* skin-black navbar */
.skin-black-light .main-header {
-webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
}
.skin-black-light .main-header .navbar-toggle {
color: #333;
}
.skin-black-light .main-header .navbar-brand {
color: #333;
border-right: 1px solid #eee;
}
.skin-black-light .main-header .navbar {
background-color: #ffffff;
}
.skin-black-light .main-header .navbar .nav > li > a {
color: #333333;
}
.skin-black-light .main-header .navbar .nav > li > a:hover,
.skin-black-light .main-header .navbar .nav > li > a:active,
.skin-black-light .main-header .navbar .nav > li > a:focus,
.skin-black-light .main-header .navbar .nav .open > a,
.skin-black-light .main-header .navbar .nav .open > a:hover,
.skin-black-light .main-header .navbar .nav .open > a:focus,
.skin-black-light .main-header .navbar .nav > .active > a {
background: #ffffff;
color: #999999;
}
.skin-black-light .main-header .navbar .sidebar-toggle {
color: #333333;
}
.skin-black-light .main-header .navbar .sidebar-toggle:hover {
color: #999999;
background: #ffffff;
}
.skin-black-light .main-header .navbar > .sidebar-toggle {
color: #333;
border-right: 1px solid #eee;
}
.skin-black-light .main-header .navbar .navbar-nav > li > a {
border-right: 1px solid #eee;
}
.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a,
.skin-black-light .main-header .navbar .navbar-right > li > a {
border-left: 1px solid #eee;
border-right-width: 0;
}
.skin-black-light .main-header > .logo {
background-color: #ffffff;
color: #333333;
border-bottom: 0 solid transparent;
border-right: 1px solid #eee;
}
.skin-black-light .main-header > .logo:hover {
background-color: #fcfcfc;
}
@media (max-width: 767px) {
.skin-black-light .main-header > .logo {
background-color: #222222;
color: #ffffff;
border-bottom: 0 solid transparent;
border-right: none;
}
.skin-black-light .main-header > .logo:hover {
background-color: #1f1f1f;
}
}
.skin-black-light .main-header li.user-header {
background-color: #222;
}
.skin-black-light .content-header {
background: transparent;
box-shadow: none;
}
.skin-black-light .wrapper,
.skin-black-light .main-sidebar,
.skin-black-light .left-side {
background-color: #f9fafc;
}
.skin-black-light .content-wrapper,
.skin-black-light .main-footer {
border-left: 1px solid #d2d6de;
}
.skin-black-light .user-panel > .info,
.skin-black-light .user-panel > .info > a {
color: #444444;
}
.skin-black-light .sidebar-menu > li {
-webkit-transition: border-left-color 0.3s ease;
-o-transition: border-left-color 0.3s ease;
transition: border-left-color 0.3s ease;
}
.skin-black-light .sidebar-menu > li.header {
color: #848484;
background: #f9fafc;
}
.skin-black-light .sidebar-menu > li > a {
border-left: 3px solid transparent;
font-weight: 600;
}
.skin-black-light .sidebar-menu > li:hover > a,
.skin-black-light .sidebar-menu > li.active > a {
color: #000000;
background: #f4f4f5;
}
.skin-black-light .sidebar-menu > li.active {
border-left-color: #ffffff;
}
.skin-black-light .sidebar-menu > li.active > a {
font-weight: 600;
}
.skin-black-light .sidebar-menu > li > .treeview-menu {
background: #f4f4f5;
}
.skin-black-light .sidebar a {
color: #444444;
}
.skin-black-light .sidebar a:hover {
text-decoration: none;
}
.skin-black-light .treeview-menu > li > a {
color: #777777;
}
.skin-black-light .treeview-menu > li.active > a,
.skin-black-light .treeview-menu > li > a:hover {
color: #000000;
}
.skin-black-light .treeview-menu > li.active > a {
font-weight: 600;
}
.skin-black-light .sidebar-form {
border-radius: 3px;
border: 1px solid #d2d6de;
margin: 10px 10px;
}
.skin-black-light .sidebar-form input[type="text"],
.skin-black-light .sidebar-form .btn {
box-shadow: none;
background-color: #fff;
border: 1px solid transparent;
height: 35px;
}
.skin-black-light .sidebar-form input[type="text"] {
color: #666;
border-top-left-radius: 2px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 2px;
}
.skin-black-light .sidebar-form input[type="text"]:focus,
.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
background-color: #fff;
color: #666;
}
.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
border-left-color: #fff;
}
.skin-black-light .sidebar-form .btn {
color: #999;
border-top-left-radius: 0;
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 0;
}
@media (min-width: 768px) {
.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
border-left: 1px solid #d2d6de;
}
}

View File

@ -0,0 +1 @@
.skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black-light .main-header .navbar{background-color:#fff}.skin-black-light .main-header .navbar .nav>li>a{color:#333}.skin-black-light .main-header .navbar .nav>li>a:hover,.skin-black-light .main-header .navbar .nav>li>a:active,.skin-black-light .main-header .navbar .nav>li>a:focus,.skin-black-light .main-header .navbar .nav .open>a,.skin-black-light .main-header .navbar .nav .open>a:hover,.skin-black-light .main-header .navbar .nav .open>a:focus,.skin-black-light .main-header .navbar .nav>.active>a{background:#fff;color:#999}.skin-black-light .main-header .navbar .sidebar-toggle{color:#333}.skin-black-light .main-header .navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header .navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black-light .main-header .navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header .navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black-light .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black-light .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .content-wrapper,.skin-black-light .main-footer{border-left:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .treeview-menu>li>a{color:#777}.skin-black-light .treeview-menu>li.active>a,.skin-black-light .treeview-menu>li>a:hover{color:#000}.skin-black-light .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}

158
vendor/assets/stylesheets/skin-black.css vendored Normal file
View File

@ -0,0 +1,158 @@
/*
* Skin: Black
* -----------
*/
/* skin-black navbar */
.skin-black .main-header {
-webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
}
.skin-black .main-header .navbar-toggle {
color: #333;
}
.skin-black .main-header .navbar-brand {
color: #333;
border-right: 1px solid #eee;
}
.skin-black .main-header .navbar {
background-color: #ffffff;
}
.skin-black .main-header .navbar .nav > li > a {
color: #333333;
}
.skin-black .main-header .navbar .nav > li > a:hover,
.skin-black .main-header .navbar .nav > li > a:active,
.skin-black .main-header .navbar .nav > li > a:focus,
.skin-black .main-header .navbar .nav .open > a,
.skin-black .main-header .navbar .nav .open > a:hover,
.skin-black .main-header .navbar .nav .open > a:focus,
.skin-black .main-header .navbar .nav > .active > a {
background: #ffffff;
color: #999999;
}
.skin-black .main-header .navbar .sidebar-toggle {
color: #333333;
}
.skin-black .main-header .navbar .sidebar-toggle:hover {
color: #999999;
background: #ffffff;
}
.skin-black .main-header .navbar > .sidebar-toggle {
color: #333;
border-right: 1px solid #eee;
}
.skin-black .main-header .navbar .navbar-nav > li > a {
border-right: 1px solid #eee;
}
.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a,
.skin-black .main-header .navbar .navbar-right > li > a {
border-left: 1px solid #eee;
border-right-width: 0;
}
.skin-black .main-header > .logo {
background-color: #ffffff;
color: #333333;
border-bottom: 0 solid transparent;
border-right: 1px solid #eee;
}
.skin-black .main-header > .logo:hover {
background-color: #fcfcfc;
}
@media (max-width: 767px) {
.skin-black .main-header > .logo {
background-color: #222222;
color: #ffffff;
border-bottom: 0 solid transparent;
border-right: none;
}
.skin-black .main-header > .logo:hover {
background-color: #1f1f1f;
}
}
.skin-black .main-header li.user-header {
background-color: #222;
}
.skin-black .content-header {
background: transparent;
box-shadow: none;
}
.skin-black .wrapper,
.skin-black .main-sidebar,
.skin-black .left-side {
background-color: #222d32;
}
.skin-black .user-panel > .info,
.skin-black .user-panel > .info > a {
color: #fff;
}
.skin-black .sidebar-menu > li.header {
color: #4b646f;
background: #1a2226;
}
.skin-black .sidebar-menu > li > a {
border-left: 3px solid transparent;
}
.skin-black .sidebar-menu > li:hover > a,
.skin-black .sidebar-menu > li.active > a {
color: #ffffff;
background: #1e282c;
border-left-color: #ffffff;
}
.skin-black .sidebar-menu > li > .treeview-menu {
margin: 0 1px;
background: #2c3b41;
}
.skin-black .sidebar a {
color: #b8c7ce;
}
.skin-black .sidebar a:hover {
text-decoration: none;
}
.skin-black .treeview-menu > li > a {
color: #8aa4af;
}
.skin-black .treeview-menu > li.active > a,
.skin-black .treeview-menu > li > a:hover {
color: #ffffff;
}
.skin-black .sidebar-form {
border-radius: 3px;
border: 1px solid #374850;
margin: 10px 10px;
}
.skin-black .sidebar-form input[type="text"],
.skin-black .sidebar-form .btn {
box-shadow: none;
background-color: #374850;
border: 1px solid transparent;
height: 35px;
}
.skin-black .sidebar-form input[type="text"] {
color: #666;
border-top-left-radius: 2px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 2px;
}
.skin-black .sidebar-form input[type="text"]:focus,
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
background-color: #fff;
color: #666;
}
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
border-left-color: #fff;
}
.skin-black .sidebar-form .btn {
color: #999;
border-top-left-radius: 0;
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 0;
}
.skin-black .pace .pace-progress {
background: #222;
}
.skin-black .pace .pace-activity {
border-top-color: #222;
border-left-color: #222;
}

View File

@ -0,0 +1 @@
.skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header .navbar{background-color:#fff}.skin-black .main-header .navbar .nav>li>a{color:#333}.skin-black .main-header .navbar .nav>li>a:hover,.skin-black .main-header .navbar .nav>li>a:active,.skin-black .main-header .navbar .nav>li>a:focus,.skin-black .main-header .navbar .nav .open>a,.skin-black .main-header .navbar .nav .open>a:hover,.skin-black .main-header .navbar .nav .open>a:focus,.skin-black .main-header .navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header .navbar .sidebar-toggle{color:#333}.skin-black .main-header .navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header .navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header .navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header .navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-black .pace .pace-progress{background:#222}.skin-black .pace .pace-activity{border-top-color:#222;border-left-color:#222}

View File

@ -0,0 +1,164 @@
/*
* Skin: Blue
* ----------
*/
.skin-blue-light .main-header .navbar {
background-color: #3c8dbc;
}
.skin-blue-light .main-header .navbar .nav > li > a {
color: #ffffff;
}
.skin-blue-light .main-header .navbar .nav > li > a:hover,
.skin-blue-light .main-header .navbar .nav > li > a:active,
.skin-blue-light .main-header .navbar .nav > li > a:focus,
.skin-blue-light .main-header .navbar .nav .open > a,
.skin-blue-light .main-header .navbar .nav .open > a:hover,
.skin-blue-light .main-header .navbar .nav .open > a:focus,
.skin-blue-light .main-header .navbar .nav > .active > a {
background: rgba(0, 0, 0, 0.1);
color: #f6f6f6;
}
.skin-blue-light .main-header .navbar .sidebar-toggle {
color: #ffffff;
}
.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
color: #f6f6f6;
background: rgba(0, 0, 0, 0.1);
}
.skin-blue-light .main-header .navbar .sidebar-toggle {
color: #fff;
}
.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
background-color: #367fa9;
}
@media (max-width: 767px) {
.skin-blue-light .main-header .navbar .dropdown-menu li.divider {
background-color: rgba(255, 255, 255, 0.1);
}
.skin-blue-light .main-header .navbar .dropdown-menu li a {
color: #fff;
}
.skin-blue-light .main-header .navbar .dropdown-menu li a:hover {
background: #367fa9;
}
}
.skin-blue-light .main-header .logo {
background-color: #3c8dbc;
color: #ffffff;
border-bottom: 0 solid transparent;
}
.skin-blue-light .main-header .logo:hover {
background-color: #3b8ab8;
}
.skin-blue-light .main-header li.user-header {
background-color: #3c8dbc;
}
.skin-blue-light .content-header {
background: transparent;
}
.skin-blue-light .wrapper,
.skin-blue-light .main-sidebar,
.skin-blue-light .left-side {
background-color: #f9fafc;
}
.skin-blue-light .content-wrapper,
.skin-blue-light .main-footer {
border-left: 1px solid #d2d6de;
}
.skin-blue-light .user-panel > .info,
.skin-blue-light .user-panel > .info > a {
color: #444444;
}
.skin-blue-light .sidebar-menu > li {
-webkit-transition: border-left-color 0.3s ease;
-o-transition: border-left-color 0.3s ease;
transition: border-left-color 0.3s ease;
}
.skin-blue-light .sidebar-menu > li.header {
color: #848484;
background: #f9fafc;
}
.skin-blue-light .sidebar-menu > li > a {
border-left: 3px solid transparent;
font-weight: 600;
}
.skin-blue-light .sidebar-menu > li:hover > a,
.skin-blue-light .sidebar-menu > li.active > a {
color: #000000;
background: #f4f4f5;
}
.skin-blue-light .sidebar-menu > li.active {
border-left-color: #3c8dbc;
}
.skin-blue-light .sidebar-menu > li.active > a {
font-weight: 600;
}
.skin-blue-light .sidebar-menu > li > .treeview-menu {
background: #f4f4f5;
}
.skin-blue-light .sidebar a {
color: #444444;
}
.skin-blue-light .sidebar a:hover {
text-decoration: none;
}
.skin-blue-light .treeview-menu > li > a {
color: #777777;
}
.skin-blue-light .treeview-menu > li.active > a,
.skin-blue-light .treeview-menu > li > a:hover {
color: #000000;
}
.skin-blue-light .treeview-menu > li.active > a {
font-weight: 600;
}
.skin-blue-light .sidebar-form {
border-radius: 3px;
border: 1px solid #d2d6de;
margin: 10px 10px;
}
.skin-blue-light .sidebar-form input[type="text"],
.skin-blue-light .sidebar-form .btn {
box-shadow: none;
background-color: #fff;
border: 1px solid transparent;
height: 35px;
}
.skin-blue-light .sidebar-form input[type="text"] {
color: #666;
border-top-left-radius: 2px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 2px;
}
.skin-blue-light .sidebar-form input[type="text"]:focus,
.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
background-color: #fff;
color: #666;
}
.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
border-left-color: #fff;
}
.skin-blue-light .sidebar-form .btn {
color: #999;
border-top-left-radius: 0;
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 0;
}
@media (min-width: 768px) {
.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
border-left: 1px solid #d2d6de;
}
}
.skin-blue-light .main-footer {
border-top-color: #d2d6de;
}
.skin-blue.layout-top-nav .main-header > .logo {
background-color: #3c8dbc;
color: #ffffff;
border-bottom: 0 solid transparent;
}
.skin-blue.layout-top-nav .main-header > .logo:hover {
background-color: #3b8ab8;
}

View File

@ -0,0 +1 @@
.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}

139
vendor/assets/stylesheets/skin-blue.css vendored Normal file
View File

@ -0,0 +1,139 @@
/*
* Skin: Blue
* ----------
*/
.skin-blue .main-header .navbar {
background-color: #3c8dbc;
}
.skin-blue .main-header .navbar .nav > li > a {
color: #ffffff;
}
.skin-blue .main-header .navbar .nav > li > a:hover,
.skin-blue .main-header .navbar .nav > li > a:active,
.skin-blue .main-header .navbar .nav > li > a:focus,
.skin-blue .main-header .navbar .nav .open > a,
.skin-blue .main-header .navbar .nav .open > a:hover,
.skin-blue .main-header .navbar .nav .open > a:focus,
.skin-blue .main-header .navbar .nav > .active > a {
background: rgba(0, 0, 0, 0.1);
color: #f6f6f6;
}
.skin-blue .main-header .navbar .sidebar-toggle {
color: #ffffff;
}
.skin-blue .main-header .navbar .sidebar-toggle:hover {
color: #f6f6f6;
background: rgba(0, 0, 0, 0.1);
}
.skin-blue .main-header .navbar .sidebar-toggle {
color: #fff;
}
.skin-blue .main-header .navbar .sidebar-toggle:hover {
background-color: #367fa9;
}
@media (max-width: 767px) {
.skin-blue .main-header .navbar .dropdown-menu li.divider {
background-color: rgba(255, 255, 255, 0.1);
}
.skin-blue .main-header .navbar .dropdown-menu li a {
color: #fff;
}
.skin-blue .main-header .navbar .dropdown-menu li a:hover {
background: #367fa9;
}
}
.skin-blue .main-header .logo {
background-color: #367fa9;
color: #ffffff;
border-bottom: 0 solid transparent;
}
.skin-blue .main-header .logo:hover {
background-color: #357ca5;
}
.skin-blue .main-header li.user-header {
background-color: #3c8dbc;
}
.skin-blue .content-header {
background: transparent;
}
.skin-blue .wrapper,
.skin-blue .main-sidebar,
.skin-blue .left-side {
background-color: #222d32;
}
.skin-blue .user-panel > .info,
.skin-blue .user-panel > .info > a {
color: #fff;
}
.skin-blue .sidebar-menu > li.header {
color: #4b646f;
background: #1a2226;
}
.skin-blue .sidebar-menu > li > a {
border-left: 3px solid transparent;
}
.skin-blue .sidebar-menu > li:hover > a,
.skin-blue .sidebar-menu > li.active > a {
color: #ffffff;
background: #1e282c;
border-left-color: #3c8dbc;
}
.skin-blue .sidebar-menu > li > .treeview-menu {
margin: 0 1px;
background: #2c3b41;
}
.skin-blue .sidebar a {
color: #b8c7ce;
}
.skin-blue .sidebar a:hover {
text-decoration: none;
}
.skin-blue .treeview-menu > li > a {
color: #8aa4af;
}
.skin-blue .treeview-menu > li.active > a,
.skin-blue .treeview-menu > li > a:hover {
color: #ffffff;
}
.skin-blue .sidebar-form {
border-radius: 3px;
border: 1px solid #374850;
margin: 10px 10px;
}
.skin-blue .sidebar-form input[type="text"],
.skin-blue .sidebar-form .btn {
box-shadow: none;
background-color: #374850;
border: 1px solid transparent;
height: 35px;
}
.skin-blue .sidebar-form input[type="text"] {
color: #666;
border-top-left-radius: 2px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 2px;
}
.skin-blue .sidebar-form input[type="text"]:focus,
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
background-color: #fff;
color: #666;
}
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
border-left-color: #fff;
}
.skin-blue .sidebar-form .btn {
color: #999;
border-top-left-radius: 0;
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 0;
}
.skin-blue.layout-top-nav .main-header > .logo {
background-color: #3c8dbc;
color: #ffffff;
border-bottom: 0 solid transparent;
}
.skin-blue.layout-top-nav .main-header > .logo:hover {
background-color: #3b8ab8;
}

View File

@ -0,0 +1 @@
.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}

View File

@ -0,0 +1,153 @@
/*
* Skin: Green
* -----------
*/
.skin-green-light .main-header .navbar {
background-color: #00a65a;
}
.skin-green-light .main-header .navbar .nav > li > a {
color: #ffffff;
}
.skin-green-light .main-header .navbar .nav > li > a:hover,
.skin-green-light .main-header .navbar .nav > li > a:active,
.skin-green-light .main-header .navbar .nav > li > a:focus,
.skin-green-light .main-header .navbar .nav .open > a,
.skin-green-light .main-header .navbar .nav .open > a:hover,
.skin-green-light .main-header .navbar .nav .open > a:focus,
.skin-green-light .main-header .navbar .nav > .active > a {
background: rgba(0, 0, 0, 0.1);
color: #f6f6f6;
}
.skin-green-light .main-header .navbar .sidebar-toggle {
color: #ffffff;
}
.skin-green-light .main-header .navbar .sidebar-toggle:hover {
color: #f6f6f6;
background: rgba(0, 0, 0, 0.1);
}
.skin-green-light .main-header .navbar .sidebar-toggle {
color: #fff;
}
.skin-green-light .main-header .navbar .sidebar-toggle:hover {
background-color: #008d4c;
}
@media (max-width: 767px) {
.skin-green-light .main-header .navbar .dropdown-menu li.divider {
background-color: rgba(255, 255, 255, 0.1);
}
.skin-green-light .main-header .navbar .dropdown-menu li a {
color: #fff;
}
.skin-green-light .main-header .navbar .dropdown-menu li a:hover {
background: #008d4c;
}
}
.skin-green-light .main-header .logo {
background-color: #00a65a;
color: #ffffff;
border-bottom: 0 solid transparent;
}
.skin-green-light .main-header .logo:hover {
background-color: #00a157;
}
.skin-green-light .main-header li.user-header {
background-color: #00a65a;
}
.skin-green-light .content-header {
background: transparent;
}
.skin-green-light .wrapper,
.skin-green-light .main-sidebar,
.skin-green-light .left-side {
background-color: #f9fafc;
}
.skin-green-light .content-wrapper,
.skin-green-light .main-footer {
border-left: 1px solid #d2d6de;
}
.skin-green-light .user-panel > .info,
.skin-green-light .user-panel > .info > a {
color: #444444;
}
.skin-green-light .sidebar-menu > li {
-webkit-transition: border-left-color 0.3s ease;
-o-transition: border-left-color 0.3s ease;
transition: border-left-color 0.3s ease;
}
.skin-green-light .sidebar-menu > li.header {
color: #848484;
background: #f9fafc;
}
.skin-green-light .sidebar-menu > li > a {
border-left: 3px solid transparent;
font-weight: 600;
}
.skin-green-light .sidebar-menu > li:hover > a,
.skin-green-light .sidebar-menu > li.active > a {
color: #000000;
background: #f4f4f5;
}
.skin-green-light .sidebar-menu > li.active {
border-left-color: #00a65a;
}
.skin-green-light .sidebar-menu > li.active > a {
font-weight: 600;
}
.skin-green-light .sidebar-menu > li > .treeview-menu {
background: #f4f4f5;
}
.skin-green-light .sidebar a {
color: #444444;
}
.skin-green-light .sidebar a:hover {
text-decoration: none;
}
.skin-green-light .treeview-menu > li > a {
color: #777777;
}
.skin-green-light .treeview-menu > li.active > a,
.skin-green-light .treeview-menu > li > a:hover {
color: #000000;
}
.skin-green-light .treeview-menu > li.active > a {
font-weight: 600;
}
.skin-green-light .sidebar-form {
border-radius: 3px;
border: 1px solid #d2d6de;
margin: 10px 10px;
}
.skin-green-light .sidebar-form input[type="text"],
.skin-green-light .sidebar-form .btn {
box-shadow: none;
background-color: #fff;
border: 1px solid transparent;
height: 35px;
}
.skin-green-light .sidebar-form input[type="text"] {
color: #666;
border-top-left-radius: 2px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 2px;
}
.skin-green-light .sidebar-form input[type="text"]:focus,
.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
background-color: #fff;
color: #666;
}
.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
border-left-color: #fff;
}
.skin-green-light .sidebar-form .btn {
color: #999;
border-top-left-radius: 0;
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 0;
}
@media (min-width: 768px) {
.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
border-left: 1px solid #d2d6de;
}
}

Some files were not shown because too many files have changed in this diff Show More