initial
16
.gitignore
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
||||
#
|
||||
# If you find yourself ignoring temporary files generated by your text editor
|
||||
# or operating system, you probably want to add a global ignore instead:
|
||||
# git config --global core.excludesfile '~/.gitignore_global'
|
||||
|
||||
# Ignore bundler config.
|
||||
/.bundle
|
||||
|
||||
# Ignore the default SQLite database.
|
||||
/db/*.sqlite3
|
||||
/db/*.sqlite3-journal
|
||||
|
||||
# Ignore all logfiles and tempfiles.
|
||||
/log/*.log
|
||||
/tmp
|
42
Gemfile
Normal file
@ -0,0 +1,42 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
|
||||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
||||
gem 'rails', '4.1.4'
|
||||
# Use sqlite3 as the database for Active Record
|
||||
gem 'sqlite3'
|
||||
# Use SCSS for stylesheets
|
||||
gem 'sass-rails', '~> 4.0.3'
|
||||
# Use Uglifier as compressor for JavaScript assets
|
||||
gem 'uglifier', '>= 1.3.0'
|
||||
# Use CoffeeScript for .js.coffee assets and views
|
||||
gem 'coffee-rails', '~> 4.0.0'
|
||||
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
||||
# gem 'therubyracer', platforms: :ruby
|
||||
|
||||
# Use jquery as the JavaScript library
|
||||
gem 'jquery-rails'
|
||||
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
|
||||
gem 'turbolinks'
|
||||
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
||||
gem 'jbuilder', '~> 2.0'
|
||||
# bundle exec rake doc:rails generates the API under doc/api.
|
||||
gem 'sdoc', '~> 0.4.0', group: :doc
|
||||
|
||||
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
||||
gem 'spring', group: :development
|
||||
|
||||
gem 'haml-rails'
|
||||
|
||||
# Use ActiveModel has_secure_password
|
||||
# gem 'bcrypt', '~> 3.1.7'
|
||||
|
||||
# Use unicorn as the app server
|
||||
# gem 'unicorn'
|
||||
|
||||
# Use Capistrano for deployment
|
||||
# gem 'capistrano-rails', group: :development
|
||||
|
||||
# Use debugger
|
||||
# gem 'debugger', group: [:development, :test]
|
||||
|
133
Gemfile.lock
Normal file
@ -0,0 +1,133 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actionmailer (4.1.4)
|
||||
actionpack (= 4.1.4)
|
||||
actionview (= 4.1.4)
|
||||
mail (~> 2.5.4)
|
||||
actionpack (4.1.4)
|
||||
actionview (= 4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
rack (~> 1.5.2)
|
||||
rack-test (~> 0.6.2)
|
||||
actionview (4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
builder (~> 3.1)
|
||||
erubis (~> 2.7.0)
|
||||
activemodel (4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
builder (~> 3.1)
|
||||
activerecord (4.1.4)
|
||||
activemodel (= 4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
arel (~> 5.0.0)
|
||||
activesupport (4.1.4)
|
||||
i18n (~> 0.6, >= 0.6.9)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.1)
|
||||
tzinfo (~> 1.1)
|
||||
arel (5.0.1.20140414130214)
|
||||
builder (3.2.2)
|
||||
coffee-rails (4.0.1)
|
||||
coffee-script (>= 2.2.0)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
coffee-script (2.3.0)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.7.1)
|
||||
erubis (2.7.0)
|
||||
execjs (2.2.1)
|
||||
haml (4.0.5)
|
||||
tilt
|
||||
haml-rails (0.5.3)
|
||||
actionpack (>= 4.0.1)
|
||||
activesupport (>= 4.0.1)
|
||||
haml (>= 3.1, < 5.0)
|
||||
railties (>= 4.0.1)
|
||||
hike (1.2.3)
|
||||
i18n (0.6.11)
|
||||
jbuilder (2.1.3)
|
||||
activesupport (>= 3.0.0, < 5)
|
||||
multi_json (~> 1.2)
|
||||
jquery-rails (3.1.1)
|
||||
railties (>= 3.0, < 5.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
json (1.8.1)
|
||||
mail (2.5.4)
|
||||
mime-types (~> 1.16)
|
||||
treetop (~> 1.4.8)
|
||||
mime-types (1.25.1)
|
||||
minitest (5.4.0)
|
||||
multi_json (1.10.1)
|
||||
polyglot (0.3.5)
|
||||
rack (1.5.2)
|
||||
rack-test (0.6.2)
|
||||
rack (>= 1.0)
|
||||
rails (4.1.4)
|
||||
actionmailer (= 4.1.4)
|
||||
actionpack (= 4.1.4)
|
||||
actionview (= 4.1.4)
|
||||
activemodel (= 4.1.4)
|
||||
activerecord (= 4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
bundler (>= 1.3.0, < 2.0)
|
||||
railties (= 4.1.4)
|
||||
sprockets-rails (~> 2.0)
|
||||
railties (4.1.4)
|
||||
actionpack (= 4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rake (10.3.2)
|
||||
rdoc (4.1.1)
|
||||
json (~> 1.4)
|
||||
sass (3.2.19)
|
||||
sass-rails (4.0.3)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
sass (~> 3.2.0)
|
||||
sprockets (~> 2.8, <= 2.11.0)
|
||||
sprockets-rails (~> 2.0)
|
||||
sdoc (0.4.1)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
rdoc (~> 4.0)
|
||||
spring (1.1.3)
|
||||
sprockets (2.11.0)
|
||||
hike (~> 1.2)
|
||||
multi_json (~> 1.0)
|
||||
rack (~> 1.0)
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
sprockets-rails (2.1.3)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
sprockets (~> 2.8)
|
||||
sqlite3 (1.3.9)
|
||||
thor (0.19.1)
|
||||
thread_safe (0.3.4)
|
||||
tilt (1.4.1)
|
||||
treetop (1.4.15)
|
||||
polyglot
|
||||
polyglot (>= 0.3.1)
|
||||
turbolinks (2.2.2)
|
||||
coffee-rails
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (2.5.3)
|
||||
execjs (>= 0.3.0)
|
||||
json (>= 1.8.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
coffee-rails (~> 4.0.0)
|
||||
haml-rails
|
||||
jbuilder (~> 2.0)
|
||||
jquery-rails
|
||||
rails (= 4.1.4)
|
||||
sass-rails (~> 4.0.3)
|
||||
sdoc (~> 0.4.0)
|
||||
spring
|
||||
sqlite3
|
||||
turbolinks
|
||||
uglifier (>= 1.3.0)
|
28
README.rdoc
Normal file
@ -0,0 +1,28 @@
|
||||
== README
|
||||
|
||||
This README would normally document whatever steps are necessary to get the
|
||||
application up and running.
|
||||
|
||||
Things you may want to cover:
|
||||
|
||||
* Ruby version
|
||||
|
||||
* System dependencies
|
||||
|
||||
* Configuration
|
||||
|
||||
* Database creation
|
||||
|
||||
* Database initialization
|
||||
|
||||
* How to run the test suite
|
||||
|
||||
* Services (job queues, cache servers, search engines, etc.)
|
||||
|
||||
* Deployment instructions
|
||||
|
||||
* ...
|
||||
|
||||
|
||||
Please feel free to use a different markup language if you do not plan to run
|
||||
<tt>rake doc:app</tt>.
|
6
Rakefile
Normal file
@ -0,0 +1,6 @@
|
||||
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||
|
||||
require File.expand_path('../config/application', __FILE__)
|
||||
|
||||
Rails.application.load_tasks
|
BIN
app/.DS_Store
vendored
Normal file
BIN
app/assets/.DS_Store
vendored
Normal file
BIN
app/assets/images/.DS_Store
vendored
Normal file
0
app/assets/images/.keep
Normal file
BIN
app/assets/images/images/bx_loader.gif
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
app/assets/images/images/controls.png
Normal file
After Width: | Height: | Size: 16 KiB |
219
app/assets/javascripts/application.coffee
Normal file
@ -0,0 +1,219 @@
|
||||
|
||||
#= require jquery
|
||||
#= require jquery_ujs
|
||||
#= require jquery.superslides
|
||||
#= require jquery.easing.1.3
|
||||
#= require jquery.animate-enhanced.min
|
||||
#= require jquery.tagcanvas
|
||||
|
||||
#= require jquery.bxslider.min
|
||||
|
||||
|
||||
@scrollToAnchor = (aid) ->
|
||||
aTag = $("#" + aid )
|
||||
$("html,body").animate({scrollTop: aTag.offset().top}, 1000)
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
bottom = 0
|
||||
prev_link = ""
|
||||
$("document").ready ->
|
||||
position_img_now = ->
|
||||
$("#large .large-img").css("margin-top", (( $(window).height() - $("#large .large-img").height() - 100) / 2 )+"px")
|
||||
|
||||
|
||||
position_img = ->
|
||||
$("#large .large-img").one "load", ->
|
||||
|
||||
position_img_now()
|
||||
|
||||
|
||||
|
||||
$("#rea-gal a").click ->
|
||||
prev_link = $(this)
|
||||
$("body").append "<div id='large'></div>"
|
||||
$("#large").fadeIn(500)
|
||||
$("#large").append "<img src='/arrow-next.png' class='next' />"
|
||||
$("#large").append "<img src='/arrow-prev.png' class='prev' />"
|
||||
|
||||
$("#large").append "<img src="+$(this).attr("href")+" class='large-img' />"
|
||||
|
||||
position_img();
|
||||
|
||||
|
||||
false
|
||||
|
||||
|
||||
|
||||
$("body").on "click", "#large", ->
|
||||
$(this).fadeOut 300, ->
|
||||
$(this).remove()
|
||||
|
||||
|
||||
$("body").on "click" ,"#large .prev",->
|
||||
|
||||
if prev_link.prev("a").length > 0
|
||||
link = prev_link.closest("a").prev("a")
|
||||
|
||||
|
||||
|
||||
else
|
||||
link = prev_link.closest("div").children("a:last")
|
||||
|
||||
|
||||
#titre = photo.find("h3")
|
||||
$('#large .large-img').fadeOut 300, ->
|
||||
$('#large .large-img').attr("src", link.attr("href"))
|
||||
$('#large .large-img').fadeIn()
|
||||
position_img();
|
||||
prev_link = link
|
||||
|
||||
false
|
||||
|
||||
|
||||
$("body").on "click" ,"#large .next",->
|
||||
|
||||
if prev_link.next("a").length > 0
|
||||
link = prev_link.closest("a").next("a")
|
||||
|
||||
|
||||
|
||||
else
|
||||
link = prev_link.closest("div").children("a:first")
|
||||
|
||||
|
||||
#titre = photo.find("h3")
|
||||
$('#large .large-img').fadeOut 300, ->
|
||||
$('#large .large-img').attr("src", link.attr("href"))
|
||||
$('#large .large-img').fadeIn()
|
||||
position_img();
|
||||
prev_link = link
|
||||
|
||||
false
|
||||
|
||||
|
||||
$('.gal').bxSlider
|
||||
adaptiveHeight: true,
|
||||
auto: true,
|
||||
speed:1000,
|
||||
pause:5000,
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# $(".infos").hide();
|
||||
$(".infos-button").click ->
|
||||
$(this).next(".infos").slideToggle()
|
||||
$("html,body").animate({scrollTop: ($(this).offset().top-60)}, 500)
|
||||
|
||||
left =0
|
||||
|
||||
top = 0
|
||||
offset= 0
|
||||
|
||||
resize = ->
|
||||
|
||||
$("#rea-gal img").css "width", ($(window).width() - 6 * 5 )/ 5
|
||||
$(".slider").css({"height": ($(window).height())+"px","width": $(window).width()+"px" })
|
||||
$("#brainstorming").css({"height": ($(window).height())+"px","width": $(window).width()+"px" })
|
||||
|
||||
$("#myCanvas").attr({height: ($(window).height()-160),"width": $(window).width() })
|
||||
|
||||
$("#menu-container").css("top",($(window).height()-50)+"px")
|
||||
$("#main").css("top",($(window).height()))
|
||||
|
||||
$("#logo").one("load", ->
|
||||
|
||||
#offset = $("#logo").offset().top-100
|
||||
left = ($(window).width() - $("#logo").width()) / 2
|
||||
bottom = ($(window).height() - $("#logo").height() - $("#baseline").height() - 40)/ 1.10
|
||||
$("#logo").css({"top": bottom+"px","left": left+"px"})
|
||||
|
||||
$("#baseline").css({"top": (bottom+$("#logo").height())+"px","left": left+"px"})
|
||||
|
||||
#baseline
|
||||
|
||||
|
||||
|
||||
|
||||
antiGrav = (ele) -> # anti-gravity floating on an element ;)
|
||||
distance = 5
|
||||
$(ele).animate
|
||||
left: "=" + top + distance + "px"
|
||||
, 2000, "easeInOutBounce", ->
|
||||
$(ele).animate
|
||||
left: "=" + top - distance + "px"
|
||||
, 1800, "easeInOutBounce", ->
|
||||
antiGrav ele
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
return
|
||||
antiGrav2 = (ele) -> # anti-gravity floating on an element ;)
|
||||
distance = 4
|
||||
$(ele).animate
|
||||
top: "-=" + distance + "px"
|
||||
, 2000, "swing", ->
|
||||
$(ele).animate
|
||||
top: "+=" + distance + "px"
|
||||
, 2300, "swing", ->
|
||||
antiGrav2 ele
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
|
||||
antiGrav2(".wide-container")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
).each ->
|
||||
$(this).load() if @complete
|
||||
return
|
||||
|
||||
|
||||
position_img_now();
|
||||
|
||||
$(window).on "scroll", ->
|
||||
|
||||
top = $(window).scrollTop()
|
||||
|
||||
#$(".wide-container").css("top", top-10)
|
||||
|
||||
|
||||
if $(window).scrollTop() > ($(window).height()-50)
|
||||
$("#menu").css("position", "fixed")
|
||||
else
|
||||
$("#menu").css("position", "relative")
|
||||
if $(window).scrollTop() > bottom-100
|
||||
$("#logo").fadeOut()
|
||||
$("#baseline").fadeOut()
|
||||
$("#logo-min").fadeIn()
|
||||
|
||||
else if $(window).scrollTop() < bottom+100
|
||||
|
||||
$("#logo").fadeIn()
|
||||
$("#baseline").fadeIn()
|
||||
$("#logo-min").fadeOut()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
resize()
|
||||
|
||||
$(window).on "resize", ->
|
||||
resize()
|
||||
|
||||
|
||||
|
||||
|
22
app/assets/javascripts/jquery.animate-enhanced.min.js
vendored
Executable file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
jquery.animate-enhanced plugin v1.02
|
||||
---
|
||||
http://github.com/benbarnett/jQuery-Animate-Enhanced
|
||||
http://benbarnett.net
|
||||
@benpbarnett
|
||||
*/
|
||||
(function(d,J,K){function P(a,b,d,l,j,h,c,n,q){var t=!1;c=!0===c&&!0===n;b=b||{};b.original||(b.original={},t=!0);b.properties=b.properties||{};b.secondary=b.secondary||{};n=b.meta;for(var k=b.original,x=b.properties,Q=b.secondary,D=r.length-1;0<=D;D--){var F=r[D]+"transition-property",y=r[D]+"transition-duration",e=r[D]+"transition-timing-function";d=c?r[D]+"transform":d;t&&(k[F]=a.css(F)||"",k[y]=a.css(y)||"",k[e]=a.css(e)||"");Q[d]=c?!0===q||!0===G&&!1!==q&&L?"translate3d("+n.left+"px, "+n.top+
|
||||
"px, 0)":"translate("+n.left+"px,"+n.top+"px)":h;x[F]=(x[F]?x[F]+",":"")+d;x[y]=(x[y]?x[y]+",":"")+l+"ms";x[e]=(x[e]?x[e]+",":"")+j}return b}function B(a){for(var b in a)return!1;return!0}function R(a){a=a.toUpperCase();var b={LI:"list-item",TR:"table-row",TD:"table-cell",TH:"table-cell",CAPTION:"table-caption",COL:"table-column",COLGROUP:"table-column-group",TFOOT:"table-footer-group",THEAD:"table-header-group",TBODY:"table-row-group"};return"string"==typeof b[a]?b[a]:"block"}function H(a){return parseFloat(a.replace(a.match(/\D+$/),
|
||||
""))}function M(a){var b=!0;a.each(function(a,d){return b=b&&d.ownerDocument});return b}var S="top right bottom left opacity height width".split(" "),I=["top","right","bottom","left"],r=["-webkit-","-moz-","-o-",""],T=["avoidTransforms","useTranslate3d","leaveTransforms"],U=/^([+-]=)?([\d+-.]+)(.*)$/,V=/([A-Z])/g,W={secondary:{},meta:{top:0,right:0,bottom:0,left:0}},N=null,C=!1,z=(document.body||document.documentElement).style,O=void 0!==z.WebkitTransition||void 0!==z.MozTransition||void 0!==z.OTransition||
|
||||
void 0!==z.transition,L="WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix,G=L;d.expr&&d.expr.filters&&(N=d.expr.filters.animated,d.expr.filters.animated=function(a){return d(a).data("events")&&d(a).data("events")["webkitTransitionEnd oTransitionEnd transitionend"]?!0:N.call(this,a)});d.extend({toggle3DByDefault:function(){return G=!G},toggleDisabledByDefault:function(){return C=!C},setDisabledByDefault:function(a){return C=a}});d.fn.translation=function(){if(!this[0])return null;var a=window.getComputedStyle(this[0],
|
||||
null),d={x:0,y:0};if(a)for(var p=r.length-1;0<=p;p--){var l=a.getPropertyValue(r[p]+"transform");if(l&&/matrix/i.test(l)){a=l.replace(/^matrix\(/i,"").split(/, |\)$/g);d={x:parseInt(a[4],10),y:parseInt(a[5],10)};break}}return d};d.fn.animate=function(a,b,p,l){a=a||{};var j=!("undefined"!==typeof a.bottom||"undefined"!==typeof a.right),h=d.speed(b,p,l),c=this,n=0,q=function(){n--;0===n&&"function"===typeof h.complete&&h.complete.apply(c,arguments)},t;if(!(t=!0===("undefined"!==typeof a.avoidCSSTransitions?
|
||||
a.avoidCSSTransitions:C)))if(!(t=!O))if(!(t=B(a))){var k;a:{for(k in a)if(("width"==k||"height"==k)&&("show"==a[k]||"hide"==a[k]||"toggle"==a[k])){k=!0;break a}k=!1}t=k||0>=h.duration}return t?J.apply(this,arguments):this[!0===h.queue?"queue":"each"](function(){var b=d(this),c=d.extend({},h),l=function(c){var g=b.data("jQe")||{original:{}},f={};if(2==c.eventPhase){if(!0!==a.leaveTransforms){for(c=r.length-1;0<=c;c--)f[r[c]+"transform"]="";if(j&&"undefined"!==typeof g.meta){c=0;for(var e;e=I[c];++c)f[e]=
|
||||
g.meta[e+"_o"]+"px",d(this).css(e,f[e])}}b.unbind("webkitTransitionEnd oTransitionEnd transitionend").css(g.original).css(f).data("jQe",null);"hide"===a.opacity&&b.css({display:"none",opacity:""});q.call(this)}},k={bounce:"cubic-bezier(0.0, 0.35, .5, 1.3)",linear:"linear",swing:"ease-in-out",easeInQuad:"cubic-bezier(0.550, 0.085, 0.680, 0.530)",easeInCubic:"cubic-bezier(0.550, 0.055, 0.675, 0.190)",easeInQuart:"cubic-bezier(0.895, 0.030, 0.685, 0.220)",easeInQuint:"cubic-bezier(0.755, 0.050, 0.855, 0.060)",
|
||||
easeInSine:"cubic-bezier(0.470, 0.000, 0.745, 0.715)",easeInExpo:"cubic-bezier(0.950, 0.050, 0.795, 0.035)",easeInCirc:"cubic-bezier(0.600, 0.040, 0.980, 0.335)",easeInBack:"cubic-bezier(0.600, -0.280, 0.735, 0.045)",easeOutQuad:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",easeOutCubic:"cubic-bezier(0.215, 0.610, 0.355, 1.000)",easeOutQuart:"cubic-bezier(0.165, 0.840, 0.440, 1.000)",easeOutQuint:"cubic-bezier(0.230, 1.000, 0.320, 1.000)",easeOutSine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)",easeOutExpo:"cubic-bezier(0.190, 1.000, 0.220, 1.000)",
|
||||
easeOutCirc:"cubic-bezier(0.075, 0.820, 0.165, 1.000)",easeOutBack:"cubic-bezier(0.175, 0.885, 0.320, 1.275)",easeInOutQuad:"cubic-bezier(0.455, 0.030, 0.515, 0.955)",easeInOutCubic:"cubic-bezier(0.645, 0.045, 0.355, 1.000)",easeInOutQuart:"cubic-bezier(0.770, 0.000, 0.175, 1.000)",easeInOutQuint:"cubic-bezier(0.860, 0.000, 0.070, 1.000)",easeInOutSine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)",easeInOutExpo:"cubic-bezier(1.000, 0.000, 0.000, 1.000)",easeInOutCirc:"cubic-bezier(0.785, 0.135, 0.150, 0.860)",
|
||||
easeInOutBack:"cubic-bezier(0.680, -0.550, 0.265, 1.550)"},y={},k=k[c.easing||"swing"]?k[c.easing||"swing"]:c.easing||"swing",e;for(e in a)if(-1===d.inArray(e,T)){var p=-1<d.inArray(e,I),m;var g=b,w=a[e],u=e,s=p&&!0!==a.avoidTransforms;if("d"==u)m=void 0;else if(M(g)){var f=U.exec(w);m="auto"===g.css(u)?0:g.css(u);m="string"==typeof m?H(m):m;"string"==typeof w&&H(w);var s=!0===s?0:m,t=g.is(":hidden"),v=g.translation();"left"==u&&(s=parseInt(m,10)+v.x);"right"==u&&(s=parseInt(m,10)+v.x);"top"==u&&
|
||||
(s=parseInt(m,10)+v.y);"bottom"==u&&(s=parseInt(m,10)+v.y);!f&&"show"==w?(s=1,t&&g.css({display:R(g.context.tagName),opacity:0})):!f&&"hide"==w&&(s=0);f?(g=parseFloat(f[2]),f[1]&&(g=("-="===f[1]?-1:1)*g+parseInt(s,10)),m=g):m=s}else m=void 0;f=e;g=m;w=b;if(M(w)){u=-1<d.inArray(f,S);if(("width"==f||"height"==f||"opacity"==f)&&parseFloat(g)===parseFloat(w.css(f)))u=!1;f=u}else f=!1;if(f){var f=b,g=e,w=c.duration,u=k,p=p&&!0!==a.avoidTransforms,s=j,t=a.useTranslate3d,v=(v=f.data("jQe"))&&!B(v)?v:d.extend(!0,
|
||||
{},W),A=m;if(-1<d.inArray(g,I)){var E=v.meta,C=H(f.css(g))||0,z=g+"_o",A=m-C;E[g]=A;E[z]="auto"==f.css(g)?0+A:C+A||0;v.meta=E;s&&0===A&&(A=0-E[z],E[g]=A,E[z]=0)}f.data("jQe",P(f,v,g,w,u,A,p,s,t))}else y[e]=a[e]}b.unbind("webkitTransitionEnd oTransitionEnd transitionend");if((e=b.data("jQe"))&&!B(e)&&!B(e.secondary)){n++;b.css(e.properties);var G=e.secondary;setTimeout(function(){b.bind("webkitTransitionEnd oTransitionEnd transitionend",l).css(G)})}else c.queue=!1;B(y)||(n++,J.apply(b,[y,{duration:c.duration,
|
||||
easing:d.easing[c.easing]?c.easing:d.easing.swing?"swing":"linear",complete:q,queue:c.queue}]));return!0})};d.fn.animate.defaults={};d.fn.stop=function(a,b,p){if(!O)return K.apply(this,[a,b]);a&&this.queue([]);this.each(function(){var l=d(this),j=l.data("jQe");if(j&&!B(j)){var h,c={};if(b){if(c=j.secondary,!p&&void 0!==typeof j.meta.left_o||void 0!==typeof j.meta.top_o){c.left=void 0!==typeof j.meta.left_o?j.meta.left_o:"auto";c.top=void 0!==typeof j.meta.top_o?j.meta.top_o:"auto";for(h=r.length-
|
||||
1;0<=h;h--)c[r[h]+"transform"]=""}}else if(!B(j.secondary)){var n=window.getComputedStyle(l[0],null);if(n)for(var q in j.secondary)if(j.secondary.hasOwnProperty(q)&&(q=q.replace(V,"-$1").toLowerCase(),c[q]=n.getPropertyValue(q),!p&&/matrix/i.test(c[q]))){h=c[q].replace(/^matrix\(/i,"").split(/, |\)$/g);c.left=parseFloat(h[4])+parseFloat(l.css("left"))+"px"||"auto";c.top=parseFloat(h[5])+parseFloat(l.css("top"))+"px"||"auto";for(h=r.length-1;0<=h;h--)c[r[h]+"transform"]=""}}l.unbind("webkitTransitionEnd oTransitionEnd transitionend");
|
||||
l.css(j.original).css(c).data("jQe",null)}else K.apply(l,[a,b])});return this}})(jQuery,jQuery.fn.animate,jQuery.fn.stop);
|
10
app/assets/javascripts/jquery.bxslider.min.js
vendored
Normal file
205
app/assets/javascripts/jquery.easing.1.3.js
Executable file
@ -0,0 +1,205 @@
|
||||
/*
|
||||
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
|
||||
*
|
||||
* Uses the built in easing capabilities added In jQuery 1.1
|
||||
* to offer multiple easing options
|
||||
*
|
||||
* TERMS OF USE - jQuery Easing
|
||||
*
|
||||
* Open source under the BSD License.
|
||||
*
|
||||
* Copyright © 2008 George McGinley Smith
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* Neither the name of the author nor the names of contributors may be used to endorse
|
||||
* or promote products derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
// t: current time, b: begInnIng value, c: change In value, d: duration
|
||||
jQuery.easing['jswing'] = jQuery.easing['swing'];
|
||||
|
||||
jQuery.extend( jQuery.easing,
|
||||
{
|
||||
def: 'easeOutQuad',
|
||||
swing: function (x, t, b, c, d) {
|
||||
//alert(jQuery.easing.default);
|
||||
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
|
||||
},
|
||||
easeInQuad: function (x, t, b, c, d) {
|
||||
return c*(t/=d)*t + b;
|
||||
},
|
||||
easeOutQuad: function (x, t, b, c, d) {
|
||||
return -c *(t/=d)*(t-2) + b;
|
||||
},
|
||||
easeInOutQuad: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return c/2*t*t + b;
|
||||
return -c/2 * ((--t)*(t-2) - 1) + b;
|
||||
},
|
||||
easeInCubic: function (x, t, b, c, d) {
|
||||
return c*(t/=d)*t*t + b;
|
||||
},
|
||||
easeOutCubic: function (x, t, b, c, d) {
|
||||
return c*((t=t/d-1)*t*t + 1) + b;
|
||||
},
|
||||
easeInOutCubic: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return c/2*t*t*t + b;
|
||||
return c/2*((t-=2)*t*t + 2) + b;
|
||||
},
|
||||
easeInQuart: function (x, t, b, c, d) {
|
||||
return c*(t/=d)*t*t*t + b;
|
||||
},
|
||||
easeOutQuart: function (x, t, b, c, d) {
|
||||
return -c * ((t=t/d-1)*t*t*t - 1) + b;
|
||||
},
|
||||
easeInOutQuart: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
|
||||
return -c/2 * ((t-=2)*t*t*t - 2) + b;
|
||||
},
|
||||
easeInQuint: function (x, t, b, c, d) {
|
||||
return c*(t/=d)*t*t*t*t + b;
|
||||
},
|
||||
easeOutQuint: function (x, t, b, c, d) {
|
||||
return c*((t=t/d-1)*t*t*t*t + 1) + b;
|
||||
},
|
||||
easeInOutQuint: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
|
||||
return c/2*((t-=2)*t*t*t*t + 2) + b;
|
||||
},
|
||||
easeInSine: function (x, t, b, c, d) {
|
||||
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
|
||||
},
|
||||
easeOutSine: function (x, t, b, c, d) {
|
||||
return c * Math.sin(t/d * (Math.PI/2)) + b;
|
||||
},
|
||||
easeInOutSine: function (x, t, b, c, d) {
|
||||
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
|
||||
},
|
||||
easeInExpo: function (x, t, b, c, d) {
|
||||
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
|
||||
},
|
||||
easeOutExpo: function (x, t, b, c, d) {
|
||||
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
|
||||
},
|
||||
easeInOutExpo: function (x, t, b, c, d) {
|
||||
if (t==0) return b;
|
||||
if (t==d) return b+c;
|
||||
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
|
||||
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
|
||||
},
|
||||
easeInCirc: function (x, t, b, c, d) {
|
||||
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
|
||||
},
|
||||
easeOutCirc: function (x, t, b, c, d) {
|
||||
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
|
||||
},
|
||||
easeInOutCirc: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
|
||||
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
|
||||
},
|
||||
easeInElastic: function (x, t, b, c, d) {
|
||||
var s=1.70158;var p=0;var a=c;
|
||||
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
||||
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
||||
},
|
||||
easeOutElastic: function (x, t, b, c, d) {
|
||||
var s=1.70158;var p=0;var a=c;
|
||||
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
||||
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
|
||||
},
|
||||
easeInOutElastic: function (x, t, b, c, d) {
|
||||
var s=1.70158;var p=0;var a=c;
|
||||
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
|
||||
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
||||
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
|
||||
},
|
||||
easeInBack: function (x, t, b, c, d, s) {
|
||||
if (s == undefined) s = 1.70158;
|
||||
return c*(t/=d)*t*((s+1)*t - s) + b;
|
||||
},
|
||||
easeOutBack: function (x, t, b, c, d, s) {
|
||||
if (s == undefined) s = 1.70158;
|
||||
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
|
||||
},
|
||||
easeInOutBack: function (x, t, b, c, d, s) {
|
||||
if (s == undefined) s = 1.70158;
|
||||
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
|
||||
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
|
||||
},
|
||||
easeInBounce: function (x, t, b, c, d) {
|
||||
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
|
||||
},
|
||||
easeOutBounce: function (x, t, b, c, d) {
|
||||
if ((t/=d) < (1/2.75)) {
|
||||
return c*(7.5625*t*t) + b;
|
||||
} else if (t < (2/2.75)) {
|
||||
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
|
||||
} else if (t < (2.5/2.75)) {
|
||||
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
|
||||
} else {
|
||||
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
|
||||
}
|
||||
},
|
||||
easeInOutBounce: function (x, t, b, c, d) {
|
||||
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
|
||||
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
*
|
||||
* TERMS OF USE - EASING EQUATIONS
|
||||
*
|
||||
* Open source under the BSD License.
|
||||
*
|
||||
* Copyright © 2001 Robert Penner
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* Neither the name of the author nor the names of contributors may be used to endorse
|
||||
* or promote products derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
528
app/assets/javascripts/jquery.lightSlider.js
Executable file
@ -0,0 +1,528 @@
|
||||
/** ==========================================================
|
||||
|
||||
* jquery lightSlider.js v1.0.0
|
||||
* http://sachinchoolur.github.io/lightslider/
|
||||
* Released under the Apache License - http://opensource.org/licenses/Apache-2.0
|
||||
|
||||
=========================================================/**/
|
||||
;
|
||||
(function ($, undefined) {
|
||||
"use strict";
|
||||
var defaults = {
|
||||
slideWidth: 270,
|
||||
slideMargin: 0,
|
||||
slideMove: 1,
|
||||
minSlide: 1,
|
||||
maxSlide: 8,
|
||||
proportion:'',
|
||||
mode: "slide",
|
||||
useCSS: true,
|
||||
speed: 1000, //ms'
|
||||
easing: '', //'ex cubic-bezier(0.25, 0, 0.25, 1)',//
|
||||
auto: false,
|
||||
pause: 3000,
|
||||
loop: true,
|
||||
controls: true,
|
||||
prevHtml: '',
|
||||
nextHtml: '',
|
||||
keyPress: true,
|
||||
pager: true,
|
||||
gallery: false,
|
||||
thumbWidth: 50,
|
||||
thumbMargin: 3,
|
||||
currentPagerPosition: 'middle',
|
||||
swipeThreshold: 40,
|
||||
onBeforeStart: function () {},
|
||||
onSliderLoad: function () {},
|
||||
onBeforeSlide: function () {},
|
||||
onAfterSlide: function () {},
|
||||
onBeforeNextSlide: function () {},
|
||||
onBeforePrevSlide: function () {}
|
||||
};
|
||||
$.fn.lightSlider = function (options) {
|
||||
if(this.length > 1){
|
||||
this.each(function(){$(this).lightSlider(options)});
|
||||
return this;
|
||||
}
|
||||
var plugin = {};
|
||||
var settings = $.extend(true, {}, defaults, options);
|
||||
var $el = this;
|
||||
plugin.$el = this;
|
||||
var $children = $el.children(),
|
||||
length = 0,
|
||||
w = 0,
|
||||
on = false,
|
||||
elWidth = 0,
|
||||
$slide = '',
|
||||
scene = 0,
|
||||
pagerWidth = 0,
|
||||
slideWidth = 0,
|
||||
resize = false,
|
||||
slideOn = false,
|
||||
interval = '',
|
||||
isTouch = ('ontouchstart' in document.documentElement);
|
||||
var refresh = new Object();
|
||||
plugin = {
|
||||
doCss: function () {
|
||||
var support = function () {
|
||||
var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];
|
||||
var root = document.documentElement;
|
||||
for (var i = 0; i < transition.length; i++) {
|
||||
if (transition[i] in root.style) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
};
|
||||
if (settings.useCSS && support()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
keyPress: function () {
|
||||
if (settings.keyPress === true) {
|
||||
$(document).bind('keyup', function (e) {
|
||||
if (e.keyCode === 37) {
|
||||
$el.goToPrevSlide();
|
||||
clearInterval(interval);
|
||||
} else if (e.keyCode === 39) {
|
||||
$el.goToNextSlide();
|
||||
clearInterval(interval);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
controls: function () {
|
||||
if (settings.controls) {
|
||||
$el.after('<div class="csAction"><a class="csPrev">' + settings.prevHtml + '</a><a class="csNext">' + settings.nextHtml + '</a></div>');
|
||||
var $prev = $slide.find('.csPrev');
|
||||
var $next = $slide.find('.csNext');
|
||||
$prev.bind('click', function () {
|
||||
$el.goToPrevSlide();
|
||||
clearInterval(interval);
|
||||
});
|
||||
$next.bind('click', function () {
|
||||
$el.goToNextSlide();
|
||||
clearInterval(interval);
|
||||
});
|
||||
if($children.length<=1){
|
||||
$('.csAction').hide();
|
||||
}
|
||||
}
|
||||
},
|
||||
initialStyle: function () {
|
||||
$el.addClass('lightSlider').wrap("<div class='csSlideOuter'><div class='csSlideWrapper'></div></div>");
|
||||
$slide = $el.parent('.csSlideWrapper');
|
||||
settings.onBeforeStart.call(this);
|
||||
elWidth = $el.outerWidth();
|
||||
var min, max;
|
||||
refresh.calSW = function () {
|
||||
min = (elWidth - ((settings.minSlide * settings.slideMargin) - settings.slideMargin)) / settings.minSlide;
|
||||
max = (elWidth - ((settings.maxSlide * settings.slideMargin) - settings.slideMargin)) / settings.maxSlide;
|
||||
if (settings.slideWidth === '') {
|
||||
slideWidth = min;
|
||||
settings.slideMove = settings.minSlide;
|
||||
} else if (min < settings.slideWidth) {
|
||||
slideWidth = min;
|
||||
settings.slideMove = settings.minSlide;
|
||||
} else if (max > settings.slideWidth) {
|
||||
slideWidth = max;
|
||||
} else {
|
||||
slideWidth = settings.slideWidth;
|
||||
}
|
||||
};
|
||||
refresh.sSW = function () {
|
||||
length = $children.length;
|
||||
w = length * (slideWidth + settings.slideMargin);
|
||||
if (w % 1) {
|
||||
w = w + 1;
|
||||
}
|
||||
$el.css('width', w + 'px');
|
||||
$children.css('width', slideWidth + 'px');
|
||||
$children.css({
|
||||
'float': 'left',
|
||||
'margin-right': settings.slideMargin + 'px'
|
||||
});
|
||||
};
|
||||
refresh.calL = function () {
|
||||
$children = $el.children();
|
||||
length = $children.length;
|
||||
};
|
||||
if (this.doCss()) {
|
||||
$slide.addClass('usingCss');
|
||||
}
|
||||
refresh.calL();
|
||||
$children.first().addClass('active');
|
||||
if (settings.mode === "slide") {
|
||||
refresh.calSW();
|
||||
refresh.sSW();
|
||||
} else {
|
||||
if(settings.proportion !== ''){
|
||||
$el.css({'height':'0px','padding-bottom':settings.proportion});
|
||||
}else{
|
||||
var height = $children.height();
|
||||
var proportion = (height * 100)/elWidth;
|
||||
$el.css({'height':'0px','padding-bottom':proportion+'%'});
|
||||
}
|
||||
$el.addClass('csFade');
|
||||
if (!this.doCss()) {
|
||||
$children.not(".active").css('display', 'none');
|
||||
}
|
||||
}
|
||||
$slide.css({
|
||||
'max-width': '100%',
|
||||
'position': 'relative'
|
||||
});
|
||||
},
|
||||
pager: function () {
|
||||
var $this = this;
|
||||
refresh.createPager = function () {
|
||||
var maxSlide = '';
|
||||
if (settings.mode === 'slide') {
|
||||
maxSlide = parseInt(length / settings.slideMove);
|
||||
var mod = length % settings.slideMove;
|
||||
if (mod) {
|
||||
maxSlide = maxSlide + 1;
|
||||
}
|
||||
} else {
|
||||
maxSlide = length;
|
||||
}
|
||||
var i = 0,
|
||||
pagers = '',
|
||||
v = 0;
|
||||
for (i = 0; i < maxSlide; i++) {
|
||||
if (settings.mode === 'slide') {
|
||||
v = i * ((slideWidth + settings.slideMargin) * settings.slideMove);
|
||||
}
|
||||
var thumb = $children.eq(i * settings.slideMove).attr('data-thumb');
|
||||
if (settings.gallery === true) {
|
||||
pagers += '<li style="float:left;width:' + settings.thumbWidth + 'px;margin-right:' + settings.thumbMargin + 'px"><a href="javascript:void(0)"><img src="' + thumb + '" /></a></li>';
|
||||
} else {
|
||||
pagers += '<li><a href="javascript:void(0)">' + (i + 1) + '</a></li>';
|
||||
}
|
||||
if (settings.mode === 'slide') {
|
||||
if ((v) >= w - elWidth - settings.slideMargin) {
|
||||
i = i + 1;
|
||||
if(i<=1){
|
||||
pagers = null;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(maxSlide<=1){
|
||||
pagers = null;
|
||||
}
|
||||
var $cSouter = $slide.parent();
|
||||
$cSouter.find('.csPager').html(pagers);
|
||||
if (settings.gallery === true) {
|
||||
pagerWidth = i * (settings.thumbMargin + settings.thumbWidth);
|
||||
$cSouter.find('.csPager').css({
|
||||
'width': pagerWidth + 'px',
|
||||
'transform': 'translate3d(0px, 0px, 0px)',
|
||||
'transition': '1s all'
|
||||
});
|
||||
}
|
||||
var $pager = $cSouter.find('.csPager').find('li');
|
||||
$pager.first().addClass('active');
|
||||
$pager.on('click', function () {
|
||||
scene = $pager.index(this);
|
||||
$el.mode();
|
||||
if (settings.gallery === true) {
|
||||
$this.slideThumb();
|
||||
}
|
||||
clearInterval(interval);
|
||||
});
|
||||
};
|
||||
if (settings.pager) {
|
||||
var cl = '';
|
||||
if (settings.gallery) {
|
||||
cl = 'cSGallery';
|
||||
} else {
|
||||
cl = 'cSpg';
|
||||
}
|
||||
$slide.after('<ul class="csPager ' + cl + '"></ul>');
|
||||
refresh.createPager();
|
||||
}
|
||||
settings.onSliderLoad.call(this);
|
||||
},
|
||||
active: function (ob, t) {
|
||||
if (this.doCss() && settings.mode === "fade") {
|
||||
if (!$slide.hasClass('on')) {
|
||||
$slide.addClass('on');
|
||||
}
|
||||
}
|
||||
var sc = 0;
|
||||
if (scene * settings.slideMove < length) {
|
||||
ob.removeClass('active');
|
||||
if (!this.doCss() && settings.mode === "fade" && t === false) {
|
||||
ob.fadeOut(settings.speed);
|
||||
}
|
||||
t === true ? sc = scene : sc = scene * settings.slideMove;
|
||||
if (t === true) {
|
||||
var l = ob.length;
|
||||
var nl = l - 1;
|
||||
if (sc + 1 >= l) {
|
||||
sc = nl;
|
||||
}
|
||||
}
|
||||
if (!this.doCss() && settings.mode === "fade" && t === false) {
|
||||
ob.eq(sc).fadeIn(settings.speed);
|
||||
}
|
||||
ob.eq(sc).addClass('active');
|
||||
} else {
|
||||
ob.removeClass('active');
|
||||
ob.eq(ob.length - 1).addClass('active');
|
||||
if (!this.doCss() && settings.mode === "fade" && t === false) {
|
||||
ob.fadeOut(settings.speed);
|
||||
ob.eq(sc).fadeIn(settings.speed);
|
||||
}
|
||||
}
|
||||
},
|
||||
move: function (ob, v) {
|
||||
if (this.doCss()) {
|
||||
ob.css('transform', 'translate3d(-' + v + 'px, 0px, 0px)');
|
||||
} else {
|
||||
ob.css('position', 'relative').animate({
|
||||
left: -v + 'px'
|
||||
}, settings.speed, settings.easing);
|
||||
}
|
||||
var $thumb = $slide.parent().find('.csPager').find('li');
|
||||
this.active($thumb, true);
|
||||
},
|
||||
fade: function () {
|
||||
this.active($children, false);
|
||||
var $thumb = $slide.parent().find('.csPager').find('li');
|
||||
this.active($thumb, true);
|
||||
},
|
||||
slide: function () {
|
||||
var $this = this;
|
||||
refresh.calSlide = function () {
|
||||
var slideValue = scene * ((slideWidth + settings.slideMargin) * settings.slideMove);
|
||||
$this.active($children, false);
|
||||
if ((slideValue) > w - elWidth - settings.slideMargin) {
|
||||
slideValue = w - elWidth - settings.slideMargin;
|
||||
} else if (slideValue < 0) {
|
||||
slideValue = 0;
|
||||
}
|
||||
$this.move($el, slideValue);
|
||||
};
|
||||
refresh.calSlide();
|
||||
slideOn = true;
|
||||
},
|
||||
slideThumb: function () {
|
||||
var position;
|
||||
switch (settings.currentPagerPosition) {
|
||||
case 'left':
|
||||
position = 0;
|
||||
break;
|
||||
case 'middle':
|
||||
position = (elWidth / 2) - (settings.thumbWidth / 2);
|
||||
break;
|
||||
case 'right':
|
||||
position = elWidth - settings.thumbWidth;
|
||||
}
|
||||
var thumbSlide = scene * ((settings.thumbWidth + settings.thumbMargin)) - (position);
|
||||
if ((thumbSlide + elWidth) > pagerWidth) {
|
||||
thumbSlide = pagerWidth - elWidth - settings.thumbMargin;
|
||||
}
|
||||
if (thumbSlide < 0) {
|
||||
thumbSlide = 0;
|
||||
}
|
||||
var $pager = $slide.parent().find('.csPager');
|
||||
this.move($pager, thumbSlide);
|
||||
},
|
||||
auto: function () {
|
||||
if (settings.auto) {
|
||||
interval = setInterval(function () {
|
||||
$el.goToNextSlide();
|
||||
}, settings.pause);
|
||||
}
|
||||
},
|
||||
enableTouch: function () {
|
||||
if (isTouch) {
|
||||
var startCoords = {},
|
||||
endCoords = {};
|
||||
$slide.on('touchstart.lightSlider', function (e) {
|
||||
endCoords = e.originalEvent.targetTouches[0];
|
||||
startCoords.pageX = e.originalEvent.targetTouches[0].pageX;
|
||||
startCoords.pageY = e.originalEvent.targetTouches[0].pageY;
|
||||
});
|
||||
$slide.on('touchmove.lightSlider', function (e) {
|
||||
var orig = e.originalEvent;
|
||||
endCoords = orig.targetTouches[0];
|
||||
var xMovement = Math.abs(endCoords.pageX - startCoords.pageX);
|
||||
var yMovement = Math.abs(endCoords.pageY - startCoords.pageY);
|
||||
if ((xMovement * 3) > yMovement) {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
$slide.on('touchend.lightSlider', function () {
|
||||
var distance = endCoords.pageX - startCoords.pageX,
|
||||
swipeThreshold = settings.swipeThreshold;
|
||||
if (distance >= swipeThreshold) {
|
||||
$el.goToPrevSlide();
|
||||
clearInterval(interval);
|
||||
} else if (distance <= -swipeThreshold) {
|
||||
$el.goToNextSlide();
|
||||
clearInterval(interval);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
build: function () {
|
||||
var $this = this;
|
||||
$this.initialStyle();
|
||||
$this.auto();
|
||||
$this.enableTouch();
|
||||
$this.pager();
|
||||
$this.controls();
|
||||
$this.keyPress();
|
||||
}
|
||||
};
|
||||
plugin.build();
|
||||
refresh.init = function () {
|
||||
resize = true;
|
||||
refresh.calL();
|
||||
if (settings.mode === "slide") {
|
||||
$el.removeClass('csSlide');
|
||||
}
|
||||
elWidth = $slide.outerWidth();
|
||||
if (settings.mode === "slide") {
|
||||
refresh.calSW();
|
||||
refresh.sSW();
|
||||
}
|
||||
setTimeout(function () {
|
||||
if (resize === true) {
|
||||
if (settings.mode === "slide") {
|
||||
$el.addClass('csSlide');
|
||||
}
|
||||
resize = false;
|
||||
}
|
||||
}, 1000);
|
||||
if (settings.pager) {
|
||||
refresh.createPager();
|
||||
}
|
||||
if (settings.gallery === true) {
|
||||
plugin.slideThumb();
|
||||
}
|
||||
if (slideOn) {
|
||||
refresh.calSlide();
|
||||
}
|
||||
};
|
||||
$el.goToPrevSlide = function () {
|
||||
if (scene > 0) {
|
||||
settings.onBeforePrevSlide.call(this);
|
||||
scene--;
|
||||
$el.mode();
|
||||
if (settings.gallery === true) {
|
||||
plugin.slideThumb();
|
||||
}
|
||||
} else {
|
||||
if (settings.loop === true) {
|
||||
settings.onBeforePrevSlide.call(this);
|
||||
if(settings.mode==='slide'){
|
||||
var v = 0;
|
||||
for (var i = 0; i < length; i++) {
|
||||
v = i * ((slideWidth + settings.slideMargin) * settings.slideMove);
|
||||
if ((v) >= w - elWidth - settings.slideMargin) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
scene = i;
|
||||
}else{
|
||||
var l = length;
|
||||
l = l - 1;
|
||||
scene = parseInt(l / settings.slideMove, 10);
|
||||
}
|
||||
$el.mode();
|
||||
if (settings.gallery === true) {
|
||||
plugin.slideThumb();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
$el.goToNextSlide = function () {
|
||||
var nextI = true;
|
||||
if(settings.mode === 'slide'){
|
||||
var _slideValue = scene * ((slideWidth + settings.slideMargin) * settings.slideMove);
|
||||
var nextI = _slideValue < w-elWidth-settings.slideMargin;
|
||||
}
|
||||
if (((scene * settings.slideMove) < length - settings.slideMove) && nextI) {
|
||||
settings.onBeforeNextSlide.call(this);
|
||||
scene++;
|
||||
$el.mode();
|
||||
if (settings.gallery === true) {
|
||||
plugin.slideThumb();
|
||||
}
|
||||
} else {
|
||||
if (settings.loop === true) {
|
||||
settings.onBeforeNextSlide.call(this);
|
||||
scene = 0;
|
||||
$el.mode();
|
||||
if (settings.gallery === true) {
|
||||
plugin.slideThumb();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
$el.mode = function () {
|
||||
if (on === false) {
|
||||
if (settings.mode === "slide") {
|
||||
if (plugin.doCss()) {
|
||||
$el.addClass('csSlide');
|
||||
if (settings.speed !== '') {
|
||||
$slide.css('transition-duration', settings.speed + 'ms');
|
||||
}
|
||||
if (settings.easing !== '') {
|
||||
$slide.css('transition-timing-function', settings.easing);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (plugin.doCss()) {
|
||||
if (settings.speed !== '') {
|
||||
$el.css('transition-duration', settings.speed + 'ms');
|
||||
}
|
||||
if (settings.easing !== '') {
|
||||
$el.css('transition-timing-function', settings.easing);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
settings.onBeforeSlide.call(this);
|
||||
if (settings.mode === "slide") {
|
||||
plugin.slide();
|
||||
} else {
|
||||
plugin.fade();
|
||||
}
|
||||
setTimeout(function () {
|
||||
settings.onAfterSlide.call(this);
|
||||
}, settings.speed);
|
||||
on = true;
|
||||
};
|
||||
$el.play = function () {
|
||||
clearInterval(interval);
|
||||
$el.goToNextSlide();
|
||||
interval = setInterval(function () {
|
||||
$el.goToNextSlide();
|
||||
}, settings.pause);
|
||||
};
|
||||
$el.pause = function(){
|
||||
clearInterval(interval);
|
||||
};
|
||||
$el.refresh = function () {
|
||||
refresh.init();
|
||||
};
|
||||
$el.getCurrentSlideCount = function () {
|
||||
return scene + 1;
|
||||
};
|
||||
$el.goToSlide = function (s) {
|
||||
scene = s;
|
||||
$el.mode();
|
||||
};
|
||||
$(window).on('resize', function (e) {
|
||||
e.preventDefault();
|
||||
refresh.init();
|
||||
});
|
||||
return this;
|
||||
};
|
||||
}(jQuery));
|
656
app/assets/javascripts/jquery.superslides.js
Executable file
@ -0,0 +1,656 @@
|
||||
/*! Superslides - v0.6.2 - 2013-07-10
|
||||
* https://github.com/nicinabox/superslides
|
||||
* Copyright (c) 2013 Nic Aitch; Licensed MIT */
|
||||
(function(window, $) {
|
||||
|
||||
var Superslides, plugin = 'superslides';
|
||||
|
||||
Superslides = function(el, options) {
|
||||
this.options = $.extend({
|
||||
play: false,
|
||||
animation_speed: 600,
|
||||
animation_easing: 'swing',
|
||||
animation: 'slide',
|
||||
inherit_width_from: window,
|
||||
inherit_height_from: window,
|
||||
pagination: true,
|
||||
hashchange: false,
|
||||
scrollable: true,
|
||||
elements: {
|
||||
preserve: '.preserve',
|
||||
nav: '.slides-navigation',
|
||||
container: '.slides-container',
|
||||
pagination: '.slides-pagination'
|
||||
}
|
||||
}, options);
|
||||
|
||||
var that = this,
|
||||
$control = $('<div>', { "class": 'slides-control' }),
|
||||
multiplier = 1;
|
||||
|
||||
this.$el = $(el);
|
||||
this.$container = this.$el.find(this.options.elements.container);
|
||||
|
||||
// Private Methods
|
||||
var initialize = function() {
|
||||
multiplier = that._findMultiplier();
|
||||
|
||||
that.$el.on('click', that.options.elements.nav + " a", function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
that.stop();
|
||||
if ($(this).hasClass('next')) {
|
||||
that.animate('next', function() {
|
||||
that.start();
|
||||
});
|
||||
} else {
|
||||
that.animate('prev', function() {
|
||||
that.start();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('keyup', function(e) {
|
||||
if (e.keyCode === 37) {
|
||||
that.animate('prev');
|
||||
}
|
||||
if (e.keyCode === 39) {
|
||||
that.animate('next');
|
||||
}
|
||||
});
|
||||
|
||||
$(window).on('resize', function() {
|
||||
setTimeout(function() {
|
||||
var $children = that.$container.children();
|
||||
|
||||
that.width = that._findWidth();
|
||||
that.height = that._findHeight();
|
||||
|
||||
$children.css({
|
||||
width: that.width,
|
||||
left: that.width
|
||||
});
|
||||
|
||||
that.css.containers();
|
||||
that.css.images();
|
||||
}, 10);
|
||||
});
|
||||
|
||||
$(window).on('hashchange', function() {
|
||||
var hash = that._parseHash(), index;
|
||||
|
||||
if (hash && !isNaN(hash)) {
|
||||
// Minus 1 here because we don't want the url
|
||||
// to be zero-indexed
|
||||
index = that._upcomingSlide(hash - 1);
|
||||
|
||||
} else {
|
||||
index = that._upcomingSlide(hash);
|
||||
}
|
||||
|
||||
if (index >= 0 && index !== that.current) {
|
||||
that.animate(index);
|
||||
}
|
||||
});
|
||||
|
||||
that.pagination._events();
|
||||
|
||||
that.start();
|
||||
return that;
|
||||
};
|
||||
|
||||
var css = {
|
||||
containers: function() {
|
||||
if (that.init) {
|
||||
that.$el.css({
|
||||
height: that.height
|
||||
});
|
||||
|
||||
that.$control.css({
|
||||
width: that.width * multiplier,
|
||||
left: -that.width
|
||||
});
|
||||
|
||||
that.$container.css({
|
||||
|
||||
});
|
||||
} else {
|
||||
$('body').css({
|
||||
margin: 0
|
||||
});
|
||||
|
||||
that.$el.css({
|
||||
position: 'relative',
|
||||
overflow: 'hidden',
|
||||
width: '100%',
|
||||
height: that.height
|
||||
});
|
||||
|
||||
that.$control.css({
|
||||
position: 'relative',
|
||||
transform: 'translate3d(0)',
|
||||
height: '100%',
|
||||
width: that.width * multiplier,
|
||||
left: -that.width
|
||||
});
|
||||
|
||||
that.$container.css({
|
||||
display: 'none',
|
||||
margin: '0',
|
||||
padding: '0',
|
||||
listStyle: 'none',
|
||||
position: 'relative',
|
||||
height: '100%'
|
||||
});
|
||||
}
|
||||
|
||||
if (that.size() === 1) {
|
||||
that.$el.find(that.options.elements.nav).hide();
|
||||
}
|
||||
},
|
||||
images: function() {
|
||||
var $images = that.$container.find('img')
|
||||
.not(that.options.elements.preserve)
|
||||
|
||||
$images.removeAttr('width').removeAttr('height')
|
||||
.css({
|
||||
"-webkit-backface-visibility": 'hidden',
|
||||
"-ms-interpolation-mode": 'bicubic',
|
||||
"position": 'absolute',
|
||||
"left": '0',
|
||||
"top": '0',
|
||||
"z-index": '-1',
|
||||
"max-width": 'none'
|
||||
});
|
||||
|
||||
$images.each(function() {
|
||||
var image_aspect_ratio = that.image._aspectRatio(this),
|
||||
image = this;
|
||||
|
||||
if (!$.data(this, 'processed')) {
|
||||
var img = new Image();
|
||||
img.onload = function() {
|
||||
that.image._scale(image, image_aspect_ratio);
|
||||
that.image._center(image, image_aspect_ratio);
|
||||
$.data(image, 'processed', true);
|
||||
};
|
||||
img.src = this.src;
|
||||
|
||||
} else {
|
||||
that.image._scale(image, image_aspect_ratio);
|
||||
that.image._center(image, image_aspect_ratio);
|
||||
}
|
||||
});
|
||||
},
|
||||
children: function() {
|
||||
var $children = that.$container.children();
|
||||
|
||||
if ($children.is('img')) {
|
||||
$children.each(function() {
|
||||
if ($(this).is('img')) {
|
||||
$(this).wrap('<div>');
|
||||
|
||||
// move id attribute
|
||||
var id = $(this).attr('id');
|
||||
$(this).removeAttr('id');
|
||||
$(this).parent().attr('id', id);
|
||||
}
|
||||
});
|
||||
|
||||
$children = that.$container.children();
|
||||
}
|
||||
|
||||
if (!that.init) {
|
||||
$children.css({
|
||||
display: 'none',
|
||||
left: that.width * 2
|
||||
});
|
||||
}
|
||||
|
||||
$children.css({
|
||||
position: 'absolute',
|
||||
overflow: 'hidden',
|
||||
height: '100%',
|
||||
width: that.width,
|
||||
top: 0,
|
||||
zIndex: 0
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
var fx = {
|
||||
slide: function(orientation, complete) {
|
||||
var $children = that.$container.children(),
|
||||
$target = $children.eq(orientation.upcoming_slide);
|
||||
|
||||
$target.css({
|
||||
left: orientation.upcoming_position,
|
||||
display: 'block'
|
||||
});
|
||||
|
||||
that.$control.animate({
|
||||
left: orientation.offset
|
||||
},
|
||||
that.options.animation_speed,
|
||||
that.options.animation_easing,
|
||||
function() {
|
||||
if (that.size() > 1) {
|
||||
that.$control.css({
|
||||
left: -that.width
|
||||
});
|
||||
|
||||
$children.eq(orientation.upcoming_slide).css({
|
||||
left: that.width,
|
||||
zIndex: 2
|
||||
});
|
||||
|
||||
if (orientation.outgoing_slide >= 0) {
|
||||
$children.eq(orientation.outgoing_slide).css({
|
||||
left: that.width,
|
||||
display: 'none',
|
||||
zIndex: 0
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
complete();
|
||||
});
|
||||
},
|
||||
fade: function(orientation, complete) {
|
||||
var that = this,
|
||||
$children = that.$container.children(),
|
||||
$outgoing = $children.eq(orientation.outgoing_slide),
|
||||
$target = $children.eq(orientation.upcoming_slide);
|
||||
|
||||
$target.css({
|
||||
left: this.width,
|
||||
opacity: 1,
|
||||
display: 'block'
|
||||
});
|
||||
|
||||
if (orientation.outgoing_slide >= 0) {
|
||||
$outgoing.animate({
|
||||
opacity: 0
|
||||
},
|
||||
that.options.animation_speed,
|
||||
that.options.animation_easing,
|
||||
function() {
|
||||
if (that.size() > 1) {
|
||||
$children.eq(orientation.upcoming_slide).css({
|
||||
zIndex: 2
|
||||
});
|
||||
|
||||
if (orientation.outgoing_slide >= 0) {
|
||||
$children.eq(orientation.outgoing_slide).css({
|
||||
opacity: 1,
|
||||
display: 'none',
|
||||
zIndex: 0
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
complete();
|
||||
});
|
||||
} else {
|
||||
$target.css({
|
||||
zIndex: 2
|
||||
});
|
||||
complete();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
fx = $.extend(fx, $.fn.superslides.fx);
|
||||
|
||||
var image = {
|
||||
_centerY: function(image) {
|
||||
var $img = $(image);
|
||||
|
||||
$img.css({
|
||||
top: (that.height - $img.height()) / 2
|
||||
});
|
||||
},
|
||||
_centerX: function(image) {
|
||||
var $img = $(image);
|
||||
|
||||
$img.css({
|
||||
left: (that.width - $img.width()) / 2
|
||||
});
|
||||
},
|
||||
_center: function(image) {
|
||||
that.image._centerX(image);
|
||||
that.image._centerY(image);
|
||||
},
|
||||
_aspectRatio: function(image) {
|
||||
if (!image.naturalHeight && !image.naturalWidth) {
|
||||
var img = new Image();
|
||||
img.src = image.src;
|
||||
image.naturalHeight = img.height;
|
||||
image.naturalWidth = img.width;
|
||||
}
|
||||
|
||||
return image.naturalHeight / image.naturalWidth;
|
||||
},
|
||||
_scale: function(image, image_aspect_ratio) {
|
||||
image_aspect_ratio = image_aspect_ratio || that.image._aspectRatio(image);
|
||||
|
||||
var container_aspect_ratio = that.height / that.width,
|
||||
$img = $(image);
|
||||
|
||||
if (container_aspect_ratio > image_aspect_ratio) {
|
||||
$img.css({
|
||||
height: that.height,
|
||||
width: that.height / image_aspect_ratio
|
||||
});
|
||||
|
||||
} else {
|
||||
$img.css({
|
||||
height: that.width * image_aspect_ratio,
|
||||
width: that.width
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var pagination = {
|
||||
_setCurrent: function(i) {
|
||||
if (!that.$pagination) { return; }
|
||||
|
||||
var $pagination_children = that.$pagination.children();
|
||||
|
||||
$pagination_children.removeClass('current');
|
||||
$pagination_children.eq(i)
|
||||
.addClass('current');
|
||||
},
|
||||
_addItem: function(i) {
|
||||
var slide_number = i + 1,
|
||||
href = slide_number,
|
||||
$slide = that.$container.children().eq(i),
|
||||
slide_id = $slide.attr('id');
|
||||
|
||||
if (slide_id) {
|
||||
href = slide_id;
|
||||
}
|
||||
|
||||
var $item = $("<a>", {
|
||||
'href': "#" + href,
|
||||
'text': href
|
||||
});
|
||||
|
||||
$item.appendTo(that.$pagination);
|
||||
},
|
||||
_setup: function() {
|
||||
if (!that.options.pagination || that.size() === 1) { return; }
|
||||
|
||||
var $pagination = $("<nav>", {
|
||||
'class': that.options.elements.pagination.replace(/^\./, '')
|
||||
});
|
||||
|
||||
that.$pagination = $pagination.appendTo(that.$el);
|
||||
|
||||
for (var i = 0; i < that.size(); i++) {
|
||||
that.pagination._addItem(i);
|
||||
}
|
||||
},
|
||||
_events: function() {
|
||||
that.$el.on('click', that.options.elements.pagination + ' a', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var hash = that._parseHash(this.hash),
|
||||
index = that._upcomingSlide(hash - 1);
|
||||
|
||||
if (index !== that.current) {
|
||||
that.animate(index, function() {
|
||||
that.start();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
this.css = css;
|
||||
this.image = image;
|
||||
this.pagination = pagination;
|
||||
this.fx = fx;
|
||||
this.animation = this.fx[this.options.animation];
|
||||
|
||||
this.$control = this.$container.wrap($control).parent('.slides-control');
|
||||
|
||||
that._findPositions();
|
||||
that.width = that._findWidth();
|
||||
that.height = that._findHeight();
|
||||
|
||||
this.css.children();
|
||||
this.css.containers();
|
||||
this.css.images();
|
||||
this.pagination._setup();
|
||||
|
||||
return initialize();
|
||||
};
|
||||
|
||||
Superslides.prototype = {
|
||||
_findWidth: function() {
|
||||
return $(this.options.inherit_width_from).width();
|
||||
},
|
||||
_findHeight: function() {
|
||||
return $(this.options.inherit_height_from).height();
|
||||
},
|
||||
|
||||
_findMultiplier: function() {
|
||||
return this.size() === 1 ? 1 : 3;
|
||||
},
|
||||
|
||||
_upcomingSlide: function(direction) {
|
||||
if ((/next/).test(direction)) {
|
||||
return this._nextInDom();
|
||||
|
||||
} else if ((/prev/).test(direction)) {
|
||||
return this._prevInDom();
|
||||
|
||||
} else if ((/\d/).test(direction)) {
|
||||
return +direction;
|
||||
|
||||
} else if (direction && (/\w/).test(direction)) {
|
||||
var index = this._findSlideById(direction);
|
||||
if (index >= 0) {
|
||||
return index;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
|
||||
_findSlideById: function(id) {
|
||||
return this.$container.find('#' + id).index();
|
||||
},
|
||||
|
||||
_findPositions: function(current, thisRef) {
|
||||
thisRef = thisRef || this;
|
||||
|
||||
if (current === undefined) {
|
||||
current = -1;
|
||||
}
|
||||
|
||||
thisRef.current = current;
|
||||
thisRef.next = thisRef._nextInDom();
|
||||
thisRef.prev = thisRef._prevInDom();
|
||||
},
|
||||
|
||||
_nextInDom: function() {
|
||||
var index = this.current + 1;
|
||||
|
||||
if (index === this.size()) {
|
||||
index = 0;
|
||||
}
|
||||
|
||||
return index;
|
||||
},
|
||||
|
||||
_prevInDom: function() {
|
||||
var index = this.current - 1;
|
||||
|
||||
if (index < 0) {
|
||||
index = this.size() - 1;
|
||||
}
|
||||
|
||||
return index;
|
||||
},
|
||||
|
||||
_parseHash: function(hash) {
|
||||
hash = hash || window.location.hash;
|
||||
hash = hash.replace(/^#/, '');
|
||||
|
||||
if (hash && !isNaN(+hash)) {
|
||||
hash = +hash;
|
||||
}
|
||||
|
||||
return hash;
|
||||
},
|
||||
|
||||
size: function() {
|
||||
return this.$container.children().length;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
return this.$el.removeData();
|
||||
},
|
||||
|
||||
update: function() {
|
||||
this.css.children();
|
||||
this.css.containers();
|
||||
this.css.images();
|
||||
|
||||
this.pagination._addItem(this.size())
|
||||
|
||||
this._findPositions(this.current);
|
||||
this.$el.trigger('updated.slides');
|
||||
},
|
||||
|
||||
stop: function() {
|
||||
clearInterval(this.play_id);
|
||||
delete this.play_id;
|
||||
|
||||
this.$el.trigger('stopped.slides');
|
||||
},
|
||||
|
||||
start: function() {
|
||||
var that = this;
|
||||
|
||||
if (that.options.hashchange) {
|
||||
$(window).trigger('hashchange');
|
||||
} else {
|
||||
this.animate();
|
||||
}
|
||||
|
||||
if (this.options.play) {
|
||||
if (this.play_id) {
|
||||
this.stop();
|
||||
}
|
||||
|
||||
this.play_id = setInterval(function() {
|
||||
that.animate();
|
||||
}, this.options.play);
|
||||
}
|
||||
|
||||
this.$el.trigger('started.slides');
|
||||
},
|
||||
|
||||
animate: function(direction, userCallback) {
|
||||
var that = this,
|
||||
orientation = {};
|
||||
|
||||
if (this.animating) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.animating = true;
|
||||
|
||||
if (direction === undefined) {
|
||||
direction = 'next';
|
||||
}
|
||||
|
||||
orientation.upcoming_slide = this._upcomingSlide(direction);
|
||||
|
||||
if (orientation.upcoming_slide >= this.size()) {
|
||||
return;
|
||||
}
|
||||
|
||||
orientation.outgoing_slide = this.current;
|
||||
orientation.upcoming_position = this.width * 2;
|
||||
orientation.offset = -orientation.upcoming_position;
|
||||
|
||||
if (direction === 'prev' || direction < orientation.outgoing_slide) {
|
||||
orientation.upcoming_position = 0;
|
||||
orientation.offset = 0;
|
||||
}
|
||||
|
||||
if (that.size() > 1) {
|
||||
that.pagination._setCurrent(orientation.upcoming_slide);
|
||||
}
|
||||
|
||||
if (that.options.hashchange) {
|
||||
var hash = orientation.upcoming_slide + 1,
|
||||
id = that.$container.children(':eq(' + orientation.upcoming_slide + ')').attr('id');
|
||||
|
||||
if (id) {
|
||||
window.location.hash = id;
|
||||
} else {
|
||||
window.location.hash = hash;
|
||||
}
|
||||
}
|
||||
|
||||
that.$el.trigger('animating.slides', [orientation]);
|
||||
|
||||
that.animation(orientation, function() {
|
||||
that._findPositions(orientation.upcoming_slide, that);
|
||||
|
||||
if (typeof userCallback === 'function') {
|
||||
userCallback();
|
||||
}
|
||||
|
||||
that.animating = false;
|
||||
that.$el.trigger('animated.slides');
|
||||
|
||||
if (!that.init) {
|
||||
that.$el.trigger('init.slides');
|
||||
that.init = true;
|
||||
that.$container.fadeIn('fast');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// jQuery plugin definition
|
||||
|
||||
$.fn[plugin] = function(option, args) {
|
||||
var result = [];
|
||||
|
||||
this.each(function() {
|
||||
var $this, data, options;
|
||||
|
||||
$this = $(this);
|
||||
data = $this.data(plugin);
|
||||
options = typeof option === 'object' && option;
|
||||
|
||||
if (!data) {
|
||||
result = $this.data(plugin, (data = new Superslides(this, options)));
|
||||
}
|
||||
|
||||
if (typeof option === "string") {
|
||||
result = data[option];
|
||||
if (typeof result === 'function') {
|
||||
return result = result.call(data, args);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
$.fn[plugin].fx = {};
|
||||
|
||||
})(this, jQuery);
|
1822
app/assets/javascripts/jquery.tagcanvas.js
Normal file
3
app/assets/javascripts/welcome.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://coffeescript.org/
|
390
app/assets/stylesheets/application.scss
Normal file
@ -0,0 +1,390 @@
|
||||
/*
|
||||
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
||||
* listed below.
|
||||
*
|
||||
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
||||
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
||||
*
|
||||
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
||||
* compiled file so the styles you add here take precedence over styles defined in any styles
|
||||
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
||||
* file per style scope.
|
||||
*
|
||||
*= require superslides
|
||||
*= require lightSlider
|
||||
*= require jquery.bxslider
|
||||
*= require_self
|
||||
*/
|
||||
|
||||
a{
|
||||
color:rgba(66,139,202,1);
|
||||
text-decoration:none;
|
||||
|
||||
&:hover{
|
||||
color:#68b9ff;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#large{
|
||||
display:none;
|
||||
position:fixed;
|
||||
top:0;
|
||||
left:0;
|
||||
width:100%;
|
||||
height:100%;
|
||||
background:rgba(156,200,102,1);//rgba(132,187,64,0.8);
|
||||
z-index:10;
|
||||
padding:50px;
|
||||
box-sizing: border-box;
|
||||
.next, .prev{
|
||||
width:20px;
|
||||
position:absolute;
|
||||
top:50%;
|
||||
transform:translateY(-50%);
|
||||
cursor:pointer;
|
||||
|
||||
|
||||
}
|
||||
.prev{
|
||||
left:15px;
|
||||
}
|
||||
.next{
|
||||
right:15px;
|
||||
}
|
||||
.large-img{
|
||||
cursor:pointer;
|
||||
max-height:100%;
|
||||
max-width:100%;
|
||||
|
||||
display:block;
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
}
|
||||
body{
|
||||
font-family:Lato;
|
||||
font-weight:300;
|
||||
line-height:1.62;
|
||||
text-align:justify;
|
||||
background:#f4f6f6;
|
||||
|
||||
}
|
||||
#rea-gal{
|
||||
//background:white;
|
||||
padding-left:5px;
|
||||
img{
|
||||
padding-right:5px;
|
||||
padding-bottom:5px;
|
||||
width:200px;
|
||||
float:left;
|
||||
|
||||
&:hover{
|
||||
|
||||
opacity:0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
.infos{
|
||||
h3{
|
||||
margin-top:5px;
|
||||
|
||||
}
|
||||
.samples{
|
||||
min-width:400px;
|
||||
width:50%;
|
||||
float:right;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
.gal{
|
||||
li{
|
||||
height:390px;
|
||||
text-align:center;
|
||||
}
|
||||
img{
|
||||
height:350px;
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#brainstorming{
|
||||
background:url("/ardoise.jpg");
|
||||
height:800px;
|
||||
box-sizing: border-box;
|
||||
color:white;
|
||||
padding:1px;
|
||||
|
||||
font-family:Felt Tip Roman;
|
||||
#myCanvas{
|
||||
|
||||
|
||||
}
|
||||
p{
|
||||
font-size:1.6em;
|
||||
text-align:center;
|
||||
max-width:400px;
|
||||
float:left;
|
||||
position:relative;
|
||||
margin:1em;
|
||||
}
|
||||
.brain-title{
|
||||
margin-top:60px;
|
||||
margin-bottom:10px;
|
||||
text-align:center;
|
||||
font-size:3em;
|
||||
height:80px;
|
||||
|
||||
position:relative;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#logo{
|
||||
position:absolute;
|
||||
top:50%;
|
||||
left:100px;
|
||||
z-index:100;
|
||||
width:722px;
|
||||
opacity:0.9;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#baseline{
|
||||
position:absolute;
|
||||
top:50%;
|
||||
left:100px;
|
||||
z-index:100;
|
||||
width:722px;
|
||||
text-align:center;
|
||||
padding:20px 0px;
|
||||
height:60px;
|
||||
img{
|
||||
width:560px;
|
||||
}
|
||||
|
||||
}
|
||||
.slider{
|
||||
width:2000px;
|
||||
height:300px;
|
||||
overflow:hidden;
|
||||
position:fixed;
|
||||
-webkit-transform-style: preserve-3d;
|
||||
-moz-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
|
||||
|
||||
}
|
||||
.wide-container {
|
||||
width: 110%;
|
||||
height: 110%;
|
||||
margin: 0 auto;
|
||||
position:absolute;
|
||||
top:-10px;
|
||||
left:-5%;
|
||||
}
|
||||
|
||||
#test{
|
||||
|
||||
|
||||
-webkit-transform: translateY(-50%) translateX(-50%);
|
||||
-ms-transform: translateY(-50%) translateX(-50%);
|
||||
transform: translateY(-50%) translateX(-50%);
|
||||
}
|
||||
#menu-container{
|
||||
height:50px;
|
||||
position:absolute;
|
||||
left:0px;
|
||||
width:100%;
|
||||
}
|
||||
#main{
|
||||
position:absolute;
|
||||
width:100%;
|
||||
.center{
|
||||
margin:auto;
|
||||
max-width:1000px;
|
||||
padding:0 1em;
|
||||
|
||||
}
|
||||
|
||||
.infos-button{
|
||||
margin:auto;
|
||||
width:200px;
|
||||
border: 1px solid white;
|
||||
padding:1em;
|
||||
font-size:1.1em;
|
||||
cursor:pointer;
|
||||
margin-top:60px;
|
||||
margin-bottom:60px;
|
||||
}
|
||||
|
||||
#about, #cristal-protect, #my-strat, #realisations, #contact{
|
||||
padding:50px 0;
|
||||
background:white;
|
||||
text-align:center;
|
||||
|
||||
.infos{
|
||||
|
||||
-webkit-transition-duration: display 5s; /* Safari */
|
||||
transition : display 5s;
|
||||
|
||||
background:rgba(250,250,250,0.90);
|
||||
color : rgba(10,10,10, 1);
|
||||
//color:rgba(231,22,103,1);
|
||||
text-align:left;
|
||||
padding:1em 0;
|
||||
font-size:0.9em;
|
||||
margin-bottom:0px;
|
||||
|
||||
h3{
|
||||
font-weight:500;
|
||||
}
|
||||
|
||||
}
|
||||
.icons{
|
||||
|
||||
max-width:100%;
|
||||
max-height:115px;
|
||||
|
||||
}
|
||||
|
||||
h2{
|
||||
font-size:40px;
|
||||
font-weight:300;
|
||||
margin-top:0;
|
||||
}
|
||||
p{
|
||||
font-size:1.1em;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#contact{
|
||||
|
||||
padding-bottom:0px;
|
||||
}
|
||||
#cristal-protect, #my-strat{
|
||||
padding-bottom:0px;
|
||||
|
||||
.infos{
|
||||
|
||||
padding:1em;
|
||||
|
||||
|
||||
}
|
||||
.more{
|
||||
padding:0.5em 0;
|
||||
display:inline-block;
|
||||
|
||||
text-align:left;
|
||||
ul{
|
||||
margin-left:120px;
|
||||
}
|
||||
img{
|
||||
width:100px;
|
||||
margin:40px 10px;
|
||||
|
||||
float:left;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
.clear{
|
||||
clear:both;
|
||||
|
||||
}
|
||||
#realisations{
|
||||
color:white;
|
||||
background:rgba(132,187,64,1);
|
||||
|
||||
|
||||
padding:0px;
|
||||
padding:55px 0px;
|
||||
position:relative;
|
||||
|
||||
h2{
|
||||
background:rgba(132,187,64,0.9);
|
||||
position:absolute;
|
||||
top:70px;
|
||||
padding:10px 20px;
|
||||
z-index:2;
|
||||
font-size:1.5em;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
#about{
|
||||
padding-top:70px;
|
||||
text-align:left;
|
||||
h2{
|
||||
text-align:center;
|
||||
font-size:2em;
|
||||
padding-bottom:30px;
|
||||
}
|
||||
|
||||
}
|
||||
#cristal-protect, #cristal-protect .more{
|
||||
color:white;
|
||||
background:rgba(231,22,103,1);
|
||||
|
||||
}
|
||||
#my-strat, #my-strat .more{
|
||||
background:rgba(103,184,186,1);
|
||||
color:white;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
#menu{
|
||||
|
||||
|
||||
height:50px;
|
||||
background:rgba(0,0,0,0.9);
|
||||
text-align:right;
|
||||
font-family:Lato;
|
||||
font-weight:200;
|
||||
text-decoration:none;
|
||||
position:relative;
|
||||
z-index:4;
|
||||
top:0px;
|
||||
left:0px;
|
||||
right:0px;
|
||||
#logo-min{
|
||||
position:absolute;
|
||||
top:4px;
|
||||
left:10px;
|
||||
height:35px;
|
||||
display:none;
|
||||
|
||||
z-index:100;
|
||||
|
||||
}
|
||||
|
||||
a{
|
||||
display:inline-block;
|
||||
color:rgba(250,250,250,0.9);
|
||||
text-decoration:none;
|
||||
font-size:18px;
|
||||
padding:5px 10px;
|
||||
}
|
||||
a:last-child{
|
||||
margin-right:10px;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
205
app/assets/stylesheets/jquery.bxslider.css
Normal file
@ -0,0 +1,205 @@
|
||||
/**
|
||||
* BxSlider v4.1.2 - Fully loaded, responsive content slider
|
||||
* http://bxslider.com
|
||||
*
|
||||
* Written by: Steven Wanderski, 2014
|
||||
* http://stevenwanderski.com
|
||||
* (while drinking Belgian ales and listening to jazz)
|
||||
*
|
||||
* CEO and founder of bxCreative, LTD
|
||||
* http://bxcreative.com
|
||||
*/
|
||||
|
||||
|
||||
/** RESET AND LAYOUT
|
||||
===================================*/
|
||||
|
||||
.bx-wrapper {
|
||||
position: relative;
|
||||
margin: 0 auto 60px;
|
||||
padding: 0;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.bx-wrapper img {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/** THEME
|
||||
===================================*/
|
||||
|
||||
.bx-wrapper .bx-viewport {
|
||||
|
||||
left: -5px;
|
||||
/*background: #fff;
|
||||
|
||||
/*fix other elements on the page moving (on Chrome)*/
|
||||
-webkit-transform: translatez(0);
|
||||
-moz-transform: translatez(0);
|
||||
-ms-transform: translatez(0);
|
||||
-o-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-pager,
|
||||
.bx-wrapper .bx-controls-auto {
|
||||
position: absolute;
|
||||
bottom: -30px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* LOADER */
|
||||
|
||||
.bx-wrapper .bx-loading {
|
||||
min-height: 50px;
|
||||
background: url(images/bx_loader.gif) center center no-repeat #fff;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
/* PAGER */
|
||||
|
||||
.bx-wrapper .bx-pager {
|
||||
text-align: center;
|
||||
font-size: .85em;
|
||||
font-family: Arial;
|
||||
font-weight: bold;
|
||||
color: #666;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-pager .bx-pager-item,
|
||||
.bx-wrapper .bx-controls-auto .bx-controls-auto-item {
|
||||
display: inline-block;
|
||||
*zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-pager.bx-default-pager a {
|
||||
|
||||
text-indent: -9999px;
|
||||
display: block;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border:1px solid rgba(10,10,10, 0.6);
|
||||
margin: 0 5px;
|
||||
outline: 0;
|
||||
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-pager.bx-default-pager a:hover,
|
||||
.bx-wrapper .bx-pager.bx-default-pager a.active {
|
||||
background: rgba(10,10,10, 0.6);
|
||||
border:1px solid rgba(10,10,10, 0);
|
||||
|
||||
}
|
||||
|
||||
/* DIRECTION CONTROLS (NEXT / PREV) */
|
||||
|
||||
.bx-wrapper .bx-prev {
|
||||
left: 10px;
|
||||
background: url(images/controls.png) no-repeat 0 -32px;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-next {
|
||||
right: 10px;
|
||||
background: url(images/controls.png) no-repeat -43px -32px;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-prev:hover {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-next:hover {
|
||||
background-position: -43px 0;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-controls-direction a {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -16px;
|
||||
outline: 0;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
text-indent: -9999px;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-controls-direction a.disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* AUTO CONTROLS (START / STOP) */
|
||||
|
||||
.bx-wrapper .bx-controls-auto {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-controls-auto .bx-start {
|
||||
display: block;
|
||||
text-indent: -9999px;
|
||||
width: 10px;
|
||||
height: 11px;
|
||||
outline: 0;
|
||||
background: url(images/controls.png) -86px -11px no-repeat;
|
||||
margin: 0 3px;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-controls-auto .bx-start:hover,
|
||||
.bx-wrapper .bx-controls-auto .bx-start.active {
|
||||
background-position: -86px 0;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-controls-auto .bx-stop {
|
||||
display: block;
|
||||
text-indent: -9999px;
|
||||
width: 9px;
|
||||
height: 11px;
|
||||
outline: 0;
|
||||
background: url(images/controls.png) -86px -44px no-repeat;
|
||||
margin: 0 3px;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-controls-auto .bx-stop:hover,
|
||||
.bx-wrapper .bx-controls-auto .bx-stop.active {
|
||||
background-position: -86px -33px;
|
||||
}
|
||||
|
||||
/* PAGER WITH AUTO-CONTROLS HYBRID LAYOUT */
|
||||
|
||||
.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-pager {
|
||||
text-align: left;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-controls-auto {
|
||||
right: 0;
|
||||
width: 35px;
|
||||
}
|
||||
|
||||
/* IMAGE CAPTIONS */
|
||||
|
||||
.bx-wrapper .bx-caption {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background: #666\9;
|
||||
background: rgba(80, 80, 80, 0.75);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.bx-wrapper .bx-caption span {
|
||||
color: #fff;
|
||||
font-family: Arial;
|
||||
display: block;
|
||||
font-size: .85em;
|
||||
padding: 10px;
|
||||
}
|
154
app/assets/stylesheets/lightSlider.css
Executable file
@ -0,0 +1,154 @@
|
||||
/** /!!! core css Should not edit !!!/**/
|
||||
|
||||
.csSlideOuter {
|
||||
overflow: hidden;
|
||||
}
|
||||
.lightSlider:before, .lightSlider:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
.csSlideWrapper > .lightSlider:after {
|
||||
clear: both;
|
||||
}
|
||||
.csSlideWrapper .csSlide {
|
||||
-webkit-transform: translate(0px, 0px);
|
||||
-ms-transform: translate(0px, 0px);
|
||||
transform: translate(0px, 0px);
|
||||
-webkit-transition: all 1s;
|
||||
transition: all 1s;
|
||||
-webkit-transition-duration: inherit;
|
||||
transition-duration: inherit;
|
||||
-webkit-transition-timing-function: inherit;
|
||||
transition-timing-function: inherit;
|
||||
}
|
||||
.csSlideWrapper .csFade {
|
||||
position: relative;
|
||||
}
|
||||
.csSlideWrapper .csFade > * {
|
||||
position: absolute !important;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.csSlideWrapper.usingCss .csFade > * {
|
||||
opacity: 0;
|
||||
-webkit-transition-delay: 0s;
|
||||
transition-delay: 0s;
|
||||
-webkit-transition-duration: inherit;
|
||||
transition-duration: inherit;
|
||||
-webkit-transition-property: opacity;
|
||||
transition-property: opacity;
|
||||
-webkit-transition-timing-function: inherit;
|
||||
transition-timing-function: inherit;
|
||||
}
|
||||
.csSlideWrapper .csFade > *.active {
|
||||
z-index: 10;
|
||||
}
|
||||
.csSlideWrapper.usingCss .csFade > *.active {
|
||||
opacity: 1;
|
||||
}
|
||||
/** /!!! End of core css Should not edit !!!/**/
|
||||
|
||||
/* Pager */
|
||||
.csSlideOuter .csPager.cSpg {
|
||||
margin: 10px 0 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
}
|
||||
.csSlideOuter .csPager.cSpg > li {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
padding: 0 5px;
|
||||
}
|
||||
.csSlideOuter .csPager.cSpg > li a {
|
||||
background-color: #222222;
|
||||
border-radius: 30px;
|
||||
display: inline-block;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
text-indent: -999em;
|
||||
width: 8px;
|
||||
position: relative;
|
||||
z-index: 99;
|
||||
-webkit-transition: all 0.5s linear 0s;
|
||||
transition: all 0.5s linear 0s;
|
||||
}
|
||||
.csSlideOuter .csPager.cSpg > li:hover a, .csSlideOuter .csPager.cSpg > li.active a {
|
||||
background-color: #428bca;
|
||||
}
|
||||
.csSlideOuter .media {
|
||||
opacity: 0.8;
|
||||
}
|
||||
.csSlideOuter .media.active {
|
||||
opacity: 1;
|
||||
}
|
||||
/* End of pager */
|
||||
|
||||
/** Gallery */
|
||||
.csSlideOuter .csPager.cSGallery {
|
||||
list-style: none outside none;
|
||||
padding-left: 0;
|
||||
margin: 0;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.csSlideOuter .csPager.cSGallery li {
|
||||
opacity: 0.7;
|
||||
-webkit-transition: opacity 0.35s linear 0s;
|
||||
transition: opacity 0.35s linear 0s;
|
||||
}
|
||||
.csSlideOuter .csPager.cSGallery li.active, .csSlideOuter .csPager.cSGallery li:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
.csSlideOuter .csPager.cSGallery img {
|
||||
display: block;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
.csSlideOuter .csPager.cSGallery:before, .csSlideOuter .csPager.cSGallery:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
.csSlideOuter .csPager.cSGallery:after {
|
||||
clear: both;
|
||||
}
|
||||
/* End of Gallery*/
|
||||
|
||||
/* slider actions */
|
||||
.csAction > a {
|
||||
width: 32px;
|
||||
display: block;
|
||||
top: 50%;
|
||||
height: 32px;
|
||||
background-image: url('../img/controls.png');
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
margin-top: -16px;
|
||||
opacity: 0.5;
|
||||
-webkit-transition: opacity 0.35s linear 0s;
|
||||
transition: opacity 0.35s linear 0s;
|
||||
}
|
||||
.csAction > a:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
.csAction > .csPrev {
|
||||
background-position: 0 0;
|
||||
left: 10px;
|
||||
}
|
||||
.csAction > .csNext {
|
||||
background-position: -32px 0;
|
||||
right: 10px;
|
||||
}
|
||||
.cS-hidden {
|
||||
height: 1px;
|
||||
opacity: 0;
|
||||
filter: alpha(opacity=0);
|
||||
overflow: hidden;
|
||||
}
|
65
app/assets/stylesheets/superslides.css
Executable file
@ -0,0 +1,65 @@
|
||||
#slides {
|
||||
position: relative;
|
||||
}
|
||||
#slides .slides-container {
|
||||
display: none;
|
||||
}
|
||||
#slides .scrollable {
|
||||
*zoom: 1;
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
height: 100%;
|
||||
}
|
||||
#slides .scrollable:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.slides-navigation {
|
||||
margin: 0 auto;
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
top: 46%;
|
||||
width: 100%;
|
||||
}
|
||||
.slides-navigation a {
|
||||
position: absolute;
|
||||
display: block;
|
||||
}
|
||||
.slides-navigation a.prev {
|
||||
left: 0;
|
||||
}
|
||||
.slides-navigation a.next {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.slides-pagination {
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
bottom: 0;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.slides-pagination a {
|
||||
border: 2px solid #222;
|
||||
border-radius: 15px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
display: -moz-inline-stack;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEAAAAASUVORK5CYII=");
|
||||
margin: 2px;
|
||||
overflow: hidden;
|
||||
text-indent: -100%;
|
||||
}
|
||||
.slides-pagination a.current {
|
||||
background: #222;
|
||||
}
|
3
app/assets/stylesheets/welcome.css.scss
Normal file
@ -0,0 +1,3 @@
|
||||
// Place all the styles related to the welcome controller here.
|
||||
// They will automatically be included in application.css.
|
||||
// You can use Sass (SCSS) here: http://sass-lang.com/
|
5
app/controllers/application_controller.rb
Normal file
@ -0,0 +1,5 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
# Prevent CSRF attacks by raising an exception.
|
||||
# For APIs, you may want to use :null_session instead.
|
||||
protect_from_forgery with: :exception
|
||||
end
|
0
app/controllers/concerns/.keep
Normal file
5
app/controllers/welcome_controller.rb
Normal file
@ -0,0 +1,5 @@
|
||||
class WelcomeController < ApplicationController
|
||||
def index
|
||||
render :layout => false
|
||||
end
|
||||
end
|
2
app/helpers/application_helper.rb
Normal file
@ -0,0 +1,2 @@
|
||||
module ApplicationHelper
|
||||
end
|
2
app/helpers/welcome_helper.rb
Normal file
@ -0,0 +1,2 @@
|
||||
module WelcomeHelper
|
||||
end
|
0
app/mailers/.keep
Normal file
0
app/models/.keep
Normal file
0
app/models/concerns/.keep
Normal file
BIN
app/views/.DS_Store
vendored
Normal file
14
app/views/layouts/application.html.erb
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>AdsApp</title>
|
||||
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
|
||||
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
|
||||
<%= csrf_meta_tags %>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<%= yield %>
|
||||
|
||||
</body>
|
||||
</html>
|
337
app/views/welcome/index.html.haml
Normal file
@ -0,0 +1,337 @@
|
||||
!!!
|
||||
%html
|
||||
%head
|
||||
%meta{charset: "utf-8"}/
|
||||
%title Art des sens
|
||||
|
||||
= javascript_include_tag "application"
|
||||
|
||||
= csrf_meta_tag
|
||||
|
||||
= stylesheet_link_tag 'application'
|
||||
|
||||
|
||||
%body
|
||||
#home
|
||||
=image_tag "/logo.png", :id => "logo"
|
||||
#baseline=image_tag "/baseline.png", :id => ""
|
||||
.slider
|
||||
|
||||
|
||||
.wide-container
|
||||
#slides
|
||||
%ul.slides-container
|
||||
%li
|
||||
%img{alt: "", src: "images/01.jpg"}/
|
||||
%li
|
||||
%img{alt: "Cinelli", src: "images/02.jpg"}/
|
||||
%li
|
||||
%img{alt: "Cinelli", src: "images/03.jpg"}/
|
||||
%li
|
||||
%img{alt: "Cinelli", src: "images/04.jpg"}/
|
||||
|
||||
%nav.slides-navigation
|
||||
%a.next{href: "#"} Next
|
||||
%a.prev{href: "#"} Previous
|
||||
|
||||
#menu-container
|
||||
#menu
|
||||
=link_to image_tag("/logo-min.png", :id => "logo-min"), "#home", :onclick => "scrollToAnchor('home');return false;"
|
||||
=link_to "Société", "#about", :onclick => "scrollToAnchor('about');return false;"
|
||||
=link_to raw("Cristal Protect<sup>®</sup>"), "#cristal-protect", :onclick => "scrollToAnchor('cristal-protect');return false;"
|
||||
=link_to raw("MyStrat<sup>®</sup>"), "#my-strat", :onclick => "scrollToAnchor('my-strat');return false;"
|
||||
=link_to "Idées", "#brainstorming", :onclick => "scrollToAnchor('brainstorming');return false;"
|
||||
=link_to "Réalisations", "#realisations", :onclick => "scrollToAnchor('realisations');return false;"
|
||||
=link_to "Contact", "#contact", :onclick => "scrollToAnchor('contact');return false;"
|
||||
|
||||
|
||||
#main
|
||||
#about
|
||||
.center
|
||||
%h2
|
||||
Art des Sens, solutions décoratives personnalisées
|
||||
%br
|
||||
pour l’agencement, la décoration et la signalétique
|
||||
%p
|
||||
|
||||
Fort d’une expérience de plus de onze années dans les différentes technologies d’impression numérique, la société
|
||||
Art des Sens
|
||||
est spécialisée dans la commercialisation de supports imprimés, résistants aux agressions extérieures (UV, rayures, graffitis…)
|
||||
%p
|
||||
Mais au-delà de la fourniture de panneaux imprimés, selon vos besoins,
|
||||
|
||||
Art des Sens
|
||||
|
||||
vous accompagnera dans l’étude, la conception, la fabrication et la pose de vos projets.
|
||||
%p Ensemble, concrétisons vos idées...
|
||||
=image_tag "/sign.jpg", :style => "width:230px;float:right;padding-bottom:2em;"
|
||||
%p{:style => "clear:both;"}
|
||||
|
||||
#cristal-protect
|
||||
.center
|
||||
|
||||
|
||||
%h2 Cristal Protect<sup>®</sup>
|
||||
|
||||
=image_tag "/cristal-protect.png", :class => "icons"
|
||||
|
||||
%p Associé à la société Cris-Graphic, nous avons développé l’impression numérique haute définition pérenne.
|
||||
%p
|
||||
Notre technologie consiste à encapsuler n’importe quelle image numérique au cœur d’un vernis UV extrêmement résistant. Ce traitement apporte à l’ensemble une résistance et une durabilité d’exposition en extérieur exceptionnelles.
|
||||
|
||||
.infos
|
||||
.center
|
||||
.samples
|
||||
%ul.gal
|
||||
%li{:class => ".preserve"}
|
||||
=image_tag "/cristal-protect/01.jpg"
|
||||
|
||||
Impression sur feuille aluminium brossé pour l'EHPAD de Rungis
|
||||
%li{:class => ".preserve"}
|
||||
=image_tag "/cristal-protect/02.jpg"
|
||||
|
||||
Impression pour les sites de l'Office National des Anciens combattants
|
||||
%li{:class => ".preserve"}
|
||||
=image_tag "/cristal-protect/03.jpg"
|
||||
Inclusion numérique pour les Monuments Nationaux
|
||||
%li{:class => ".preserve"}
|
||||
=image_tag "/cristal-protect/04.jpg"
|
||||
Réalisation d'une signalétique pour le Parc de l'Oise
|
||||
|
||||
|
||||
|
||||
|
||||
%h3 Caractéristiques techniques
|
||||
%p
|
||||
Supports disponibles :
|
||||
%ul
|
||||
%li Aluminium
|
||||
%li Composite (Dibond<sup>®</sup>, Reynobond<sup>®</sup>, Alucore<sup>®</sup>, Forex<sup>®</sup>...)
|
||||
%li Verre
|
||||
%li Bois
|
||||
%p Autre supports, nous consulter.
|
||||
|
||||
%p
|
||||
Format maximum disponnible :
|
||||
%ul
|
||||
%li 4000 x 1600 mm
|
||||
|
||||
%p Epaisseur maximum : 60 mm
|
||||
|
||||
%p
|
||||
Finitions disponibles :
|
||||
%ul
|
||||
%li Mat
|
||||
%li Brillant
|
||||
|
||||
.center
|
||||
.more
|
||||
=image_tag "/more.png"
|
||||
%ul
|
||||
%li Bords tombés décorés.
|
||||
%li Découpe, façonnabge, gravure possible.
|
||||
%li Intégration de braille sur demande.
|
||||
%li Extrême résistance aux agressions extérieurs.
|
||||
%li Pas de minimum de commande.
|
||||
|
||||
|
||||
|
||||
#my-strat
|
||||
.center
|
||||
|
||||
|
||||
%h2
|
||||
MyStrat<sup>®</sup>
|
||||
|
||||
|
||||
=image_tag "/my-strat.png", :class => "icons"
|
||||
|
||||
|
||||
%p
|
||||
|
||||
Grâce à son exceptionnelle tenue en extérieur, sa résistance aux agressions UV garantie 10 ans, sa résistance aux rayures et graffitits, notre stratifié décoratif fabriqué par notre partenaire le Groupe Formica<sup>®</sup> est un matériau incontournable pour une application intérieur ou extérieure dans les domaines de l'agencement, de la signalétique et de la décoration.
|
||||
|
||||
|
||||
|
||||
|
||||
.infos
|
||||
.center
|
||||
|
||||
.samples
|
||||
%ul.gal
|
||||
%li{:class => ".preserve"}
|
||||
=image_tag "/mystrat/01.jpg", :class => ".preserve"
|
||||
|
||||
Découpe de lettres en stratifié
|
||||
%li{:class => ".preserve"}
|
||||
=image_tag "/mystrat/02.jpg", :class => ".preserve"
|
||||
|
||||
Panneau en stratifié numérique & structure.
|
||||
%li{:class => ".preserve"}
|
||||
=image_tag "/mystrat/03.jpg", :class => ".preserve"
|
||||
|
||||
Habillage de DAB en panneaux décorés.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%h3 Caractéristiques techniques
|
||||
%p
|
||||
Formats maximum disponibles :
|
||||
%ul
|
||||
%li 2440 x 1220 mm
|
||||
%li 3050 x 1300 mm
|
||||
%li 3660 x 1525 mm
|
||||
|
||||
%p
|
||||
Epaisseurs disponnibles :
|
||||
%p
|
||||
0,7mm, 3mm, 6mm, 8mm, 10mm et 20mm.
|
||||
%br/
|
||||
Autre épaisseurs, nous consulter.
|
||||
|
||||
%p
|
||||
Finitions disponibles :
|
||||
%ul
|
||||
%li Matte
|
||||
%li Brillant
|
||||
%p
|
||||
Impression recto/verso possible, nous consulter.
|
||||
|
||||
.center
|
||||
.more
|
||||
|
||||
=image_tag "/more.png"
|
||||
%ul
|
||||
%li Garantie 10 ans en extérieur.
|
||||
%li Découpe, façonnabge, gravure possible.
|
||||
%li Intégration de braille sur demande
|
||||
%li Extrême résistance aux agressions extérieurs
|
||||
%li Pas de minimum de commande
|
||||
.clear
|
||||
#brainstorming
|
||||
.center
|
||||
%h2.brain-title
|
||||
Art des Sens concrétise vos idées
|
||||
<div id="myCanvasContainer">
|
||||
<canvas width="1000" height="1000" id="myCanvas">
|
||||
<p>Anything in here will be replaced on browsers that support the canvas element</p>
|
||||
%ul
|
||||
%li
|
||||
%a{:href => "", :onclick => "return false;"}
|
||||
Est-il possible d'intégrer mon logo dans les
|
||||
%br
|
||||
tables et les chaises de mon restaurant ?
|
||||
%li
|
||||
%a{:href => "", :onclick => "return false;"}
|
||||
Des solutions pour personnaliser ma pièce en
|
||||
%br
|
||||
imprimant le sol, les murs et le plafond ?
|
||||
%li
|
||||
%a{:href => "", :onclick => "return false;"}
|
||||
Intégrer du braille directement
|
||||
%br
|
||||
sur les panneaux
|
||||
%li
|
||||
%a{:href => "", :onclick => "return false;"}
|
||||
Imprimer les portes
|
||||
%br de mon hôtel
|
||||
%li
|
||||
%a{:href => "", :onclick => "return false;"}
|
||||
Solutions adaptées aux
|
||||
%br
|
||||
situations de handicap
|
||||
%li
|
||||
%a{:href => "", :onclick => "return false;"}
|
||||
Personnaliser la crédence
|
||||
%br
|
||||
de ma cuisine
|
||||
%li
|
||||
%a{:href => "", :onclick => "return false;"}
|
||||
Mettre en valeur l'histoire
|
||||
%br
|
||||
de ce parcours découverte
|
||||
</canvas>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
if( ! $('#myCanvas').tagcanvas({
|
||||
textColour : '#ffffff',
|
||||
outlineThickness : 1,
|
||||
depth:0.5,
|
||||
lock:"xy",
|
||||
initial: [0.1,-0.01],
|
||||
shape:"vcylinder",
|
||||
stretchX:1.5,
|
||||
stretchY:0.9,
|
||||
maxSpeed : 0.02,
|
||||
outlineMethod : "none",
|
||||
wheelZoom :false,
|
||||
textFont :"Felt Tip Roman" ,
|
||||
textHeight : 30,
|
||||
})) {
|
||||
// TagCanvas failed to load
|
||||
$('#myCanvasContainer').hide();
|
||||
}
|
||||
// your other jQuery stuff here...
|
||||
});
|
||||
</script>
|
||||
|
||||
#realisations
|
||||
|
||||
%h2 Exemples de réalisations
|
||||
|
||||
#rea-gal
|
||||
-(1..10).each do |i|
|
||||
=link_to image_tag("/realisation/#{i}-p.jpg"), "/realisation/#{i}.jpg"
|
||||
.clear
|
||||
#contact
|
||||
.center
|
||||
%h2 Prenons contact
|
||||
%p
|
||||
N'hésitez pas à nous contacter pour nous parler de votre projet !
|
||||
%p
|
||||
=image_tag "/logo-couleurs.png", :style => "width:300px;"
|
||||
%br
|
||||
%strong Thomas Blanc-Brude
|
||||
%br
|
||||
296 rue de la Béalière
|
||||
%br
|
||||
38113 Veurey Voroize
|
||||
|
||||
%p
|
||||
Tél. +33 6 37 24 77 04
|
||||
|
||||
%p
|
||||
=link_to "contact@artdessens.fr", "mailto:contact@artdessens.fr"
|
||||
|
||||
=link_to image_tag( "/nb.png", :style => "float:right;margin-right:20px;margin-bottom:20px;margin-top:2em; width:20px;"), "http://nicolasbally.com", :target => "_blank"
|
||||
.clear
|
||||
:javascript
|
||||
$(function() {
|
||||
$('#slides').superslides({
|
||||
inherit_width_from: '.wide-container',
|
||||
inherit_height_from: '.wide-container',
|
||||
animation: 'fade',
|
||||
play :4000,
|
||||
animation_speed : "slow"
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
:coffeescript
|
||||
$("body").on "click", ->
|
||||
|
||||
$(".wide-container").css("max-width","2000px")
|
3
bin/bundle
Executable file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env ruby
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||
load Gem.bin_path('bundler', 'bundle')
|
8
bin/rails
Executable file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env ruby
|
||||
begin
|
||||
load File.expand_path("../spring", __FILE__)
|
||||
rescue LoadError
|
||||
end
|
||||
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
||||
require_relative '../config/boot'
|
||||
require 'rails/commands'
|
8
bin/rake
Executable file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env ruby
|
||||
begin
|
||||
load File.expand_path("../spring", __FILE__)
|
||||
rescue LoadError
|
||||
end
|
||||
require_relative '../config/boot'
|
||||
require 'rake'
|
||||
Rake.application.run
|
18
bin/spring
Executable file
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
# This file loads spring without using Bundler, in order to be fast
|
||||
# It gets overwritten when you run the `spring binstub` command
|
||||
|
||||
unless defined?(Spring)
|
||||
require "rubygems"
|
||||
require "bundler"
|
||||
|
||||
if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ spring \((.*?)\)$.*?^$/m)
|
||||
ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
|
||||
ENV["GEM_HOME"] = ""
|
||||
Gem.paths = ENV
|
||||
|
||||
gem "spring", match[1]
|
||||
require "spring/binstub"
|
||||
end
|
||||
end
|
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 Rails.application
|
23
config/application.rb
Normal file
@ -0,0 +1,23 @@
|
||||
require File.expand_path('../boot', __FILE__)
|
||||
|
||||
require 'rails/all'
|
||||
|
||||
# Require the gems listed in Gemfile, including any gems
|
||||
# you've limited to :test, :development, or :production.
|
||||
Bundler.require(*Rails.groups)
|
||||
|
||||
module AdsApp
|
||||
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.
|
||||
|
||||
# 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
|
||||
end
|
||||
end
|
4
config/boot.rb
Normal file
@ -0,0 +1,4 @@
|
||||
# Set up gems listed in the Gemfile.
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||
|
||||
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
25
config/database.yml
Normal file
@ -0,0 +1,25 @@
|
||||
# SQLite version 3.x
|
||||
# gem install sqlite3
|
||||
#
|
||||
# Ensure the SQLite 3 gem is defined in your Gemfile
|
||||
# gem 'sqlite3'
|
||||
#
|
||||
default: &default
|
||||
adapter: sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
|
||||
development:
|
||||
<<: *default
|
||||
database: db/development.sqlite3
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test:
|
||||
<<: *default
|
||||
database: db/test.sqlite3
|
||||
|
||||
production:
|
||||
<<: *default
|
||||
database: db/production.sqlite3
|
5
config/environment.rb
Normal file
@ -0,0 +1,5 @@
|
||||
# Load the Rails application.
|
||||
require File.expand_path('../application', __FILE__)
|
||||
|
||||
# Initialize the Rails application.
|
||||
Rails.application.initialize!
|
37
config/environments/development.rb
Normal file
@ -0,0 +1,37 @@
|
||||
Rails.application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb.
|
||||
|
||||
# In the development environment your application's code is reloaded on
|
||||
# every request. This slows down response time but is perfect for development
|
||||
# since you don't have to restart the web server when you make code changes.
|
||||
config.cache_classes = false
|
||||
|
||||
# Do not eager load code on boot.
|
||||
config.eager_load = false
|
||||
|
||||
# Show full error reports 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
|
||||
|
||||
# Raise an error on page load if there are pending migrations.
|
||||
config.active_record.migration_error = :page_load
|
||||
|
||||
# Debug mode disables concatenation and preprocessing of assets.
|
||||
# This option may cause significant delays in view rendering with a large
|
||||
# number of complex assets.
|
||||
config.assets.debug = true
|
||||
|
||||
# Adds additional error checking when serving assets at runtime.
|
||||
# Checks for improperly declared sprockets dependencies.
|
||||
# Raises helpful error messages.
|
||||
config.assets.raise_runtime_errors = true
|
||||
|
||||
# Raises error for missing translations
|
||||
# config.action_view.raise_on_missing_translations = true
|
||||
end
|
82
config/environments/production.rb
Normal file
@ -0,0 +1,82 @@
|
||||
Rails.application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb.
|
||||
|
||||
# Code is not reloaded between requests.
|
||||
config.cache_classes = true
|
||||
|
||||
# Eager load code on boot. This eager loads most of Rails and
|
||||
# your application in memory, allowing both threaded web servers
|
||||
# and those relying on copy on write to perform better.
|
||||
# Rake tasks automatically ignore this option for performance.
|
||||
config.eager_load = true
|
||||
|
||||
# Full error reports are disabled and caching is turned on.
|
||||
config.consider_all_requests_local = false
|
||||
config.action_controller.perform_caching = true
|
||||
|
||||
# Enable Rack::Cache to put a simple HTTP cache in front of your application
|
||||
# Add `rack-cache` to your Gemfile before enabling this.
|
||||
# For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
|
||||
# config.action_dispatch.rack_cache = 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.js_compressor = :uglifier
|
||||
# config.assets.css_compressor = :sass
|
||||
|
||||
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
||||
config.assets.compile = false
|
||||
|
||||
# Generate digests for assets URLs.
|
||||
config.assets.digest = true
|
||||
|
||||
# `config.assets.precompile` has moved to config/initializers/assets.rb
|
||||
|
||||
# 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
|
||||
|
||||
# Set to :debug to see everything in the log.
|
||||
config.log_level = :info
|
||||
|
||||
# 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 in app/assets folder are already added.
|
||||
# config.assets.precompile += %w( search.js )
|
||||
|
||||
# Ignore bad email addresses and do not raise email delivery errors.
|
||||
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
||||
# config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||
# the I18n.default_locale when a translation cannot be found).
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# Send deprecation notices to registered listeners.
|
||||
config.active_support.deprecation = :notify
|
||||
|
||||
# Disable automatic flushing of the log to improve performance.
|
||||
# config.autoflush_log = false
|
||||
|
||||
# Use default logging formatter so that PID and timestamp are not suppressed.
|
||||
config.log_formatter = ::Logger::Formatter.new
|
||||
|
||||
# Do not dump schema after migrations.
|
||||
config.active_record.dump_schema_after_migration = false
|
||||
end
|
39
config/environments/test.rb
Normal file
@ -0,0 +1,39 @@
|
||||
Rails.application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb.
|
||||
|
||||
# The test environment is used exclusively to run your application's
|
||||
# test suite. You never need to work with it otherwise. Remember that
|
||||
# your test database is "scratch space" for the test suite and is wiped
|
||||
# and recreated between test runs. Don't rely on the data there!
|
||||
config.cache_classes = true
|
||||
|
||||
# Do not eager load code on boot. This avoids loading your whole application
|
||||
# just for the purpose of running a single test. If you are using a tool that
|
||||
# preloads Rails for running tests, you may have to set it to true.
|
||||
config.eager_load = false
|
||||
|
||||
# Configure static asset server for tests with Cache-Control for performance.
|
||||
config.serve_static_assets = true
|
||||
config.static_cache_control = 'public, max-age=3600'
|
||||
|
||||
# Show full error reports and disable caching.
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Raise exceptions instead of rendering exception templates.
|
||||
config.action_dispatch.show_exceptions = false
|
||||
|
||||
# Disable request forgery protection in test environment.
|
||||
config.action_controller.allow_forgery_protection = false
|
||||
|
||||
# Tell Action Mailer not to deliver emails to the real world.
|
||||
# The :test delivery method accumulates sent emails in the
|
||||
# ActionMailer::Base.deliveries array.
|
||||
config.action_mailer.delivery_method = :test
|
||||
|
||||
# Print deprecation notices to the stderr.
|
||||
config.active_support.deprecation = :stderr
|
||||
|
||||
# Raises error for missing translations
|
||||
# config.action_view.raise_on_missing_translations = true
|
||||
end
|
8
config/initializers/assets.rb
Normal file
@ -0,0 +1,8 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets.
|
||||
Rails.application.config.assets.version = '1.0'
|
||||
|
||||
# Precompile additional assets.
|
||||
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
||||
# Rails.application.config.assets.precompile += %w( search.js )
|
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!
|
3
config/initializers/cookies_serializer.rb
Normal file
@ -0,0 +1,3 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
Rails.application.config.action_dispatch.cookies_serializer = :json
|
4
config/initializers/filter_parameter_logging.rb
Normal file
@ -0,0 +1,4 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Configure sensitive parameters which will be filtered from the log file.
|
||||
Rails.application.config.filter_parameters += [:password]
|
16
config/initializers/inflections.rb
Normal file
@ -0,0 +1,16 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Add new inflection rules using the following format. Inflections
|
||||
# are locale specific, and you may define rules for as many different
|
||||
# locales as you wish. All of these examples are active by default:
|
||||
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||
# inflect.plural /^(ox)$/i, '\1en'
|
||||
# inflect.singular /^(ox)en/i, '\1'
|
||||
# inflect.irregular 'person', 'people'
|
||||
# inflect.uncountable %w( fish sheep )
|
||||
# end
|
||||
|
||||
# These inflection rules are supported but not enabled by default:
|
||||
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||
# inflect.acronym 'RESTful'
|
||||
# end
|
4
config/initializers/mime_types.rb
Normal file
@ -0,0 +1,4 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Add new mime types for use in respond_to blocks:
|
||||
# Mime::Type.register "text/richtext", :rtf
|
3
config/initializers/session_store.rb
Normal file
@ -0,0 +1,3 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
Rails.application.config.session_store :cookie_store, key: '_ads_app_session'
|
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] if respond_to?(:wrap_parameters)
|
||||
end
|
||||
|
||||
# To enable root element in JSON for ActiveRecord objects.
|
||||
# ActiveSupport.on_load(:active_record) do
|
||||
# self.include_root_in_json = true
|
||||
# end
|
23
config/locales/en.yml
Normal file
@ -0,0 +1,23 @@
|
||||
# Files in the config/locales directory are used for internationalization
|
||||
# and are automatically loaded by Rails. If you want to use locales other
|
||||
# than English, add the necessary files in this directory.
|
||||
#
|
||||
# To use the locales, use `I18n.t`:
|
||||
#
|
||||
# I18n.t 'hello'
|
||||
#
|
||||
# In views, this is aliased to just `t`:
|
||||
#
|
||||
# <%= t('hello') %>
|
||||
#
|
||||
# To use a different locale, set it with `I18n.locale`:
|
||||
#
|
||||
# I18n.locale = :es
|
||||
#
|
||||
# This would use the information in config/locales/es.yml.
|
||||
#
|
||||
# To learn more, please read the Rails Internationalization guide
|
||||
# available at http://guides.rubyonrails.org/i18n.html.
|
||||
|
||||
en:
|
||||
hello: "Hello world"
|
58
config/routes.rb
Normal file
@ -0,0 +1,58 @@
|
||||
Rails.application.routes.draw do
|
||||
get 'welcome/index'
|
||||
|
||||
# The priority is based upon order of creation: first created -> highest priority.
|
||||
# See how all your routes lay out with "rake routes".
|
||||
|
||||
# You can have the root of your site routed with "root"
|
||||
root 'welcome#index'
|
||||
|
||||
# Example of regular route:
|
||||
# get 'products/:id' => 'catalog#view'
|
||||
|
||||
# Example of named route that can be invoked with purchase_url(id: product.id)
|
||||
# get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
|
||||
|
||||
# Example resource route (maps HTTP verbs to controller actions automatically):
|
||||
# resources :products
|
||||
|
||||
# Example resource route with options:
|
||||
# resources :products do
|
||||
# member do
|
||||
# get 'short'
|
||||
# post 'toggle'
|
||||
# end
|
||||
#
|
||||
# collection do
|
||||
# get 'sold'
|
||||
# end
|
||||
# end
|
||||
|
||||
# Example resource route with sub-resources:
|
||||
# resources :products do
|
||||
# resources :comments, :sales
|
||||
# resource :seller
|
||||
# end
|
||||
|
||||
# Example resource route with more complex sub-resources:
|
||||
# resources :products do
|
||||
# resources :comments
|
||||
# resources :sales do
|
||||
# get 'recent', on: :collection
|
||||
# end
|
||||
# end
|
||||
|
||||
# Example resource route with concerns:
|
||||
# concern :toggleable do
|
||||
# post 'toggle'
|
||||
# end
|
||||
# resources :posts, concerns: :toggleable
|
||||
# resources :photos, concerns: :toggleable
|
||||
|
||||
# Example resource route within a namespace:
|
||||
# namespace :admin do
|
||||
# # Directs /admin/products/* to Admin::ProductsController
|
||||
# # (app/controllers/admin/products_controller.rb)
|
||||
# resources :products
|
||||
# end
|
||||
end
|
22
config/secrets.yml
Normal file
@ -0,0 +1,22 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Your secret key is used for verifying the integrity of signed cookies.
|
||||
# If you change this key, all old signed cookies will become invalid!
|
||||
|
||||
# Make sure the secret is at least 30 characters and all random,
|
||||
# no regular words or you'll be exposed to dictionary attacks.
|
||||
# You can use `rake secret` to generate a secure secret key.
|
||||
|
||||
# Make sure the secrets in this file are kept private
|
||||
# if you're sharing your code publicly.
|
||||
|
||||
development:
|
||||
secret_key_base: 36a7530d8616b7e291ae7a27f82f5709535d1a94664257429cb94f296d23155e7715e7025770b25a9f490bc6d29c25daf64ecb2c3b5115bbab30d017c0d535f2
|
||||
|
||||
test:
|
||||
secret_key_base: 036d36e22b059c5879d518cba92c2a699d169fb8b1b6854879d8397bcf598a587e55c46f1e3c6f23a6b2bb82b0e5a4ea17a98e4937cccd221307bf5ac86aa7de
|
||||
|
||||
# Do not keep production secrets in the repository,
|
||||
# instead read values from the environment.
|
||||
production:
|
||||
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
|
7
db/seeds.rb
Normal file
@ -0,0 +1,7 @@
|
||||
# This file should contain all the record creation needed to seed the database with its default values.
|
||||
# The data can then be loaded with the 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)
|
0
lib/assets/.keep
Normal file
0
lib/tasks/.keep
Normal file
BIN
public/.DS_Store
vendored
Normal file
67
public/404.html
Normal file
@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The page you were looking for doesn't exist (404)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/404.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>The page you were looking for doesn't exist.</h1>
|
||||
<p>You may have mistyped the address or the page may have moved.</p>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
67
public/422.html
Normal file
@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The change you wanted was rejected (422)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/422.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>The change you wanted was rejected.</h1>
|
||||
<p>Maybe you tried to change something you didn't have access to.</p>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
66
public/500.html
Normal file
@ -0,0 +1,66 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>We're sorry, but something went wrong (500)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/500.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>We're sorry, but something went wrong.</h1>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
BIN
public/Sans titre - 2.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
public/ardoise.jpg
Normal file
After Width: | Height: | Size: 702 KiB |
BIN
public/arrow-next.png
Executable file
After Width: | Height: | Size: 3.2 KiB |
BIN
public/arrow-prev.png
Executable file
After Width: | Height: | Size: 3.1 KiB |
BIN
public/baseline.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
public/controls.png
Executable file
After Width: | Height: | Size: 2.1 KiB |
BIN
public/cristal-protect.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
public/cristal-protect/.DS_Store
vendored
Normal file
BIN
public/cristal-protect/01.jpg
Normal file
After Width: | Height: | Size: 508 KiB |
BIN
public/cristal-protect/02.jpg
Normal file
After Width: | Height: | Size: 2.8 MiB |
BIN
public/cristal-protect/02.png
Normal file
After Width: | Height: | Size: 3.6 MiB |
BIN
public/cristal-protect/03.jpg
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
public/cristal-protect/04.jpg
Normal file
After Width: | Height: | Size: 1.5 MiB |
0
public/favicon.ico
Normal file
BIN
public/images/.DS_Store
vendored
Normal file
BIN
public/images/01.jpg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
public/images/02.jpg
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
public/images/03.jpg
Normal file
After Width: | Height: | Size: 351 KiB |
BIN
public/images/04.jpg
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
public/images/bx_loader.gif
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
public/images/controls.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
public/images/old/01 - copie.jpg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
public/images/old/02 - copie.jpg
Normal file
After Width: | Height: | Size: 2.0 MiB |
BIN
public/images/old/03 - copie.jpg
Normal file
After Width: | Height: | Size: 3.1 MiB |
BIN
public/images/old/04 - copie.jpg
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
public/images/old/05 - copie.jpg
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
public/images/à tester/.DS_Store
vendored
Normal file
BIN
public/images/à tester/02.jpg
Normal file
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 96 KiB |
BIN
public/img/controls.png
Executable file
After Width: | Height: | Size: 2.1 KiB |
BIN
public/logo-couleurs.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
public/logo-min..png
Normal file
After Width: | Height: | Size: 9.6 KiB |