Merge branch 'staging'

This commit is contained in:
Xavier J 2017-01-03 10:48:19 +01:00
commit 7709d38bb4
435 changed files with 7123 additions and 3610 deletions

1
.gitignore vendored
View file

@ -25,6 +25,7 @@ public/uploads
public/downloads public/downloads
bin/* bin/*
config/initializers/token.rb config/initializers/token.rb
config/initializers/super_admin.rb
doc/*.svg doc/*.svg
rubocop.html rubocop.html
config/france_connect.yml config/france_connect.yml

44
Gemfile
View file

@ -1,22 +1,23 @@
source 'https://rubygems.org' source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.7.1' gem 'rails', '5.0.0.1'
gem 'actioncable', '5.0.0.1'
gem 'redis'
# Use SCSS for stylesheets # Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0' gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets # Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0' gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes # See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library # Use jquery as the JavaScript library
gem 'jquery-rails' gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks' gem 'turbolinks', '~> 2.5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0' gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api. # bundle exec rake doc:rails generates the API under doc/api.
@ -47,10 +48,11 @@ gem 'bootstrap-sass', '~> 3.3.5'
gem 'will_paginate-bootstrap' gem 'will_paginate-bootstrap'
# Decorators # Decorators
gem 'draper' gem 'draper', '~> 3.0.0.pre1'
gem 'unicode_utils'
#Gestion des comptes utilisateurs #Gestion des comptes utilisateurs
gem 'devise', '~> 3.0' gem 'devise'
gem 'openid_connect' gem 'openid_connect'
gem 'rest-client' gem 'rest-client'
@ -83,13 +85,12 @@ gem 'mailjet'
gem "smart_listing" gem "smart_listing"
# gem 'css_splitter'
gem 'bootstrap-wysihtml5-rails', '~> 0.3.3.8' gem 'bootstrap-wysihtml5-rails', '~> 0.3.3.8'
gem 'as_csv' gem 'as_csv'
gem 'spreadsheet_architect' gem 'spreadsheet_architect'
gem 'apipie-rails', '=0.3.1' gem 'apipie-rails'
gem "maruku" # for Markdown support in apipie gem "maruku" # for Markdown support in apipie
gem 'openstack' gem 'openstack'
@ -98,6 +99,7 @@ gem 'browser'
group :test do group :test do
gem 'capybara' gem 'capybara'
gem 'launchy'
gem 'factory_girl' gem 'factory_girl'
gem 'database_cleaner' gem 'database_cleaner'
gem 'selenium-webdriver' gem 'selenium-webdriver'
@ -106,14 +108,19 @@ group :test do
gem 'simplecov', require: false gem 'simplecov', require: false
gem 'poltergeist' gem 'poltergeist'
gem 'timecop' gem 'timecop'
# gem 'guard' gem 'guard'
# gem 'guard-rspec', require: false # gem 'guard-rspec', require: false
# gem 'guard-livereload', '~> 2.4', require: false gem 'guard-livereload', '~> 2.4', require: false
gem 'vcr' gem 'vcr'
gem 'rails-controller-testing'
end end
group :development do group :development do
gem 'web-console', '~> 2.0' # Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console'
gem 'rack-handlers'
end end
group :development, :test do group :development, :test do
@ -124,11 +131,9 @@ group :development, :test do
gem 'byebug' gem 'byebug'
gem 'pry-byebug' gem 'pry-byebug'
# Access an IRB console on exception pages or by using <%= console %> in views
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring' # gem 'spring'
gem 'spring-commands-rspec' # gem 'spring-commands-rspec'
gem 'rspec-rails', '~> 3.0' gem 'rspec-rails', '~> 3.0'
gem 'railroady' gem 'railroady'
@ -137,13 +142,12 @@ group :development, :test do
gem 'rubocop-checkstyle_formatter', require: false gem 'rubocop-checkstyle_formatter', require: false
gem 'rubocop-rspec', require: false gem 'rubocop-rspec', require: false
gem "nyan-cat-formatter" gem 'parallel_tests', '~> 2.10'
gem 'parallel_tests', '~> 1.9.0'
gem 'brakeman', require: false gem 'brakeman', require: false
# Deploy # Deploy
gem 'mina', git: 'https://github.com/mina-deploy/mina.git' gem 'mina', ref: '343a7', git: 'https://github.com/mina-deploy/mina.git'
end end
group :production, :staging do group :production, :staging do

View file

@ -1,154 +1,153 @@
GIT GIT
remote: https://github.com/mina-deploy/mina.git remote: https://github.com/mina-deploy/mina.git
revision: a66b55a72833b19ac0ffb240afb37c86c0227582 revision: 343a7ab672d8b4f0ddb84ec240cde7d94b46397a
ref: 343a7
specs: specs:
mina (0.3.7) mina (0.3.8)
open4 (~> 1.3.4) open4 (~> 1.3.4)
rake rake
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
CFPropertyList (2.3.2) CFPropertyList (2.3.4)
actionmailer (4.2.7.1) actioncable (5.0.0.1)
actionpack (= 4.2.7.1) actionpack (= 5.0.0.1)
actionview (= 4.2.7.1) nio4r (~> 1.2)
activejob (= 4.2.7.1) websocket-driver (~> 0.6.1)
actionmailer (5.0.0.1)
actionpack (= 5.0.0.1)
actionview (= 5.0.0.1)
activejob (= 5.0.0.1)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
actionpack (4.2.7.1) actionpack (5.0.0.1)
actionview (= 4.2.7.1) actionview (= 5.0.0.1)
activesupport (= 4.2.7.1) activesupport (= 5.0.0.1)
rack (~> 1.6) rack (~> 2.0)
rack-test (~> 0.6.2) rack-test (~> 0.6.3)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.7.1) actionview (5.0.0.1)
activesupport (= 4.2.7.1) activesupport (= 5.0.0.1)
builder (~> 3.1) builder (~> 3.1)
erubis (~> 2.7.0) erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
active_model_serializers (0.8.3) active_model_serializers (0.10.3)
activemodel (>= 3.0) actionpack (>= 4.1, < 6)
activejob (4.2.7.1) activemodel (>= 4.1, < 6)
activesupport (= 4.2.7.1) jsonapi (= 0.1.1.beta2)
globalid (>= 0.3.0) activejob (5.0.0.1)
activemodel (4.2.7.1) activesupport (= 5.0.0.1)
activesupport (= 4.2.7.1) globalid (>= 0.3.6)
activemodel (5.0.0.1)
activesupport (= 5.0.0.1)
activemodel-serializers-xml (1.0.1)
activemodel (> 5.x)
activerecord (> 5.x)
activesupport (> 5.x)
builder (~> 3.1) builder (~> 3.1)
activerecord (4.2.7.1) activerecord (5.0.0.1)
activemodel (= 4.2.7.1) activemodel (= 5.0.0.1)
activesupport (= 4.2.7.1) activesupport (= 5.0.0.1)
arel (~> 6.0) arel (~> 7.0)
activesupport (4.2.7.1) activesupport (5.0.0.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7) i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1) minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1) tzinfo (~> 1.1)
addressable (2.3.8) addressable (2.5.0)
apipie-rails (0.3.1) public_suffix (~> 2.0, >= 2.0.2)
apipie-rails (0.3.7)
json json
arel (6.0.3) arel (7.1.4)
as_csv (2.0.2) as_csv (2.0.2)
actionpack (>= 3.0) actionpack (>= 3.0)
activemodel (>= 3.0) activemodel (>= 3.0)
responders responders
ast (2.0.0) ast (2.3.0)
astrolabe (1.3.0) attr_required (1.0.1)
parser (>= 2.2.0.pre.3, < 3.0) autoprefixer-rails (6.5.4)
attr_required (1.0.0)
autoprefixer-rails (5.2.1)
execjs execjs
json
axlsx (2.0.1) axlsx (2.0.1)
htmlentities (~> 4.3.1) htmlentities (~> 4.3.1)
nokogiri (>= 1.4.1) nokogiri (>= 1.4.1)
rubyzip (~> 1.0.0) rubyzip (~> 1.0.0)
bcrypt (3.1.11) bcrypt (3.1.11)
bindata (2.1.0) bindata (2.3.4)
binding_of_caller (0.7.2) bootstrap-datepicker-rails (1.6.4.1)
debug_inspector (>= 0.0.1)
bootstrap-datepicker-rails (1.4.0)
railties (>= 3.0) railties (>= 3.0)
bootstrap-sass (3.3.5) bootstrap-sass (3.3.7)
autoprefixer-rails (>= 5.0.0.1) autoprefixer-rails (>= 5.2.1)
sass (>= 3.2.19) sass (>= 3.3.4)
bootstrap-wysihtml5-rails (0.3.3.8) bootstrap-wysihtml5-rails (0.3.3.8)
railties (>= 3.0) railties (>= 3.0)
brakeman (3.1.1) brakeman (3.4.1)
erubis (~> 2.6) browser (2.3.0)
fastercsv (~> 1.5)
haml (>= 3.0, < 5.0)
highline (~> 1.6)
multi_json (~> 1.2)
ruby2ruby (>= 2.1.1, < 2.3.0)
ruby_parser (~> 3.7.0)
sass (~> 3.0)
slim (>= 1.3.6, < 4.0)
terminal-table (~> 1.4)
browser (2.2.0)
builder (3.2.2) builder (3.2.2)
byebug (5.0.0) byebug (9.0.6)
columnize (= 0.9.0) capybara (2.11.0)
capybara (2.4.4) addressable
mime-types (>= 1.16) mime-types (>= 1.16)
nokogiri (>= 1.3.3) nokogiri (>= 1.3.3)
rack (>= 1.0.0) rack (>= 1.0.0)
rack-test (>= 0.5.4) rack-test (>= 0.5.4)
xpath (~> 2.0) xpath (~> 2.0)
carrierwave (0.10.0) carrierwave (0.11.2)
activemodel (>= 3.2.0) activemodel (>= 3.2.0)
activesupport (>= 3.2.0) activesupport (>= 3.2.0)
json (>= 1.7) json (>= 1.7)
mime-types (>= 1.16) mime-types (>= 1.16)
chartkick (1.3.2) mimemagic (>= 0.3.0)
childprocess (0.5.5) chartkick (2.2.1)
childprocess (0.5.9)
ffi (~> 1.0, >= 1.0.11) ffi (~> 1.0, >= 1.0.11)
clamav-client (3.0.0) clamav-client (3.1.0)
cliver (0.3.2) cliver (0.3.2)
coderay (1.1.0) coderay (1.1.1)
coffee-rails (4.1.0) coffee-rails (4.2.1)
coffee-script (>= 2.2.0) coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.0) railties (>= 4.0.0, < 5.2.x)
coffee-script (2.4.1) coffee-script (2.4.1)
coffee-script-source coffee-script-source
execjs execjs
coffee-script-source (1.9.1.1) coffee-script-source (1.11.1)
columnize (0.9.0)
concurrent-ruby (1.0.2) concurrent-ruby (1.0.2)
crack (0.4.2) crack (0.4.3)
safe_yaml (~> 1.0.0) safe_yaml (~> 1.0.0)
database_cleaner (1.4.1) database_cleaner (1.5.3)
debug_inspector (0.0.2) debug_inspector (0.0.2)
deep_cloneable (2.2.1) deep_cloneable (2.2.2)
activerecord (>= 3.1.0, < 5.2.0) activerecord (>= 3.1.0, < 5.2.0)
devise (3.5.10) devise (4.2.0)
bcrypt (~> 3.0) bcrypt (~> 3.0)
orm_adapter (~> 0.1) orm_adapter (~> 0.1)
railties (>= 3.2.6, < 5) railties (>= 4.1.0, < 5.1)
responders responders
thread_safe (~> 0.1)
warden (~> 1.2.3) warden (~> 1.2.3)
diff-lcs (1.2.5) diff-lcs (1.2.5)
docile (1.1.5) docile (1.1.5)
domain_name (0.5.24) domain_name (0.5.20161129)
unf (>= 0.0.5, < 1.0.0) unf (>= 0.0.5, < 1.0.0)
draper (2.1.0) draper (3.0.0.pre1)
actionpack (>= 3.0) actionpack (~> 5.0)
activemodel (>= 3.0) activemodel (~> 5.0)
activesupport (>= 3.0) activemodel-serializers-xml (~> 1.0)
activesupport (~> 5.0)
request_store (~> 1.0) request_store (~> 1.0)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
erubis (2.7.0) erubis (2.7.0)
excon (0.49.0) eventmachine (1.2.1)
excon (0.54.0)
execjs (2.7.0) execjs (2.7.0)
factory_girl (4.5.0) factory_girl (4.7.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
faraday (0.9.1) faraday (0.10.0)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
fastercsv (1.5.5) ffi (1.9.14)
ffi (1.9.6)
fission (0.5.0) fission (0.5.0)
CFPropertyList (~> 2.2) CFPropertyList (~> 2.2)
fog (1.38.0) fog (1.38.0)
@ -188,12 +187,12 @@ GEM
fog-atmos (0.1.0) fog-atmos (0.1.0)
fog-core fog-core
fog-xml fog-xml
fog-aws (0.9.2) fog-aws (1.0.0)
fog-core (~> 1.27) fog-core (~> 1.38)
fog-json (~> 1.0) fog-json (~> 1.0)
fog-xml (~> 0.1) fog-xml (~> 0.1)
ipaddress (~> 0.8) ipaddress (~> 0.8)
fog-brightbox (0.10.1) fog-brightbox (0.11.0)
fog-core (~> 1.22) fog-core (~> 1.22)
fog-json fog-json
inflecto (~> 0.0.2) inflecto (~> 0.0.2)
@ -202,7 +201,7 @@ GEM
fog-json (~> 1.0) fog-json (~> 1.0)
fog-xml (~> 0.1) fog-xml (~> 0.1)
ipaddress (~> 0.8) ipaddress (~> 0.8)
fog-core (1.38.0) fog-core (1.43.0)
builder builder
excon (~> 0.49) excon (~> 0.49)
formatador (~> 0.2) formatador (~> 0.2)
@ -220,22 +219,20 @@ GEM
fog-json (1.0.2) fog-json (1.0.2)
fog-core (~> 1.0) fog-core (~> 1.0)
multi_json (~> 1.10) multi_json (~> 1.10)
fog-local (0.3.0) fog-local (0.3.1)
fog-core (~> 1.27) fog-core (~> 1.27)
fog-openstack (0.1.5) fog-openstack (0.1.18)
fog-core (>= 1.38) fog-core (>= 1.40)
fog-json (>= 1.0) fog-json (>= 1.0)
fog-xml (>= 0.1)
ipaddress (>= 0.8) ipaddress (>= 0.8)
fog-powerdns (0.1.1) fog-powerdns (0.1.1)
fog-core (~> 1.27) fog-core (~> 1.27)
fog-json (~> 1.0) fog-json (~> 1.0)
fog-xml (~> 0.1) fog-xml (~> 0.1)
fog-profitbricks (0.0.5) fog-profitbricks (3.0.0)
fog-core fog-core (~> 1.42)
fog-xml fog-json (~> 1.0)
nokogiri fog-rackspace (0.1.2)
fog-rackspace (0.1.1)
fog-core (>= 1.35) fog-core (>= 1.35)
fog-json (>= 1.0) fog-json (>= 1.0)
fog-xml (>= 0.1) fog-xml (>= 0.1)
@ -254,7 +251,7 @@ GEM
fog-serverlove (0.1.2) fog-serverlove (0.1.2)
fog-core fog-core
fog-json fog-json
fog-softlayer (1.1.1) fog-softlayer (1.1.4)
fog-core fog-core
fog-json fog-json
fog-storm_on_demand (0.1.1) fog-storm_on_demand (0.1.1)
@ -269,21 +266,36 @@ GEM
fog-voxel (0.1.0) fog-voxel (0.1.0)
fog-core fog-core
fog-xml fog-xml
fog-vsphere (0.6.4) fog-vsphere (1.5.2)
fog-core fog-core
rbvmomi (~> 1.8) rbvmomi (~> 1.9)
fog-xenserver (0.2.3) fog-xenserver (0.2.3)
fog-core fog-core
fog-xml fog-xml
fog-xml (0.1.2) fog-xml (0.1.2)
fog-core fog-core
nokogiri (~> 1.5, >= 1.5.11) nokogiri (~> 1.5, >= 1.5.11)
font-awesome-rails (4.4.0.0) font-awesome-rails (4.7.0.1)
railties (>= 3.2, < 5.0) railties (>= 3.2, < 5.1)
formatador (0.2.5) formatador (0.2.5)
globalid (0.3.7) globalid (0.3.7)
activesupport (>= 4.1.0) activesupport (>= 4.1.0)
haml (4.0.6) guard (2.14.0)
formatador (>= 0.2.4)
listen (>= 2.7, < 4.0)
lumberjack (~> 1.0)
nenv (~> 0.1)
notiffany (~> 0.0)
pry (>= 0.9.12)
shellany (~> 0.0)
thor (>= 0.18.1)
guard-compat (1.2.1)
guard-livereload (2.5.2)
em-websocket (~> 0.5)
guard (~> 2.8)
guard-compat (~> 1.0)
multi_json (~> 1.8)
haml (4.0.7)
tilt tilt
haml-rails (0.9.0) haml-rails (0.9.0)
actionpack (>= 4.0.1) actionpack (>= 4.0.1)
@ -291,105 +303,123 @@ GEM
haml (>= 4.0.6, < 5.0) haml (>= 4.0.6, < 5.0)
html2haml (>= 1.0.1) html2haml (>= 1.0.1)
railties (>= 4.0.1) railties (>= 4.0.1)
hashie (3.4.1) hashdiff (0.3.1)
highline (1.7.8) hashie (3.4.6)
html2haml (2.0.0) html2haml (2.0.0)
erubis (~> 2.7.0) erubis (~> 2.7.0)
haml (~> 4.0.0) haml (~> 4.0.0)
nokogiri (~> 1.6.0) nokogiri (~> 1.6.0)
ruby_parser (~> 3.5) ruby_parser (~> 3.5)
htmlentities (4.3.4) htmlentities (4.3.4)
http-cookie (1.0.2) http-cookie (1.0.3)
domain_name (~> 0.5) domain_name (~> 0.5)
httpclient (2.6.0.1) http_parser.rb (0.6.0)
httpclient (2.8.3)
i18n (0.7.0) i18n (0.7.0)
inflecto (0.0.2) inflecto (0.0.2)
ipaddress (0.8.3) ipaddress (0.8.3)
jbuilder (2.3.1) jbuilder (2.6.1)
activesupport (>= 3.0.0, < 5) activesupport (>= 3.0.0, < 5.1)
multi_json (~> 1.2) multi_json (~> 1.2)
jquery-rails (4.0.4) jquery-rails (4.2.1)
rails-dom-testing (~> 1.0) rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0) railties (>= 4.2.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
json (1.8.3) json (1.8.3)
json-jwt (1.5.1) json-jwt (1.7.0)
activesupport activesupport
bindata bindata
multi_json (>= 1.3) multi_json (>= 1.3)
securecompare securecompare
url_safe_base64 url_safe_base64
kaminari (0.16.3) jsonapi (0.1.1.beta2)
json (~> 1.8)
kaminari (0.17.0)
actionpack (>= 3.0.0) actionpack (>= 3.0.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
kgio (2.9.3) kgio (2.10.0)
launchy (2.4.3)
addressable (~> 2.3)
leaflet-draw-rails (0.1.0) leaflet-draw-rails (0.1.0)
leaflet-markercluster-rails (0.7.0) leaflet-markercluster-rails (0.7.0)
railties (>= 3.1) railties (>= 3.1)
leaflet-rails (0.7.4) leaflet-rails (0.7.7)
libv8 (3.16.14.7) libv8 (3.16.14.17)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
logstash-event (1.2.02) logstash-event (1.2.02)
logstasher (0.6.5) logstasher (1.1.0)
activerecord (>= 4.0)
activesupport (>= 4.0)
logstash-event (~> 1.2.0) logstash-event (~> 1.2.0)
request_store request_store
loofah (2.0.3) loofah (2.0.3)
nokogiri (>= 1.5.9) nokogiri (>= 1.5.9)
lumberjack (1.0.10)
mail (2.6.4) mail (2.6.4)
mime-types (>= 1.16, < 4) mime-types (>= 1.16, < 4)
mailjet (1.1.0) mailjet (1.4.10)
activesupport (>= 3.1.0) activesupport (>= 3.1.0)
rack (>= 1.4.0) rack (>= 1.4.0)
rest-client rest-client
maruku (0.7.2) maruku (0.7.2)
method_source (0.8.2) method_source (0.8.2)
mime-types (2.99.2) mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mimemagic (0.3.2)
mini_portile2 (2.1.0) mini_portile2 (2.1.0)
minitest (5.9.0) minitest (5.10.1)
multi_json (1.11.2) multi_json (1.12.1)
multipart-post (2.0.0) multipart-post (2.0.0)
netrc (0.10.3) nenv (0.3.0)
nokogiri (1.6.8) netrc (0.11.0)
nio4r (1.2.1)
nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0) mini_portile2 (~> 2.1.0)
pkg-config (~> 1.1.7) notiffany (0.1.1)
nyan-cat-formatter (0.11) nenv (~> 0.1)
rspec (>= 2.99, >= 2.14.2, < 4) shellany (~> 0.0)
open4 (1.3.4) open4 (1.3.4)
openid_connect (0.9.2) openid_connect (0.12.0)
activemodel activemodel
attr_required (>= 1.0.0) attr_required (>= 1.0.0)
json (>= 1.4.3) json (>= 1.4.3)
json-jwt (>= 1.5.0) json-jwt (>= 1.5.0)
rack-oauth2 (>= 1.2.1) rack-oauth2 (>= 1.3.1)
swd (>= 1.0.0) swd (>= 1.0.0)
tzinfo tzinfo
validate_email validate_email
validate_url validate_url
webfinger (>= 1.0.1) webfinger (>= 1.0.1)
openstack (2.0.2) openstack (3.3.7)
json json
orm_adapter (0.5.0) orm_adapter (0.5.0)
parallel (1.9.0) parallel (1.10.0)
parallel_tests (1.9.0) parallel_tests (2.10.0)
parallel parallel
parser (2.2.2.2) parser (2.3.3.1)
ast (>= 1.1, < 3.0) ast (~> 2.2)
pg (0.18.2) pg (0.19.0)
pkg-config (1.1.7) poltergeist (1.12.0)
poltergeist (1.6.0)
capybara (~> 2.1) capybara (~> 2.1)
cliver (~> 0.3.1) cliver (~> 0.3.1)
multi_json (~> 1.0)
websocket-driver (>= 0.2.0) websocket-driver (>= 0.2.0)
powerpack (0.1.0) powerpack (0.1.1)
pry (0.10.1) pry (0.10.4)
coderay (~> 1.1.0) coderay (~> 1.1.0)
method_source (~> 0.8.1) method_source (~> 0.8.1)
slop (~> 3.4) slop (~> 3.4)
pry-byebug (3.2.0) pry-byebug (3.4.2)
byebug (~> 5.0) byebug (~> 9.0)
pry (~> 0.10) pry (~> 0.10)
rack (1.6.4) public_suffix (2.0.4)
rack-oauth2 (1.2.1) rack (2.0.1)
rack-handlers (0.7.3)
rack
rack-oauth2 (1.4.0)
activesupport (>= 2.3) activesupport (>= 2.3)
attr_required (>= 0.0.5) attr_required (>= 0.0.5)
httpclient (>= 2.4) httpclient (>= 2.4)
@ -397,90 +427,92 @@ GEM
rack (>= 1.1) rack (>= 1.1)
rack-test (0.6.3) rack-test (0.6.3)
rack (>= 1.0) rack (>= 1.0)
railroady (1.3.0) railroady (1.5.2)
rails (4.2.7.1) rails (5.0.0.1)
actionmailer (= 4.2.7.1) actioncable (= 5.0.0.1)
actionpack (= 4.2.7.1) actionmailer (= 5.0.0.1)
actionview (= 4.2.7.1) actionpack (= 5.0.0.1)
activejob (= 4.2.7.1) actionview (= 5.0.0.1)
activemodel (= 4.2.7.1) activejob (= 5.0.0.1)
activerecord (= 4.2.7.1) activemodel (= 5.0.0.1)
activesupport (= 4.2.7.1) activerecord (= 5.0.0.1)
activesupport (= 5.0.0.1)
bundler (>= 1.3.0, < 2.0) bundler (>= 1.3.0, < 2.0)
railties (= 4.2.7.1) railties (= 5.0.0.1)
sprockets-rails sprockets-rails (>= 2.0.0)
rails-deprecated_sanitizer (1.0.3) rails-controller-testing (1.0.1)
activesupport (>= 4.2.0.alpha) actionpack (~> 5.x)
rails-dom-testing (1.0.7) actionview (~> 5.x)
activesupport (>= 4.2.0.beta, < 5.0) activesupport (~> 5.x)
rails-dom-testing (2.0.1)
activesupport (>= 4.2.0, < 6.0)
nokogiri (~> 1.6.0) nokogiri (~> 1.6.0)
rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.3) rails-html-sanitizer (1.0.3)
loofah (~> 2.0) loofah (~> 2.0)
railties (4.2.7.1) railties (5.0.0.1)
actionpack (= 4.2.7.1) actionpack (= 5.0.0.1)
activesupport (= 4.2.7.1) activesupport (= 5.0.0.1)
method_source
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0) thor (>= 0.18.1, < 2.0)
rainbow (2.0.0) rainbow (2.1.0)
raindrops (0.13.0) raindrops (0.17.0)
rake (11.2.2) rake (12.0.0)
rbvmomi (1.8.2) rb-fsevent (0.9.8)
builder rb-inotify (0.9.7)
nokogiri (>= 1.4.1) ffi (>= 0.5.0)
trollop rbvmomi (1.9.4)
rdoc (4.2.0) builder (~> 3.2)
json (~> 1.4) json (>= 1.8)
nokogiri (~> 1.5)
trollop (~> 2.1)
rdoc (4.3.0)
redis (3.3.0)
ref (2.0.0) ref (2.0.0)
request_store (1.1.0) request_store (1.3.1)
responders (2.3.0) responders (2.3.0)
railties (>= 4.2.0, < 5.1) railties (>= 4.2.0, < 5.1)
rest-client (1.8.0) rest-client (2.0.0)
http-cookie (>= 1.0.2, < 2.0) http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 3.0) mime-types (>= 1.16, < 4.0)
netrc (~> 0.7) netrc (~> 0.8)
rgeo (0.3.20) rgeo (0.5.3)
rgeo-geojson (0.3.1) rgeo-geojson (0.4.3)
rgeo (~> 0.3) rgeo (~> 0.5)
rodf (0.3.7) rodf (0.3.7)
activesupport (>= 3.0, < 6.0) activesupport (>= 3.0, < 6.0)
builder (~> 3.0) builder (~> 3.0)
rubyzip (~> 1.0) rubyzip (~> 1.0)
rspec (3.2.0) rspec-core (3.5.4)
rspec-core (~> 3.2.0) rspec-support (~> 3.5.0)
rspec-expectations (~> 3.2.0) rspec-expectations (3.5.0)
rspec-mocks (~> 3.2.0)
rspec-core (3.2.3)
rspec-support (~> 3.2.0)
rspec-expectations (3.2.1)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.2.0) rspec-support (~> 3.5.0)
rspec-mocks (3.2.1) rspec-mocks (3.5.0)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.2.0) rspec-support (~> 3.5.0)
rspec-rails (3.2.1) rspec-rails (3.5.2)
actionpack (>= 3.0, < 4.3) actionpack (>= 3.0)
activesupport (>= 3.0, < 4.3) activesupport (>= 3.0)
railties (>= 3.0, < 4.3) railties (>= 3.0)
rspec-core (~> 3.2.0) rspec-core (~> 3.5.0)
rspec-expectations (~> 3.2.0) rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.2.0) rspec-mocks (~> 3.5.0)
rspec-support (~> 3.2.0) rspec-support (~> 3.5.0)
rspec-support (3.2.2) rspec-support (3.5.0)
rubocop (0.30.1) rubocop (0.46.0)
astrolabe (~> 1.3) parser (>= 2.3.1.1, < 3.0)
parser (>= 2.2.2.1, < 3.0)
powerpack (~> 0.1) powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0) rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.4) ruby-progressbar (~> 1.7)
rubocop-checkstyle_formatter (0.2.0) unicode-display_width (~> 1.0, >= 1.0.1)
rubocop (>= 0.20.1) rubocop-checkstyle_formatter (0.3.0)
rubocop-rspec (1.3.0) rubocop (>= 0.30.1)
ruby-progressbar (1.7.5) rubocop-rspec (1.8.0)
ruby2ruby (2.1.4) rubocop (>= 0.42.0)
ruby_parser (~> 3.1) ruby-progressbar (1.8.1)
sexp_processor (~> 4.0) ruby_dep (1.5.0)
ruby_parser (3.7.0) ruby_parser (3.8.3)
sexp_processor (~> 4.1) sexp_processor (~> 4.1)
rubyzip (1.0.0) rubyzip (1.0.0)
safe_yaml (1.0.4) safe_yaml (1.0.4)
@ -494,75 +526,68 @@ GEM
scenic (1.3.0) scenic (1.3.0)
activerecord (>= 4.0.0) activerecord (>= 4.0.0)
railties (>= 4.0.0) railties (>= 4.0.0)
sdoc (0.4.1) sdoc (0.4.2)
json (~> 1.7, >= 1.7.7) json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0) rdoc (~> 4.0)
securecompare (1.0.0) securecompare (1.0.0)
selenium-webdriver (2.44.0) selenium-webdriver (3.0.3)
childprocess (~> 0.5) childprocess (~> 0.5)
multi_json (~> 1.0)
rubyzip (~> 1.0) rubyzip (~> 1.0)
websocket (~> 1.0) websocket (~> 1.0)
sentry-raven (0.13.1) sentry-raven (2.2.0)
faraday (>= 0.7.6) faraday (>= 0.7.6, < 1.0)
sexp_processor (4.6.0) sexp_processor (4.7.0)
shoulda-matchers (2.8.0) shellany (0.0.1)
activesupport (>= 3.0.0) shoulda-matchers (3.1.1)
simplecov (0.9.1) activesupport (>= 4.0.0)
simplecov (0.12.0)
docile (~> 1.1.0) docile (~> 1.1.0)
multi_json (~> 1.0) json (>= 1.8, < 3)
simplecov-html (~> 0.8.0) simplecov-html (~> 0.10.0)
simplecov-html (0.8.0) simplecov-html (0.10.0)
slim (3.0.6)
temple (~> 0.7.3)
tilt (>= 1.3.3, < 2.1)
slop (3.6.0) slop (3.6.0)
smart_listing (1.1.2) smart_listing (1.2.0)
coffee-rails coffee-rails
jquery-rails jquery-rails
kaminari (~> 0.16.1) kaminari (~> 0.17)
rails (>= 3.2) rails (>= 3.2)
spreadsheet_architect (1.4.7) spreadsheet_architect (1.4.8)
axlsx (>= 2.0) axlsx (>= 2.0)
rodf (>= 0.3.6) rodf (= 0.3.7)
spring (1.3.6)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
sprockets (3.7.0) sprockets (3.7.0)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
rack (> 1, < 3) rack (> 1, < 3)
sprockets-rails (3.1.1) sprockets-rails (3.2.0)
actionpack (>= 4.0) actionpack (>= 4.0)
activesupport (>= 4.0) activesupport (>= 4.0)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
swd (1.0.0) swd (1.0.1)
activesupport (>= 3) activesupport (>= 3)
attr_required (>= 0.0.5) attr_required (>= 0.0.5)
httpclient (>= 2.4) httpclient (>= 2.4)
i18n i18n
json (>= 1.4.3) json (>= 1.4.3)
temple (0.7.6)
terminal-table (1.5.2)
therubyracer (0.12.2) therubyracer (0.12.2)
libv8 (~> 3.16.14.0) libv8 (~> 3.16.14.0)
ref ref
thor (0.19.1) thor (0.19.4)
thread_safe (0.3.5) thread_safe (0.3.5)
tilt (2.0.5) tilt (2.0.5)
timecop (0.7.3) timecop (0.8.1)
trollop (2.1.2) trollop (2.1.2)
turbolinks (2.5.3) turbolinks (2.5.3)
coffee-rails coffee-rails
tzinfo (1.2.2) tzinfo (1.2.2)
thread_safe (~> 0.1) thread_safe (~> 0.1)
uglifier (3.0.2) uglifier (3.0.4)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
unf_ext (0.0.7.1) unf_ext (0.0.7.2)
unicorn (4.9.0) unicode-display_width (1.1.2)
unicode_utils (1.4.0)
unicorn (5.2.0)
kgio (~> 2.6) kgio (~> 2.6)
rack
raindrops (~> 0.7) raindrops (~> 0.7)
url_safe_base64 (0.2.2) url_safe_base64 (0.2.2)
validate_email (0.1.6) validate_email (0.1.6)
@ -571,26 +596,27 @@ GEM
validate_url (1.0.2) validate_url (1.0.2)
activemodel (>= 3.0.0) activemodel (>= 3.0.0)
addressable addressable
vcr (3.0.1) vcr (3.0.3)
warden (1.2.6) warden (1.2.6)
rack (>= 1.0) rack (>= 1.0)
web-console (2.2.1) web-console (3.4.0)
activemodel (>= 4.0) actionview (>= 5.0)
binding_of_caller (>= 0.7.2) activemodel (>= 5.0)
railties (>= 4.0) debug_inspector
sprockets-rails (>= 2.0, < 4.0) railties (>= 5.0)
webfinger (1.0.1) webfinger (1.0.2)
activesupport activesupport
httpclient (>= 2.4) httpclient (>= 2.4)
multi_json multi_json
webmock (1.21.0) webmock (2.3.1)
addressable (>= 2.3.6) addressable (>= 2.3.6)
crack (>= 0.3.2) crack (>= 0.3.2)
websocket (1.2.1) hashdiff
websocket-driver (0.5.3) websocket (1.2.3)
websocket-driver (0.6.4)
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2) websocket-extensions (0.1.2)
will_paginate (3.0.7) will_paginate (3.1.5)
will_paginate-bootstrap (1.0.1) will_paginate-bootstrap (1.0.1)
will_paginate (>= 3.0.3) will_paginate (>= 3.0.3)
xml-simple (1.1.5) xml-simple (1.1.5)
@ -601,8 +627,9 @@ PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
actioncable (= 5.0.0.1)
active_model_serializers active_model_serializers
apipie-rails (= 0.3.1) apipie-rails
as_csv as_csv
bootstrap-datepicker-rails bootstrap-datepicker-rails
bootstrap-sass (~> 3.3.5) bootstrap-sass (~> 3.3.5)
@ -614,19 +641,21 @@ DEPENDENCIES
carrierwave carrierwave
chartkick chartkick
clamav-client clamav-client
coffee-rails (~> 4.1.0)
database_cleaner database_cleaner
deep_cloneable (~> 2.2.1) deep_cloneable (~> 2.2.1)
devise (~> 3.0) devise
draper draper (~> 3.0.0.pre1)
factory_girl factory_girl
fog fog
fog-openstack fog-openstack
font-awesome-rails font-awesome-rails
guard
guard-livereload (~> 2.4)
haml-rails haml-rails
hashie hashie
jbuilder (~> 2.0) jbuilder (~> 2.0)
jquery-rails jquery-rails
launchy
leaflet-draw-rails leaflet-draw-rails
leaflet-markercluster-rails (~> 0.7.0) leaflet-markercluster-rails (~> 0.7.0)
leaflet-rails leaflet-rails
@ -634,15 +663,17 @@ DEPENDENCIES
mailjet mailjet
maruku maruku
mina! mina!
nyan-cat-formatter
openid_connect openid_connect
openstack openstack
parallel_tests (~> 1.9.0) parallel_tests (~> 2.10)
pg pg
poltergeist poltergeist
pry-byebug pry-byebug
rack-handlers
railroady railroady
rails (= 4.2.7.1) rails (= 5.0.0.1)
rails-controller-testing
redis
rest-client rest-client
rgeo-geojson rgeo-geojson
rspec-rails (~> 3.0) rspec-rails (~> 3.0)
@ -658,15 +689,14 @@ DEPENDENCIES
simplecov simplecov
smart_listing smart_listing
spreadsheet_architect spreadsheet_architect
spring
spring-commands-rspec
therubyracer therubyracer
timecop timecop
turbolinks turbolinks (~> 2.5)
uglifier (>= 1.3.0) uglifier (>= 1.3.0)
unicode_utils
unicorn unicorn
vcr vcr
web-console (~> 2.0) web-console
webmock webmock
will_paginate-bootstrap will_paginate-bootstrap

View file

@ -43,7 +43,7 @@ guard 'livereload' do
rails_view_exts = %w(erb haml slim) rails_view_exts = %w(erb haml slim)
# file types LiveReload may optimize refresh for # file types LiveReload may optimize refresh for
compiled_exts = extensions.values.uniq compiled_exts = extensions.values
watch(%r{public/.+\.(#{compiled_exts * '|'})}) watch(%r{public/.+\.(#{compiled_exts * '|'})})
extensions.each do |ext, type| extensions.each do |ext, type|
@ -64,24 +64,24 @@ guard 'livereload' do
watch(%r{config/locales/.+\.yml}) watch(%r{config/locales/.+\.yml})
end end
guard :rspec, cmd: 'bin/rspec' do # guard :rspec, cmd: 'bin/rspec' do
watch(%r{^spec/.+_spec\.rb$}) # watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } # watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" } # watch('spec/spec_helper.rb') { "spec" }
#
# Rails example # # Rails example
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" } # watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" } # watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] } # watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" } # watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" } # watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" } # watch('app/controllers/application_controller.rb') { "spec/controllers" }
watch('spec/rails_helper.rb') { "spec" } # watch('spec/rails_helper.rb') { "spec" }
#
# Capybara features specs # # Capybara features specs
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" } # watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
#
# Turnip features and steps # # Turnip features and steps
watch(%r{^spec/acceptance/(.+)\.feature$}) # watch(%r{^spec/acceptance/(.+)\.feature$})
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' } # watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
end # end

View file

@ -7,8 +7,8 @@ TéléProcédure Simplifiée, ou TPS pour les intimes, est une plateforme 100% w
## Technologies utilisées ## Technologies utilisées
Ruby : 2.1.5 Ruby : 2.3.1
Rails : 4.2.0 Rails : 5.0.0.1
## Initialisation de l'environnement de développement ## Initialisation de l'environnement de développement

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View file

@ -0,0 +1,13 @@
$(document).on('page:load', init_action_btn_rules);
$(document).ready(init_action_btn_rules);
function init_action_btn_rules() {
$('.btn-send').click(function () {
$(this).addClass("disabled");
this.addEventListener("click", lock_btn);
});
function lock_btn(event) {
event.preventDefault();
}
}

View file

@ -50,7 +50,7 @@ function scroll_to() {
$('.js-scrollTo').on('click', function () { // Au clic sur un élément $('.js-scrollTo').on('click', function () { // Au clic sur un élément
var page = $(this).attr('cible'); // Page cible var page = $(this).attr('cible'); // Page cible
var speed = 600; // Durée de l'animation (en ms) var speed = 600; // Durée de l'animation (en ms)
$('html, body').animate({scrollTop: $(page).offset().top - 100}, speed); // Go $('html, body').animate({scrollTop: $(page).offset().top - 200}, speed); // Go
return false; return false;
}); });
} }

View file

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

View file

@ -0,0 +1,9 @@
$(document).on('page:load', buttons_anchor);
$(document).ready(buttons_anchor);
function buttons_anchor(){
$("#cgu_menu_block").on('click', 'a', function(){
event.preventDefault();
$('html,body').animate({scrollTop:$(this.hash).offset().top-80}, 500);
});
}

View file

@ -0,0 +1,23 @@
//App.messages = App.cable.subscriptions.create('NotificationsChannel', {
// received: function (data) {
// if (window.location.href.indexOf('backoffice') !== -1) {
// $("#notification_alert").html(data['message']);
//
// slideIn_notification_alert();
// }
// }
//});
function slideIn_notification_alert (){
$("#notification_alert").animate({
right: '20px'
}, 250);
setTimeout(slideOut_notification_alert, 3500);
}
function slideOut_notification_alert (){
$("#notification_alert").animate({
right: '-250px'
}, 200);
}

View file

@ -0,0 +1,34 @@
$(document).on('page:load', init_default_data_block);
$(document).ready(init_default_data_block);
function init_default_data_block() {
$('.default_data_block #dossier .body').toggle();
$('.default_data_block #dossier .carret-right').toggle();
$('.default_data_block #dossier .carret-down').toggle();
$('.default_data_block .title').click(function () {
toggle_default_data_bloc(this, 400);
});
$('.new-action').click(function () {
var messages_block = $(this).parents().closest('.default_data_block').find('.title')
toggle_default_data_bloc(messages_block, 400);
});
$('.default_data_block.default_visible').each(function() {
toggle_default_data_bloc($(this).find('.title'), 0);
});
function toggle_default_data_bloc(element, duration) {
var block = $(element).parents('.show-block');
if (block.attr('id') == 'messages') {
block.children('.last-commentaire').toggle();
$(".commentaires").animate({ scrollTop: $(this).height() }, "slow");
}
block.children('.body').slideToggle(duration);
block.find('.carret-right').toggle();
block.find('.carret-down').toggle();
}
}

View file

@ -27,7 +27,6 @@ function action_type_de_champs() {
}); });
address_type_init(); address_type_init();
toggle_header_section_composents();
} }
function toggleErrorClass(node, boolean) { function toggleErrorClass(node, boolean) {
@ -55,21 +54,3 @@ function validateNumber(number) {
function validateInput(input, regex) { function validateInput(input, regex) {
return regex.test(input); return regex.test(input);
} }
function toggle_header_section_composents() {
$("a.mask_section_button").on('click', function (e) {
target = e.currentTarget;
header_section_id = target.id.split('mask_button_')[1];
header_section_composents = $(".header_section_" + header_section_id);
header_section_composents.slideToggle(200, function () {
if (header_section_composents.css('display') == 'none') {
$(target).html('Afficher la section <i class="fa fa-chevron-down" />')
}
else {
$(target).html('Masquer la section <i class="fa fa-chevron-up" />')
}
});
});
}

View file

@ -1,5 +1,22 @@
$(document).on('page:load', the_terms); $(document).on('page:load', the_terms);
$(document).ready(the_terms); $(document).ready(the_terms);
$(document).on('page:load', pannel_switch);
$(document).ready(pannel_switch);
function pannel_switch() {
$('#switch-notifications').click(function () {
$('#procedure_list').addClass('hidden');
$('#notifications_list').removeClass('hidden');
$(this).addClass('active');
$('#switch-procedures').removeClass('active');
})
$('#switch-procedures').click(function () {
$('#notifications_list').addClass('hidden');
$('#procedure_list').removeClass('hidden');
$(this).addClass('active');
$('#switch-notifications').removeClass('active');
})
}
function the_terms() { function the_terms() {
var the_terms = $("#dossier_autorisation_donnees"); var the_terms = $("#dossier_autorisation_donnees");

View file

@ -1,7 +1,6 @@
$(document).on('page:load', filters_init); $(document).on('page:load', filters_init);
$(document).ready(filters_init); $(document).ready(filters_init);
function filters_init() { function filters_init() {
$('html').click(function(event) { $('html').click(function(event) {
var visible_filter = $('.filter_framed:visible') var visible_filter = $('.filter_framed:visible')
@ -11,11 +10,13 @@ function filters_init() {
} }
} }
}); });
$(".filter").on('click', function (event) { $(".filter").on('click', function (event) {
filter_framed_show(event); filter_framed_show(event);
filter_framed_close_all_excepted(framed_id(event)); filter_framed_close_all_excepted(framed_id(event));
event.stopPropagation(); event.stopPropagation();
}); });
$(".erase-filter").on('click', function (event) { $(".erase-filter").on('click', function (event) {
$(this).parent().find(".filter_input").val(""); $(this).parent().find(".filter_input").val("");
}); });
@ -34,6 +35,11 @@ function framed_id(event) {
function filter_framed_show(event) { function filter_framed_show(event) {
dom_object = $(framed_id(event)); dom_object = $(framed_id(event));
dom_object.css('top', (event.pageY + 7) + 'px'); var offset = $('#main-container').offset();
dom_object.css('left', (event.pageX + 7) + 'px');
var y = event.pageY - offset.top;
var x = event.pageX - offset.left;
dom_object.css('top', (y + 7) + 'px');
dom_object.css('left', (x + 7) + 'px');
} }

View file

@ -1,7 +1,6 @@
$(document).on('page:load', link_init); $(document).on('page:load', link_init);
$(document).ready(link_init); $(document).ready(link_init);
function link_init() { function link_init() {
$('#dossiers_list tr').on('click', function () { $('#dossiers_list tr').on('click', function () {
$(location).attr('href', $(this).data('dossier_url')) $(location).attr('href', $(this).data('dossier_url'))

View file

@ -1,17 +0,0 @@
$(document).on('page:load', all_video);
$(document).ready(all_video);
function all_video() {
$(".all_video").on('click', function(event){
$("#all_video").slideToggle(200);
if (event.stopPropagation) {
event.stopPropagation();
}
event.cancelBubble = true;
return false;
});
}

View file

@ -0,0 +1,60 @@
$(document).on('page:load', init_search_anim);
$(document).ready(init_search_anim);
function init_search_anim(){
$("#search_area").on('click', search_fadeIn);
}
function search_fadeIn(){
var search_area = $("#search_area");
var body_dom = $('body');
var positions = search_area.position();
var width = search_area.width();
search_area.css('position', 'fixed');
search_area.css('top', positions.top + $('.navbar').height());
search_area.css('left', positions.left);
search_area.css('z-index', 300);
search_area.css('width', width);
search_area.find('#q').animate({ height: '50px' });
search_area.find('#search_button').animate({ height: '50px' });
body_dom.append(search_area);
$('#mask_search').fadeIn(200);
var body_width = body_dom.width();
var search_area_width = body_width/2.5;
search_area.animate({
width: search_area_width,
left: (body_width/2 - search_area_width/2 + 40)
}, 400, function() {
search_area.off();
$("#search_area input").focus();
$('#mask_search').on('click', search_fadeOut)
});
}
function search_fadeOut(){
var search_area = $("#search_area");
$('#mask_search').fadeOut(200);
search_area.fadeOut(200, function(){
search_area.css('position', 'static');
search_area.css('top', '');
search_area.css('left', '');
search_area.css('z-index', '');
search_area.css('width', 'auto');
search_area.find('#q').css('height', 34);
search_area.find('#search_button').css('height', 34);
$('#search-block').append(search_area);
search_area.fadeIn(200);
init_search_anim();
});
}

View file

@ -1,3 +1,7 @@
#admin_index{
margin-left: 2em;
margin-right: 2em;
.table { .table {
#id { #id {
width: 5%; width: 5%;
@ -15,3 +19,5 @@
width: 22%; width: 22%;
} }
} }
}

View file

@ -1,5 +1,5 @@
.header_section{ .header_section{
background-color: rgb(245,245,245); background-color: rgb(0, 49, 137);
margin-top: 20px; margin-top: 20px;
margin-bottom: 10px; margin-bottom: 10px;
margin-left: 0; margin-left: 0;
@ -7,6 +7,12 @@
text-align:center; text-align:center;
padding-bottom: 8px; padding-bottom: 8px;
color: white;
.form-control.libelle {
font-weight: bold;
}
.form-group.description { .form-group.description {
display: none; display: none;
} }

View file

@ -24,7 +24,7 @@
@import "bootstrap"; @import "bootstrap";
body { body {
background-color: rgb(255, 255, 255); background-color: #F2F6FA;
} }
html, body { html, body {
@ -32,16 +32,22 @@ html, body {
} }
body { body {
padding-top: 50px; padding-top: 60px;
}
form {
margin-bottom: 0.3em;
} }
.wysihtml5-sandbox { .wysihtml5-sandbox {
resize: vertical; resize: vertical;
width: 100% !important;
} }
#wrap { #wrap {
min-height: 100%; min-height: 100%;
margin-bottom: -50px; margin-bottom: -50px;
overflow: hidden;
} }
#wrap:after { #wrap:after {
@ -50,47 +56,23 @@ body {
} }
#footer, #wrap:after { #footer, #wrap:after {
height: 40px; height: 50px;
} }
#footer { #footer {
background-color: rgb(240, 240, 240) background-color: #F2F6FA;
}
.main_div {
margin-left: 10rem;
margin-right: 10rem;
}
.logo {
margin-left: 10px;
padding-top: 5px;
padding-bottom: 5px;
max-height: 100%;
}
.logo_navbar {
margin-left: 10px;
padding-top: 5px;
padding-bottom: 5px;
max-height: 100%;
}
#beta {
text-align: center; text-align: center;
text-transform: uppercase; padding: 0;
position: absolute; a, p {
top: 26px; color: #000000;
right: -35px; }
-webkit-transform: rotate(45deg); a:hover {
transform: rotate(45deg); color: #000000;
width: 150px; }
background-color: #008cba; p {
color: #fff; line-height: 40px;
padding: 5px; padding: 0;
font-size: 15px; }
font-weight: 700;
z-index: 10;
} }
.beta_staging { .beta_staging {
@ -104,34 +86,6 @@ body {
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
#sign_out {
decorate: none;
box-shadow: none;
float: right;
margin-top: 8px;
margin-right: 105px;
}
#header {
top: 0;
left: -3px;
position: fixed;
width: 100%;
z-index: 10;
}
.navbar {
height: 35px;
background-color: rgba(235, 235, 235, 0.95);
.sign_in_FC {
margin-top: -18px;
height: 70px;
}
}
.text-purple { .text-purple {
color: #8B008B color: #8B008B
} }
@ -224,31 +178,6 @@ div.pagination {
} }
} }
.btn-nav {
background-color: transparent;
margin-top: 6px;
height: 36px;
}
.btn-nav:hover {
background-color: #eeeeee;
border-color: #eeeeee #eeeeee #ddd;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.btn-nav.text-info:hover {
color: #23527c;
}
.btn-nav.text-success:hover {
color: #3c763d;
}
.btn-nav.text-danger:hover {
color: #a94442;
}
#confirm { #confirm {
display: none; display: none;
} }
@ -291,3 +220,11 @@ div.pagination {
} }
} }
.no-padding {
padding: 0;
}
.no-margin {
margin: 0;
}

View file

@ -1,3 +0,0 @@
/*
*= require 'application'
*/

View file

@ -1,14 +1,21 @@
#backoffice_search {
.table {
tr th {
border-top: none
}
}
}
#backoffice_index, #backoffice_search { #backoffice_index, #backoffice_search {
margin-left: -7rem; margin-left: 2rem;
margin-right: -7rem; margin-right: 2rem;
.default_data_block {
background-color: #FFFFFF;
margin-top: 20px;
.show-block {
width: 100%;
}
.body {
height: auto;
}
}
.fixed-right {
position: fixed;
right: 20px;
}
} }
#pref_list { #pref_list {

View file

@ -0,0 +1,4 @@
#cgu {
margin-left: 2em;
margin-right: 2em;
}

View file

@ -0,0 +1,69 @@
.default_data_block {
font-family: Arial;
.show-block {
width: 840px;
min-width: 840px;
margin-left: auto;
margin-right: auto;
box-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.5);
margin-bottom: 40px;
}
.carret-right {
float: left;
width: 0;
height: 0;
border-top: 7px solid transparent;
border-bottom: 7px solid transparent;
border-left: 14px solid #FFFFFF;
margin: 12px 12px 0 15px;
}
.carret-down {
float: left;
width: 0;
height: 0;
display: none;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-top: 14px solid #FFFFFF;
margin: 12px 12px 0 15px;
}
.header {
background-color: #003C92;
height: 40px;
color: #FFFFFF;
font-size: 18px;
font-weight: bold;
.title, .title-no-expanse, .action, .count {
height: 100%;
line-height: 40px;
padding: 0px;
text-transform: uppercase;
}
.title-no-expanse {
cursor: not-allowed;
}
.title, .action, .count {
cursor: pointer;
}
.action {
background-color: #E45B51;
text-align: center;
line-height: 40px;
font-size: 15px;
text-decoration: none;
color: #FFFFFF;
}
.action:hover {
color: #F2F6FA;
}
.count {
font-size: 16px;
text-align: center;
}
}
.body {
background-color: #FFFFFF;
display: none;
}
}

View file

@ -2,8 +2,21 @@
@import "bootstrap-datepicker3"; @import "bootstrap-datepicker3";
#description_page #liste_champs { #description_page #liste_champs {
.default_data_block {
.show-block {
width: 90%;
.body{
padding-left: 35px;
padding-right: 35px;
padding-bottom: 35px;
}
}
}
h4 { h4 {
margin-top: 35px; padding-top: 35px;
margin: 0;
} }
} }
@ -28,8 +41,6 @@
.type_champ-header_section { .type_champ-header_section {
@extend .col-md-12; @extend .col-md-12;
@extend .col-lg-12; @extend .col-lg-12;
margin-bottom: -25px;
} }
.type_champ-address { .type_champ-address {

View file

@ -0,0 +1,196 @@
#backoffice_dossier_show, #users_recapitulatif_dossier_show {
#messages {
.last-commentaire {
display: block;
background-color: #FFFFFF;
.content, .new-action {
margin-bottom: 20px;
}
}
.body {
.commentaires {
max-height: 350px;
overflow-y: scroll;
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.075) 0%, rgba(219, 219, 219, 0) 50%, rgba(250, 251, 253, 0.18) 51%, #ffffff 100%);
}
.no-commentaires {
text-align: center;
font-size: 18px;
padding-top: 20px;
}
}
.last-commentaire, .commentaire {
padding: 20px 0 0 20px;
.comment-header {
font-family: Arial;
font-size: 14px;
font-weight: bold;
line-height: 16px;
color: #000000;
margin-bottom: 10px;
}
.new-action {
background-color: #E45B51;
text-align: center;
cursor: pointer;
color: #FFFFFF;
width: 253px;
height: 40px;
line-height: 40px;
font-family: Arial;
font-size: 16px;
font-weight: bold;
}
.file {
padding-right: 70px;
text-align: center;
margin-bottom: 20px;
.link {
span {
width: 100%;
font-size: 40px;
}
}
}
}
.split-hr {
margin: 20px 20px 0 20px;
border-bottom: 1px solid #979797;
}
#new-commentaire {
padding: 35px;
.btn-send {
background-color: #E45B51;
text-align: center;
color: #FFFFFF;
width: 150px;
height: 40px;
line-height: 28px;
font-family: Arial;
font-size: 16px;
font-weight: bold;
float: right;
border-radius: 0;
}
}
}
.infos {
.split-row {
margin: 0 0 20px 0;
}
.entreprise-info {
font-size: 14px;
}
.entreprise-label {
font-weight: bold;
text-align: end;
}
}
#carto {
}
#private-fields {
.text-primary {
color: #337ab7;
}
}
#pieces-jointes {
.piece-row {
margin: 20px;
.piece-label {
text-align: right;
font-weight: bold;
}
}
.modal-title {
color: #000000;
}
}
#carto {
#map {
margin-bottom: 20px;
height: 350px;
}
}
#dossier, #pieces-jointes, .infos, #carto, #private-fields {
.body {
padding: 20px 20px 0 20px;
color: #000000;
.libelle-procedure {
font-style: italic;
padding: 10px;
}
.depositaire-label {
font-weight: bold;
text-align: end;
}
.depositaire-info {
}
.btn-action{
border: none;
margin: 20px 0 40px 0;
}
.btn-action:hover {
color: #EEEEEE;
}
.action {
margin: 50px 0 0 15px;
}
.action, .btn-action {
background-color: #E45B51;
text-align: center;
cursor: pointer;
color: #FFFFFF;
width: 253px;
height: 40px;
line-height: 40px;
font-family: Arial;
font-size: 16px;
font-weight: bold;
text-decoration: none;
a:hover {
color: #EEEEEE;
}
}
.historique {
color: #000000;
margin-left: 20px;
}
.comments {
margin-right: -10px;
}
.comments-off {
margin-right: -35px;
}
.dossier-title {
font-size: 16px;
min-height: 40px;
text-align: center;
}
.split-hr {
border-bottom: 1px solid #979797;
height: 12px;
min-height: 10px;
}
.title-row {
margin: 20px 10px 10px 10px;
}
.margin-top-40 {
margin-top: 40px;
}
.margin-top-20 {
margin-top: 20px;
}
.margin-bot-40 {
margin-bottom: 40px;
}
}
#pieces_justificatives {
.piece-row {
margin: 0 0 0 0;
}
}
}
}

View file

@ -29,7 +29,44 @@ h5 span {
} }
} }
#dossiers_list {
.filter {
cursor: pointer;
font-size: 1.1em;
display: inline;
}
}
#dossiers_list tr:hover{ #dossiers_list tr:hover{
background-color: #eeeeee; background-color: #eeeeee;
cursor: pointer; cursor: pointer;
} }
#procedure_list, #notifications_list {
margin-left: -10px;
margin-top: 20px;
a, a:hover {
color: #FFFFFF;
text-decoration: none;
}
.procedure_list_element.active, .notification.active {
background-color: #668ABD;
}
.procedure_list_element, .notification {
padding: 15px 40px 15px 20px;
cursor: pointer;
line-height: 1.8em;
.progress-bar-warning {
background-color: #E4594F;
}
}
.procedure_list_element:hover, .notification:hover {
background-color: #668ABD;
cursor: pointer;
}
}
.split-hr-left {
border-bottom: 1px solid #FFFFFF;
margin: 20px 10px 0px 10px;
}

View file

@ -1,18 +1,3 @@
.etapes_menu{
h3 {
margin-left: 3%;
}
padding-right: 0 !important;
}
.etapes_informations {
padding-left: 0 !important;
}
.etape{
margin-bottom: 0px;
}
.etape_2{ .etape_2{
.etapes_menu{ .etapes_menu{
#dossier_siret{ #dossier_siret{

View file

@ -1,21 +1,26 @@
.max-size {
margin-left: -10rem;
margin-right: -10rem;
}
#landing { #landing {
background-image: image-url('landing_background.png'); background-image: image-url('landing_background.png');
background-attachment: fixed; background-attachment: fixed;
background-size: 130% auto;
background-position: top center; background-position: top center;
background-repeat: no-repeat; background-repeat: no-repeat;
background-color: rgba(11,107,168,0.2); h5{
color: grey;
}
.logos {
width: 150px;
}
#logo-tps {
width: 200px;
}
#title { #title {
h1 { padding-bottom: 2%;
font-size: 65px; padding-top: 1%;
}
h2 { h2 {
font-size: 35px; font-size: 35px;
} }
@ -23,104 +28,35 @@
.btn { .btn {
text-shadow: none; text-shadow: none;
} }
color: white; color: white;
padding-top: 3%;
padding-bottom: 4%;
text-shadow: 0px 0px 10px rgb(0, 0, 0); text-shadow: 0px 0px 10px rgb(0, 0, 0);
} }
.logo img {
width: 70px;
}
} }
#suite { .background-tps{
.row{ background-color: #668AEA;
width: 100%; color: white;
margin-left: 0;
margin-right: 0;
} }
.word {
border-bottom: solid darkgrey 1px;
img {
padding-top: 50px;
padding-bottom: 50px;
width: 200px;
margin-left: 25%;
}
}
.simplifier {
ul {
margin-top: 13%;
}
}
.securiser {
img {
width: 300px;
}
ul {
margin-top: 11%;
}
}
.echanger {
ul {
margin-top: 4%;
}
}
.profiter {
//border-bottom: none;
ul {
margin-top: 10%;
}
}
.news {
padding-top: 25px;
padding-bottom: 25px;
.latest_release{ .latest_release{
.body { margin-left: 1%
margin-left: 3%;
}
}
} }
.demo_account { #landing_body{
img { .split-hr-left {
margin-left: 0; margin-left: auto;
padding-top: 10px; margin-right: auto;
padding-bottom: 0;
}
padding-top: 25px;
padding-bottom: 25px;
.btn { margin-top: 40px;
margin-top: 10%; margin-bottom: 20px;
}
border-color: grey;
width: 40%;
} }
.documentation { #etapes, #request_access{
border-bottom: none; margin-top: 20px;
margin-bottom: 20px;
padding-top: 15px;
padding-bottom: 15px;
a {
margin-top: 16%;
}
ul{
margin-top: 14%;
}
img {
margin-left: 0;
width: 22%;
}
} }
} }

View file

@ -0,0 +1,226 @@
#left-pannel {
margin-top: 60px;
padding: 0;
background-color: #003189;
height: calc(100% - 60px);
position: fixed;
top: 0;
left: 0;
bottom: 0;
color: white;
overflow-y: scroll;
#first-block {
font-family: Arial;
font-size: 16px;
line-height: 18px;
margin-top: 20px;
.infos {
font-size: 25px;
text-align: center;
margin: 10px 10px 30px 0;
.projet-name {
font-size: 25px;
line-height: normal;
padding: 5px;
}
}
.count {
display: inline-block;
padding: 3px;
border-radius: 25px;
min-width: 40px;
text-align: center;
line-height: 23px;
}
.text {
display: inline-block;
width: 30px;
margin: 0 0 0 8px;
}
.dossiers-en-cours, .en-cours {
margin-top: 20px;
}
.dossiers-en-cours {
.count {
border: 1px solid #FFFFFF;
}
}
.nouveaux-dossiers {
.count {
background-color: #5CB85C;
}
}
.nouvelles-notifications {
.count {
background-color: #E4594F;
}
}
.dossiers-en-cours, .nouveaux-dossiers, .nouvelles-notifications, .en-cours {
margin: 5px auto 0 20px;
width: 150px;
}
}
#action-block {
text-align: center;
margin: 10px;
.action {
background-color: #E45B51;
text-align: center;
cursor: pointer;
color: #FFFFFF;
margin: 0 10px 0 0;
min-height: 40px;
padding: 5px;
font-family: Arial;
font-size: 16px;
font-weight: bold;
border: none;
width: 100%;
}
.close-dossier, .refuse-dossier, .forget-dossier {
border: 1px solid #FFFFFF;
border-radius: 25px;
margin: 5px;
margin-left: auto;
margin-right: auto;
width: 60px;
}
.close-dossier:hover, .refuse-dossier:hover, .forget-dossier:hover {
color: #000000;
border-color: #000000;
}
.close-dossier {
background-color: #2A9E2A;
}
.refuse-dossier {
background-color: #E4594F;
}
.forget-dossier {
background-color: #FF8300;
}
}
#menu-block {
#switch-buttons {
height: 30px;
line-height: 30px;
font-size: 16px;
margin-top: 20px;
margin-left: auto;
margin-right: auto;
width: 205px;
border: 1px solid;
padding: 0 0 0 10px;
border-radius: 25px;
cursor: pointer;
.active {
background-color: #668ABD !important;
cursor: default;
}
.separator {
height: 26px;
width: 1px;
display: inline-block;
background-color: #FFFFFF;
}
#switch-procedures:hover, #switch-notifications:hover {
background-color: #668AEA;
}
#switch-procedures {
height: 28px;
margin: 0 0 0 -10px;
padding-left: 10px;
width: 100px;
display: inline-block;
border-radius: 25px 0 0 25px;
}
#switch-notifications {
width: 103px;
display: inline-block;
border-radius: 0 25px 25px 0;
height: 28px;
margin: 0 0 0 -5px;
padding: 0 0 0 5px;
}
}
.split-hr {
border-bottom: 1px solid #FFFFFF;
width: 200px;
margin: 20px 0 20px 0;
}
}
#infos-block {
.split-hr {
border-bottom: 1px solid #FFFFFF;
width: 200px;
margin: 20px 0 20px 0;
}
.dossier-state {
text-align: center;
font-size: 25px;
width: 200px;
margin-top: 20px;
width: 200px;
margin-left: auto;
margin-right: auto;
}
#notifications_list {
.no-notification {
margin: 0 30px 0 30px;
}
.notification {
padding: 10px 2px 10px 15px;
.dossier, .updated-at {
display: inline-block;
color: #CCCCCC;
font-size: 12px;
text-align: left;
}
.dossier-index, .updated-at-index, .count {
display: inline-block;
color: #FFFFFF;
font-size: 14px;
text-align: left;
}
.count {
background-color: #F0AD4E;
border-radius: 25px;
padding: 0 5px 0 5px;
width: 25px;
text-align: center;
}
.type-notif {
font-size: 16px;
}
}
}
.notifications {
margin: 20px 10px 0 5px;
.fa {
font-size: 25px;
width: 100%;
margin: 0 0 15px 0;
}
.type-notif {
font-size: 16px;
float: right;
width: 30px;
}
.notification {
margin: 10px 0 10px 10px;
.type {
margin-bottom: 20px;
}
.updated-at {
color: #CCCCCC;
font-size: 12px;
text-align: left;
}
.split-hr {
width: 40px;
margin: auto;
}
}
}
}
}

View file

@ -0,0 +1,3 @@
#main-container {
float: right;
}

View file

@ -0,0 +1,210 @@
#header {
top: 0;
left: 0;
position: fixed;
width: 100%;
z-index: 10;
border-radius: 0;
height: 60px;
#title_navbar{
color: white;
font-weight: bold;
font-size: 1.8em;
z-index: 10;
overflow: hidden;
}
#title_navbar:hover{
text-decoration: none;
}
#home {
text-align: center;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.5);
background-color: #003189;
height: 60px;
.logo {
margin-top: 10px;
height: 40px;
}
#tps-title {
font-family: Arial;
font-size: 24px;
font-weight: bold;
line-height: 28px;
margin-top: 17px;
}
}
#navbar-body {
height: 60px;
background-color: #FFFFFF;
box-shadow: 0 1px 2px 0 rgba(50,50,50,0.5);
padding-left: 50px;
.main-info {
font-family: Arial;
font-size: 18px;
font-weight: bold;
line-height: 58px;
height: 58px;
color: #000000;
overflow: hidden;
text-overflow: ellipsis;
}
.options {
font-family: Arial;
font-size: 14px;
text-align: right;
line-height: 22px;
color: #666666;
padding: 8px;
border-right: 1px solid #C8C6C8;
height: 60px;
.dropdown-toggle {
cursor: pointer;
}
.dropdown-pannel {
min-height: 100px;
width: 400px;
padding-left: 10px;
}
.centered-option {
line-height: 40px;
height: 40px;
}
.caret-right {
border-bottom: 4px solid transparent;
border-top: 4px solid transparent;
border-left: 4px solid;
display: inline-block;
height: 0;
margin: 8px 2px 0 5px;
vertical-align: top;
width: 0;
}
}
#sign_in{
margin-top: 7px;
.btn {
color: #003C92;
float: right;
margin-right: 1.3em;
}
.btn:hover {
color: #668ABD;
}
}
#sign_out{
height: 60px;
.fa {
color: #003C92;
float: right;
width: 70px;
margin-top: 2%;
margin-right: 0.5em;
font-size: 40px;
}
.fa:hover {
color: #668ABD;
}
}
}
}
#download-menu {
.btn-sm {
color: #000000;
font-size: 14px;
}
}
.btn-nav {
color: white;
background-color: transparent;
margin-top: 6px;
height: 36px;
}
.btn-nav:hover {
background-color: #eeeeee;
border-color: #eeeeee #eeeeee #ddd;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.btn-nav.text-info:hover {
color: #23527c;
}
.btn-nav.text-success:hover {
color: #3c763d;
}
.btn-nav.text-danger:hover {
color: #a94442;
}
.navbar {
border: 0 !important;
.sign_in_FC {
margin-top: -18px;
height: 70px;
}
}
#beta {
text-align: center;
text-transform: uppercase;
position: fixed;
bottom: 26px;
right: -35px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
width: 150px;
background-color: #008cba;
color: #fff;
padding: 5px;
font-size: 15px;
font-weight: 700;
z-index: 10;
}
.button_navbar {
color: #666666;
cursor: pointer;
}
.button-navbar-action {
background-color: #E4594F;
color: #FFFFFF;
cursor: pointer;
display: block;
width: 150px;
text-align: center;
padding: 2px;
float: right;
.fa {
font-size: 20px;
margin-right: 10px;
}
}
.button-navbar-action:hover {
color: #F2F6FA;
}
.button_navbar:hover, .button-navbar-action:hover {
text-decoration: none;
}
#credentials {
display: none;
width: initial;
padding: 10px;
left: -130px;
text-align: center;
.description {
font-weight: bold;
font-size: 20px;
}
}

View file

@ -0,0 +1,12 @@
#notification_alert {
position: fixed;
top: 20px;
right: -250px;
z-index: 1000;
width: 250px;
height: 80px;
border: solid black 1px;
}

View file

@ -11,7 +11,7 @@
width: 470px; width: 470px;
height: calc(100% - 25px); height: calc(100% - 25px);
padding: 15px; padding: 15px;
overflow: scroll; overflow-y: scroll;
} }
.open_pref_list { .open_pref_list {

View file

@ -1,13 +1,3 @@
#infos_dossier{
background-color:rgba(248,248,255,0.8);
padding-left:13%;
padding-right:13%;
padding-bottom:20px;
padding-top:15px;
margin-left:-10rem;
margin-right:-10rem;
}
#UploadPJmodal { #UploadPJmodal {
text-align: left; text-align: left;

View file

@ -0,0 +1,19 @@
#search-block{
margin: 15px 10px 0 10px;
height: 30px;
}
#search_button {
height: 34px;
}
#mask_search{
display: none;
position: fixed;
background-color: rgba(0, 0, 0, 0.4);
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 200;
}

View file

@ -0,0 +1,15 @@
#support_navigator_banner{
position: fixed;
text-align:center;
line-height: 2em;
color: white;
background-color: #990000;
width: 100%;
margin: 0;
bottom: 0;
left: 0;
z-index: 1000;
a{
color: #c3d9ff;
}
}

View file

@ -0,0 +1,6 @@
#switch_menu{
position: fixed;
left: 10px;
bottom: 10px;
z-index: 300;
}

View file

@ -0,0 +1,59 @@
#users_index, #admins_index{
margin-left: 2rem;
margin-right: 2rem;
.default_data_block {
margin-top: 20px;
background-color: #FFFFFF;
.show-block {
width: 100%;
}
.body {
height: auto;
}
}
}
#users_siret_index {
margin: 20px;
}
#description_page {
}
#carto_page {
margin: 20px;
}
.white-back {
margin: 20px !important;
#previsualisation {
margin-top: 30px;
}
}
.white-back, #users_siret_index, #description_page, #carto_page {
background-color: #FFFFFF;
box-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.5);
padding: 20px;
.action {
background-color: #E45B51;
text-align: center;
line-height: 40px;
font-size: 15px;
text-decoration: none;
color: #FFFFFF;
text-transform: uppercase;
border: none;
padding: 10px;
}
.action:hover {
color: #F2F6FA;
}
.padding-left-30 {
padding-left: 30px;
}
h3 {
margin-bottom: 20px;
}
}

View file

@ -0,0 +1,5 @@
# Be sure to restart your server when you modify this file. Action Cable runs in a loop that does not support auto reloading.
module ApplicationCable
class Channel < ActionCable::Channel::Base
end
end

View file

@ -0,0 +1,5 @@
# Be sure to restart your server when you modify this file. Action Cable runs in a loop that does not support auto reloading.
module ApplicationCable
class Connection < ActionCable::Connection::Base
end
end

View file

@ -0,0 +1,5 @@
class NotificationsChannel < ApplicationCable::Channel
def subscribed
stream_from 'notifications'
end
end

View file

@ -21,7 +21,7 @@ class Admin::GestionnairesController < AdminController
assign_gestionnaire! assign_gestionnaire!
end end
if procedure_id if procedure_id.present?
redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure_id) redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure_id)
else else
redirect_to admin_gestionnaires_path redirect_to admin_gestionnaires_path
@ -44,7 +44,7 @@ class Admin::GestionnairesController < AdminController
)) ))
if @gestionnaire.errors.messages.empty? if @gestionnaire.errors.messages.empty?
User.create(attributes) if Features.unified_login User.create(attributes)
flash.notice = 'Accompagnateur ajouté' flash.notice = 'Accompagnateur ajouté'
GestionnaireMailer.new_gestionnaire(@gestionnaire.email, @gestionnaire.password).deliver_now! GestionnaireMailer.new_gestionnaire(@gestionnaire.email, @gestionnaire.password).deliver_now!
GestionnaireMailer.new_assignement(@gestionnaire.email, current_administrateur.email).deliver_now! GestionnaireMailer.new_assignement(@gestionnaire.email, current_administrateur.email).deliver_now!

View file

@ -9,5 +9,10 @@ class Admin::PrevisualisationsController < AdminController
@dossier.build_default_champs @dossier.build_default_champs
@champs = @dossier.ordered_champs @champs = @dossier.ordered_champs
@headers = @champs.inject([]) do |acc, champ|
acc.push(champ) if champ.type_champ == 'header_section'
acc
end
end end
end end

View file

@ -105,6 +105,7 @@ class Admin::ProceduresController < AdminController
if procedure_path if procedure_path
if procedure_path.administrateur_id == current_administrateur.id if procedure_path.administrateur_id == current_administrateur.id
procedure_path.procedure.archive procedure_path.procedure.archive
procedure_path.delete
else else
@mine = false @mine = false
return render '/admin/procedures/publish', formats: 'js' return render '/admin/procedures/publish', formats: 'js'

View file

@ -2,12 +2,12 @@ class Administrateurs::SessionsController < Sessions::SessionsController
def demo def demo
return redirect_to root_path if Rails.env.production? return redirect_to root_path if Rails.env.production?
@administrateur = Administrateur.new(email: 'admin@tps.fr', password: 'password') @user = User.new(email: DemoEmails[:admin], password: 'password')
render 'new' render 'users/sessions/new'
end end
def new def new
@administrateur = Administrateur.new redirect_to new_user_session_path
end end
def create def create

View file

@ -15,10 +15,6 @@ class AdministrationsController < ApplicationController
end end
def show
@admin = Administrateur.find(params[:id])
end
def create def create
admin = Administrateur.new create_administrateur_params admin = Administrateur.new create_administrateur_params

View file

@ -16,7 +16,8 @@ class API::V1::DossiersController < APIController
def index def index
procedure = current_administrateur.procedures.find(params[:procedure_id]) procedure = current_administrateur.procedures.find(params[:procedure_id])
dossiers = procedure.dossiers.where.not(state: :draft).paginate(page: params[:page]) dossiers = procedure.dossiers.where.not(state: :draft).paginate(page: params[:page])
render json: dossiers, each_serializer: DossiersSerializer, meta: pagination(dossiers), meta_key: 'pagination', status: 200
render json: {dossiers: dossiers.map{|dossier| DossiersSerializer.new(dossier)}, pagination: pagination(dossiers)}, status: 200
rescue ActiveRecord::RecordNotFound => e rescue ActiveRecord::RecordNotFound => e
render json: {}, status: 404 render json: {}, status: 404
end end
@ -39,9 +40,10 @@ class API::V1::DossiersController < APIController
def show def show
procedure = current_administrateur.procedures.find(params[:procedure_id]) procedure = current_administrateur.procedures.find(params[:procedure_id])
dossier = procedure.dossiers.find(params[:id]) dossier = procedure.dossiers.find(params[:id])
respond_to do |format| respond_to do |format|
format.json { render json: dossier, status: 200 } format.json { render json: {dossier: DossierSerializer.new(dossier).as_json}, status: 200 }
format.csv { render csv: dossier, status: 200 } format.csv { render csv: dossier.as_csv, status: 200 }
end end
rescue ActiveRecord::RecordNotFound => e rescue ActiveRecord::RecordNotFound => e
render json: {}, status: 404 render json: {}, status: 404

View file

@ -14,9 +14,9 @@ class API::V1::ProceduresController < APIController
} }
def show def show
@procedure = current_administrateur.procedures.find(params[:id]).decorate procedure = current_administrateur.procedures.find(params[:id]).decorate
render json: @procedure render json: {procedure: ProcedureSerializer.new(procedure).as_json}
rescue ActiveRecord::RecordNotFound => e rescue ActiveRecord::RecordNotFound => e
Rails.logger.error(e.message) Rails.logger.error(e.message)
render json: {}, status: 404 render json: {}, status: 404

View file

@ -1,6 +1,6 @@
class APIController < ApplicationController class APIController < ApplicationController
before_action :authenticate_user before_action :authenticate_user
before_filter :default_format_json before_action :default_format_json
def authenticate_user def authenticate_user
render json: {}, status: 401 unless valid_token? render json: {}, status: 401 unless valid_token?

View file

@ -2,7 +2,8 @@ class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception. # Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead. # For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception protect_from_forgery with: :exception
before_filter :check_browser before_action :check_browser
before_action :load_navbar_left_pannel_partial_url
def default_url_options def default_url_options
return {protocol: 'https'} if Rails.env.staging? || Rails.env.production? return {protocol: 'https'} if Rails.env.staging? || Rails.env.production?
@ -10,6 +11,15 @@ class ApplicationController < ActionController::Base
end end
def check_browser def check_browser
BROWSER.value = Browser.new(request.user_agent) BROWSER.value = BrowserService.get_browser(request)
end
def load_navbar_left_pannel_partial_url
controller = request.controller_class
method = params[:action]
service = RenderPartialService.new(controller, method)
@navbar_url = service.navbar
@left_pannel_url = service.left_panel
@facade_data_view = nil
end end
end end

View file

@ -7,14 +7,14 @@ class Backoffice::Dossiers::ProcedureController < Backoffice::DossiersListContro
render 'backoffice/dossiers/index' render 'backoffice/dossiers/index'
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
flash[:alert] = "Cette procédure n'existe pas ou vous n'y avez pas accès." flash.alert = "Cette procédure n'existe pas ou vous n'y avez pas accès."
redirect_to backoffice_dossiers_path redirect_to backoffice_dossiers_path
end end
def filter def filter
super super
redirect_to backoffice_dossiers_procedure_path(id: params[:id], liste: param_liste) redirect_to backoffice_dossiers_procedure_path(id: params[:id])
end end
private private

View file

@ -2,14 +2,34 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
respond_to :html, :xlsx, :ods, :csv respond_to :html, :xlsx, :ods, :csv
def index def index
super procedure = current_gestionnaire.procedure_filter
dossiers_list_facade.service.filter_procedure_reset! if procedure.nil?
procedure_list = dossiers_list_facade.gestionnaire_procedures_name_and_id_list
if procedure_list.count == 0
flash.alert = "Vous n'avez aucune procédure d'affectée."
return redirect_to root_path
end
procedure = procedure_list.first[:id]
end
redirect_to backoffice_dossiers_procedure_path(id: procedure)
end end
def show def show
create_dossier_facade params[:id] create_dossier_facade params[:id]
@champs = @facade.champs_private unless @facade.nil?
unless @facade.nil?
@champs_private = @facade.champs_private
@headers_private = @champs_private.inject([]) do |acc, champ|
acc.push(champ) if champ.type_champ == 'header_section'
acc
end
end
Notification.where(dossier_id: params[:id].to_i).update_all already_read: true
end end
def filter def filter
@ -36,20 +56,30 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
@search_terms = params[:q] @search_terms = params[:q]
# exact id match? # exact id match?
@dossier = Dossier.where(id: @search_terms) @dossiers = Dossier.where(id: @search_terms.to_i) if @search_terms.to_i < 2147483647
@dossiers = Dossier.none if @dossiers.nil?
# full text search # full text search
unless @dossier.any? unless @dossiers.any?
@dossier ||= Search.new( @dossiers = Search.new(
gestionnaire: current_gestionnaire, gestionnaire: current_gestionnaire,
query: @search_terms, query: @search_terms,
page: params[:page] page: params[:page]
).results ).results
end end
smartlisting_dossier @dossier, 'search' smart_listing_create :search,
@dossiers,
partial: "backoffice/dossiers/list",
array: true,
default_sort: dossiers_list_facade.service.default_sort
rescue RuntimeError rescue RuntimeError
smartlisting_dossier [], 'search' smart_listing_create :search,
[],
partial: "backoffice/dossiers/list",
array: true,
default_sort: dossiers_list_facade.service.default_sort
end end
def valid def valid
@ -60,7 +90,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
NotificationMailer.dossier_validated(@facade.dossier).deliver_now! NotificationMailer.dossier_validated(@facade.dossier).deliver_now!
render 'show' redirect_to backoffice_dossier_path(id: @facade.dossier.id)
end end
def receive def receive
@ -71,7 +101,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
NotificationMailer.dossier_received(@facade.dossier).deliver_now! NotificationMailer.dossier_received(@facade.dossier).deliver_now!
render 'show' redirect_to backoffice_dossier_path(id: @facade.dossier.id)
end end
def refuse def refuse
@ -82,7 +112,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
NotificationMailer.dossier_refused(@facade.dossier).deliver_now! NotificationMailer.dossier_refused(@facade.dossier).deliver_now!
render 'show' redirect_to backoffice_dossier_path(id: @facade.dossier.id)
end end
def without_continuation def without_continuation
@ -93,7 +123,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
NotificationMailer.dossier_without_continuation(@facade.dossier).deliver_now! NotificationMailer.dossier_without_continuation(@facade.dossier).deliver_now!
render 'show' redirect_to backoffice_dossier_path(id: @facade.dossier.id)
end end
def close def close
@ -104,7 +134,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
NotificationMailer.dossier_closed(@facade.dossier).deliver_now! NotificationMailer.dossier_closed(@facade.dossier).deliver_now!
render 'show' redirect_to backoffice_dossier_path(id: @facade.dossier.id)
end end
def follow def follow
@ -123,7 +153,6 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
@liste = cookies[:liste] || 'a_traiter' @liste = cookies[:liste] || 'a_traiter'
end end
dossiers_list_facade @liste
smartlisting_dossier smartlisting_dossier
render 'backoffice/dossiers/index', formats: :js render 'backoffice/dossiers/index', formats: :js

View file

@ -9,7 +9,6 @@ class Backoffice::DossiersListController < ApplicationController
unless DossiersListGestionnaireService.dossiers_liste_libelle.include?(param_liste) unless DossiersListGestionnaireService.dossiers_liste_libelle.include?(param_liste)
cookies[:liste] = 'a_traiter' cookies[:liste] = 'a_traiter'
return redirect_to backoffice_dossiers_path
end end
dossiers_list_facade param_liste dossiers_list_facade param_liste
@ -25,19 +24,34 @@ class Backoffice::DossiersListController < ApplicationController
end end
def dossiers_list_facade liste='a_traiter' def dossiers_list_facade liste='a_traiter'
@dossiers_list_facade ||= DossiersListFacades.new current_gestionnaire, liste, retrieve_procedure @facade_data_view ||= DossiersListFacades.new current_gestionnaire, liste, retrieve_procedure
end end
def smartlisting_dossier dossiers_list=nil, liste='a_traiter' def smartlisting_dossier dossiers_list=nil, liste='a_traiter'
dossiers_list_facade liste dossiers_list_facade liste
dossiers_list = dossiers_list_facade.dossiers_to_display if dossiers_list.nil?
new_dossiers_list = dossiers_list_facade.service.nouveaux
follow_dossiers_list = dossiers_list_facade.service.suivi
all_state_dossiers_list = dossiers_list_facade.service.all_state
if param_page.nil? if param_page.nil?
params[:dossiers_smart_listing] = {page: dossiers_list_facade.service.default_page} params[:dossiers_smart_listing] = {page: dossiers_list_facade.service.default_page}
end end
@dossiers = smart_listing_create :dossiers, smart_listing_create :new_dossiers,
dossiers_list, new_dossiers_list,
partial: "backoffice/dossiers/list",
array: true,
default_sort: dossiers_list_facade.service.default_sort
smart_listing_create :follow_dossiers,
follow_dossiers_list,
partial: "backoffice/dossiers/list",
array: true,
default_sort: dossiers_list_facade.service.default_sort
smart_listing_create :all_state_dossiers,
all_state_dossiers_list,
partial: "backoffice/dossiers/list", partial: "backoffice/dossiers/list",
array: true, array: true,
default_sort: dossiers_list_facade.service.default_sort default_sort: dossiers_list_facade.service.default_sort

View file

@ -1,4 +1,4 @@
class Backoffice::PreferenceListDossierController < ApplicationController class Backoffice::PreferenceListDossierController < Backoffice::DossiersListController
include SmartListing::Helper::ControllerExtensions include SmartListing::Helper::ControllerExtensions
helper SmartListing::Helper helper SmartListing::Helper
@ -22,7 +22,7 @@ class Backoffice::PreferenceListDossierController < ApplicationController
end end
def reload_pref_list def reload_pref_list
@dossiers_list_facade = DossiersListFacades.new current_gestionnaire, '', retrieve_procedure dossiers_list_facade
render partial: 'backoffice/dossiers/pref_list', id: params_procedure_id render partial: 'backoffice/dossiers/pref_list', id: params_procedure_id
end end

View file

@ -36,7 +36,11 @@ class CommentairesController < ApplicationController
@commentaire.body = params['texte_commentaire'] @commentaire.body = params['texte_commentaire']
saved = false saved = false
unless @commentaire.body.blank? && @commentaire.piece_justificative.nil?
saved = @commentaire.save unless flash.alert saved = @commentaire.save unless flash.alert
else
flash.alert = "Veuillez rédiger un message ou ajouter une pièce jointe."
end
if is_gestionnaire? if is_gestionnaire?
unless current_gestionnaire.follow? @commentaire.dossier unless current_gestionnaire.follow? @commentaire.dossier
@ -44,14 +48,17 @@ class CommentairesController < ApplicationController
end end
NotificationMailer.new_answer(@commentaire.dossier).deliver_now! if saved NotificationMailer.new_answer(@commentaire.dossier).deliver_now! if saved
redirect_to url_for(controller: 'backoffice/dossiers', action: :show, id: params['dossier_id']) redirect_to url_for(controller: 'backoffice/dossiers', action: :show, id: params['dossier_id'])
elsif current_user.email != @commentaire.dossier.user.email else
if current_user.email != @commentaire.dossier.user.email
invite = Invite.where(dossier: @commentaire.dossier, user: current_user).first invite = Invite.where(dossier: @commentaire.dossier, user: current_user).first
redirect_to url_for(controller: 'users/dossiers/invites', action: :show, id: invite.id) redirect_to url_for(controller: 'users/dossiers/invites', action: :show, id: invite.id)
else else
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params['dossier_id']) redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params['dossier_id'])
end end
end end
end
def is_gestionnaire? def is_gestionnaire?
false false

View file

@ -83,7 +83,8 @@ class FranceConnect::ParticulierController < ApplicationController
unless user.valid? unless user.valid?
flash.alert = 'Email non valide' flash.alert = 'Email non valide'
return redirect_to france_connect_particulier_new_path fci_id: params[:fci_id], salt: params[:salt], user: params[:user]
return redirect_to france_connect_particulier_new_path fci_id: params[:fci_id], salt: params[:salt], user: {email_france_connect: params[:user]['email_france_connect']}
end end
user.save user.save

View file

@ -1,5 +1,6 @@
class Gestionnaires::PasswordsController < Devise::PasswordsController class Gestionnaires::PasswordsController < Devise::PasswordsController
after_action :try_to_authenticate_user, only: %i(update) after_action :try_to_authenticate_user, only: %i(update)
after_action :try_to_authenticate_administrateur, only: %i(update)
# GET /resource/password/new # GET /resource/password/new
# def new # def new
@ -38,4 +39,11 @@ class Gestionnaires::PasswordsController < Devise::PasswordsController
sign_in user if user sign_in user if user
end end
end end
def try_to_authenticate_administrateur
if gestionnaire_signed_in?
administrateur = Administrateur.find_by(email: current_gestionnaire.email)
sign_in administrateur if administrateur
end
end
end end

View file

@ -2,12 +2,12 @@ class Gestionnaires::SessionsController < Sessions::SessionsController
def demo def demo
return redirect_to root_path if Rails.env.production? return redirect_to root_path if Rails.env.production?
@gestionnaire = Gestionnaire.new(email: 'gestionnaire@apientreprise.fr', password: 'password') @user = User.new(email: DemoEmails[:gestionnaire], password: 'password')
render 'new' render 'users/sessions/new'
end end
def new def new
@gestionnaire = Gestionnaire.new redirect_to new_user_session_path
end end
def create def create

View file

@ -1,22 +1,37 @@
class RootController < ApplicationController class RootController < ApplicationController
def index def index
route = Rails.application.routes.recognize_path(request.referrer)
if user_signed_in? if user_signed_in? && !route[:controller].match('users').nil?
redirect_to users_dossiers_path return redirect_to users_dossiers_path
elsif administrateur_signed_in? && !route[:controller].match('admin').nil?
return redirect_to admin_procedures_path
elsif gestionnaire_signed_in? elsif gestionnaire_signed_in?
redirect_to backoffice_dossiers_path procedure_id = current_gestionnaire.procedure_filter
if procedure_id.nil?
procedure_list = current_gestionnaire.procedures
if procedure_list.count > 0
return redirect_to backoffice_dossiers_procedure_path(id: procedure_list.first.id)
else
flash.alert = "Vous n'avez aucune procédure d'affectée"
end
else
return redirect_to backoffice_dossiers_procedure_path(id: procedure_id)
end
elsif user_signed_in?
return redirect_to users_dossiers_path
elsif administrateur_signed_in? elsif administrateur_signed_in?
redirect_to admin_procedures_path return redirect_to admin_procedures_path
elsif administration_signed_in? elsif administration_signed_in?
redirect_to administrations_path return redirect_to administrations_path
end
else
# @latest_release = Github::Releases.latest
@latest_release = nil
render 'landing' render 'landing'
end end
end end
end

View file

@ -32,7 +32,8 @@ class Users::CarteController < UsersController
end end
def get_position def get_position
point = Carto::Geocodeur.convert_adresse_to_point(current_user_dossier.etablissement.geo_adresse) etablissement = current_user_dossier.etablissement
point = Carto::Geocodeur.convert_adresse_to_point(etablissement.geo_adresse) unless etablissement.nil?
lon = '2.428462' lon = '2.428462'
lat = '46.538192' lat = '46.538192'

View file

@ -1,28 +0,0 @@
class Users::ConfirmationsController < Devise::ConfirmationsController
# GET /resource/confirmation/new
# def new
# super
# end
# POST /resource/confirmation
# def create
# super
# end
# GET /resource/confirmation?confirmation_token=abcdef
# def show
# super
# end
# protected
# The path used after resending confirmation instructions.
# def after_resending_confirmation_instructions_path_for(resource_name)
# super(resource_name)
# end
# The path used after confirmation.
# def after_confirmation_path_for(resource_name, resource)
# super(resource_name, resource)
# end
end

View file

@ -12,16 +12,21 @@ class Users::DescriptionController < UsersController
@procedure = @dossier.procedure @procedure = @dossier.procedure
@champs = @dossier.ordered_champs @champs = @dossier.ordered_champs
@headers = @champs.inject([]) do |acc, champ|
acc.push(champ) if champ.type_champ == 'header_section'
acc
end
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
flash.alert = t('errors.messages.dossier_not_found') flash.alert = t('errors.messages.dossier_not_found')
redirect_to url_for(root_path) redirect_to url_for(root_path)
end end
def error # def error
show # show
flash.now.alert = 'Un ou plusieurs attributs obligatoires sont manquants ou incorrects.' # flash.now.alert = 'Un ou plusieurs attributs obligatoires sont manquants ou incorrects.'
render 'show' # render 'show'
end # end
def create def create
@dossier = current_user_dossier @dossier = current_user_dossier
@ -34,16 +39,16 @@ class Users::DescriptionController < UsersController
unless @dossier.update_attributes(create_params) unless @dossier.update_attributes(create_params)
@dossier = @dossier.decorate @dossier = @dossier.decorate
flash.now.alert = @dossier.errors.full_messages.join('<br />').html_safe flash.alert = @dossier.errors.full_messages.join('<br />').html_safe
return render 'show' return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
end end
unless params[:champs].nil? unless params[:champs].nil?
champs_service_errors = ChampsService.save_formulaire @dossier.champs, params, mandatory champs_service_errors = ChampsService.save_formulaire @dossier.champs, params, mandatory
unless champs_service_errors.empty? unless champs_service_errors.empty?
flash.now.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'<br>' }).html_safe flash.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'<br>' }).html_safe
return render 'show' return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
end end
end end
@ -51,15 +56,15 @@ class Users::DescriptionController < UsersController
unless params[:cerfa_pdf].nil? unless params[:cerfa_pdf].nil?
cerfa = Cerfa.new(content: params[:cerfa_pdf], dossier: @dossier, user: current_user) cerfa = Cerfa.new(content: params[:cerfa_pdf], dossier: @dossier, user: current_user)
unless cerfa.save unless cerfa.save
flash.now.alert = cerfa.errors.full_messages.join('<br />').html_safe flash.alert = cerfa.errors.full_messages.join('<br />').html_safe
return render 'show' return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
end end
end end
end end
unless (errors_upload = PiecesJustificativesService.upload!(@dossier, current_user, params)).empty? unless (errors_upload = PiecesJustificativesService.upload!(@dossier, current_user, params)).empty?
flash.alert = errors_upload.html_safe flash.alert = errors_upload.html_safe
return render 'show' return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
end end

View file

@ -27,7 +27,7 @@ class Users::DossiersController < UsersController
def commencer def commencer
unless params[:procedure_path].nil? unless params[:procedure_path].nil?
procedure = ProcedurePath.where(path: params[:procedure_path]).first!.procedure procedure = ProcedurePath.where(path: params[:procedure_path]).last.procedure
end end
if procedure.archived? if procedure.archived?
@ -115,12 +115,12 @@ class Users::DossiersController < UsersController
@facade = facade params[:dossier][:id] @facade = facade params[:dossier][:id]
if checked_autorisation_donnees? if checked_autorisation_donnees?
begin unless Dossier.find(@facade.dossier.id).update_attributes update_params
@facade.dossier.update_attributes!(update_params) flash.alert = @facade.dossier.errors.full_messages.join('<br />').html_safe
rescue
flash.now.alert = @facade.dossier.errors.full_messages.join('<br />').html_safe return redirect_to users_dossier_path(id: @facade.dossier.id)
return render 'show'
end end
if @facade.dossier.procedure.module_api_carto.use_api_carto if @facade.dossier.procedure.module_api_carto.use_api_carto
redirect_to url_for(controller: :carte, action: :show, dossier_id: @facade.dossier.id) redirect_to url_for(controller: :carte, action: :show, dossier_id: @facade.dossier.id)
else else

View file

@ -1,5 +1,6 @@
class Users::PasswordsController < Devise::PasswordsController class Users::PasswordsController < Devise::PasswordsController
after_action :try_to_authenticate_gestionnaire, only: %i(update) after_action :try_to_authenticate_gestionnaire, only: %i(update)
after_action :try_to_authenticate_administrateur, only: %i(update)
# GET /resource/password/new # GET /resource/password/new
# def new # def new
@ -38,4 +39,11 @@ class Users::PasswordsController < Devise::PasswordsController
sign_in gestionnaire if gestionnaire sign_in gestionnaire if gestionnaire
end end
end end
def try_to_authenticate_administrateur
if user_signed_in?
administrateur = Administrateur.find_by(email: current_user.email)
sign_in administrateur if administrateur
end
end
end end

View file

@ -14,7 +14,7 @@ class Users::RecapitulatifController < UsersController
@facade.dossier.next_step! 'user', 'initiate' @facade.dossier.next_step! 'user', 'initiate'
flash.notice = 'Dossier soumis avec succès.' flash.notice = 'Dossier soumis avec succès.'
render 'show' redirect_to users_dossier_recapitulatif_path
end end
def submit def submit
@ -23,12 +23,12 @@ class Users::RecapitulatifController < UsersController
@facade.dossier.submit! @facade.dossier.submit!
flash.notice = 'Dossier déposé avec succès.' flash.notice = 'Dossier déposé avec succès.'
render 'show' redirect_to users_dossier_recapitulatif_path
end end
def self.route_authorization def self.route_authorization
{ {
states: [:initiated, :replied, :updated, :validated, :received, :submitted, :without_continuation, :closed] states: [:initiated, :replied, :updated, :validated, :received, :submitted, :without_continuation, :closed, :refused]
} }
end end

View file

@ -1,6 +1,6 @@
class Users::RegistrationsController < Devise::RegistrationsController class Users::RegistrationsController < Devise::RegistrationsController
# before_filter :configure_sign_up_params, only: [:create] # before_action :configure_sign_up_params, only: [:create]
# before_filter :configure_account_update_params, only: [:update] # before_action :configure_account_update_params, only: [:update]
def after_sign_up_path_for(resource_or_scope) def after_sign_up_path_for(resource_or_scope)
WelcomeMailer.welcome_email(resource_or_scope).deliver_now! WelcomeMailer.welcome_email(resource_or_scope).deliver_now!
@ -69,6 +69,6 @@ class Users::RegistrationsController < Devise::RegistrationsController
def check_invite! user def check_invite! user
Invite.where(email: user.email) Invite.where(email: user.email)
.each { |invite| invite.update_attribute(:user, user) } .each { |invite| invite.update user: user }
end end
end end

View file

@ -1,11 +1,10 @@
class Users::SessionsController < Sessions::SessionsController class Users::SessionsController < Sessions::SessionsController
# before_filter :configure_sign_in_params, only: [:create] # before_action :configure_sign_in_params, only: [:create]
def demo def demo
return redirect_to root_path if Rails.env.production? return redirect_to root_path if Rails.env.production?
@user = User.new(email: 'demo@tps.fr', password: 'password') @user = User.new(email: DemoEmails[:user], password: 'password')
render 'new' render 'new'
end end
@ -23,7 +22,8 @@ class Users::SessionsController < Sessions::SessionsController
#POST /resource/sign_in #POST /resource/sign_in
def create def create
try_to_authenticate(User) try_to_authenticate(User)
try_to_authenticate(Gestionnaire) if Features.unified_login try_to_authenticate(Gestionnaire)
try_to_authenticate(Administrateur)
if user_signed_in? if user_signed_in?
current_user.update_attributes(loged_in_with_france_connect: '') current_user.update_attributes(loged_in_with_france_connect: '')
@ -33,7 +33,10 @@ class Users::SessionsController < Sessions::SessionsController
redirect_to after_sign_in_path_for(:user) redirect_to after_sign_in_path_for(:user)
elsif gestionnaire_signed_in? elsif gestionnaire_signed_in?
redirect_to backoffice_path redirect_to backoffice_path
elsif administrateur_signed_in?
redirect_to admin_path
else else
flash.alert = 'Mauvais couple login / mot de passe'
new new
render :new, status: 401 render :new, status: 401
end end
@ -41,9 +44,8 @@ class Users::SessionsController < Sessions::SessionsController
# DELETE /resource/sign_out # DELETE /resource/sign_out
def destroy def destroy
if gestionnaire_signed_in? sign_out :gestionnaire if gestionnaire_signed_in?
sign_out :gestionnaire sign_out :administrateur if administrateur_signed_in?
end
if user_signed_in? if user_signed_in?
connected_with_france_connect = current_user.loged_in_with_france_connect connected_with_france_connect = current_user.loged_in_with_france_connect

View file

@ -1,28 +0,0 @@
class Users::UnlocksController < Devise::UnlocksController
# GET /resource/unlock/new
# def new
# super
# end
# POST /resource/unlock
# def create
# super
# end
# GET /resource/unlock?unlock_token=abcdef
# def show
# super
# end
# protected
# The path used after sending unlock password instructions
# def after_sending_unlock_instructions_path_for(resource)
# super(resource)
# end
# The path used after unlocking the resource
# def after_unlock_path_for(resource)
# super(resource)
# end
end

View file

@ -1,4 +1,5 @@
class ChampDecorator < Draper::Decorator class ChampDecorator < Draper::Decorator
delegate_all
def value def value
if type_champ == 'checkbox' if type_champ == 'checkbox'
@ -6,8 +7,4 @@ class ChampDecorator < Draper::Decorator
end end
object.value object.value
end end
def type_champ
object.type_de_champ.type_champ
end
end end

View file

@ -3,7 +3,5 @@ class CommentaireDecorator < Draper::Decorator
def created_at_fr def created_at_fr
created_at.localtime.strftime('%d/%m/%Y - %H:%M') created_at.localtime.strftime('%d/%m/%Y - %H:%M')
rescue
'dd/mm/YYYY - HH:MM'
end end
end end

View file

@ -2,12 +2,6 @@ class DossierDecorator < Draper::Decorator
delegate :current_page, :per_page, :offset, :total_entries, :total_pages delegate :current_page, :per_page, :offset, :total_entries, :total_pages
delegate_all delegate_all
def display_date
date_previsionnelle.localtime.strftime('%d/%m/%Y')
rescue
'dd/mm/YYYY'
end
def first_creation def first_creation
created_at.localtime.strftime('%d/%m/%Y %H:%M') created_at.localtime.strftime('%d/%m/%Y %H:%M')
end end
@ -20,16 +14,6 @@ class DossierDecorator < Draper::Decorator
DossierDecorator.case_state_fr state DossierDecorator.case_state_fr state
end end
def class_qp_active
'qp' if procedure.module_api_carto.quartiers_prioritaires
end
def state_color_class
return 'text-danger' if waiting_for_gestionnaire?
return 'text-info' if waiting_for_user?
return 'text-success' if termine?
end
def self.case_state_fr state=self.state def self.case_state_fr state=self.state
h.t("activerecord.attributes.dossier.state.#{state}") h.t("activerecord.attributes.dossier.state.#{state}")
end end

View file

@ -1,15 +1,4 @@
class DossiersDecorator < Draper::CollectionDecorator class DossiersDecorator < Draper::CollectionDecorator
delegate :current_page, :per_page, :offset, :total_entries, :total_pages delegate :current_page, :per_page, :offset, :total_entries, :total_pages
def active_class_a_traiter page
'active' if page == 'a_traiter'
end
def active_class_en_attente page
'active' if page == 'en_attente'
end
def active_class_termine page
'active' if page == 'termine'
end
end end

View file

@ -0,0 +1,8 @@
class NotificationDecorator < Draper::Decorator
delegate_all
def index_display
['champs', 'piece_justificative'].include?(type_notif) ? type = liste.join(" ") : type = liste.last
{ dossier: "Dossier n°#{dossier.id}", date: created_at.strftime('%d/%m %H:%M'), type: type }
end
end

View file

@ -3,7 +3,6 @@ class DossierFacades
#TODO rechercher en fonction de la personne/email #TODO rechercher en fonction de la personne/email
def initialize(dossier_id, email, champ_id = nil) def initialize(dossier_id, email, champ_id = nil)
@dossier = Dossier.where(archived: false).find(dossier_id) @dossier = Dossier.where(archived: false).find(dossier_id)
@email = email
@champ_id = champ_id @champ_id = champ_id
end end
@ -11,6 +10,10 @@ class DossierFacades
@dossier.decorate @dossier.decorate
end end
def last_notifications
@dossier.notifications.order("updated_at DESC").limit(5)
end
def champs def champs
@dossier.ordered_champs @dossier.ordered_champs
end end
@ -27,6 +30,10 @@ class DossierFacades
@dossier.ordered_pieces_justificatives @dossier.ordered_pieces_justificatives
end end
def types_de_pieces_justificatives
@dossier.types_de_piece_justificative.order('order_place ASC')
end
def champ_id def champ_id
@champ_id @champ_id
end end
@ -35,10 +42,6 @@ class DossierFacades
@dossier.ordered_commentaires.where(champ_id: @champ_id).decorate @dossier.ordered_commentaires.where(champ_id: @champ_id).decorate
end end
def commentaire_email
@email
end
def procedure def procedure
@dossier.procedure @dossier.procedure
end end

View file

@ -1,6 +1,8 @@
class DossiersListFacades class DossiersListFacades
include Rails.application.routes.url_helpers include Rails.application.routes.url_helpers
attr_accessor :procedure, :current_devise_profil, :liste
def initialize current_devise_profil, liste, procedure = nil def initialize current_devise_profil, liste, procedure = nil
@current_devise_profil = current_devise_profil @current_devise_profil = current_devise_profil
@liste = liste @liste = liste
@ -16,12 +18,28 @@ class DossiersListFacades
end end
end end
def liste def total_dossier
@liste current_devise_profil.dossiers.where(archived: false).count
end
def total_new_dossier
current_devise_profil.dossiers.where(state: :initiated, archived: false).count
end
def new_dossier_number procedure_id
current_devise_profil.dossiers.where(state: :initiated, archived: false, procedure_id: procedure_id).count
end end
def gestionnaire_procedures_name_and_id_list def gestionnaire_procedures_name_and_id_list
@current_devise_profil.procedures.order('libelle ASC').inject([]) { |acc, procedure| acc.push({id: procedure.id, libelle: procedure.libelle}) } @current_devise_profil.procedures.order('libelle ASC').inject([]) { |acc, procedure| acc.push({id: procedure.id, libelle: procedure.libelle, unread_notifications: @current_devise_profil.dossier_with_notification_for(procedure)}) }
end
def unread_notifications
current_devise_profil.notifications
end
def dossiers_with_unread_notifications
(unread_notifications.inject([]) { |acc, notif| acc.push(notif.dossier) }).uniq
end end
def procedure_id def procedure_id
@ -42,34 +60,18 @@ class DossiersListFacades
preference_list_dossiers_filter.where(table: :champs).where.not(filter: '').size == 0 preference_list_dossiers_filter.where(table: :champs).where.not(filter: '').size == 0
end end
def all_state_class
(@liste == 'all_state' ? 'active' : '')
end
def brouillon_class def brouillon_class
(@liste == 'brouillon' ? 'active' : '') (@liste == 'brouillon' ? 'active' : '')
end end
def nouveaux_class
(@liste == 'nouveaux' ? 'active' : '')
end
def a_traiter_class
(@liste == 'a_traiter' ? 'active' : '')
end
def en_construction_class def en_construction_class
(@liste == 'a_traiter' ? 'active' : '') (@liste == 'a_traiter' ? 'active' : '')
end end
def fige_class
(@liste == 'fige' ? 'active' : '')
end
def en_attente_class
(@liste == 'en_attente' ? 'active' : '')
end
def deposes_class
(@liste == 'deposes' ? 'active' : '')
end
def valides_class def valides_class
(@liste == 'valides' ? 'active' : '') (@liste == 'valides' ? 'active' : '')
end end
@ -78,24 +80,16 @@ class DossiersListFacades
(@liste == 'en_instruction' ? 'active' : '') (@liste == 'en_instruction' ? 'active' : '')
end end
def a_instruire_class
(@liste == 'a_instruire' ? 'active' : '')
end
def termine_class def termine_class
(@liste == 'termine' ? 'active' : '') (@liste == 'termine' ? 'active' : '')
end end
def suivi_class
(@liste == 'suivi' ? 'active' : '')
end
def invite_class def invite_class
(@liste == 'invite' ? 'active' : '') (@liste == 'invite' ? 'active' : '')
end end
def search_class def all_state_total
(@liste == 'search' ? 'active' : '') service.all_state.count
end end
def brouillon_total def brouillon_total
@ -106,38 +100,18 @@ class DossiersListFacades
service.nouveaux.count service.nouveaux.count
end end
def a_traiter_total
service.ouvert.count
end
def en_construction_total def en_construction_total
service.en_construction.count service.en_construction.count
end end
def fige_total
service.fige.count
end
def en_attente_total
service.waiting_for_user.count
end
def valides_total def valides_total
service.valides.count service.valides.count
end end
def deposes_total
service.deposes.count
end
def en_instruction_total def en_instruction_total
service.en_instruction.count service.en_instruction.count
end end
def a_instruire_total
service.a_instruire.count
end
def termine_total def termine_total
service.termine.count service.termine.count
end end
@ -150,42 +124,6 @@ class DossiersListFacades
service.invite.count service.invite.count
end end
def brouillon_url
base_url 'brouillon'
end
def nouveaux_url
base_url 'nouveaux'
end
def a_traiter_url
base_url 'a_traiter'
end
def en_construction_url
base_url 'a_traiter'
end
def fige_url
base_url 'fige'
end
def en_attente_url
base_url 'en_attente'
end
def deposes_url
base_url 'deposes'
end
def a_instruire_url
base_url 'a_instruire'
end
def termine_url
base_url 'termine'
end
def filter_url def filter_url
@procedure.nil? ? backoffice_dossiers_filter_path(liste: liste) : backoffice_dossiers_procedure_filter_path(id: @procedure.id, liste: liste) @procedure.nil? ? backoffice_dossiers_filter_path(liste: liste) : backoffice_dossiers_procedure_filter_path(id: @procedure.id, liste: liste)
end end

View file

@ -2,8 +2,6 @@ class InviteDossierFacades < DossierFacades
#TODO rechercher en fonction de la personne/email #TODO rechercher en fonction de la personne/email
def initialize dossier_id, email def initialize dossier_id, email
@dossier = (Invite.where(email: email).find(dossier_id)).dossier @dossier = Invite.where(email: email, dossier_id: dossier_id).first!.dossier
@email = email
end end
end end

View file

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

View file

@ -11,7 +11,15 @@ module Carto
end end
def self.pays def self.pays
File.open('lib/carto/geo_api/pays.json').read File.open('app/lib/carto/geo_api/pays.json').read
end
def self.departements_url
'https://geo.api.gouv.fr/departements'
end
def self.regions_url
'https://geo.api.gouv.fr/regions'
end end
private private
@ -22,13 +30,6 @@ module Carto
nil nil
end end
def self.departements_url
'https://geo.api.gouv.fr/departements'
end
def self.regions_url
'https://geo.api.gouv.fr/regions'
end
end end
end end
end end

View file

@ -21,6 +21,9 @@ class CARTO::SGMAP::API
url, url,
verify_ssl: verify_ssl_mode, verify_ssl: verify_ssl_mode,
).post params[:geojson], content_type: 'application/json' ).post params[:geojson], content_type: 'application/json'
rescue RestClient::InternalServerError
raise RestClient::ResourceNotFound
end end
def self.base_url def self.base_url

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