Merge branch 'staging_v2' into staging

This commit is contained in:
Xavier J 2016-12-19 12:22:22 +01:00
commit 8ed29ba438
327 changed files with 5652 additions and 3116 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

35
Gemfile
View file

@ -1,22 +1,20 @@
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'
# 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 +45,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 +82,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 +96,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 +105,17 @@ 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'
end end
group :development, :test do group :development, :test do
@ -124,8 +126,6 @@ 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'
@ -137,13 +137,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,121 @@ 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-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 +425,91 @@ 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)
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 +523,72 @@ 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 (2.0.0)
activesupport (>= 4.2)
spring-commands-rspec (1.0.4) spring-commands-rspec (1.0.4)
spring (>= 0.9.1) 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 +597,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)
@ -602,7 +629,7 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
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,15 @@ 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
railroady railroady
rails (= 4.2.7.1) rails (= 5.0.0.1)
rails-controller-testing
rest-client rest-client
rgeo-geojson rgeo-geojson
rspec-rails (~> 3.0) rspec-rails (~> 3.0)
@ -662,11 +691,12 @@ DEPENDENCIES
spring-commands-rspec 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.

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

@ -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,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

@ -4,16 +4,16 @@ $(document).ready(the_terms);
function the_terms() { function the_terms() {
var the_terms = $("#dossier_autorisation_donnees"); var the_terms = $("#dossier_autorisation_donnees");
if(the_terms.size() == 0) if (the_terms.size() == 0)
return; return;
check_value (the_terms); check_value(the_terms);
the_terms.click(function () { the_terms.click(function () {
check_value (the_terms); check_value(the_terms);
}); });
function check_value (the_terms){ function check_value(the_terms) {
if (the_terms.is(":checked")) { if (the_terms.is(":checked")) {
$("#etape_suivante").removeAttr("disabled"); $("#etape_suivante").removeAttr("disabled");
} else { } else {
@ -22,8 +22,8 @@ function the_terms() {
} }
} }
function error_form_siret(invalid_siret){ function error_form_siret(invalid_siret) {
setTimeout(function(){ setTimeout(function () {
$("input[type='submit']").val('Erreur SIRET'); $("input[type='submit']").val('Erreur SIRET');
}, 10); }, 10);
@ -33,12 +33,12 @@ function error_form_siret(invalid_siret){
} }
function reset_form_siret(){ function reset_form_siret() {
$("input[type='submit']").removeClass('btn-danger').addClass('btn-success').val('Valider'); $("input[type='submit']").removeClass('btn-danger').addClass('btn-success').val('Valider');
$("#dossier_siret").removeClass('input-error'); $("#dossier_siret").removeClass('input-error');
} }
function toggle_etape_1(){ function toggle_etape_1() {
$('.row.etape.etape_1 .etapes_menu #logos').toggle(100); $('.row.etape.etape_1 .etapes_menu #logos').toggle(100);
$('.row.etape.etape_1 .etapes_informations #description_procedure').toggle(100); $('.row.etape.etape_1 .etapes_informations #description_procedure').toggle(100);
} }

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

@ -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);
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,4 +1,8 @@
.table { #admin_index{
margin-left: 2em;
margin-right: 2em;
.table {
#id { #id {
width: 5%; width: 5%;
} }
@ -14,4 +18,6 @@
#direction { #direction {
width: 22%; width: 22%;
} }
}
} }

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,7 +32,11 @@ html, body {
} }
body { body {
padding-top: 50px; padding-top: 60px;
}
form {
margin-bottom: 0.3em;
} }
.wysihtml5-sandbox { .wysihtml5-sandbox {
@ -50,47 +54,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 +84,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 +176,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 +218,11 @@ div.pagination {
} }
} }
.no-padding {
padding: 0;
}
.no-margin {
margin: 0;
}

View file

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

View file

@ -1,17 +1,23 @@
#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;
.show-block {
width: 100%;
}
.body {
height: auto;
}
}
.fixed-right {
position: fixed;
right: 20px;
}
} }
#pref_list{ #pref_list {
.dropdown-menu { .dropdown-menu {
padding: 10px; padding: 10px;
width: 500px; width: 500px;

View file

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

View file

@ -0,0 +1,70 @@
.default_data_block {
font-family: Arial;
margin-top: 40px;
.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;
} }
} }

View file

@ -0,0 +1,185 @@
#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;
}
}
#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-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 {
margin-left: -10px;
overflow: scroll;
margin-top: 20px;
a, a:hover {
color: #FFFFFF;
text-decoration: none;
}
.procedure_list_element.active{
background-color: #668ABD;
}
.procedure_list_element {
padding: 15px 40px 15px 20px;
cursor: pointer;
line-height: 1.8em;
}
.procedure_list_element:hover{
background-color: #668ABD;
cursor: pointer;
}
}
.split-hr-left {
border-bottom: 1px solid #FFFFFF;
margin: 20px 10px 0px 0;
}

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,8 +1,3 @@
.max-size {
margin-left: -10rem;
margin-right: -10rem;
}
#landing { #landing {
background-image: image-url('landing_background.png'); background-image: image-url('landing_background.png');

View file

@ -0,0 +1,80 @@
#left-pannel {
padding: 60px 0 0 10px;
background-color: #003189;
height: 100%;
position: fixed;
top: 0;
left: 0;
bottom: 0;
color: white;
overflow: scroll;
#first-block {
font-family: Arial;
font-size: 16px;
line-height: 18px;
.infos {
font-size: 25px;
text-align: center;
margin: 20px 10px 30px 0;
.projet-name {
font-size: 25px;
line-height: normal;
padding: 5px;
}
}
.dossiers-en-cours, .en-cours {
margin-top: 20px;
}
.dossiers-en-cours, .nouveaux-dossiers, .en-cours {
line-height: initial;
text-align: center;
margin-right: 10px;
}
}
#action-block {
margin-right: 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%;
}
}
#menu-block {
}
#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;
}
.tips {
margin: 0 10px 0 5px;
.fa {
color: #FFFFFF;
font-size: 40px;
width: inherit;
padding: 5px;
}
.notice {
font-size: 18px;
display: initial;
}
}
}
}

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

@ -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 0;
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

@ -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

@ -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,14 +2,24 @@ 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?
{} {}
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,9 +2,19 @@ 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
@ -36,20 +46,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 +80,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
@ -123,7 +143,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

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

@ -1,22 +1,35 @@
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
end
elsif gestionnaire_signed_in? if 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
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 = Github::Releases.latest
@latest_release = nil @latest_release = nil
render 'landing' render 'landing'
end end
end
end end

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,6 +12,11 @@ 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)
@ -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?

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

@ -28,7 +28,7 @@ class Users::RecapitulatifController < UsersController
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,5 +1,5 @@
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?
@ -23,7 +23,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,6 +34,8 @@ 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
new new
render :new, status: 401 render :new, status: 401
@ -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

@ -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
@ -35,10 +34,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,8 +18,12 @@ 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 end
def gestionnaire_procedures_name_and_id_list def gestionnaire_procedures_name_and_id_list
@ -42,34 +48,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 +68,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 +88,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 +112,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

@ -3,7 +3,5 @@ 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).find(dossier_id)).dossier
@email = email
end end
end 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

@ -6,6 +6,7 @@ class Administrateur < ActiveRecord::Base
has_many :procedures has_many :procedures
before_save :ensure_api_token before_save :ensure_api_token
after_update :sync_credentials
def ensure_api_token def ensure_api_token
if api_token.nil? if api_token.nil?
@ -25,4 +26,11 @@ class Administrateur < ActiveRecord::Base
break token unless Administrateur.find_by(api_token: token) break token unless Administrateur.find_by(api_token: token)
end end
end end
def sync_credentials
if email_changed? || encrypted_password_changed?
return SyncCredentialsService.new(Administrateur, email_was, email, encrypted_password).change_credentials!
end
true
end
end end

View file

@ -3,4 +3,8 @@ class Commentaire < ActiveRecord::Base
belongs_to :champ belongs_to :champ
belongs_to :piece_justificative belongs_to :piece_justificative
def header
"#{email}, " + created_at.localtime.strftime('%d %b %Y %H:%M')
end
end end

View file

@ -55,7 +55,7 @@ class Dossier < ActiveRecord::Base
EN_INSTRUCTION = %w(submitted received) EN_INSTRUCTION = %w(submitted received)
A_INSTRUIRE = %w(received) A_INSTRUIRE = %w(received)
TERMINE = %w(closed refused without_continuation) TERMINE = %w(closed refused without_continuation)
ALL_STATE = %w(draft initiated updated replied validated submitted received closed refused without_continuation) ALL_STATE = %w(initiated updated replied validated submitted received closed refused without_continuation)
def retrieve_last_piece_justificative_by_type(type) def retrieve_last_piece_justificative_by_type(type)
pieces_justificatives.where(type_de_piece_justificative_id: type).last pieces_justificatives.where(type_de_piece_justificative_id: type).last

View file

@ -8,16 +8,16 @@ class Gestionnaire < ActiveRecord::Base
has_many :assign_to, dependent: :destroy has_many :assign_to, dependent: :destroy
has_many :procedures, through: :assign_to has_many :procedures, through: :assign_to
has_many :dossiers, through: :procedures has_many :dossiers, -> { where.not(state: :draft) }, through: :procedures
has_many :follows has_many :follows
has_many :preference_list_dossiers has_many :preference_list_dossiers
after_create :build_default_preferences_list_dossier after_create :build_default_preferences_list_dossier
after_create :build_default_preferences_smart_listing_page after_create :build_default_preferences_smart_listing_page
after_update :sync_credentials, if: -> { Features.unified_login } after_update :sync_credentials
def dossiers_follow def dossiers_follow
dossiers.joins(:follows).where("follows.gestionnaire_id = #{id}") @dossiers_follow ||= dossiers.joins(:follows).where("follows.gestionnaire_id = #{id}")
end end
def toggle_follow_dossier dossier_id def toggle_follow_dossier dossier_id
@ -88,12 +88,7 @@ class Gestionnaire < ActiveRecord::Base
def sync_credentials def sync_credentials
if email_changed? || encrypted_password_changed? if email_changed? || encrypted_password_changed?
user = User.find_by(email: email_was) return SyncCredentialsService.new(Gestionnaire, email_was, email, encrypted_password).change_credentials!
if user
return user.update_columns(
email: email,
encrypted_password: encrypted_password)
end
end end
true true
end end

View file

@ -15,7 +15,7 @@ class User < ActiveRecord::Base
delegate :given_name, :family_name, :email_france_connect, :gender, :birthdate, :birthplace, :france_connect_particulier_id, to: :france_connect_information delegate :given_name, :family_name, :email_france_connect, :gender, :birthdate, :birthplace, :france_connect_particulier_id, to: :france_connect_information
accepts_nested_attributes_for :france_connect_information accepts_nested_attributes_for :france_connect_information
after_update :sync_credentials, if: -> { Features.unified_login } after_update :sync_credentials
def self.find_for_france_connect email, siret def self.find_for_france_connect email, siret
user = User.find_by_email(email) user = User.find_by_email(email)
@ -39,12 +39,7 @@ class User < ActiveRecord::Base
def sync_credentials def sync_credentials
if email_changed? || encrypted_password_changed? if email_changed? || encrypted_password_changed?
gestionnaire = Gestionnaire.find_by(email: email_was) return SyncCredentialsService.new(User, email_was, email, encrypted_password).change_credentials!
if gestionnaire
return gestionnaire.update_columns(
email: email,
encrypted_password: encrypted_password)
end
end end
true true
end end

View file

@ -1,7 +1,6 @@
class CerfaSerializer < ActiveModel::Serializer class CerfaSerializer < ActiveModel::Serializer
attributes :created_at, attributes :created_at,
:content_url => :url :content_url
has_one :user has_one :user
end end

View file

@ -1,7 +1,7 @@
class PieceJustificativeSerializer < ActiveModel::Serializer class PieceJustificativeSerializer < ActiveModel::Serializer
attributes :created_at, attributes :created_at,
:type_de_piece_justificative_id, :type_de_piece_justificative_id,
:content_url => :url :content_url
has_one :user has_one :user
end end

View file

@ -1,7 +1,7 @@
class TypeDeChampSerializer < ActiveModel::Serializer class TypeDeChampSerializer < ActiveModel::Serializer
attributes :id, attributes :id,
:libelle, :libelle,
{:type_champ => :type}, :type_champ,
:order_place, :order_place,
:description :description
end end

View file

@ -12,7 +12,7 @@ class AccompagnateurService
if @to == ASSIGN if @to == ASSIGN
AssignTo.create(gestionnaire: @accompagnateur, procedure: @procedure) AssignTo.create(gestionnaire: @accompagnateur, procedure: @procedure)
elsif @to == NOT_ASSIGN elsif @to == NOT_ASSIGN
AssignTo.delete_all(gestionnaire: @accompagnateur, procedure: @procedure) AssignTo.where(gestionnaire: @accompagnateur, procedure: @procedure).delete_all
end end
end end

View file

@ -0,0 +1,19 @@
class BrowserService
def self.get_browser request
BROWSER.value = Browser.new(request.user_agent)
end
def self.recommended_browser?
browser = BROWSER.value
return false if browser.chrome? && browser.version.to_i < 40
return false if browser.ie?(["<10"])
return false if browser.firefox? && browser.version.to_i < 45
return false if browser.opera? && browser.version.to_i < 19
return false if browser.safari? && browser.version.to_i < 8
true
end
end

View file

@ -7,6 +7,7 @@ class DossiersListGestionnaireService
def dossiers_to_display def dossiers_to_display
{'nouveaux' => nouveaux, {'nouveaux' => nouveaux,
'suivi' => suivi,
'a_traiter' => ouvert, 'a_traiter' => ouvert,
'fige' => fige, 'fige' => fige,
'deposes' => deposes, 'deposes' => deposes,
@ -16,13 +17,17 @@ class DossiersListGestionnaireService
end end
def self.dossiers_liste_libelle def self.dossiers_liste_libelle
['nouveaux', 'a_traiter', 'fige' ,'deposes', 'a_instruire', 'termine', 'all_state'] ['nouveaux', 'suivi', 'a_traiter', 'fige', 'deposes', 'a_instruire', 'termine', 'all_state']
end end
def all_state def all_state
@all_state ||= filter_dossiers.all_state @all_state ||= filter_dossiers.all_state
end end
def suivi
@suivi ||= @current_devise_profil.dossiers_follow.merge(all_state)
end
def nouveaux def nouveaux
@nouveaux ||= filter_dossiers.nouveaux @nouveaux ||= filter_dossiers.nouveaux
end end
@ -49,7 +54,7 @@ class DossiersListGestionnaireService
def filter_dossiers def filter_dossiers
@filter_dossiers ||= @procedure.nil? ? @current_devise_profil.dossiers.joins(joins_filter).where(where_filter) : @procedure.dossiers.joins(joins_filter).where(where_filter) @filter_dossiers ||= @procedure.nil? ? @current_devise_profil.dossiers.joins(joins_filter).where(where_filter) : @procedure.dossiers.joins(joins_filter).where(where_filter)
@filter_dossiers.uniq @filter_dossiers.distinct
end end
def filter_procedure_reset! def filter_procedure_reset!
@ -183,4 +188,5 @@ class DossiersListGestionnaireService
def current_preference_smart_listing_page def current_preference_smart_listing_page
@current_devise_profil.preference_smart_listing_page @current_devise_profil.preference_smart_listing_page
end end
end end

View file

@ -0,0 +1,37 @@
class RenderPartialService
attr_accessor :controller, :method
def initialize controller, method
@controller = controller
@method = method
end
def navbar
retrieve_navbar
end
def left_panel
retrieve_left_panel
end
def self.left_panel_exist? left_panel_url
file = left_panel_url.split('/').last
File.exist?(Rails.root.join('app','views', 'layouts', 'left_panels', '_'+file+'.html.haml'))
end
private
def retrieve_navbar
'layouts/navbars/navbar_' + retrieve_name
end
def retrieve_left_panel
'layouts/left_panels/left_panel_' + retrieve_name
end
def retrieve_name
controller.to_s.parameterize.underscore + '_' + method.to_s
end
end

View file

@ -0,0 +1,25 @@
class SwitchDeviseProfileService
def initialize warden
@warden = warden
end
def multiple_devise_profile_connect?
user_signed_in? && gestionnaire_signed_in? ||
gestionnaire_signed_in? && administrateur_signed_in? ||
user_signed_in? && administrateur_signed_in?
end
private
def user_signed_in?
!@warden.authenticate(:scope => :user).nil?
end
def gestionnaire_signed_in?
!@warden.authenticate(:scope => :gestionnaire).nil?
end
def administrateur_signed_in?
!@warden.authenticate(:scope => :administrateur).nil?
end
end

View file

@ -0,0 +1,38 @@
class SyncCredentialsService
def initialize klass, email_was, email, encrypted_password
@klass = klass
@email_was = email_was
@email = email
@encrypted_password = encrypted_password
end
def change_credentials!
unless @klass == User
user = User.find_by(email: @email_was)
if user
return user.update_columns(
email: @email,
encrypted_password: @encrypted_password)
end
end
unless @klass == Gestionnaire
gestionnaire = Gestionnaire.find_by(email: @email_was)
if gestionnaire
return gestionnaire.update_columns(
email: @email,
encrypted_password: @encrypted_password)
end
end
unless @klass == Administrateur
administrateur = Administrateur.find_by(email: @email_was)
if administrateur
return administrateur.update_columns(
email: @email,
encrypted_password: @encrypted_password)
end
end
end
end

View file

@ -7,9 +7,10 @@ class TypesDeChampService
.permit("#{attributes}" => [:libelle, :description, :order_place, :type_champ, :id, :mandatory, :type, .permit("#{attributes}" => [:libelle, :description, :order_place, :type_champ, :id, :mandatory, :type,
drop_down_list_attributes: [:value, :id]]) drop_down_list_attributes: [:value, :id]])
parameters[attributes].each do |param|
if param.second[:libelle].empty? parameters[attributes].each do |param_first, param_second|
parameters[attributes].delete(param.first.to_s) if param_second[:libelle].empty?
parameters[attributes].delete(param_first.to_s)
end end
end end

View file

@ -3,7 +3,7 @@
= text_field_tag :filter, '', class: "search form-control", = text_field_tag :filter, '', class: "search form-control",
placeholder: "Recherche...", autocomplete: :off placeholder: "Recherche...", autocomplete: :off
%button.btn.btn-primary{type: :submit} %button.btn.btn-primary{type: :submit}
%span.glyphicon.glyphicon-search %span.fa.fa-search
- unless smart_listing.empty? - unless smart_listing.empty?
@ -16,7 +16,7 @@
%tr %tr
%td.col-md-11.col-lg-11{style:'padding-top: 11px; font-size:15px'}= accompagnateur.email %td.col-md-11.col-lg-11{style:'padding-top: 11px; font-size:15px'}= accompagnateur.email
%td.center %td.center
%a.btn.btn-success{href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::ASSIGN)}", 'data-method' => 'put'} %a.btn.btn-success.gestionnaire-affectation{href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::ASSIGN)}", 'data-method' => 'put'}
.fa.fa-arrow-right .fa.fa-arrow-right

View file

@ -1,6 +1,7 @@
=render partial: 'admin/procedures/head', locals: {active: 'Accompagnateurs'} .row.white-back
= render partial: 'admin/procedures/head', locals: {active: 'Accompagnateurs'}
#accompagnateur_form #accompagnateur_form
.row .row
.col-md-6.col-lg-6 .col-md-6.col-lg-6
%h3.text-info Disponibles %h3.text-info Disponibles
@ -8,7 +9,7 @@
%br %br
%h3 %h3
=t('dynamics.admin.procedure.onglet_accompagnateurs.add.title') = t('dynamics.admin.procedure.onglet_accompagnateurs.add.title')
#procedure_new.section.section-label #procedure_new.section.section-label
= form_for @gestionnaire, url: {controller: 'admin/gestionnaires', action: :create} do |f| = form_for @gestionnaire, url: {controller: 'admin/gestionnaires', action: :create} do |f|
.row .row
@ -18,11 +19,7 @@
.col-md-2.col-lg-2 .col-md-2.col-lg-2
%br %br
%br %br
=f.submit 'Valider', class: 'btn btn-info', style: 'float:left' = f.submit 'Valider', class: 'btn btn-info', style: 'float:left', id: 'add-gestionnaire-email'
.col-md-6.col-lg-6 .col-md-6.col-lg-6
%h3.text-success Affectés %h3.text-success Affectés
= smart_listing_render :accompagnateurs_assign = smart_listing_render :accompagnateurs_assign

View file

@ -1,5 +1,5 @@
-{email: 'Email*'}.each do |key, value| -{email: 'Email*'}.each do |key, value|
.form-group{class: ('has-error' if @gestionnaire.errors.messages[key])} .form-group
%h4 %h4
=value = value
=f.text_field key, class: 'form-control', placeholder: value = f.text_field key, class: 'form-control', placeholder: value

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