initial
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
.bundle
|
||||||
|
db/*.sqlite3
|
||||||
|
log/*.log
|
||||||
|
tmp/
|
||||||
|
.sass-cache/
|
||||||
|
.DS_Store
|
||||||
|
private_medias/
|
||||||
|
public/public_medias
|
4
Capfile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
|
||||||
|
Dir['vendor/gems/*/recipes/*.rb','vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
|
||||||
|
|
||||||
|
load 'config/deploy' # remove this line to skip loading any of the default tasks
|
60
Gemfile
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem 'rails', '3.2.9'
|
||||||
|
|
||||||
|
# Bundle edge Rails instead:
|
||||||
|
# gem 'rails', :git => 'git://github.com/rails/rails.git'
|
||||||
|
|
||||||
|
gem 'sqlite3'
|
||||||
|
gem 'mysql2'
|
||||||
|
|
||||||
|
|
||||||
|
# Gems used only for assets and not required
|
||||||
|
# in production environments by default.
|
||||||
|
group :assets do
|
||||||
|
gem 'sass-rails', '~> 3.2.3'
|
||||||
|
gem 'coffee-rails', '~> 3.2.1'
|
||||||
|
|
||||||
|
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
||||||
|
# gem 'therubyracer', :platforms => :ruby
|
||||||
|
|
||||||
|
gem 'uglifier', '>= 1.0.3'
|
||||||
|
|
||||||
|
gem 'compass-rails'
|
||||||
|
gem 'zurb-foundation', ">= 3.2"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
gem 'jquery-rails'
|
||||||
|
|
||||||
|
|
||||||
|
gem 'capistrano'
|
||||||
|
gem 'rvm-capistrano'
|
||||||
|
|
||||||
|
gem 'formtastic'
|
||||||
|
gem 'haml-rails'
|
||||||
|
|
||||||
|
gem 'carrierwave'
|
||||||
|
gem 'rmagick'
|
||||||
|
|
||||||
|
gem 'pygments.rb'
|
||||||
|
gem 'redcarpet'
|
||||||
|
|
||||||
|
gem 'nokogiri'
|
||||||
|
|
||||||
|
gem "devise"
|
||||||
|
|
||||||
|
# To use ActiveModel has_secure_password
|
||||||
|
# gem 'bcrypt-ruby', '~> 3.0.0'
|
||||||
|
|
||||||
|
# To use Jbuilder templates for JSON
|
||||||
|
# gem 'jbuilder'
|
||||||
|
|
||||||
|
# Use unicorn as the app server
|
||||||
|
# gem 'unicorn'
|
||||||
|
|
||||||
|
# Deploy with Capistrano
|
||||||
|
# gem 'capistrano'
|
||||||
|
|
||||||
|
# To use debugger
|
||||||
|
# gem 'debugger'
|
188
Gemfile.lock
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
actionmailer (3.2.9)
|
||||||
|
actionpack (= 3.2.9)
|
||||||
|
mail (~> 2.4.4)
|
||||||
|
actionpack (3.2.9)
|
||||||
|
activemodel (= 3.2.9)
|
||||||
|
activesupport (= 3.2.9)
|
||||||
|
builder (~> 3.0.0)
|
||||||
|
erubis (~> 2.7.0)
|
||||||
|
journey (~> 1.0.4)
|
||||||
|
rack (~> 1.4.0)
|
||||||
|
rack-cache (~> 1.2)
|
||||||
|
rack-test (~> 0.6.1)
|
||||||
|
sprockets (~> 2.2.1)
|
||||||
|
activemodel (3.2.9)
|
||||||
|
activesupport (= 3.2.9)
|
||||||
|
builder (~> 3.0.0)
|
||||||
|
activerecord (3.2.9)
|
||||||
|
activemodel (= 3.2.9)
|
||||||
|
activesupport (= 3.2.9)
|
||||||
|
arel (~> 3.0.2)
|
||||||
|
tzinfo (~> 0.3.29)
|
||||||
|
activeresource (3.2.9)
|
||||||
|
activemodel (= 3.2.9)
|
||||||
|
activesupport (= 3.2.9)
|
||||||
|
activesupport (3.2.9)
|
||||||
|
i18n (~> 0.6)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
arel (3.0.2)
|
||||||
|
bcrypt-ruby (3.0.1)
|
||||||
|
builder (3.0.4)
|
||||||
|
capistrano (2.13.5)
|
||||||
|
highline
|
||||||
|
net-scp (>= 1.0.0)
|
||||||
|
net-sftp (>= 2.0.0)
|
||||||
|
net-ssh (>= 2.0.14)
|
||||||
|
net-ssh-gateway (>= 1.1.0)
|
||||||
|
carrierwave (0.7.1)
|
||||||
|
activemodel (>= 3.2.0)
|
||||||
|
activesupport (>= 3.2.0)
|
||||||
|
chunky_png (1.2.6)
|
||||||
|
coffee-rails (3.2.2)
|
||||||
|
coffee-script (>= 2.2.0)
|
||||||
|
railties (~> 3.2.0)
|
||||||
|
coffee-script (2.2.0)
|
||||||
|
coffee-script-source
|
||||||
|
execjs
|
||||||
|
coffee-script-source (1.4.0)
|
||||||
|
compass (0.12.2)
|
||||||
|
chunky_png (~> 1.2)
|
||||||
|
fssm (>= 0.2.7)
|
||||||
|
sass (~> 3.1)
|
||||||
|
compass-rails (1.0.3)
|
||||||
|
compass (>= 0.12.2, < 0.14)
|
||||||
|
devise (2.1.2)
|
||||||
|
bcrypt-ruby (~> 3.0)
|
||||||
|
orm_adapter (~> 0.1)
|
||||||
|
railties (~> 3.1)
|
||||||
|
warden (~> 1.2.1)
|
||||||
|
erubis (2.7.0)
|
||||||
|
execjs (1.4.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
formtastic (2.2.1)
|
||||||
|
actionpack (>= 3.0)
|
||||||
|
fssm (0.2.9)
|
||||||
|
haml (3.1.7)
|
||||||
|
haml-rails (0.3.5)
|
||||||
|
actionpack (>= 3.1, < 4.1)
|
||||||
|
activesupport (>= 3.1, < 4.1)
|
||||||
|
haml (~> 3.1)
|
||||||
|
railties (>= 3.1, < 4.1)
|
||||||
|
highline (1.6.15)
|
||||||
|
hike (1.2.1)
|
||||||
|
i18n (0.6.1)
|
||||||
|
journey (1.0.4)
|
||||||
|
jquery-rails (2.1.4)
|
||||||
|
railties (>= 3.0, < 5.0)
|
||||||
|
thor (>= 0.14, < 2.0)
|
||||||
|
json (1.7.5)
|
||||||
|
mail (2.4.4)
|
||||||
|
i18n (>= 0.4.0)
|
||||||
|
mime-types (~> 1.16)
|
||||||
|
treetop (~> 1.4.8)
|
||||||
|
mime-types (1.19)
|
||||||
|
modular-scale (1.0.2)
|
||||||
|
compass (>= 0.11.5)
|
||||||
|
sassy-math (>= 1.2)
|
||||||
|
multi_json (1.5.0)
|
||||||
|
mysql2 (0.3.11)
|
||||||
|
net-scp (1.0.4)
|
||||||
|
net-ssh (>= 1.99.1)
|
||||||
|
net-sftp (2.0.5)
|
||||||
|
net-ssh (>= 2.0.9)
|
||||||
|
net-ssh (2.6.2)
|
||||||
|
net-ssh-gateway (1.1.0)
|
||||||
|
net-ssh (>= 1.99.1)
|
||||||
|
nokogiri (1.5.5)
|
||||||
|
orm_adapter (0.4.0)
|
||||||
|
polyglot (0.3.3)
|
||||||
|
posix-spawn (0.3.6)
|
||||||
|
pygments.rb (0.3.3)
|
||||||
|
posix-spawn (~> 0.3.6)
|
||||||
|
yajl-ruby (~> 1.1.0)
|
||||||
|
rack (1.4.5)
|
||||||
|
rack-cache (1.2)
|
||||||
|
rack (>= 0.4)
|
||||||
|
rack-ssl (1.3.2)
|
||||||
|
rack
|
||||||
|
rack-test (0.6.2)
|
||||||
|
rack (>= 1.0)
|
||||||
|
rails (3.2.9)
|
||||||
|
actionmailer (= 3.2.9)
|
||||||
|
actionpack (= 3.2.9)
|
||||||
|
activerecord (= 3.2.9)
|
||||||
|
activeresource (= 3.2.9)
|
||||||
|
activesupport (= 3.2.9)
|
||||||
|
bundler (~> 1.0)
|
||||||
|
railties (= 3.2.9)
|
||||||
|
railties (3.2.9)
|
||||||
|
actionpack (= 3.2.9)
|
||||||
|
activesupport (= 3.2.9)
|
||||||
|
rack-ssl (~> 1.3.2)
|
||||||
|
rake (>= 0.8.7)
|
||||||
|
rdoc (~> 3.4)
|
||||||
|
thor (>= 0.14.6, < 2.0)
|
||||||
|
rake (10.0.3)
|
||||||
|
rdoc (3.12)
|
||||||
|
json (~> 1.4)
|
||||||
|
redcarpet (2.2.2)
|
||||||
|
rmagick (2.13.1)
|
||||||
|
rvm-capistrano (1.2.7)
|
||||||
|
capistrano (>= 2.0.0)
|
||||||
|
sass (3.2.3)
|
||||||
|
sass-rails (3.2.5)
|
||||||
|
railties (~> 3.2.0)
|
||||||
|
sass (>= 3.1.10)
|
||||||
|
tilt (~> 1.3)
|
||||||
|
sassy-math (1.2)
|
||||||
|
compass (~> 0.11)
|
||||||
|
sprockets (2.2.2)
|
||||||
|
hike (~> 1.2)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
rack (~> 1.0)
|
||||||
|
tilt (~> 1.1, != 1.3.0)
|
||||||
|
sqlite3 (1.3.6)
|
||||||
|
thor (0.16.0)
|
||||||
|
tilt (1.3.3)
|
||||||
|
treetop (1.4.12)
|
||||||
|
polyglot
|
||||||
|
polyglot (>= 0.3.1)
|
||||||
|
tzinfo (0.3.35)
|
||||||
|
uglifier (1.3.0)
|
||||||
|
execjs (>= 0.3.0)
|
||||||
|
multi_json (~> 1.0, >= 1.0.2)
|
||||||
|
warden (1.2.1)
|
||||||
|
rack (>= 1.0)
|
||||||
|
yajl-ruby (1.1.0)
|
||||||
|
zurb-foundation (3.2.3)
|
||||||
|
compass (>= 0.12.2)
|
||||||
|
modular-scale (>= 1.0.2)
|
||||||
|
rake
|
||||||
|
sass (>= 3.2.0)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
capistrano
|
||||||
|
carrierwave
|
||||||
|
coffee-rails (~> 3.2.1)
|
||||||
|
compass-rails
|
||||||
|
devise
|
||||||
|
formtastic
|
||||||
|
haml-rails
|
||||||
|
jquery-rails
|
||||||
|
mysql2
|
||||||
|
nokogiri
|
||||||
|
pygments.rb
|
||||||
|
rails (= 3.2.9)
|
||||||
|
redcarpet
|
||||||
|
rmagick
|
||||||
|
rvm-capistrano
|
||||||
|
sass-rails (~> 3.2.3)
|
||||||
|
sqlite3
|
||||||
|
uglifier (>= 1.0.3)
|
||||||
|
zurb-foundation (>= 3.2)
|
261
README.rdoc
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
== Welcome to Rails
|
||||||
|
|
||||||
|
Rails is a web-application framework that includes everything needed to create
|
||||||
|
database-backed web applications according to the Model-View-Control pattern.
|
||||||
|
|
||||||
|
This pattern splits the view (also called the presentation) into "dumb"
|
||||||
|
templates that are primarily responsible for inserting pre-built data in between
|
||||||
|
HTML tags. The model contains the "smart" domain objects (such as Account,
|
||||||
|
Product, Person, Post) that holds all the business logic and knows how to
|
||||||
|
persist themselves to a database. The controller handles the incoming requests
|
||||||
|
(such as Save New Account, Update Product, Show Post) by manipulating the model
|
||||||
|
and directing data to the view.
|
||||||
|
|
||||||
|
In Rails, the model is handled by what's called an object-relational mapping
|
||||||
|
layer entitled Active Record. This layer allows you to present the data from
|
||||||
|
database rows as objects and embellish these data objects with business logic
|
||||||
|
methods. You can read more about Active Record in
|
||||||
|
link:files/vendor/rails/activerecord/README.html.
|
||||||
|
|
||||||
|
The controller and view are handled by the Action Pack, which handles both
|
||||||
|
layers by its two parts: Action View and Action Controller. These two layers
|
||||||
|
are bundled in a single package due to their heavy interdependence. This is
|
||||||
|
unlike the relationship between the Active Record and Action Pack that is much
|
||||||
|
more separate. Each of these packages can be used independently outside of
|
||||||
|
Rails. You can read more about Action Pack in
|
||||||
|
link:files/vendor/rails/actionpack/README.html.
|
||||||
|
|
||||||
|
|
||||||
|
== Getting Started
|
||||||
|
|
||||||
|
1. At the command prompt, create a new Rails application:
|
||||||
|
<tt>rails new myapp</tt> (where <tt>myapp</tt> is the application name)
|
||||||
|
|
||||||
|
2. Change directory to <tt>myapp</tt> and start the web server:
|
||||||
|
<tt>cd myapp; rails server</tt> (run with --help for options)
|
||||||
|
|
||||||
|
3. Go to http://localhost:3000/ and you'll see:
|
||||||
|
"Welcome aboard: You're riding Ruby on Rails!"
|
||||||
|
|
||||||
|
4. Follow the guidelines to start developing your application. You can find
|
||||||
|
the following resources handy:
|
||||||
|
|
||||||
|
* The Getting Started Guide: http://guides.rubyonrails.org/getting_started.html
|
||||||
|
* Ruby on Rails Tutorial Book: http://www.railstutorial.org/
|
||||||
|
|
||||||
|
|
||||||
|
== Debugging Rails
|
||||||
|
|
||||||
|
Sometimes your application goes wrong. Fortunately there are a lot of tools that
|
||||||
|
will help you debug it and get it back on the rails.
|
||||||
|
|
||||||
|
First area to check is the application log files. Have "tail -f" commands
|
||||||
|
running on the server.log and development.log. Rails will automatically display
|
||||||
|
debugging and runtime information to these files. Debugging info will also be
|
||||||
|
shown in the browser on requests from 127.0.0.1.
|
||||||
|
|
||||||
|
You can also log your own messages directly into the log file from your code
|
||||||
|
using the Ruby logger class from inside your controllers. Example:
|
||||||
|
|
||||||
|
class WeblogController < ActionController::Base
|
||||||
|
def destroy
|
||||||
|
@weblog = Weblog.find(params[:id])
|
||||||
|
@weblog.destroy
|
||||||
|
logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
The result will be a message in your log file along the lines of:
|
||||||
|
|
||||||
|
Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1!
|
||||||
|
|
||||||
|
More information on how to use the logger is at http://www.ruby-doc.org/core/
|
||||||
|
|
||||||
|
Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are
|
||||||
|
several books available online as well:
|
||||||
|
|
||||||
|
* Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe)
|
||||||
|
* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide)
|
||||||
|
|
||||||
|
These two books will bring you up to speed on the Ruby language and also on
|
||||||
|
programming in general.
|
||||||
|
|
||||||
|
|
||||||
|
== Debugger
|
||||||
|
|
||||||
|
Debugger support is available through the debugger command when you start your
|
||||||
|
Mongrel or WEBrick server with --debugger. This means that you can break out of
|
||||||
|
execution at any point in the code, investigate and change the model, and then,
|
||||||
|
resume execution! You need to install ruby-debug to run the server in debugging
|
||||||
|
mode. With gems, use <tt>sudo gem install ruby-debug</tt>. Example:
|
||||||
|
|
||||||
|
class WeblogController < ActionController::Base
|
||||||
|
def index
|
||||||
|
@posts = Post.all
|
||||||
|
debugger
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
So the controller will accept the action, run the first line, then present you
|
||||||
|
with a IRB prompt in the server window. Here you can do things like:
|
||||||
|
|
||||||
|
>> @posts.inspect
|
||||||
|
=> "[#<Post:0x14a6be8
|
||||||
|
@attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>,
|
||||||
|
#<Post:0x14a6620
|
||||||
|
@attributes={"title"=>"Rails", "body"=>"Only ten..", "id"=>"2"}>]"
|
||||||
|
>> @posts.first.title = "hello from a debugger"
|
||||||
|
=> "hello from a debugger"
|
||||||
|
|
||||||
|
...and even better, you can examine how your runtime objects actually work:
|
||||||
|
|
||||||
|
>> f = @posts.first
|
||||||
|
=> #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>
|
||||||
|
>> f.
|
||||||
|
Display all 152 possibilities? (y or n)
|
||||||
|
|
||||||
|
Finally, when you're ready to resume execution, you can enter "cont".
|
||||||
|
|
||||||
|
|
||||||
|
== Console
|
||||||
|
|
||||||
|
The console is a Ruby shell, which allows you to interact with your
|
||||||
|
application's domain model. Here you'll have all parts of the application
|
||||||
|
configured, just like it is when the application is running. You can inspect
|
||||||
|
domain models, change values, and save to the database. Starting the script
|
||||||
|
without arguments will launch it in the development environment.
|
||||||
|
|
||||||
|
To start the console, run <tt>rails console</tt> from the application
|
||||||
|
directory.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
|
||||||
|
* Passing the <tt>-s, --sandbox</tt> argument will rollback any modifications
|
||||||
|
made to the database.
|
||||||
|
* Passing an environment name as an argument will load the corresponding
|
||||||
|
environment. Example: <tt>rails console production</tt>.
|
||||||
|
|
||||||
|
To reload your controllers and models after launching the console run
|
||||||
|
<tt>reload!</tt>
|
||||||
|
|
||||||
|
More information about irb can be found at:
|
||||||
|
link:http://www.rubycentral.org/pickaxe/irb.html
|
||||||
|
|
||||||
|
|
||||||
|
== dbconsole
|
||||||
|
|
||||||
|
You can go to the command line of your database directly through <tt>rails
|
||||||
|
dbconsole</tt>. You would be connected to the database with the credentials
|
||||||
|
defined in database.yml. Starting the script without arguments will connect you
|
||||||
|
to the development database. Passing an argument will connect you to a different
|
||||||
|
database, like <tt>rails dbconsole production</tt>. Currently works for MySQL,
|
||||||
|
PostgreSQL and SQLite 3.
|
||||||
|
|
||||||
|
== Description of Contents
|
||||||
|
|
||||||
|
The default directory structure of a generated Ruby on Rails application:
|
||||||
|
|
||||||
|
|-- app
|
||||||
|
| |-- assets
|
||||||
|
| |-- images
|
||||||
|
| |-- javascripts
|
||||||
|
| `-- stylesheets
|
||||||
|
| |-- controllers
|
||||||
|
| |-- helpers
|
||||||
|
| |-- mailers
|
||||||
|
| |-- models
|
||||||
|
| `-- views
|
||||||
|
| `-- layouts
|
||||||
|
|-- config
|
||||||
|
| |-- environments
|
||||||
|
| |-- initializers
|
||||||
|
| `-- locales
|
||||||
|
|-- db
|
||||||
|
|-- doc
|
||||||
|
|-- lib
|
||||||
|
| `-- tasks
|
||||||
|
|-- log
|
||||||
|
|-- public
|
||||||
|
|-- script
|
||||||
|
|-- test
|
||||||
|
| |-- fixtures
|
||||||
|
| |-- functional
|
||||||
|
| |-- integration
|
||||||
|
| |-- performance
|
||||||
|
| `-- unit
|
||||||
|
|-- tmp
|
||||||
|
| |-- cache
|
||||||
|
| |-- pids
|
||||||
|
| |-- sessions
|
||||||
|
| `-- sockets
|
||||||
|
`-- vendor
|
||||||
|
|-- assets
|
||||||
|
`-- stylesheets
|
||||||
|
`-- plugins
|
||||||
|
|
||||||
|
app
|
||||||
|
Holds all the code that's specific to this particular application.
|
||||||
|
|
||||||
|
app/assets
|
||||||
|
Contains subdirectories for images, stylesheets, and JavaScript files.
|
||||||
|
|
||||||
|
app/controllers
|
||||||
|
Holds controllers that should be named like weblogs_controller.rb for
|
||||||
|
automated URL mapping. All controllers should descend from
|
||||||
|
ApplicationController which itself descends from ActionController::Base.
|
||||||
|
|
||||||
|
app/models
|
||||||
|
Holds models that should be named like post.rb. Models descend from
|
||||||
|
ActiveRecord::Base by default.
|
||||||
|
|
||||||
|
app/views
|
||||||
|
Holds the template files for the view that should be named like
|
||||||
|
weblogs/index.html.erb for the WeblogsController#index action. All views use
|
||||||
|
eRuby syntax by default.
|
||||||
|
|
||||||
|
app/views/layouts
|
||||||
|
Holds the template files for layouts to be used with views. This models the
|
||||||
|
common header/footer method of wrapping views. In your views, define a layout
|
||||||
|
using the <tt>layout :default</tt> and create a file named default.html.erb.
|
||||||
|
Inside default.html.erb, call <% yield %> to render the view using this
|
||||||
|
layout.
|
||||||
|
|
||||||
|
app/helpers
|
||||||
|
Holds view helpers that should be named like weblogs_helper.rb. These are
|
||||||
|
generated for you automatically when using generators for controllers.
|
||||||
|
Helpers can be used to wrap functionality for your views into methods.
|
||||||
|
|
||||||
|
config
|
||||||
|
Configuration files for the Rails environment, the routing map, the database,
|
||||||
|
and other dependencies.
|
||||||
|
|
||||||
|
db
|
||||||
|
Contains the database schema in schema.rb. db/migrate contains all the
|
||||||
|
sequence of Migrations for your schema.
|
||||||
|
|
||||||
|
doc
|
||||||
|
This directory is where your application documentation will be stored when
|
||||||
|
generated using <tt>rake doc:app</tt>
|
||||||
|
|
||||||
|
lib
|
||||||
|
Application specific libraries. Basically, any kind of custom code that
|
||||||
|
doesn't belong under controllers, models, or helpers. This directory is in
|
||||||
|
the load path.
|
||||||
|
|
||||||
|
public
|
||||||
|
The directory available for the web server. Also contains the dispatchers and the
|
||||||
|
default HTML files. This should be set as the DOCUMENT_ROOT of your web
|
||||||
|
server.
|
||||||
|
|
||||||
|
script
|
||||||
|
Helper scripts for automation and generation.
|
||||||
|
|
||||||
|
test
|
||||||
|
Unit and functional tests along with fixtures. When using the rails generate
|
||||||
|
command, template test files will be generated for you and placed in this
|
||||||
|
directory.
|
||||||
|
|
||||||
|
vendor
|
||||||
|
External libraries that the application depends on. Also includes the plugins
|
||||||
|
subdirectory. If the app has frozen rails, those gems also go here, under
|
||||||
|
vendor/rails/. This directory is in the load path.
|
7
Rakefile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env rake
|
||||||
|
# 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 File.expand_path('../config/application', __FILE__)
|
||||||
|
|
||||||
|
SimpleLux::Application.load_tasks
|
BIN
app/assets/images/hr_down.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
app/assets/images/laverie-1.jpg
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
app/assets/images/laverie-2.jpg
Normal file
After Width: | Height: | Size: 152 KiB |
BIN
app/assets/images/laverie-ampere-1.jpg
Normal file
After Width: | Height: | Size: 155 KiB |
BIN
app/assets/images/laverie-ampere-2.jpg
Normal file
After Width: | Height: | Size: 667 KiB |
BIN
app/assets/images/laverie-foch-1.jpg
Normal file
After Width: | Height: | Size: 221 KiB |
BIN
app/assets/images/laverie-foch-2.jpg
Normal file
After Width: | Height: | Size: 211 KiB |
BIN
app/assets/images/laverie-grenoble-1.jpg
Normal file
After Width: | Height: | Size: 205 KiB |
BIN
app/assets/images/laverie-grenoble-2.jpg
Normal file
After Width: | Height: | Size: 154 KiB |
BIN
app/assets/images/laverie-seyssinet-1.jpg
Normal file
After Width: | Height: | Size: 243 KiB |
BIN
app/assets/images/laverie-seyssinet-2.jpg
Normal file
After Width: | Height: | Size: 250 KiB |
BIN
app/assets/images/laverie-st-egreve-1.jpg
Normal file
After Width: | Height: | Size: 226 KiB |
BIN
app/assets/images/laverie-st-egreve-2.jpg
Normal file
After Width: | Height: | Size: 257 KiB |
BIN
app/assets/images/left_shadow.png
Normal file
After Width: | Height: | Size: 169 B |
BIN
app/assets/images/local.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
app/assets/images/logo.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
app/assets/images/machine.png
Normal file
After Width: | Height: | Size: 460 KiB |
BIN
app/assets/images/parking.jpg
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
app/assets/images/rails.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
app/assets/images/rent.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
app/assets/images/right_shadow.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
app/assets/images/signaletique.png
Normal file
After Width: | Height: | Size: 618 KiB |
BIN
app/assets/images/site internet 2 copie 2.png
Normal file
After Width: | Height: | Size: 16 MiB |
BIN
app/assets/images/site internet 2 copie.png
Normal file
After Width: | Height: | Size: 16 MiB |
BIN
app/assets/images/site internet 2.png
Normal file
After Width: | Height: | Size: 16 MiB |
BIN
app/assets/images/societe-durable.jpg
Normal file
After Width: | Height: | Size: 351 KiB |
8
app/assets/javascripts/application.js.coffee
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#= require jquery
|
||||||
|
#= require jquery_ujs
|
||||||
|
#= require_tree .
|
||||||
|
|
||||||
|
$ ->
|
||||||
|
|
||||||
|
$("a[rel^='prettyPhoto']").fancybox()
|
||||||
|
|
3
app/assets/javascripts/contact.js.coffee
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
46
app/assets/javascripts/jquery.fancybox-1.3.4.pack.js
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* FancyBox - jQuery Plugin
|
||||||
|
* Simple and fancy lightbox alternative
|
||||||
|
*
|
||||||
|
* Examples and documentation at: http://fancybox.net
|
||||||
|
*
|
||||||
|
* Copyright (c) 2008 - 2010 Janis Skarnelis
|
||||||
|
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
|
||||||
|
*
|
||||||
|
* Version: 1.3.4 (11/11/2010)
|
||||||
|
* Requires: jQuery v1.3+
|
||||||
|
*
|
||||||
|
* Dual licensed under the MIT and GPL licenses:
|
||||||
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("<div/>")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>');
|
||||||
|
F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)||
|
||||||
|
c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=
|
||||||
|
false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel",
|
||||||
|
function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("<img />").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+c+
|
||||||
|
'"></param>';P="";b.each(e.swf,function(x,H){C+='<param name="'+x+'" value="'+H+'"></param>';P+=" "+x+'="'+H+'"'});C+='<embed src="'+c+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+P+"></embed></object>";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win==
|
||||||
|
"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('<div style="width:'+a+";height:"+c+
|
||||||
|
";overflow: "+(e.scrolling=="auto"?"auto":e.scrolling=="yes"?"scroll":"hidden")+';position:relative;"></div>');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor,
|
||||||
|
opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length?
|
||||||
|
d.titlePosition=="float"?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding});
|
||||||
|
y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height==
|
||||||
|
i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents());
|
||||||
|
f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode==
|
||||||
|
37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto");
|
||||||
|
s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(b.browser.msie?'allowtransparency="true""':"")+' scrolling="'+e.scrolling+'" src="'+d.href+'"></iframe>').appendTo(j);
|
||||||
|
f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c);
|
||||||
|
j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type==
|
||||||
|
"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"),
|
||||||
|
10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)};
|
||||||
|
b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k=
|
||||||
|
0,C=a.length;k<C;k++)if(typeof a[k]=="object")b(a[k]).data("fancybox",b.extend({},g,a[k]));else a[k]=b({}).data("fancybox",b.extend({content:a[k]},g));o=jQuery.merge(o,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},g,a));else a=b({}).data("fancybox",b.extend({content:a},g));o.push(a)}if(q>o.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+
|
||||||
|
1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a<l.length){q=a;I()}else if(d.cyclic&&l.length>1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h=
|
||||||
|
true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1;
|
||||||
|
b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5-
|
||||||
|
d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),t=b('<div id="fancybox-loading"><div></div></div>'),u=b('<div id="fancybox-overlay"></div>'),f=b('<div id="fancybox-wrap"></div>'));D=b('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(f);
|
||||||
|
D.append(j=b('<div id="fancybox-content"></div>'),E=b('<a id="fancybox-close"></a>'),n=b('<div id="fancybox-title"></div>'),z=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),A=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()});
|
||||||
|
b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(D)}}};
|
||||||
|
b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",
|
||||||
|
easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery);
|
3
app/assets/javascripts/pages.js.coffee
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
1
app/assets/stylesheets/_settings.scss
Normal file
@ -0,0 +1 @@
|
|||||||
|
$baseFontSize : 100px;
|
7
app/assets/stylesheets/application.css.scss
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
@import "jquery.fancybox-1.3.4";
|
||||||
|
|
||||||
|
body{
|
||||||
|
font-family:Palatino,sans-serif;
|
||||||
|
background:rgba(242,239,232,1);
|
||||||
|
|
||||||
|
}
|
3
app/assets/stylesheets/contact.css.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the contact controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
359
app/assets/stylesheets/jquery.fancybox-1.3.4.css
Executable file
@ -0,0 +1,359 @@
|
|||||||
|
/*
|
||||||
|
* FancyBox - jQuery Plugin
|
||||||
|
* Simple and fancy lightbox alternative
|
||||||
|
*
|
||||||
|
* Examples and documentation at: http://fancybox.net
|
||||||
|
*
|
||||||
|
* Copyright (c) 2008 - 2010 Janis Skarnelis
|
||||||
|
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
|
||||||
|
*
|
||||||
|
* Version: 1.3.4 (11/11/2010)
|
||||||
|
* Requires: jQuery v1.3+
|
||||||
|
*
|
||||||
|
* Dual licensed under the MIT and GPL licenses:
|
||||||
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#fancybox-loading {
|
||||||
|
position: fixed;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
margin-top: -20px;
|
||||||
|
margin-left: -20px;
|
||||||
|
cursor: pointer;
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 1104;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-loading div {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 40px;
|
||||||
|
height: 480px;
|
||||||
|
background-image: url('/fancybox/fancybox.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-overlay {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1100;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-tmp {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
overflow: auto;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-wrap {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: 20px;
|
||||||
|
z-index: 1101;
|
||||||
|
outline: none;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-outer {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-content {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
padding: 0;
|
||||||
|
outline: none;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 1102;
|
||||||
|
border: 0px solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-hide-sel-frame {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: transparent;
|
||||||
|
z-index: 1101;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-close {
|
||||||
|
position: absolute;
|
||||||
|
top: -15px;
|
||||||
|
right: -15px;
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
background: transparent url('/fancybox/fancybox.png') -40px 0px;
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 1103;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-error {
|
||||||
|
color: #444;
|
||||||
|
font: normal 12px/20px Arial;
|
||||||
|
padding: 14px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
line-height: 0;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-frame {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-left, #fancybox-right {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0px;
|
||||||
|
height: 100%;
|
||||||
|
width: 35%;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: none;
|
||||||
|
background: transparent url('/fancybox/blank.gif');
|
||||||
|
z-index: 1102;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-left {
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-right {
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-left-ico, #fancybox-right-ico {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: -9999px;
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
margin-top: -15px;
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 1102;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-left-ico {
|
||||||
|
background-image: url('/fancybox/fancybox.png');
|
||||||
|
background-position: -40px -30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-right-ico {
|
||||||
|
background-image: url('/fancybox/fancybox.png');
|
||||||
|
background-position: -40px -60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-left:hover, #fancybox-right:hover {
|
||||||
|
visibility: visible; /* IE6 */
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-left:hover span {
|
||||||
|
left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-right:hover span {
|
||||||
|
left: auto;
|
||||||
|
right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancybox-bg {
|
||||||
|
position: absolute;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-bg-n {
|
||||||
|
top: -20px;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
background-image: url('/fancybox/fancybox-x.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-bg-ne {
|
||||||
|
top: -20px;
|
||||||
|
right: -20px;
|
||||||
|
background-image: url('/fancybox/fancybox.png');
|
||||||
|
background-position: -40px -162px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-bg-e {
|
||||||
|
top: 0;
|
||||||
|
right: -20px;
|
||||||
|
height: 100%;
|
||||||
|
background-image: url('/fancybox/fancybox-y.png');
|
||||||
|
background-position: -20px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-bg-se {
|
||||||
|
bottom: -20px;
|
||||||
|
right: -20px;
|
||||||
|
background-image: url('/fancybox/fancybox.png');
|
||||||
|
background-position: -40px -182px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-bg-s {
|
||||||
|
bottom: -20px;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
background-image: url('/fancybox/fancybox-x.png');
|
||||||
|
background-position: 0px -20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-bg-sw {
|
||||||
|
bottom: -20px;
|
||||||
|
left: -20px;
|
||||||
|
background-image: url('/fancybox/fancybox.png');
|
||||||
|
background-position: -40px -142px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-bg-w {
|
||||||
|
top: 0;
|
||||||
|
left: -20px;
|
||||||
|
height: 100%;
|
||||||
|
background-image: url('/fancybox/fancybox-y.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-bg-nw {
|
||||||
|
top: -20px;
|
||||||
|
left: -20px;
|
||||||
|
background-image: url('/fancybox/fancybox.png');
|
||||||
|
background-position: -40px -122px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-title {
|
||||||
|
font-family: Helvetica;
|
||||||
|
font-size: 12px;
|
||||||
|
z-index: 1102;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancybox-title-inside {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
text-align: center;
|
||||||
|
color: #333;
|
||||||
|
background: #fff;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancybox-title-outside {
|
||||||
|
padding-top: 10px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancybox-title-over {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
color: #FFF;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-title-over {
|
||||||
|
padding: 10px;
|
||||||
|
background-image: url('/fancybox/fancy_title_over.png');
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancybox-title-float {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: -20px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-title-float-wrap {
|
||||||
|
border: none;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-title-float-wrap td {
|
||||||
|
border: none;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-title-float-left {
|
||||||
|
padding: 0 0 0 15px;
|
||||||
|
background: url('/fancybox/fancybox.png') -40px -90px no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-title-float-main {
|
||||||
|
color: #FFF;
|
||||||
|
line-height: 29px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 0 0 3px 0;
|
||||||
|
background: url('/fancybox/fancybox-x.png') 0px -40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-title-float-right {
|
||||||
|
padding: 0 0 0 15px;
|
||||||
|
background: url('/fancybox/fancybox.png') -55px -90px no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* IE6 */
|
||||||
|
|
||||||
|
.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
|
||||||
|
|
||||||
|
.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
|
||||||
|
|
||||||
|
.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
|
||||||
|
.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
|
||||||
|
|
||||||
|
.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
|
||||||
|
height: expression(this.parentNode.clientHeight + "px");
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-loading.fancybox-ie6 {
|
||||||
|
position: absolute; margin-top: 0;
|
||||||
|
top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
|
||||||
|
}
|
||||||
|
|
||||||
|
#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
|
||||||
|
|
||||||
|
/* IE6, IE7, IE8 */
|
||||||
|
|
||||||
|
.fancybox-ie .fancybox-bg { background: transparent !important; }
|
||||||
|
|
||||||
|
.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
|
||||||
|
.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }
|
3
app/assets/stylesheets/pages.css.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the pages controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
110
app/assets/stylesheets/public.css.scss.erb
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
|
||||||
|
|
||||||
|
@import "compass";
|
||||||
|
@import "foundation";
|
||||||
|
|
||||||
|
@import "shared/formtastic";
|
||||||
|
|
||||||
|
@import "public/gallery";
|
||||||
|
@import "public/portlets";
|
||||||
|
@import "public/slider";
|
||||||
|
|
||||||
|
.row{
|
||||||
|
|
||||||
|
width:1100px;
|
||||||
|
|
||||||
|
|
||||||
|
.left_shadow{
|
||||||
|
background: url('/assets/front/left_shadow.png');
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
z-index:100;
|
||||||
|
top:0px;
|
||||||
|
bottom:0px;
|
||||||
|
margin-left:-22px;
|
||||||
|
height:1000px;
|
||||||
|
width:22px;
|
||||||
|
}
|
||||||
|
.right_shadow{
|
||||||
|
background: url('/assets/front/right_shadow.png');
|
||||||
|
float:right;
|
||||||
|
position:absolute;
|
||||||
|
height:1000px;
|
||||||
|
z-index:100;
|
||||||
|
top:0px;
|
||||||
|
bottom:0px;
|
||||||
|
right:0px;
|
||||||
|
margin-right:-22px;
|
||||||
|
|
||||||
|
width:22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#shadow{
|
||||||
|
|
||||||
|
position:relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
body{
|
||||||
|
font-family : 'OpenSansRegular','helvetica', 'san-serif';
|
||||||
|
|
||||||
|
color:#333333;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#top_anchor{
|
||||||
|
position:absolute;
|
||||||
|
top:0px;
|
||||||
|
left:0px;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.green{
|
||||||
|
background:rgb(154,179,84);
|
||||||
|
}
|
||||||
|
|
||||||
|
#top{
|
||||||
|
|
||||||
|
|
||||||
|
#logo{
|
||||||
|
|
||||||
|
width:100%;
|
||||||
|
max-width:305px;
|
||||||
|
margin:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu{
|
||||||
|
|
||||||
|
a{
|
||||||
|
color:#383838;
|
||||||
|
text-decoration:none;
|
||||||
|
display:block;
|
||||||
|
float:left;
|
||||||
|
padding-left:15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#main{
|
||||||
|
background:white;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
3
app/controllers/application_controller.rb
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
class ApplicationController < ActionController::Base
|
||||||
|
protect_from_forgery
|
||||||
|
end
|
9
app/controllers/contact_controller.rb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
class ContactController < ApplicationController
|
||||||
|
def new
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@params = params
|
||||||
|
DemandeMail.prise(@params).deliver
|
||||||
|
end
|
||||||
|
end
|
7
app/controllers/pages_controller.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
class PagesController < ApplicationController
|
||||||
|
|
||||||
|
|
||||||
|
def show
|
||||||
|
@slug = params[:slug] ? params[:slug] : "index"
|
||||||
|
end
|
||||||
|
end
|
2
app/helpers/application_helper.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
module ApplicationHelper
|
||||||
|
end
|
2
app/helpers/contact_helper.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
module ContactHelper
|
||||||
|
end
|
2
app/helpers/pages_helper.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
module PagesHelper
|
||||||
|
end
|
0
app/mailers/.gitkeep
Normal file
10
app/mailers/demande_mail.rb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
class DemandeMail < ActionMailer::Base
|
||||||
|
default from: "contact@luxlaverie.com"
|
||||||
|
|
||||||
|
|
||||||
|
def prise(params)
|
||||||
|
@params = params
|
||||||
|
|
||||||
|
mail to: "contact@luxlaverie.com", :bcc => "info@nicolasbally.com", :subject => "Demande de contact par le site."
|
||||||
|
end
|
||||||
|
end
|
0
app/models/.gitkeep
Normal file
19
app/views/contact/create.html.haml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
.green
|
||||||
|
.row
|
||||||
|
%hr.down{:style => "padding-bottom:1em;"}
|
||||||
|
.twelve.columns
|
||||||
|
|
||||||
|
|
||||||
|
%h2{:style => "text-align:center;color:white;margin:0px;padding:0px;"}
|
||||||
|
Merci !
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%hr.up{:style => "padding-top:1.2em;"}
|
||||||
|
|
||||||
|
|
||||||
|
.row
|
||||||
|
.twelve.columns{:style => "margin-top:1em;"}
|
||||||
|
%br
|
||||||
|
%p{:style => "text-align:center;"}
|
||||||
|
Votre demande nous a été transmise. Nous vous répondrons dans les meilleurs délais.
|
0
app/views/contact/new.html.haml
Normal file
30
app/views/demande_mail/prise.html.haml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
%h3 Coordonnées :
|
||||||
|
%p
|
||||||
|
=@params[:name]
|
||||||
|
%br
|
||||||
|
=@params[:address]
|
||||||
|
%br
|
||||||
|
=@params[:address2]
|
||||||
|
%br
|
||||||
|
=@params[:cp]
|
||||||
|
=@params[:city]
|
||||||
|
|
||||||
|
%p
|
||||||
|
Tél :
|
||||||
|
=@params[:city]
|
||||||
|
|
||||||
|
%p
|
||||||
|
Mail :
|
||||||
|
=@params[:mail]
|
||||||
|
|
||||||
|
%h3 Lieu du projet
|
||||||
|
%p=@params[:place]
|
||||||
|
|
||||||
|
%h3 Type de projet
|
||||||
|
%p=@params[:type]
|
||||||
|
%p
|
||||||
|
Vous possédez le terrain ou le local pour l'installation ?
|
||||||
|
%strong=@params[:owner]
|
||||||
|
|
||||||
|
%h3 Message
|
||||||
|
=simple_format @params[:message]
|
33
app/views/layouts/application.html.haml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
!!!
|
||||||
|
%html{:xmlns=>"http://www.w3.org/1999/xhtml", :"xml:lang"=>"fr", :lang=>"fr"}
|
||||||
|
%head
|
||||||
|
%title=@title.to_s
|
||||||
|
%meta{ :"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8" }
|
||||||
|
%meta{ :"name" => "Description", :content => @description }
|
||||||
|
%meta{ :"name" => "Keywords", :content => @keywords }
|
||||||
|
|
||||||
|
%meta{ :"name" => "viewport", :content => "width=device-width, initial-scale=1.0" }
|
||||||
|
|
||||||
|
|
||||||
|
= javascript_include_tag "application"
|
||||||
|
|
||||||
|
= csrf_meta_tag
|
||||||
|
|
||||||
|
= stylesheet_link_tag 'application'
|
||||||
|
= stylesheet_link_tag '/fonts/OpenSans/stylesheet.css'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
=javascript_include_tag "http://maps.google.com/maps/api/js?sensor=false®ion=FR"
|
||||||
|
|
||||||
|
|
||||||
|
%body
|
||||||
|
%a{:id => "top_anchor"}
|
||||||
|
|
||||||
|
|
||||||
|
=yield
|
||||||
|
|
||||||
|
=#%a#go_top{:href => "#top"} Retour en haut.
|
||||||
|
|
||||||
|
|
||||||
|
|
1
app/views/pages/show.html.haml
Normal file
@ -0,0 +1 @@
|
|||||||
|
=render :template => "pages_content/"+@slug.to_s
|
125
app/views/pages_content/contact.html.haml
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
.green
|
||||||
|
.row
|
||||||
|
%hr.down{:style => "padding-bottom:1em;"}
|
||||||
|
.twelve.columns
|
||||||
|
|
||||||
|
|
||||||
|
%h2{:style => "text-align:center;color:white;margin:0px;padding:0px;"}
|
||||||
|
Faisons connaissance.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%hr.up{:style => "padding-top:1.2em;"}
|
||||||
|
|
||||||
|
|
||||||
|
.row
|
||||||
|
.twelve.columns{:style => "margin-top:1em;"}
|
||||||
|
%br
|
||||||
|
%p{:style => "text-align:center;"}
|
||||||
|
Que vous souhaitiez investir dans une laverie, ou simplement
|
||||||
|
%br
|
||||||
|
louer votre bien pour l'implantation de l'une d'elles nous nous ferons
|
||||||
|
%br
|
||||||
|
un plaisir de vous guider dans votre projet.
|
||||||
|
|
||||||
|
|
||||||
|
.row
|
||||||
|
%hr.down
|
||||||
|
.four.columns
|
||||||
|
%h3 Par téléphone
|
||||||
|
%p 04 76 35 19 77
|
||||||
|
%h3 Par fax
|
||||||
|
%p 04 76 35 20 41
|
||||||
|
|
||||||
|
.four.columns
|
||||||
|
%h3 Par courier
|
||||||
|
%p
|
||||||
|
Lux Laverie
|
||||||
|
%br
|
||||||
|
60 rue de la Tour de Criel
|
||||||
|
%br
|
||||||
|
38500 Voiron
|
||||||
|
%br
|
||||||
|
France
|
||||||
|
|
||||||
|
.four.columns
|
||||||
|
%h3 Par email
|
||||||
|
%p
|
||||||
|
En nous écrivant à
|
||||||
|
=link_to "contact@luxlaverie.com", "mailto:contact@luxlaverie.com"
|
||||||
|
%hr.up
|
||||||
|
|
||||||
|
.row
|
||||||
|
|
||||||
|
.twelve.columns
|
||||||
|
%h3 Formulaire de contact
|
||||||
|
|
||||||
|
|
||||||
|
=form_tag "contact/create", :method => :post do
|
||||||
|
|
||||||
|
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
|
||||||
|
%label Nom
|
||||||
|
=text_field_tag :name, "", :placeholder => "Nom"
|
||||||
|
|
||||||
|
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
|
||||||
|
%label Adresse
|
||||||
|
=text_field_tag :address, "", :placeholder => "Adresse"
|
||||||
|
=text_field_tag :address2, "", :placeholder => "Adresse suite"
|
||||||
|
.row
|
||||||
|
.four.columns
|
||||||
|
=text_field_tag :cp, "", :placeholder => "Code postal"
|
||||||
|
.eight.columns
|
||||||
|
=text_field_tag :city, "", :placeholder => "Ville"
|
||||||
|
|
||||||
|
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
|
||||||
|
%label Téléphone
|
||||||
|
=text_field_tag :tel, "", :placeholder => "Téléphone"
|
||||||
|
|
||||||
|
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
|
||||||
|
%label Mail
|
||||||
|
=text_field_tag :mail, "", :placeholder => "Mail"
|
||||||
|
|
||||||
|
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
|
||||||
|
%label Lieu du projet
|
||||||
|
=text_field_tag :place, "", :placeholder => "Lieu du projet"
|
||||||
|
|
||||||
|
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
|
||||||
|
%label Type du projet
|
||||||
|
.row
|
||||||
|
.three.columns
|
||||||
|
=radio_button_tag :type, "bungalow"
|
||||||
|
%label{:style => "display:inline-block;"} Bungalow
|
||||||
|
|
||||||
|
=radio_button_tag :type, "local"
|
||||||
|
%label{:style => "display:inline-block;"} Local
|
||||||
|
|
||||||
|
.nine.columns
|
||||||
|
|
||||||
|
Vous possédez le terrain ou le local pour l'installation ?
|
||||||
|
|
||||||
|
=radio_button_tag :owner, "oui"
|
||||||
|
%label{:style => "display:inline-block;"} oui
|
||||||
|
|
||||||
|
=radio_button_tag :owner, "non"
|
||||||
|
%label{:style => "display:inline-block;"} non
|
||||||
|
|
||||||
|
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
|
||||||
|
%label Message
|
||||||
|
=text_area_tag :message, "", :placeholder => "Message", :style => "height:10em;"
|
||||||
|
|
||||||
|
|
||||||
|
=submit_tag "Envoyer", :style => "display:block;text-align:center;margin:auto;color:white;background:#9ab354;border-radius:1em; padding:0.5em 1em; font-size:1em; border:0px;"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.green{:style => "margin-top:2em;"}
|
||||||
|
.row
|
||||||
|
|
||||||
|
.twelve.columns
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%p{:style => "text-align:center;"}
|
||||||
|
%br
|
||||||
|
Un commercial pourra au besoin vous rencontrer sur toute la France.
|
||||||
|
|
52
app/views/pages_content/index.html.haml
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
-@title = "Vente d'une maison forte à Chasselay, Isère."
|
||||||
|
-@description = "Maison forte de 1547 sur 19 000 m2 de terrain composée de trois appartements entierements rénovés avec possibilité d'en améanger 3 autres."
|
||||||
|
-@keywords = "Maison, Maison forte, Chasselay, Isère, Chambarans"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#infos{:style => "float:left; width:400px;height:630px;background:#3b3b3c;color:rgba(233,233,233,1);margin:5px;box-sizing:border-box;padding:1em;"}
|
||||||
|
%h1{:style => "text-align:center;margin:0px;padding:0px;line-height:1.5em;font-size:1.5em;color:white; font-weight:normal;"}
|
||||||
|
Vente d'une maison forte à Chasselay
|
||||||
|
|
||||||
|
%p
|
||||||
|
Chasselay : Sur terrain de 19000 m2 vend maison forte de 1547 composée de trois appartements entierements rénovés.possibilité d'aménager trois autres appartements.
|
||||||
|
|
||||||
|
%p
|
||||||
|
1° appartement de 165m2 chauffage pompe à chaleur plus cheminée.
|
||||||
|
|
||||||
|
%p
|
||||||
|
2° appartement de 110m2 chauffage électricité plus cheminée.
|
||||||
|
%p
|
||||||
|
3° appartement de 95m2 chauffage chaudiere fioul plus poele à bois.
|
||||||
|
%p
|
||||||
|
Caves voutées, grange, vue exeptionnelle.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%p
|
||||||
|
580 000 euros
|
||||||
|
|
||||||
|
%p
|
||||||
|
Agence et curieux s'abstenir
|
||||||
|
|
||||||
|
%p
|
||||||
|
Contact :
|
||||||
|
%br Christian Clair
|
||||||
|
%br
|
||||||
|
=link_to "ch.clair@orange.fr", "mailto:ch.clair@orange.fr", :style => "color:white;"
|
||||||
|
%br
|
||||||
|
06 32 90 56 61
|
||||||
|
%br
|
||||||
|
%br
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-i = 0
|
||||||
|
-while i < 69 do
|
||||||
|
-i = i+1
|
||||||
|
|
||||||
|
=link_to image_tag("/diaporama/petites/"+('%03i' % i)+".jpg", :style => "height:150px;margin:5px;"), "/diaporama/grandes/"+('%03i' % i)+".jpg", :rel => "prettyPhoto"
|
||||||
|
|
||||||
|
|
||||||
|
|
14
app/views/shared/_first_menu.html.haml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
Grenoble :
|
||||||
|
=link_to "Foch", page_path(:slug => "laverie-automatique-a-grenoble-foch"), :title => "Laverie automatique à Grenoble, boulevard Foch"
|
||||||
|
="|"
|
||||||
|
=link_to "Marie Reynoard", page_path(:slug => "laverie-automatique-a-grenoble-marie-reynoard"), :title => "Laverie automatique à Grenoble, avenue Marie Reynoard"
|
||||||
|
="|"
|
||||||
|
=link_to "Ampère", page_path(:slug => "laverie-automatique-a-grenoble-ampere"), :title => "Laverie automatique à Grenoble, rue Ampère"
|
||||||
|
="-"
|
||||||
|
=link_to "Voiron", page_path(:slug => "laverie-automatique-a-voiron"), :title => "Laverie automatique à Voiron"
|
||||||
|
="-"
|
||||||
|
=link_to "Saint-Egreve", page_path(:slug => "laverie-automatique-a-st-egreve")
|
||||||
|
="-"
|
||||||
|
=link_to "Seyssinet", page_path(:slug => "laverie-automatique-a-seyssinet")
|
||||||
|
|
||||||
|
|
13
app/views/shared/_ga.html.erb
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var _gaq = _gaq || [];
|
||||||
|
_gaq.push(['_setAccount', 'UA-372918-1']);
|
||||||
|
_gaq.push(['_trackPageview']);
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||||
|
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||||
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||||
|
})();
|
||||||
|
|
||||||
|
</script>
|
4
config.ru
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# This file is used by Rack-based servers to start the application.
|
||||||
|
|
||||||
|
require ::File.expand_path('../config/environment', __FILE__)
|
||||||
|
run SimpleLux::Application
|
62
config/application.rb
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
require File.expand_path('../boot', __FILE__)
|
||||||
|
|
||||||
|
require 'rails/all'
|
||||||
|
|
||||||
|
if defined?(Bundler)
|
||||||
|
# If you precompile assets before deploying to production, use this line
|
||||||
|
Bundler.require(*Rails.groups(:assets => %w(development test)))
|
||||||
|
# If you want your assets lazily compiled in production, use this line
|
||||||
|
# Bundler.require(:default, :assets, Rails.env)
|
||||||
|
end
|
||||||
|
|
||||||
|
module SimpleLux
|
||||||
|
class Application < Rails::Application
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# Custom directories with classes and modules you want to be autoloadable.
|
||||||
|
# config.autoload_paths += %W(#{config.root}/extras)
|
||||||
|
|
||||||
|
# Only load the plugins named here, in the order given (default is alphabetical).
|
||||||
|
# :all can be used as a placeholder for all plugins not explicitly named.
|
||||||
|
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
||||||
|
|
||||||
|
# Activate observers that should always be running.
|
||||||
|
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
|
||||||
|
|
||||||
|
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||||||
|
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
||||||
|
# config.time_zone = 'Central Time (US & Canada)'
|
||||||
|
|
||||||
|
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||||
|
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||||
|
# config.i18n.default_locale = :de
|
||||||
|
|
||||||
|
# Configure the default encoding used in templates for Ruby 1.9.
|
||||||
|
config.encoding = "utf-8"
|
||||||
|
|
||||||
|
# Configure sensitive parameters which will be filtered from the log file.
|
||||||
|
config.filter_parameters += [:password]
|
||||||
|
|
||||||
|
# Enable escaping HTML in JSON.
|
||||||
|
config.active_support.escape_html_entities_in_json = true
|
||||||
|
|
||||||
|
# Use SQL instead of Active Record's schema dumper when creating the database.
|
||||||
|
# This is necessary if your schema can't be completely dumped by the schema dumper,
|
||||||
|
# like if you have constraints or database-specific column types
|
||||||
|
# config.active_record.schema_format = :sql
|
||||||
|
|
||||||
|
# Enforce whitelist mode for mass assignment.
|
||||||
|
# This will create an empty whitelist of attributes available for mass-assignment for all models
|
||||||
|
# in your app. As such, your models will need to explicitly whitelist or blacklist accessible
|
||||||
|
# parameters by using an attr_accessible or attr_protected declaration.
|
||||||
|
config.active_record.whitelist_attributes = true
|
||||||
|
|
||||||
|
# Enable the asset pipeline
|
||||||
|
config.assets.enabled = true
|
||||||
|
|
||||||
|
# Version of your assets, change this if you want to expire all your assets
|
||||||
|
config.assets.version = '1.0'
|
||||||
|
end
|
||||||
|
end
|
6
config/boot.rb
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
require 'rubygems'
|
||||||
|
|
||||||
|
# Set up gems listed in the Gemfile.
|
||||||
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||||
|
|
||||||
|
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
|
27
config/database.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# SQLite version 3.x
|
||||||
|
# gem install sqlite3
|
||||||
|
#
|
||||||
|
# Ensure the SQLite 3 gem is defined in your Gemfile
|
||||||
|
# gem 'sqlite3'
|
||||||
|
development:
|
||||||
|
adapter: sqlite3
|
||||||
|
database: db/developpment.sqlite3
|
||||||
|
pool: 5
|
||||||
|
timeout: 5000
|
||||||
|
|
||||||
|
|
||||||
|
# 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:
|
||||||
|
adapter: sqlite3
|
||||||
|
database: db/test.sqlite3
|
||||||
|
pool: 5
|
||||||
|
timeout: 5000
|
||||||
|
|
||||||
|
production:
|
||||||
|
adapter: sqlite3
|
||||||
|
database: db/production.sqlite3
|
||||||
|
pool: 5
|
||||||
|
timeout: 5000
|
||||||
|
|
138
config/deploy.rb
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
|
||||||
|
|
||||||
|
set :application, 'chasselay_app'
|
||||||
|
set :domain, 'maison-forte-chasselay.simplement.la'
|
||||||
|
|
||||||
|
set :user, 'web'
|
||||||
|
set :scm_user, "git"
|
||||||
|
set :scm_host, "gitlab.bally.me"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set :rvm_ruby_string, 'ruby-2.0.0-p195'
|
||||||
|
set :rvm_autolibs_flag, "read-only"
|
||||||
|
|
||||||
|
set :bundle_cmd, "/home/#{user}/.rvm/gems/#{rvm_ruby_string}@global/bin/bundle"
|
||||||
|
set :bundle_dir, "/home/#{user}/.rvm/gems/#{rvm_ruby_string}"
|
||||||
|
set :use_sudo, false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set :deploy_to, "/home/#{user}/#{application}/"
|
||||||
|
set :deploy_via, :remote_cache
|
||||||
|
|
||||||
|
set :normalize_asset_timestamps, false
|
||||||
|
|
||||||
|
set :rails_env, "production"
|
||||||
|
|
||||||
|
role :app, domain
|
||||||
|
role :web, domain
|
||||||
|
role :db, domain, :primary => true
|
||||||
|
|
||||||
|
set :scm, :git
|
||||||
|
|
||||||
|
set :repository, "#{scm_user}@#{scm_host}:root/#{application}.git"
|
||||||
|
|
||||||
|
set :branch, "master"
|
||||||
|
|
||||||
|
default_run_options[:pty] = true
|
||||||
|
|
||||||
|
|
||||||
|
require "rvm/capistrano"
|
||||||
|
require 'bundler/capistrano'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
load 'deploy/assets'
|
||||||
|
|
||||||
|
namespace :deploy do
|
||||||
|
|
||||||
|
# namespace :assets do
|
||||||
|
# task :precompile, :roles => :web, :except => { :no_release => true } do
|
||||||
|
# from = source.next_revision(current_revision)
|
||||||
|
# if releases.length <= 1 || capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
|
||||||
|
# run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
|
||||||
|
# else
|
||||||
|
# logger.info "Skipping asset pre-compilation because there were no asset changes"
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
desc "Symlink shared config files"
|
||||||
|
task :symlink_config_files do
|
||||||
|
|
||||||
|
|
||||||
|
run "ln -s #{deploy_to}shared/storage/private #{current_path}/private_medias"
|
||||||
|
|
||||||
|
run "ln -s #{deploy_to}shared/storage/public #{current_path}/public/public_medias"
|
||||||
|
|
||||||
|
run "ln -s #{deploy_to}shared/production.sqlite3 #{current_path}/db/production.sqlite3"
|
||||||
|
|
||||||
|
sudo "cp #{current_path}/config/unicorn_init_d /etc/init.d/#{application}"
|
||||||
|
|
||||||
|
sudo "chmod +x /etc/init.d/#{application}"
|
||||||
|
sudo "update-rc.d #{application} defaults "
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
task :start do
|
||||||
|
sudo "service #{application} start"
|
||||||
|
end
|
||||||
|
task :stop do
|
||||||
|
run "service #{application} stop"
|
||||||
|
end
|
||||||
|
task :restart do
|
||||||
|
sudo "service #{application} restart"
|
||||||
|
end
|
||||||
|
|
||||||
|
task :reload_nginx do
|
||||||
|
|
||||||
|
sudo "rm -rf /etc/nginx/sites-enabled/#{application}"
|
||||||
|
sudo "ln -s #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application} "
|
||||||
|
|
||||||
|
sudo "service nginx reload"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
task :seeds do
|
||||||
|
run "cd #{deploy_to}current && rake db:seed RAILS_ENV=#{rails_env}"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
task :create_files_folders do
|
||||||
|
|
||||||
|
run "mkdir #{deploy_to}shared/storage"
|
||||||
|
run "mkdir #{deploy_to}shared/storage/private"
|
||||||
|
run "mkdir #{deploy_to}shared/storage/public"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
#before 'deploy:setup', 'rvm:install_rvm' # install RVM
|
||||||
|
#before 'deploy:setup', 'rvm:install_ruby' # install Ruby and create gemset, OR:
|
||||||
|
#before 'deploy:setup', 'rvm:create_gemset' # only create gemset
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
after "deploy:setup", "deploy:create_files_folders"
|
||||||
|
|
||||||
|
#after "deploy:restart", "deploy:cleanup"
|
||||||
|
|
||||||
|
|
||||||
|
before "deploy:restart", "deploy:symlink_config_files"
|
||||||
|
|
||||||
|
after "deploy", "deploy:cleanup"
|
||||||
|
|
||||||
|
|
||||||
|
|
5
config/environment.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Load the rails application
|
||||||
|
require File.expand_path('../application', __FILE__)
|
||||||
|
|
||||||
|
# Initialize the rails application
|
||||||
|
SimpleLux::Application.initialize!
|
42
config/environments/development.rb
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
SimpleLux::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
|
||||||
|
|
||||||
|
# Log error messages when you accidentally call methods on nil.
|
||||||
|
config.whiny_nils = true
|
||||||
|
|
||||||
|
# Show full error reports and disable caching
|
||||||
|
config.consider_all_requests_local = true
|
||||||
|
config.action_controller.perform_caching = false
|
||||||
|
|
||||||
|
# Don't care if the mailer can't send
|
||||||
|
config.action_mailer.raise_delivery_errors = false
|
||||||
|
|
||||||
|
# Print deprecation notices to the Rails logger
|
||||||
|
config.active_support.deprecation = :log
|
||||||
|
|
||||||
|
# Only use best-standards-support built into browsers
|
||||||
|
config.action_dispatch.best_standards_support = :builtin
|
||||||
|
|
||||||
|
# Raise exception on mass assignment protection for Active Record models
|
||||||
|
config.active_record.mass_assignment_sanitizer = :strict
|
||||||
|
|
||||||
|
# Log the query plan for queries taking more than this (works
|
||||||
|
# with SQLite, MySQL, and PostgreSQL)
|
||||||
|
config.active_record.auto_explain_threshold_in_seconds = 0.5
|
||||||
|
|
||||||
|
# Do not compress assets
|
||||||
|
config.assets.compress = false
|
||||||
|
|
||||||
|
# Expands the lines which load the assets
|
||||||
|
config.assets.debug = true
|
||||||
|
|
||||||
|
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
|
||||||
|
|
||||||
|
config.action_mailer.delivery_method = :sendmail
|
||||||
|
|
||||||
|
end
|
72
config/environments/production.rb
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
SimpleLux::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
|
||||||
|
|
||||||
|
# Full error reports are disabled and caching is turned on
|
||||||
|
config.consider_all_requests_local = false
|
||||||
|
config.action_controller.perform_caching = true
|
||||||
|
|
||||||
|
# Disable Rails's static asset server (Apache or nginx will already do this)
|
||||||
|
config.serve_static_assets = false
|
||||||
|
|
||||||
|
# Compress JavaScripts and CSS
|
||||||
|
config.assets.compress = true
|
||||||
|
|
||||||
|
# Don't fallback to assets pipeline if a precompiled asset is missed
|
||||||
|
config.assets.compile = false
|
||||||
|
|
||||||
|
# Generate digests for assets URLs
|
||||||
|
config.assets.digest = true
|
||||||
|
|
||||||
|
# Defaults to nil and saved in location specified by config.assets.prefix
|
||||||
|
# config.assets.manifest = YOUR_PATH
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||||
|
# config.force_ssl = true
|
||||||
|
|
||||||
|
# See everything in the log (default is :info)
|
||||||
|
# config.log_level = :debug
|
||||||
|
|
||||||
|
# Prepend all log lines with the following tags
|
||||||
|
# config.log_tags = [ :subdomain, :uuid ]
|
||||||
|
|
||||||
|
# Use a different logger for distributed setups
|
||||||
|
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
||||||
|
|
||||||
|
# Use a different cache store in production
|
||||||
|
# config.cache_store = :mem_cache_store
|
||||||
|
|
||||||
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server
|
||||||
|
# config.action_controller.asset_host = "http://assets.example.com"
|
||||||
|
|
||||||
|
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
|
||||||
|
# config.assets.precompile += %w( search.js )
|
||||||
|
|
||||||
|
# Disable delivery errors, bad email addresses will be ignored
|
||||||
|
# config.action_mailer.raise_delivery_errors = false
|
||||||
|
|
||||||
|
# Enable threaded mode
|
||||||
|
# config.threadsafe!
|
||||||
|
|
||||||
|
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||||
|
# the I18n.default_locale when a translation can not be found)
|
||||||
|
config.i18n.fallbacks = true
|
||||||
|
|
||||||
|
# Send deprecation notices to registered listeners
|
||||||
|
config.active_support.deprecation = :notify
|
||||||
|
|
||||||
|
|
||||||
|
config.action_mailer.default_url_options = { :host => "luxlaverie.com" }
|
||||||
|
|
||||||
|
config.action_mailer.delivery_method = :sendmail
|
||||||
|
|
||||||
|
# Log the query plan for queries taking more than this (works
|
||||||
|
# with SQLite, MySQL, and PostgreSQL)
|
||||||
|
# config.active_record.auto_explain_threshold_in_seconds = 0.5
|
||||||
|
end
|
37
config/environments/test.rb
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
SimpleLux::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
|
||||||
|
|
||||||
|
# Configure static asset server for tests with Cache-Control for performance
|
||||||
|
config.serve_static_assets = true
|
||||||
|
config.static_cache_control = "public, max-age=3600"
|
||||||
|
|
||||||
|
# Log error messages when you accidentally call methods on nil
|
||||||
|
config.whiny_nils = true
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Raise exception on mass assignment protection for Active Record models
|
||||||
|
config.active_record.mass_assignment_sanitizer = :strict
|
||||||
|
|
||||||
|
# Print deprecation notices to the stderr
|
||||||
|
config.active_support.deprecation = :stderr
|
||||||
|
end
|
7
config/initializers/backtrace_silencers.rb
Normal 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!
|
15
config/initializers/inflections.rb
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
|
# Add new inflection rules using the following format
|
||||||
|
# (all these examples are active by default):
|
||||||
|
# ActiveSupport::Inflector.inflections 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 do |inflect|
|
||||||
|
# inflect.acronym 'RESTful'
|
||||||
|
# end
|
5
config/initializers/mime_types.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# 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
|
||||||
|
# Mime::Type.register_alias "text/html", :iphone
|
7
config/initializers/secret_token.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
|
# Your secret key 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.
|
||||||
|
SimpleLux::Application.config.secret_token = 'c304c66aab73867d7e891482d38cf675aaf8ad8859e10fb5d284e014f7478d86293f7e496708b62fdca8c3357bb0fd0df37895cc5be1cd9f1a6488946130b8a2'
|
8
config/initializers/session_store.rb
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
|
SimpleLux::Application.config.session_store :cookie_store, key: '_simple_lux_session'
|
||||||
|
|
||||||
|
# Use the database for sessions instead of the cookie-based default,
|
||||||
|
# which shouldn't be used to store highly confidential information
|
||||||
|
# (create the session table with "rails generate session_migration")
|
||||||
|
# SimpleLux::Application.config.session_store :active_record_store
|
14
config/initializers/wrap_parameters.rb
Normal 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
|
||||||
|
|
||||||
|
# Disable root element in JSON by default.
|
||||||
|
ActiveSupport.on_load(:active_record) do
|
||||||
|
self.include_root_in_json = false
|
||||||
|
end
|
5
config/locales/en.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Sample localization file for English. Add more files in this directory for other locales.
|
||||||
|
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
||||||
|
|
||||||
|
en:
|
||||||
|
hello: "Hello world"
|
29
config/nginx.conf
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
upstream chasselay_app_unicorn {
|
||||||
|
server unix:/home/web/auclair_app/shared/tmp/unicorn.sock fail_timeout=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name maison-forte-chasselay.simplement.la;
|
||||||
|
root /home/web/chasselay_app/current/public;
|
||||||
|
try_files $uri/index.html $uri @unicorn;
|
||||||
|
|
||||||
|
location @unicorn {
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_pass http://chasselay_app_unicorn;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_page 500 502 503 504 /500.html;
|
||||||
|
client_max_body_size 4G;
|
||||||
|
keepalive_timeout 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name chasselay.simplement.la;
|
||||||
|
rewrite ^(.*) http://maison-forte-chasselay.simplement.la$1 permanent;
|
||||||
|
}
|
||||||
|
|
66
config/routes.rb
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
SimpleLux::Application.routes.draw do
|
||||||
|
get "contact/new"
|
||||||
|
|
||||||
|
post "contact/create"
|
||||||
|
|
||||||
|
match ":slug.:format" => 'pages#show', :as => :page, :format => "html"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# The priority is based upon order of creation:
|
||||||
|
# first created -> highest priority.
|
||||||
|
|
||||||
|
# Sample of regular route:
|
||||||
|
# match 'products/:id' => 'catalog#view'
|
||||||
|
# Keep in mind you can assign values other than :controller and :action
|
||||||
|
|
||||||
|
# Sample of named route:
|
||||||
|
# match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
|
||||||
|
# This route can be invoked with purchase_url(:id => product.id)
|
||||||
|
|
||||||
|
# Sample resource route (maps HTTP verbs to controller actions automatically):
|
||||||
|
# resources :products
|
||||||
|
|
||||||
|
# Sample resource route with options:
|
||||||
|
# resources :products do
|
||||||
|
# member do
|
||||||
|
# get 'short'
|
||||||
|
# post 'toggle'
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# collection do
|
||||||
|
# get 'sold'
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
# Sample resource route with sub-resources:
|
||||||
|
# resources :products do
|
||||||
|
# resources :comments, :sales
|
||||||
|
# resource :seller
|
||||||
|
# end
|
||||||
|
|
||||||
|
# Sample resource route with more complex sub-resources
|
||||||
|
# resources :products do
|
||||||
|
# resources :comments
|
||||||
|
# resources :sales do
|
||||||
|
# get 'recent', :on => :collection
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
# Sample resource route within a namespace:
|
||||||
|
# namespace :admin do
|
||||||
|
# # Directs /admin/products/* to Admin::ProductsController
|
||||||
|
# # (app/controllers/admin/products_controller.rb)
|
||||||
|
# resources :products
|
||||||
|
# end
|
||||||
|
|
||||||
|
# You can have the root of your site routed with "root"
|
||||||
|
# just remember to delete public/index.html.
|
||||||
|
root :to => 'pages#show'
|
||||||
|
|
||||||
|
# See how all your routes lay out with "rake routes"
|
||||||
|
|
||||||
|
# This is a legacy wild controller route that's not recommended for RESTful applications.
|
||||||
|
# Note: This route will make all actions in every controller accessible via GET requests.
|
||||||
|
# match ':controller(/:action(/:id))(.:format)'
|
||||||
|
end
|
10
config/unicorn.rb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
@rails_app = "chasselay_app"
|
||||||
|
|
||||||
|
working_directory "/home/web/#{@rails_app}/current"
|
||||||
|
pid "/home/web/#{@rails_app}/shared/unicorn.pid"
|
||||||
|
stderr_path "/home/web/#{@rails_app}/shared/log/unicorn.log"
|
||||||
|
stdout_path "/home/web/#{@rails_app}/shared/log/unicorn.log"
|
||||||
|
|
||||||
|
listen "/home/web/#{@rails_app}/shared/tmp/unicorn.sock"
|
||||||
|
worker_processes 2
|
||||||
|
timeout 30
|
64
config/unicorn_init_d
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
set -u
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Change these to match your app:
|
||||||
|
APP_NAME=stoyan_app
|
||||||
|
APP_RUBY=2.0.0-p0
|
||||||
|
APP_ROOT="/home/web/chasselay_app/current"
|
||||||
|
PID="/home/web/chasselay_app/shared/unicorn.pid"
|
||||||
|
ENV=production
|
||||||
|
|
||||||
|
GEM_HOME="/home/web/.rvm/gems/ruby-$APP_RUBY"
|
||||||
|
|
||||||
|
UNICORN_OPTS="-D -E $ENV -c $APP_ROOT/config/unicorn.rb"
|
||||||
|
|
||||||
|
SET_PATH="cd $APP_ROOT; rvm 1.9.3-p0"
|
||||||
|
CMD="$SET_PATH; unicorn $UNICORN_OPTS"
|
||||||
|
|
||||||
|
old_pid="$PID.oldbin"
|
||||||
|
|
||||||
|
cd $APP_ROOT || exit 1
|
||||||
|
|
||||||
|
sig () {
|
||||||
|
test -s "$PID" && kill -$1 `cat $PID`
|
||||||
|
}
|
||||||
|
|
||||||
|
oldsig () {
|
||||||
|
test -s $old_pid && kill -$1 `cat $old_pid`
|
||||||
|
}
|
||||||
|
|
||||||
|
case ${1-help} in
|
||||||
|
start)
|
||||||
|
sig 0 && echo >&2 "Already running" && exit 0
|
||||||
|
su - web -c "$CMD"
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
sig QUIT && exit 0
|
||||||
|
echo >&2 "Not running"
|
||||||
|
;;
|
||||||
|
force-stop)
|
||||||
|
sig TERM && exit 0
|
||||||
|
echo >&2 "Not running"
|
||||||
|
;;
|
||||||
|
restart|reload)
|
||||||
|
sig HUP && echo reloaded OK && exit 0
|
||||||
|
echo >&2 "Couldn't reload, starting '$CMD' instead"
|
||||||
|
su - web -c "$CMD"
|
||||||
|
;;
|
||||||
|
upgrade)
|
||||||
|
sig USR2 && exit 0
|
||||||
|
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
|
||||||
|
su - web -c "$CMD"
|
||||||
|
;;
|
||||||
|
rotate)
|
||||||
|
sig USR1 && echo rotated logs OK && exit 0
|
||||||
|
echo >&2 "Couldn't rotate logs" && exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo >&2 "Usage: $0 "
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
72
db/schema.rb
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# encoding: UTF-8
|
||||||
|
# This file is auto-generated from the current state of the database. Instead
|
||||||
|
# of editing this file, please use the migrations feature of Active Record to
|
||||||
|
# incrementally modify your database, and then regenerate this schema definition.
|
||||||
|
#
|
||||||
|
# Note that this schema.rb definition is the authoritative source for your
|
||||||
|
# database schema. If you need to create the application database on another
|
||||||
|
# system, you should be using db:schema:load, not running all the migrations
|
||||||
|
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
||||||
|
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
||||||
|
#
|
||||||
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
|
ActiveRecord::Schema.define(:version => 20120912065146) do
|
||||||
|
|
||||||
|
create_table "note_files", :force => true do |t|
|
||||||
|
t.string "file"
|
||||||
|
t.string "name"
|
||||||
|
t.string "slug"
|
||||||
|
t.text "description"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.integer "note_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "notes", :force => true do |t|
|
||||||
|
t.string "subject"
|
||||||
|
t.text "message"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.integer "topic_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "notes", ["user_id"], :name => "index_notes_on_user_id"
|
||||||
|
|
||||||
|
create_table "topics", :force => true do |t|
|
||||||
|
t.string "title"
|
||||||
|
t.text "description"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "topics", ["user_id"], :name => "index_topics_on_user_id"
|
||||||
|
|
||||||
|
create_table "users", :force => true do |t|
|
||||||
|
t.string "username", :default => "", :null => false
|
||||||
|
t.string "name"
|
||||||
|
t.string "firstname"
|
||||||
|
t.string "email", :default => "", :null => false
|
||||||
|
t.string "encrypted_password", :default => "", :null => false
|
||||||
|
t.string "reset_password_token"
|
||||||
|
t.datetime "reset_password_sent_at"
|
||||||
|
t.datetime "remember_created_at"
|
||||||
|
t.integer "sign_in_count", :default => 0
|
||||||
|
t.datetime "current_sign_in_at"
|
||||||
|
t.datetime "last_sign_in_at"
|
||||||
|
t.string "current_sign_in_ip"
|
||||||
|
t.string "last_sign_in_ip"
|
||||||
|
t.string "authentication_token"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "users", ["authentication_token"], :name => "index_users_on_authentication_token", :unique => true
|
||||||
|
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
|
||||||
|
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
|
||||||
|
add_index "users", ["username"], :name => "index_users_on_username", :unique => true
|
||||||
|
|
||||||
|
end
|
13
db/seeds.rb
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# -*- encoding : utf-8 -*-
|
||||||
|
|
||||||
|
# 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 rake db:seed (or created alongside the db with db:setup).
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
#
|
||||||
|
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
|
||||||
|
# Mayor.create(name: 'Emanuel', city: cities.first)
|
||||||
|
|
||||||
|
|
||||||
|
User.create(:username => "Nico", :email => "info@nicolasbally.com", :password => "123456", :password_confirmation => "123456", :name => "Bally", :firstname => "Nicolas")
|
||||||
|
User.create(:username => "Anais", :email => "anaelac@gmail.com", :password => "123456", :password_confirmation => "123456", :name => "Lacombe", :firstname => "Anaïs")
|
2
doc/README_FOR_APP
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Use this README file to introduce your application and point to useful places in the API for learning more.
|
||||||
|
Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries.
|
0
lib/assets/.gitkeep
Normal file
0
lib/tasks/.gitkeep
Normal file
0
log/.gitkeep
Normal file
26
public/404.html
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>The page you were looking for doesn't exist (404)</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||||
|
div.dialog {
|
||||||
|
width: 25em;
|
||||||
|
padding: 0 4em;
|
||||||
|
margin: 4em auto 0 auto;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-right-color: #999;
|
||||||
|
border-bottom-color: #999;
|
||||||
|
}
|
||||||
|
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- This file lives in public/404.html -->
|
||||||
|
<div class="dialog">
|
||||||
|
<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>
|
||||||
|
</body>
|
||||||
|
</html>
|
26
public/422.html
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>The change you wanted was rejected (422)</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||||
|
div.dialog {
|
||||||
|
width: 25em;
|
||||||
|
padding: 0 4em;
|
||||||
|
margin: 4em auto 0 auto;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-right-color: #999;
|
||||||
|
border-bottom-color: #999;
|
||||||
|
}
|
||||||
|
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- This file lives in public/422.html -->
|
||||||
|
<div class="dialog">
|
||||||
|
<h1>The change you wanted was rejected.</h1>
|
||||||
|
<p>Maybe you tried to change something you didn't have access to.</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
25
public/500.html
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>We're sorry, but something went wrong (500)</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||||
|
div.dialog {
|
||||||
|
width: 25em;
|
||||||
|
padding: 0 4em;
|
||||||
|
margin: 4em auto 0 auto;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-right-color: #999;
|
||||||
|
border-bottom-color: #999;
|
||||||
|
}
|
||||||
|
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- This file lives in public/500.html -->
|
||||||
|
<div class="dialog">
|
||||||
|
<h1>We're sorry, but something went wrong.</h1>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
public/diaporama/grandes/001.jpg
Normal file
After Width: | Height: | Size: 411 KiB |
BIN
public/diaporama/grandes/002.jpg
Normal file
After Width: | Height: | Size: 535 KiB |
BIN
public/diaporama/grandes/003.jpg
Normal file
After Width: | Height: | Size: 430 KiB |
BIN
public/diaporama/grandes/004.jpg
Normal file
After Width: | Height: | Size: 268 KiB |
BIN
public/diaporama/grandes/005.jpg
Normal file
After Width: | Height: | Size: 296 KiB |
BIN
public/diaporama/grandes/006.jpg
Normal file
After Width: | Height: | Size: 273 KiB |
BIN
public/diaporama/grandes/007.jpg
Normal file
After Width: | Height: | Size: 255 KiB |
BIN
public/diaporama/grandes/008.jpg
Normal file
After Width: | Height: | Size: 307 KiB |
BIN
public/diaporama/grandes/009.jpg
Normal file
After Width: | Height: | Size: 378 KiB |
BIN
public/diaporama/grandes/010.jpg
Normal file
After Width: | Height: | Size: 306 KiB |
BIN
public/diaporama/grandes/011.jpg
Normal file
After Width: | Height: | Size: 304 KiB |