From d7fdf22abb0a6d3b12259402e01117e6234b40c2 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 14 Nov 2016 17:33:45 +0100 Subject: [PATCH 001/182] First fixed --- Gemfile | 16 +- Gemfile.lock | 495 +++++++++--------- Guardfile | 2 +- app/controllers/api_controller.rb | 2 +- app/controllers/application_controller.rb | 2 +- .../users/registrations_controller.rb | 4 +- app/controllers/users/sessions_controller.rb | 2 +- .../dossiers_list_gestionnaire_service.rb | 2 +- .../_list_not_assign.html.haml | 2 +- app/views/admin/gestionnaires/_list.html.haml | 4 +- .../administrateurs/sessions/new.html.haml | 4 +- .../dossiers/_pieces_justificatives.html.haml | 4 +- .../gestionnaires/passwords/edit.html.haml | 4 +- .../gestionnaires/passwords/new.html.haml | 2 +- .../gestionnaires/sessions/new.html.haml | 4 +- app/views/users/passwords/edit.html.haml | 4 +- app/views/users/passwords/new.html.haml | 2 +- app/views/users/registrations/new.html.haml | 6 +- config/environments/development.rb | 3 + config/environments/production.rb | 2 +- config/environments/test.rb | 4 +- db/schema.rb | 87 ++- .../glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes 24 files changed, 322 insertions(+), 335 deletions(-) delete mode 100755 public/fonts/bootstrap/glyphicons-halflings-regular.woff create mode 100644 public/fonts/bootstrap/glyphicons-halflings-regular.woff2 diff --git a/Gemfile b/Gemfile index dbefab4c0..b99597f66 100644 --- a/Gemfile +++ b/Gemfile @@ -2,14 +2,13 @@ source 'https://rubygems.org' # 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 gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' -# Use CoffeeScript for .coffee assets and views -gem 'coffee-rails', '~> 4.1.0' + # See https://github.com/sstephenson/execjs#readme for more supported runtimes gem 'therubyracer', platforms: :ruby @@ -47,10 +46,10 @@ gem 'bootstrap-sass', '~> 3.3.5' gem 'will_paginate-bootstrap' # Decorators -gem 'draper' +gem 'draper', '~> 3.0.0.pre1' #Gestion des comptes utilisateurs -gem 'devise', '~> 3.0' +gem 'devise' gem 'openid_connect' gem 'rest-client' @@ -111,6 +110,10 @@ group :test do gem 'vcr' end +group :development do + gem 'web-console', '~> 2.0' +end + group :development, :test do # gem 'terminal-notifier' # gem 'terminal-notifier-guard' @@ -120,7 +123,6 @@ group :development, :test do gem 'pry-byebug' # Access an IRB console on exception pages or by using <%= console %> in views - gem 'web-console', '~> 2.0' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' @@ -135,7 +137,7 @@ group :development, :test do gem "nyan-cat-formatter" - gem 'parallel_tests', '~> 1.9.0' + gem 'parallel_tests', '~> 2.10' gem 'brakeman', require: false # Deploy diff --git a/Gemfile.lock b/Gemfile.lock index a42023ff3..8ea318242 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,150 +1,147 @@ GIT remote: https://github.com/mina-deploy/mina.git - revision: a66b55a72833b19ac0ffb240afb37c86c0227582 + revision: 5f407b28be1cf05cdfaab0558285aa031c445491 specs: - mina (0.3.7) + mina (1.0.3) open4 (~> 1.3.4) rake GEM remote: https://rubygems.org/ specs: - CFPropertyList (2.3.2) - actionmailer (4.2.7.1) - actionpack (= 4.2.7.1) - actionview (= 4.2.7.1) - activejob (= 4.2.7.1) + CFPropertyList (2.3.3) + actioncable (5.0.0.1) + actionpack (= 5.0.0.1) + nio4r (~> 1.2) + websocket-driver (~> 0.6.1) + actionmailer (5.0.0.1) + actionpack (= 5.0.0.1) + actionview (= 5.0.0.1) + activejob (= 5.0.0.1) mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.7.1) - actionview (= 4.2.7.1) - activesupport (= 4.2.7.1) - rack (~> 1.6) - rack-test (~> 0.6.2) - rails-dom-testing (~> 1.0, >= 1.0.5) + rails-dom-testing (~> 2.0) + actionpack (5.0.0.1) + actionview (= 5.0.0.1) + activesupport (= 5.0.0.1) + rack (~> 2.0) + rack-test (~> 0.6.3) + rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.7.1) - activesupport (= 4.2.7.1) + actionview (5.0.0.1) + activesupport (= 5.0.0.1) builder (~> 3.1) 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) - active_model_serializers (0.8.3) - activemodel (>= 3.0) - activejob (4.2.7.1) - activesupport (= 4.2.7.1) - globalid (>= 0.3.0) - activemodel (4.2.7.1) - activesupport (= 4.2.7.1) + active_model_serializers (0.10.2) + actionpack (>= 4.1, < 6) + activemodel (>= 4.1, < 6) + jsonapi (~> 0.1.1.beta2) + railties (>= 4.1, < 6) + activejob (5.0.0.1) + activesupport (= 5.0.0.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) - activerecord (4.2.7.1) - activemodel (= 4.2.7.1) - activesupport (= 4.2.7.1) - arel (~> 6.0) - activesupport (4.2.7.1) + activerecord (5.0.0.1) + activemodel (= 5.0.0.1) + activesupport (= 5.0.0.1) + arel (~> 7.0) + activesupport (5.0.0.1) + concurrent-ruby (~> 1.0, >= 1.0.2) i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.3.8) + addressable (2.5.0) + public_suffix (~> 2.0, >= 2.0.2) apipie-rails (0.3.1) json - arel (6.0.3) + arel (7.1.4) as_csv (2.0.2) actionpack (>= 3.0) activemodel (>= 3.0) responders - ast (2.0.0) - astrolabe (1.3.0) - parser (>= 2.2.0.pre.3, < 3.0) - attr_required (1.0.0) - autoprefixer-rails (5.2.1) + ast (2.3.0) + attr_required (1.0.1) + autoprefixer-rails (6.5.3) execjs - json bcrypt (3.1.11) - bindata (2.1.0) + bindata (2.3.4) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) - bootstrap-datepicker-rails (1.4.0) + bootstrap-datepicker-rails (1.6.4.1) railties (>= 3.0) - bootstrap-sass (3.3.5) - autoprefixer-rails (>= 5.0.0.1) - sass (>= 3.2.19) + bootstrap-sass (3.3.7) + autoprefixer-rails (>= 5.2.1) + sass (>= 3.3.4) bootstrap-wysihtml5-rails (0.3.3.8) railties (>= 3.0) - brakeman (3.1.1) - erubis (~> 2.6) - 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) + brakeman (3.4.1) + browser (2.3.0) builder (3.2.2) - byebug (5.0.0) - columnize (= 0.9.0) - capybara (2.4.4) + byebug (9.0.6) + capybara (2.10.1) + addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - carrierwave (0.10.0) + carrierwave (0.11.2) activemodel (>= 3.2.0) activesupport (>= 3.2.0) json (>= 1.7) mime-types (>= 1.16) - chartkick (1.3.2) - childprocess (0.5.5) + mimemagic (>= 0.3.0) + chartkick (2.1.1) + childprocess (0.5.9) ffi (~> 1.0, >= 1.0.11) - clamav-client (3.0.0) + clamav-client (3.1.0) cliver (0.3.2) - coderay (1.1.0) - coffee-rails (4.1.0) + coderay (1.1.1) + coffee-rails (4.2.1) 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-source execjs - coffee-script-source (1.9.1.1) - columnize (0.9.0) + coffee-script-source (1.10.0) concurrent-ruby (1.0.2) - crack (0.4.2) + crack (0.4.3) safe_yaml (~> 1.0.0) - database_cleaner (1.4.1) + database_cleaner (1.5.3) debug_inspector (0.0.2) - deep_cloneable (2.2.1) + deep_cloneable (2.2.2) activerecord (>= 3.1.0, < 5.2.0) - devise (3.5.10) + devise (4.2.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 3.2.6, < 5) + railties (>= 4.1.0, < 5.1) responders - thread_safe (~> 0.1) warden (~> 1.2.3) diff-lcs (1.2.5) docile (1.1.5) - domain_name (0.5.24) + domain_name (0.5.20161021) unf (>= 0.0.5, < 1.0.0) - draper (2.1.0) - actionpack (>= 3.0) - activemodel (>= 3.0) - activesupport (>= 3.0) + draper (3.0.0.pre1) + actionpack (~> 5.0) + activemodel (~> 5.0) + activemodel-serializers-xml (~> 1.0) + activesupport (~> 5.0) request_store (~> 1.0) erubis (2.7.0) - excon (0.49.0) + excon (0.54.0) execjs (2.7.0) - factory_girl (4.5.0) + factory_girl (4.7.0) activesupport (>= 3.0.0) - faraday (0.9.1) + faraday (0.9.2) multipart-post (>= 1.2, < 3) - fastercsv (1.5.5) - ffi (1.9.6) + ffi (1.9.14) fission (0.5.0) CFPropertyList (~> 2.2) fog (1.38.0) @@ -184,12 +181,12 @@ GEM fog-atmos (0.1.0) fog-core fog-xml - fog-aws (0.9.2) - fog-core (~> 1.27) + fog-aws (0.12.0) + fog-core (~> 1.38) fog-json (~> 1.0) fog-xml (~> 0.1) ipaddress (~> 0.8) - fog-brightbox (0.10.1) + fog-brightbox (0.11.0) fog-core (~> 1.22) fog-json inflecto (~> 0.0.2) @@ -198,7 +195,7 @@ GEM fog-json (~> 1.0) fog-xml (~> 0.1) ipaddress (~> 0.8) - fog-core (1.38.0) + fog-core (1.43.0) builder excon (~> 0.49) formatador (~> 0.2) @@ -216,22 +213,20 @@ GEM fog-json (1.0.2) fog-core (~> 1.0) multi_json (~> 1.10) - fog-local (0.3.0) + fog-local (0.3.1) fog-core (~> 1.27) - fog-openstack (0.1.5) - fog-core (>= 1.38) + fog-openstack (0.1.17) + fog-core (>= 1.40) fog-json (>= 1.0) - fog-xml (>= 0.1) ipaddress (>= 0.8) fog-powerdns (0.1.1) fog-core (~> 1.27) fog-json (~> 1.0) fog-xml (~> 0.1) - fog-profitbricks (0.0.5) - fog-core - fog-xml - nokogiri - fog-rackspace (0.1.1) + fog-profitbricks (3.0.0) + fog-core (~> 1.42) + fog-json (~> 1.0) + fog-rackspace (0.1.2) fog-core (>= 1.35) fog-json (>= 1.0) fog-xml (>= 0.1) @@ -250,7 +245,7 @@ GEM fog-serverlove (0.1.2) fog-core fog-json - fog-softlayer (1.1.1) + fog-softlayer (1.1.4) fog-core fog-json fog-storm_on_demand (0.1.1) @@ -265,21 +260,21 @@ GEM fog-voxel (0.1.0) fog-core fog-xml - fog-vsphere (0.6.4) + fog-vsphere (1.5.1) fog-core - rbvmomi (~> 1.8) + rbvmomi (~> 1.9) fog-xenserver (0.2.3) fog-core fog-xml fog-xml (0.1.2) fog-core nokogiri (~> 1.5, >= 1.5.11) - font-awesome-rails (4.4.0.0) - railties (>= 3.2, < 5.0) + font-awesome-rails (4.7.0.0) + railties (>= 3.2, < 5.1) formatador (0.2.5) globalid (0.3.7) activesupport (>= 4.1.0) - haml (4.0.6) + haml (4.0.7) tilt haml-rails (0.9.0) actionpack (>= 4.0.1) @@ -287,104 +282,113 @@ GEM haml (>= 4.0.6, < 5.0) html2haml (>= 1.0.1) railties (>= 4.0.1) - hashie (3.4.1) - highline (1.7.8) + hashdiff (0.3.0) + hashie (3.4.6) html2haml (2.0.0) erubis (~> 2.7.0) haml (~> 4.0.0) nokogiri (~> 1.6.0) ruby_parser (~> 3.5) - http-cookie (1.0.2) + http-cookie (1.0.3) domain_name (~> 0.5) - httpclient (2.6.0.1) + httpclient (2.8.2.4) i18n (0.7.0) inflecto (0.0.2) ipaddress (0.8.3) - jbuilder (2.3.1) - activesupport (>= 3.0.0, < 5) + jbuilder (2.6.0) + activesupport (>= 3.0.0, < 5.1) multi_json (~> 1.2) - jquery-rails (4.0.4) - rails-dom-testing (~> 1.0) + jquery-rails (4.2.1) + rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.3) - json-jwt (1.5.1) + json-jwt (1.6.5) activesupport bindata multi_json (>= 1.3) securecompare url_safe_base64 - kaminari (0.16.3) + jsonapi (0.1.1.beta6) + jsonapi-parser (= 0.1.1.beta3) + jsonapi-renderer (= 0.1.1.beta1) + jsonapi-parser (0.1.1.beta3) + jsonapi-renderer (0.1.1.beta1) + kaminari (0.17.0) actionpack (>= 3.0.0) activesupport (>= 3.0.0) - kgio (2.9.3) + kgio (2.10.0) leaflet-draw-rails (0.1.0) leaflet-markercluster-rails (0.7.0) railties (>= 3.1) - leaflet-rails (0.7.4) - libv8 (3.16.14.7) + leaflet-rails (0.7.7) + libv8 (3.16.14.15) logstash-event (1.2.02) - logstasher (0.6.5) + logstasher (1.0.1) + activerecord (>= 4.0) + activesupport (>= 4.0) logstash-event (~> 1.2.0) request_store loofah (2.0.3) nokogiri (>= 1.5.9) mail (2.6.4) mime-types (>= 1.16, < 4) - mailjet (1.1.0) + mailjet (1.4.10) activesupport (>= 3.1.0) rack (>= 1.4.0) rest-client maruku (0.7.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) - minitest (5.9.0) - multi_json (1.11.2) + minitest (5.9.1) + multi_json (1.12.1) multipart-post (2.0.0) - netrc (0.10.3) - nokogiri (1.6.8) + netrc (0.11.0) + nio4r (1.2.1) + nokogiri (1.6.8.1) mini_portile2 (~> 2.1.0) - pkg-config (~> 1.1.7) nyan-cat-formatter (0.11) rspec (>= 2.99, >= 2.14.2, < 4) open4 (1.3.4) - openid_connect (0.9.2) + openid_connect (0.12.0) activemodel attr_required (>= 1.0.0) json (>= 1.4.3) json-jwt (>= 1.5.0) - rack-oauth2 (>= 1.2.1) + rack-oauth2 (>= 1.3.1) swd (>= 1.0.0) tzinfo validate_email validate_url webfinger (>= 1.0.1) - openstack (2.0.2) + openstack (3.3.3) json orm_adapter (0.5.0) parallel (1.9.0) - parallel_tests (1.9.0) + parallel_tests (2.10.0) parallel - parser (2.2.2.2) - ast (>= 1.1, < 3.0) - pg (0.18.2) - pkg-config (1.1.7) - poltergeist (1.6.0) + parser (2.3.1.4) + ast (~> 2.2) + pg (0.19.0) + poltergeist (1.11.0) capybara (~> 2.1) cliver (~> 0.3.1) - multi_json (~> 1.0) websocket-driver (>= 0.2.0) - powerpack (0.1.0) - pry (0.10.1) + powerpack (0.1.1) + pry (0.10.4) coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) - pry-byebug (3.2.0) - byebug (~> 5.0) + pry-byebug (3.4.0) + byebug (~> 9.0) pry (~> 0.10) - rack (1.6.4) - rack-oauth2 (1.2.1) + public_suffix (2.0.4) + rack (2.0.1) + rack-oauth2 (1.4.0) activesupport (>= 2.3) attr_required (>= 0.0.5) httpclient (>= 2.4) @@ -392,88 +396,85 @@ GEM rack (>= 1.1) rack-test (0.6.3) rack (>= 1.0) - railroady (1.3.0) - rails (4.2.7.1) - actionmailer (= 4.2.7.1) - actionpack (= 4.2.7.1) - actionview (= 4.2.7.1) - activejob (= 4.2.7.1) - activemodel (= 4.2.7.1) - activerecord (= 4.2.7.1) - activesupport (= 4.2.7.1) + railroady (1.5.2) + rails (5.0.0.1) + actioncable (= 5.0.0.1) + actionmailer (= 5.0.0.1) + actionpack (= 5.0.0.1) + actionview (= 5.0.0.1) + activejob (= 5.0.0.1) + activemodel (= 5.0.0.1) + activerecord (= 5.0.0.1) + activesupport (= 5.0.0.1) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.7.1) - sprockets-rails - rails-deprecated_sanitizer (1.0.3) - activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.7) - activesupport (>= 4.2.0.beta, < 5.0) + railties (= 5.0.0.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.1) + activesupport (>= 4.2.0, < 6.0) nokogiri (~> 1.6.0) - rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.3) loofah (~> 2.0) - railties (4.2.7.1) - actionpack (= 4.2.7.1) - activesupport (= 4.2.7.1) + railties (5.0.0.1) + actionpack (= 5.0.0.1) + activesupport (= 5.0.0.1) + method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rainbow (2.0.0) - raindrops (0.13.0) - rake (11.2.2) - rbvmomi (1.8.2) - builder - nokogiri (>= 1.4.1) - trollop - rdoc (4.2.0) - json (~> 1.4) + rainbow (2.1.0) + raindrops (0.17.0) + rake (11.3.0) + rbvmomi (1.9.4) + builder (~> 3.2) + json (>= 1.8) + nokogiri (~> 1.5) + trollop (~> 2.1) + rdoc (4.3.0) ref (2.0.0) - request_store (1.1.0) + request_store (1.3.1) responders (2.3.0) railties (>= 4.2.0, < 5.1) - rest-client (1.8.0) + rest-client (2.0.0) http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 3.0) - netrc (~> 0.7) - rgeo (0.3.20) - rgeo-geojson (0.3.1) - rgeo (~> 0.3) - rspec (3.2.0) - rspec-core (~> 3.2.0) - rspec-expectations (~> 3.2.0) - rspec-mocks (~> 3.2.0) - rspec-core (3.2.3) - rspec-support (~> 3.2.0) - rspec-expectations (3.2.1) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) + rgeo (0.5.3) + rgeo-geojson (0.4.3) + rgeo (~> 0.5) + rspec (3.5.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-core (3.5.4) + rspec-support (~> 3.5.0) + rspec-expectations (3.5.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.2.0) - rspec-mocks (3.2.1) + rspec-support (~> 3.5.0) + rspec-mocks (3.5.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.2.0) - rspec-rails (3.2.1) - actionpack (>= 3.0, < 4.3) - activesupport (>= 3.0, < 4.3) - railties (>= 3.0, < 4.3) - rspec-core (~> 3.2.0) - rspec-expectations (~> 3.2.0) - rspec-mocks (~> 3.2.0) - rspec-support (~> 3.2.0) - rspec-support (3.2.2) - rubocop (0.30.1) - astrolabe (~> 1.3) - parser (>= 2.2.2.1, < 3.0) + rspec-support (~> 3.5.0) + rspec-rails (3.5.2) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-support (~> 3.5.0) + rspec-support (3.5.0) + rubocop (0.45.0) + parser (>= 2.3.1.1, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) - ruby-progressbar (~> 1.4) - rubocop-checkstyle_formatter (0.2.0) - rubocop (>= 0.20.1) - rubocop-rspec (1.3.0) - ruby-progressbar (1.7.5) - ruby2ruby (2.1.4) - ruby_parser (~> 3.1) - sexp_processor (~> 4.0) - ruby_parser (3.7.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) + rubocop-checkstyle_formatter (0.3.0) + rubocop (>= 0.30.1) + rubocop-rspec (1.8.0) + rubocop (>= 0.42.0) + ruby-progressbar (1.8.1) + ruby_parser (3.8.3) sexp_processor (~> 4.1) - rubyzip (1.1.7) + rubyzip (1.2.0) safe_yaml (1.0.4) sass (3.4.22) sass-rails (5.0.6) @@ -485,72 +486,68 @@ GEM scenic (1.3.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - sdoc (0.4.1) + sdoc (0.4.2) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) securecompare (1.0.0) - selenium-webdriver (2.44.0) + selenium-webdriver (3.0.1) childprocess (~> 0.5) - multi_json (~> 1.0) rubyzip (~> 1.0) websocket (~> 1.0) - sentry-raven (0.13.1) - faraday (>= 0.7.6) - sexp_processor (4.6.0) - shoulda-matchers (2.8.0) - activesupport (>= 3.0.0) - simplecov (0.9.1) + sentry-raven (2.1.2) + faraday (>= 0.7.6, < 0.10.x) + sexp_processor (4.7.0) + shoulda-matchers (3.1.1) + activesupport (>= 4.0.0) + simplecov (0.12.0) docile (~> 1.1.0) - multi_json (~> 1.0) - simplecov-html (~> 0.8.0) - simplecov-html (0.8.0) - slim (3.0.6) - temple (~> 0.7.3) - tilt (>= 1.3.3, < 2.1) + json (>= 1.8, < 3) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.0) slop (3.6.0) - smart_listing (1.1.2) + smart_listing (1.2.0) coffee-rails jquery-rails - kaminari (~> 0.16.1) + kaminari (~> 0.17) rails (>= 3.2) - spring (1.3.6) + spring (2.0.0) + activesupport (>= 4.2) spring-commands-rspec (1.0.4) spring (>= 0.9.1) sprockets (3.7.0) concurrent-ruby (~> 1.0) rack (> 1, < 3) - sprockets-rails (3.1.1) + sprockets-rails (3.2.0) actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) - swd (1.0.0) + swd (1.0.1) activesupport (>= 3) attr_required (>= 0.0.5) httpclient (>= 2.4) i18n json (>= 1.4.3) - temple (0.7.6) - terminal-table (1.5.2) therubyracer (0.12.2) libv8 (~> 3.16.14.0) ref thor (0.19.1) thread_safe (0.3.5) tilt (2.0.5) - timecop (0.7.3) + timecop (0.8.1) trollop (2.1.2) - turbolinks (2.5.3) - coffee-rails + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.0) tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (3.0.2) + uglifier (3.0.3) execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext - unf_ext (0.0.7.1) - unicorn (4.9.0) + unf_ext (0.0.7.2) + unicode-display_width (1.1.1) + unicorn (5.2.0) kgio (~> 2.6) - rack raindrops (~> 0.7) url_safe_base64 (0.2.2) validate_email (0.1.6) @@ -559,26 +556,27 @@ GEM validate_url (1.0.2) activemodel (>= 3.0.0) addressable - vcr (3.0.1) + vcr (3.0.3) warden (1.2.6) rack (>= 1.0) - web-console (2.2.1) + web-console (2.3.0) activemodel (>= 4.0) binding_of_caller (>= 0.7.2) railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) - webfinger (1.0.1) + webfinger (1.0.2) activesupport httpclient (>= 2.4) multi_json - webmock (1.21.0) + webmock (2.1.0) addressable (>= 2.3.6) crack (>= 0.3.2) - websocket (1.2.1) - websocket-driver (0.5.3) + hashdiff + websocket (1.2.3) + websocket-driver (0.6.4) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) - will_paginate (3.0.7) + will_paginate (3.1.5) will_paginate-bootstrap (1.0.1) will_paginate (>= 3.0.3) xml-simple (1.1.5) @@ -602,11 +600,10 @@ DEPENDENCIES carrierwave chartkick clamav-client - coffee-rails (~> 4.1.0) database_cleaner deep_cloneable (~> 2.2.1) - devise (~> 3.0) - draper + devise + draper (~> 3.0.0.pre1) factory_girl fog fog-openstack @@ -625,12 +622,12 @@ DEPENDENCIES nyan-cat-formatter openid_connect openstack - parallel_tests (~> 1.9.0) + parallel_tests (~> 2.10) pg poltergeist pry-byebug railroady - rails (= 4.2.7.1) + rails (= 5.0.0.1) rest-client rgeo-geojson rspec-rails (~> 3.0) @@ -658,4 +655,4 @@ DEPENDENCIES will_paginate-bootstrap BUNDLED WITH - 1.13.2 + 1.13.6 diff --git a/Guardfile b/Guardfile index 2c60c7b22..55e984025 100644 --- a/Guardfile +++ b/Guardfile @@ -43,7 +43,7 @@ guard 'livereload' do rails_view_exts = %w(erb haml slim) # file types LiveReload may optimize refresh for - compiled_exts = extensions.values.uniq + compiled_exts = extensions.values.distinct watch(%r{public/.+\.(#{compiled_exts * '|'})}) extensions.each do |ext, type| diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 410f1c103..8c636918d 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -1,6 +1,6 @@ class APIController < ApplicationController before_action :authenticate_user - before_filter :default_format_json + before_action :default_format_json def authenticate_user render json: {}, status: 401 unless valid_token? diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 103ca5526..582d42cbc 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -2,7 +2,7 @@ class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception - before_filter :check_browser + before_action :check_browser def default_url_options return { protocol: 'https' } if Rails.env.staging? || Rails.env.production? diff --git a/app/controllers/users/registrations_controller.rb b/app/controllers/users/registrations_controller.rb index 857d04111..56e0fb3b4 100644 --- a/app/controllers/users/registrations_controller.rb +++ b/app/controllers/users/registrations_controller.rb @@ -1,6 +1,6 @@ class Users::RegistrationsController < Devise::RegistrationsController -# before_filter :configure_sign_up_params, only: [:create] -# before_filter :configure_account_update_params, only: [:update] +# before_action :configure_sign_up_params, only: [:create] +# before_action :configure_account_update_params, only: [:update] def after_sign_up_path_for(resource_or_scope) WelcomeMailer.welcome_email(resource_or_scope).deliver_now! diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index a582ade20..a8ff410f1 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -1,5 +1,5 @@ class Users::SessionsController < Sessions::SessionsController -# before_filter :configure_sign_in_params, only: [:create] +# before_action :configure_sign_in_params, only: [:create] def demo return redirect_to root_path if Rails.env.production? diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index 7cb09366f..82abd938e 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -49,7 +49,7 @@ class DossiersListGestionnaireService 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.uniq + @filter_dossiers.distinct end def filter_procedure_reset! diff --git a/app/views/admin/accompagnateurs/_list_not_assign.html.haml b/app/views/admin/accompagnateurs/_list_not_assign.html.haml index 8d036f9ae..a5794d082 100644 --- a/app/views/admin/accompagnateurs/_list_not_assign.html.haml +++ b/app/views/admin/accompagnateurs/_list_not_assign.html.haml @@ -3,7 +3,7 @@ = text_field_tag :filter, '', class: "search form-control", placeholder: "Recherche...", autocomplete: :off %button.btn.btn-primary{type: :submit} - %span.glyphicon.glyphicon-search + %span.fa.fa-search - unless smart_listing.empty? diff --git a/app/views/admin/gestionnaires/_list.html.haml b/app/views/admin/gestionnaires/_list.html.haml index caceecc00..48cdd8f68 100644 --- a/app/views/admin/gestionnaires/_list.html.haml +++ b/app/views/admin/gestionnaires/_list.html.haml @@ -8,11 +8,11 @@ %tr %td{style:'padding-top: 11px; font-size:15px'}= gestionnaire.email %td{ style: 'text-align:right' } - .delete.btn.btn-sm.glyphicon.glyphicon-remove + .delete.btn.btn-sm.fa.fa-trash .confirm =link_to 'Valider', admin_gestionnaire_path(id: gestionnaire.id), {method: :delete, class: 'btn btn-sm btn-success'} - .cancel.btn.btn-sm.btn-danger.glyphicon.glyphicon-minus{style: 'top: 0'} + .cancel.btn.btn-sm.btn-danger.fa.fa-minus{style: 'top: 0'} = smart_listing.paginate = smart_listing.pagination_per_page_links diff --git a/app/views/administrateurs/sessions/new.html.haml b/app/views/administrateurs/sessions/new.html.haml index 2c2185b9b..4dda316e2 100644 --- a/app/views/administrateurs/sessions/new.html.haml +++ b/app/views/administrateurs/sessions/new.html.haml @@ -13,14 +13,14 @@ = f.label :email .input-group .input-group-addon - %span.glyphicon.glyphicon-user + %span.fa.fa-user = f.email_field :email, class: 'form-control' %br %h4 = f.label 'Mot de passe' .input-group .input-group-addon - %span.glyphicon.glyphicon-asterisk + %span.fa.fa-asterisk = f.password_field :password, class: 'form-control', value: @administrateur.password %br %br diff --git a/app/views/dossiers/_pieces_justificatives.html.haml b/app/views/dossiers/_pieces_justificatives.html.haml index 824a41aa7..06d77a192 100644 --- a/app/views/dossiers/_pieces_justificatives.html.haml +++ b/app/views/dossiers/_pieces_justificatives.html.haml @@ -10,7 +10,7 @@ %a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter %span{style:'margin-left:12px'} \- - %a.btn.glyphicon.glyphicon-time{style:'color: black; padding-top: 0', + %a.btn.fa.fa-timer{style:'color: black; padding-top: 0', "data-target" => "#PJmodal", "data-toggle" => "modal", :type => "button", @@ -33,7 +33,7 @@ %a{ href: "#{@pj.content_url}", target: '_blank' } Consulter %span{style:'margin-left:12px'} \- - %a.btn.glyphicon.glyphicon-time{style:'color: black; padding-top: 0', + %a.btn.fa.fa-timer{style:'color: black; padding-top: 0', "data-target" => "#PJmodal", "data-toggle" => "modal", :type => "button", diff --git a/app/views/gestionnaires/passwords/edit.html.haml b/app/views/gestionnaires/passwords/edit.html.haml index 7b387b366..a0d7ed99c 100644 --- a/app/views/gestionnaires/passwords/edit.html.haml +++ b/app/views/gestionnaires/passwords/edit.html.haml @@ -15,14 +15,14 @@ .input-group .input-group-addon - %span.glyphicon.glyphicon-asterisk + %span.fa.fa-asterisk = f.password_field :password, autofocus: true, autocomplete: "off", class: 'form-control' %br %h4 = f.label 'Retaper le mot de passe' .input-group .input-group-addon - %span.glyphicon.glyphicon-asterisk + %span.fa.fa-asterisk = f.password_field :password_confirmation, autocomplete: "off", class: 'form-control' %br %br diff --git a/app/views/gestionnaires/passwords/new.html.haml b/app/views/gestionnaires/passwords/new.html.haml index b0e8cddb9..a8c09db1f 100644 --- a/app/views/gestionnaires/passwords/new.html.haml +++ b/app/views/gestionnaires/passwords/new.html.haml @@ -14,7 +14,7 @@ = f.label :email .input-group .input-group-addon - %span.glyphicon.glyphicon-user + %span.fa.fa-user = f.email_field :email, class: 'form-control', placeholder: 'Email' %br %br diff --git a/app/views/gestionnaires/sessions/new.html.haml b/app/views/gestionnaires/sessions/new.html.haml index d6e4dc203..0180bd760 100644 --- a/app/views/gestionnaires/sessions/new.html.haml +++ b/app/views/gestionnaires/sessions/new.html.haml @@ -12,14 +12,14 @@ = f.label :email .input-group .input-group-addon - %span.glyphicon.glyphicon-user + %span.fa.fa-user = f.email_field :email, class: 'form-control' %br %h4 = f.label :password .input-group .input-group-addon - %span.glyphicon.glyphicon-asterisk + %span.fa.fa-asterisk = f.password_field :password, autocomplete: "off", class: 'form-control', value: @gestionnaire.password %br %br diff --git a/app/views/users/passwords/edit.html.haml b/app/views/users/passwords/edit.html.haml index bcfb616b7..326e95239 100644 --- a/app/views/users/passwords/edit.html.haml +++ b/app/views/users/passwords/edit.html.haml @@ -43,14 +43,14 @@ .input-group .input-group-addon - %span.glyphicon.glyphicon-asterisk + %span.fa.fa-asterisk = f.password_field :password, autofocus: true, autocomplete: "off", class: 'form-control' %br %h4 = f.label 'Retaper le mot de passe' .input-group .input-group-addon - %span.glyphicon.glyphicon-asterisk + %span.fa.fa-asterisk = f.password_field :password_confirmation, autocomplete: "off", class: 'form-control' %br %br diff --git a/app/views/users/passwords/new.html.haml b/app/views/users/passwords/new.html.haml index a08703e6a..e597944e4 100644 --- a/app/views/users/passwords/new.html.haml +++ b/app/views/users/passwords/new.html.haml @@ -42,7 +42,7 @@ = f.label :email .input-group .input-group-addon - %span.glyphicon.glyphicon-user + %span.fa.fa-user = f.email_field :email, class: 'form-control', placeholder: 'Email' %br %br diff --git a/app/views/users/registrations/new.html.haml b/app/views/users/registrations/new.html.haml index b44bc289c..dec162c92 100644 --- a/app/views/users/registrations/new.html.haml +++ b/app/views/users/registrations/new.html.haml @@ -42,19 +42,19 @@ = f.label :email .input-group .input-group-addon - %span.glyphicon.glyphicon-user + %span.fa.fa-user = f.email_field :email, class: 'form-control', placeholder: 'Email', value: params[:user_email] %br %h4 = f.label :password .input-group .input-group-addon - %span.glyphicon.glyphicon-asterisk + %span.fa.fa-asterisk = f.password_field :password, autocomplete: "off", class: 'form-control', placeholder: 'Mot de passe' %br .input-group .input-group-addon - %span.glyphicon.glyphicon-asterisk + %span.fa.fa-asterisk = f.password_field :password_confirmation, autocomplete: "off", class: 'form-control', placeholder: 'Répeter le mot de passe' %br %br diff --git a/config/environments/development.rb b/config/environments/development.rb index 52c597431..f7174bfa2 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -9,6 +9,9 @@ Rails.application.configure do # Do not eager load code on boot. config.eager_load = false + config.public_file_server.enabled = true + config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' } + # Show full error reports and disable caching. config.consider_all_requests_local = true config.action_controller.perform_caching = false diff --git a/config/environments/production.rb b/config/environments/production.rb index 5c1b32e48..8640a6aae 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -22,7 +22,7 @@ Rails.application.configure do # Disable serving static files from the `/public` folder by default since # Apache or NGINX already handles this. - config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? # Compress JavaScripts and CSS. config.assets.js_compressor = :uglifier diff --git a/config/environments/test.rb b/config/environments/test.rb index addde8b69..2d98c2462 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -13,8 +13,8 @@ Rails.application.configure do config.eager_load = false # Configure static file server for tests with Cache-Control for performance. - config.serve_static_files = true - config.static_cache_control = 'public, max-age=3600' + config.public_file_server.enabled = true + config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' } # Show full error reports and disable caching. config.consider_all_requests_local = true diff --git a/db/schema.rb b/db/schema.rb index 7ef1e735e..a42535f59 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1,4 +1,3 @@ -# encoding: UTF-8 # This file is auto-generated from the current state of the database. Instead # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. @@ -30,20 +29,18 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.datetime "created_at" t.datetime "updated_at" t.string "api_token" + t.index ["email"], name: "index_administrateurs_on_email", unique: true, using: :btree + t.index ["reset_password_token"], name: "index_administrateurs_on_reset_password_token", unique: true, using: :btree end - add_index "administrateurs", ["email"], name: "index_administrateurs_on_email", unique: true, using: :btree - add_index "administrateurs", ["reset_password_token"], name: "index_administrateurs_on_reset_password_token", unique: true, using: :btree - create_table "administrateurs_gestionnaires", id: false, force: :cascade do |t| t.integer "administrateur_id" t.integer "gestionnaire_id" + t.index ["administrateur_id"], name: "index_administrateurs_gestionnaires_on_administrateur_id", using: :btree + t.index ["gestionnaire_id", "administrateur_id"], name: "unique_couple_administrateur_gestionnaire", unique: true, using: :btree + t.index ["gestionnaire_id"], name: "index_administrateurs_gestionnaires_on_gestionnaire_id", using: :btree end - add_index "administrateurs_gestionnaires", ["administrateur_id"], name: "index_administrateurs_gestionnaires_on_administrateur_id", using: :btree - add_index "administrateurs_gestionnaires", ["gestionnaire_id", "administrateur_id"], name: "unique_couple_administrateur_gestionnaire", unique: true, using: :btree - add_index "administrateurs_gestionnaires", ["gestionnaire_id"], name: "index_administrateurs_gestionnaires_on_gestionnaire_id", using: :btree - create_table "administrations", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false @@ -57,19 +54,23 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.inet "last_sign_in_ip" t.datetime "created_at" t.datetime "updated_at" + t.index ["email"], name: "index_administrations_on_email", unique: true, using: :btree + t.index ["reset_password_token"], name: "index_administrations_on_reset_password_token", unique: true, using: :btree end - add_index "administrations", ["email"], name: "index_administrations_on_email", unique: true, using: :btree - add_index "administrations", ["reset_password_token"], name: "index_administrations_on_reset_password_token", unique: true, using: :btree + create_table "ar_internal_metadata", primary_key: "key", id: :string, force: :cascade do |t| + t.string "value" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end create_table "assign_tos", id: false, force: :cascade do |t| t.integer "gestionnaire_id" t.integer "procedure_id" + t.index ["gestionnaire_id"], name: "index_assign_tos_on_gestionnaire_id", using: :btree + t.index ["procedure_id"], name: "index_assign_tos_on_procedure_id", using: :btree end - add_index "assign_tos", ["gestionnaire_id"], name: "index_assign_tos_on_gestionnaire_id", using: :btree - add_index "assign_tos", ["procedure_id"], name: "index_assign_tos_on_procedure_id", using: :btree - create_table "cadastres", force: :cascade do |t| t.string "surface_intersection" t.float "surface_parcelle" @@ -91,20 +92,18 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.integer "user_id" t.string "original_filename" t.string "content_secure_token" + t.index ["dossier_id"], name: "index_cerfas_on_dossier_id", using: :btree end - add_index "cerfas", ["dossier_id"], name: "index_cerfas_on_dossier_id", using: :btree - create_table "champs", force: :cascade do |t| t.string "value" t.integer "type_de_champ_id" t.integer "dossier_id" t.string "type" + t.index ["dossier_id"], name: "index_champs_on_dossier_id", using: :btree + t.index ["type_de_champ_id"], name: "index_champs_on_type_de_champ_id", using: :btree end - add_index "champs", ["dossier_id"], name: "index_champs_on_dossier_id", using: :btree - add_index "champs", ["type_de_champ_id"], name: "index_champs_on_type_de_champ_id", using: :btree - create_table "commentaires", force: :cascade do |t| t.string "email" t.datetime "created_at", null: false @@ -112,10 +111,9 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.integer "dossier_id" t.datetime "updated_at", null: false t.integer "piece_justificative_id" + t.index ["dossier_id"], name: "index_commentaires_on_dossier_id", using: :btree end - add_index "commentaires", ["dossier_id"], name: "index_commentaires_on_dossier_id", using: :btree - create_table "dossiers", force: :cascade do |t| t.boolean "autorisation_donnees" t.string "nom_projet" @@ -128,18 +126,16 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.boolean "archived", default: false t.boolean "mandataire_social", default: false t.datetime "deposit_datetime" + t.index ["procedure_id"], name: "index_dossiers_on_procedure_id", using: :btree + t.index ["user_id"], name: "index_dossiers_on_user_id", using: :btree end - add_index "dossiers", ["procedure_id"], name: "index_dossiers_on_procedure_id", using: :btree - add_index "dossiers", ["user_id"], name: "index_dossiers_on_user_id", using: :btree - create_table "drop_down_lists", force: :cascade do |t| t.string "value" t.integer "type_de_champ_id" + t.index ["type_de_champ_id"], name: "index_drop_down_lists_on_type_de_champ_id", using: :btree end - add_index "drop_down_lists", ["type_de_champ_id"], name: "index_drop_down_lists_on_type_de_champ_id", using: :btree - create_table "entreprises", force: :cascade do |t| t.string "siren" t.integer "capital_social" @@ -154,10 +150,9 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.string "nom" t.string "prenom" t.integer "dossier_id" + t.index ["dossier_id"], name: "index_entreprises_on_dossier_id", using: :btree end - add_index "entreprises", ["dossier_id"], name: "index_entreprises_on_dossier_id", using: :btree - create_table "etablissements", force: :cascade do |t| t.string "siret" t.boolean "siege_social" @@ -173,10 +168,9 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.string "code_insee_localite" t.integer "dossier_id" t.integer "entreprise_id" + t.index ["dossier_id"], name: "index_etablissements_on_dossier_id", using: :btree end - add_index "etablissements", ["dossier_id"], name: "index_etablissements_on_dossier_id", using: :btree - create_table "exercices", force: :cascade do |t| t.string "ca" t.datetime "dateFinExercice" @@ -187,11 +181,10 @@ ActiveRecord::Schema.define(version: 20161102154835) do create_table "follows", force: :cascade do |t| t.integer "gestionnaire_id" t.integer "dossier_id" + t.index ["dossier_id"], name: "index_follows_on_dossier_id", using: :btree + t.index ["gestionnaire_id"], name: "index_follows_on_gestionnaire_id", using: :btree end - add_index "follows", ["dossier_id"], name: "index_follows_on_dossier_id", using: :btree - add_index "follows", ["gestionnaire_id"], name: "index_follows_on_gestionnaire_id", using: :btree - create_table "france_connect_informations", force: :cascade do |t| t.string "gender" t.string "given_name" @@ -201,10 +194,9 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.string "france_connect_particulier_id" t.integer "user_id" t.string "email_france_connect" + t.index ["user_id"], name: "index_france_connect_informations_on_user_id", using: :btree end - add_index "france_connect_informations", ["user_id"], name: "index_france_connect_informations_on_user_id", using: :btree - create_table "gestionnaires", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false @@ -219,21 +211,19 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.datetime "created_at" t.datetime "updated_at" t.integer "procedure_filter" + t.index ["email"], name: "index_gestionnaires_on_email", unique: true, using: :btree + t.index ["reset_password_token"], name: "index_gestionnaires_on_reset_password_token", unique: true, using: :btree end - add_index "gestionnaires", ["email"], name: "index_gestionnaires_on_email", unique: true, using: :btree - add_index "gestionnaires", ["reset_password_token"], name: "index_gestionnaires_on_reset_password_token", unique: true, using: :btree - create_table "individuals", force: :cascade do |t| t.string "nom" t.string "prenom" t.string "birthdate" t.integer "dossier_id" t.string "gender" + t.index ["dossier_id"], name: "index_individuals_on_dossier_id", using: :btree end - add_index "individuals", ["dossier_id"], name: "index_individuals_on_dossier_id", using: :btree - create_table "invites", force: :cascade do |t| t.string "email" t.string "email_sender" @@ -254,10 +244,9 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.boolean "use_api_carto", default: false t.boolean "quartiers_prioritaires", default: false t.boolean "cadastre", default: false + t.index ["procedure_id"], name: "index_module_api_cartos_on_procedure_id", unique: true, using: :btree end - add_index "module_api_cartos", ["procedure_id"], name: "index_module_api_cartos_on_procedure_id", unique: true, using: :btree - create_table "pieces_justificatives", force: :cascade do |t| t.string "content" t.integer "dossier_id" @@ -266,11 +255,10 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.integer "user_id" t.string "original_filename" t.string "content_secure_token" + t.index ["dossier_id"], name: "index_pieces_justificatives_on_dossier_id", using: :btree + t.index ["type_de_piece_justificative_id"], name: "index_pieces_justificatives_on_type_de_piece_justificative_id", using: :btree end - add_index "pieces_justificatives", ["dossier_id"], name: "index_pieces_justificatives_on_dossier_id", using: :btree - add_index "pieces_justificatives", ["type_de_piece_justificative_id"], name: "index_pieces_justificatives_on_type_de_piece_justificative_id", using: :btree - create_table "preference_list_dossiers", force: :cascade do |t| t.string "libelle" t.string "table" @@ -294,10 +282,9 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.string "path", limit: 30 t.integer "procedure_id" t.integer "administrateur_id" + t.index ["path"], name: "index_procedure_paths_on_path", using: :btree end - add_index "procedure_paths", ["path"], name: "index_procedure_paths_on_path", using: :btree - create_table "procedures", force: :cascade do |t| t.string "libelle" t.string "description" @@ -336,10 +323,9 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.date "date_declaration" t.date "date_publication" t.integer "entreprise_id" + t.index ["entreprise_id"], name: "index_rna_informations_on_entreprise_id", using: :btree end - add_index "rna_informations", ["entreprise_id"], name: "index_rna_informations_on_entreprise_id", using: :btree - create_table "types_de_champ", force: :cascade do |t| t.string "libelle" t.string "type_champ" @@ -375,11 +361,10 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.datetime "updated_at" t.string "siret" t.string "loged_in_with_france_connect", default: "false" + t.index ["email"], name: "index_users_on_email", unique: true, using: :btree + t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree end - add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree - add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree - add_foreign_key "cerfas", "dossiers" add_foreign_key "commentaires", "dossiers" add_foreign_key "dossiers", "users" diff --git a/public/fonts/bootstrap/glyphicons-halflings-regular.woff b/public/fonts/bootstrap/glyphicons-halflings-regular.woff deleted file mode 100755 index 9e612858f802245ddcbf59788a0db942224bab35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23424 zcmY&eV{m0%u#Iioo_J#0nb?@vwry)-+qNe*Z>))v8{5gt_uj9!t5)^yb-JtjRGrhi zYInOUNJxNyf_yKX01)K=WP|Si>HqEj|B{eUl?MR<)%<1&{(~)D+NPwKxWqT-@~snp zg9KCz1VTZDiS?UH`PRk1VPM{29cgT9=D?!Wc_@}qzggFv;gb@2cJQAYWWtpEZ7?y@jSVqjx${B5UV@SO|wH<<0; z{><1KdVI%Ki}>~<`46C0AggwUwx-|QcU;iiZ{NZu`ur>hd*|Hb(|6veERqxu=b@5Bab=rqptGxd{QJg!4*-i_$sES~)AB46}Fjg|ea#e@?J}z%CUJ zOsLWRQR1#ng^sD)A4FDuY!iUhzlgfJh(J@BRqd&P#v2B`+saBx>m+M&q7vk-75$NH%T5pi%m z5FX?`2-5l53=a&GkC9^NZCLpN5(DMKMwwab$FDIs?q>4!!xBS}75gX_5;(luk;3Vl zLCLd5a_8`Iyz}K}+#RMwu6DVk3O_-}n>aE!4NaD*sQn`GxY?cHe!Bl9n?u&g6?aKm z-P8z&;Q3gr;h`YIxX%z^o&GZZg1=>_+hP2$$-DnL_?7?3^!WAsY4I7|@K;aL<>OTK zByfjl2PA$T83*LM9(;espx-qB%wv7H2i6CFsfAg<9V>Pj*OpwX)l?^mQfr$*OPPS$ z=`mzTYs{*(UW^ij1U8UfXjNoY7GK*+YHht(2oKE&tfZuvAyoN(;_OF>-J6AMmS5fB z^sY6wea&&${+!}@R1f$5oC-2J>J-A${@r(dRzc`wnK>a7~8{Y-scc|ETOI8 zjtNY%Y2!PI;8-@a=O}+{ap1Ewk0@T`C`q!|=KceX9gK8wtOtIC96}-^7)v23Mu;MH zhKyLGOQMujfRG$p(s`(2*nP4EH7*J57^=|%t(#PwCcW7U%e=8Jb>p6~>RAlY4a*ts=pl}_J{->@kKzxH|8XQ5{t=E zV&o`$D#ZHdv&iZWFa)(~oBh-Osl{~CS0hfM7?PyWUWsr5oYlsyC1cwULoQ4|Y5RHA2*rN+EnFPnu z`Y_&Yz*#550YJwDy@brZU>0pWV^RxRjL221@2ABq)AtA%Cz?+FG(}Yh?^v)1Lnh%D zeM{{3&-4#F9rZhS@DT0E(WRkrG!jC#5?OFjZv*xQjUP~XsaxL2rqRKvPW$zHqHr8Urp2Z)L z+)EvQeoeJ8c6A#Iy9>3lxiH3=@86uiTbnnJJJoypZ7gco_*HvKOH97B? zWiwp>+r}*Zf9b3ImxwvjL~h~j<<3shN8$k-$V1p|96I!=N6VBqmb==Bec|*;HUg?) z4!5#R*(#Fe)w%+RH#y{8&%%!|fQ5JcFzUE;-yVYR^&Ek55AXb{^w|@j|&G z|6C-+*On%j;W|f8mj?;679?!qY86c{(s1-PI2Wahoclf%1*8%JAvRh1(0)5Vu37Iz z`JY?RW@qKr+FMmBC{TC7k@}fv-k8t6iO}4K-i3WkF!Lc=D`nuD)v#Na zA|R*no51fkUN3^rmI;tty#IK284*2Zu!kG13!$OlxJAt@zLU`kvsazO25TpJLbK&;M8kw*0)*14kpf*)3;GiDh;C(F}$- z1;!=OBkW#ctacN=je*Pr)lnGzX=OwgNZjTpVbFxqb;8kTc@X&L2XR0A7oc!Mf2?u9 zcctQLCCr+tYipa_k=;1ETIpHt!Jeo;iy^xqBES^Ct6-+wHi%2g&)?7N^Yy zUrMIu){Jk)luDa@7We5U!$$3XFNbyRT!YPIbMKj5$IEpTX1IOtVP~(UPO2-+9ZFi6 z-$3<|{Xb#@tABt0M0s1TVCWKwveDy^S!!@4$s|DAqhsEv--Z}Dl)t%0G>U#ycJ7cy z^8%;|pg32=7~MJmqlC-x07Sd!2YX^|2D`?y;-$a!rZ3R5ia{v1QI_^>gi(HSS_e%2 zUbdg^zjMBBiLr8eSI^BqXM6HKKg#@-w`a**w(}RMe%XWl3MipvBODo*hi?+ykYq)z ziqy4goZw0@VIUY65+L7DaM5q=KWFd$;W3S!Zi>sOzpEF#(*3V-27N;^pDRoMh~(ZD zJLZXIam0lM7U#)119Hm947W)p3$%V`0Tv+*n=&ybF&}h~FA}7hEpA&1Y!BiYIb~~D z$TSo9#3ee02e^%*@4|*+=Nq6&JG5>zX4k5f?)z*#pI-G(+j|jye%13CUdcSP;rNlY z#Q!X%zHf|V)GWIcEz-=fW6AahfxI~y7w7i|PK6H@@twdgH>D_R@>&OtKl}%MuAQ7I zcpFmV^~w~8$4@zzh~P~+?B~%L@EM3x(^KXJSgc6I=;)B6 zpRco2LKIlURPE*XUmZ^|1vb?w*ZfF}EXvY13I4af+()bAI5V?BRbFp`Sb{8GRJHd* z4S2s%4A)6Uc=PK%4@PbJ<{1R6+2THMk0c+kif**#ZGE)w6WsqH z`r^DL&r8|OEAumm^qyrryd(HQ9olv$ltnVGB{aY?_76Uk%6p;e)2DTvF(;t=Q+|8b zqfT(u5@BP);6;jmRAEV057E*2d^wx@*aL1GqWU|$6h5%O@cQtVtC^isd%gD7PZ_Io z_BDP5w(2*)Mu&JxS@X%%ByH_@+l>y07jIc~!@;Raw)q_;9oy@*U#mCnc7%t85qa4? z%_Vr5tkN^}(^>`EFhag;!MpRh!&bKnveQZAJ4)gEJo1@wHtT$Gs6IpznN$Lk-$NcM z3ReVC&qcXvfGX$I0nfkS$a|Pm%x+lq{WweNc;K>a1M@EAVWs2IBcQPiEJNt}+Ea8~WiapASoMvo(&PdUO}AfC~>ZGzqWjd)4no( ziLi#e3lOU~sI*XPH&n&J0cWfoh*}eWEEZW%vX?YK!$?w}htY|GALx3;YZoo=JCF4@ zdiaA-uq!*L5;Yg)z-_`MciiIwDAAR3-snC4V+KA>&V%Ak;p{1u>{Lw$NFj)Yn0Ms2*kxUZ)OTddbiJM}PK!DM}Ot zczn?EZXhx3wyu6i{QMz_Ht%b?K&-@5r;8b076YDir`KXF0&2i9NQ~#JYaq*}Ylb}^ z<{{6xy&;dQ;|@k_(31PDr!}}W$zF7Jv@f%um0M$#=8ygpu%j(VU-d5JtQwT714#f0z+Cm$F9JjGr_G!~NS@L9P;C1? z;Ij2YVYuv}tzU+HugU=f9b1Wbx3418+xj$RKD;$gf$0j_A&c;-OhoF*z@DhEW@d9o zbQBjqEQnn2aG?N9{bmD^A#Um6SDKsm0g{g_<4^dJjg_l_HXdDMk!p`oFv8+@_v_9> zq;#WkQ!GNGfLT7f8m60H@$tu?p;o_It#TApmE`xnZr|_|cb3XXE)N^buLE`9R=Qbg zXJu}6r07me2HU<)S7m?@GzrQDTE3UH?FXM7V+-lT#l}P(U>Fvnyw8T7RTeP`R579m zj=Y>qDw1h-;|mX-)cSXCc$?hr;43LQt)7z$1QG^pyclQ1Bd!jbzsVEgIg~u9b38;> zfsRa%U`l%did6HzPRd;TK{_EW;n^Ivp-%pu0%9G-z@Au{Ry+EqEcqW=z-#6;-!{WA z;l+xC6Zke>dl+(R1q7B^Hu~HmrG~Kt575mzve>x*cL-shl+zqp6yuGX)DDGm`cid! znlnZY=+a5*xQ=$qM}5$N+o!^(TqTFHDdyCcL8NM4VY@2gnNXF|D?5a558Lb*Yfm4) z_;0%2EF7k{)i(tTvS`l5he^KvW%l&-suPwpIlWB_Za1Hfa$@J!emrcyPpTKKM@NqL z?X_SqHt#DucWm<3Lp}W|&YyQE27zbGP55=HtZmB(k*WZA79f##?TweCt{%5yuc+Kx zgfSrIZI*Y57FOD9l@H0nzqOu|Bhrm&^m_RK6^Z<^N($=DDxyyPLA z+J)E(gs9AfaO`5qk$IGGY+_*tEk0n_wrM}n4G#So>8Dw6#K7tx@g;U`8hN_R;^Uw9JLRUgOQ?PTMr4YD5H7=ryv)bPtl=<&4&% z*w6k|D-%Tg*F~sh0Ns(h&mOQ_Qf{`#_XU44(VDY8b})RFpLykg10uxUztD>gswTH} z&&xgt>zc(+=GdM2gIQ%3V4AGxPFW0*l0YsbA|nFZpN~ih4u-P!{39d@_MN)DC%d1w z7>SaUs-g@Hp7xqZ3Tn)e z7x^sC`xJ{V<3YrmbB{h9i5rdancCEyL=9ZOJXoVHo@$$-%ZaNm-75Z-Ry9Z%!^+STWyv~To>{^T&MW0-;$3yc9L2mhq z;ZbQ5LGNM+aN628)Cs16>p55^T^*8$Dw&ss_~4G5Go63gW^CY+0+Z07f2WB4Dh0^q z-|6QgV8__5>~&z1gq0FxDWr`OzmR}3aJmCA^d_eufde7;d|OCrKdnaM>4(M%4V`PxpCJc~UhEuddx9)@)9qe_|i z)0EA%&P@_&9&o#9eqZCUCbh?`j!zgih5sJ%c4(7_#|Xt#r7MVL&Q+^PQEg3MBW;4T zG^4-*8L%s|A}R%*eGdx&i}B1He(mLygTmIAc^G(9Si zK7e{Ngoq>r-r-zhyygK)*9cj8_%g z)`>ANlipCdzw(raeqP-+ldhyUv_VOht+!w*>Sh+Z7(7(l=9~_Vk ztsM|g1xW`?)?|@m2jyAgC_IB`Mtz(O`mwgP15`lPb2V+VihV#29>y=H6ujE#rdnK` zH`EaHzABs~teIrh`ScxMz}FC**_Ii?^EbL(n90b(F0r0PMQ70UkL}tv;*4~bKCiYm zqngRuGy`^c_*M6{*_~%7FmOMquOEZXAg1^kM`)0ZrFqgC>C%RJvQSo_OAA(WF3{euE}GaeA?tu5kF@#62mM$a051I zNhE>u>!gFE8g#Jj95BqHQS%|>DOj71MZ?EYfM+MiJcX?>*}vKfGaBfQFZ3f^Q-R1# znhyK1*RvO@nHb|^i4Ep_0s{lZwCNa;Ix<{E5cUReguJf+72QRZIc%`9-Vy)D zWKhb?FbluyDTgT^naN%l2|rm}oO6D0=3kfXO2L{tqj(kDqjbl(pYz9DykeZlk4iW5 zER`)vqJxx(NOa;so@buE!389-YLbEi@6rZG0#GBsC+Z0fzT6+d7deYVU;dy!rPXiE zmu73@Jr&~K{-9MVQD}&`)e>yLNWr>Yh8CXae9XqfvVQ&eC_;#zpoaMxZ0GpZz7xjx z`t_Q-F?u=vrRPaj3r<9&t6K=+egimiJ8D4gh-rUYvaVy zG($v+3zk5sMuOhjxkH7bQ}(5{PD3Mg?!@8PkK&w>n7tO8FmAmoF30_#^B~c(Q_`4L zYWOoDVSnK|1=p{+@`Fk^Qb81Xf89_S`RSTzv(a4ID%71nll%{Wad$!CKfeTKkyC?n zCkMKHU#*nz_(tO$M)UP&ZfJ#*q(0Gr!E(l5(ce<3xut+_i8XrK8?Xr7_oeHz(bZ?~8q5q~$Rah{5@@7SMN zx9PnJ-5?^xeW2m?yC_7A#WK*B@oIy*Y@iC1n7lYKj&m7vV;KP4TVll=II)$39dOJ^czLRU>L> z68P*PFMN+WXxdAu=Hyt3g$l(GTeTVOZYw3KY|W0Fk-$S_`@9`K=60)bEy?Z%tT+Iq z7f>%M9P)FGg3EY$ood+v$pdsXvG? zd2q3abeu-}LfAQWY@=*+#`CX8RChoA`=1!hS1x5dOF)rGjX4KFg!iPHZE2E=rv|A} zro(8h38LLFljl^>?nJkc+wdY&MOOlVa@6>vBki#gKhNVv+%Add{g6#-@Z$k*ps}0Y zQ=8$)+Nm||)mVz^aa4b-Vpg=1daRaOU)8@BY4jS>=5n#6abG@(F2`=k-eQ9@u# zxfNFHv=z2w@{p1dzSOgHokX1AUGT0DY4jQI@YMw)EWQ~q5wmR$KQ}Y;(HPMSQCwzu zdli|G?bj(>++CP)yQ4s6YfpDc3KqPmquQSxg%*EnTWumWugbDW5ef%8j-rT#3rJu? z)5n;4b2c*;2LIW%LmvUu6t1~di~}0&Svy}QX#ER|hDFZwl!~zUP&}B1oKAxIzt~so zb!GaJYOb#&qRUjEI1xe_`@7qv_-LggQ$JE8+{ryT4%ldwC5ete+{G3C#g@^oxfY3#F zcLlj(l2G8>tC<5XWV|6_DZQZ7ow?MD8EZ9mM2oV~WoV-uoExmbwpzc6eMV}%J_{3l zW(4t2a-o}XRlU|NSiYn!*nR(Sc>*@TuU*(S77gfCi7+WR%2b;4#RiyxWR3(u5BIdf zo@#g4wQjtG3T$PqdX$2z8Zi|QP~I^*9iC+(!;?qkyk&Q7v>DLJGjS44q|%yBz}}>i z&Ve%^6>xY<=Pi9WlwpWB%K10Iz`*#gS^YqMeV9$4qFchMFO}(%y}xs2Hn_E}s4=*3 z+lAeCKtS}9E{l(P=PBI;rsYVG-gw}-_x;KwUefIB@V%RLA&}WU2XCL_?hZHoR<7ED zY}4#P_MmX(_G_lqfp=+iX|!*)RdLCr-1w`4rB_@bI&Uz# z!>9C3&LdoB$r+O#n);WTPi;V52OhNeKfW6_NLnw zpFTuLC^@aPy~ZGUPZr;)=-p|b$-R8htO)JXy{ecE5a|b{{&0O%H2rN&9(VHxmvNly zbY?sVk}@^{aw)%#J}|UW=ucLWs%%j)^n7S%8D1Woi$UT}VuU6@Sd6zc2+t_2IMBxd zb4R#ykMr8s5gKy=v+opw6;4R&&46$V+OOpDZwp3iR0Osqpjx))joB*iX+diVl?E~Q zc|$qmb#T#7Kcal042LUNAoPTPUxF-iGFw>ZFnUqU@y$&s8%h-HGD`EoNBbe#S>Y-4 zlkeAP>62k~-N zHQqXXyN67hGD6CxQIq_zoepU&j0 zYO&}<4cS^2sp!;5))(aAD!KmUED#QGr48DVlwbyft31WlS2yU<1>#VMp?>D1BCFfB z_JJ-kxTB{OLI}5XcPHXUo}x~->VP%of!G_N-(3Snvq`*gX3u0GR&}*fFwHo3-vIw0 zeiWskq3ZT9hTg^je{sC^@+z3FAd}KNhbpE5RO+lsLgv$;1igG7pRwI|;BO7o($2>mS(E z$CO@qYf5i=Zh6-xB=U8@mR7Yjk%OUp;_MMBfe_v1A(Hqk6!D})x%JNl838^ZA13Xu zz}LyD@X2;5o1P61Rc$%jcUnJ>`;6r{h5yrEbnbM$$ntA@P2IS1PyW^RyG0$S2tUlh z8?E(McS?7}X3nAAJs2u_n{^05)*D7 zW{Y>o99!I9&KQdzgtG(k@BT|J*;{Pt*b|?A_})e98pXCbMWbhBZ$t&YbNQOwN^=F) z_yIb_az2Pyya2530n@Y@s>s>n?L79;U-O9oPY$==~f1gXro5Y z*3~JaenSl_I}1*&dpYD?i8s<7w%~sEojqq~iFnaYyLgM#so%_ZZ^WTV0`R*H@{m2+ zja4MX^|#>xS9YQo{@F1I)!%RhM{4ZUapHTKgLZLcn$ehRq(emb8 z9<&Nx*RLcS#)SdTxcURrJhxPM2IBP%I zf1bWu&uRf{60-?Gclb5(IFI*!%tU*7d`i!l@>TaHzYQqH4_Y*6!Wy0d-B#Lz7Rg3l zqKsvXUk9@6iKV6#!bDy5n&j9MYpcKm!vG7z*2&4G*Yl}iccl*@WqKZWQSJCgQSj+d ze&}E1mAs^hP}>`{BJ6lv*>0-ft<;P@`u&VFI~P3qRtufE11+|#Y6|RJccqo27Wzr}Tp|DH z`G4^v)_8}R24X3}=6X&@Uqu;hKEQV^-)VKnBzI*|Iskecw~l?+R|WKO*~(1LrpdJ? z0!JKnCe<|m*WR>m+Qm+NKNH<_yefIml z+x32qzkNRrhR^IhT#yCiYU{3oq196nC3ePkB)f%7X1G^Ibog$ZnYu4(HyHUiFB`6x zo$ty-8pknmO|B9|(5TzoHG|%>s#7)CM(i=M7Nl=@GyDi-*ng6ahK(&-_4h(lyUN-oOa$` zo+P;C4d@m^p9J4c~rbi$rq9nhGxayFjhg+Rqa{l#`Y z!(P6K7fK3T;y!VZhGiC#)|pl$QX?a)a9$(4l(usVSH>2&5pIu5ALn*CqBt)9$yAl; z-{fOmgu><7YJ5k>*0Q~>lq72!XFX6P5Z{vW&zLsraKq5H%Z26}$OKDMv=sim;K?vsoVs(JNbgTU8-M%+ zN(+7Xl}`BDl=KDkUHM9fLlV)gN&PqbyX)$86!Wv!y+r*~kAyjFUKPDWL3A)m$@ir9 zjJ;uQV9#3$*`Dqo1Cy5*;^8DQcid^Td=CivAP+D;gl4b7*xa9IQ-R|lY5tIpiM~9- z%Hm9*vDV@_1FfiR|Kqh_5Ml0sm?abD>@peo(cnhiSWs$uy&$RYcd+m`6%X9FN%?w}s~Q=3!pJzbN~iJ}bbM*PPi@!E0eN zhKcuT=kAsz8TQo76CMO+FW#hr6da({mqpGK2K4T|xv9SNIXZ}a=4_K5pbz1HE6T}9 zbApW~m0C`q)S^F}B9Kw5!eT)Bj_h9vlCX8%VRvMOg8PJ*>PU>%yt-hyGOhjg!2pZR4{ z=VR_*?Hw|aai##~+^H>3p$W@6Zi`o4^iO2Iy=FPdEAI58Ebc~*%1#sh8KzUKOVHs( z<3$LMSCFP|!>fmF^oESZR|c|2JI3|gucuLq4R(||_!8L@gHU8hUQZKn2S#z@EVf3? zTroZd&}JK(mJLe>#x8xL)jfx$6`okcHP?8i%dW?F%nZh=VJ)32CmY;^y5C1^?V0;M z<3!e8GZcPej-h&-Osc>6PU2f4x=XhA*<_K*D6U6R)4xbEx~{3*ldB#N+7QEXD^v=I z+i^L+V7_2ld}O2b-(#bmv*PyZI4|U#Q5|22a(-VLOTZc3!9ns1RI-? zA<~h|tPH0y*bO1#EMrsWN>4yJM7vqFZr?uw$H8*PhiHRQg1U9YoscX-G|gck+SSRX!(e7@~eeUEw+POsT;=W9J&=EV`cUc{PIg_#TQVGnZsQbCs7#Q-)v#BicxLw#Fb?#)8TYbu zN)5R=MI1i7FHhF|X}xEl=sW~`-kf;fOR^h1yjthSw?%#F{HqrY2$q>7!nbw~nZ8q9 zh{vY! z%i=H!!P&wh z7_E%pB7l5)*VU>_O-S~d5Z!+;f{pQ4e86*&);?G<9*Q$JEJ!ZxY;Oj5&@^eg0Zs!iLCAR`2K?MSFzjX;kHD6)^`&=EZOIdW>L#O`J zf~$M4}JiV}v6B-e{NUBGFgj-*H%NG zfY0X(@|S8?V)drF;2OQcpDl2LV=~=%gGx?_$fbSsi@%J~taHcMTLLpjNF8FkjnjyM zW;4sSf6RHaa~LijL#EJ0W2m!BmQP(f=%Km_N@hsBFw%q#7{Er?y1V~UEPEih87B`~ zv$jE%>Ug9&=o+sZVZL7^+sp)PSrS;ZIJac4S-M>#V;T--4FXZ*>CI7w%583<{>tb6 zOZ8gZ#B0jplyTbzto2VOs)s9U%trre`m=RlKf{I_Nwdxn(xNG%zaVNurEYiMV3*g| z``3;{j7`UyfFrjlEbIJN{0db|r>|LA@=vX9CHFZYiexnkn$b%8Rvw0TZOQIXa;oTI zv@j;ZP+#~|!J(aBz9S{wL7W%Dr1H)G-XUNt9-lP?ijJ-XEj1e*CI~-Xz@4(Xg;UoG z{uzBf-U+(SHe}6oG%;A*93Zb=oE>uTb^%qsL>|bQf?7_6=KIiPU`I|r;YcZ!YG7y~ zQu@UldAwz$^|uoz3mz1;An-WVBtefSh-pv<`n&TU3oM!hrEI?l@v8A4#^$4t&~T32 zl*J=1q~h+60sNc43>0aVvhzyfjshgPYZoQ(OOh>LbUIoblb@1z~zp?))n?^)q6WGuDh}gMUaA9|X z3qq-XlcNldy5==T4rq*~g@XVY!9sYZjo#R7 zr{n)r5^S{9+$+8l7IVB*3_k5%-TBY@C%`P@&tZf>82sm#nfw7L%92>nN$663yW!yt zhS>EfLcE_Z)gv-Y^h1;xj(<4nD4GY{C-nWUgQc9cMmH{qpa!uEznrGF^?bbJHApScQ$j>$JZHAX80DdXu z--AMgrA0$Otdd#N9#!cg2Z~N8&lj1d+wDh+^ZObWJ$J)_h(&2#msu>q0B$DEERy{1 zCJN{7M@%#E@8pda`@u!v@{gcT3bA*>g*xYLXlbb&o@1vX*x+l}Voys6o~^_7>#GB| z*r!R%kA9k%J`?m>1tMHB9x$ZRe0$r~ui}X}jOC)9LH=Po*2SLdtf3^4?VKnu2ox&mV~0oDgi` z;9d}P$g~9%ThTK8s}5ow2V4?(-lU*ed8ro|}mU}pk% z;bqB0bx3AOk<0Joeh}Vl@_7Po&C`Cg>>gff>e7fu41U3Ic{JQu1W%+!Gvz3GDO2ixKd;KF6UEw8F_cDAh08gB>@ zaRH2Q96sBJ>`4aXvrF0xPtIWoA1pPsRQtU~xDtnEfTJnl{A9u5pR^K8=UdNq%T8F$)FbN> zgK+_(BF#D>R>kK!M#OT~=@@}3yAYqm33?{Bv?2iBr|-aRK0@uapzuXI)wE0=R@m^7 zQ`wLBn(M*wg!mgmQT1d!@3<2z>~rmDW)KG0*B4>_R6LjiI0^9QT8gtDDT|Lclxppm z+OeL6H3QpearJAB%1ellZ6d*)wBQ(hPbE=%?y6i^uf%`RXm*JW*WQ%>&J+=V(=qf{ zri~yItvTZbII+7S0>4Q0U9@>HnMP$X>8TqAfD(vAh};2P{QK)ik`a6$W$nG<{bR2Ufd!^iE z#1K58$gW!xpeYHeehuhQCXZ9p%N8m zB+l~T_u-Ycr!U>!?xu!!*6rNxq37{`DhMMfY6NpD3Jw zkYQDstvt30Hc_SaZuuMP2YrdW@HsPMbf^Y9lI<9$bnMil2X7`Ba-DGLbzgqP>mxwe zf1&JkDH54D3nLar2KjJ3z`*R+rUABq4;>>4Kjc2iQEj7pVLcZYZ~pteAG4rm1{>PQy=!QiV5G|tVk)53 zP?Azw+N)Yq3zZ`dW7Q9Bq@Y*jSK0<1f`HM;_>GH57pf_S%Ounz_yhTY8lplQSM`xx zU{r-Deqs+*I~sLI$Oq`>i`J1kJ(+yNOYy$_>R3Jfi680<|^u#J@aY%Q>O zqfI~sCbk#3--^zMkV&Yj0D(R^rK}+_npgPr_4^kYuG=pO%$C_7v{s@-{M-P@RL3^<`kO@b=YdKMuccfO1ZW# zeRYE%D~CMAgPlo?T!O6?b|pOZv{iMWb;sN=jF%=?$Iz_5zH?K;aFGU^8l7u%zHgiy z%)~y|k;Es-7YX69AMj^epGX#&^c@pp+lc}kKc`5CjPN4Z$$e58$Yn*J?81%`0~A)D zPg-db*pj-t4-G9>ImW4IMi*v#9z^9VD9h@9t;3jMAUVxt=oor+16yHf{lT|G4 zya6{4#BxFw!!~UTRwXXawKU4iz$$GMY6=Z8VM{2@0{=5A0+A#p6$aT3ubRyWMWPq9 zCEH5(Il0v4e4=Yxg(tDglfYAy!UpC>&^4=x7#6_S&Ktds)a8^`^tp6RnRd{KImB^o z2n=t#>iKx<*evmvoE{+fH#@WXGWs$)Uxrtf?r>AaxV0?kf0o@oDboJ6z0cgP@A$;k>SK1UqC?Q_ zk_I?j74;}uNXhOf_5ZxQSgB4otDEb9JJrX1kq`-o%T>g%M5~xXf!2_4P~K64tKgXq z&KHZ0@!cPvUJG4kw-0;tPo$zJrU-Nop>Uo65Pm|yaNvKjhi7V1g98;^N1~V3% zTR>yWa+X2FJ_wpPwz3i^6AGwOa_VMS-&`*KoKgF2&oR10Jn6{!pvVG@n=Jk@vjNuY zL~P7aDGhg~O9G^!bHi$8?G9v9Gp0cmekYkK;(q=47;~gI>h-kx-ceM{ml$#8KI$4ltyjaqP zki^cyDERloAb)dcDBU4na9C(pfD{P@eBGA}0|Rb)p{ISqi60=^FUEdF!ok{Gs;vb) zfj9(#1QA64w*ud^YsN5&PeiI>c`VioE8h)e}W%S9NMA55Gs zrWL6l+@3CKd@8(UQLTwe12SGWMqRn+j)QZRj*g)Xua)%ayzpqs{pD(WWESJYL3{M$ z%qkpM`jFoqLYVv6{IbCkL?fEiJj$VG=$taup&RL9e{s(Sgse2xVJlw0h74EXJKt2eX|dxz{->0)3W`JN7Bv!rLvRZc z0tAOZ2yVe4g9iq826qXAg`f!*+}(o1;1FDb>kKexumFS40KvK0yH1_@Z=LgWZ+}(Y zwYsa;OLz6tTA%gS=>8$=Z7pLh>|K2QElL)E=Q*(n*H`8R`8={-@4mTD-SWBOYRxV? zmF(-rJB8^Wlp?319rTrh^?QEP?|Msxrv?WbJ-+id+V#F2Y4(JPJ6U9bv+U1cIIH^W z)lg$_=g^Ma>2~Pyd_YOAv29Cb-U6DJO?NxnW7~QP*SmYi*vdUVuW#LWQ_u0`hymZi zaQS3Nb^4`ro$>0G%zbXmr5|D|iq0R<;S@?kr0j5Ruq87-Z1>crx%EzVZ9#U;{?}ti zW2W%*9MQg3Nbh%Ti6LhDd|-aFSgXoPG`mHlUU1iCHr>ru>DX?W_#13(`u*!Plu2OP z6jk=2>BC0l)aw;HCmxoYD1i4b%m$1`DYC_^L~ zIEAnFcHvad=-aO3(_MI=9#`z6-9*_!&$?<%meb5;jGd5Qp=MGf z6BD{%`L#TAOq%z%@*ib95Ey7NbUF=BlszVk3Iu3imD&*91N-ij%hW?W@~2TtdHTfP z#n0@Xd7X8Dyu36n{k#PwQ~T~X7mAO^cNV+z<HO@3X-# z_@rAn$k~(l@kciCC;&Qd*fWRI>=;fL{UPlciNDWyj$bX<#r^(r;EE8wwUVQm&7~QY zCXRj!**r^xybAEPq>h3W$uvI1j=yNIyzkE_D7fpGw)OV{U*Uwm{xB;mEg2(|y|ICd zMdQVqzMb-=XM6|E-a9kNh)^9lY`-DjhhHD1w5lufRcy+QLgJ47!fFne86#F; zX{ufroVBEZJOY?rDo!;Te6aOZ^1SO!dYRxQ*2njyA~dCWawn)>!*k7~>8Ikt&e*0>>V5ZbO|*1+2LFOqVe zXHb!aMk03^h%&9L8GMy7UDI2Kev>V@(R}*Iu6x+!Hn4~D@wj`P%#Hdbf(lK{+DD7f zJ&(v*mhn_e(R$^5L#bM^^Q@-!*b!l|+Xrb(q*MRFJYnrE7*xko!SJOy9LngR2|q5k zY`Ioiu+YBfzF{Labszk-E#*BYQk>$()=xWEGZRKwY)*UxP}0dGuPLZOkNJDI9Hy zFjfwiK6RjhH#rHW#B0(MW}i%V`943<6@Z*Nd^JEP5uZonXm=u%AM>{H^U@&Jy*i0s za_Da^xI6pMtXzHc{e~_ZcnKP*;=YL2Z^RmzDl{dJTk7*}E_h*NvgnhnxVKB59Duh~ zqouS_WoOR*{UvUw_K#OWz;gMracr%8>QQ&V*jv!8)ho;U8}9~8EU{N<=Z_gR%IpMT zbkePUG_afm=#|iIfFmdqkpLMGxY5D$`?I}&T7>TexU@v zkBx09kG)O;09ckj#(_Uov6vv{{HOcr-%H#DUQ@*GzF8Zh{iSM13%fuB%>wjdU@3Nf zlnYE!GTyNrqes|;nLFXfWU*Wg-9wmr=NBd$nCk+H?iwNvcd0Wab^3CT9a`>3V~oWI z9=_H+N-Q=MQ(io4u4mpdQ;k&5FXnKV5M7R`@WJ9h(GrAirO#XXOU{qQpk^B^Vd=Dt{wiqT zg-#j9J~@o%H2;W9mg)o6@*Vo;BSs2*4HAHpDk02mndAsov08R_48zJZ@J)s7+hyCo zy*0L#y)?AqZt-wX%+_Vx`8*A95OLHvs1$k~{h-_N_vov_gHJE=`X>L?5K+ zD?u59=mjtImMvd1GsDytuYp{IyUkW&?h zF>$#`n$~bZ)KN0B$XGeMYh&`;g8 zo_2-koaO6+8O!+L>SpIQbG(i;QW9UJi{Ecewlo?s&D!^>i$|#jaW}#HJuxt|W48=? zb^Y&O$a1s5ddr8DIt!sD!t=y1g(d4GR(s;s-HfV$GXl&m;+sAAxB^rk(3_NjE$p#L z*t4em?tA0d+XwRxN^OQwzbDZMuSE0J1)Ky{mq)^t4bnSl*)s>zNM@mMdtd78&ebHN z`!(|lE5q-p+TsRaNnMXwALaN5QIZ2IUi^Z22tsN5>nvIO+YU}Q*xh6}ee6@rR~<&1 z(PB4z>9ZBUMXZwSMmd9-aKKsmJeJq^G|#JclOh*xf0?^e0(`40nsg1z)(48;4}B_( zGwPI)yo|{oX{dVDL-5-aMGr;~vU1cPtJP5JM(sswz&Q`e<@0?y{YhsO9YK8EYJA;L z>7oG_Mts+(wCBC*Md82#XdKw&J*IizR?9k^rf1r{Ot-&>V^ke{9nI9zavlcNkIJtN z7T>?o|4rENk-?|lewZ(EfdR;%BUrzKJ^UkCpsM)EA9QHBVV8trT&*O(9?FO{MLTFL z=5P0H+T6C^jAuX0k4U;~GM!x`!X2N~3_n?qXY$HI>x@(DHEy&Q3ucT1R6fj28wX!I zC=&d$@bJ_v^%?W2Ngl}e8ww`b%BrN-PzGH;$@B2Ky1?%GMkm#~Okj(-Admyy;qya| zOi73kr_pwt?5Nj3p=&H>81!w#>Agj z(QXx{j0r=pTl>micAI_5vUw<3`Sht?Z}-j2Wx~F8DKCUQrsXl2?W8hur42(F_ zsSJ)_36&x6A|YkY6c<2a94SXbv~d>4CC4nkDPvf9Z5Fys^6^5r0j5=E>Cgy_Dk@tS z%?c}9!qB?t6t8(XMH%le8UeNWp@Nsma~Ql+^3Bo%_npMryeQJz4V=BAqE~T?dejng z3ge{fjCHoNAfYBvsfq;G%VL|j7t z`X0sy1EEgpyD;)tS1x+fnv-?C@glP0{RCW}Ma?3qpoq_&IJAYOy3G#s`rsh5=3>`K zkj``=;|*x5HSjZC zXNvPLh372q;=+6ja|SC!R-`JcL}}wwskajjTUGTpL(1zkN-p?BA2lmf+J3WsB7!k`0Brx8^cLTF9h)r+LZ$vsZo}`OpOs)?c6$hclR!R#MAeh|_DY|9r zy+_3c%IO9h9X?ksp?an&>Lw;QeQ`T-Ku6HaK~H?E9-Z5$cZu{YU;1+-6B$|JD;%!^ zt(4l>F8}a-UkC4YtOxFHckhl4VKr6P$P_O*U!)IDory%}Wz`YeFx6TO{y2Y${SBm?H9cTWV=WWJ z`_*CGso!ZN>l@~_jkeXtV}fczfA{TUkyeD>)i3|NFGcCsBmK3HXp&ol_@GVs7PIpfULy!hi zs+%KYgS%(n7_z_}6)hblk~W#LZ@&2)fwm6xkFP%&Ju|MFWbNiTwy{{g-pV1RK`L&=RE2D z4|g;~vd8xd|teYS%w!IlT4W$&FTrk-hcTADX!P?*f1YWEIRwq$Ys%^(Z9w&HT$>} zsMD#6Df=uJrX!JHP7<>Or;e_Cf=}`!`qR=i8fBj)$6Lxx{HRzd8Tnzd0p>kSps{OG zKJkml>bUj8$u|F=``l(-aMxWBC@CGZ#FXClQZ<4|&%jN}Tkg#q8z)=>Ly{$i0`rjU zvt|QddO&i=91e?h3>s~i;+6{ z8X4i6a1wDLrSuE#W(zhan+U*Zq+8p3a))JFVF4ffaV51K^YgTso~3;Y*NmM; zx8T?y-N0uyWY(8=me-HUC9xtABvX5~%yg+Cp&XF$Bq=OcK6T*D7eZ2EmIoCFWm{$S z1PNw8HDpe5hHeCusN8kdeb&f2#=3M^A~7YwJ7FRrhq*)PG9x?JIAaC{MV}5}g#7R$-Ly%)4=IUkRCGOR|XTMjn&okRmFjaO^YF5^* z@)#MCBOBezD)*xQNxydlUyN?dW{fS(s-T`gv*0BEnk}`BdmrbmPO8q8y(X$AA}*RH%I7Av!~84pudHb&%Q5-j zt?=6x(iR?<^_7X0v6Ys#VAL}dKk^hcjI=|EY;kPcZ_w<*H`_*|N7SacaM1ERD@6ab zg`!iTm7$URV+lpW_{V$ruR&A>jrX68k4x2wo$45}&wf7o<|o(@B!u-L@bKyQBAGwy z4#}UrRAu>^>Vb6k2-th^>WjvP;Nl|i3WrjWv3ISkj{m{eAcQIW^_ndxSX@|8T(ASJ z?_$fcP2u*6uOBk-{d>^ z0vWlfGQMvysI%R=iE|A+!!Nw?C917EU*_$`;;)px?s83CRd3i_jBN)k#nR5t$dJ(+ z_sP;wG@Ad)^(3LRj7q}0b2O(b`|i0~5SYb%Sjk^*5ISZ-Ab+}DGu$-X1n^TF1Ndw_ zF|e*1)cI2%`TR&AW~XpqpFb!=3cHbS>np9hYD_Mr5}y5Y`SY^r7isA2Q4(z zazRQEqWDKT2zIEbjSYdCPi1ZOGz80Nsl}gxO^DWMY0AV<2K&OL{&^6#@L1?lXu#6xSMh%3^5c*}oM6DQGY#(a^@z<&D zF(43I9e&5`h|A$5!+UFuOH0>F3$shBV4`0#M4RSB8=6F0ZgIbq<2LQ$Hh^(kAJu=! zt8ZGXTacD{(3W{V1$j_{Jc)Ka7t6u}ho`4kF+4@t_0!mCBn z)}o%eA}L)_L?=jw6BIfll7tb3n}?*yLt&XADa=rW>qz=_6s9ziOd5sXjil>FVFx3r zf>Feewk0v#W9>Gp4GacTRr>Sd2T6dWi-{YX`v!D)kCWzG5xQB=?es5ON(%nkwUhNl zV>@xkWWWv*N+{e$(SrExvN6BXzU(Hxlx27{VYHf+LpIbTO+Yu(ltMk<;)3A(LU@ytVYFkYvTa79idMtUFhfxx?P!)2F`prNWW#Fub#l>N2s@nh&n_ zA4{#}|AIs9|A4P0ZF%fy=hDN!t#ifH<)4u2kirK~JUpjQ-J+~cXOZI&dIts;P}UeXslP6zKvpEKSN-$y>kJ^nw2tC9bv zo(|lT@?vZ!{_l|d^8Yh)eEBh*5ABh+Lzjw+?V)o z#P-W7361>E(Y4;@`sv;VKn G`u_lkUM?>H diff --git a/public/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/public/fonts/bootstrap/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 From bd3df8de22e42ad9a71bc9a0f6511a22bcaba796 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 14 Nov 2016 17:50:06 +0100 Subject: [PATCH 002/182] Fix Devise Helper Controller --- spec/spec_helper.rb | 4 ++-- spec/support/controller_helpers.rb | 2 +- spec/support/wait_for_ajax.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 38f9934da..c1d49b774 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -39,7 +39,7 @@ Capybara.register_driver :poltergeist do |app| end -Capybara.default_wait_time = 1 +Capybara.default_max_wait_time = 1 # Requires supporting ruby files with custom matchers and macros, etc, # in spec/support/ and its subdirectories. @@ -107,7 +107,7 @@ RSpec.configure do |config| config.order = 'random' config.include Devise::TestHelpers, type: :view - config.include Devise::TestHelpers, type: :controller + config.include Devise::Test::ControllerHelpers config.include FactoryGirl::Syntax::Methods diff --git a/spec/support/controller_helpers.rb b/spec/support/controller_helpers.rb index 4275b0ac9..81cbac87c 100644 --- a/spec/support/controller_helpers.rb +++ b/spec/support/controller_helpers.rb @@ -1,4 +1,4 @@ RSpec.configure do |config| - config.include Devise::TestHelpers, type: :controller + config.include Devise::Test::ControllerHelpers end diff --git a/spec/support/wait_for_ajax.rb b/spec/support/wait_for_ajax.rb index 698ba493c..a81aac2af 100644 --- a/spec/support/wait_for_ajax.rb +++ b/spec/support/wait_for_ajax.rb @@ -1,7 +1,7 @@ # spec/support/wait_for_ajax.rb module WaitForAjax def wait_for_ajax - Timeout.timeout(Capybara.default_wait_time) do + Timeout.timeout(Capybara.default_max_wait_time) do loop until finished_all_ajax_requests? end end From a5a95abf06aa29e3dcd5e0450d73d4911dbcf718 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 14 Nov 2016 18:36:09 +0100 Subject: [PATCH 003/182] Fix test for all Model --- spec/controllers/backoffice/dossiers_controller_spec.rb | 2 +- spec/models/france_connect_information_spec.rb | 2 +- spec/models/gestionnaire_spec.rb | 2 +- spec/models/search_spec.rb | 2 +- spec/models/user_spec.rb | 2 +- spec/spec_helper.rb | 7 +++++-- spec/support/controller_helpers.rb | 2 +- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 542b7fc12..f29bcd65f 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -1,4 +1,4 @@ -require 'rails_helper' +require 'spec_helper' describe Backoffice::DossiersController, type: :controller do before do diff --git a/spec/models/france_connect_information_spec.rb b/spec/models/france_connect_information_spec.rb index 515987a16..2bc10de48 100644 --- a/spec/models/france_connect_information_spec.rb +++ b/spec/models/france_connect_information_spec.rb @@ -1,4 +1,4 @@ -require 'rails_helper' +require 'spec_helper' describe FranceConnectInformation, type: :model do describe 'database columns' do diff --git a/spec/models/gestionnaire_spec.rb b/spec/models/gestionnaire_spec.rb index 61f71acec..421437256 100644 --- a/spec/models/gestionnaire_spec.rb +++ b/spec/models/gestionnaire_spec.rb @@ -1,4 +1,4 @@ -require 'rails_helper' +require 'spec_helper' describe Gestionnaire, type: :model do let(:admin) { create :administrateur } diff --git a/spec/models/search_spec.rb b/spec/models/search_spec.rb index 4e7d20ec2..ba760cdd6 100644 --- a/spec/models/search_spec.rb +++ b/spec/models/search_spec.rb @@ -1,4 +1,4 @@ -require 'rails_helper' +require 'spec_helper' describe Search do describe '.results' do diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 3cbb0283c..a5cf4dccc 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,4 +1,4 @@ -require 'rails_helper' +require 'spec_helper' describe User, type: :model do describe 'database columns' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c1d49b774..51f1894cf 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -97,6 +97,9 @@ RSpec.configure do |config| config.infer_spec_type_from_file_location! config.tty = true + config.include Shoulda::Matchers::ActiveRecord, type: :model + config.include Shoulda::Matchers::ActiveModel, type: :model + config.include Shoulda::Matchers::Independent, type: :model config.use_transactional_fixtures = false @@ -106,8 +109,8 @@ RSpec.configure do |config| config.order = 'random' - config.include Devise::TestHelpers, type: :view - config.include Devise::Test::ControllerHelpers + config.include Devise::Test::ControllerHelpers, type: :controller + config.include Devise::Test::ControllerHelpers, type: :view config.include FactoryGirl::Syntax::Methods diff --git a/spec/support/controller_helpers.rb b/spec/support/controller_helpers.rb index 81cbac87c..97f2a814b 100644 --- a/spec/support/controller_helpers.rb +++ b/spec/support/controller_helpers.rb @@ -1,4 +1,4 @@ RSpec.configure do |config| - config.include Devise::Test::ControllerHelpers + # config.include Devise::TestHelpers, type: :controller end From 213e84b546f24b6ef97e7b00e4831c16009404c3 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 03:56:26 +0100 Subject: [PATCH 004/182] Fix DEPRECATION for services --- app/services/accompagnateur_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/accompagnateur_service.rb b/app/services/accompagnateur_service.rb index 2babc2e93..df4e56825 100644 --- a/app/services/accompagnateur_service.rb +++ b/app/services/accompagnateur_service.rb @@ -12,7 +12,7 @@ class AccompagnateurService if @to == ASSIGN AssignTo.create(gestionnaire: @accompagnateur, procedure: @procedure) elsif @to == NOT_ASSIGN - AssignTo.delete_all(gestionnaire: @accompagnateur, procedure: @procedure) + AssignTo.where(gestionnaire: @accompagnateur, procedure: @procedure).delete_all end end From d9a5eff21d9a7cda40a55fb043453a337467d05f Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 04:12:22 +0100 Subject: [PATCH 005/182] Fix Views test. --- spec/views/users/carte/show.html.haml_spec.rb | 2 +- spec/views/users/siret/index.html.haml_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/views/users/carte/show.html.haml_spec.rb b/spec/views/users/carte/show.html.haml_spec.rb index f80425633..a20b907f0 100644 --- a/spec/views/users/carte/show.html.haml_spec.rb +++ b/spec/views/users/carte/show.html.haml_spec.rb @@ -23,7 +23,7 @@ describe 'users/carte/show.html.haml', type: :view do context 'présence des inputs hidden' do it 'stockage du json des polygons dessinés' do - expect(rendered).to have_selector('input[type=hidden][id=json_latlngs][name=json_latlngs]') + expect(rendered).to have_selector('input[type=hidden][id=json_latlngs][name=json_latlngs]', visible: false) end end diff --git a/spec/views/users/siret/index.html.haml_spec.rb b/spec/views/users/siret/index.html.haml_spec.rb index 5740ac7af..4ba45d6c6 100644 --- a/spec/views/users/siret/index.html.haml_spec.rb +++ b/spec/views/users/siret/index.html.haml_spec.rb @@ -25,7 +25,7 @@ describe 'users/siret/index.html.haml', type: :view do end context 'stockage de l\'ID de la procédure dans un champs hidden' do - it {expect(rendered).to have_selector("input[type=hidden][id=procedure_id][name=procedure_id][value='#{procedure.id}']")} + it {expect(rendered).to have_selector("input[type=hidden][id=procedure_id][name=procedure_id][value='#{procedure.id}']", visible: false)} end it 'le titre de la procédure est présent sur la page' do From 430d32dfca21ef3a84dc84dfbc2d38fe078eee23 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 04:24:09 +0100 Subject: [PATCH 006/182] Fix DEPRECATION WARNING for spec/controllers/*.rb --- spec/controllers/api_controller_spec.rb | 11 ++++++----- spec/controllers/invites_controller_spec.rb | 2 +- ..._example.rb => users_controller_shared_example.rb} | 6 +++--- spec/controllers/users_controller_spec.rb | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) rename spec/controllers/{user_controller_shared_example.rb => users_controller_shared_example.rb} (92%) diff --git a/spec/controllers/api_controller_spec.rb b/spec/controllers/api_controller_spec.rb index ce9f22f9d..a5ff814e5 100644 --- a/spec/controllers/api_controller_spec.rb +++ b/spec/controllers/api_controller_spec.rb @@ -5,6 +5,7 @@ describe APIController, type: :controller do def show render json: {}, satus: 200 end + def index render json: {}, satus: 200 end @@ -13,17 +14,17 @@ describe APIController, type: :controller do describe 'GET index' do context 'when token is missing' do subject { get :index } - it { expect(subject.status).to eq(401) } + it { expect(subject.status).to eq(401) } end context 'when token does not exist' do let(:token) { 'invalid_token' } - subject { get :index, token: token } - it { expect(subject.status).to eq(401) } + subject { get :index, params: {token: token} } + it { expect(subject.status).to eq(401) } end context 'when token exist' do let(:administrateur) { create(:administrateur) } - subject { get :index, token: administrateur.api_token } - it { expect(subject.status).to eq(200) } + subject { get :index, params: {token: administrateur.api_token} } + it { expect(subject.status).to eq(200) } end end end \ No newline at end of file diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb index e528188cd..9f6d38d81 100644 --- a/spec/controllers/invites_controller_spec.rb +++ b/spec/controllers/invites_controller_spec.rb @@ -11,7 +11,7 @@ describe InvitesController, type: :controller do sign_in create(:gestionnaire) end - subject { post :create, dossier_id: dossier.id, email: email } + subject { post :create, params: {dossier_id: dossier.id, email: email} } it { expect { subject }.to change(InviteGestionnaire, :count).by(1) } diff --git a/spec/controllers/user_controller_shared_example.rb b/spec/controllers/users_controller_shared_example.rb similarity index 92% rename from spec/controllers/user_controller_shared_example.rb rename to spec/controllers/users_controller_shared_example.rb index efe90eb88..8db590de5 100644 --- a/spec/controllers/user_controller_shared_example.rb +++ b/spec/controllers/users_controller_shared_example.rb @@ -1,6 +1,6 @@ shared_examples 'current_user_dossier_spec' do context 'when no dossier_id is filled' do - it { expect { subject.current_user_dossier }.to raise_error } + it { expect { subject.current_user_dossier }.to raise_error ActiveRecord::RecordNotFound } end context 'when dossier_id is given as a param' do @@ -11,7 +11,7 @@ shared_examples 'current_user_dossier_spec' do end context 'when dossier id is incorrect' do - it { expect { subject.current_user_dossier 1 }.to raise_error } + it { expect { subject.current_user_dossier 1 }.to raise_error ActiveRecord::RecordNotFound } end end @@ -27,7 +27,7 @@ shared_examples 'current_user_dossier_spec' do end context 'when dossier id is incorrect' do - it { expect { subject.current_user_dossier }.to raise_error } + it { expect { subject.current_user_dossier }.to raise_error ActiveRecord::RecordNotFound } end context 'when dossier_id is given as a param' do diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index eee59c898..c04cdf687 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -require 'controllers/user_controller_shared_example' +require 'controllers/users_controller_shared_example' describe UsersController, type: :controller do describe '#current_user_dossier' do From 0fc81eb0da2aa3a65fe1a7512b58efefc9f88e2e Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 04:26:25 +0100 Subject: [PATCH 007/182] Fix DEPRECATION WARNING for spec/controllers/ban/*.rb --- spec/controllers/ban/search_controller_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/controllers/ban/search_controller_spec.rb b/spec/controllers/ban/search_controller_spec.rb index 5d799817e..ccfb20cdf 100644 --- a/spec/controllers/ban/search_controller_spec.rb +++ b/spec/controllers/ban/search_controller_spec.rb @@ -2,13 +2,13 @@ require 'spec_helper' describe Ban::SearchController, type: :controller do describe '#GET' do - let (:request) { '' } before do stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=5&q="). to_return(:status => 200, :body => 'Missing query', :headers => {}) - get :get, request: request + + get :get, params: {request: request} end it { expect(response.status).to eq 200 } From 15e1bef7e4d96c7f4bdd3c7261e59a083c0fe73f Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 04:29:05 +0100 Subject: [PATCH 008/182] Fix DEPRECATION WARNING for spec/controllers/gestionnaires/*.rb --- spec/controllers/gestionnaires/passwords_controller_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/controllers/gestionnaires/passwords_controller_spec.rb b/spec/controllers/gestionnaires/passwords_controller_spec.rb index c094f606e..5cdec1a09 100644 --- a/spec/controllers/gestionnaires/passwords_controller_spec.rb +++ b/spec/controllers/gestionnaires/passwords_controller_spec.rb @@ -17,11 +17,11 @@ describe Gestionnaires::PasswordsController, type: :controller do end it "also signs user in" do - put :update, gestionnaire: { + put :update, params: {gestionnaire: { reset_password_token: @token, password: "supersecret", password_confirmation: "supersecret", - } + }} expect(subject.current_gestionnaire).to eq(gestionnaire) expect(subject.current_user).to eq(user) end From da3ef13522f251128ca7811829a8bfc66589d413 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 04:42:32 +0100 Subject: [PATCH 009/182] Fix tests spec/controllers/france_connect/*.rb --- .../france_connect/particulier_controller.rb | 3 ++- .../particulier_controller_spec.rb | 22 +++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/controllers/france_connect/particulier_controller.rb b/app/controllers/france_connect/particulier_controller.rb index 16e103693..a62393990 100644 --- a/app/controllers/france_connect/particulier_controller.rb +++ b/app/controllers/france_connect/particulier_controller.rb @@ -83,7 +83,8 @@ class FranceConnect::ParticulierController < ApplicationController unless user.valid? 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 user.save diff --git a/spec/controllers/france_connect/particulier_controller_spec.rb b/spec/controllers/france_connect/particulier_controller_spec.rb index bab1adab4..c0a6857b3 100644 --- a/spec/controllers/france_connect/particulier_controller_spec.rb +++ b/spec/controllers/france_connect/particulier_controller_spec.rb @@ -38,7 +38,7 @@ describe FranceConnect::ParticulierController, type: :controller do let!(:france_connect_information) { create(:france_connect_information, france_connect_particulier_id: france_connect_particulier_id, given_name: given_name, family_name: family_name, birthdate: birthdate, gender: gender, birthplace: birthplace) } context { - subject { get :callback, code: code } + subject { get :callback, params: {code: code} } it 'does not create a new france_connect_information in database' do expect { subject }.not_to change { FranceConnectInformation.count } @@ -49,7 +49,7 @@ describe FranceConnect::ParticulierController, type: :controller do before do create(:user, email: email, france_connect_information: france_connect_information) - get :callback, code: code + get :callback, params: {code: code} end let(:email) { 'plop@plop.com' } @@ -63,7 +63,7 @@ describe FranceConnect::ParticulierController, type: :controller do it 'redirect to stored location' do subject.store_location_for(:user, stored_location) - get :callback, code: code + get :callback, params: {code: code} expect(response).to redirect_to(stored_location) end end @@ -72,7 +72,7 @@ describe FranceConnect::ParticulierController, type: :controller do let(:salt) { FranceConnectSaltService.new(france_connect_information).salt } before do - get :callback, code: code + get :callback, params: {code: code} end it 'redirects to check email FC page' do @@ -84,13 +84,13 @@ describe FranceConnect::ParticulierController, type: :controller do context 'when france_connect_particulier_id does not exist in database' do let(:last_france_connect_information) { FranceConnectInformation.last } let(:salt) { FranceConnectSaltService.new(last_france_connect_information).salt } - subject { get :callback, code: code } + subject { get :callback, params: {code: code} } it { expect { subject }.to change { FranceConnectInformation.count }.by(1) } describe 'FranceConnectInformation attributs' do before do - get :callback, code: code + get :callback, params: {code: code} end subject { last_france_connect_information } @@ -113,7 +113,7 @@ describe FranceConnect::ParticulierController, type: :controller do context 'when code is not correct' do before do allow(FranceConnectService).to receive(:retrieve_user_informations_particulier) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') } - get :callback, code: code + get :callback, params: {code: code} end it 'redirect to login page' do @@ -134,7 +134,7 @@ describe FranceConnect::ParticulierController, type: :controller do let(:france_connect_information_id) { france_connect_information.id } let(:salt) { FranceConnectSaltService.new(france_connect_information).salt } - subject { post :check_email, fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: email} } + subject { post :check_email, params: {fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: email}} } context 'when salt and fci_id does not matches' do let(:france_connect_information_fake) { create(:france_connect_information, france_connect_particulier_id: 'iugfjh') } @@ -177,7 +177,7 @@ describe FranceConnect::ParticulierController, type: :controller do subject end - subject { post :check_email, fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: email, password: password} } + subject { post :check_email, params: {fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: email, password: password}} } context 'when email and password couple is valid' do it { expect { subject }.not_to change { User.count } } @@ -205,7 +205,7 @@ describe FranceConnect::ParticulierController, type: :controller do let(:france_connect_information_id) { france_connect_information.id } let(:salt) { FranceConnectSaltService.new(france_connect_information).salt } - subject { post :create, fci_id: france_connect_information_id, salt: salt, user:{email_france_connect: france_connect_information.email_france_connect} } + subject { post :create, params: {fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: france_connect_information.email_france_connect}} } context 'when email is filled' do let(:email) { 'plop@gmail.com' } @@ -218,7 +218,7 @@ describe FranceConnect::ParticulierController, type: :controller do let(:email) { '' } it { expect { subject }.not_to change { User.count } } - it { expect(subject).to redirect_to(france_connect_particulier_new_path(fci_id: france_connect_information_id, salt: salt, user:{email_france_connect: france_connect_information.email_france_connect})) } + it { expect(subject).to redirect_to(france_connect_particulier_new_path(fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: france_connect_information.email_france_connect})) } end end end From 7c74cbc54b93516b9f04b2c3231631a37ca5867e Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 04:50:18 +0100 Subject: [PATCH 010/182] Fix major DEPRECATION WARNING for spec/controllers/backoffice/*.rb --- .../commentaires_controller_spec.rb | 10 +++---- .../backoffice/dossiers_controller_spec.rb | 30 +++++++++---------- ...preference_list_dossier_controller_spec.rb | 13 ++++---- .../private_formulaires_controller_spec.rb | 9 +++--- 4 files changed, 32 insertions(+), 30 deletions(-) diff --git a/spec/controllers/backoffice/commentaires_controller_spec.rb b/spec/controllers/backoffice/commentaires_controller_spec.rb index 231f12c69..63ebb3261 100644 --- a/spec/controllers/backoffice/commentaires_controller_spec.rb +++ b/spec/controllers/backoffice/commentaires_controller_spec.rb @@ -17,7 +17,7 @@ describe Backoffice::CommentairesController, type: :controller do end context "création correct d'un commentaire" do - subject { post :create, dossier_id: dossier_id, email_commentaire: email_commentaire, texte_commentaire: texte_commentaire } + subject { post :create, params: {dossier_id: dossier_id, email_commentaire: email_commentaire, texte_commentaire: texte_commentaire} } it 'depuis la page admin' do expect(subject).to redirect_to("/backoffice/dossiers/#{dossier_id}") @@ -42,7 +42,7 @@ describe Backoffice::CommentairesController, type: :controller do let(:document_upload) { Rack::Test::UploadedFile.new("./spec/support/files/piece_justificative_0.pdf", 'application/pdf') } subject do - post :create, dossier_id: dossier_id, email_commentaire: email_commentaire, texte_commentaire: texte_commentaire, piece_justificative: {content: document_upload} + post :create, params: {dossier_id: dossier_id, email_commentaire: email_commentaire, texte_commentaire: texte_commentaire, piece_justificative: {content: document_upload}} end it 'create a new piece justificative' do @@ -91,7 +91,7 @@ describe Backoffice::CommentairesController, type: :controller do sign_in create(:gestionnaire) dossier.updated! - post :create, dossier_id: dossier_id, texte_commentaire: texte_commentaire + post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire} dossier.reload end @@ -103,7 +103,7 @@ describe Backoffice::CommentairesController, type: :controller do expect(NotificationMailer).to receive(:new_answer).and_return(NotificationMailer) expect(NotificationMailer).to receive(:deliver_now!) - post :create, dossier_id: dossier_id, texte_commentaire: texte_commentaire + post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire} end end end @@ -117,7 +117,7 @@ describe Backoffice::CommentairesController, type: :controller do expect(NotificationMailer).not_to receive(:new_answer) expect(NotificationMailer).not_to receive(:deliver_now!) - post :create, dossier_id: dossier_id, texte_commentaire: texte_commentaire + post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire} end end end diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index f29bcd65f..5127e5260 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -24,27 +24,27 @@ describe Backoffice::DossiersController, type: :controller do end it 'returns http success' do - get :show, id: dossier_id + get :show, params: {id: dossier_id} expect(response).to have_http_status(200) end context ' when dossier is archived' do before do - get :show, id: dossier_archived.id + get :show, params: {id: dossier_archived.id} end it { expect(response).to redirect_to('/backoffice') } end context 'when dossier id does not exist' do before do - get :show, id: bad_dossier_id + get :show, params: {id: bad_dossier_id} end it { expect(response).to redirect_to('/backoffice') } end end context 'gestionnaire does not connected but dossier id is correct' do - subject { get :show, id: dossier_id } + subject { get :show, params: {id: dossier_id} } it { is_expected.to redirect_to('/gestionnaires/sign_in') } end @@ -57,7 +57,7 @@ describe Backoffice::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :a_traiter + get :index, params: {liste: :a_traiter} expect(response).to have_http_status(200) end end @@ -70,7 +70,7 @@ describe Backoffice::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :fige + get :index, params: {liste: :fige} expect(response).to have_http_status(200) end end @@ -83,7 +83,7 @@ describe Backoffice::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :termine + get :index, params: {liste: :termine} expect(response).to have_http_status(200) end end @@ -96,7 +96,7 @@ describe Backoffice::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :list_fake + get :index, params: {liste: :list_fake} expect(response).to redirect_to(backoffice_dossiers_path) end end @@ -108,7 +108,7 @@ describe Backoffice::DossiersController, type: :controller do end it 'returns http success' do - post :search, search_terms: 'test' + post :search, params: {search_terms: 'test'} expect(response).to have_http_status(200) end @@ -120,7 +120,7 @@ describe Backoffice::DossiersController, type: :controller do sign_in gestionnaire end - subject { post :valid, dossier_id: dossier_id } + subject { post :valid, params: {dossier_id: dossier_id} } it 'change state to validated' do subject @@ -143,7 +143,7 @@ describe Backoffice::DossiersController, type: :controller do sign_in gestionnaire end - subject { post :receive, dossier_id: dossier_id } + subject { post :receive, params: {dossier_id: dossier_id} } context 'when it post a receive instruction' do before do @@ -170,7 +170,7 @@ describe Backoffice::DossiersController, type: :controller do sign_in gestionnaire end - subject { post :refuse, dossier_id: dossier_id } + subject { post :refuse, params: {dossier_id: dossier_id} } it 'change state to refused' do subject @@ -192,7 +192,7 @@ describe Backoffice::DossiersController, type: :controller do dossier.without_continuation! sign_in gestionnaire end - subject { post :without_continuation, dossier_id: dossier_id } + subject { post :without_continuation, params: {dossier_id: dossier_id} } it 'change state to without_continuation' do @@ -215,7 +215,7 @@ describe Backoffice::DossiersController, type: :controller do dossier.received! sign_in gestionnaire end - subject { post :close, dossier_id: dossier_id } + subject { post :close, params: {dossier_id: dossier_id} } it 'change state to closed' do subject @@ -237,7 +237,7 @@ describe Backoffice::DossiersController, type: :controller do sign_in gestionnaire end - subject { put :follow, dossier_id: dossier_id } + subject { put :follow, params: {dossier_id: dossier_id} } it { expect(subject.status).to eq 302 } diff --git a/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb b/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb index 06ccf9b55..ec365de42 100644 --- a/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb +++ b/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb @@ -13,11 +13,12 @@ describe Backoffice::PreferenceListDossierController, type: :controller do end describe '#POST add' do - subject { post :add, libelle: libelle, - table: table, - attr: attr, - attr_decorate: attr_decorate, - bootstrap_lg: bootstrap_lg } + subject { post :add, + params: {libelle: libelle, + table: table, + attr: attr, + attr_decorate: attr_decorate, + bootstrap_lg: bootstrap_lg} } it { expect(subject.status).to eq 200 } it { expect { subject }.to change(PreferenceListDossier, :count).by(1) } @@ -44,7 +45,7 @@ describe Backoffice::PreferenceListDossierController, type: :controller do describe '#DELETE delete' do let!(:pref) { create :preference_list_dossier } - subject { delete :delete, pref_id: pref.id } + subject { delete :delete, params: {pref_id: pref.id} } it { expect(subject.status).to eq 200 } it { expect { subject }.to change(PreferenceListDossier, :count).by(-1) } diff --git a/spec/controllers/backoffice/private_formulaires_controller_spec.rb b/spec/controllers/backoffice/private_formulaires_controller_spec.rb index 80b5bb345..70081558d 100644 --- a/spec/controllers/backoffice/private_formulaires_controller_spec.rb +++ b/spec/controllers/backoffice/private_formulaires_controller_spec.rb @@ -12,10 +12,11 @@ describe Backoffice::PrivateFormulairesController, type: :controller do end describe '#PATCH update' do - subject { patch :update, dossier_id: dossier.id, - champs: { - "'#{dossier.champs_private.first.id}'" => dossier_champs_first - } } + subject { patch :update, + params: {dossier_id: dossier.id, + champs: { + "'#{dossier.champs_private.first.id}'" => dossier_champs_first + }} } before do subject From 5750eb1aa5224145a073a50c45c0e5aeed481cd9 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 05:19:30 +0100 Subject: [PATCH 011/182] Fix major DEPRECATION WARNING for spec/controllers/admin/*.rb --- Gemfile | 1 + Gemfile.lock | 5 ++ .../admin/gestionnaires_controller.rb | 2 +- app/services/types_de_champ_service.rb | 7 ++- .../admin/accompagnateurs_controller_spec.rb | 10 ++-- .../admin/gestionnaires_controller_spec.rb | 4 +- .../admin/mails_controller_spec.rb | 14 ++--- .../pieces_justificatives_controller_spec.rb | 36 +++++------ .../previsualisations_controller_spec.rb | 6 +- .../admin/procedures_controller_spec.rb | 32 +++++----- .../admin/types_de_champ_controller_spec.rb | 14 ++--- .../types_de_champ_private_controller_spec.rb | 60 +++++++++---------- 12 files changed, 99 insertions(+), 92 deletions(-) diff --git a/Gemfile b/Gemfile index b99597f66..af535d444 100644 --- a/Gemfile +++ b/Gemfile @@ -108,6 +108,7 @@ group :test do # gem 'guard-rspec', require: false # gem 'guard-livereload', '~> 2.4', require: false gem 'vcr' + gem 'rails-controller-testing' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 8ea318242..fd3ccac28 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -409,6 +409,10 @@ GEM bundler (>= 1.3.0, < 2.0) railties (= 5.0.0.1) sprockets-rails (>= 2.0.0) + rails-controller-testing (1.0.1) + actionpack (~> 5.x) + actionview (~> 5.x) + activesupport (~> 5.x) rails-dom-testing (2.0.1) activesupport (>= 4.2.0, < 6.0) nokogiri (~> 1.6.0) @@ -628,6 +632,7 @@ DEPENDENCIES pry-byebug railroady rails (= 5.0.0.1) + rails-controller-testing rest-client rgeo-geojson rspec-rails (~> 3.0) diff --git a/app/controllers/admin/gestionnaires_controller.rb b/app/controllers/admin/gestionnaires_controller.rb index 421eaa240..7dc769471 100644 --- a/app/controllers/admin/gestionnaires_controller.rb +++ b/app/controllers/admin/gestionnaires_controller.rb @@ -21,7 +21,7 @@ class Admin::GestionnairesController < AdminController assign_gestionnaire! end - if procedure_id + if procedure_id.present? redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure_id) else redirect_to admin_gestionnaires_path diff --git a/app/services/types_de_champ_service.rb b/app/services/types_de_champ_service.rb index 8a6c7a066..b8397d3a4 100644 --- a/app/services/types_de_champ_service.rb +++ b/app/services/types_de_champ_service.rb @@ -7,9 +7,10 @@ class TypesDeChampService .permit("#{attributes}" => [:libelle, :description, :order_place, :type_champ, :id, :mandatory, :type, drop_down_list_attributes: [:value, :id]]) - parameters[attributes].each do |param| - if param.second[:libelle].empty? - parameters[attributes].delete(param.first.to_s) + + parameters[attributes].each do |param_first, param_second| + if param_second[:libelle].empty? + parameters[attributes].delete(param_first.to_s) end end diff --git a/spec/controllers/admin/accompagnateurs_controller_spec.rb b/spec/controllers/admin/accompagnateurs_controller_spec.rb index 285b43feb..748e3a815 100644 --- a/spec/controllers/admin/accompagnateurs_controller_spec.rb +++ b/spec/controllers/admin/accompagnateurs_controller_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Admin::AccompagnateursController, type: :controller do +describe Admin::AccompagnateursController, type: :controller do let(:admin) { create(:administrateur) } let(:procedure) { create :procedure, administrateur: admin } let(:gestionnaire) { create :gestionnaire, administrateurs: [admin] } @@ -10,12 +10,12 @@ describe Admin::AccompagnateursController, type: :controller do end describe 'GET #show' do - subject { get :show, procedure_id: procedure.id } - it { expect(subject.status).to eq(200) } + subject { get :show, params: {procedure_id: procedure.id} } + it { expect(subject.status).to eq(200) } end describe 'PUT #update' do - subject { put :update, accompagnateur_id: gestionnaire.id ,procedure_id: procedure.id, to: 'assign' } + subject { put :update, params: {accompagnateur_id: gestionnaire.id, procedure_id: procedure.id, to: 'assign'} } it { expect(subject).to redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure.id) } @@ -27,7 +27,7 @@ describe Admin::AccompagnateursController, type: :controller do it { expect(flash[:notice]).to be_present } it 'default pref list dossier procedure columns are created' do - expect(procedure.preference_list_dossiers.size).to eq gestionnaire.preference_list_dossiers.where('procedure_id IS NULL').size + expect(procedure.preference_list_dossiers.size).to eq gestionnaire.preference_list_dossiers.where('procedure_id IS NULL').size end end end diff --git a/spec/controllers/admin/gestionnaires_controller_spec.rb b/spec/controllers/admin/gestionnaires_controller_spec.rb index f00c5970c..a32c2adc3 100644 --- a/spec/controllers/admin/gestionnaires_controller_spec.rb +++ b/spec/controllers/admin/gestionnaires_controller_spec.rb @@ -17,7 +17,7 @@ describe Admin::GestionnairesController, type: :controller do describe 'POST #create' do let(:email) { 'test@plop.com' } let(:procedure_id) { nil } - subject { post :create, gestionnaire: {email: email}, procedure_id: procedure_id } + subject { post :create, params: {gestionnaire: {email: email}, procedure_id: procedure_id} } context 'When email is valid' do before do @@ -175,7 +175,7 @@ describe Admin::GestionnairesController, type: :controller do let!(:admin) { create :administrateur } let!(:gestionnaire) { create :gestionnaire, email: email, administrateurs: [admin] } - subject { delete :destroy, id: gestionnaire.id } + subject { delete :destroy, params: {id: gestionnaire.id} } context "when gestionaire_id is valid" do before do diff --git a/spec/controllers/admin/mails_controller_spec.rb b/spec/controllers/admin/mails_controller_spec.rb index acb973e24..a51045d9e 100644 --- a/spec/controllers/admin/mails_controller_spec.rb +++ b/spec/controllers/admin/mails_controller_spec.rb @@ -8,7 +8,7 @@ describe Admin::MailsController, type: :controller do end describe 'GET index' do - subject { get :index, procedure_id: procedure.id } + subject { get :index, params: {procedure_id: procedure.id} } it { expect(subject.status).to eq 200 } end @@ -19,12 +19,12 @@ describe Admin::MailsController, type: :controller do context 'when is mail_received id' do subject { patch :update, - procedure_id: procedure.id, - id: procedure.mail_received.id, - mail_received: { - object: object, - body: body - } } + params: {procedure_id: procedure.id, + id: procedure.mail_received.id, + mail_received: { + object: object, + body: body + }} } it { expect(subject).to redirect_to admin_procedure_mails_path } diff --git a/spec/controllers/admin/pieces_justificatives_controller_spec.rb b/spec/controllers/admin/pieces_justificatives_controller_spec.rb index 5c33da67e..53f3212b7 100644 --- a/spec/controllers/admin/pieces_justificatives_controller_spec.rb +++ b/spec/controllers/admin/pieces_justificatives_controller_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Admin::PiecesJustificativesController, type: :controller do +describe Admin::PiecesJustificativesController, type: :controller do let(:admin) { create(:administrateur) } let(:published) { false } let(:procedure) { create(:procedure, administrateur: admin, published: published) } @@ -11,7 +11,7 @@ describe Admin::PiecesJustificativesController, type: :controller do describe 'GET #show' do let(:procedure_id) { procedure.id } - subject { get :show, procedure_id: procedure_id } + subject { get :show, params: {procedure_id: procedure_id} } context 'when procedure is not found' do let(:procedure_id) { 9_999_999 } @@ -36,22 +36,22 @@ describe Admin::PiecesJustificativesController, type: :controller do let(:description) { "relevé d'identité bancaire" } let(:update_params) do { - types_de_piece_justificative_attributes: - { - '0' => - { - libelle: libelle, - description: description - } - } + types_de_piece_justificative_attributes: + { + '0' => + { + libelle: libelle, + description: description + } + } } end - let(:request) { put :update, procedure_id: procedure_id, format: :js, procedure: update_params } + let(:request) { put :update, params: {procedure_id: procedure_id, format: :js, procedure: update_params} } subject { request } it { is_expected.to render_template('show') } - it { expect{ subject }.to change(TypeDePieceJustificative, :count).by(1) } + it { expect { subject }.to change(TypeDePieceJustificative, :count).by(1) } it 'adds type de pj to procedure' do request procedure.reload @@ -67,7 +67,7 @@ describe Admin::PiecesJustificativesController, type: :controller do context 'when libelle is blank' do let(:libelle) { '' } - it { expect{ subject }.not_to change(TypeDePieceJustificative, :count) } + it { expect { subject }.not_to change(TypeDePieceJustificative, :count) } end end @@ -75,7 +75,7 @@ describe Admin::PiecesJustificativesController, type: :controller do let!(:pj) { create(:type_de_piece_justificative, procedure: procedure) } let(:procedure_id) { procedure.id } let(:pj_id) { pj.id } - let(:request) { delete :destroy, procedure_id: procedure_id, id: pj_id } + let(:request) { delete :destroy, params: {procedure_id: procedure_id, id: pj_id} } subject { request } context 'when procedure is not found' do let(:procedure_id) { 9_999_999 } @@ -93,12 +93,12 @@ describe Admin::PiecesJustificativesController, type: :controller do end context 'when pj is found' do it { expect(subject.status).to eq(200) } - it { expect{ subject }.to change(TypeDePieceJustificative, :count).by(-1) } + it { expect { subject }.to change(TypeDePieceJustificative, :count).by(-1) } end end describe 'POST #move_up' do - subject { post :move_up, procedure_id: procedure.id, index: index, format: :js } + subject { post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} } context 'when procedure have no type de champ' do let(:index) { 0 } @@ -124,7 +124,7 @@ describe Admin::PiecesJustificativesController, type: :controller do it { expect(subject.status).to eq(200) } it { expect(subject).to render_template('show') } it 'changes order places' do - post :move_up, procedure_id: procedure.id, index: index, format: :js + post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} type_de_piece_justificative_0.reload type_de_piece_justificative_1.reload expect(type_de_piece_justificative_0.order_place).to eq(1) @@ -135,7 +135,7 @@ describe Admin::PiecesJustificativesController, type: :controller do end describe 'POST #move_down' do - let(:request) { post :move_down, procedure_id: procedure.id, index: index, format: :js } + let(:request) { post :move_down, params: {procedure_id: procedure.id, index: index, format: :js} } let(:index) { 0 } subject { request } diff --git a/spec/controllers/admin/previsualisations_controller_spec.rb b/spec/controllers/admin/previsualisations_controller_spec.rb index 8c9836bfb..b418b672e 100644 --- a/spec/controllers/admin/previsualisations_controller_spec.rb +++ b/spec/controllers/admin/previsualisations_controller_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Admin::PrevisualisationsController, type: :controller do +describe Admin::PrevisualisationsController, type: :controller do let(:admin) { create(:administrateur) } let(:procedure) { create :procedure, administrateur: admin } @@ -9,8 +9,8 @@ describe Admin::PrevisualisationsController, type: :controller do end describe 'GET #show' do - subject { get :show, procedure_id: procedure.id } - it { expect(subject.status).to eq(200) } + subject { get :show, params: {procedure_id: procedure.id} } + it { expect(subject.status).to eq(200) } end end \ No newline at end of file diff --git a/spec/controllers/admin/procedures_controller_spec.rb b/spec/controllers/admin/procedures_controller_spec.rb index c72a02d35..18fecb450 100644 --- a/spec/controllers/admin/procedures_controller_spec.rb +++ b/spec/controllers/admin/procedures_controller_spec.rb @@ -58,7 +58,7 @@ describe Admin::ProceduresController, type: :controller do let(:procedure_published) { create :procedure, published: true, archived: false } let(:procedure_archived) { create :procedure, published: false, archived: true } - subject { delete :destroy, id: procedure.id } + subject { delete :destroy, params: {id: procedure.id} } context 'when procedure is draft' do let!(:procedure) { procedure_draft } @@ -98,7 +98,7 @@ describe Admin::ProceduresController, type: :controller do let(:procedure) { create(:procedure, administrateur: admin, published: published) } let(:procedure_id) { procedure.id } - subject { get :edit, id: procedure_id } + subject { get :edit, params: {id: procedure_id} } context 'when user is not connected' do before do @@ -130,14 +130,14 @@ describe Admin::ProceduresController, type: :controller do describe 'POST #create' do context 'when all attributs are filled' do describe 'new procedure in database' do - subject { post :create, procedure: procedure_params } + subject { post :create, params: {procedure: procedure_params} } it { expect { subject }.to change { Procedure.count }.by(1) } end context 'when procedure is correctly save' do before do - post :create, procedure: procedure_params + post :create, params: {procedure: procedure_params} end describe 'procedure attributs in database' do @@ -175,7 +175,7 @@ describe Admin::ProceduresController, type: :controller do let(:description) { '' } describe 'no new procedure in database' do - subject { post :create, procedure: procedure_params } + subject { post :create, params: {procedure: procedure_params} } it { expect { subject }.to change { Procedure.count }.by(0) } @@ -186,7 +186,7 @@ describe Admin::ProceduresController, type: :controller do describe 'flash message is present' do before do - post :create, procedure: procedure_params + post :create, params: {procedure: procedure_params} end it { expect(flash[:alert]).to be_present } @@ -202,14 +202,14 @@ describe Admin::ProceduresController, type: :controller do sign_out admin end - subject { put :update, id: procedure.id } + subject { put :update, params: {id: procedure.id} } it { expect(subject).to redirect_to new_administrateur_session_path } end context 'when administrateur is connected' do before do - put :update, id: procedure.id, procedure: procedure_params + put :update, params: {id: procedure.id, procedure: procedure_params} procedure.reload end @@ -270,7 +270,7 @@ describe Admin::ProceduresController, type: :controller do context 'when admin is the owner of the procedure' do before do - put :publish, procedure_id: procedure.id, procedure_path: procedure_path + put :publish, params: {procedure_id: procedure.id, procedure_path: procedure_path} procedure.reload procedure2.reload end @@ -338,7 +338,7 @@ describe Admin::ProceduresController, type: :controller do sign_out admin sign_in admin_2 - put :publish, procedure_id: procedure.id, procedure_path: 'fake_path' + put :publish, params: {procedure_id: procedure.id, procedure_path: 'fake_path'} procedure.reload end @@ -354,7 +354,7 @@ describe Admin::ProceduresController, type: :controller do context 'when admin is the owner of the procedure' do before do - put :archive, procedure_id: procedure.id + put :archive, params: {procedure_id: procedure.id} procedure.reload end @@ -366,7 +366,7 @@ describe Admin::ProceduresController, type: :controller do context 'when owner want to re-enable procedure' do before do - put :publish, procedure_id: procedure.id, procedure_path: 'fake_path' + put :publish, params: {procedure_id: procedure.id, procedure_path: 'fake_path'} procedure.reload end @@ -383,7 +383,7 @@ describe Admin::ProceduresController, type: :controller do sign_out admin sign_in admin_2 - put :archive, procedure_id: procedure.id + put :archive, params: {procedure_id: procedure.id} procedure.reload end @@ -394,7 +394,7 @@ describe Admin::ProceduresController, type: :controller do describe 'PUT #clone' do let!(:procedure) { create(:procedure, administrateur: admin) } - subject { put :clone, procedure_id: procedure.id } + subject { put :clone, params: {procedure_id: procedure.id} } it { expect { subject }.to change(Procedure, :count).by(1) } @@ -452,7 +452,7 @@ describe Admin::ProceduresController, type: :controller do subject end - subject { get :path_list, request: procedure2.path } + subject { get :path_list, params: {request: procedure2.path} } it { expect(response.status).to eq(200) } it { expect(body.size).to eq(1) } @@ -476,7 +476,7 @@ describe Admin::ProceduresController, type: :controller do describe 'POST transfer' do let!(:procedure) { create :procedure, administrateur: admin } - subject { post :transfer, email_admin: email_admin, procedure_id: procedure.id } + subject { post :transfer, params: {email_admin: email_admin, procedure_id: procedure.id} } context 'when admin is unknow' do let(:email_admin) { 'plop' } diff --git a/spec/controllers/admin/types_de_champ_controller_spec.rb b/spec/controllers/admin/types_de_champ_controller_spec.rb index c50d36a4f..45ef564ff 100644 --- a/spec/controllers/admin/types_de_champ_controller_spec.rb +++ b/spec/controllers/admin/types_de_champ_controller_spec.rb @@ -13,7 +13,7 @@ describe Admin::TypesDeChampController, type: :controller do let(:procedure) { create(:procedure, administrateur: admin, published: published) } let(:procedure_id) { procedure.id } - subject { get :show, procedure_id: procedure_id } + subject { get :show, params: {procedure_id: procedure_id} } context 'when procedure is not found' do let(:procedure_id) { 9_999_999 } @@ -65,7 +65,7 @@ describe Admin::TypesDeChampController, type: :controller do } end - let(:request) { put :update, format: :js, procedure_id: procedure.id, procedure: procedure_params } + let(:request) { put :update, params: {procedure_id: procedure.id, procedure: procedure_params}, format: :js } context 'when procedure is found' do it { expect { request }.to change(TypeDeChamp, :count).by(1) } @@ -123,7 +123,7 @@ describe Admin::TypesDeChampController, type: :controller do end end context 'when procedure is not found' do - subject { put :update, format: :js, procedure_id: 9_999_999, procedure: procedure_params } + subject { put :update, format: :js, params: {procedure_id: 9_999_999, procedure: procedure_params} } it 'creates type de champ' do expect(subject.status).to eq(404) end @@ -132,7 +132,7 @@ describe Admin::TypesDeChampController, type: :controller do describe '#destroy' do before do - delete :destroy, procedure_id: procedure.id, id: type_de_champ_id, format: :js + delete :destroy, params: {procedure_id: procedure.id, id: type_de_champ_id, format: :js} end context 'when type de champs does not exist' do @@ -156,7 +156,7 @@ describe Admin::TypesDeChampController, type: :controller do end describe 'POST #move_up' do - subject { post :move_up, procedure_id: procedure.id, index: index, format: :js } + subject { post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} } context 'when procedure have no type de champ' do let(:index) { 0 } @@ -182,7 +182,7 @@ describe Admin::TypesDeChampController, type: :controller do it { expect(subject.status).to eq(200) } it { expect(subject).to render_template('show') } it 'changes order places' do - post :move_up, procedure_id: procedure.id, index: index, format: :js + post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} type_de_champ_0.reload type_de_champ_1.reload expect(type_de_champ_0.order_place).to eq(1) @@ -193,7 +193,7 @@ describe Admin::TypesDeChampController, type: :controller do end describe 'POST #move_down' do - let(:request) { post :move_down, procedure_id: procedure.id, index: index, format: :js } + let(:request) { post :move_down, params: {procedure_id: procedure.id, index: index, format: :js} } let(:index) { 0 } subject { request } diff --git a/spec/controllers/admin/types_de_champ_private_controller_spec.rb b/spec/controllers/admin/types_de_champ_private_controller_spec.rb index 635fca004..c458bd172 100644 --- a/spec/controllers/admin/types_de_champ_private_controller_spec.rb +++ b/spec/controllers/admin/types_de_champ_private_controller_spec.rb @@ -13,7 +13,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do let(:procedure) { create(:procedure, administrateur: admin, published: published) } let(:procedure_id) { procedure.id } - subject { get :show, procedure_id: procedure_id } + subject { get :show, params: {procedure_id: procedure_id} } context 'when procedure is not found' do let(:procedure_id) { 9_999_999 } @@ -41,35 +41,35 @@ describe Admin::TypesDeChampPrivateController, type: :controller do let(:mandatory) { 'on' } let(:procedure_params) do - { types_de_champ_private_attributes: - { '0' => - { - libelle: libelle, - type_champ: type_champ, - description: description, - order_place: order_place, - id: types_de_champ_id, - mandatory: mandatory, - type: 'TypeDeChampPrivate' - }, - '1' => - { - libelle: '', - type_champ: 'text', - description: '', - order_place: '1', - id: '', - mandatory: false, - type: 'TypeDeChampPrivate' - } - } + {types_de_champ_private_attributes: + {'0' => + { + libelle: libelle, + type_champ: type_champ, + description: description, + order_place: order_place, + id: types_de_champ_id, + mandatory: mandatory, + type: 'TypeDeChampPrivate' + }, + '1' => + { + libelle: '', + type_champ: 'text', + description: '', + order_place: '1', + id: '', + mandatory: false, + type: 'TypeDeChampPrivate' + } + } } end - let(:request) { put :update, format: :js, procedure_id: procedure.id, procedure: procedure_params } + let(:request) { put :update, params: {format: :js, procedure_id: procedure.id, procedure: procedure_params} } context 'when procedure is found' do - it { expect{ request }.to change(TypeDeChamp, :count).by(1) } + it { expect { request }.to change(TypeDeChamp, :count).by(1) } describe 'created type de champ' do before do @@ -106,7 +106,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do end end context 'when procedure is not found' do - subject { put :update, format: :js, procedure_id: 9_999_999, procedure: procedure_params } + subject { put :update, params: {format: :js, procedure_id: 9_999_999, procedure: procedure_params} } it 'creates type de champ' do expect(subject.status).to eq(404) end @@ -115,7 +115,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do describe '#destroy' do before do - delete :destroy, procedure_id: procedure.id, id: type_de_champ_id, format: :js + delete :destroy, params: {procedure_id: procedure.id, id: type_de_champ_id, format: :js} end context 'when type de champs does not exist' do @@ -139,7 +139,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do end describe 'POST #move_up' do - subject { post :move_up, procedure_id: procedure.id, index: index, format: :js } + subject { post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} } context 'when procedure have no type de champ' do let(:index) { 0 } @@ -165,7 +165,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do it { expect(subject.status).to eq(200) } it { expect(subject).to render_template('show') } it 'changes order places' do - post :move_up, procedure_id: procedure.id, index: index, format: :js + post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} type_de_champ_0.reload type_de_champ_1.reload expect(type_de_champ_0.order_place).to eq(1) @@ -176,7 +176,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do end describe 'POST #move_down' do - let(:request) { post :move_down, procedure_id: procedure.id, index: index, format: :js } + let(:request) { post :move_down, params: {procedure_id: procedure.id, index: index, format: :js} } let(:index) { 0 } subject { request } From cea85f2d4909b2b3544b7fb3f68d2cbe717785b7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 05:36:32 +0100 Subject: [PATCH 012/182] Fix DEPRECATION WARNING for spec/controllers/users/dossiers/*.rb --- .../users/dossiers/add_siret_controller_spec.rb | 2 +- .../users/dossiers/commentaires_controller_spec.rb | 2 +- .../controllers/users/dossiers/invites_controller_spec.rb | 8 +++----- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/spec/controllers/users/dossiers/add_siret_controller_spec.rb b/spec/controllers/users/dossiers/add_siret_controller_spec.rb index 44083e035..45962c0fc 100644 --- a/spec/controllers/users/dossiers/add_siret_controller_spec.rb +++ b/spec/controllers/users/dossiers/add_siret_controller_spec.rb @@ -9,7 +9,7 @@ describe Users::Dossiers::AddSiretController, type: :controller do sign_in dossier.user end - subject { get :show, dossier_id: dossier.id } + subject { get :show, params:{dossier_id: dossier.id }} context 'when dossier is not attached at a procedure with individual siret attribut' do it { is_expected.to redirect_to users_dossiers_path } diff --git a/spec/controllers/users/dossiers/commentaires_controller_spec.rb b/spec/controllers/users/dossiers/commentaires_controller_spec.rb index 76abacf2d..871da0722 100644 --- a/spec/controllers/users/dossiers/commentaires_controller_spec.rb +++ b/spec/controllers/users/dossiers/commentaires_controller_spec.rb @@ -12,7 +12,7 @@ describe Users::Dossiers::CommentairesController, type: :controller do sign_in invite.user dossier.replied! - post :create, dossier_id: dossier.id, texte_commentaire: texte_commentaire + post :create, params:{dossier_id: dossier.id, texte_commentaire: texte_commentaire} dossier.reload end diff --git a/spec/controllers/users/dossiers/invites_controller_spec.rb b/spec/controllers/users/dossiers/invites_controller_spec.rb index 7b7b60beb..623eccdff 100644 --- a/spec/controllers/users/dossiers/invites_controller_spec.rb +++ b/spec/controllers/users/dossiers/invites_controller_spec.rb @@ -1,6 +1,4 @@ RSpec.describe Users::Dossiers::InvitesController, type: :controller do - - describe '#authenticate_user!' do let(:user) { create :user } let(:invite) { create :invite } @@ -8,7 +6,7 @@ RSpec.describe Users::Dossiers::InvitesController, type: :controller do context 'when email is not set' do context 'when user is not connected' do before do - get :show, id: invite.id + get :show, params: {id: invite.id} end it { is_expected.to redirect_to new_user_session_path } @@ -20,7 +18,7 @@ RSpec.describe Users::Dossiers::InvitesController, type: :controller do before do sign_in invite.user - get :show, id: invite.id + get :show, params: {id: invite.id} end # it { expect(response.status).to eq 200 } @@ -29,7 +27,7 @@ RSpec.describe Users::Dossiers::InvitesController, type: :controller do context 'when email is set' do before do - get :show, id: invite.id, email: email + get :show, params: {id: invite.id, email: email} end context 'when email is blank' do From be62dea0e0f294e3f0f1175f5e2aece0c092fdec Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 05:54:27 +0100 Subject: [PATCH 013/182] Fix major .DEPRECATION WARNING for spec/controllers/users/*.rb --- .../users/carte_controller_shared_example.rb | 28 ++++---- .../users/commentaires_controller_spec.rb | 8 +-- .../description_controller_shared_example.rb | 72 +++++++++---------- .../users/dossiers_controller_spec.rb | 44 ++++++------ .../users/passwords_controller_spec.rb | 10 +-- .../users/recapitulatif_controller_spec.rb | 14 ++-- .../users/registrations_controller_spec.rb | 2 +- .../users/sessions_controller_spec.rb | 18 ++--- spec/support/shared_exemples_for_dossier.rb | 2 +- 9 files changed, 98 insertions(+), 100 deletions(-) diff --git a/spec/controllers/users/carte_controller_shared_example.rb b/spec/controllers/users/carte_controller_shared_example.rb index eaacbddab..f94f77b1e 100644 --- a/spec/controllers/users/carte_controller_shared_example.rb +++ b/spec/controllers/users/carte_controller_shared_example.rb @@ -7,10 +7,10 @@ shared_examples 'carte_controller_spec' do dossier.state = 'validated' dossier.save - get :show, dossier_id: dossier.id + get :show, params: {dossier_id: dossier.id} end - it { is_expected.to redirect_to root_path} + it { is_expected.to redirect_to root_path } end end @@ -18,7 +18,7 @@ shared_examples 'carte_controller_spec' do let(:dossier) { create(:dossier) } before do - get :show, dossier_id: dossier.id + get :show, params: {dossier_id: dossier.id} end it { is_expected.to redirect_to(root_path) } @@ -31,26 +31,26 @@ shared_examples 'carte_controller_spec' do end it 'redirects to users/sign_in' do - get :show, dossier_id: dossier.id + get :show, params: {dossier_id: dossier.id} expect(response).to redirect_to('/users/sign_in') end end it 'returns http success if carto is activated' do - get :show, dossier_id: dossier.id + get :show, params: {dossier_id: dossier.id} expect(response).to have_http_status(:success) end context 'when procedure not have activate api carto' do it 'redirection on user dossier list' do - get :show, dossier_id: dossier_with_no_carto.id + get :show, params: {dossier_id: dossier_with_no_carto.id} expect(response).to redirect_to(root_path) end end context 'when dossier id not exist' do it 'redirection on user dossier list' do - get :show, dossier_id: bad_dossier_id + get :show, params: {dossier_id: bad_dossier_id} expect(response).to redirect_to(root_path) end end @@ -61,7 +61,7 @@ shared_examples 'carte_controller_spec' do describe 'POST #save' do context 'Aucune localisation n\'a jamais été enregistrée' do it do - post :save, dossier_id: dossier.id, json_latlngs: '' + post :save, params: {dossier_id: dossier.id, json_latlngs: ''} expect(response).to redirect_to("/users/dossiers/#{dossier.id}/description") end end @@ -69,7 +69,7 @@ shared_examples 'carte_controller_spec' do context 'En train de modifier la localisation' do let(:dossier) { create(:dossier, state: 'initiated') } before do - post :save, dossier_id: dossier.id, json_latlngs: '' + post :save, params: {dossier_id: dossier.id, json_latlngs: ''} end it 'Redirection vers la page récapitulatif' do @@ -85,7 +85,7 @@ shared_examples 'carte_controller_spec' do to receive(:to_params). and_return({"QPCODE1234" => {:code => "QPCODE1234", :nom => "QP de test", :commune => "Paris", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) - post :save, dossier_id: dossier.id, json_latlngs: json_latlngs + post :save, params: {dossier_id: dossier.id, json_latlngs: json_latlngs} end context 'when json_latlngs params is empty' do @@ -132,7 +132,7 @@ shared_examples 'carte_controller_spec' do to receive(:to_params). and_return([{:surface_intersection => "0.0006", :surface_parcelle => 11252.692583090324, :numero => "0013", :feuille => 1, :section => "CD", :code_dep => "30", :nom_com => "Le Grau-du-Roi", :code_com => "133", :code_arr => "000", :geometry => {:type => "MultiPolygon", :coordinates => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}}]) - post :save, dossier_id: dossier.id, json_latlngs: json_latlngs + post :save, params: {dossier_id: dossier.id, json_latlngs: json_latlngs} end context 'when json_latlngs params is empty' do @@ -186,7 +186,7 @@ shared_examples 'carte_controller_spec' do before do stub_request(:get, /http:\/\/api-adresse[.]data[.]gouv[.]fr\/search[?]limit=1&q=/) .to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - get :get_position, dossier_id: dossier.id + get :get_position, params: {dossier_id: dossier.id} end subject { JSON.parse(response.body) } @@ -202,7 +202,7 @@ shared_examples 'carte_controller_spec' do stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{adresse}") .to_return(status: 200, body: '{"query": "50 avenue des champs u00e9lysu00e9es Paris 75008", "version": "draft", "licence": "ODbL 1.0", "features": [{"geometry": {"coordinates": [2.306888, 48.870374], "type": "Point"}, "type": "Feature", "properties": {"city": "Paris", "label": "50 Avenue des Champs u00c9lysu00e9es 75008 Paris", "housenumber": "50", "id": "ADRNIVX_0000000270748251", "postcode": "75008", "name": "50 Avenue des Champs u00c9lysu00e9es", "citycode": "75108", "context": "75, u00cele-de-France", "score": 0.9054545454545454, "type": "housenumber"}}], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - get :get_position, dossier_id: dossier.id + get :get_position, params: {dossier_id: dossier.id} end subject { JSON.parse(response.body) } @@ -230,7 +230,7 @@ shared_examples 'carte_controller_spec' do to receive(:to_params). and_return({"QPCODE1234" => {:code => "QPCODE1234", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) - post :get_qp, dossier_id: dossier.id, coordinates: coordinates + post :get_qp, params: {dossier_id: dossier.id, coordinates: coordinates} end context 'when coordinates are empty' do diff --git a/spec/controllers/users/commentaires_controller_spec.rb b/spec/controllers/users/commentaires_controller_spec.rb index 58d4bf6f3..54edd2c4d 100644 --- a/spec/controllers/users/commentaires_controller_spec.rb +++ b/spec/controllers/users/commentaires_controller_spec.rb @@ -14,7 +14,7 @@ describe Users::CommentairesController, type: :controller do context 'création correct d\'un commentaire' do subject do sign_in dossier.user - post :create, dossier_id: dossier_id, texte_commentaire: texte_commentaire + post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire} end it 'depuis la page récapitulatif' do @@ -30,12 +30,12 @@ describe Users::CommentairesController, type: :controller do end end - context 'when document is upload whith a commentaire', vcr: { cassette_name: 'controllers_sers_commentaires_controller_upload_doc' } do + context 'when document is upload whith a commentaire', vcr: {cassette_name: 'controllers_sers_commentaires_controller_upload_doc'} do let(:document_upload) { Rack::Test::UploadedFile.new("./spec/support/files/piece_justificative_0.pdf", 'application/pdf') } subject do sign_in dossier.user - post :create, dossier_id: dossier_id, texte_commentaire: texte_commentaire, piece_justificative: {content: document_upload} + post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire, piece_justificative: {content: document_upload}} end it 'create a new piece justificative' do @@ -84,7 +84,7 @@ describe Users::CommentairesController, type: :controller do sign_in dossier.user dossier.replied! - post :create, dossier_id: dossier_id, texte_commentaire: texte_commentaire + post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire} dossier.reload end diff --git a/spec/controllers/users/description_controller_shared_example.rb b/spec/controllers/users/description_controller_shared_example.rb index 22f170dbd..765e7a894 100644 --- a/spec/controllers/users/description_controller_shared_example.rb +++ b/spec/controllers/users/description_controller_shared_example.rb @@ -9,7 +9,7 @@ shared_examples 'description_controller_spec' do end it 'redirects to users/sign_in' do - get :show, dossier_id: dossier_id + get :show, params: {dossier_id: dossier_id} expect(response).to redirect_to('/users/sign_in') end end @@ -20,13 +20,13 @@ shared_examples 'description_controller_spec' do end it 'returns http success' do - get :show, dossier_id: dossier_id + get :show, params: {dossier_id: dossier_id} expect(response).to have_http_status(:success) end end it 'redirection vers start si mauvais dossier ID' do - get :show, dossier_id: bad_dossier_id + get :show, params: {dossier_id: bad_dossier_id} expect(response).to redirect_to(root_path) end @@ -38,7 +38,7 @@ shared_examples 'description_controller_spec' do dossier.state = 'validated' dossier.save - get :show, dossier_id: dossier.id + get :show, params: {dossier_id: dossier.id} end it { is_expected.to redirect_to root_path } @@ -46,7 +46,7 @@ shared_examples 'description_controller_spec' do end describe 'before action check_autorisation_donnees' do - subject { get :show, dossier_id: dossier_id } + subject { get :show, params: {dossier_id: dossier_id} } context 'when dossier does not have a valid autorisations_donness (nil)' do before do @@ -66,7 +66,7 @@ shared_examples 'description_controller_spec' do end describe 'before action check_starter_dossier_informations' do - subject { get :show, dossier_id: dossier_id } + subject { get :show, params: {dossier_id: dossier_id} } context 'when dossier does not have an enterprise datas' do before do @@ -96,7 +96,7 @@ shared_examples 'description_controller_spec' do describe 'Premier enregistrement des données' do let(:submit) { {nouveaux: 'nouveaux'} } - subject { post :create, dossier_id: dossier_id, submit: submit } + subject { post :create, params: {dossier_id: dossier_id, submit: submit} } before do dossier.draft! @@ -128,7 +128,7 @@ shared_examples 'description_controller_spec' do context 'En train de manipuler un dossier non brouillon' do before do dossier.initiated! - post :create, dossier_id: dossier_id + post :create, params: {dossier_id: dossier_id} dossier.reload end @@ -145,8 +145,8 @@ shared_examples 'description_controller_spec' do context 'Quand la procédure accepte les CERFA' do context 'Sauvegarde du CERFA PDF', vcr: {cassette_name: 'controllers_users_description_controller_save_cerfa'} do before do - post :create, dossier_id: dossier_id, - cerfa_pdf: cerfa_pdf + post :create, params: {dossier_id: dossier_id, + cerfa_pdf: cerfa_pdf} dossier.reload end @@ -172,7 +172,7 @@ shared_examples 'description_controller_spec' do let(:cerfas) { Cerfa.where(dossier_id: dossier_id) } before do - post :create, dossier_id: dossier_id, cerfa_pdf: cerfa_pdf + post :create, params: {dossier_id: dossier_id, cerfa_pdf: cerfa_pdf} end it "il y a deux CERFA PDF pour ce dossier" do @@ -186,8 +186,8 @@ shared_examples 'description_controller_spec' do context 'Sauvegarde du CERFA PDF' do let!(:procedure) { create(:procedure) } before do - post :create, dossier_id: dossier_id, - cerfa_pdf: cerfa_pdf + post :create, params: {dossier_id: dossier_id, + cerfa_pdf: cerfa_pdf} dossier.reload end @@ -205,17 +205,17 @@ shared_examples 'description_controller_spec' do let(:dossier_minute_value) { '00' } before do - post :create, {dossier_id: dossier_id, - champs: { - "'#{dossier.champs.first.id}'" => dossier_champs_first, - "'#{dossier.champs.second.id}'" => dossier_date_value - }, - time_hour: { - "'#{dossier.champs.second.id}'" => dossier_hour_value, - }, - time_minute: { - "'#{dossier.champs.second.id}'" => dossier_minute_value, - } + post :create, params: {dossier_id: dossier_id, + champs: { + "'#{dossier.champs.first.id}'" => dossier_champs_first, + "'#{dossier.champs.second.id}'" => dossier_date_value + }, + time_hour: { + "'#{dossier.champs.second.id}'" => dossier_hour_value, + }, + time_minute: { + "'#{dossier.champs.second.id}'" => dossier_minute_value, + } } dossier.reload end @@ -245,9 +245,9 @@ shared_examples 'description_controller_spec' do context 'Sauvegarde des pièces justificatives', vcr: {cassette_name: 'controllers_users_description_controller_sauvegarde_pj'} do let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } before do - post :create, {dossier_id: dossier_id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} + post :create, params: {dossier_id: dossier_id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} dossier.reload end @@ -255,9 +255,9 @@ shared_examples 'description_controller_spec' do it 'ClamavService safe_file? is call' do expect(ClamavService).to receive(:safe_file?).twice - post :create, {dossier_id: dossier_id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} + post :create, params: {dossier_id: dossier_id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} end end @@ -277,9 +277,9 @@ shared_examples 'description_controller_spec' do describe 'POST #pieces_justificatives', vcr: {cassette_name: 'controllers_users_description_controller_pieces_justificatives'} do let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } - subject { patch :pieces_justificatives, {dossier_id: dossier.id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } + subject { patch :pieces_justificatives, params: {dossier_id: dossier.id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } context 'when user is a guest' do let(:guest) { create :user } @@ -348,9 +348,9 @@ end shared_examples 'description_controller_spec_POST_piece_justificatives_for_owner' do let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } - subject { patch :pieces_justificatives, {dossier_id: dossier.id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } + subject { patch :pieces_justificatives, params: {dossier_id: dossier.id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } context 'when user is the owner', vcr: {cassette_name: 'controllers_users_description_controller_pieces_justificatives'} do before do diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index 9bdb158de..618b36ce3 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -27,12 +27,12 @@ describe Users::DossiersController, type: :controller do sign_in dossier.user end it 'returns http success with dossier_id valid' do - get :show, id: dossier_id + get :show, params: {id: dossier_id} expect(response).to have_http_status(:success) end it 'redirection vers liste dossier si mauvais dossier ID' do - get :show, id: siret_not_found + get :show, params: {id: siret_not_found} expect(response).to redirect_to root_path end @@ -42,7 +42,7 @@ describe Users::DossiersController, type: :controller do dossier.state = 'validated' dossier.save - get :show, id: dossier.id + get :show, params: {id: dossier.id} end it { is_expected.to redirect_to root_path } @@ -51,7 +51,7 @@ describe Users::DossiersController, type: :controller do end describe 'GET #new' do - subject { get :new, procedure_id: procedure_id } + subject { get :new, params: {procedure_id: procedure_id} } context 'when params procedure_id is present' do context 'when procedure_id is valid' do @@ -69,7 +69,7 @@ describe Users::DossiersController, type: :controller do context 'when user have not a saved siret' do context 'when siret is present on request' do - subject { get :new, procedure_id: procedure_id, siret: siret } + subject { get :new, params: {procedure_id: procedure_id, siret: siret} } before do subject @@ -97,7 +97,7 @@ describe Users::DossiersController, type: :controller do end context 'when siret is present on request' do - subject { get :new, procedure_id: procedure_id, siret: siret } + subject { get :new, params: {procedure_id: procedure_id, siret: siret} } before do subject @@ -153,7 +153,7 @@ describe Users::DossiersController, type: :controller do end describe 'GET #commencer' do - subject { get :commencer, procedure_path: procedure.path } + subject { get :commencer, params: {procedure_path: procedure.path} } it { expect(subject.status).to eq 302 } it { expect(subject).to redirect_to new_users_dossier_path(procedure_id: procedure.id) } @@ -198,7 +198,7 @@ describe Users::DossiersController, type: :controller do sign_in user end - subject { post :siret_informations, dossier_id: dossier.id, dossier: {siret: example_siret} } + subject { post :siret_informations, params: {dossier_id: dossier.id, dossier: {siret: example_siret}} } it 'create a dossier' do expect { subject }.to change { Dossier.count }.by(0) @@ -322,7 +322,7 @@ describe Users::DossiersController, type: :controller do end let(:siret_not_found) { '11111111111111' } - subject { post :siret_informations, dossier_id: dossier.id, dossier: {siret: siret_not_found} } + subject { post :siret_informations, params: {dossier_id: dossier.id, dossier: {siret: siret_not_found}} } it 'does not create new dossier' do expect { subject }.not_to change { Dossier.count } @@ -337,7 +337,7 @@ describe Users::DossiersController, type: :controller do context 'when REST error 400 is return' do let(:status_entreprise_call) { 400 } - subject { post :siret_informations, dossier_id: dossier.id, dossier: {siret: siret} } + subject { post :siret_informations, params: {dossier_id: dossier.id, dossier: {siret: siret}} } before do sign_in user @@ -350,7 +350,7 @@ describe Users::DossiersController, type: :controller do end describe 'PUT #update' do - subject { put :update, id: dossier_id, dossier: {id: dossier_id, autorisation_donnees: autorisation_donnees} } + subject { put :update, params: {id: dossier_id, dossier: {id: dossier_id, autorisation_donnees: autorisation_donnees}} } before do sign_in dossier.user @@ -399,11 +399,11 @@ describe Users::DossiersController, type: :controller do end describe 'DELETE #destroy' do - let(:user) { create(:user) } - let!(:dossier_draft) { create :dossier, state: "draft", user: user } + let(:user) { create(:user) } + let!(:dossier_draft) { create :dossier, state: "draft", user: user } let!(:dossier_not_draft) { create :dossier, state: "initiated", user: user } - subject { delete :destroy, id: dossier.id } + subject { delete :destroy, params: {id: dossier.id} } before do sign_in user @@ -441,7 +441,7 @@ describe Users::DossiersController, type: :controller do describe 'PUT #change_siret' do let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) } - subject { put :change_siret, dossier_id: dossier.id } + subject { put :change_siret, params: {dossier_id: dossier.id} } before do sign_in user @@ -462,7 +462,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :a_traiter + get :index, params: {liste: :a_traiter} expect(response).to have_http_status(200) end end @@ -475,7 +475,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :valides + get :index, params: {liste: :valides} expect(response).to have_http_status(200) end end @@ -488,7 +488,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :en_instruction + get :index, params: {liste: :en_instruction} expect(response).to have_http_status(200) end end @@ -501,7 +501,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :brouillon + get :index, params: {liste: :brouillon} expect(response).to have_http_status(200) end end @@ -514,7 +514,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :termine + get :index, params: {liste: :termine} expect(response).to have_http_status(200) end end @@ -527,7 +527,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :invite + get :index, params: {liste: :invite} expect(response).to have_http_status(200) end end @@ -540,7 +540,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, liste: :list_fake + get :index, params: {liste: :list_fake} expect(response).to redirect_to(users_dossiers_path) end end diff --git a/spec/controllers/users/passwords_controller_spec.rb b/spec/controllers/users/passwords_controller_spec.rb index 83d877b4e..0cff00e8b 100644 --- a/spec/controllers/users/passwords_controller_spec.rb +++ b/spec/controllers/users/passwords_controller_spec.rb @@ -17,11 +17,11 @@ describe Users::PasswordsController, type: :controller do end it "also signs gestionnaire in" do - put :update, user: { - reset_password_token: @token, - password: "supersecret", - password_confirmation: "supersecret", - } + put :update, params: {user: { + reset_password_token: @token, + password: "supersecret", + password_confirmation: "supersecret", + }} expect(subject.current_user).to eq(user) expect(subject.current_gestionnaire).to eq(gestionnaire) end diff --git a/spec/controllers/users/recapitulatif_controller_spec.rb b/spec/controllers/users/recapitulatif_controller_spec.rb index 79402c694..31e12dad0 100644 --- a/spec/controllers/users/recapitulatif_controller_spec.rb +++ b/spec/controllers/users/recapitulatif_controller_spec.rb @@ -10,12 +10,12 @@ describe Users::RecapitulatifController, type: :controller do describe 'GET #show' do it 'returns http success' do - get :show, dossier_id: dossier.id + get :show, params: {dossier_id: dossier.id} expect(response).to have_http_status(:success) end it 'redirection vers siret si mauvais dossier ID' do - get :show, dossier_id: bad_dossier_id + get :show, params: {dossier_id: bad_dossier_id} expect(response).to redirect_to('/') end @@ -27,7 +27,7 @@ describe Users::RecapitulatifController, type: :controller do dossier.state = 'draft' dossier.save - get :show, dossier_id: dossier.id + get :show, params: {dossier_id: dossier.id} end it { is_expected.to redirect_to root_path } @@ -39,7 +39,7 @@ describe Users::RecapitulatifController, type: :controller do describe 'POST #initiate' do context 'when an user initiate his dossier' do before do - post :initiate, dossier_id: dossier.id + post :initiate, params: {dossier_id: dossier.id} end it 'dossier change his state for closed' do @@ -59,7 +59,7 @@ describe Users::RecapitulatifController, type: :controller do before do dossier.validated! - Timecop.freeze(deposit_datetime) { post :submit, dossier_id: dossier.id } + Timecop.freeze(deposit_datetime) { post :submit, params: {dossier_id: dossier.id} } dossier.reload end @@ -80,10 +80,8 @@ describe Users::RecapitulatifController, type: :controller do expect(NotificationMailer).to receive(:deliver_now!) dossier.validated! - post :submit, dossier_id: dossier.id + post :submit, params: {dossier_id: dossier.id} end - end end - end diff --git a/spec/controllers/users/registrations_controller_spec.rb b/spec/controllers/users/registrations_controller_spec.rb index 89a5ea952..e65f10a98 100644 --- a/spec/controllers/users/registrations_controller_spec.rb +++ b/spec/controllers/users/registrations_controller_spec.rb @@ -12,7 +12,7 @@ describe Users::RegistrationsController, type: :controller do end describe '.create' do - subject { post :create, user: user } + subject { post :create, params: {user: user }} context 'when user is correct' do it { expect(described_class).to be < Devise::RegistrationsController } diff --git a/spec/controllers/users/sessions_controller_spec.rb b/spec/controllers/users/sessions_controller_spec.rb index 1f51dc107..2a6c50a1d 100644 --- a/spec/controllers/users/sessions_controller_spec.rb +++ b/spec/controllers/users/sessions_controller_spec.rb @@ -25,7 +25,7 @@ describe Users::SessionsController, type: :controller do describe 'France Connect attribut' do before do - post :create, user: {email: user.email, password: user.password} + post :create, params: {user: {email: user.email, password: user.password}} user.reload end @@ -40,7 +40,7 @@ describe Users::SessionsController, type: :controller do before { allow(Features).to receive(:unified_login).and_return(true) } it 'signs user in' do - post :create, user: { email: user.email, password: user.password } + post :create, params: {user: {email: user.email, password: user.password}} expect(@response.redirect?).to be(true) expect(subject.current_user).to eq(user) expect(subject.current_gestionnaire).to be(nil) @@ -48,14 +48,14 @@ describe Users::SessionsController, type: :controller do end it 'signs gestionnaire in' do - post :create, user: { email: gestionnaire.email, password: gestionnaire.password } + post :create, params: {user: {email: gestionnaire.email, password: gestionnaire.password}} expect(@response.redirect?).to be(true) expect(subject.current_user).to be(nil) expect(subject.current_gestionnaire).to eq(gestionnaire) end it 'signs user + gestionnaire in' do - post :create, user: { email: user.email, password: gestionnaire.password } + post :create, params: {user: {email: user.email, password: gestionnaire.password}} expect(@response.redirect?).to be(true) expect(subject.current_user).to eq(user) expect(subject.current_gestionnaire).to eq(gestionnaire) @@ -63,7 +63,7 @@ describe Users::SessionsController, type: :controller do end it 'fails to sign in with bad credentials' do - post :create, user: { email: user.email, password: 'wrong_password' } + post :create, params: {user: {email: user.email, password: 'wrong_password'}} expect(@response.unauthorized?).to be(true) expect(subject.current_user).to be(nil) expect(subject.current_gestionnaire).to be(nil) @@ -143,7 +143,7 @@ describe Users::SessionsController, type: :controller do subject { get :new } context 'when procedure_id is not present in user_return_to session params' do - it { expect(subject.status).to eq 200} + it { expect(subject.status).to eq 200 } end context 'when procedure_id is present in user_return_to session params' do @@ -152,7 +152,7 @@ describe Users::SessionsController, type: :controller do session["user_return_to"] = '?procedure_id=0' end - it { expect(subject.status).to eq 302} + it { expect(subject.status).to eq 302 } it { expect(subject).to redirect_to root_path } end @@ -162,7 +162,7 @@ describe Users::SessionsController, type: :controller do session["user_return_to"] = "?procedure_id=#{procedure.id}" end - it { expect(subject.status).to eq 302} + it { expect(subject.status).to eq 302 } it { expect(subject).to redirect_to root_path } end @@ -173,7 +173,7 @@ describe Users::SessionsController, type: :controller do session["user_return_to"] = "?procedure_id=#{procedure.id}" end - it { expect(subject.status).to eq 200} + it { expect(subject.status).to eq 200 } end end end diff --git a/spec/support/shared_exemples_for_dossier.rb b/spec/support/shared_exemples_for_dossier.rb index d3462e894..7a39ffa22 100644 --- a/spec/support/shared_exemples_for_dossier.rb +++ b/spec/support/shared_exemples_for_dossier.rb @@ -4,7 +4,7 @@ RSpec.shared_examples 'not owner of dossier' do |controller, redirect| let(:dossier_2) { create(:dossier) } before do - get controller, dossier_id: dossier_2.id + get controller, params:{dossier_id: dossier_2.id} end it 'redirect to home page' do From fc289ba7b346603bee84744e47458e48c7ad57eb Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 06:02:49 +0100 Subject: [PATCH 014/182] Remove useless spec --- spec/views/admin/previsualisations/show.html.haml_spec.rb | 6 ------ spec/views/users/description/show.html.haml_spec.rb | 6 ------ 2 files changed, 12 deletions(-) diff --git a/spec/views/admin/previsualisations/show.html.haml_spec.rb b/spec/views/admin/previsualisations/show.html.haml_spec.rb index 82263c78b..16127ddac 100644 --- a/spec/views/admin/previsualisations/show.html.haml_spec.rb +++ b/spec/views/admin/previsualisations/show.html.haml_spec.rb @@ -102,12 +102,6 @@ describe 'admin/previsualisations/show.html.haml', type: :view do expect(rendered).to have_css("#piece_justificative_#{all_type_pj_procedure_id[0]}") end end - - context 'la liste des pièces récupérées automatiquement est signaliée' do - it 'Attestation MSA' do - expect(rendered).to have_selector("#piece_justificative_#{all_type_pj_procedure_id[1]}", "Nous l'avons récupéré pour vous.") - end - end end context 'Envoi des CERFA désactivé' do diff --git a/spec/views/users/description/show.html.haml_spec.rb b/spec/views/users/description/show.html.haml_spec.rb index 4a44776b7..3f0a74850 100644 --- a/spec/views/users/description/show.html.haml_spec.rb +++ b/spec/views/users/description/show.html.haml_spec.rb @@ -102,12 +102,6 @@ describe 'users/description/show.html.haml', type: :view do expect(rendered).to have_css("#piece_justificative_#{all_type_pj_procedure_id[0]}") end end - - context 'la liste des pièces récupérées automatiquement est signaliée' do - it 'Attestation MSA' do - expect(rendered).to have_selector("#piece_justificative_#{all_type_pj_procedure_id[1]}", "Nous l'avons récupéré pour vous.") - end - end end context 'Envoi des CERFA désactivé' do From 90cfd3eccb8449a26549aac061c20cf90294e4c6 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 09:54:17 +0100 Subject: [PATCH 015/182] Fix Test spec/controllers/api/*.rb --- app/controllers/api/v1/dossiers_controller.rb | 8 ++++--- .../api/v1/procedures_controller.rb | 4 ++-- app/serializers/cerfa_serializer.rb | 3 +-- .../piece_justificative_serializer.rb | 2 +- app/serializers/type_de_champ_serializer.rb | 2 +- .../initializers/active_model_serializer.rb | 1 + ...1_delete_column_test_in_procedure_table.rb | 5 +++++ db/schema.rb | 3 +-- .../api/v1/dossiers_controller_spec.rb | 22 +++++++++---------- .../api/v1/procedures_controller_spec.rb | 12 +++++----- 10 files changed, 33 insertions(+), 29 deletions(-) create mode 100644 config/initializers/active_model_serializer.rb create mode 100644 db/migrate/20161115053251_delete_column_test_in_procedure_table.rb diff --git a/app/controllers/api/v1/dossiers_controller.rb b/app/controllers/api/v1/dossiers_controller.rb index a26726df2..2849fd8c1 100644 --- a/app/controllers/api/v1/dossiers_controller.rb +++ b/app/controllers/api/v1/dossiers_controller.rb @@ -16,7 +16,8 @@ class API::V1::DossiersController < APIController def index procedure = current_administrateur.procedures.find(params[:procedure_id]) 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 render json: {}, status: 404 end @@ -39,9 +40,10 @@ class API::V1::DossiersController < APIController def show procedure = current_administrateur.procedures.find(params[:procedure_id]) dossier = procedure.dossiers.find(params[:id]) + respond_to do |format| - format.json { render json: dossier, status: 200 } - format.csv { render csv: dossier, status: 200 } + format.json { render json: {dossier: DossierSerializer.new(dossier).as_json}, status: 200 } + format.csv { render csv: dossier.as_csv, status: 200 } end rescue ActiveRecord::RecordNotFound => e render json: {}, status: 404 diff --git a/app/controllers/api/v1/procedures_controller.rb b/app/controllers/api/v1/procedures_controller.rb index 5a76daa30..bc712abb0 100644 --- a/app/controllers/api/v1/procedures_controller.rb +++ b/app/controllers/api/v1/procedures_controller.rb @@ -14,9 +14,9 @@ class API::V1::ProceduresController < APIController } 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 Rails.logger.error(e.message) render json: {}, status: 404 diff --git a/app/serializers/cerfa_serializer.rb b/app/serializers/cerfa_serializer.rb index 2fbfa1be9..5580dca10 100644 --- a/app/serializers/cerfa_serializer.rb +++ b/app/serializers/cerfa_serializer.rb @@ -1,7 +1,6 @@ class CerfaSerializer < ActiveModel::Serializer - attributes :created_at, - :content_url => :url + :content_url has_one :user end \ No newline at end of file diff --git a/app/serializers/piece_justificative_serializer.rb b/app/serializers/piece_justificative_serializer.rb index c4a3cbba0..9f999bfe1 100644 --- a/app/serializers/piece_justificative_serializer.rb +++ b/app/serializers/piece_justificative_serializer.rb @@ -1,7 +1,7 @@ class PieceJustificativeSerializer < ActiveModel::Serializer attributes :created_at, :type_de_piece_justificative_id, - :content_url => :url + :content_url has_one :user end \ No newline at end of file diff --git a/app/serializers/type_de_champ_serializer.rb b/app/serializers/type_de_champ_serializer.rb index bbe2cb7dc..32f10627c 100644 --- a/app/serializers/type_de_champ_serializer.rb +++ b/app/serializers/type_de_champ_serializer.rb @@ -1,7 +1,7 @@ class TypeDeChampSerializer < ActiveModel::Serializer attributes :id, :libelle, - {:type_champ => :type}, + :type_champ, :order_place, :description end \ No newline at end of file diff --git a/config/initializers/active_model_serializer.rb b/config/initializers/active_model_serializer.rb new file mode 100644 index 000000000..8cedccfe2 --- /dev/null +++ b/config/initializers/active_model_serializer.rb @@ -0,0 +1 @@ +ActiveModelSerializers.config.default_includes = '**' \ No newline at end of file diff --git a/db/migrate/20161115053251_delete_column_test_in_procedure_table.rb b/db/migrate/20161115053251_delete_column_test_in_procedure_table.rb new file mode 100644 index 000000000..6e9ba6644 --- /dev/null +++ b/db/migrate/20161115053251_delete_column_test_in_procedure_table.rb @@ -0,0 +1,5 @@ +class DeleteColumnTestInProcedureTable < ActiveRecord::Migration[5.0] + def change + remove_column :procedures, :test + end +end diff --git a/db/schema.rb b/db/schema.rb index a42535f59..d9311d927 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161102154835) do +ActiveRecord::Schema.define(version: 20161115053251) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -293,7 +293,6 @@ ActiveRecord::Schema.define(version: 20161102154835) do t.string "lien_demarche" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "test" t.integer "administrateur_id" t.boolean "archived", default: false t.boolean "euro_flag", default: false diff --git a/spec/controllers/api/v1/dossiers_controller_spec.rb b/spec/controllers/api/v1/dossiers_controller_spec.rb index 5295b7d49..d5dfedea6 100644 --- a/spec/controllers/api/v1/dossiers_controller_spec.rb +++ b/spec/controllers/api/v1/dossiers_controller_spec.rb @@ -8,7 +8,7 @@ describe API::V1::DossiersController do it { expect(described_class).to be < APIController } describe 'GET index' do - let(:retour) { get :index, token: admin.api_token, procedure_id: procedure_id } + let(:retour) { get :index, params: {token: admin.api_token, procedure_id: procedure_id} } subject { retour } @@ -58,7 +58,7 @@ describe API::V1::DossiersController do end context 'when there are multiple pages' do - let(:retour) { get :index, token: admin.api_token, procedure_id: procedure_id, page: 2 } + let(:retour) { get :index, params: {token: admin.api_token, procedure_id: procedure_id, page: 2} } let!(:dossier1) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } @@ -79,7 +79,7 @@ describe API::V1::DossiersController do end describe 'GET show' do - let(:retour) { get :show, token: admin.api_token, procedure_id: procedure_id, id: dossier_id } + let(:retour) { get :show, params: {token: admin.api_token, procedure_id: procedure_id, id: dossier_id} } subject { retour } context 'when procedure is not found' do @@ -121,6 +121,7 @@ describe API::V1::DossiersController do it 'return REST code 200', :show_in_doc do expect(retour.code).to eq('200') end + it { expect(subject[:id]).to eq(dossier.id) } it { expect(subject[:state]).to eq(dossier.state) } it { expect(subject[:created_at]).to eq('2008-09-01T08:05:00.000Z') } @@ -178,7 +179,7 @@ describe API::V1::DossiersController do end end - describe 'piece justificative', vcr: { cassette_name: 'controllers_api_v1_dossiers_controller_piece_justificative' } do + describe 'piece justificative', vcr: {cassette_name: 'controllers_api_v1_dossiers_controller_piece_justificative'} do before do create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative: dossier.procedure.types_de_piece_justificative.first, user: dossier.user end @@ -188,17 +189,14 @@ describe API::V1::DossiersController do subject { super()[:pieces_justificatives].first } - it { expect(subject.keys.include?(:url)).to be_truthy } + it { expect(subject.keys.include?(:content_url)).to be_truthy } it { expect(subject[:created_at]).not_to be_nil } it { expect(subject[:type_de_piece_justificative_id]).not_to be_nil } it { expect(subject.keys.include?(:user)).to be_truthy } describe 'user' do - let(:field_list) { [ - :url, :created_at, :type_de_piece_justificative_id] } - subject { - super()[:user] } + subject { super()[:user] } it { expect(subject[:email]).not_to be_nil } end @@ -279,7 +277,7 @@ describe API::V1::DossiersController do it { expect(subject.first[:email]).to eq 'plop@plip.com' } end - describe 'cerfa', vcr: { cassette_name: 'controllers_api_v1_dossiers_controller_cerfa' } do + describe 'cerfa', vcr: {cassette_name: 'controllers_api_v1_dossiers_controller_cerfa'} do let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, :with_cerfa_upload, procedure: procedure) } } let(:content) { File.open('./spec/support/files/piece_justificative_388.pdf') } @@ -294,9 +292,9 @@ describe API::V1::DossiersController do it { expect(subject[:created_at]).not_to be_nil } if Features.remote_storage - it { expect(subject[:url]).to match /^https:\/\/storage.apientreprise.fr\/tps_dev\/cerfa-.*\.pdf$/ } + it { expect(subject[:content_url]).to match /^https:\/\/storage.apientreprise.fr\/tps_dev\/cerfa-.*\.pdf$/ } else - it { expect(subject[:url]).to match /^http:\/\/.*downloads.*_CERFA\.pdf$/ } + it { expect(subject[:content_url]).to match /^http:\/\/.*downloads.*_CERFA\.pdf$/ } end describe 'user' do diff --git a/spec/controllers/api/v1/procedures_controller_spec.rb b/spec/controllers/api/v1/procedures_controller_spec.rb index f478cd5db..0c10d9cd2 100644 --- a/spec/controllers/api/v1/procedures_controller_spec.rb +++ b/spec/controllers/api/v1/procedures_controller_spec.rb @@ -1,22 +1,22 @@ require 'spec_helper' -describe API::V1::ProceduresController do +describe API::V1::ProceduresController, type: :controller do let(:admin) { create(:administrateur) } it { expect(described_class).to be < APIController } describe 'GET show' do context 'when procedure does not exist' do - subject { get :show, id: 999_999_999, token: admin.api_token } + subject { get :show, params: {id: 999_999_999, token: admin.api_token }} it { expect(subject.status).to eq(404) } end context 'when procedure does not belong to administrateur' do let(:procedure) { create(:procedure, administrateur: create(:administrateur)) } - subject { get :show, id: procedure, token: admin.api_token } + subject { get :show, params:{id: procedure, token: admin.api_token }} it { expect(subject.status).to eq(404) } end context 'when procedure exist' do let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ, administrateur: admin) } - subject { get :show, id: procedure, token: admin.api_token } + subject { get :show, params:{id: procedure, token: admin.api_token }} it 'return REST code 200', :show_in_doc do expect(subject.status).to eq(200) @@ -25,7 +25,7 @@ describe API::V1::ProceduresController do describe 'body' do let(:module_api_carto) { create(:module_api_carto, use_api_carto: true, quartiers_prioritaires: true, cadastre: true) } let(:procedure) { create(:procedure, :with_type_de_champ, :with_two_type_de_piece_justificative, module_api_carto: module_api_carto, administrateur: admin) } - let(:response) { get :show, id: procedure.id, token: admin.api_token } + let(:response) { get :show, params:{id: procedure.id, token: admin.api_token }} subject { JSON.parse(response.body, symbolize_names: true)[:procedure] } it { expect(subject[:id]).to eq(procedure.id) } @@ -43,7 +43,7 @@ describe API::V1::ProceduresController do let(:champ) { procedure.types_de_champ.first } it { expect(subject[:id]).to eq(champ.id) } it { expect(subject[:libelle]).to eq(champ.libelle) } - it { expect(subject[:type]).to eq(champ.type_champ) } + it { expect(subject[:type_champ]).to eq(champ.type_champ) } it { expect(subject[:order_place]).to eq(champ.order_place) } it { expect(subject[:description]).to eq(champ.description) } end From b3b03a2449fffdef430da2c7c0b8b58f6b562c9a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 11:01:58 +0100 Subject: [PATCH 016/182] Fix features tests --- Gemfile | 2 +- Gemfile.lock | 7 +++---- .../bootstrap/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes spec/features/backoffice/connection_spec.rb | 2 +- spec/models/procedure_spec.rb | 1 - 5 files changed, 5 insertions(+), 7 deletions(-) create mode 100644 public/fonts/bootstrap/glyphicons-halflings-regular.woff diff --git a/Gemfile b/Gemfile index af535d444..de63a0f1f 100644 --- a/Gemfile +++ b/Gemfile @@ -15,7 +15,7 @@ gem 'therubyracer', platforms: :ruby # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks -gem 'turbolinks' +gem 'turbolinks', '~> 2.5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.0' # bundle exec rake doc:rails generates the API under doc/api. diff --git a/Gemfile.lock b/Gemfile.lock index fd3ccac28..372420e1a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -539,9 +539,8 @@ GEM tilt (2.0.5) timecop (0.8.1) trollop (2.1.2) - turbolinks (5.0.1) - turbolinks-source (~> 5) - turbolinks-source (5.0.0) + turbolinks (2.5.3) + coffee-rails tzinfo (1.2.2) thread_safe (~> 0.1) uglifier (3.0.3) @@ -651,7 +650,7 @@ DEPENDENCIES spring-commands-rspec therubyracer timecop - turbolinks + turbolinks (~> 2.5) uglifier (>= 1.3.0) unicorn vcr diff --git a/public/fonts/bootstrap/glyphicons-halflings-regular.woff b/public/fonts/bootstrap/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..9e612858f802245ddcbf59788a0db942224bab35 GIT binary patch literal 23424 zcmY&eV{m0%u#Iioo_J#0nb?@vwry)-+qNe*Z>))v8{5gt_uj9!t5)^yb-JtjRGrhi zYInOUNJxNyf_yKX01)K=WP|Si>HqEj|B{eUl?MR<)%<1&{(~)D+NPwKxWqT-@~snp zg9KCz1VTZDiS?UH`PRk1VPM{29cgT9=D?!Wc_@}qzggFv;gb@2cJQAYWWtpEZ7?y@jSVqjx${B5UV@SO|wH<<0; z{><1KdVI%Ki}>~<`46C0AggwUwx-|QcU;iiZ{NZu`ur>hd*|Hb(|6veERqxu=b@5Bab=rqptGxd{QJg!4*-i_$sES~)AB46}Fjg|ea#e@?J}z%CUJ zOsLWRQR1#ng^sD)A4FDuY!iUhzlgfJh(J@BRqd&P#v2B`+saBx>m+M&q7vk-75$NH%T5pi%m z5FX?`2-5l53=a&GkC9^NZCLpN5(DMKMwwab$FDIs?q>4!!xBS}75gX_5;(luk;3Vl zLCLd5a_8`Iyz}K}+#RMwu6DVk3O_-}n>aE!4NaD*sQn`GxY?cHe!Bl9n?u&g6?aKm z-P8z&;Q3gr;h`YIxX%z^o&GZZg1=>_+hP2$$-DnL_?7?3^!WAsY4I7|@K;aL<>OTK zByfjl2PA$T83*LM9(;espx-qB%wv7H2i6CFsfAg<9V>Pj*OpwX)l?^mQfr$*OPPS$ z=`mzTYs{*(UW^ij1U8UfXjNoY7GK*+YHht(2oKE&tfZuvAyoN(;_OF>-J6AMmS5fB z^sY6wea&&${+!}@R1f$5oC-2J>J-A${@r(dRzc`wnK>a7~8{Y-scc|ETOI8 zjtNY%Y2!PI;8-@a=O}+{ap1Ewk0@T`C`q!|=KceX9gK8wtOtIC96}-^7)v23Mu;MH zhKyLGOQMujfRG$p(s`(2*nP4EH7*J57^=|%t(#PwCcW7U%e=8Jb>p6~>RAlY4a*ts=pl}_J{->@kKzxH|8XQ5{t=E zV&o`$D#ZHdv&iZWFa)(~oBh-Osl{~CS0hfM7?PyWUWsr5oYlsyC1cwULoQ4|Y5RHA2*rN+EnFPnu z`Y_&Yz*#550YJwDy@brZU>0pWV^RxRjL221@2ABq)AtA%Cz?+FG(}Yh?^v)1Lnh%D zeM{{3&-4#F9rZhS@DT0E(WRkrG!jC#5?OFjZv*xQjUP~XsaxL2rqRKvPW$zHqHr8Urp2Z)L z+)EvQeoeJ8c6A#Iy9>3lxiH3=@86uiTbnnJJJoypZ7gco_*HvKOH97B? zWiwp>+r}*Zf9b3ImxwvjL~h~j<<3shN8$k-$V1p|96I!=N6VBqmb==Bec|*;HUg?) z4!5#R*(#Fe)w%+RH#y{8&%%!|fQ5JcFzUE;-yVYR^&Ek55AXb{^w|@j|&G z|6C-+*On%j;W|f8mj?;679?!qY86c{(s1-PI2Wahoclf%1*8%JAvRh1(0)5Vu37Iz z`JY?RW@qKr+FMmBC{TC7k@}fv-k8t6iO}4K-i3WkF!Lc=D`nuD)v#Na zA|R*no51fkUN3^rmI;tty#IK284*2Zu!kG13!$OlxJAt@zLU`kvsazO25TpJLbK&;M8kw*0)*14kpf*)3;GiDh;C(F}$- z1;!=OBkW#ctacN=je*Pr)lnGzX=OwgNZjTpVbFxqb;8kTc@X&L2XR0A7oc!Mf2?u9 zcctQLCCr+tYipa_k=;1ETIpHt!Jeo;iy^xqBES^Ct6-+wHi%2g&)?7N^Yy zUrMIu){Jk)luDa@7We5U!$$3XFNbyRT!YPIbMKj5$IEpTX1IOtVP~(UPO2-+9ZFi6 z-$3<|{Xb#@tABt0M0s1TVCWKwveDy^S!!@4$s|DAqhsEv--Z}Dl)t%0G>U#ycJ7cy z^8%;|pg32=7~MJmqlC-x07Sd!2YX^|2D`?y;-$a!rZ3R5ia{v1QI_^>gi(HSS_e%2 zUbdg^zjMBBiLr8eSI^BqXM6HKKg#@-w`a**w(}RMe%XWl3MipvBODo*hi?+ykYq)z ziqy4goZw0@VIUY65+L7DaM5q=KWFd$;W3S!Zi>sOzpEF#(*3V-27N;^pDRoMh~(ZD zJLZXIam0lM7U#)119Hm947W)p3$%V`0Tv+*n=&ybF&}h~FA}7hEpA&1Y!BiYIb~~D z$TSo9#3ee02e^%*@4|*+=Nq6&JG5>zX4k5f?)z*#pI-G(+j|jye%13CUdcSP;rNlY z#Q!X%zHf|V)GWIcEz-=fW6AahfxI~y7w7i|PK6H@@twdgH>D_R@>&OtKl}%MuAQ7I zcpFmV^~w~8$4@zzh~P~+?B~%L@EM3x(^KXJSgc6I=;)B6 zpRco2LKIlURPE*XUmZ^|1vb?w*ZfF}EXvY13I4af+()bAI5V?BRbFp`Sb{8GRJHd* z4S2s%4A)6Uc=PK%4@PbJ<{1R6+2THMk0c+kif**#ZGE)w6WsqH z`r^DL&r8|OEAumm^qyrryd(HQ9olv$ltnVGB{aY?_76Uk%6p;e)2DTvF(;t=Q+|8b zqfT(u5@BP);6;jmRAEV057E*2d^wx@*aL1GqWU|$6h5%O@cQtVtC^isd%gD7PZ_Io z_BDP5w(2*)Mu&JxS@X%%ByH_@+l>y07jIc~!@;Raw)q_;9oy@*U#mCnc7%t85qa4? z%_Vr5tkN^}(^>`EFhag;!MpRh!&bKnveQZAJ4)gEJo1@wHtT$Gs6IpznN$Lk-$NcM z3ReVC&qcXvfGX$I0nfkS$a|Pm%x+lq{WweNc;K>a1M@EAVWs2IBcQPiEJNt}+Ea8~WiapASoMvo(&PdUO}AfC~>ZGzqWjd)4no( ziLi#e3lOU~sI*XPH&n&J0cWfoh*}eWEEZW%vX?YK!$?w}htY|GALx3;YZoo=JCF4@ zdiaA-uq!*L5;Yg)z-_`MciiIwDAAR3-snC4V+KA>&V%Ak;p{1u>{Lw$NFj)Yn0Ms2*kxUZ)OTddbiJM}PK!DM}Ot zczn?EZXhx3wyu6i{QMz_Ht%b?K&-@5r;8b076YDir`KXF0&2i9NQ~#JYaq*}Ylb}^ z<{{6xy&;dQ;|@k_(31PDr!}}W$zF7Jv@f%um0M$#=8ygpu%j(VU-d5JtQwT714#f0z+Cm$F9JjGr_G!~NS@L9P;C1? z;Ij2YVYuv}tzU+HugU=f9b1Wbx3418+xj$RKD;$gf$0j_A&c;-OhoF*z@DhEW@d9o zbQBjqEQnn2aG?N9{bmD^A#Um6SDKsm0g{g_<4^dJjg_l_HXdDMk!p`oFv8+@_v_9> zq;#WkQ!GNGfLT7f8m60H@$tu?p;o_It#TApmE`xnZr|_|cb3XXE)N^buLE`9R=Qbg zXJu}6r07me2HU<)S7m?@GzrQDTE3UH?FXM7V+-lT#l}P(U>Fvnyw8T7RTeP`R579m zj=Y>qDw1h-;|mX-)cSXCc$?hr;43LQt)7z$1QG^pyclQ1Bd!jbzsVEgIg~u9b38;> zfsRa%U`l%did6HzPRd;TK{_EW;n^Ivp-%pu0%9G-z@Au{Ry+EqEcqW=z-#6;-!{WA z;l+xC6Zke>dl+(R1q7B^Hu~HmrG~Kt575mzve>x*cL-shl+zqp6yuGX)DDGm`cid! znlnZY=+a5*xQ=$qM}5$N+o!^(TqTFHDdyCcL8NM4VY@2gnNXF|D?5a558Lb*Yfm4) z_;0%2EF7k{)i(tTvS`l5he^KvW%l&-suPwpIlWB_Za1Hfa$@J!emrcyPpTKKM@NqL z?X_SqHt#DucWm<3Lp}W|&YyQE27zbGP55=HtZmB(k*WZA79f##?TweCt{%5yuc+Kx zgfSrIZI*Y57FOD9l@H0nzqOu|Bhrm&^m_RK6^Z<^N($=DDxyyPLA z+J)E(gs9AfaO`5qk$IGGY+_*tEk0n_wrM}n4G#So>8Dw6#K7tx@g;U`8hN_R;^Uw9JLRUgOQ?PTMr4YD5H7=ryv)bPtl=<&4&% z*w6k|D-%Tg*F~sh0Ns(h&mOQ_Qf{`#_XU44(VDY8b})RFpLykg10uxUztD>gswTH} z&&xgt>zc(+=GdM2gIQ%3V4AGxPFW0*l0YsbA|nFZpN~ih4u-P!{39d@_MN)DC%d1w z7>SaUs-g@Hp7xqZ3Tn)e z7x^sC`xJ{V<3YrmbB{h9i5rdancCEyL=9ZOJXoVHo@$$-%ZaNm-75Z-Ry9Z%!^+STWyv~To>{^T&MW0-;$3yc9L2mhq z;ZbQ5LGNM+aN628)Cs16>p55^T^*8$Dw&ss_~4G5Go63gW^CY+0+Z07f2WB4Dh0^q z-|6QgV8__5>~&z1gq0FxDWr`OzmR}3aJmCA^d_eufde7;d|OCrKdnaM>4(M%4V`PxpCJc~UhEuddx9)@)9qe_|i z)0EA%&P@_&9&o#9eqZCUCbh?`j!zgih5sJ%c4(7_#|Xt#r7MVL&Q+^PQEg3MBW;4T zG^4-*8L%s|A}R%*eGdx&i}B1He(mLygTmIAc^G(9Si zK7e{Ngoq>r-r-zhyygK)*9cj8_%g z)`>ANlipCdzw(raeqP-+ldhyUv_VOht+!w*>Sh+Z7(7(l=9~_Vk ztsM|g1xW`?)?|@m2jyAgC_IB`Mtz(O`mwgP15`lPb2V+VihV#29>y=H6ujE#rdnK` zH`EaHzABs~teIrh`ScxMz}FC**_Ii?^EbL(n90b(F0r0PMQ70UkL}tv;*4~bKCiYm zqngRuGy`^c_*M6{*_~%7FmOMquOEZXAg1^kM`)0ZrFqgC>C%RJvQSo_OAA(WF3{euE}GaeA?tu5kF@#62mM$a051I zNhE>u>!gFE8g#Jj95BqHQS%|>DOj71MZ?EYfM+MiJcX?>*}vKfGaBfQFZ3f^Q-R1# znhyK1*RvO@nHb|^i4Ep_0s{lZwCNa;Ix<{E5cUReguJf+72QRZIc%`9-Vy)D zWKhb?FbluyDTgT^naN%l2|rm}oO6D0=3kfXO2L{tqj(kDqjbl(pYz9DykeZlk4iW5 zER`)vqJxx(NOa;so@buE!389-YLbEi@6rZG0#GBsC+Z0fzT6+d7deYVU;dy!rPXiE zmu73@Jr&~K{-9MVQD}&`)e>yLNWr>Yh8CXae9XqfvVQ&eC_;#zpoaMxZ0GpZz7xjx z`t_Q-F?u=vrRPaj3r<9&t6K=+egimiJ8D4gh-rUYvaVy zG($v+3zk5sMuOhjxkH7bQ}(5{PD3Mg?!@8PkK&w>n7tO8FmAmoF30_#^B~c(Q_`4L zYWOoDVSnK|1=p{+@`Fk^Qb81Xf89_S`RSTzv(a4ID%71nll%{Wad$!CKfeTKkyC?n zCkMKHU#*nz_(tO$M)UP&ZfJ#*q(0Gr!E(l5(ce<3xut+_i8XrK8?Xr7_oeHz(bZ?~8q5q~$Rah{5@@7SMN zx9PnJ-5?^xeW2m?yC_7A#WK*B@oIy*Y@iC1n7lYKj&m7vV;KP4TVll=II)$39dOJ^czLRU>L> z68P*PFMN+WXxdAu=Hyt3g$l(GTeTVOZYw3KY|W0Fk-$S_`@9`K=60)bEy?Z%tT+Iq z7f>%M9P)FGg3EY$ood+v$pdsXvG? zd2q3abeu-}LfAQWY@=*+#`CX8RChoA`=1!hS1x5dOF)rGjX4KFg!iPHZE2E=rv|A} zro(8h38LLFljl^>?nJkc+wdY&MOOlVa@6>vBki#gKhNVv+%Add{g6#-@Z$k*ps}0Y zQ=8$)+Nm||)mVz^aa4b-Vpg=1daRaOU)8@BY4jS>=5n#6abG@(F2`=k-eQ9@u# zxfNFHv=z2w@{p1dzSOgHokX1AUGT0DY4jQI@YMw)EWQ~q5wmR$KQ}Y;(HPMSQCwzu zdli|G?bj(>++CP)yQ4s6YfpDc3KqPmquQSxg%*EnTWumWugbDW5ef%8j-rT#3rJu? z)5n;4b2c*;2LIW%LmvUu6t1~di~}0&Svy}QX#ER|hDFZwl!~zUP&}B1oKAxIzt~so zb!GaJYOb#&qRUjEI1xe_`@7qv_-LggQ$JE8+{ryT4%ldwC5ete+{G3C#g@^oxfY3#F zcLlj(l2G8>tC<5XWV|6_DZQZ7ow?MD8EZ9mM2oV~WoV-uoExmbwpzc6eMV}%J_{3l zW(4t2a-o}XRlU|NSiYn!*nR(Sc>*@TuU*(S77gfCi7+WR%2b;4#RiyxWR3(u5BIdf zo@#g4wQjtG3T$PqdX$2z8Zi|QP~I^*9iC+(!;?qkyk&Q7v>DLJGjS44q|%yBz}}>i z&Ve%^6>xY<=Pi9WlwpWB%K10Iz`*#gS^YqMeV9$4qFchMFO}(%y}xs2Hn_E}s4=*3 z+lAeCKtS}9E{l(P=PBI;rsYVG-gw}-_x;KwUefIB@V%RLA&}WU2XCL_?hZHoR<7ED zY}4#P_MmX(_G_lqfp=+iX|!*)RdLCr-1w`4rB_@bI&Uz# z!>9C3&LdoB$r+O#n);WTPi;V52OhNeKfW6_NLnw zpFTuLC^@aPy~ZGUPZr;)=-p|b$-R8htO)JXy{ecE5a|b{{&0O%H2rN&9(VHxmvNly zbY?sVk}@^{aw)%#J}|UW=ucLWs%%j)^n7S%8D1Woi$UT}VuU6@Sd6zc2+t_2IMBxd zb4R#ykMr8s5gKy=v+opw6;4R&&46$V+OOpDZwp3iR0Osqpjx))joB*iX+diVl?E~Q zc|$qmb#T#7Kcal042LUNAoPTPUxF-iGFw>ZFnUqU@y$&s8%h-HGD`EoNBbe#S>Y-4 zlkeAP>62k~-N zHQqXXyN67hGD6CxQIq_zoepU&j0 zYO&}<4cS^2sp!;5))(aAD!KmUED#QGr48DVlwbyft31WlS2yU<1>#VMp?>D1BCFfB z_JJ-kxTB{OLI}5XcPHXUo}x~->VP%of!G_N-(3Snvq`*gX3u0GR&}*fFwHo3-vIw0 zeiWskq3ZT9hTg^je{sC^@+z3FAd}KNhbpE5RO+lsLgv$;1igG7pRwI|;BO7o($2>mS(E z$CO@qYf5i=Zh6-xB=U8@mR7Yjk%OUp;_MMBfe_v1A(Hqk6!D})x%JNl838^ZA13Xu zz}LyD@X2;5o1P61Rc$%jcUnJ>`;6r{h5yrEbnbM$$ntA@P2IS1PyW^RyG0$S2tUlh z8?E(McS?7}X3nAAJs2u_n{^05)*D7 zW{Y>o99!I9&KQdzgtG(k@BT|J*;{Pt*b|?A_})e98pXCbMWbhBZ$t&YbNQOwN^=F) z_yIb_az2Pyya2530n@Y@s>s>n?L79;U-O9oPY$==~f1gXro5Y z*3~JaenSl_I}1*&dpYD?i8s<7w%~sEojqq~iFnaYyLgM#so%_ZZ^WTV0`R*H@{m2+ zja4MX^|#>xS9YQo{@F1I)!%RhM{4ZUapHTKgLZLcn$ehRq(emb8 z9<&Nx*RLcS#)SdTxcURrJhxPM2IBP%I zf1bWu&uRf{60-?Gclb5(IFI*!%tU*7d`i!l@>TaHzYQqH4_Y*6!Wy0d-B#Lz7Rg3l zqKsvXUk9@6iKV6#!bDy5n&j9MYpcKm!vG7z*2&4G*Yl}iccl*@WqKZWQSJCgQSj+d ze&}E1mAs^hP}>`{BJ6lv*>0-ft<;P@`u&VFI~P3qRtufE11+|#Y6|RJccqo27Wzr}Tp|DH z`G4^v)_8}R24X3}=6X&@Uqu;hKEQV^-)VKnBzI*|Iskecw~l?+R|WKO*~(1LrpdJ? z0!JKnCe<|m*WR>m+Qm+NKNH<_yefIml z+x32qzkNRrhR^IhT#yCiYU{3oq196nC3ePkB)f%7X1G^Ibog$ZnYu4(HyHUiFB`6x zo$ty-8pknmO|B9|(5TzoHG|%>s#7)CM(i=M7Nl=@GyDi-*ng6ahK(&-_4h(lyUN-oOa$` zo+P;C4d@m^p9J4c~rbi$rq9nhGxayFjhg+Rqa{l#`Y z!(P6K7fK3T;y!VZhGiC#)|pl$QX?a)a9$(4l(usVSH>2&5pIu5ALn*CqBt)9$yAl; z-{fOmgu><7YJ5k>*0Q~>lq72!XFX6P5Z{vW&zLsraKq5H%Z26}$OKDMv=sim;K?vsoVs(JNbgTU8-M%+ zN(+7Xl}`BDl=KDkUHM9fLlV)gN&PqbyX)$86!Wv!y+r*~kAyjFUKPDWL3A)m$@ir9 zjJ;uQV9#3$*`Dqo1Cy5*;^8DQcid^Td=CivAP+D;gl4b7*xa9IQ-R|lY5tIpiM~9- z%Hm9*vDV@_1FfiR|Kqh_5Ml0sm?abD>@peo(cnhiSWs$uy&$RYcd+m`6%X9FN%?w}s~Q=3!pJzbN~iJ}bbM*PPi@!E0eN zhKcuT=kAsz8TQo76CMO+FW#hr6da({mqpGK2K4T|xv9SNIXZ}a=4_K5pbz1HE6T}9 zbApW~m0C`q)S^F}B9Kw5!eT)Bj_h9vlCX8%VRvMOg8PJ*>PU>%yt-hyGOhjg!2pZR4{ z=VR_*?Hw|aai##~+^H>3p$W@6Zi`o4^iO2Iy=FPdEAI58Ebc~*%1#sh8KzUKOVHs( z<3$LMSCFP|!>fmF^oESZR|c|2JI3|gucuLq4R(||_!8L@gHU8hUQZKn2S#z@EVf3? zTroZd&}JK(mJLe>#x8xL)jfx$6`okcHP?8i%dW?F%nZh=VJ)32CmY;^y5C1^?V0;M z<3!e8GZcPej-h&-Osc>6PU2f4x=XhA*<_K*D6U6R)4xbEx~{3*ldB#N+7QEXD^v=I z+i^L+V7_2ld}O2b-(#bmv*PyZI4|U#Q5|22a(-VLOTZc3!9ns1RI-? zA<~h|tPH0y*bO1#EMrsWN>4yJM7vqFZr?uw$H8*PhiHRQg1U9YoscX-G|gck+SSRX!(e7@~eeUEw+POsT;=W9J&=EV`cUc{PIg_#TQVGnZsQbCs7#Q-)v#BicxLw#Fb?#)8TYbu zN)5R=MI1i7FHhF|X}xEl=sW~`-kf;fOR^h1yjthSw?%#F{HqrY2$q>7!nbw~nZ8q9 zh{vY! z%i=H!!P&wh z7_E%pB7l5)*VU>_O-S~d5Z!+;f{pQ4e86*&);?G<9*Q$JEJ!ZxY;Oj5&@^eg0Zs!iLCAR`2K?MSFzjX;kHD6)^`&=EZOIdW>L#O`J zf~$M4}JiV}v6B-e{NUBGFgj-*H%NG zfY0X(@|S8?V)drF;2OQcpDl2LV=~=%gGx?_$fbSsi@%J~taHcMTLLpjNF8FkjnjyM zW;4sSf6RHaa~LijL#EJ0W2m!BmQP(f=%Km_N@hsBFw%q#7{Er?y1V~UEPEih87B`~ zv$jE%>Ug9&=o+sZVZL7^+sp)PSrS;ZIJac4S-M>#V;T--4FXZ*>CI7w%583<{>tb6 zOZ8gZ#B0jplyTbzto2VOs)s9U%trre`m=RlKf{I_Nwdxn(xNG%zaVNurEYiMV3*g| z``3;{j7`UyfFrjlEbIJN{0db|r>|LA@=vX9CHFZYiexnkn$b%8Rvw0TZOQIXa;oTI zv@j;ZP+#~|!J(aBz9S{wL7W%Dr1H)G-XUNt9-lP?ijJ-XEj1e*CI~-Xz@4(Xg;UoG z{uzBf-U+(SHe}6oG%;A*93Zb=oE>uTb^%qsL>|bQf?7_6=KIiPU`I|r;YcZ!YG7y~ zQu@UldAwz$^|uoz3mz1;An-WVBtefSh-pv<`n&TU3oM!hrEI?l@v8A4#^$4t&~T32 zl*J=1q~h+60sNc43>0aVvhzyfjshgPYZoQ(OOh>LbUIoblb@1z~zp?))n?^)q6WGuDh}gMUaA9|X z3qq-XlcNldy5==T4rq*~g@XVY!9sYZjo#R7 zr{n)r5^S{9+$+8l7IVB*3_k5%-TBY@C%`P@&tZf>82sm#nfw7L%92>nN$663yW!yt zhS>EfLcE_Z)gv-Y^h1;xj(<4nD4GY{C-nWUgQc9cMmH{qpa!uEznrGF^?bbJHApScQ$j>$JZHAX80DdXu z--AMgrA0$Otdd#N9#!cg2Z~N8&lj1d+wDh+^ZObWJ$J)_h(&2#msu>q0B$DEERy{1 zCJN{7M@%#E@8pda`@u!v@{gcT3bA*>g*xYLXlbb&o@1vX*x+l}Voys6o~^_7>#GB| z*r!R%kA9k%J`?m>1tMHB9x$ZRe0$r~ui}X}jOC)9LH=Po*2SLdtf3^4?VKnu2ox&mV~0oDgi` z;9d}P$g~9%ThTK8s}5ow2V4?(-lU*ed8ro|}mU}pk% z;bqB0bx3AOk<0Joeh}Vl@_7Po&C`Cg>>gff>e7fu41U3Ic{JQu1W%+!Gvz3GDO2ixKd;KF6UEw8F_cDAh08gB>@ zaRH2Q96sBJ>`4aXvrF0xPtIWoA1pPsRQtU~xDtnEfTJnl{A9u5pR^K8=UdNq%T8F$)FbN> zgK+_(BF#D>R>kK!M#OT~=@@}3yAYqm33?{Bv?2iBr|-aRK0@uapzuXI)wE0=R@m^7 zQ`wLBn(M*wg!mgmQT1d!@3<2z>~rmDW)KG0*B4>_R6LjiI0^9QT8gtDDT|Lclxppm z+OeL6H3QpearJAB%1ellZ6d*)wBQ(hPbE=%?y6i^uf%`RXm*JW*WQ%>&J+=V(=qf{ zri~yItvTZbII+7S0>4Q0U9@>HnMP$X>8TqAfD(vAh};2P{QK)ik`a6$W$nG<{bR2Ufd!^iE z#1K58$gW!xpeYHeehuhQCXZ9p%N8m zB+l~T_u-Ycr!U>!?xu!!*6rNxq37{`DhMMfY6NpD3Jw zkYQDstvt30Hc_SaZuuMP2YrdW@HsPMbf^Y9lI<9$bnMil2X7`Ba-DGLbzgqP>mxwe zf1&JkDH54D3nLar2KjJ3z`*R+rUABq4;>>4Kjc2iQEj7pVLcZYZ~pteAG4rm1{>PQy=!QiV5G|tVk)53 zP?Azw+N)Yq3zZ`dW7Q9Bq@Y*jSK0<1f`HM;_>GH57pf_S%Ounz_yhTY8lplQSM`xx zU{r-Deqs+*I~sLI$Oq`>i`J1kJ(+yNOYy$_>R3Jfi680<|^u#J@aY%Q>O zqfI~sCbk#3--^zMkV&Yj0D(R^rK}+_npgPr_4^kYuG=pO%$C_7v{s@-{M-P@RL3^<`kO@b=YdKMuccfO1ZW# zeRYE%D~CMAgPlo?T!O6?b|pOZv{iMWb;sN=jF%=?$Iz_5zH?K;aFGU^8l7u%zHgiy z%)~y|k;Es-7YX69AMj^epGX#&^c@pp+lc}kKc`5CjPN4Z$$e58$Yn*J?81%`0~A)D zPg-db*pj-t4-G9>ImW4IMi*v#9z^9VD9h@9t;3jMAUVxt=oor+16yHf{lT|G4 zya6{4#BxFw!!~UTRwXXawKU4iz$$GMY6=Z8VM{2@0{=5A0+A#p6$aT3ubRyWMWPq9 zCEH5(Il0v4e4=Yxg(tDglfYAy!UpC>&^4=x7#6_S&Ktds)a8^`^tp6RnRd{KImB^o z2n=t#>iKx<*evmvoE{+fH#@WXGWs$)Uxrtf?r>AaxV0?kf0o@oDboJ6z0cgP@A$;k>SK1UqC?Q_ zk_I?j74;}uNXhOf_5ZxQSgB4otDEb9JJrX1kq`-o%T>g%M5~xXf!2_4P~K64tKgXq z&KHZ0@!cPvUJG4kw-0;tPo$zJrU-Nop>Uo65Pm|yaNvKjhi7V1g98;^N1~V3% zTR>yWa+X2FJ_wpPwz3i^6AGwOa_VMS-&`*KoKgF2&oR10Jn6{!pvVG@n=Jk@vjNuY zL~P7aDGhg~O9G^!bHi$8?G9v9Gp0cmekYkK;(q=47;~gI>h-kx-ceM{ml$#8KI$4ltyjaqP zki^cyDERloAb)dcDBU4na9C(pfD{P@eBGA}0|Rb)p{ISqi60=^FUEdF!ok{Gs;vb) zfj9(#1QA64w*ud^YsN5&PeiI>c`VioE8h)e}W%S9NMA55Gs zrWL6l+@3CKd@8(UQLTwe12SGWMqRn+j)QZRj*g)Xua)%ayzpqs{pD(WWESJYL3{M$ z%qkpM`jFoqLYVv6{IbCkL?fEiJj$VG=$taup&RL9e{s(Sgse2xVJlw0h74EXJKt2eX|dxz{->0)3W`JN7Bv!rLvRZc z0tAOZ2yVe4g9iq826qXAg`f!*+}(o1;1FDb>kKexumFS40KvK0yH1_@Z=LgWZ+}(Y zwYsa;OLz6tTA%gS=>8$=Z7pLh>|K2QElL)E=Q*(n*H`8R`8={-@4mTD-SWBOYRxV? zmF(-rJB8^Wlp?319rTrh^?QEP?|Msxrv?WbJ-+id+V#F2Y4(JPJ6U9bv+U1cIIH^W z)lg$_=g^Ma>2~Pyd_YOAv29Cb-U6DJO?NxnW7~QP*SmYi*vdUVuW#LWQ_u0`hymZi zaQS3Nb^4`ro$>0G%zbXmr5|D|iq0R<;S@?kr0j5Ruq87-Z1>crx%EzVZ9#U;{?}ti zW2W%*9MQg3Nbh%Ti6LhDd|-aFSgXoPG`mHlUU1iCHr>ru>DX?W_#13(`u*!Plu2OP z6jk=2>BC0l)aw;HCmxoYD1i4b%m$1`DYC_^L~ zIEAnFcHvad=-aO3(_MI=9#`z6-9*_!&$?<%meb5;jGd5Qp=MGf z6BD{%`L#TAOq%z%@*ib95Ey7NbUF=BlszVk3Iu3imD&*91N-ij%hW?W@~2TtdHTfP z#n0@Xd7X8Dyu36n{k#PwQ~T~X7mAO^cNV+z<HO@3X-# z_@rAn$k~(l@kciCC;&Qd*fWRI>=;fL{UPlciNDWyj$bX<#r^(r;EE8wwUVQm&7~QY zCXRj!**r^xybAEPq>h3W$uvI1j=yNIyzkE_D7fpGw)OV{U*Uwm{xB;mEg2(|y|ICd zMdQVqzMb-=XM6|E-a9kNh)^9lY`-DjhhHD1w5lufRcy+QLgJ47!fFne86#F; zX{ufroVBEZJOY?rDo!;Te6aOZ^1SO!dYRxQ*2njyA~dCWawn)>!*k7~>8Ikt&e*0>>V5ZbO|*1+2LFOqVe zXHb!aMk03^h%&9L8GMy7UDI2Kev>V@(R}*Iu6x+!Hn4~D@wj`P%#Hdbf(lK{+DD7f zJ&(v*mhn_e(R$^5L#bM^^Q@-!*b!l|+Xrb(q*MRFJYnrE7*xko!SJOy9LngR2|q5k zY`Ioiu+YBfzF{Labszk-E#*BYQk>$()=xWEGZRKwY)*UxP}0dGuPLZOkNJDI9Hy zFjfwiK6RjhH#rHW#B0(MW}i%V`943<6@Z*Nd^JEP5uZonXm=u%AM>{H^U@&Jy*i0s za_Da^xI6pMtXzHc{e~_ZcnKP*;=YL2Z^RmzDl{dJTk7*}E_h*NvgnhnxVKB59Duh~ zqouS_WoOR*{UvUw_K#OWz;gMracr%8>QQ&V*jv!8)ho;U8}9~8EU{N<=Z_gR%IpMT zbkePUG_afm=#|iIfFmdqkpLMGxY5D$`?I}&T7>TexU@v zkBx09kG)O;09ckj#(_Uov6vv{{HOcr-%H#DUQ@*GzF8Zh{iSM13%fuB%>wjdU@3Nf zlnYE!GTyNrqes|;nLFXfWU*Wg-9wmr=NBd$nCk+H?iwNvcd0Wab^3CT9a`>3V~oWI z9=_H+N-Q=MQ(io4u4mpdQ;k&5FXnKV5M7R`@WJ9h(GrAirO#XXOU{qQpk^B^Vd=Dt{wiqT zg-#j9J~@o%H2;W9mg)o6@*Vo;BSs2*4HAHpDk02mndAsov08R_48zJZ@J)s7+hyCo zy*0L#y)?AqZt-wX%+_Vx`8*A95OLHvs1$k~{h-_N_vov_gHJE=`X>L?5K+ zD?u59=mjtImMvd1GsDytuYp{IyUkW&?h zF>$#`n$~bZ)KN0B$XGeMYh&`;g8 zo_2-koaO6+8O!+L>SpIQbG(i;QW9UJi{Ecewlo?s&D!^>i$|#jaW}#HJuxt|W48=? zb^Y&O$a1s5ddr8DIt!sD!t=y1g(d4GR(s;s-HfV$GXl&m;+sAAxB^rk(3_NjE$p#L z*t4em?tA0d+XwRxN^OQwzbDZMuSE0J1)Ky{mq)^t4bnSl*)s>zNM@mMdtd78&ebHN z`!(|lE5q-p+TsRaNnMXwALaN5QIZ2IUi^Z22tsN5>nvIO+YU}Q*xh6}ee6@rR~<&1 z(PB4z>9ZBUMXZwSMmd9-aKKsmJeJq^G|#JclOh*xf0?^e0(`40nsg1z)(48;4}B_( zGwPI)yo|{oX{dVDL-5-aMGr;~vU1cPtJP5JM(sswz&Q`e<@0?y{YhsO9YK8EYJA;L z>7oG_Mts+(wCBC*Md82#XdKw&J*IizR?9k^rf1r{Ot-&>V^ke{9nI9zavlcNkIJtN z7T>?o|4rENk-?|lewZ(EfdR;%BUrzKJ^UkCpsM)EA9QHBVV8trT&*O(9?FO{MLTFL z=5P0H+T6C^jAuX0k4U;~GM!x`!X2N~3_n?qXY$HI>x@(DHEy&Q3ucT1R6fj28wX!I zC=&d$@bJ_v^%?W2Ngl}e8ww`b%BrN-PzGH;$@B2Ky1?%GMkm#~Okj(-Admyy;qya| zOi73kr_pwt?5Nj3p=&H>81!w#>Agj z(QXx{j0r=pTl>micAI_5vUw<3`Sht?Z}-j2Wx~F8DKCUQrsXl2?W8hur42(F_ zsSJ)_36&x6A|YkY6c<2a94SXbv~d>4CC4nkDPvf9Z5Fys^6^5r0j5=E>Cgy_Dk@tS z%?c}9!qB?t6t8(XMH%le8UeNWp@Nsma~Ql+^3Bo%_npMryeQJz4V=BAqE~T?dejng z3ge{fjCHoNAfYBvsfq;G%VL|j7t z`X0sy1EEgpyD;)tS1x+fnv-?C@glP0{RCW}Ma?3qpoq_&IJAYOy3G#s`rsh5=3>`K zkj``=;|*x5HSjZC zXNvPLh372q;=+6ja|SC!R-`JcL}}wwskajjTUGTpL(1zkN-p?BA2lmf+J3WsB7!k`0Brx8^cLTF9h)r+LZ$vsZo}`OpOs)?c6$hclR!R#MAeh|_DY|9r zy+_3c%IO9h9X?ksp?an&>Lw;QeQ`T-Ku6HaK~H?E9-Z5$cZu{YU;1+-6B$|JD;%!^ zt(4l>F8}a-UkC4YtOxFHckhl4VKr6P$P_O*U!)IDory%}Wz`YeFx6TO{y2Y${SBm?H9cTWV=WWJ z`_*CGso!ZN>l@~_jkeXtV}fczfA{TUkyeD>)i3|NFGcCsBmK3HXp&ol_@GVs7PIpfULy!hi zs+%KYgS%(n7_z_}6)hblk~W#LZ@&2)fwm6xkFP%&Ju|MFWbNiTwy{{g-pV1RK`L&=RE2D z4|g;~vd8xd|teYS%w!IlT4W$&FTrk-hcTADX!P?*f1YWEIRwq$Ys%^(Z9w&HT$>} zsMD#6Df=uJrX!JHP7<>Or;e_Cf=}`!`qR=i8fBj)$6Lxx{HRzd8Tnzd0p>kSps{OG zKJkml>bUj8$u|F=``l(-aMxWBC@CGZ#FXClQZ<4|&%jN}Tkg#q8z)=>Ly{$i0`rjU zvt|QddO&i=91e?h3>s~i;+6{ z8X4i6a1wDLrSuE#W(zhan+U*Zq+8p3a))JFVF4ffaV51K^YgTso~3;Y*NmM; zx8T?y-N0uyWY(8=me-HUC9xtABvX5~%yg+Cp&XF$Bq=OcK6T*D7eZ2EmIoCFWm{$S z1PNw8HDpe5hHeCusN8kdeb&f2#=3M^A~7YwJ7FRrhq*)PG9x?JIAaC{MV}5}g#7R$-Ly%)4=IUkRCGOR|XTMjn&okRmFjaO^YF5^* z@)#MCBOBezD)*xQNxydlUyN?dW{fS(s-T`gv*0BEnk}`BdmrbmPO8q8y(X$AA}*RH%I7Av!~84pudHb&%Q5-j zt?=6x(iR?<^_7X0v6Ys#VAL}dKk^hcjI=|EY;kPcZ_w<*H`_*|N7SacaM1ERD@6ab zg`!iTm7$URV+lpW_{V$ruR&A>jrX68k4x2wo$45}&wf7o<|o(@B!u-L@bKyQBAGwy z4#}UrRAu>^>Vb6k2-th^>WjvP;Nl|i3WrjWv3ISkj{m{eAcQIW^_ndxSX@|8T(ASJ z?_$fcP2u*6uOBk-{d>^ z0vWlfGQMvysI%R=iE|A+!!Nw?C917EU*_$`;;)px?s83CRd3i_jBN)k#nR5t$dJ(+ z_sP;wG@Ad)^(3LRj7q}0b2O(b`|i0~5SYb%Sjk^*5ISZ-Ab+}DGu$-X1n^TF1Ndw_ zF|e*1)cI2%`TR&AW~XpqpFb!=3cHbS>np9hYD_Mr5}y5Y`SY^r7isA2Q4(z zazRQEqWDKT2zIEbjSYdCPi1ZOGz80Nsl}gxO^DWMY0AV<2K&OL{&^6#@L1?lXu#6xSMh%3^5c*}oM6DQGY#(a^@z<&D zF(43I9e&5`h|A$5!+UFuOH0>F3$shBV4`0#M4RSB8=6F0ZgIbq<2LQ$Hh^(kAJu=! zt8ZGXTacD{(3W{V1$j_{Jc)Ka7t6u}ho`4kF+4@t_0!mCBn z)}o%eA}L)_L?=jw6BIfll7tb3n}?*yLt&XADa=rW>qz=_6s9ziOd5sXjil>FVFx3r zf>Feewk0v#W9>Gp4GacTRr>Sd2T6dWi-{YX`v!D)kCWzG5xQB=?es5ON(%nkwUhNl zV>@xkWWWv*N+{e$(SrExvN6BXzU(Hxlx27{VYHf+LpIbTO+Yu(ltMk<;)3A(LU@ytVYFkYvTa79idMtUFhfxx?P!)2F`prNWW#Fub#l>N2s@nh&n_ zA4{#}|AIs9|A4P0ZF%fy=hDN!t#ifH<)4u2kirK~JUpjQ-J+~cXOZI&dIts;P}UeXslP6zKvpEKSN-$y>kJ^nw2tC9bv zo(|lT@?vZ!{_l|d^8Yh)eEBh*5ABh+Lzjw+?V)o z#P-W7361>E(Y4;@`sv;VKn G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/spec/features/backoffice/connection_spec.rb b/spec/features/backoffice/connection_spec.rb index 20dab8f8b..ee9acfa42 100644 --- a/spec/features/backoffice/connection_spec.rb +++ b/spec/features/backoffice/connection_spec.rb @@ -16,7 +16,7 @@ feature 'when gestionnaire come to /backoffice and is not authenticated' do page.click_on 'Se connecter' end scenario 'he stay on the same page with an error' do - expect(page).to have_content('email ou mot de passe incorrect.') + expect(page).to have_content('Email ou mot de passe incorrect.') end end context 'when user enter good credentials' do diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index db62fda24..6b7434208 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -17,7 +17,6 @@ describe Procedure do it { is_expected.to have_db_column(:description) } it { is_expected.to have_db_column(:organisation) } it { is_expected.to have_db_column(:direction) } - it { is_expected.to have_db_column(:test) } it { is_expected.to have_db_column(:euro_flag) } it { is_expected.to have_db_column(:logo) } it { is_expected.to have_db_column(:logo_secure_token) } From c734c1c960908d103422dd29ea370efa26901b75 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 11:19:18 +0100 Subject: [PATCH 017/182] Update deploy.rb with new staging_v2 branch --- config/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/deploy.rb b/config/deploy.rb index cfa3be8aa..c2bf49b62 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -53,7 +53,7 @@ elsif ENV["to"] == "opensimplif" appname = 'opensimplif' elsif ENV["to"] == "tps_v2" if ENV['branch'].nil? - set :branch, 'tps_v2' + set :branch, 'staging_v2' else set :branch, ENV['branch'] end From 1420c8425e27b3f02b537daeaf80f3966f0db76e Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 11:45:21 +0100 Subject: [PATCH 018/182] Fix mina version --- Gemfile | 3 ++- Gemfile.lock | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index de63a0f1f..a51eb3869 100644 --- a/Gemfile +++ b/Gemfile @@ -141,8 +141,9 @@ group :development, :test do gem 'parallel_tests', '~> 2.10' gem 'brakeman', require: false + # Deploy - gem 'mina', git: 'https://github.com/mina-deploy/mina.git' + gem 'mina', ref: '343a7', git: 'https://github.com/mina-deploy/mina.git' end group :production, :staging do diff --git a/Gemfile.lock b/Gemfile.lock index 372420e1a..eb9f5ec92 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,9 @@ GIT remote: https://github.com/mina-deploy/mina.git - revision: 5f407b28be1cf05cdfaab0558285aa031c445491 + revision: 343a7ab672d8b4f0ddb84ec240cde7d94b46397a + ref: 343a7 specs: - mina (1.0.3) + mina (0.3.8) open4 (~> 1.3.4) rake From 6a261d125a1d755f743f0f2b675cd0e1e2fa5744 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 15 Nov 2016 14:10:43 +0100 Subject: [PATCH 019/182] New color for navbar --- Gemfile | 1 - app/assets/images/marianne_small.png | Bin 13700 -> 8044 bytes app/assets/stylesheets/application.scss | 76 +---------------- app/assets/stylesheets/application_split2.css | 3 - app/assets/stylesheets/backoffice.scss | 4 +- app/assets/stylesheets/landing.scss | 5 -- app/assets/stylesheets/navbar.scss | 77 ++++++++++++++++++ app/assets/stylesheets/users.scss | 4 + app/views/layouts/_navbar.html.haml | 4 +- app/views/layouts/application.html.haml | 5 +- 10 files changed, 89 insertions(+), 90 deletions(-) delete mode 100644 app/assets/stylesheets/application_split2.css create mode 100644 app/assets/stylesheets/navbar.scss create mode 100644 app/assets/stylesheets/users.scss diff --git a/Gemfile b/Gemfile index a51eb3869..e89701704 100644 --- a/Gemfile +++ b/Gemfile @@ -82,7 +82,6 @@ gem 'mailjet' gem "smart_listing" -# gem 'css_splitter' gem 'bootstrap-wysihtml5-rails', '~> 0.3.3.8' gem 'as_csv' diff --git a/app/assets/images/marianne_small.png b/app/assets/images/marianne_small.png index 6ef0b3b39af96fdc9ecb78b6e6dafc643c80ae70..886b05bf79fd475ff0ad91d09c2f6696860e3b20 100644 GIT binary patch literal 8044 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 literal 13700 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 Bq7(oC diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index cb7b0123c..8670ddf89 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -50,47 +50,11 @@ body { } #footer, #wrap:after { - height: 40px; + height: 50px; } #footer { - background-color: rgb(240, 240, 240) -} - -.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-transform: uppercase; - position: absolute; - top: 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; + background-color: rgb(240, 240, 240); } .beta_staging { @@ -121,17 +85,6 @@ body { } -.navbar { - height: 35px; - background-color: rgba(235, 235, 235, 0.95); - - .sign_in_FC { - margin-top: -18px; - height: 70px; - } - -} - .text-purple { color: #8B008B } @@ -224,31 +177,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 { display: none; } diff --git a/app/assets/stylesheets/application_split2.css b/app/assets/stylesheets/application_split2.css deleted file mode 100644 index 07566dff4..000000000 --- a/app/assets/stylesheets/application_split2.css +++ /dev/null @@ -1,3 +0,0 @@ -/* - *= require 'application' -*/ \ No newline at end of file diff --git a/app/assets/stylesheets/backoffice.scss b/app/assets/stylesheets/backoffice.scss index b447e2a5e..708d74a97 100644 --- a/app/assets/stylesheets/backoffice.scss +++ b/app/assets/stylesheets/backoffice.scss @@ -7,8 +7,8 @@ } #backoffice_index, #backoffice_search { - margin-left: -7rem; - margin-right: -7rem; + margin-left: 2rem; + margin-right: 2rem; } #pref_list{ diff --git a/app/assets/stylesheets/landing.scss b/app/assets/stylesheets/landing.scss index 7c22bc774..8adbe7df5 100644 --- a/app/assets/stylesheets/landing.scss +++ b/app/assets/stylesheets/landing.scss @@ -1,8 +1,3 @@ -.max-size { - margin-left: -10rem; - margin-right: -10rem; -} - #landing { background-image: image-url('landing_background.png'); diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss new file mode 100644 index 000000000..6ecc53895 --- /dev/null +++ b/app/assets/stylesheets/navbar.scss @@ -0,0 +1,77 @@ +.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 { + color: white; + height: 35px; + background-color: rgb(15, 56, 130); + border: 0 !important; + + .sign_in_FC { + margin-top: -18px; + height: 70px; + } + + .btn{ + color: white; + } + .btn:hover{ + color: #aaaaaa; + } +} + + +.logo { + margin-right: 10px; + max-height: 100%; +} + + +#title_navbar{ + color: white; + font-weight: bold; + font-size: 1.8em; +} + +#title_navbar:hover{ + text-decoration: none; +} +#beta { + text-align: center; + text-transform: uppercase; + position: absolute; + top: 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; +} diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss new file mode 100644 index 000000000..7c18d2293 --- /dev/null +++ b/app/assets/stylesheets/users.scss @@ -0,0 +1,4 @@ +#users_index{ + margin-left: 2rem; + margin-right: 2rem; +} \ No newline at end of file diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index c67a744f2..c40ba7bf6 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -4,8 +4,8 @@ - else Env Test = image_tag('marianne_small.png', class: 'logo') -%a{href: '/'} - = image_tag(image_url(LOGO_NAME), class: 'logo') rescue nil +%a#title_navbar.btn{href: '/'} + TPS - if gestionnaire_signed_in? && user_signed_in? %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index baf25cfeb..fb01eb58b 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -7,9 +7,8 @@ %meta{'http-equiv' => "X-UA-Compatible", :content => "IE=edge"} = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true - = stylesheet_link_tag 'application_split2', media: 'all', 'data-turbolinks-track' => true - = javascript_include_tag 'application', 'data-turbolinks-track' => true + = csrf_meta_tags %body - if Rails.env == 'test' @@ -38,7 +37,7 @@ %br - #footer.navbar + #footer .container.center %p{style:'margin-top: 1em;'} %p{class: "copyright text-muted small"} From 7fd41d26f7a50c6eddb3915c564d4f3148dfe74f Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 17 Nov 2016 17:11:23 +0100 Subject: [PATCH 020/182] Change version on README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e9a70337e..2725b55a1 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ TéléProcédure Simplifiée, ou TPS pour les intimes, est une plateforme 100% w ## Technologies utilisées -Ruby : 2.1.5 -Rails : 4.2.0 +Ruby : 2.3.1 +Rails : 5.0.0.1 ## Initialisation de l'environnement de développement From 1fe76b8c3baadcf87bc745e054fdf6f51f70fa5b Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 10:53:50 +0100 Subject: [PATCH 021/182] Add google_analytics partial in layout --- app/views/layouts/_google_analytics.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/views/layouts/_google_analytics.html diff --git a/app/views/layouts/_google_analytics.html b/app/views/layouts/_google_analytics.html new file mode 100644 index 000000000..e69de29bb From f5ec47641614e9794ff9696bbacdad750e08a4c0 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 14:12:59 +0100 Subject: [PATCH 022/182] New application layout struct for pages --- app/assets/stylesheets/print.scss | 2 +- app/views/layouts/application.html.haml | 30 +++++++++++++------------ 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/assets/stylesheets/print.scss b/app/assets/stylesheets/print.scss index c16833811..9b9dc1fec 100644 --- a/app/assets/stylesheets/print.scss +++ b/app/assets/stylesheets/print.scss @@ -28,4 +28,4 @@ #backoffice_dossier_show .nav-tabs { display: none; } -} \ No newline at end of file +} diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 9e31d11ff..3cee15265 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,4 +1,3 @@ -!!! %html %head %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/ @@ -22,20 +21,23 @@ ="".html_safe %div#wrap - %div#header.navbar - =render partial: "layouts/navbar" + .row + %div#header.navbar + =render partial: "layouts/navbar" - #flash_message.center - - if flash.notice - .alert.alert-success - = flash.notice - - if flash.alert - .alert.alert-danger - = flash.alert - #main_div.main_div - = yield - - %br + .row + #left-pannel + #main_div + .row + #flash_message.center + - if flash.notice + .alert.alert-success + = flash.notice + - if flash.alert + .alert.alert-danger + = flash.alert + .row + = yield #footer .container.center From b62587f9abddfa453a5efd7a8bac1c661b59d45c Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 14:19:15 +0100 Subject: [PATCH 023/182] Split footer and flash messages in layouts --- app/views/layouts/_flash_messages.html.haml | 7 ++++ app/views/layouts/_footer.html.haml | 15 +++++++ app/views/layouts/application.html.haml | 43 +++++---------------- 3 files changed, 31 insertions(+), 34 deletions(-) create mode 100644 app/views/layouts/_flash_messages.html.haml create mode 100644 app/views/layouts/_footer.html.haml diff --git a/app/views/layouts/_flash_messages.html.haml b/app/views/layouts/_flash_messages.html.haml new file mode 100644 index 000000000..2ed1b4013 --- /dev/null +++ b/app/views/layouts/_flash_messages.html.haml @@ -0,0 +1,7 @@ +#flash_message.center +- if flash.notice + .alert.alert-success + = flash.notice +- if flash.alert + .alert.alert-danger + = flash.alert diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml new file mode 100644 index 000000000..a981f56b4 --- /dev/null +++ b/app/views/layouts/_footer.html.haml @@ -0,0 +1,15 @@ +#footer + .container.center + %p{style:'margin-top: 1em;'} + %p{class: "copyright text-muted small"} + =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" + + 2016 + + \- + + =link_to 'CGU / Mentions légales', cgu_path + + \- + + =link_to 'Contact', "mailto:"+t('dynamics.contact_email') diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 3cee15265..f6437f0de 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -21,40 +21,15 @@ ="".html_safe %div#wrap - .row + %div.row %div#header.navbar - =render partial: "layouts/navbar" - - .row - #left-pannel - #main_div - .row - #flash_message.center - - if flash.notice - .alert.alert-success - = flash.notice - - if flash.alert - .alert.alert-danger - = flash.alert - .row + = render partial: "layouts/navbar" + %div.row + %div#left-pannel + %div#main_div + %div.row + = render partial: 'layouts/flash_messages' + %div.row = yield - - #footer - .container.center - %p{style:'margin-top: 1em;'} - %p{class: "copyright text-muted small"} - =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" - - 2016 - - \- - - =link_to 'CGU / Mentions légales', cgu_path - - \- - - =link_to 'Contact', "mailto:"+t('dynamics.contact_email') - + = render partial: 'layouts/footer' = render partial: 'layouts/google_analytics' - - From 0db63f33c0aca050d88a2a5fb054a1c35bcbcbe6 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 15:04:16 +0100 Subject: [PATCH 024/182] Working on navbar, will put fake content to get css sizes --- app/assets/stylesheets/application.scss | 13 ++-- app/assets/stylesheets/left_pannel.scss | 3 + app/assets/stylesheets/navbar.scss | 40 ++++++++++--- app/views/layouts/_navbar.html.haml | 79 ++++++++++++++----------- app/views/layouts/application.html.haml | 2 +- 5 files changed, 84 insertions(+), 53 deletions(-) create mode 100644 app/assets/stylesheets/left_pannel.scss diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index b6c12266e..f41620d7e 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -76,15 +76,6 @@ body { margin-right: 105px; } -#header { - top: 0; - left: -3px; - position: fixed; - width: 100%; - z-index: 10; - -} - .text-purple { color: #8B008B } @@ -219,3 +210,7 @@ div.pagination { } } + +.no-padding { + padding: 0; +} diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss new file mode 100644 index 000000000..10223b1e0 --- /dev/null +++ b/app/assets/stylesheets/left_pannel.scss @@ -0,0 +1,3 @@ +#left-pannel { + width: 100%; +} diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 6ecc53895..b6088e31f 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -1,3 +1,35 @@ +#header { + top: 0; + left: 0; + position: fixed; + width: 100%; + z-index: 10; + border-radius: 0; + height: 60px; + #home { + text-align: center; + padding: 10px; + background-color: #003189; + .logo { + width: 118px; + height: 40px; + } + #tps-title { + font-family: Arial; + font-size: 24px; + font-weight: bold; + line-height: 28px; + padding: 5px 0 0 20px; + } + } + #navbar-body { + height: 60px; + background-color: #FFFFFF; + box-shadow: 0 1px 2px 0 rgba(0,0,0,0.5); + padding-left: 15px; + } +} + .btn-nav { color: white; background-color: transparent; @@ -27,7 +59,6 @@ .navbar { color: white; height: 35px; - background-color: rgb(15, 56, 130); border: 0 !important; .sign_in_FC { @@ -43,13 +74,6 @@ } } - -.logo { - margin-right: 10px; - max-height: 100%; -} - - #title_navbar{ color: white; font-weight: bold; diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index c40ba7bf6..5619dcfc4 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -3,41 +3,50 @@ Beta - else Env Test -= image_tag('marianne_small.png', class: 'logo') -%a#title_navbar.btn{href: '/'} - TPS -- if gestionnaire_signed_in? && user_signed_in? - %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} - =t('dynamics.backoffice.dossiers') - %a{href: users_dossiers_path, class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') -- elsif gestionnaire_signed_in? - %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') -- elsif user_signed_in? - %a{href: users_dossiers_path, class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') -- elsif administrateur_signed_in? - %a{href: admin_procedures_path, class: 'btn btn-md'} - =t('dynamics.admin.menu.title') +%div.col-lg-2.col-md-2.no-padding + %a#title_navbar{href: '/'} + %div.row#home + %div.col-lg-6 + = image_tag('marianne_small.png', class: 'logo') + %div.col-lg-6#tps-title + TPS -#sign_out - -if user_signed_in? - = render partial: 'users/login_banner' - -elsif gestionnaire_signed_in? - = render partial: 'gestionnaires/login_banner' - -elsif administrateur_signed_in? - = render partial: 'administrateurs/login_banner' - -else - = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' - -unless Features.unified_login - = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' - = link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md' +%div.col-lg-10.col-md-10.no-padding + %div#navbar-body + %div.row -- if Rails.env != 'production' - %div.staging_warning - %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune donnée présente sur cette plateforme ne pourra être transférée sur l'environnement final de production.", 'data-toggle' => 'tooltip'} - Vous vous trouvez actuellement sur la plateforme de test. - %div.badge.progress-bar-danger - ? + - if false + - if gestionnaire_signed_in? && user_signed_in? + %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} + =t('dynamics.backoffice.dossiers') + %a{href: users_dossiers_path, class: 'btn btn-md'} + =t('dynamics.users.mes_dossiers') + - elsif gestionnaire_signed_in? + %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} + =t('dynamics.users.mes_dossiers') + - elsif user_signed_in? + %a{href: users_dossiers_path, class: 'btn btn-md'} + =t('dynamics.users.mes_dossiers') + - elsif administrateur_signed_in? + %a{href: admin_procedures_path, class: 'btn btn-md'} + =t('dynamics.admin.menu.title') + + -if user_signed_in? + = render partial: 'users/login_banner' + -elsif gestionnaire_signed_in? + = render partial: 'gestionnaires/login_banner' + -elsif administrateur_signed_in? + = render partial: 'administrateurs/login_banner' + -else + = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' + -unless Features.unified_login + = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' + = link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md' + + - if Rails.env != 'production' + %div.staging_warning + %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune donnée présente sur cette plateforme ne pourra être transférée sur l'environnement final de production.", 'data-toggle' => 'tooltip'} + Vous vous trouvez actuellement sur la plateforme de test. + %div.badge.progress-bar-danger + ? diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index f6437f0de..9afa146d7 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -30,6 +30,6 @@ %div.row = render partial: 'layouts/flash_messages' %div.row - = yield + =# yield = render partial: 'layouts/footer' = render partial: 'layouts/google_analytics' From 23ef3e896a22641ff394740938768127949e08bf Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 15:31:03 +0100 Subject: [PATCH 025/182] Done with navbar --- app/assets/stylesheets/navbar.scss | 44 ++++++++++++++++++++--------- app/views/layouts/_navbar.html.haml | 23 +++++++++++---- 2 files changed, 49 insertions(+), 18 deletions(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index b6088e31f..e502c6c4c 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -6,6 +6,16 @@ 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; padding: 10px; @@ -27,6 +37,27 @@ background-color: #FFFFFF; box-shadow: 0 1px 2px 0 rgba(0,0,0,0.5); padding-left: 15px; + .main-info { + font-family: Arial; + font-size: 18px; + font-weight: bold; + line-height: 58px; + color: #000000; + } + .options { + font-family: Arial; + font-size: 14px; + text-align: right; + line-height: 22px; + color: #666666; + padding: 8px; + border-right: 1px solid #C8C6C8; + } + .log-options { + color: #003189; + font-size: 45px; + padding: 8px 0 0 20px; + } } } @@ -57,15 +88,11 @@ } .navbar { - color: white; - height: 35px; border: 0 !important; - .sign_in_FC { margin-top: -18px; height: 70px; } - .btn{ color: white; } @@ -74,15 +101,6 @@ } } -#title_navbar{ - color: white; - font-weight: bold; - font-size: 1.8em; -} - -#title_navbar:hover{ - text-decoration: none; -} #beta { text-align: center; text-transform: uppercase; diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 5619dcfc4..15fe0b794 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,8 +1,9 @@ -#beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} - - if Rails.env == 'production' - Beta - - else - Env Test +- if false + #beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} + - if Rails.env == 'production' + Beta + - else + Env Test %div.col-lg-2.col-md-2.no-padding %a#title_navbar{href: '/'} @@ -15,6 +16,18 @@ %div.col-lg-10.col-md-10.no-padding %div#navbar-body %div.row + %div.col-lg-8.col-md-8.main-info + Start UP region ile de france (8 dossiers en cours) + %div.col-lg-3.col-md-3.options + %div.row + %div.col-lg-12.col-md-12 + %span.fa.fa-pencil + Modifier le tableau + %div.col-lg-12.col-md-12 + %span.fa.fa-download + Télécharger les données + %div.col-lg-1.col-md-1.log-options + %span.fa.fa-sign-out - if false - if gestionnaire_signed_in? && user_signed_in? From 2d355bd6a06e7aa2262562f65c11e63311b4e4b5 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 16:13:19 +0100 Subject: [PATCH 026/182] Working on left-pannel, include footer after main-container --- app/assets/stylesheets/application.scss | 16 +++++++++++----- app/assets/stylesheets/left_pannel.scss | 21 ++++++++++++++++++++- app/assets/stylesheets/main_container.scss | 3 +++ app/views/layouts/_footer.html.haml | 2 +- app/views/layouts/_left_pannel.html.haml | 9 +++++++++ app/views/layouts/_navbar.html.haml | 11 +++++------ app/views/layouts/application.html.haml | 12 +++++++----- 7 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 app/assets/stylesheets/main_container.scss create mode 100644 app/views/layouts/_left_pannel.html.haml diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index f41620d7e..d621048f6 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -24,7 +24,7 @@ @import "bootstrap"; body { - background-color: rgb(255, 255, 255); + background-color: #F2F6FA; } html, body { @@ -49,12 +49,14 @@ body { display: block; } -#footer, #wrap:after { - height: 50px; -} - #footer { background-color: rgb(240, 240, 240); + position: relative; + width: 100%; + margin-top: 30px; + bottom: 0px; + height: 50px; + line-height: 50px; } .beta_staging { @@ -214,3 +216,7 @@ div.pagination { .no-padding { padding: 0; } + +.no-margin { + margin: 0; +} diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index 10223b1e0..ef6f0f3d5 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -1,3 +1,22 @@ #left-pannel { - width: 100%; + padding: 80px 0 0 10px; + background-color: #003189; + height: 100%; + position: fixed; + top: 0; + left: 0; + bottom: 0; + color: white; + #first-block { + font-family: Arial; + font-size: 16px; + font-weight: bold; + line-height: 18px; + } + #action-block { + } + #menu-block { + } + #infos-block { + } } diff --git a/app/assets/stylesheets/main_container.scss b/app/assets/stylesheets/main_container.scss new file mode 100644 index 000000000..fda591698 --- /dev/null +++ b/app/assets/stylesheets/main_container.scss @@ -0,0 +1,3 @@ +#main-container { + float: right; +} diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml index a981f56b4..b13db1d2f 100644 --- a/app/views/layouts/_footer.html.haml +++ b/app/views/layouts/_footer.html.haml @@ -1,5 +1,5 @@ #footer - .container.center + .center %p{style:'margin-top: 1em;'} %p{class: "copyright text-muted small"} =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" diff --git a/app/views/layouts/_left_pannel.html.haml b/app/views/layouts/_left_pannel.html.haml new file mode 100644 index 000000000..f18278714 --- /dev/null +++ b/app/views/layouts/_left_pannel.html.haml @@ -0,0 +1,9 @@ +%div#first-block + %div.row + %div.col-lg-12.col-md-12 + 112 dossiers en cours + %div.col-lg-12.col-md-12 + > 2 nouveaux dossiers +%div#action-block +%div#menu-block +%div#infos-block diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 15fe0b794..bbe3cbc28 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,9 +1,8 @@ -- if false - #beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} - - if Rails.env == 'production' - Beta - - else - Env Test +#beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} + - if Rails.env == 'production' + Beta + - else + Env Test %div.col-lg-2.col-md-2.no-padding %a#title_navbar{href: '/'} diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 9afa146d7..d110fce9f 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -24,12 +24,14 @@ %div.row %div#header.navbar = render partial: "layouts/navbar" - %div.row - %div#left-pannel - %div#main_div + %div.row.no-margin + %div.col-lg-2.col-md-2#left-pannel + = render partial: 'layouts/left_pannel' + %div.col-lg-10.col-md-10#main-container %div.row = render partial: 'layouts/flash_messages' %div.row - =# yield - = render partial: 'layouts/footer' + = yield + %div.row + = render partial: 'layouts/footer' = render partial: 'layouts/google_analytics' From ef9adf52cb736cfc583fbb5d7f665d0020ef63c8 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 16:45:12 +0100 Subject: [PATCH 027/182] Loading variables from controller to get several uniq layout to display --- app/assets/stylesheets/navbar.scss | 2 +- .../backoffice/dossiers_controller.rb | 2 +- app/views/backoffice/dossiers/index.html.haml | 21 ------------------- .../dossiers/_download_dossiers.html.haml | 20 ++++++++++++++++++ app/views/layouts/_navbar.html.haml | 10 ++++----- 5 files changed, 26 insertions(+), 29 deletions(-) create mode 100644 app/views/dossiers/_download_dossiers.html.haml diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index e502c6c4c..793741b01 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -36,7 +36,7 @@ height: 60px; background-color: #FFFFFF; box-shadow: 0 1px 2px 0 rgba(0,0,0,0.5); - padding-left: 15px; + padding-left: 50px; .main-info { font-family: Arial; font-size: 18px; diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 85c5a7b82..40d9a96fe 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -3,7 +3,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController def index super - + @options = ["dossiers/download_dossiers"] dossiers_list_facade.service.filter_procedure_reset! end diff --git a/app/views/backoffice/dossiers/index.html.haml b/app/views/backoffice/dossiers/index.html.haml index 0f0f3326b..51155183b 100644 --- a/app/views/backoffice/dossiers/index.html.haml +++ b/app/views/backoffice/dossiers/index.html.haml @@ -5,27 +5,6 @@ %h1 =t('dynamics.backoffice.title') - %div.dropdown.pull-right#download_menu - - if @dossiers_list_facade.dossiers_to_display.count > 200 - %button.btn.btn-error.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false, class: 'disabled'} - %span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 200, merci de bien vouloir appliquer des filtres.'} - = t('dynamics.backoffice.limit_excess_download_all_dossiers') - - else - %button.btn.btn-success.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } - %i.fa.fa-download - = t('dynamics.backoffice.download_all_dossiers') - %span.caret - %ul.dropdown-menu.dropdown-menu-right - %li - = link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm' } do - = t('dynamics.backoffice.format_csv') - %li - = link_to backoffice_download_dossiers_tps_path(format: :xlsx, procedure_id: params[:id]), { class: 'btn btn-sm' } do - = t('dynamics.backoffice.format_xlsx') - %li - = link_to backoffice_download_dossiers_tps_path(format: :ods, procedure_id: params[:id]), { class: 'btn btn-sm' } do - = t('dynamics.backoffice.format_ods') - = render partial: 'backoffice/dossiers/onglets' = smart_listing_render :dossiers diff --git a/app/views/dossiers/_download_dossiers.html.haml b/app/views/dossiers/_download_dossiers.html.haml new file mode 100644 index 000000000..0027b13af --- /dev/null +++ b/app/views/dossiers/_download_dossiers.html.haml @@ -0,0 +1,20 @@ +%div.dropdown.pull-right#download_menu + - if @dossiers_list_facade.dossiers_to_display.count > 200 + %button.btn.btn-error.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false, class: 'disabled'} + %span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 200, merci de bien vouloir appliquer des filtres.'} + = t('dynamics.backoffice.limit_excess_download_all_dossiers') + - else + %button.btn.btn-success.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } + %i.fa.fa-download + = t('dynamics.backoffice.download_all_dossiers') + %span.caret + %ul.dropdown-menu.dropdown-menu-right + %li + = link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm' } do + = t('dynamics.backoffice.format_csv') + %li + = link_to backoffice_download_dossiers_tps_path(format: :xlsx, procedure_id: params[:id]), { class: 'btn btn-sm' } do + = t('dynamics.backoffice.format_xlsx') + %li + = link_to backoffice_download_dossiers_tps_path(format: :ods, procedure_id: params[:id]), { class: 'btn btn-sm' } do + = t('dynamics.backoffice.format_ods') diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index bbe3cbc28..51829359d 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -19,12 +19,10 @@ Start UP region ile de france (8 dossiers en cours) %div.col-lg-3.col-md-3.options %div.row - %div.col-lg-12.col-md-12 - %span.fa.fa-pencil - Modifier le tableau - %div.col-lg-12.col-md-12 - %span.fa.fa-download - Télécharger les données + - if @options + - @options.each do |option| + %div.col-lg-12.col-md-12 + = render partial: option %div.col-lg-1.col-md-1.log-options %span.fa.fa-sign-out From 3a82725cbdc293e4528d5fc1287bd40967b190fe Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 16:49:59 +0100 Subject: [PATCH 028/182] Fix css for download dossiers buttons --- app/assets/stylesheets/navbar.scss | 6 ++++++ app/views/dossiers/_download_dossiers.html.haml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 793741b01..8336ec355 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -61,6 +61,12 @@ } } +#download-menu { + .btn-sm { + color: #000000; + } +} + .btn-nav { color: white; background-color: transparent; diff --git a/app/views/dossiers/_download_dossiers.html.haml b/app/views/dossiers/_download_dossiers.html.haml index 0027b13af..6a10be813 100644 --- a/app/views/dossiers/_download_dossiers.html.haml +++ b/app/views/dossiers/_download_dossiers.html.haml @@ -1,4 +1,4 @@ -%div.dropdown.pull-right#download_menu +%div.dropdown.pull-right#download-menu - if @dossiers_list_facade.dossiers_to_display.count > 200 %button.btn.btn-error.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false, class: 'disabled'} %span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 200, merci de bien vouloir appliquer des filtres.'} From e9eeb0b4ba316cb2d382abfcd8975be9c8f3d57a Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 16:57:42 +0100 Subject: [PATCH 029/182] Sacrifice 1 bootstrap col unit to get disconnect preview (under ruban) --- app/assets/stylesheets/navbar.scss | 1 + app/views/layouts/_navbar.html.haml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 8336ec355..adf1c03e7 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -52,6 +52,7 @@ color: #666666; padding: 8px; border-right: 1px solid #C8C6C8; + height: 60px; } .log-options { color: #003189; diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 51829359d..e612aeb67 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -15,7 +15,7 @@ %div.col-lg-10.col-md-10.no-padding %div#navbar-body %div.row - %div.col-lg-8.col-md-8.main-info + %div.col-lg-7.col-md-7.main-info Start UP region ile de france (8 dossiers en cours) %div.col-lg-3.col-md-3.options %div.row From 3627a18420668af91e336a247fc654cb5adec7a3 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 21 Nov 2016 17:30:28 +0100 Subject: [PATCH 030/182] Set navbar options from before_action --- app/controllers/backoffice/dossiers_controller.rb | 6 +++++- app/views/layouts/_navbar.html.haml | 4 ++-- app/views/users/_login_banner.html.haml | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 40d9a96fe..d9218683d 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -1,9 +1,9 @@ class Backoffice::DossiersController < Backoffice::DossiersListController + before_action :set_layout_options respond_to :html, :xlsx, :ods, :csv def index super - @options = ["dossiers/download_dossiers"] dossiers_list_facade.service.filter_procedure_reset! end @@ -131,6 +131,10 @@ class Backoffice::DossiersController < Backoffice::DossiersListController private + def set_layout_options + @navbar_options = ["dossiers/download_dossiers"] + end + def create_dossier_facade dossier_id @facade = DossierFacades.new dossier_id, current_gestionnaire.email diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index e612aeb67..81a3c3cc0 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -19,8 +19,8 @@ Start UP region ile de france (8 dossiers en cours) %div.col-lg-3.col-md-3.options %div.row - - if @options - - @options.each do |option| + - if @navbar_options + - @navbar_options.each do |option| %div.col-lg-12.col-md-12 = render partial: option %div.col-lg-1.col-md-1.log-options diff --git a/app/views/users/_login_banner.html.haml b/app/views/users/_login_banner.html.haml index f467eebea..13877a97c 100644 --- a/app/views/users/_login_banner.html.haml +++ b/app/views/users/_login_banner.html.haml @@ -10,4 +10,4 @@ %i.fa.fa-user = current_user.email - = link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md' \ No newline at end of file + = link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md' From 55eb8397d28cd86f96b8f2e72e4e5830d5d00a60 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 22 Nov 2016 11:33:08 +0100 Subject: [PATCH 031/182] Fixing footer and push left to center on after wrap --- app/assets/stylesheets/application.scss | 15 +++++++++------ app/views/layouts/_footer.html.haml | 18 ++++++++---------- app/views/layouts/application.html.haml | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index d621048f6..97455d0a8 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -49,14 +49,17 @@ body { display: block; } +#footer, #wrap:after { + height: 50px; +} + #footer { background-color: rgb(240, 240, 240); - position: relative; - width: 100%; - margin-top: 30px; - bottom: 0px; - height: 50px; - line-height: 50px; + text-align: center; + margin-top: 1em; + p { + line-height: 50px; + } } .beta_staging { diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml index b13db1d2f..efd0f3d15 100644 --- a/app/views/layouts/_footer.html.haml +++ b/app/views/layouts/_footer.html.haml @@ -1,15 +1,13 @@ -#footer - .center - %p{style:'margin-top: 1em;'} - %p{class: "copyright text-muted small"} - =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" +%div.row#footer + %p{class: "copyright col-md-push-2 col-md-10 col-lg-push-2 col-lg-10 text-muted small"} + =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" - 2016 + 2016 - \- + \- - =link_to 'CGU / Mentions légales', cgu_path + =link_to 'CGU / Mentions légales', cgu_path - \- + \- - =link_to 'Contact', "mailto:"+t('dynamics.contact_email') + =link_to 'Contact', "mailto:"+t('dynamics.contact_email') diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index d110fce9f..5fde9f04e 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -33,5 +33,5 @@ %div.row = yield %div.row - = render partial: 'layouts/footer' + = render partial: 'layouts/footer' = render partial: 'layouts/google_analytics' From 7faf1705dab9344d79663260aba583500a7e8190 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 22 Nov 2016 15:17:37 +0100 Subject: [PATCH 032/182] Add service RenderPartial --- app/services/render_partial_service.rb | 31 ++++++++++++++++++++ spec/services/render_partial_service_spec.rb | 19 ++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 app/services/render_partial_service.rb create mode 100644 spec/services/render_partial_service_spec.rb diff --git a/app/services/render_partial_service.rb b/app/services/render_partial_service.rb new file mode 100644 index 000000000..98e2dd56b --- /dev/null +++ b/app/services/render_partial_service.rb @@ -0,0 +1,31 @@ +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 + + private + + def retrieve_navbar + 'layouts/navbars/_navbar_' + retrieve_name + end + + def retrieve_left_panel + 'layouts/left_panel/_leftpanel_' + retrieve_name + end + + def retrieve_name + controller.to_s.parameterize + '_' + method.to_s + end +end \ No newline at end of file diff --git a/spec/services/render_partial_service_spec.rb b/spec/services/render_partial_service_spec.rb new file mode 100644 index 000000000..736e46a7f --- /dev/null +++ b/spec/services/render_partial_service_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe RenderPartialService do + let(:service) { RenderPartialService.new(controller, method) } + let(:controller) { ApplicationController } + let(:method) { :index } + + describe 'navbar' do + subject { service.navbar } + + it { is_expected.to eq 'layouts/navbars/_navbar_'+controller.to_s.parameterize + '_' + method.to_s } + end + + describe 'left_panel' do + subject { service.left_panel } + + it { is_expected.to eq 'layouts/left_panel/_leftpanel_'+controller.to_s.parameterize + '_' + method.to_s } + end +end \ No newline at end of file From 4f9bcdd225abbedf4d9f1665399c31dfdc9d87d5 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 22 Nov 2016 16:03:32 +0100 Subject: [PATCH 033/182] Awsome struct to share layouts between controllers and there methods --- app/controllers/application_controller.rb | 10 +++ .../backoffice/dossiers_controller.rb | 6 +- app/services/render_partial_service.rb | 8 +- app/views/layouts/_navbar.html.haml | 76 ++++++++----------- app/views/layouts/application.html.haml | 2 +- ...office_dossierscontroller_index.html.haml} | 0 ...koffice_dossierscontroller_index.html.haml | 8 ++ 7 files changed, 57 insertions(+), 53 deletions(-) rename app/views/layouts/{_left_pannel.html.haml => left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml} (100%) create mode 100644 app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 582d42cbc..1649ad53b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,6 +3,7 @@ class ApplicationController < ActionController::Base # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception before_action :check_browser + before_action :load_navbar_left_pannel_partial_url def default_url_options return { protocol: 'https' } if Rails.env.staging? || Rails.env.production? @@ -12,4 +13,13 @@ class ApplicationController < ActionController::Base def check_browser BROWSER.value = Browser.new(request.user_agent) 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 diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index d9218683d..82b1395e5 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -1,10 +1,10 @@ class Backoffice::DossiersController < Backoffice::DossiersListController - before_action :set_layout_options respond_to :html, :xlsx, :ods, :csv def index super dossiers_list_facade.service.filter_procedure_reset! + @facade_data_view = dossiers_list_facade end def show @@ -131,10 +131,6 @@ class Backoffice::DossiersController < Backoffice::DossiersListController private - def set_layout_options - @navbar_options = ["dossiers/download_dossiers"] - end - def create_dossier_facade dossier_id @facade = DossierFacades.new dossier_id, current_gestionnaire.email diff --git a/app/services/render_partial_service.rb b/app/services/render_partial_service.rb index 98e2dd56b..b8c0b1f84 100644 --- a/app/services/render_partial_service.rb +++ b/app/services/render_partial_service.rb @@ -18,14 +18,14 @@ class RenderPartialService private def retrieve_navbar - 'layouts/navbars/_navbar_' + retrieve_name + 'layouts/navbars/navbar_' + retrieve_name end def retrieve_left_panel - 'layouts/left_panel/_leftpanel_' + retrieve_name + 'layouts/left_panels/left_panel_' + retrieve_name end def retrieve_name - controller.to_s.parameterize + '_' + method.to_s + controller.to_s.parameterize.underscore + '_' + method.to_s end -end \ No newline at end of file +end diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 81a3c3cc0..9ac64cc1d 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -11,52 +11,42 @@ = image_tag('marianne_small.png', class: 'logo') %div.col-lg-6#tps-title TPS - %div.col-lg-10.col-md-10.no-padding %div#navbar-body %div.row - %div.col-lg-7.col-md-7.main-info - Start UP region ile de france (8 dossiers en cours) - %div.col-lg-3.col-md-3.options - %div.row - - if @navbar_options - - @navbar_options.each do |option| - %div.col-lg-12.col-md-12 - = render partial: option - %div.col-lg-1.col-md-1.log-options - %span.fa.fa-sign-out + = render partial: @navbar_url - - if false - - if gestionnaire_signed_in? && user_signed_in? - %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} - =t('dynamics.backoffice.dossiers') - %a{href: users_dossiers_path, class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') - - elsif gestionnaire_signed_in? - %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') - - elsif user_signed_in? - %a{href: users_dossiers_path, class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') - - elsif administrateur_signed_in? - %a{href: admin_procedures_path, class: 'btn btn-md'} - =t('dynamics.admin.menu.title') +- if false + - if gestionnaire_signed_in? && user_signed_in? + %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} + =t('dynamics.backoffice.dossiers') + %a{href: users_dossiers_path, class: 'btn btn-md'} + =t('dynamics.users.mes_dossiers') + - elsif gestionnaire_signed_in? + %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} + =t('dynamics.users.mes_dossiers') + - elsif user_signed_in? + %a{href: users_dossiers_path, class: 'btn btn-md'} + =t('dynamics.users.mes_dossiers') + - elsif administrateur_signed_in? + %a{href: admin_procedures_path, class: 'btn btn-md'} + =t('dynamics.admin.menu.title') - -if user_signed_in? - = render partial: 'users/login_banner' - -elsif gestionnaire_signed_in? - = render partial: 'gestionnaires/login_banner' - -elsif administrateur_signed_in? - = render partial: 'administrateurs/login_banner' - -else - = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' - -unless Features.unified_login - = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' - = link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md' + -if user_signed_in? + = render partial: 'users/login_banner' + -elsif gestionnaire_signed_in? + = render partial: 'gestionnaires/login_banner' + -elsif administrateur_signed_in? + = render partial: 'administrateurs/login_banner' + -else + = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' + -unless Features.unified_login + = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' + = link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md' - - if Rails.env != 'production' - %div.staging_warning - %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune donnée présente sur cette plateforme ne pourra être transférée sur l'environnement final de production.", 'data-toggle' => 'tooltip'} - Vous vous trouvez actuellement sur la plateforme de test. - %div.badge.progress-bar-danger - ? + - if Rails.env != 'production' + %div.staging_warning + %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune donnée présente sur cette plateforme ne pourra être transférée sur l'environnement final de production.", 'data-toggle' => 'tooltip'} + Vous vous trouvez actuellement sur la plateforme de test. + %div.badge.progress-bar-danger + ? diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 5fde9f04e..ce5bd021e 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -26,7 +26,7 @@ = render partial: "layouts/navbar" %div.row.no-margin %div.col-lg-2.col-md-2#left-pannel - = render partial: 'layouts/left_pannel' + = render partial: @left_pannel_url %div.col-lg-10.col-md-10#main-container %div.row = render partial: 'layouts/flash_messages' diff --git a/app/views/layouts/_left_pannel.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml similarity index 100% rename from app/views/layouts/_left_pannel.html.haml rename to app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml new file mode 100644 index 000000000..8cf371c77 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml @@ -0,0 +1,8 @@ +%div.col-lg-7.col-md-7.main-info + Start UP region ile de france (8 dossiers en cours) +%div.col-lg-3.col-md-3.options + %div.row + %div.col-lg-12.col-md-12 + = render partial: "dossiers/download_dossiers" +%div.col-lg-1.col-md-1.log-options + %span.fa.fa-sign-out From 5b61d410304769073b6f2f06168d044be552454f Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 22 Nov 2016 16:10:01 +0100 Subject: [PATCH 034/182] layouts for dossiers show --- .../_left_panel_backoffice_dossierscontroller_show.html.haml | 2 ++ .../_navbar_backoffice_dossierscontroller_show.html.haml | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml create mode 100644 app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -0,0 +1,2 @@ + + diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -0,0 +1,2 @@ + + From 5ba1c85ca758094211033f7f50077731d75e4eb7 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 22 Nov 2016 16:30:35 +0100 Subject: [PATCH 035/182] Change spec according to layout rendering service --- app/controllers/backoffice/dossiers_controller.rb | 2 +- spec/services/render_partial_service_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 82b1395e5..0defef003 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -60,7 +60,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController NotificationMailer.dossier_validated(@facade.dossier).deliver_now! - render 'show' + redirect_to backoffice_dossier_path(id: @facade.dossier.id) end def receive diff --git a/spec/services/render_partial_service_spec.rb b/spec/services/render_partial_service_spec.rb index 736e46a7f..17d81697e 100644 --- a/spec/services/render_partial_service_spec.rb +++ b/spec/services/render_partial_service_spec.rb @@ -14,6 +14,6 @@ describe RenderPartialService do describe 'left_panel' do subject { service.left_panel } - it { is_expected.to eq 'layouts/left_panel/_leftpanel_'+controller.to_s.parameterize + '_' + method.to_s } + it { is_expected.to eq 'layouts/left_panel/_left_panel_'+controller.to_s.parameterize + '_' + method.to_s } end -end \ No newline at end of file +end From c5e0f0a780adc539b87503f8544d391a1fe4a064 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 22 Nov 2016 16:32:50 +0100 Subject: [PATCH 036/182] Extract css for sign_in sign_out from navbar --- app/views/layouts/_navbar.html.haml | 2 ++ .../_navbar_backoffice_dossierscontroller_index.html.haml | 2 -- .../_navbar_backoffice_dossierscontroller_show.html.haml | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 9ac64cc1d..5940bed53 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -15,6 +15,8 @@ %div#navbar-body %div.row = render partial: @navbar_url + %div.col-lg-1.col-md-1.log-options + %span.fa.fa-sign-out - if false - if gestionnaire_signed_in? && user_signed_in? diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml index 8cf371c77..04707d70b 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml @@ -4,5 +4,3 @@ %div.row %div.col-lg-12.col-md-12 = render partial: "dossiers/download_dossiers" -%div.col-lg-1.col-md-1.log-options - %span.fa.fa-sign-out diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index 139597f9c..9ce440c33 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -1,2 +1,5 @@ - - +%div.col-lg-7.col-md-7.main-info + Start UP region ile de france (8 dossiers en cours) +%div.col-lg-3.col-md-3.options + %div.row + %div.col-lg-12.col-md-12 From 750d81e70be05e7b3eef2cb6c21370af61088af1 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 22 Nov 2016 17:32:00 +0100 Subject: [PATCH 037/182] Working on css for dossier#show body --- app/assets/stylesheets/dossier_show.scss | 29 +++++++++++++++++++ app/views/backoffice/dossiers/show.html.haml | 18 ++++++++++-- .../dossiers/_tab_objects_dossier.html.haml | 2 +- 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 app/assets/stylesheets/dossier_show.scss diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss new file mode 100644 index 000000000..622d32976 --- /dev/null +++ b/app/assets/stylesheets/dossier_show.scss @@ -0,0 +1,29 @@ +#backoffice_dossier_show { + margin-top: 40px; + text-align:center; + .centered { + display:inline-block; + float:none; + box-shadow: 0 0 1px 0 rgba(0,0,0,0.5); + } + .header { + background-color: #003C92; + height: 30px; + .title { + + } + .action { + } + } + .body { + background-color: #FFFFFF; + height: 300px; + margin-bottom: 40px; + } + #message { + } + #infos { + } + #dossier { + } +} diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 223c49508..c770abd7c 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -1,4 +1,18 @@ -#backoffice_dossier_show +%div.col-lg-12.col-md-12#backoffice_dossier_show + + %div.row#messages + %div.col-lg-8.col-md-8.header.centered + %div.row + %div.col-lg-10.col-md-10.title + Message + %div.col-lg-2.col-md-2.action + Editer + %div.col-lg-8.col-md-8.body.centered + + %div.row#infos + + %div.row#dossier + %h1#dossier_id.text-info{ :style => 'text-align:right'} = t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s @@ -11,8 +25,6 @@ = render partial: '/dossiers/infos_entreprise' = render partial: '/dossiers/infos_dossier' - %br %div = render partial: 'dossiers/tab_objects_dossier' - %br \ No newline at end of file diff --git a/app/views/dossiers/_tab_objects_dossier.html.haml b/app/views/dossiers/_tab_objects_dossier.html.haml index 6e0c684fe..595d668d9 100644 --- a/app/views/dossiers/_tab_objects_dossier.html.haml +++ b/app/views/dossiers/_tab_objects_dossier.html.haml @@ -43,4 +43,4 @@ = form_for @facade.dossier, url: {controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id}, remote: true do = render partial: '/users/description/champs' %br - = submit_tag :Enregistrer, {class: 'btn btn-success', style: 'float: right'} \ No newline at end of file + = submit_tag :Enregistrer, {class: 'btn btn-success', style: 'float: right'} From de9753ae69dbfacd641c0804958be2cb30396c3a Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 23 Nov 2016 10:59:48 +0100 Subject: [PATCH 038/182] Need to anime accordeon, and check if width + margin % is the solution --- app/assets/stylesheets/dossier_show.scss | 38 +++++++++++++++----- app/views/backoffice/dossiers/show.html.haml | 32 +++++++++++------ 2 files changed, 51 insertions(+), 19 deletions(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 622d32976..6c31d27dc 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -1,24 +1,44 @@ #backoffice_dossier_show { + font-family: Arial; margin-top: 40px; - text-align:center; - .centered { - display:inline-block; - float:none; + .show-block { + width: 840px; + margin-left: 10%; 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; } .header { background-color: #003C92; - height: 30px; - .title { - + height: 40px; + color: #FFFFFF; + font-size: 18px; + font-weight: bold; + .title, .action, .count { + height: 100%; + line-height: 40px; + padding: 0px; } .action { + background-color: #E45B51; + text-align: center; + } + .count { + font-size: 16px; + text-align: center; } } .body { background-color: #FFFFFF; - height: 300px; - margin-bottom: 40px; + height: 100px; } #message { } diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index c770abd7c..126bc08cf 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -1,17 +1,29 @@ %div.col-lg-12.col-md-12#backoffice_dossier_show - %div.row#messages - %div.col-lg-8.col-md-8.header.centered - %div.row - %div.col-lg-10.col-md-10.title - Message - %div.col-lg-2.col-md-2.action - Editer - %div.col-lg-8.col-md-8.body.centered + %div.row.show-block#messages + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + MESSAGES + %div.col-lg-2.col-md-2.count + 2 messages + %div.body - %div.row#infos + %div.row.show-block#infos + %div.header + %div.col-lg-12.col-md-12.title + %div.carret-right + INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU + %div.body - %div.row#dossier + %div.row.show-block#dossier + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + CONSTRUCTION DU DOSSIER + %div.col-lg-2.col-md-2.action + EDITER + %div.body %h1#dossier_id.text-info{ :style => 'text-align:right'} = t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s From 966febca684405a9e3cbd12101fa7aad8988cc54 Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 23 Nov 2016 11:26:05 +0100 Subject: [PATCH 039/182] =?UTF-8?q?Centering=20show-block,=20need=20to=20m?= =?UTF-8?q?erge=20css=20into=20develop=C2=B0v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/assets/stylesheets/dossier_show.scss | 14 +++++++++++++- app/views/backoffice/dossiers/show.html.haml | 3 ++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 6c31d27dc..ac7974191 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -3,7 +3,9 @@ margin-top: 40px; .show-block { width: 840px; - margin-left: 10%; + min-width: 840px; + margin-left: auto; + margin-right: auto; box-shadow: 0 0 1px 0 rgba(0,0,0,0.5); margin-bottom: 40px; } @@ -16,7 +18,17 @@ border-left: 14px solid #FFFFFF; margin: 12px 12px 0 15px; } + .carret-down { + float: left; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 14px solid #FFFFFF; + margin: 12px 12px 0 15px; + } .header { + cursor: pointer; background-color: #003C92; height: 40px; color: #FFFFFF; diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 126bc08cf..d1b3eec95 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -3,7 +3,8 @@ %div.row.show-block#messages %div.header %div.col-lg-10.col-md-10.title - %div.carret-right + %div.carret-right.hidden + %div.carret-down MESSAGES %div.col-lg-2.col-md-2.count 2 messages From 37b5e3fc480d90d9a3eb68a42b94c46ad608b64f Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 23 Nov 2016 11:29:56 +0100 Subject: [PATCH 040/182] Up limit for export form 200 to 400 --- app/views/dossiers/_download_dossiers.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/dossiers/_download_dossiers.html.haml b/app/views/dossiers/_download_dossiers.html.haml index 6a10be813..42078deb9 100644 --- a/app/views/dossiers/_download_dossiers.html.haml +++ b/app/views/dossiers/_download_dossiers.html.haml @@ -1,7 +1,7 @@ %div.dropdown.pull-right#download-menu - - if @dossiers_list_facade.dossiers_to_display.count > 200 + - if @dossiers_list_facade.dossiers_to_display.count > 400 %button.btn.btn-error.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false, class: 'disabled'} - %span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 200, merci de bien vouloir appliquer des filtres.'} + %span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 400, merci de bien vouloir appliquer des filtres.'} = t('dynamics.backoffice.limit_excess_download_all_dossiers') - else %button.btn.btn-success.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } From d09a47ae234912f72c6038eb4b1df0b298cd7e7d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 23 Nov 2016 15:21:42 +0100 Subject: [PATCH 041/182] First iteration navbar tableau de bord --- Gemfile | 5 +-- Gemfile.lock | 34 ++++++++++++++ Guardfile | 44 +++++++++---------- app/assets/stylesheets/application.scss | 4 ++ app/assets/stylesheets/navbar.scss | 9 ++++ .../dossiers/procedure_controller.rb | 2 + .../backoffice/dossiers/_onglets.html.haml | 5 --- .../backoffice/dossiers/search.html.haml | 8 +++- .../dossiers/_download_dossiers.html.haml | 4 +- ...ssiers_procedurecontroller_index.html.haml | 2 + ...office_dossierscontroller_search.html.haml | 2 + ...ionnaires_sessionscontroller_new.html.haml | 0 ...ssiers_procedurecontroller_index.html.haml | 1 + ...koffice_dossierscontroller_index.html.haml | 5 +++ ...office_dossierscontroller_search.html.haml | 1 + ...ionnaires_sessionscontroller_new.html.haml | 0 config/locales/dynamics/fr.yml | 2 +- 17 files changed, 94 insertions(+), 34 deletions(-) create mode 100644 app/views/layouts/left_panels/_left_panel_backoffice_dossiers_procedurecontroller_index.html.haml create mode 100644 app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml create mode 100644 app/views/layouts/left_panels/_left_panel_gestionnaires_sessionscontroller_new.html.haml create mode 100644 app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml create mode 100644 app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml create mode 100644 app/views/layouts/navbars/_navbar_gestionnaires_sessionscontroller_new.html.haml diff --git a/Gemfile b/Gemfile index e758985da..8a3cb8fdf 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,5 @@ source 'https://rubygems.org' - # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '5.0.0.1' @@ -104,9 +103,9 @@ group :test do gem 'simplecov', require: false gem 'poltergeist' gem 'timecop' - # gem 'guard' + gem 'guard' # gem 'guard-rspec', require: false - # gem 'guard-livereload', '~> 2.4', require: false + gem 'guard-livereload', '~> 2.4', require: false gem 'vcr' gem 'rails-controller-testing' end diff --git a/Gemfile.lock b/Gemfile.lock index 629edc5c7..1e658fc90 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -139,7 +139,11 @@ GEM activemodel-serializers-xml (~> 1.0) activesupport (~> 5.0) request_store (~> 1.0) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) erubis (2.7.0) + eventmachine (1.2.0.1) excon (0.54.0) execjs (2.7.0) factory_girl (4.7.0) @@ -279,6 +283,21 @@ GEM formatador (0.2.5) globalid (0.3.7) activesupport (>= 4.1.0) + 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 haml-rails (0.9.0) @@ -297,6 +316,7 @@ GEM htmlentities (4.3.4) http-cookie (1.0.3) domain_name (~> 0.5) + http_parser.rb (0.6.0) httpclient (2.8.2.4) i18n (0.7.0) inflecto (0.0.2) @@ -329,6 +349,9 @@ GEM railties (>= 3.1) leaflet-rails (0.7.7) libv8 (3.16.14.15) + listen (3.0.8) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) logstash-event (1.2.02) logstasher (1.0.1) activerecord (>= 4.0) @@ -337,6 +360,7 @@ GEM request_store loofah (2.0.3) nokogiri (>= 1.5.9) + lumberjack (1.0.10) mail (2.6.4) mime-types (>= 1.16, < 4) mailjet (1.4.10) @@ -353,10 +377,14 @@ GEM minitest (5.9.1) multi_json (1.12.1) multipart-post (2.0.0) + nenv (0.3.0) netrc (0.11.0) nio4r (1.2.1) nokogiri (1.6.8.1) mini_portile2 (~> 2.1.0) + notiffany (0.1.0) + nenv (~> 0.1) + shellany (~> 0.0) open4 (1.3.4) openid_connect (0.12.0) activemodel @@ -431,6 +459,9 @@ GEM rainbow (2.1.0) raindrops (0.17.0) rake (11.3.0) + rb-fsevent (0.9.7) + rb-inotify (0.9.7) + ffi (>= 0.5.0) rbvmomi (1.9.4) builder (~> 3.2) json (>= 1.8) @@ -505,6 +536,7 @@ GEM sentry-raven (2.1.2) faraday (>= 0.7.6, < 0.10.x) sexp_processor (4.7.0) + shellany (0.0.1) shoulda-matchers (3.1.1) activesupport (>= 4.0.0) simplecov (0.12.0) @@ -618,6 +650,8 @@ DEPENDENCIES fog fog-openstack font-awesome-rails + guard + guard-livereload (~> 2.4) haml-rails hashie jbuilder (~> 2.0) diff --git a/Guardfile b/Guardfile index 55e984025..a937e06b8 100644 --- a/Guardfile +++ b/Guardfile @@ -43,7 +43,7 @@ guard 'livereload' do rails_view_exts = %w(erb haml slim) # file types LiveReload may optimize refresh for - compiled_exts = extensions.values.distinct + compiled_exts = extensions.values watch(%r{public/.+\.(#{compiled_exts * '|'})}) extensions.each do |ext, type| @@ -64,24 +64,24 @@ guard 'livereload' do watch(%r{config/locales/.+\.yml}) end -guard :rspec, cmd: 'bin/rspec' do - watch(%r{^spec/.+_spec\.rb$}) - watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } - watch('spec/spec_helper.rb') { "spec" } - - # Rails example - 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/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('config/routes.rb') { "spec/routing" } - watch('app/controllers/application_controller.rb') { "spec/controllers" } - watch('spec/rails_helper.rb') { "spec" } - - # Capybara features specs - watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" } - - # Turnip features and steps - watch(%r{^spec/acceptance/(.+)\.feature$}) - watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' } -end +# guard :rspec, cmd: 'bin/rspec' do +# watch(%r{^spec/.+_spec\.rb$}) +# watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } +# watch('spec/spec_helper.rb') { "spec" } +# +# # Rails example +# 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/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('config/routes.rb') { "spec/routing" } +# watch('app/controllers/application_controller.rb') { "spec/controllers" } +# watch('spec/rails_helper.rb') { "spec" } +# +# # Capybara features specs +# watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" } +# +# # Turnip features and steps +# watch(%r{^spec/acceptance/(.+)\.feature$}) +# watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' } +# end diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 97455d0a8..bcc04ced3 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -35,6 +35,10 @@ body { padding-top: 50px; } +form { + margin-bottom: 0.3em; +} + .wysihtml5-sandbox { resize: vertical; } diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index adf1c03e7..9b65cdd8c 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -124,3 +124,12 @@ font-weight: 700; z-index: 10; } + +.button_navbar{ + color: #666666; + cursor: pointer; +} +.button_navbar:hover{ + text-decoration: none; +} + diff --git a/app/controllers/backoffice/dossiers/procedure_controller.rb b/app/controllers/backoffice/dossiers/procedure_controller.rb index 74b092f43..7fba5046f 100644 --- a/app/controllers/backoffice/dossiers/procedure_controller.rb +++ b/app/controllers/backoffice/dossiers/procedure_controller.rb @@ -5,6 +5,8 @@ class Backoffice::Dossiers::ProcedureController < Backoffice::DossiersListContro dossiers_list_facade.service.filter_procedure! params[:id] + @facade_data_view = dossiers_list_facade + render 'backoffice/dossiers/index' rescue ActiveRecord::RecordNotFound flash[:alert] = "Cette procédure n'existe pas ou vous n'y avez pas accès." diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index b35281247..1eedb536e 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -63,9 +63,4 @@ %button.btn.btn-default{ id:'search_button' } %i.fa.fa-search - - if @dossiers_search.nil? - %li#pref_list - %a.btn#pref_list_dossier_open_action{href: '#'} - %i.fa.fa-columns - %br diff --git a/app/views/backoffice/dossiers/search.html.haml b/app/views/backoffice/dossiers/search.html.haml index a7e9fac0b..483f5b136 100644 --- a/app/views/backoffice/dossiers/search.html.haml +++ b/app/views/backoffice/dossiers/search.html.haml @@ -1,4 +1,10 @@ #backoffice_search - = render partial: 'onglets' + #pref_list_menu + = render partial: 'backoffice/dossiers/pref_list' + + %h1 + =t('dynamics.backoffice.title') + + = render partial: 'backoffice/dossiers/onglets' = smart_listing_render :dossiers \ No newline at end of file diff --git a/app/views/dossiers/_download_dossiers.html.haml b/app/views/dossiers/_download_dossiers.html.haml index 42078deb9..781a641ba 100644 --- a/app/views/dossiers/_download_dossiers.html.haml +++ b/app/views/dossiers/_download_dossiers.html.haml @@ -4,10 +4,10 @@ %span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 400, merci de bien vouloir appliquer des filtres.'} = t('dynamics.backoffice.limit_excess_download_all_dossiers') - else - %button.btn.btn-success.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } + %a.dropdown-toggle#dropdownDownloadMenu.button_navbar{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } %i.fa.fa-download = t('dynamics.backoffice.download_all_dossiers') - %span.caret + -#%span.caret %ul.dropdown-menu.dropdown-menu-right %li = link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm' } do diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossiers_procedurecontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossiers_procedurecontroller_index.html.haml new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossiers_procedurecontroller_index.html.haml @@ -0,0 +1,2 @@ + + diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml @@ -0,0 +1,2 @@ + + diff --git a/app/views/layouts/left_panels/_left_panel_gestionnaires_sessionscontroller_new.html.haml b/app/views/layouts/left_panels/_left_panel_gestionnaires_sessionscontroller_new.html.haml new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml new file mode 100644 index 000000000..4ac20c271 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml @@ -0,0 +1 @@ += render partial: 'layouts/navbars/navbar_backoffice_dossierscontroller_index' \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml index 04707d70b..0cd09c2a7 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml @@ -1,6 +1,11 @@ %div.col-lg-7.col-md-7.main-info Start UP region ile de france (8 dossiers en cours) %div.col-lg-3.col-md-3.options + %div.row + %div.col-lg-12.col-md-12 + %a.button_navbar#pref_list_dossier_open_action{href: '#', type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } + %i.fa.fa-pencil + Modifier le tableau %div.row %div.col-lg-12.col-md-12 = render partial: "dossiers/download_dossiers" diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml new file mode 100644 index 000000000..4ac20c271 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml @@ -0,0 +1 @@ += render partial: 'layouts/navbars/navbar_backoffice_dossierscontroller_index' \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_gestionnaires_sessionscontroller_new.html.haml b/app/views/layouts/navbars/_navbar_gestionnaires_sessionscontroller_new.html.haml new file mode 100644 index 000000000..e69de29bb diff --git a/config/locales/dynamics/fr.yml b/config/locales/dynamics/fr.yml index c85b36fab..3c614368f 100644 --- a/config/locales/dynamics/fr.yml +++ b/config/locales/dynamics/fr.yml @@ -13,7 +13,7 @@ fr: title: 'Gestion de colonnes affichées' description: 'Ce menu vous permet de choisir les différentes colonnes que vous souhaitez voir apparaître dans votre interface de suivi des dossiers.' download_all_dossiers: 'Télécharger mes dossiers' - limit_excess_download_all_dossiers: 'Limite de dossiers fixée à 200 pour le téléchargement' + limit_excess_download_all_dossiers: 'Limite de dossiers fixée à 400 pour le téléchargement' format_csv: 'Au format CSV' format_xlsx: 'Au format XLSX' format_ods: 'Au format ODS' From df794b9c8966085ea5351eab94516b51866088f9 Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 23 Nov 2016 16:17:29 +0100 Subject: [PATCH 042/182] Ok accordeon javascript upon header lines --- app/assets/javascripts/admin.js | 2 +- app/assets/javascripts/dossiers.js | 13 ++++++++++++- app/assets/stylesheets/dossier_show.scss | 3 ++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js index 571e93b65..6c2e63536 100644 --- a/app/assets/javascripts/admin.js +++ b/app/assets/javascripts/admin.js @@ -41,4 +41,4 @@ function on_change_type_de_champ_select (){ } }) -} \ No newline at end of file +} diff --git a/app/assets/javascripts/dossiers.js b/app/assets/javascripts/dossiers.js index e65a0da9e..554787852 100644 --- a/app/assets/javascripts/dossiers.js +++ b/app/assets/javascripts/dossiers.js @@ -1,5 +1,16 @@ $(document).on('page:load', the_terms); $(document).ready(the_terms); +$(document).on('page:load', init_collapse); +$(document).ready(init_collapse); + +function init_collapse() { + + $('.title').click(function() { + var section = $(this).parents().closest(".show-block").children(".body"); + return section.slideToggle(500, function () {}); + }); + +} function the_terms() { var the_terms = $("#dossier_autorisation_donnees"); @@ -41,4 +52,4 @@ function reset_form_siret(){ function toggle_etape_1(){ $('.row.etape.etape_1 .etapes_menu #logos').toggle(100); $('.row.etape.etape_1 .etapes_informations #description_procedure').toggle(100); -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index ac7974191..2768265ad 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -28,7 +28,6 @@ margin: 12px 12px 0 15px; } .header { - cursor: pointer; background-color: #003C92; height: 40px; color: #FFFFFF; @@ -42,6 +41,7 @@ .action { background-color: #E45B51; text-align: center; + float: right; } .count { font-size: 16px; @@ -51,6 +51,7 @@ .body { background-color: #FFFFFF; height: 100px; + display: none; } #message { } From 09fb3d463494f06cfa43bace947056dbadaced63 Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 23 Nov 2016 17:30:55 +0100 Subject: [PATCH 043/182] Pursuie over body animation with carets --- app/assets/javascripts/dossiers.js | 38 +++++++++++++++----- app/views/backoffice/dossiers/show.html.haml | 6 ++-- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/dossiers.js b/app/assets/javascripts/dossiers.js index 554787852..2389e2693 100644 --- a/app/assets/javascripts/dossiers.js +++ b/app/assets/javascripts/dossiers.js @@ -3,15 +3,6 @@ $(document).ready(the_terms); $(document).on('page:load', init_collapse); $(document).ready(init_collapse); -function init_collapse() { - - $('.title').click(function() { - var section = $(this).parents().closest(".show-block").children(".body"); - return section.slideToggle(500, function () {}); - }); - -} - function the_terms() { var the_terms = $("#dossier_autorisation_donnees"); @@ -53,3 +44,32 @@ function toggle_etape_1(){ $('.row.etape.etape_1 .etapes_menu #logos').toggle(100); $('.row.etape.etape_1 .etapes_informations #description_procedure').toggle(100); } + +function openning_block(block) { + var right = $(block).find(".carret-right"); + var down = $(block).find(".carret-down") + right.addClass("hidden"); + down.removeClass("hidden"); +} + +function closing_block(block) { + var right = $(block).find(".carret-right"); + var down = $(block).find(".carret-down") + right.removeClass("hidden"); + down.addClass("hidden"); +} + +function init_collapse() { + + $('.title').click(function() { + var block = $(this).parents().closest(".show-block"); + var section = block.children(".body"); + section.slideToggle(500, function () {}); + if ($(section).is("visible") === true) { + closing_block(block); + } + if ($(section).is("visible") === false) { + openning_block(block); + } + }); +} diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index d1b3eec95..a1f92a099 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -3,8 +3,8 @@ %div.row.show-block#messages %div.header %div.col-lg-10.col-md-10.title - %div.carret-right.hidden - %div.carret-down + %div.carret-right + %div.carret-down.hidden MESSAGES %div.col-lg-2.col-md-2.count 2 messages @@ -14,6 +14,7 @@ %div.header %div.col-lg-12.col-md-12.title %div.carret-right + %div.carret-down.hidden INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU %div.body @@ -21,6 +22,7 @@ %div.header %div.col-lg-10.col-md-10.title %div.carret-right + %div.carret-down.hidden CONSTRUCTION DU DOSSIER %div.col-lg-2.col-md-2.action EDITER From 58df3c3a759fb63552f1fc0b5581dd2239168aa8 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 24 Nov 2016 19:33:34 +0100 Subject: [PATCH 044/182] - Continue development Tableau de bord - Optimize toggle block --- app/assets/javascripts/default_data_block.js | 21 ++++++ app/assets/javascripts/dossiers.js | 47 ++---------- .../javascripts/dossiers_list_filter.js | 3 +- app/assets/stylesheets/backoffice.scss | 11 ++- .../stylesheets/default_data_block.scss | 60 +++++++++++++++ app/assets/stylesheets/dossier_show.scss | 55 +------------- app/assets/stylesheets/dossiers.scss | 15 ++++ app/assets/stylesheets/left_pannel.scss | 3 +- app/assets/stylesheets/search.scss | 4 + .../backoffice/dossiers_list_controller.rb | 27 +++++-- app/facades/dossiers_list_facades.rb | 18 +++++ app/models/gestionnaire.rb | 4 +- .../dossiers_list_gestionnaire_service.rb | 7 +- app/views/backoffice/dossiers/_list.html.haml | 3 +- .../backoffice/dossiers/_onglets.html.haml | 59 ++------------- app/views/backoffice/dossiers/index.html.haml | 45 ++++++++--- app/views/backoffice/dossiers/show.html.haml | 53 ++++++------- app/views/layouts/_navbar.html.haml | 1 + ...ssiers_procedurecontroller_index.html.haml | 3 +- ...koffice_dossierscontroller_index.html.haml | 28 +++++-- ...office_dossierscontroller_search.html.haml | 2 +- ...koffice_dossierscontroller_index.html.haml | 2 +- config/initializers/smart_listing.rb | 75 +++++++++++++++++++ 23 files changed, 345 insertions(+), 201 deletions(-) create mode 100644 app/assets/javascripts/default_data_block.js create mode 100644 app/assets/stylesheets/default_data_block.scss create mode 100644 app/assets/stylesheets/search.scss create mode 100644 config/initializers/smart_listing.rb diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js new file mode 100644 index 000000000..7291d2168 --- /dev/null +++ b/app/assets/javascripts/default_data_block.js @@ -0,0 +1,21 @@ +$(document).on('page:load', init_default_data_block); +$(document).ready(init_default_data_block); + +function init_default_data_block() { + $('.default_data_block .title').click(function () { + toggle_default_data_bloc(this, 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'); + + block.children(".body").slideToggle(duration); + + block.find(".carret-right").toggle(); + block.find(".carret-down").toggle(); + } +} diff --git a/app/assets/javascripts/dossiers.js b/app/assets/javascripts/dossiers.js index 2389e2693..adc57a499 100644 --- a/app/assets/javascripts/dossiers.js +++ b/app/assets/javascripts/dossiers.js @@ -1,21 +1,19 @@ $(document).on('page:load', the_terms); $(document).ready(the_terms); -$(document).on('page:load', init_collapse); -$(document).ready(init_collapse); function the_terms() { var the_terms = $("#dossier_autorisation_donnees"); - if(the_terms.size() == 0) + if (the_terms.size() == 0) return; - check_value (the_terms); + check_value(the_terms); 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")) { $("#etape_suivante").removeAttr("disabled"); } else { @@ -24,8 +22,8 @@ function the_terms() { } } -function error_form_siret(invalid_siret){ - setTimeout(function(){ +function error_form_siret(invalid_siret) { + setTimeout(function () { $("input[type='submit']").val('Erreur SIRET'); }, 10); @@ -35,41 +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'); $("#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_informations #description_procedure').toggle(100); } - -function openning_block(block) { - var right = $(block).find(".carret-right"); - var down = $(block).find(".carret-down") - right.addClass("hidden"); - down.removeClass("hidden"); -} - -function closing_block(block) { - var right = $(block).find(".carret-right"); - var down = $(block).find(".carret-down") - right.removeClass("hidden"); - down.addClass("hidden"); -} - -function init_collapse() { - - $('.title').click(function() { - var block = $(this).parents().closest(".show-block"); - var section = block.children(".body"); - section.slideToggle(500, function () {}); - if ($(section).is("visible") === true) { - closing_block(block); - } - if ($(section).is("visible") === false) { - openning_block(block); - } - }); -} diff --git a/app/assets/javascripts/dossiers_list_filter.js b/app/assets/javascripts/dossiers_list_filter.js index 3a50fc6a5..e7648faa3 100644 --- a/app/assets/javascripts/dossiers_list_filter.js +++ b/app/assets/javascripts/dossiers_list_filter.js @@ -1,7 +1,6 @@ $(document).on('page:load', filters_init); $(document).ready(filters_init); - function filters_init() { $('html').click(function(event) { var visible_filter = $('.filter_framed:visible') @@ -11,11 +10,13 @@ function filters_init() { } } }); + $(".filter").on('click', function (event) { filter_framed_show(event); filter_framed_close_all_excepted(framed_id(event)); event.stopPropagation(); }); + $(".erase-filter").on('click', function (event) { $(this).parent().find(".filter_input").val(""); }); diff --git a/app/assets/stylesheets/backoffice.scss b/app/assets/stylesheets/backoffice.scss index 708d74a97..f2c63e0d6 100644 --- a/app/assets/stylesheets/backoffice.scss +++ b/app/assets/stylesheets/backoffice.scss @@ -9,9 +9,18 @@ #backoffice_index, #backoffice_search { margin-left: 2rem; margin-right: 2rem; + + .default_data_block { + .show-block { + width: 100%; + } + .body { + height: auto; + } + } } -#pref_list{ +#pref_list { .dropdown-menu { padding: 10px; width: 500px; diff --git a/app/assets/stylesheets/default_data_block.scss b/app/assets/stylesheets/default_data_block.scss new file mode 100644 index 000000000..ea830624c --- /dev/null +++ b/app/assets/stylesheets/default_data_block.scss @@ -0,0 +1,60 @@ +.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, .action, .count { + cursor: pointer; + height: 100%; + line-height: 40px; + padding: 0px; + text-transform: uppercase; + } + .action { + background-color: #E45B51; + text-align: center; + float: right; + } + .count { + font-size: 16px; + text-align: center; + } + } + .body { + background-color: #FFFFFF; + height: 100px; + display: none; + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 2768265ad..4e5ad1d2d 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -1,58 +1,5 @@ #backoffice_dossier_show { - 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; - 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, .action, .count { - height: 100%; - line-height: 40px; - padding: 0px; - } - .action { - background-color: #E45B51; - text-align: center; - float: right; - } - .count { - font-size: 16px; - text-align: center; - } - } - .body { - background-color: #FFFFFF; - height: 100px; - display: none; - } + #message { } #infos { diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index 76ce739db..aec5c6d76 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -32,4 +32,19 @@ h5 span { #dossiers_list tr:hover{ background-color: #eeeeee; cursor: pointer; +} + +#procedure_list { + .procedure_list_element{ + margin-top: 15px; + margin-bottom: 15px; + + overflow: hidden; + max-height: 3.6em; + line-height: 1.8em; + } + + .procedure_list_element:hover{ + background-color: #aaaaaa; + } } \ No newline at end of file diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index ef6f0f3d5..c2f5a149d 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -7,10 +7,11 @@ left: 0; bottom: 0; color: white; + overflow: scroll; + #first-block { font-family: Arial; font-size: 16px; - font-weight: bold; line-height: 18px; } #action-block { diff --git a/app/assets/stylesheets/search.scss b/app/assets/stylesheets/search.scss new file mode 100644 index 000000000..4d6228243 --- /dev/null +++ b/app/assets/stylesheets/search.scss @@ -0,0 +1,4 @@ +#search_area{ + margin-top: 20px; + margin-bottom: 20px; +} \ No newline at end of file diff --git a/app/controllers/backoffice/dossiers_list_controller.rb b/app/controllers/backoffice/dossiers_list_controller.rb index 9a98d7e45..ff69a816c 100644 --- a/app/controllers/backoffice/dossiers_list_controller.rb +++ b/app/controllers/backoffice/dossiers_list_controller.rb @@ -30,17 +30,32 @@ class Backoffice::DossiersListController < ApplicationController def smartlisting_dossier dossiers_list=nil, liste='a_traiter' 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? params[:dossiers_smart_listing] = {page: dossiers_list_facade.service.default_page} end - @dossiers = smart_listing_create :dossiers, - dossiers_list, - partial: "backoffice/dossiers/list", - array: true, - default_sort: dossiers_list_facade.service.default_sort + smart_listing_create :new_dossiers, + 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", + array: true, + default_sort: dossiers_list_facade.service.default_sort end private diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 4f96caa4d..893453709 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -1,6 +1,8 @@ class DossiersListFacades include Rails.application.routes.url_helpers + attr_accessor :procedure, :current_devise_profil + def initialize current_devise_profil, liste, procedure = nil @current_devise_profil = current_devise_profil @liste = liste @@ -42,6 +44,10 @@ class DossiersListFacades preference_list_dossiers_filter.where(table: :champs).where.not(filter: '').size == 0 end + def all_state_class + (@liste == 'all_state' ? 'active' : '') + end + def brouillon_class (@liste == 'brouillon' ? 'active' : '') end @@ -98,6 +104,10 @@ class DossiersListFacades (@liste == 'search' ? 'active' : '') end + def all_state_total + service.all_state.count + end + def brouillon_total service.brouillon.count end @@ -154,6 +164,14 @@ class DossiersListFacades base_url 'brouillon' end + def all_state_url + base_url 'all_state' + end + + def suivi_url + base_url 'suivi' + end + def nouveaux_url base_url 'nouveaux' end diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 70c4d7ba7..9257079bc 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -8,7 +8,7 @@ class Gestionnaire < ActiveRecord::Base has_many :assign_to, dependent: :destroy 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 :preference_list_dossiers @@ -17,7 +17,7 @@ class Gestionnaire < ActiveRecord::Base after_update :sync_credentials, if: -> { Features.unified_login } def dossiers_follow - dossiers.joins(:follows).where("follows.gestionnaire_id = #{id}") + @dossiers_follow ||= dossiers.joins(:follows).where("follows.gestionnaire_id = #{id}") end def toggle_follow_dossier dossier_id diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index 725c38f3c..2c8f0241e 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -7,6 +7,7 @@ class DossiersListGestionnaireService def dossiers_to_display {'nouveaux' => nouveaux, + 'suivi' => suivi, 'a_traiter' => ouvert, 'fige' => fige, 'deposes' => deposes, @@ -16,13 +17,17 @@ class DossiersListGestionnaireService end 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 def all_state @all_state ||= filter_dossiers.all_state end + def suivi + @suivi ||= @current_devise_profil.dossiers_follow + end + def nouveaux @nouveaux ||= filter_dossiers.nouveaux end diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index 7b2f7dbd5..a0e85fc21 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -14,7 +14,7 @@ %th.col-md-1.col-lg-1.center Abonnés - unless smart_listing.empty? - - @dossiers.each do |dossier| + - smart_listing.collection.each do |dossier| %tr{id: "tr_dossier_#{dossier.id}", 'data-dossier_url' => backoffice_dossier_url(id: dossier.id)} - @dossiers_list_facade.preference_list_dossiers_filter.each_with_index do |preference, index| %td @@ -41,7 +41,6 @@ = dossier.total_follow = smart_listing.paginate -= smart_listing.pagination_per_page_links - if smart_listing.empty? %h4.center diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index 1eedb536e..301b35f11 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -1,13 +1,3 @@ -#filter_by_procedure{style:'margin-left: 2%'} - %b.text-info - = t('dynamics.backoffice.filter_procedure.title') - %select{onchange: 'location = this.value', style:'margin-top: 10px; margin-bottom: 10px', id: 'filter_by_procedure_select'} - %option{value: backoffice_dossiers_path} - = t('dynamics.backoffice.filter_procedure.first') - - @dossiers_list_facade.gestionnaire_procedures_name_and_id_list.each do |procedure| - %option{value: backoffice_dossiers_procedure_path(procedure[:id]), ('selected' if procedure[:id] == params[:id].to_i) => '' } - = truncate(procedure[:libelle], {length: 50}) - #onglets %ul.nav.nav-tabs -unless Features.opensimplif @@ -18,49 +8,16 @@ .badge.progress-bar-info =@dossiers_list_facade.nouveaux_total - %li{ class: (@dossiers_list_facade.a_traiter_class) } - %a{:href => "#{url_for @dossiers_list_facade.a_traiter_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ne sont pas encore déclarés complets.'} + %li{ class: (@dossiers_list_facade.suivi_class) } + %a{:href => "#{url_for @dossiers_list_facade.suivi_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ne sont pas encore déclarés complets.'} %h5.text-danger - ="Ouverts" + ="Suivis" .badge.progress-bar-danger - =@dossiers_list_facade.a_traiter_total + =@dossiers_list_facade.suivi_total - %li{ class: (@dossiers_list_facade.fige_class) } - %a{:href => "#{url_for @dossiers_list_facade.fige_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui sont déclarés complets et donc figés.'} + %li{ class: (@dossiers_list_facade.all_state_class) } + %a{:href => "#{url_for @dossiers_list_facade.all_state_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui sont déclarés complets et donc figés.'} %h5.text-default - ="Figés" + ="Tous" .badge.progress-bar-default - =@dossiers_list_facade.fige_total - - %li{ class: (@dossiers_list_facade.deposes_class) } - %a{:href => "#{url_for @dossiers_list_facade.deposes_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant examen.'} - %h5.text-purple - ="À réceptionner" - .badge.progress-bar-purple - =@dossiers_list_facade.deposes_total - - %li{ class: (@dossiers_list_facade.a_instruire_class) } - %a{:href => "#{url_for @dossiers_list_facade.a_instruire_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été notifiés comme bien réceptionnés et qui attendent un verdict final.'} - %h5.text-warning - = "À instruire" - .badge.progress-bar-warning - =@dossiers_list_facade.a_instruire_total - - %li{ class: (@dossiers_list_facade.termine_class) } - %a{:href => "#{url_for @dossiers_list_facade.termine_url}",'data-toggle' => :tooltip, title: 'Tous les dossiers qui ont été traité avec un statut "Validé", "Refusé" ou "Sans suite "'} - %h5.text-success - = "Terminé" - .badge.progress-bar-success - =@dossiers_list_facade.termine_total - - %ul.nav.nav-tabs.navbar-right{style:'border-bottom: none;'} - %li#search{ class: (@dossiers_list_facade.search_class) } - %a - = form_tag(backoffice_dossiers_search_url, method: :get) do - .input-group{style:'width: 300px'} - = text_field_tag('q', "#{@search_terms unless @search_terms.nil? }", id: 'q', placeholder: t('dynamics.backoffice.research.placeholder'), class:'form-control') - %span.input-group-btn - %button.btn.btn-default{ id:'search_button' } - %i.fa.fa-search - -%br + =@dossiers_list_facade.all_state_total diff --git a/app/views/backoffice/dossiers/index.html.haml b/app/views/backoffice/dossiers/index.html.haml index 51155183b..70cc0c4cf 100644 --- a/app/views/backoffice/dossiers/index.html.haml +++ b/app/views/backoffice/dossiers/index.html.haml @@ -2,14 +2,41 @@ #pref_list_menu = render partial: 'backoffice/dossiers/pref_list' - %h1 - =t('dynamics.backoffice.title') + .default_data_block + %div.row.show-block#new_dossiers + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + Nouveaux dossiers + %div.col-lg-2.col-md-2.count + =@facade_data_view.nouveaux_total + dossiers + %div.body + = smart_listing_render :new_dossiers - = render partial: 'backoffice/dossiers/onglets' + .default_data_block.default_visible + %div.row.show-block#follow_dossiers + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + Dossiers suivis + %div.col-lg-2.col-md-2.count + =@dossiers_list_facade.suivi_total + dossiers + %div.body + = smart_listing_render :follow_dossiers - = smart_listing_render :dossiers - - %br - %br - - unless Features.opensimplif - = render partial: 'backoffice/dossiers/state_description', locals: {dossiers_list_facade: @dossiers_list_facade} + .default_data_block + %div.row.show-block#all_dossiers + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + Tous les dossiers + %div.col-lg-2.col-md-2.count + =@dossiers_list_facade.all_state_total + dossiers + %div.body + = smart_listing_render :all_state_dossiers diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index a1f92a099..be50f3318 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -1,32 +1,35 @@ %div.col-lg-12.col-md-12#backoffice_dossier_show - %div.row.show-block#messages - %div.header - %div.col-lg-10.col-md-10.title - %div.carret-right - %div.carret-down.hidden - MESSAGES - %div.col-lg-2.col-md-2.count - 2 messages - %div.body + .default_data_block + .row.show-block#messages + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + MESSAGES + %div.col-lg-2.col-md-2.count + 2 messages + %div.body - %div.row.show-block#infos - %div.header - %div.col-lg-12.col-md-12.title - %div.carret-right - %div.carret-down.hidden - INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU - %div.body + .default_data_block + %div.row.show-block#infos + %div.header + %div.col-lg-12.col-md-12.title + %div.carret-right + %div.carret-down + INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU + %div.body - %div.row.show-block#dossier - %div.header - %div.col-lg-10.col-md-10.title - %div.carret-right - %div.carret-down.hidden - CONSTRUCTION DU DOSSIER - %div.col-lg-2.col-md-2.action - EDITER - %div.body + .default_data_block + %div.row.show-block#dossier + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + CONSTRUCTION DU DOSSIER + %div.col-lg-2.col-md-2.action + EDITER + %div.body %h1#dossier_id.text-info{ :style => 'text-align:right'} = t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 5940bed53..77d23d19a 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -11,6 +11,7 @@ = image_tag('marianne_small.png', class: 'logo') %div.col-lg-6#tps-title TPS + %div.col-lg-10.col-md-10.no-padding %div#navbar-body %div.row diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossiers_procedurecontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossiers_procedurecontroller_index.html.haml index 139597f9c..b4114cab1 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossiers_procedurecontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossiers_procedurecontroller_index.html.haml @@ -1,2 +1 @@ - - += render partial: 'layouts/left_panels/left_panel_backoffice_dossierscontroller_index' diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index f18278714..0772f4b06 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -1,9 +1,27 @@ %div#first-block - %div.row - %div.col-lg-12.col-md-12 - 112 dossiers en cours - %div.col-lg-12.col-md-12 - > 2 nouveaux dossiers + %div + =@facade_data_view.current_devise_profil.dossiers.where(archived: false).count + DOSSIERS EN COURS + %div + =@facade_data_view.current_devise_profil.dossiers.where(state: :initiated, archived: false).count + NOUVEAUX DOSSIERS + %div#action-block + #search_area + = form_tag(backoffice_dossiers_search_url, method: :get) do + .input-group + = text_field_tag('q', "#{@search_terms unless @search_terms.nil? }", id: 'q', placeholder: t('dynamics.backoffice.research.placeholder'), class:'form-control') + %span.input-group-btn + %button.btn.btn-default{ id:'search_button' } + %i.fa.fa-search + %div#menu-block + %div#infos-block + #procedure_list + %div.procedure_list_element + =link_to "Tous les dossiers", backoffice_dossiers_path + - @dossiers_list_facade.gestionnaire_procedures_name_and_id_list.each do |procedure| + %div.procedure_list_element + =link_to truncate(procedure[:libelle], {length: 50}), backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} + diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml index 139597f9c..7d73865db 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml @@ -1,2 +1,2 @@ - += render partial: 'layouts/left_panels/left_panel_backoffice_dossierscontroller_index' diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml index 0cd09c2a7..2059405e7 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml @@ -1,5 +1,5 @@ %div.col-lg-7.col-md-7.main-info - Start UP region ile de france (8 dossiers en cours) + =@facade_data_view.procedure_id.nil? ? "Tous les dossiers" : truncate(@facade_data_view.procedure.libelle, {length: 50}) %div.col-lg-3.col-md-3.options %div.row %div.col-lg-12.col-md-12 diff --git a/config/initializers/smart_listing.rb b/config/initializers/smart_listing.rb new file mode 100644 index 000000000..7e66d56b1 --- /dev/null +++ b/config/initializers/smart_listing.rb @@ -0,0 +1,75 @@ +SmartListing.configure do |config| + config.global_options({ + #:param_names => { # param names + #:page => :page, + #:per_page => :per_page, + #:sort => :sort, + #}, + #:array => false, # controls whether smart list should be using arrays or AR collections + #:max_count => nil, # limit number of rows + #:unlimited_per_page => false, # allow infinite page size + #:paginate => true, # allow pagination + #:memorize_per_page => false, # save per page settings in the cookie + :page_sizes => [7], # set available page sizes array + #:kaminari_options => {:theme => "smart_listing"}, # Kaminari's paginate helper options + }) + + config.constants :classes, { + #:main => "smart-listing", + #:editable => "editable", + #:content => "content", + #:loading => "loading", + #:status => "smart-listing-status", + #:item_actions => "actions", + #:new_item_placeholder => "new-item-placeholder", + #:new_item_action => "new-item-action", + #:new_item_button => "btn", + #:hidden => "hidden", + #:autoselect => "autoselect", + #:callback => "callback", + #:pagination_per_page => "pagination-per-page text-center", + #:pagination_count => "count", + #:inline_editing => "info", + #:no_records => "no-records", + #:limit => "smart-listing-limit", + #:limit_alert => "smart-listing-limit-alert", + #:controls => "smart-listing-controls", + #:controls_reset => "reset", + #:filtering => "filter", + #:filtering_search => "glyphicon-search", + #:filtering_cancel => "glyphicon-remove", + #:filtering_disabled => "disabled", + #:sortable => "sortable", + #:icon_new => "glyphicon glyphicon-plus", + #:icon_edit => "glyphicon glyphicon-pencil", + #:icon_trash => "glyphicon glyphicon-trash", + #:icon_inactive => "glyphicon glyphicon-circle", + #:icon_show => "glyphicon glyphicon-share-alt", + #:icon_sort_none => "glyphicon glyphicon-resize-vertical", + #:icon_sort_up => "glyphicon glyphicon-chevron-up", + #:icon_sort_down => "glyphicon glyphicon-chevron-down", + } + + config.constants :data_attributes, { + #:main => "smart-listing", + #:confirmation => "confirmation", + #:id => "id", + #:href => "href", + #:callback_href => "callback-href", + #:max_count => "max-count", + #:inline_edit_backup => "smart-listing-edit-backup", + #:params => "params", + #:observed => "observed", + #:href => "href", + #:autoshow => "autoshow", + #:popover => "slpopover", + } + + config.constants :selectors, { + #:item_action_destroy => "a.destroy", + #:edit_cancel => "button.cancel", + #:row => "tr", + #:head => "thead", + #:filtering_icon => "i" + } +end From 1c1942063b2f66c0ad856f5fdfd85e79ff0cc966 Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 25 Nov 2016 10:11:11 +0100 Subject: [PATCH 045/182] Counting messages --- app/views/backoffice/dossiers/show.html.haml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index be50f3318..9acd7d4e0 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -8,7 +8,8 @@ %div.carret-down MESSAGES %div.col-lg-2.col-md-2.count - 2 messages + - message_count = @facade.commentaires.count + = (message_count == 1) ? "1 message" : "#{message_count} messages" %div.body .default_data_block From e6a01e92126aa1a723b078fb15c58e4dc63686c2 Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 25 Nov 2016 11:08:58 +0100 Subject: [PATCH 046/182] Got last message showed upon messages, adding condition to toggle out this last message on lick --- app/assets/javascripts/default_data_block.js | 3 ++ .../stylesheets/default_data_block.scss | 2 +- app/assets/stylesheets/dossier_show.scss | 29 ++++++++++++++++++- app/models/commentaire.rb | 4 +++ app/views/backoffice/dossiers/show.html.haml | 13 +++++++++ 5 files changed, 49 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 7291d2168..e103f2c44 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -12,6 +12,9 @@ function init_default_data_block() { function toggle_default_data_bloc(element, duration){ var block = $(element).parents('.show-block'); + if (block.attr("id") == "messages") { + block.children(".last-message").toggle(); + } block.children(".body").slideToggle(duration); diff --git a/app/assets/stylesheets/default_data_block.scss b/app/assets/stylesheets/default_data_block.scss index ea830624c..33b5b3029 100644 --- a/app/assets/stylesheets/default_data_block.scss +++ b/app/assets/stylesheets/default_data_block.scss @@ -57,4 +57,4 @@ height: 100px; display: none; } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 4e5ad1d2d..20b29c1f2 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -1,6 +1,33 @@ #backoffice_dossier_show { - #message { + #messages { + .last-message { + display: block; + background-color: #FFFFFF; + padding: 20px; + .comment-header { + font-family: Arial; + font-size: 14px; + font-weight: bold; + line-height: 16px; + color: #000000; + margin-bottom: 10px; + } + .content { + margin-bottom: 20px; + } + .new-action { + background-color: #E45B51; + text-align: center; + color: #FFFFFF; + width: 253px; + height: 40px; + line-height: 40px; + font-family: Arial; + font-size: 16px; + font-weight: bold; + } + } } #infos { } diff --git a/app/models/commentaire.rb b/app/models/commentaire.rb index e59138ccb..463285482 100644 --- a/app/models/commentaire.rb +++ b/app/models/commentaire.rb @@ -3,4 +3,8 @@ class Commentaire < ActiveRecord::Base belongs_to :champ belongs_to :piece_justificative + + def header + "#{email}, " + created_at.localtime.strftime('%d %b %Y %H:%M') + end end diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 9acd7d4e0..22db2c1b7 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -11,6 +11,18 @@ - message_count = @facade.commentaires.count = (message_count == 1) ? "1 message" : "#{message_count} messages" %div.body + - if last_comment = @facade.commentaires.first + %div.last-message + %div.row + %div.col-lg-12.col-md-12.comment-header + = "DERNIER MESSAGE (#{last_comment.header})" + %div.row + %div.col-lg-12.col-md-12.content + = last_comment.body.html_safe + %div.row + %div.col-lg-12.col-md-12 + %div.new-action + ENVOYER UN MESSAGE .default_data_block %div.row.show-block#infos @@ -32,6 +44,7 @@ EDITER %div.body +- if false %h1#dossier_id.text-info{ :style => 'text-align:right'} = t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s From cab4e257cd6204c2fa14e28fbb0b4e9e2a04c82a Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 25 Nov 2016 11:25:33 +0100 Subject: [PATCH 047/182] Add new-action button to toggle default_block for messages --- app/assets/javascripts/default_data_block.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index e103f2c44..a2ee219dd 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -6,6 +6,11 @@ function init_default_data_block() { 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); }); From 87a8b68b36ab56456a649df66cf323d7375a21be Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 25 Nov 2016 12:20:08 +0100 Subject: [PATCH 048/182] Finished basic commentaire/messages block for dossiers show --- app/assets/javascripts/default_data_block.js | 2 +- .../stylesheets/default_data_block.scss | 1 - app/assets/stylesheets/dossier_show.scss | 33 ++++++++++++++++--- .../commentaires/_commentaire.html.haml | 7 ++++ app/views/backoffice/dossiers/show.html.haml | 26 +++++++++++---- .../_commentaires_flux.html.haml | 6 ---- 6 files changed, 55 insertions(+), 20 deletions(-) create mode 100644 app/views/backoffice/commentaires/_commentaire.html.haml diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index a2ee219dd..6f0ecc413 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -18,7 +18,7 @@ function init_default_data_block() { function toggle_default_data_bloc(element, duration){ var block = $(element).parents('.show-block'); if (block.attr("id") == "messages") { - block.children(".last-message").toggle(); + block.children(".last-commentaire").toggle(); } block.children(".body").slideToggle(duration); diff --git a/app/assets/stylesheets/default_data_block.scss b/app/assets/stylesheets/default_data_block.scss index 33b5b3029..4152a3cfb 100644 --- a/app/assets/stylesheets/default_data_block.scss +++ b/app/assets/stylesheets/default_data_block.scss @@ -54,7 +54,6 @@ } .body { background-color: #FFFFFF; - height: 100px; display: none; } } diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 20b29c1f2..a698de44b 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -1,10 +1,15 @@ #backoffice_dossier_show { #messages { - .last-message { + .last-commentaire { display: block; background-color: #FFFFFF; - padding: 20px; + .content, .new-action { + margin-bottom: 20px; + } + } + .last-commentaire, .commentaire { + padding: 20px 0 0 20px; .comment-header { font-family: Arial; font-size: 14px; @@ -13,12 +18,10 @@ color: #000000; margin-bottom: 10px; } - .content { - margin-bottom: 20px; - } .new-action { background-color: #E45B51; text-align: center; + cursor: pointer; color: #FFFFFF; width: 253px; height: 40px; @@ -28,6 +31,26 @@ font-weight: bold; } } + .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 { } diff --git a/app/views/backoffice/commentaires/_commentaire.html.haml b/app/views/backoffice/commentaires/_commentaire.html.haml new file mode 100644 index 000000000..2fc4d2d17 --- /dev/null +++ b/app/views/backoffice/commentaires/_commentaire.html.haml @@ -0,0 +1,7 @@ +%div.commentaire + .row + %div.col-lg-12.col-md-12.comment-header + = commentaire.header + .row + %div.col-lg-12.col-md-12.content + = commentaire.body.html_safe diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 22db2c1b7..bf738eb4a 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -4,23 +4,35 @@ .row.show-block#messages %div.header %div.col-lg-10.col-md-10.title - %div.carret-right - %div.carret-down + .carret-right + .carret-down MESSAGES %div.col-lg-2.col-md-2.count - message_count = @facade.commentaires.count = (message_count == 1) ? "1 message" : "#{message_count} messages" %div.body + - @facade.commentaires.object.sort.each do |commentaire| + = render partial: commentaire + .row + .col-lg-12.col-md-12 + %div.split-hr + .row + %div.col-lg-12.col-md-12#new-commentaire + = form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id, champ_id: @facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do + %textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"} + %h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier + = file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px' + %input.form-control.btn.btn-send{ type: 'submit', value: 'ENVOYER' } - if last_comment = @facade.commentaires.first - %div.last-message - %div.row + %div.last-commentaire + .row %div.col-lg-12.col-md-12.comment-header = "DERNIER MESSAGE (#{last_comment.header})" - %div.row + .row %div.col-lg-12.col-md-12.content = last_comment.body.html_safe - %div.row - %div.col-lg-12.col-md-12 + .row + .col-lg-12.col-md-12 %div.new-action ENVOYER UN MESSAGE diff --git a/app/views/users/recapitulatif/_commentaires_flux.html.haml b/app/views/users/recapitulatif/_commentaires_flux.html.haml index b237fc482..69d990f36 100644 --- a/app/views/users/recapitulatif/_commentaires_flux.html.haml +++ b/app/views/users/recapitulatif/_commentaires_flux.html.haml @@ -1,10 +1,4 @@ .content{id: ('commentaires_flux' + (@facade.champ_id.nil? ? '' : "_#{@facade.champ_id}")),style:'width:100%;'} - %div#commentaire_new{style: 'width:80%; margin-left:auto; margin-right:auto; margin-bottom:7%'} - = form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id, champ_id: @facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do - %textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"} - %h4.text-primary{style: 'margin-top: 0px'} Ajout un fichier - = file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px' - %input.form-control.btn.btn-success{:type => 'submit', :value => 'Poster', style: 'float:right'} -@facade.commentaires.each do |com| %span.text-info#email_contact{style: 'font-weight:bold'} From d974040540322a035df158a38b4b16fa805e00b9 Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 25 Nov 2016 12:52:18 +0100 Subject: [PATCH 049/182] Starting left_pannel and navbar for dossiers show --- app/assets/stylesheets/left_pannel.scss | 15 +++++++++++++++ app/assets/stylesheets/navbar.scss | 1 + ...l_backoffice_dossierscontroller_show.html.haml | 9 +++++++++ ...r_backoffice_dossierscontroller_show.html.haml | 3 ++- 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index c2f5a149d..69a349c04 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -13,8 +13,23 @@ font-family: Arial; font-size: 16px; line-height: 18px; + .infos { + margin-bottom: 20px; + } } #action-block { + .action { + background-color: #E45B51; + text-align: center; + cursor: pointer; + color: #FFFFFF; + margin: 0 10px 0 0; + height: 40px; + line-height: 40px; + font-family: Arial; + font-size: 16px; + font-weight: bold; + } } #menu-block { } diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 9b65cdd8c..e24db3812 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -42,6 +42,7 @@ font-size: 18px; font-weight: bold; line-height: 58px; + height: 58px; color: #000000; } .options { diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index 139597f9c..7c2844f5b 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -1,2 +1,11 @@ +%div#first-block + %div.infos + %div #{@facade.dossier.nom_projet} + %div Dossier n°#{@facade.dossier.id} +%div#action-block + %div.action FIGER LE DOSSIER +%div#menu-block + +%div#infos-block diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index 9ce440c33..51c3c5bea 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -1,5 +1,6 @@ %div.col-lg-7.col-md-7.main-info - Start UP region ile de france (8 dossiers en cours) + %span{ 'data-toggle' => :tooltip, "data-placement" => :bottom, title: @facade.dossier.procedure.libelle } + = @facade.dossier.procedure.libelle.truncate(60) %div.col-lg-3.col-md-3.options %div.row %div.col-lg-12.col-md-12 From f9784556422a08248b46f37691cd2388f2445d8f Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 25 Nov 2016 15:01:03 +0100 Subject: [PATCH 050/182] Add commentaire joined files (pieces justificatives) direct into messages block --- app/assets/stylesheets/dossier_show.scss | 10 ++++++++++ .../backoffice/commentaires/_commentaire.html.haml | 7 +++++++ app/views/backoffice/dossiers/show.html.haml | 1 - 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index a698de44b..f4ecf7e29 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -30,6 +30,16 @@ font-size: 16px; font-weight: bold; } + .file { + padding-right: 70px; + text-align: center; + .link { + span { + width: 100%; + font-size: 40px; + } + } + } } .split-hr { margin: 20px 20px 0 20px; diff --git a/app/views/backoffice/commentaires/_commentaire.html.haml b/app/views/backoffice/commentaires/_commentaire.html.haml index 2fc4d2d17..314194c82 100644 --- a/app/views/backoffice/commentaires/_commentaire.html.haml +++ b/app/views/backoffice/commentaires/_commentaire.html.haml @@ -5,3 +5,10 @@ .row %div.col-lg-12.col-md-12.content = commentaire.body.html_safe + - if file = commentaire.piece_justificative + .row + %div.col-lg-12.col-md-12.file + = link_to file.content_url, class: 'link', target: '_blank' do + %span.fa.fa-file + %div + = file.original_filename diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index bf738eb4a..16d2e9d01 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -56,7 +56,6 @@ EDITER %div.body -- if false %h1#dossier_id.text-info{ :style => 'text-align:right'} = t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s From ecb551e18d9963ad9d721c2309a9c0b36f67f84b Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 25 Nov 2016 15:29:09 +0100 Subject: [PATCH 051/182] Prevent further clicks on submit buttons --- app/assets/javascripts/action_btn_rules.js | 13 +++++++++++++ app/assets/stylesheets/dossier_show.scss | 1 + app/views/backoffice/dossiers/show.html.haml | 7 +++++++ 3 files changed, 21 insertions(+) create mode 100644 app/assets/javascripts/action_btn_rules.js diff --git a/app/assets/javascripts/action_btn_rules.js b/app/assets/javascripts/action_btn_rules.js new file mode 100644 index 000000000..7202d53b6 --- /dev/null +++ b/app/assets/javascripts/action_btn_rules.js @@ -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(); + } +} diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index f4ecf7e29..dc2f76f1f 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -33,6 +33,7 @@ .file { padding-right: 70px; text-align: center; + margin-bottom: 20px; .link { span { width: 100%; diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 16d2e9d01..8b67c2bf4 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -31,6 +31,13 @@ .row %div.col-lg-12.col-md-12.content = last_comment.body.html_safe + - if file = last_comment.piece_justificative + .row + %div.col-lg-12.col-md-12.file + = link_to file.content_url, class: 'link', target: '_blank' do + %span.fa.fa-file + %div + = file.original_filename .row .col-lg-12.col-md-12 %div.new-action From 74809b33ce8e22af0aeaaf0daec56bc21560dcb7 Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 25 Nov 2016 16:25:54 +0100 Subject: [PATCH 052/182] Keep working on dossier Show, need actions to be in navbar, adjust flash messages too, then construct dossier --- app/assets/stylesheets/navbar.scss | 22 +++++++++++++-- .../dossiers/_follow_action.html.haml | 4 --- app/views/backoffice/dossiers/show.html.haml | 27 +++++++------------ ...ckoffice_dossierscontroller_show.html.haml | 3 ++- ...ckoffice_dossierscontroller_show.html.haml | 7 +++++ 5 files changed, 39 insertions(+), 24 deletions(-) delete mode 100644 app/views/backoffice/dossiers/_follow_action.html.haml diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index e24db3812..454ed1dd1 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -126,11 +126,29 @@ z-index: 10; } -.button_navbar{ +.button_navbar { color: #666666; cursor: pointer; } -.button_navbar:hover{ + +.button-navbar-action { + background-color: #E4594F; + color: #FFFFFF; + cursor: pointer; + display: block; + width: 140px; + text-align: center; + padding: 2px; + .fa { + font-size: 20px; + margin-right: 10px; + } +} +.button-navbar-action:hover { + color: #F2F6FA; +} + +.button_navbar:hover, .button-navbar-action:hover { text-decoration: none; } diff --git a/app/views/backoffice/dossiers/_follow_action.html.haml b/app/views/backoffice/dossiers/_follow_action.html.haml deleted file mode 100644 index c695c9942..000000000 --- a/app/views/backoffice/dossiers/_follow_action.html.haml +++ /dev/null @@ -1,4 +0,0 @@ -- if current_gestionnaire.follow?(@facade.dossier.id) - = link_to('Se désabonner'.html_safe, backoffice_dossier_follow_path(dossier_id: @facade.dossier.id), 'data-method' => :put, class: 'btn btn-md btn-danger', id: "suivre_dossier_#{@facade.dossier.id}") --else - = link_to("S'abonner", backoffice_dossier_follow_path(dossier_id: @facade.dossier.id), 'data-method' => :put, class: 'btn btn-md btn-primary', id: "suivre_dossier_#{@facade.dossier.id}") diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 8b67c2bf4..5f00b910e 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -43,14 +43,16 @@ %div.new-action ENVOYER UN MESSAGE - .default_data_block - %div.row.show-block#infos - %div.header - %div.col-lg-12.col-md-12.title - %div.carret-right - %div.carret-down - INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU - %div.body + - unless @facade.entreprise.nil? + .default_data_block + %div.row.show-block#infos + %div.header + %div.col-lg-12.col-md-12.title + %div.carret-right + %div.carret-down + INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU + %div.body + = render partial: '/dossiers/infos_entreprise' .default_data_block %div.row.show-block#dossier @@ -63,16 +65,7 @@ EDITER %div.body - %h1#dossier_id.text-info{ :style => 'text-align:right'} - = t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s - %div{:style => 'text-align:right'} - %h3{:class => 'text-success'} - = @facade.dossier.display_state - - = render partial: 'follow_action' - - unless @facade.entreprise.nil? - = render partial: '/dossiers/infos_entreprise' = render partial: '/dossiers/infos_dossier' diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index 7c2844f5b..3002dfdf0 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -1,7 +1,8 @@ %div#first-block %div.infos %div #{@facade.dossier.nom_projet} - %div Dossier n°#{@facade.dossier.id} + %div= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s + %div= @facade.dossier.display_state %div#action-block %div.action FIGER LE DOSSIER diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index 51c3c5bea..0a95bf5b2 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -4,3 +4,10 @@ %div.col-lg-3.col-md-3.options %div.row %div.col-lg-12.col-md-12 + - if current_gestionnaire.follow?(@facade.dossier.id) + = link_to backoffice_dossier_follow_path(dossier_id: @facade.dossier.id), "data-method" => :put, class: "button-navbar-action",id: "suivre_dossier_#{@facade.dossier.id}" do + %i.fa.fa-user-times + Ne plus suivre + -else + %i.fa.fa-user-plus + = link_to("S'abonner", backoffice_dossier_follow_path(dossier_id: @facade.dossier.id), 'data-method' => :put, class: 'btn btn-md btn-primary', id: "suivre_dossier_#{@facade.dossier.id}") From f4b483976ca44ed8a5e46ec3e2324591d6e8c08a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 28 Nov 2016 10:15:11 +0100 Subject: [PATCH 053/182] Add default navbar and left panel --- app/views/layouts/_navbar.html.haml | 5 ++++- app/views/layouts/application.html.haml | 5 ++++- app/views/layouts/left_panels/_left_panel_default.html.haml | 2 ++ ...left_panel_gestionnaires_sessionscontroller_new.html.haml | 0 app/views/layouts/navbars/_navbar_default.html.haml | 2 ++ .../_navbar_gestionnaires_sessionscontroller_new.html.haml | 0 6 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 app/views/layouts/left_panels/_left_panel_default.html.haml delete mode 100644 app/views/layouts/left_panels/_left_panel_gestionnaires_sessionscontroller_new.html.haml create mode 100644 app/views/layouts/navbars/_navbar_default.html.haml delete mode 100644 app/views/layouts/navbars/_navbar_gestionnaires_sessionscontroller_new.html.haml diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 77d23d19a..3c631cdb7 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -15,7 +15,10 @@ %div.col-lg-10.col-md-10.no-padding %div#navbar-body %div.row - = render partial: @navbar_url + -begin + = render partial: @navbar_url + -rescue + = render partial: 'layouts/navbars/navbar_default' %div.col-lg-1.col-md-1.log-options %span.fa.fa-sign-out diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index ce5bd021e..0c686ed23 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -26,7 +26,10 @@ = render partial: "layouts/navbar" %div.row.no-margin %div.col-lg-2.col-md-2#left-pannel - = render partial: @left_pannel_url + - begin + = render partial: @left_pannel_url + -rescue + = render partial: 'layouts/left_panels/left_panel_default' %div.col-lg-10.col-md-10#main-container %div.row = render partial: 'layouts/flash_messages' diff --git a/app/views/layouts/left_panels/_left_panel_default.html.haml b/app/views/layouts/left_panels/_left_panel_default.html.haml new file mode 100644 index 000000000..a8cd3d0b8 --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_default.html.haml @@ -0,0 +1,2 @@ +%div + Default Left Panel \ No newline at end of file diff --git a/app/views/layouts/left_panels/_left_panel_gestionnaires_sessionscontroller_new.html.haml b/app/views/layouts/left_panels/_left_panel_gestionnaires_sessionscontroller_new.html.haml deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/views/layouts/navbars/_navbar_default.html.haml b/app/views/layouts/navbars/_navbar_default.html.haml new file mode 100644 index 000000000..fb6ec30cc --- /dev/null +++ b/app/views/layouts/navbars/_navbar_default.html.haml @@ -0,0 +1,2 @@ +.col-lg-10.col-md-10 + Default navbar \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_gestionnaires_sessionscontroller_new.html.haml b/app/views/layouts/navbars/_navbar_gestionnaires_sessionscontroller_new.html.haml deleted file mode 100644 index e69de29bb..000000000 From 178f0f88c13126a0108abd1c60bd2ad71fd5be05 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 28 Nov 2016 14:38:33 +0100 Subject: [PATCH 054/182] =?UTF-8?q?-=20Delete=20page=20=C2=AB=20Tous=20les?= =?UTF-8?q?=20dossiers=20=C2=BB=20-=20Fix=20follow=20tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/backoffice/dossiers_controller.rb | 4 ++-- app/services/dossiers_list_gestionnaire_service.rb | 5 +++-- ..._left_panel_backoffice_dossierscontroller_index.html.haml | 1 - 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 0defef003..c6f63f321 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -3,8 +3,8 @@ class Backoffice::DossiersController < Backoffice::DossiersListController def index super - dossiers_list_facade.service.filter_procedure_reset! - @facade_data_view = dossiers_list_facade + procedure = dossiers_list_facade.gestionnaire_procedures_name_and_id_list.first + redirect_to backoffice_dossiers_procedure_path(id: procedure[:id]) end def show diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index 2c8f0241e..2eb286ea8 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -17,7 +17,7 @@ class DossiersListGestionnaireService end def self.dossiers_liste_libelle - ['nouveaux', 'suivi', 'a_traiter', 'fige' ,'deposes', 'a_instruire', 'termine', 'all_state'] + ['nouveaux', 'suivi', 'a_traiter', 'fige', 'deposes', 'a_instruire', 'termine', 'all_state'] end def all_state @@ -25,7 +25,7 @@ class DossiersListGestionnaireService end def suivi - @suivi ||= @current_devise_profil.dossiers_follow + @suivi ||= @current_devise_profil.dossiers_follow.merge(all_state) end def nouveaux @@ -188,4 +188,5 @@ class DossiersListGestionnaireService def current_preference_smart_listing_page @current_devise_profil.preference_smart_listing_page end + end diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index 0772f4b06..f17a03236 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -20,7 +20,6 @@ %div#infos-block #procedure_list %div.procedure_list_element - =link_to "Tous les dossiers", backoffice_dossiers_path - @dossiers_list_facade.gestionnaire_procedures_name_and_id_list.each do |procedure| %div.procedure_list_element =link_to truncate(procedure[:libelle], {length: 50}), backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} From fbfbe68295f6497d012cc65eaa5cb921c38df742 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 28 Nov 2016 14:43:46 +0100 Subject: [PATCH 055/182] Adapt JS smart listing --- app/controllers/backoffice/dossiers/procedure_controller.rb | 1 - app/views/backoffice/dossiers/index.js.erb | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/backoffice/dossiers/procedure_controller.rb b/app/controllers/backoffice/dossiers/procedure_controller.rb index 7fba5046f..b0044dfba 100644 --- a/app/controllers/backoffice/dossiers/procedure_controller.rb +++ b/app/controllers/backoffice/dossiers/procedure_controller.rb @@ -4,7 +4,6 @@ class Backoffice::Dossiers::ProcedureController < Backoffice::DossiersListContro super dossiers_list_facade.service.filter_procedure! params[:id] - @facade_data_view = dossiers_list_facade render 'backoffice/dossiers/index' diff --git a/app/views/backoffice/dossiers/index.js.erb b/app/views/backoffice/dossiers/index.js.erb index 876f677fd..98e47f14e 100644 --- a/app/views/backoffice/dossiers/index.js.erb +++ b/app/views/backoffice/dossiers/index.js.erb @@ -1,4 +1,6 @@ -<%= smart_listing_update :dossiers %> +<%= smart_listing_update :new_dossiers %> +<%= smart_listing_update :follow_dossiers %> +<%= smart_listing_update :all_state_dossiers %> filters_init(); link_init(); \ No newline at end of file From b4fc5a6019ada636bd0135d68f6a220e5aec1472 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 28 Nov 2016 15:21:16 +0100 Subject: [PATCH 056/182] Fix filter popup place --- app/assets/javascripts/dossiers_list_filter.js | 9 +++++++-- app/views/backoffice/dossiers/_list.html.haml | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/dossiers_list_filter.js b/app/assets/javascripts/dossiers_list_filter.js index e7648faa3..389eb6199 100644 --- a/app/assets/javascripts/dossiers_list_filter.js +++ b/app/assets/javascripts/dossiers_list_filter.js @@ -35,6 +35,11 @@ function framed_id(event) { function filter_framed_show(event) { dom_object = $(framed_id(event)); - dom_object.css('top', (event.pageY + 7) + 'px'); - dom_object.css('left', (event.pageX + 7) + 'px'); + var offset = $('#main-container').offset(); + + 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'); } diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index a0e85fc21..d39f50987 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -7,8 +7,8 @@ -else = smart_listing.sortable preference.libelle, preference.table_attr - if @dossiers_list_facade.active_filter? preference - %i.filter.fa.fa-filter{style: "cursor: pointer; margin-left:3px; font-size: 1.1em; color:#{(preference.filter.blank? ? 'grey' : 'orange')}", id: "filter_"+preference.table_attr.sub('.', '_')} - = render partial: 'backoffice/dossiers/filter_framed', locals:{preference: preference, filter_framed_id: "framed_filter_"+preference.table_attr.sub('.', '_')} + %i.filter.fa.fa-filter{style: "cursor: pointer; margin-left:3px; font-size: 1.1em; color:#{(preference.filter.blank? ? 'grey' : 'orange')}", id: "filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"} + = render partial: 'backoffice/dossiers/filter_framed', locals:{preference: preference, filter_framed_id: "framed_filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"} %th.col-md-1.col-lg-1.center Actions %th.col-md-1.col-lg-1.center Abonnés From cb5b6651d5ba92845748637b222f3509fba71c27 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 28 Nov 2016 15:22:00 +0100 Subject: [PATCH 057/182] Working on navbar --- app/assets/stylesheets/navbar.scss | 11 ++++++- ...ckoffice_dossierscontroller_show.html.haml | 33 +++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 454ed1dd1..2b39d4e92 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -54,6 +54,14 @@ padding: 8px; border-right: 1px solid #C8C6C8; height: 60px; + .dropdown-toggle { + cursor: pointer; + } + .dropdown-pannel { + min-height: 100px; + width: 400px; + padding-left: 10px; + } } .log-options { color: #003189; @@ -136,9 +144,10 @@ color: #FFFFFF; cursor: pointer; display: block; - width: 140px; + width: 150px; text-align: center; padding: 2px; + float: right; .fa { font-size: 20px; margin-right: 10px; diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index 0a95bf5b2..8ae469a14 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -9,5 +9,34 @@ %i.fa.fa-user-times Ne plus suivre -else - %i.fa.fa-user-plus - = link_to("S'abonner", backoffice_dossier_follow_path(dossier_id: @facade.dossier.id), 'data-method' => :put, class: 'btn btn-md btn-primary', id: "suivre_dossier_#{@facade.dossier.id}") + = link_to backoffice_dossier_follow_path(dossier_id: @facade.dossier.id), 'data-method' => :put, class: 'button-navbar-action', id: "suivre_dossier_#{@facade.dossier.id}" do + %i.fa.fa-user-plus + Suivre le dossier + %div.row + %div.col-lg-12.col-md-12 + %div.dropdown-toggle{ 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } + %i.fa.fa-user + Voir les personnes impliquées + %div.dropdown-menu.dropdown-menu-right.dropdown-pannel + %h4= t('dynamics.dossiers.followers.title') + %ul + - unless @facade.followers.empty? + - @facade.followers.each do |follower| + %li= follower.email + - else + Aucune personne ne suit ce dossier + %h3= t('dynamics.dossiers.invites.title') + + - if @facade.invites.size > 0 + %ul + - @facade.invites.each do |invite| + %li + = invite.email + - else + Aucune personne invitée + + .col-md-3.col-lg-3 + =form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do + =text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation' + =submit_tag 'Ajouter', class: 'btn btn-success' + From fda8cac51ce767136a487517f628f464ab2d7c8a Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 28 Nov 2016 15:56:38 +0100 Subject: [PATCH 058/182] Finished navbar for dossiers#show, need body: construct dossier --- ...ckoffice_dossierscontroller_show.html.haml | 26 +++++++++---------- config/locales/dynamics/fr.yml | 5 ++++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index 8ae469a14..2ae7fd9b0 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -16,7 +16,7 @@ %div.col-lg-12.col-md-12 %div.dropdown-toggle{ 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } %i.fa.fa-user - Voir les personnes impliquées + = t('dynamics.dossiers.involved') %div.dropdown-menu.dropdown-menu-right.dropdown-pannel %h4= t('dynamics.dossiers.followers.title') %ul @@ -24,19 +24,17 @@ - @facade.followers.each do |follower| %li= follower.email - else - Aucune personne ne suit ce dossier - %h3= t('dynamics.dossiers.invites.title') + = t('dynamics.dossiers.followers.empty') + %h4= t('dynamics.dossiers.invites.title') + %ul + - unless @facade.invites.empty? + - @facade.invites.each do |invite| + %li= invite.email + - else + = t('dynamics.dossiers.invites.empty') - - if @facade.invites.size > 0 - %ul - - @facade.invites.each do |invite| %li - = invite.email - - else - Aucune personne invitée - - .col-md-3.col-lg-3 - =form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do - =text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation' - =submit_tag 'Ajouter', class: 'btn btn-success' + =form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do + =text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation' + =submit_tag 'Ajouter', class: 'btn btn-success' diff --git a/config/locales/dynamics/fr.yml b/config/locales/dynamics/fr.yml index 3c614368f..470fe8825 100644 --- a/config/locales/dynamics/fr.yml +++ b/config/locales/dynamics/fr.yml @@ -26,8 +26,13 @@ fr: dossiers: depositaite: "Dépositaire" numéro: 'Dossier n°' + involved: "Voir les personnes impliquées" followers: title: "Personnes suivant l'activité de ce dossier" + empty: "Aucune personne ne suit ce dossier" + invites: + title: "Personnes invitées à voir ce dossier" + empty: "Aucune personne invitée" admin: connexion_title: Administration From 53b0b9ee63c95a6c25b0fe84010237ceb6ba905b Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 28 Nov 2016 16:49:50 +0100 Subject: [PATCH 059/182] Fix bug right preference panel --- app/controllers/backoffice/dossiers/procedure_controller.rb | 1 - app/controllers/backoffice/dossiers_controller.rb | 1 - app/controllers/backoffice/dossiers_list_controller.rb | 2 +- .../backoffice/preference_list_dossier_controller.rb | 4 ++-- app/views/backoffice/dossiers/_filter_framed.html.haml | 2 +- app/views/backoffice/dossiers/_list.html.haml | 6 +++--- app/views/backoffice/dossiers/_pref_list.html.haml | 6 +++--- app/views/backoffice/dossiers/index.html.haml | 4 ++-- app/views/backoffice/dossiers/index.js.erb | 6 +++--- app/views/backoffice/dossiers/search.js.erb | 4 +++- app/views/dossiers/_download_dossiers.html.haml | 2 +- ...left_panel_backoffice_dossierscontroller_index.html.haml | 2 +- 12 files changed, 20 insertions(+), 20 deletions(-) diff --git a/app/controllers/backoffice/dossiers/procedure_controller.rb b/app/controllers/backoffice/dossiers/procedure_controller.rb index b0044dfba..74b092f43 100644 --- a/app/controllers/backoffice/dossiers/procedure_controller.rb +++ b/app/controllers/backoffice/dossiers/procedure_controller.rb @@ -4,7 +4,6 @@ class Backoffice::Dossiers::ProcedureController < Backoffice::DossiersListContro super dossiers_list_facade.service.filter_procedure! params[:id] - @facade_data_view = dossiers_list_facade render 'backoffice/dossiers/index' rescue ActiveRecord::RecordNotFound diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index c6f63f321..8ca61ad15 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -123,7 +123,6 @@ class Backoffice::DossiersController < Backoffice::DossiersListController @liste = cookies[:liste] || 'a_traiter' end - dossiers_list_facade @liste smartlisting_dossier render 'backoffice/dossiers/index', formats: :js diff --git a/app/controllers/backoffice/dossiers_list_controller.rb b/app/controllers/backoffice/dossiers_list_controller.rb index ff69a816c..e1057caba 100644 --- a/app/controllers/backoffice/dossiers_list_controller.rb +++ b/app/controllers/backoffice/dossiers_list_controller.rb @@ -25,7 +25,7 @@ class Backoffice::DossiersListController < ApplicationController end 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 def smartlisting_dossier dossiers_list=nil, liste='a_traiter' diff --git a/app/controllers/backoffice/preference_list_dossier_controller.rb b/app/controllers/backoffice/preference_list_dossier_controller.rb index 645ddc049..39ddba55d 100644 --- a/app/controllers/backoffice/preference_list_dossier_controller.rb +++ b/app/controllers/backoffice/preference_list_dossier_controller.rb @@ -1,4 +1,4 @@ -class Backoffice::PreferenceListDossierController < ApplicationController +class Backoffice::PreferenceListDossierController < Backoffice::DossiersListController include SmartListing::Helper::ControllerExtensions helper SmartListing::Helper @@ -22,7 +22,7 @@ class Backoffice::PreferenceListDossierController < ApplicationController end 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 end diff --git a/app/views/backoffice/dossiers/_filter_framed.html.haml b/app/views/backoffice/dossiers/_filter_framed.html.haml index 35c60c7f8..5e8337870 100644 --- a/app/views/backoffice/dossiers/_filter_framed.html.haml +++ b/app/views/backoffice/dossiers/_filter_framed.html.haml @@ -2,7 +2,7 @@ .panel-heading = preference.libelle - =form_tag @dossiers_list_facade.filter_url, {class: 'panel-body form-inline', method: :post} do + =form_tag @facade_data_view.filter_url, {class: 'panel-body form-inline', method: :post} do %input.form-control.filter_input{name: "filter_input[#{preference.table_attr}]", style:'width: 69%', value: "#{preference.filter}"} %button.btn.btn-sm.btn-success %i.fa.fa-check diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index d39f50987..62b28e426 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -1,12 +1,12 @@ %table#dossiers_list.table %thead - - @dossiers_list_facade.preference_list_dossiers_filter.each do |preference| + - @facade_data_view.preference_list_dossiers_filter.each do |preference| %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"} - if preference.table.to_s.include? 'champs' = preference.libelle -else = smart_listing.sortable preference.libelle, preference.table_attr - - if @dossiers_list_facade.active_filter? preference + - if @facade_data_view.active_filter? preference %i.filter.fa.fa-filter{style: "cursor: pointer; margin-left:3px; font-size: 1.1em; color:#{(preference.filter.blank? ? 'grey' : 'orange')}", id: "filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"} = render partial: 'backoffice/dossiers/filter_framed', locals:{preference: preference, filter_framed_id: "framed_filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"} @@ -16,7 +16,7 @@ - unless smart_listing.empty? - smart_listing.collection.each do |dossier| %tr{id: "tr_dossier_#{dossier.id}", 'data-dossier_url' => backoffice_dossier_url(id: dossier.id)} - - @dossiers_list_facade.preference_list_dossiers_filter.each_with_index do |preference, index| + - @facade_data_view.preference_list_dossiers_filter.each_with_index do |preference, index| %td - if preference.table.nil? || preference.table.empty? - value = dossier.decorate.public_send(preference.attr_decorate) diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index 310852807..0cb0f9d1e 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -10,7 +10,7 @@ Actuelles %ul - - @dossiers_list_facade.preference_list_dossiers_filter.each_with_index do |preference, index| + - @facade_data_view.preference_list_dossiers_filter.each_with_index do |preference, index| %li = form_tag backoffice_preference_list_dossier_delete_path, method: :delete, remote: true do = hidden_field_tag :pref_id, preference.id @@ -23,7 +23,7 @@ Disponibles %table - - PreferenceListDossier.available_columns_for(@dossiers_list_facade.procedure_id).each_with_index do |tables, index| + - PreferenceListDossier.available_columns_for(@facade_data_view.procedure_id).each_with_index do |tables, index| - if index%2 == 0 || tables.first.to_s.include?('champs') %tr @@ -38,7 +38,7 @@ = hidden_field_tag :attr, columns.second[:attr] = hidden_field_tag :attr_decorate, columns.second[:attr_decorate] = hidden_field_tag :bootstrap_lg, columns.second[:bootstrap_lg] - = hidden_field_tag :procedure_id, @dossiers_list_facade.procedure_id + = hidden_field_tag :procedure_id, @facade_data_view.procedure_id = columns.second[:libelle] %button.btn.btn-default.btn-xs{type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}"} diff --git a/app/views/backoffice/dossiers/index.html.haml b/app/views/backoffice/dossiers/index.html.haml index 70cc0c4cf..99603e885 100644 --- a/app/views/backoffice/dossiers/index.html.haml +++ b/app/views/backoffice/dossiers/index.html.haml @@ -23,7 +23,7 @@ %div.carret-down Dossiers suivis %div.col-lg-2.col-md-2.count - =@dossiers_list_facade.suivi_total + =@facade_data_view.suivi_total dossiers %div.body = smart_listing_render :follow_dossiers @@ -36,7 +36,7 @@ %div.carret-down Tous les dossiers %div.col-lg-2.col-md-2.count - =@dossiers_list_facade.all_state_total + =@facade_data_view.all_state_total dossiers %div.body = smart_listing_render :all_state_dossiers diff --git a/app/views/backoffice/dossiers/index.js.erb b/app/views/backoffice/dossiers/index.js.erb index 98e47f14e..14108f49a 100644 --- a/app/views/backoffice/dossiers/index.js.erb +++ b/app/views/backoffice/dossiers/index.js.erb @@ -1,6 +1,6 @@ -<%= smart_listing_update :new_dossiers %> -<%= smart_listing_update :follow_dossiers %> -<%= smart_listing_update :all_state_dossiers %> +<%= smart_listing_update :new_dossiers, {force: true} %> +<%= smart_listing_update :follow_dossiers, {force: true} %> +<%= smart_listing_update :all_state_dossiers, {force: true} %> filters_init(); link_init(); \ No newline at end of file diff --git a/app/views/backoffice/dossiers/search.js.erb b/app/views/backoffice/dossiers/search.js.erb index 0f7d43419..daf0cda6b 100644 --- a/app/views/backoffice/dossiers/search.js.erb +++ b/app/views/backoffice/dossiers/search.js.erb @@ -1,3 +1,5 @@ -<%= smart_listing_update :dossiers %> +<%= smart_listing_update :new_dossiers %> +<%= smart_listing_update :follow_dossiers %> +<%= smart_listing_update :all_state_dossiers %> filters_init(); \ No newline at end of file diff --git a/app/views/dossiers/_download_dossiers.html.haml b/app/views/dossiers/_download_dossiers.html.haml index 781a641ba..088f18dca 100644 --- a/app/views/dossiers/_download_dossiers.html.haml +++ b/app/views/dossiers/_download_dossiers.html.haml @@ -1,5 +1,5 @@ %div.dropdown.pull-right#download-menu - - if @dossiers_list_facade.dossiers_to_display.count > 400 + - if @facade_data_view.dossiers_to_display.count > 400 %button.btn.btn-error.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false, class: 'disabled'} %span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 400, merci de bien vouloir appliquer des filtres.'} = t('dynamics.backoffice.limit_excess_download_all_dossiers') diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index f17a03236..19eb2f79d 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -20,7 +20,7 @@ %div#infos-block #procedure_list %div.procedure_list_element - - @dossiers_list_facade.gestionnaire_procedures_name_and_id_list.each do |procedure| + - @facade_data_view.gestionnaire_procedures_name_and_id_list.each do |procedure| %div.procedure_list_element =link_to truncate(procedure[:libelle], {length: 50}), backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} From 4a5c053ae5d34aa9b9dc2e449598b60b43f94f3c Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 28 Nov 2016 18:34:31 +0100 Subject: [PATCH 060/182] Continue on dossier#show --- Gemfile | 1 + Gemfile.lock | 2 + app/assets/stylesheets/backoffice.scss | 3 +- app/assets/stylesheets/dossier_show.scss | 22 ++ app/assets/stylesheets/recapitulatif.scss | 12 +- app/views/backoffice/dossiers/show.html.haml | 8 +- app/views/dossiers/_infos_dossier.html.haml | 209 +++++++++---------- config/initializers/stringupcasepatch.rb | 9 + config/locales/dynamics/fr.yml | 1 + 9 files changed, 141 insertions(+), 126 deletions(-) create mode 100644 config/initializers/stringupcasepatch.rb diff --git a/Gemfile b/Gemfile index 8a3cb8fdf..46e959907 100644 --- a/Gemfile +++ b/Gemfile @@ -46,6 +46,7 @@ gem 'will_paginate-bootstrap' # Decorators gem 'draper', '~> 3.0.0.pre1' +gem 'unicode_utils' #Gestion des comptes utilisateurs gem 'devise' diff --git a/Gemfile.lock b/Gemfile.lock index 1e658fc90..9b9b2d2b7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -588,6 +588,7 @@ GEM unf_ext unf_ext (0.0.7.2) unicode-display_width (1.1.1) + unicode_utils (1.4.0) unicorn (5.2.0) kgio (~> 2.6) raindrops (~> 0.7) @@ -693,6 +694,7 @@ DEPENDENCIES timecop turbolinks (~> 2.5) uglifier (>= 1.3.0) + unicode_utils unicorn vcr web-console (~> 2.0) diff --git a/app/assets/stylesheets/backoffice.scss b/app/assets/stylesheets/backoffice.scss index f2c63e0d6..94f9c7a2a 100644 --- a/app/assets/stylesheets/backoffice.scss +++ b/app/assets/stylesheets/backoffice.scss @@ -11,6 +11,7 @@ margin-right: 2rem; .default_data_block { + background-color: #FFFFFF; .show-block { width: 100%; } @@ -55,4 +56,4 @@ } } } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index dc2f76f1f..8987aca2b 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -66,5 +66,27 @@ #infos { } #dossier { + .body { + padding: 0 20px 0 20px; + color: #000000; + .depositaire-label { + font-weight: bold; + text-align: end; + } + .depositaire-info { + } + .dossier-title { + font-size: 16px; + height: 40px; + text-align: center; + } + .split-hr { + border-bottom: 1px solid #979797; + height: 12px; + } + .title-row { + margin: 20px 10px 0 10px; + } + } } } diff --git a/app/assets/stylesheets/recapitulatif.scss b/app/assets/stylesheets/recapitulatif.scss index 39699dc8f..7d81a7c46 100644 --- a/app/assets/stylesheets/recapitulatif.scss +++ b/app/assets/stylesheets/recapitulatif.scss @@ -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 { text-align: left; @@ -16,4 +6,4 @@ margin-left: 0 !important; margin-bottom: 0; } -} \ No newline at end of file +} diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 5f00b910e..a552aad51 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -64,10 +64,6 @@ %div.col-lg-2.col-md-2.action EDITER %div.body - - - - = render partial: '/dossiers/infos_dossier' - - %div + = render partial: '/dossiers/infos_dossier' + - if false = render partial: 'dossiers/tab_objects_dossier' diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 547b082c1..f7bde1146 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -1,124 +1,117 @@ -#infos_dossier - %div.row - .col-lg-6.col-md-6 - %h3 - = @facade.dossier.procedure.libelle +%div.row + .col-lg-12.col-md-12 + %h3= @facade.dossier.procedure.libelle + - if @facade.procedure.for_individual? + .row.title-row + %div.col-md-4.col-lg-4.split-hr + %div.col-md-4.col-lg-4.dossier-title= t('dynamics.dossiers.depositaite').upcase + %div.col-md-4.col-lg-4.split-hr + .row + %div.col-md-6.col-lg-6.depositaire-label Civilité + %div.col-md-6.col-lg-6.depositaire-info= @facade.individual.gender + .row + %div.col-md-6.col-lg-6.depositaire-label Nom + %div.col-md-6.col-lg-6.depositaire-info= @facade.individual.nom + .row + %div.col-md-6.col-lg-6.depositaire-label Prénom + %div.col-md-6.col-lg-6.despositaire-info= @facade.individual.prenom + - unless Features.opensimplif + .row + %div.col-md-6.col-lg-6.depositaire-label Date de naissance + %div.col-md-6.col-lg-6.depositaire-info= @facade.individual.birthdate - - if @facade.procedure.for_individual? + - unless @facade.champs.nil? + .row.title-row + %div.col-md-4.col-lg-4.split-hr + %div.col-md-4.col-lg-4.dossier-title= t('dynamics.dossiers.liste_champs').upcase + %div.col-md-4.col-lg-4.split-hr + -@facade.champs.each do |champ| + .row + %div.col-md-6.col-lg-6.depositaire-label= champ.libelle + %div.col-md-1.col-lg-1.depositaire-info + -if gestionnaire_signed_in? + = link_to "COM", "", "data-href" => backoffice_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), + "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" + -else + = link_to "COM", "", "data-href" => users_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), + "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" + %div.col-md-5.col-lg-5.depositaire-info + -unless champ.decorate.value.blank? + = champ.decorate.value.html_safe + + .row + .col-lg-12.col-md-12 + =render partial: '/dossiers/pieces_justificatives' + + + + - if @facade.dossier.mandataire_social && gestionnaire_signed_in? + .mandataire_social.text-success.center %br - .individual.text-info - %h4 - =t('dynamics.dossiers.depositaite') + ="Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise (" + %b + ="#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}" + =")" - %table.table{style:'width: 60%'} - %tr - %th.col-md-3.col-lg-3 - Civilité - %td.col-md-5.col-lg-5 - = @facade.individual.gender - %tr - %th.col-md-3.col-lg-3 - Nom - %td.col-md-5.col-lg-5 - = @facade.individual.nom - %tr - %th.col-md-3.col-lg-3 - Prénom - %td.col-md-5.col-lg-5 - = @facade.individual.prenom - - unless Features.opensimplif - %tr - %th.col-md-3.col-lg-3 - Date de naissance - %td.col-md-5.col-lg-5 - = @facade.individual.birthdate + - if @facade.dossier.procedure.module_api_carto.use_api_carto + .col-lg-6.col-md-6 - - if @facade.dossier.mandataire_social && gestionnaire_signed_in? - .mandataire_social.text-success.center - %br - ="Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise (" - %b - ="#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}" - =")" + #map.mini{class: @facade.dossier.procedure.module_api_carto.classes} - - if @facade.dossier.procedure.module_api_carto.use_api_carto - .col-lg-6.col-md-6 + %input{id: 'json_latlngs', type:'hidden', value: "#{@facade.dossier.json_latlngs}"} + %input{id: 'quartier_prioritaires', type:'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"} + %input{id: 'cadastres', type:'hidden', value: "#{@facade.dossier.cadastres.to_json}"} - #map.mini{class: @facade.dossier.procedure.module_api_carto.classes} + %script{type: 'text/javascript'} + = "var dossier_id =#{@facade.dossier.id}" + initCarto(); - %input{id: 'json_latlngs', type:'hidden', value: "#{@facade.dossier.json_latlngs}"} - %input{id: 'quartier_prioritaires', type:'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"} - %input{id: 'cadastres', type:'hidden', value: "#{@facade.dossier.cadastres.to_json}"} +%br +%br - %script{type: 'text/javascript'} - = "var dossier_id =#{@facade.dossier.id}" - initCarto(); - - %br - -unless @facade.champs.nil? - .row - .col-lg-6.col-md-6 - %table.table#liste_champs - -@facade.champs.each do |champ| - %tr - %th{ style: 'width:25%' } - =champ.libelle - -if gestionnaire_signed_in? - =link_to "COM", "", "data-href" => backoffice_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), - "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" - -else - =link_to "COM", "", "data-href" => users_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), - "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" - %td - -unless champ.decorate.value.blank? - =champ.decorate.value.html_safe - .col-lg-6.col-md-6 - =render partial: '/dossiers/pieces_justificatives' - %br - - .row{style: 'text-align:right'} - - unless @facade.dossier.read_only? - - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) - - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 - %a#maj_pj.btn.btn-success{"data-target" => "#UploadPJmodal", - "data-toggle" => "modal", - :type => "button", - style: 'margin-bottom: 15px; margin-top: -30px'} - Modifier les documents - %br - = render partial: 'users/recapitulatif/modal_upload_pj' +.row{style: 'text-align:right'} + - unless @facade.dossier.read_only? + - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) + - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 + %a#maj_pj.btn.btn-success{"data-target" => "#UploadPJmodal", + "data-toggle" => "modal", + :type => "button", + style: 'margin-bottom: 15px; margin-top: -30px'} + Modifier les documents + %br + = render partial: 'users/recapitulatif/modal_upload_pj' - -if @facade.procedure.individual_with_siret - %a#add_siret.btn.btn-success{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} - = "Renseigner un SIRET" - -if @facade.dossier.procedure.module_api_carto.use_api_carto - %a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"} - = 'Modifier la carte' - %a#maj_infos.btn.btn-info{href: "/users/dossiers/#{@facade.dossier.id}/description"} - = 'Modifier le dossier' + -if @facade.procedure.individual_with_siret + %a#add_siret.btn.btn-success{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} + = "Renseigner un SIRET" + -if @facade.dossier.procedure.module_api_carto.use_api_carto + %a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"} + = 'Modifier la carte' + %a#maj_infos.btn.btn-info{href: "/users/dossiers/#{@facade.dossier.id}/description"} + = 'Modifier le dossier' - -if gestionnaire_signed_in? - -if !@facade.dossier.read_only? - = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do - %button.action_button.btn.btn-success{'data-toggle' => :tooltip, title: 'En cliquant ici, vous figez le dossier et autorisez le dépôt du dossier pour instruction.'} - = 'Déclarer complet' + -if gestionnaire_signed_in? + -if !@facade.dossier.read_only? + = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do + %button.action_button.btn.btn-success{'data-toggle' => :tooltip, title: 'En cliquant ici, vous figez le dossier et autorisez le dépôt du dossier pour instruction.'} + = 'Déclarer complet' - -elsif @facade.dossier.submitted? - = form_tag(url_for({controller: 'backoffice/dossiers', action: :receive, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do - %button.action_button.btn.btn-success - = 'Accuser réception' + -elsif @facade.dossier.submitted? + = form_tag(url_for({controller: 'backoffice/dossiers', action: :receive, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do + %button.action_button.btn.btn-success + = 'Accuser réception' - -elsif @facade.dossier.received? - = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Accepter') do - %button.action_button.btn.btn-success - %i.fa.fa-check - = form_tag(url_for({controller: 'backoffice/dossiers', action: :refuse, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Refuser') do - %button.action_button.btn.btn-danger - %i.fa.fa-times - = form_tag(url_for({controller: 'backoffice/dossiers', action: :without_continuation, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Classer sans suite') do - %button.action_button.btn.btn-warning - %i.fa.fa-circle-o + -elsif @facade.dossier.received? + = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Accepter') do + %button.action_button.btn.btn-success + %i.fa.fa-check + = form_tag(url_for({controller: 'backoffice/dossiers', action: :refuse, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Refuser') do + %button.action_button.btn.btn-danger + %i.fa.fa-times + = form_tag(url_for({controller: 'backoffice/dossiers', action: :without_continuation, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Classer sans suite') do + %button.action_button.btn.btn-warning + %i.fa.fa-circle-o #modalCommentairesDossierParChamp.modal.fade{"tabindex" => -1, "role" => "dialog"} .modal-dialog{"role" => "document"} diff --git a/config/initializers/stringupcasepatch.rb b/config/initializers/stringupcasepatch.rb new file mode 100644 index 000000000..0c888e580 --- /dev/null +++ b/config/initializers/stringupcasepatch.rb @@ -0,0 +1,9 @@ +require "unicode_utils/upcase" + +class String + + def upcase + UnicodeUtils.upcase(self) + end + +end diff --git a/config/locales/dynamics/fr.yml b/config/locales/dynamics/fr.yml index 470fe8825..51b1ed1b2 100644 --- a/config/locales/dynamics/fr.yml +++ b/config/locales/dynamics/fr.yml @@ -33,6 +33,7 @@ fr: invites: title: "Personnes invitées à voir ce dossier" empty: "Aucune personne invitée" + liste_champs: "Champs du dossier" admin: connexion_title: Administration From 752ae24c9f8c7fc622e1356197cc2ed6198e8198 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 29 Nov 2016 09:56:11 +0100 Subject: [PATCH 061/182] New search UX --- app/assets/javascripts/search.js | 56 +++++++++++++++++++ app/assets/stylesheets/application.scss | 11 ++++ app/assets/stylesheets/backoffice.scss | 8 --- .../backoffice/dossiers_controller.rb | 19 +++++-- app/facades/dossiers_list_facades.rb | 8 +++ .../backoffice/dossiers/search.html.haml | 17 ++++-- app/views/backoffice/dossiers/search.js.erb | 4 +- app/views/layouts/application.html.haml | 3 + ...koffice_dossierscontroller_index.html.haml | 6 +- ...office_dossierscontroller_search.html.haml | 3 +- 10 files changed, 110 insertions(+), 25 deletions(-) create mode 100644 app/assets/javascripts/search.js diff --git a/app/assets/javascripts/search.js b/app/assets/javascripts/search.js new file mode 100644 index 000000000..35d7c947b --- /dev/null +++ b/app/assets/javascripts/search.js @@ -0,0 +1,56 @@ +$(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); + + 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'); + + $('#action-block').append(search_area); + search_area.fadeIn(200); + + init_search_anim(); + }); + +} \ No newline at end of file diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index bcc04ced3..b3964baed 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -227,3 +227,14 @@ div.pagination { .no-margin { margin: 0; } + +#mask_search{ + background-color: rgba(0,0,0, 0.4); + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 200; +} \ No newline at end of file diff --git a/app/assets/stylesheets/backoffice.scss b/app/assets/stylesheets/backoffice.scss index 94f9c7a2a..615ed43a8 100644 --- a/app/assets/stylesheets/backoffice.scss +++ b/app/assets/stylesheets/backoffice.scss @@ -1,11 +1,3 @@ -#backoffice_search { - .table { - tr th { - border-top: none - } - } -} - #backoffice_index, #backoffice_search { margin-left: 2rem; margin-right: 2rem; diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 8ca61ad15..085eec88c 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -36,20 +36,29 @@ class Backoffice::DossiersController < Backoffice::DossiersListController @search_terms = params[:q] # exact id match? - @dossier = Dossier.where(id: @search_terms) + @dossiers = Dossier.where(id: @search_terms) # full text search - unless @dossier.any? - @dossier ||= Search.new( + unless @dossiers.any? + @dossiers = Search.new( gestionnaire: current_gestionnaire, query: @search_terms, page: params[:page] ).results 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 - smartlisting_dossier [], 'search' + smart_listing_create :search, + [], + partial: "backoffice/dossiers/list", + array: true, + default_sort: dossiers_list_facade.service.default_sort end def valid diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 893453709..948dbf7d3 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -22,6 +22,14 @@ class DossiersListFacades @liste end + def total_dossier + current_devise_profil.dossiers.where(archived: false).count + end + + def total_new_dossier + current_devise_profil.dossiers.where(state: :initiated, archived: false).count + end + def gestionnaire_procedures_name_and_id_list @current_devise_profil.procedures.order('libelle ASC').inject([]) { |acc, procedure| acc.push({id: procedure.id, libelle: procedure.libelle}) } end diff --git a/app/views/backoffice/dossiers/search.html.haml b/app/views/backoffice/dossiers/search.html.haml index 483f5b136..7f311b318 100644 --- a/app/views/backoffice/dossiers/search.html.haml +++ b/app/views/backoffice/dossiers/search.html.haml @@ -2,9 +2,16 @@ #pref_list_menu = render partial: 'backoffice/dossiers/pref_list' - %h1 - =t('dynamics.backoffice.title') + .default_data_block.default_visible + %div.row.show-block#new_dossiers + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + Résultat de la recherche + %div.col-lg-2.col-md-2.count + =@dossiers.count + dossiers + %div.body + = smart_listing_render :search - = render partial: 'backoffice/dossiers/onglets' - - = smart_listing_render :dossiers \ No newline at end of file diff --git a/app/views/backoffice/dossiers/search.js.erb b/app/views/backoffice/dossiers/search.js.erb index daf0cda6b..2f95cb389 100644 --- a/app/views/backoffice/dossiers/search.js.erb +++ b/app/views/backoffice/dossiers/search.js.erb @@ -1,5 +1,3 @@ -<%= smart_listing_update :new_dossiers %> -<%= smart_listing_update :follow_dossiers %> -<%= smart_listing_update :all_state_dossiers %> +<%= smart_listing_update :search %> filters_init(); \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 0c686ed23..c20e75cd5 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -36,5 +36,8 @@ %div.row = yield %div.row + #mask_search + %h1 + %i.fa.fa-times{style:'position: fixed; top: 10; right: 30; color: white;'} = render partial: 'layouts/footer' = render partial: 'layouts/google_analytics' diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index 19eb2f79d..44134ceb4 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -1,16 +1,16 @@ %div#first-block %div - =@facade_data_view.current_devise_profil.dossiers.where(archived: false).count + =@facade_data_view.total_dossier DOSSIERS EN COURS %div - =@facade_data_view.current_devise_profil.dossiers.where(state: :initiated, archived: false).count + =@facade_data_view.total_new_dossier NOUVEAUX DOSSIERS %div#action-block #search_area = form_tag(backoffice_dossiers_search_url, method: :get) do .input-group - = text_field_tag('q', "#{@search_terms unless @search_terms.nil? }", id: 'q', placeholder: t('dynamics.backoffice.research.placeholder'), class:'form-control') + = text_field_tag('q', "#{@search_terms unless @search_terms.nil? }", id: 'q', placeholder: "Recherchez parmi vos #{@facade_data_view.total_dossier} dossiers", class:'form-control') %span.input-group-btn %button.btn.btn-default{ id:'search_button' } %i.fa.fa-search diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml index 4ac20c271..2cd0c7c73 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml @@ -1 +1,2 @@ -= render partial: 'layouts/navbars/navbar_backoffice_dossierscontroller_index' \ No newline at end of file +%div.col-lg-10.col-md-10.main-info + Recherche dans tous les dossiers From 2c96f15e9384995ae313977755f15b5c86f7590a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 29 Nov 2016 11:45:30 +0100 Subject: [PATCH 062/182] Display search input on all pages --- app/assets/javascripts/search.js | 2 +- app/assets/stylesheets/application.scss | 11 ----------- app/assets/stylesheets/left_pannel.scss | 2 +- app/assets/stylesheets/search.scss | 17 ++++++++++++++--- app/views/layouts/application.html.haml | 2 ++ ...ackoffice_dossierscontroller_index.html.haml | 7 ------- .../layouts/left_panels/_search_area.html.haml | 7 +++++++ 7 files changed, 25 insertions(+), 23 deletions(-) create mode 100644 app/views/layouts/left_panels/_search_area.html.haml diff --git a/app/assets/javascripts/search.js b/app/assets/javascripts/search.js index 35d7c947b..8608a45cb 100644 --- a/app/assets/javascripts/search.js +++ b/app/assets/javascripts/search.js @@ -47,7 +47,7 @@ function search_fadeOut(){ search_area.css('z-index', ''); search_area.css('width', 'auto'); - $('#action-block').append(search_area); + $('#search-block').append(search_area); search_area.fadeIn(200); init_search_anim(); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index b3964baed..bcc04ced3 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -227,14 +227,3 @@ div.pagination { .no-margin { margin: 0; } - -#mask_search{ - background-color: rgba(0,0,0, 0.4); - display: none; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 200; -} \ No newline at end of file diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index 69a349c04..22284e24f 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -1,5 +1,5 @@ #left-pannel { - padding: 80px 0 0 10px; + padding: 60px 0 0 10px; background-color: #003189; height: 100%; position: fixed; diff --git a/app/assets/stylesheets/search.scss b/app/assets/stylesheets/search.scss index 4d6228243..64b606f97 100644 --- a/app/assets/stylesheets/search.scss +++ b/app/assets/stylesheets/search.scss @@ -1,4 +1,15 @@ -#search_area{ - margin-top: 20px; - margin-bottom: 20px; +#search-block{ + margin-top: 5px; + height: 50px; +} + +#mask_search{ + background-color: rgba(0,0,0, 0.4); + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 200; } \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index c20e75cd5..12994f197 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -26,6 +26,8 @@ = render partial: "layouts/navbar" %div.row.no-margin %div.col-lg-2.col-md-2#left-pannel + #search-block + = render partial: 'layouts/left_panels/search_area' - begin = render partial: @left_pannel_url -rescue diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index 44134ceb4..afd0a6add 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -7,13 +7,6 @@ NOUVEAUX DOSSIERS %div#action-block - #search_area - = form_tag(backoffice_dossiers_search_url, method: :get) do - .input-group - = text_field_tag('q', "#{@search_terms unless @search_terms.nil? }", id: 'q', placeholder: "Recherchez parmi vos #{@facade_data_view.total_dossier} dossiers", class:'form-control') - %span.input-group-btn - %button.btn.btn-default{ id:'search_button' } - %i.fa.fa-search %div#menu-block diff --git a/app/views/layouts/left_panels/_search_area.html.haml b/app/views/layouts/left_panels/_search_area.html.haml new file mode 100644 index 000000000..3dfc58840 --- /dev/null +++ b/app/views/layouts/left_panels/_search_area.html.haml @@ -0,0 +1,7 @@ +#search_area + = form_tag(backoffice_dossiers_search_url, method: :get) do + .input-group + = text_field_tag('q', "#{@search_terms unless @search_terms.nil? }", id: 'q', placeholder: "Recherchez parmi tous vos dossiers", class:'form-control') + %span.input-group-btn + %button.btn.btn-default{ id:'search_button' } + %i.fa.fa-search \ No newline at end of file From 1a90ed3fa3dabe2b0db470244fd4a4c7c74aa4d7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 29 Nov 2016 11:49:40 +0100 Subject: [PATCH 063/182] Search input only for gestionnaire --- app/views/layouts/application.html.haml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 12994f197..125dfadd4 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -26,8 +26,9 @@ = render partial: "layouts/navbar" %div.row.no-margin %div.col-lg-2.col-md-2#left-pannel - #search-block - = render partial: 'layouts/left_panels/search_area' + - if gestionnaire_signed_in? + #search-block + = render partial: 'layouts/left_panels/search_area' - begin = render partial: @left_pannel_url -rescue From dddb8c193d411ca9cbd5cb0274bcb3e50f51ce58 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 29 Nov 2016 11:56:00 +0100 Subject: [PATCH 064/182] mini fix css --- app/assets/stylesheets/application.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index bcc04ced3..57c6e8f42 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -32,7 +32,7 @@ html, body { } body { - padding-top: 50px; + padding-top: 60px; } form { From 3772fee85fe0b37671f9e959019f3dcfb9531ae3 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 29 Nov 2016 14:46:01 +0100 Subject: [PATCH 065/182] Dossier content displayed by default on dossiers#show --- app/assets/javascripts/default_data_block.js | 14 ++++++++------ .../javascripts/dossier_commentaires_modal.js | 2 +- app/assets/stylesheets/dossier_show.scss | 3 +++ app/views/dossiers/_infos_dossier.html.haml | 18 ++++++++---------- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 6f0ecc413..e00ba9ba5 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -2,12 +2,14 @@ $(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 .title').click(function () { toggle_default_data_bloc(this, 400); }); $('.new-action').click(function () { - var messages_block = $(this).parents().closest(".default_data_block").find(".title") + var messages_block = $(this).parents().closest('.default_data_block').find('.title') toggle_default_data_bloc(messages_block, 400); }); @@ -17,13 +19,13 @@ function init_default_data_block() { function toggle_default_data_bloc(element, duration){ var block = $(element).parents('.show-block'); - if (block.attr("id") == "messages") { - block.children(".last-commentaire").toggle(); + if (block.attr('id') == 'messages') { + block.children('.last-commentaire').toggle(); } - block.children(".body").slideToggle(duration); + block.children('.body').slideToggle(duration); - block.find(".carret-right").toggle(); - block.find(".carret-down").toggle(); + block.find('.carret-right').toggle(); + block.find('.carret-down').toggle(); } } diff --git a/app/assets/javascripts/dossier_commentaires_modal.js b/app/assets/javascripts/dossier_commentaires_modal.js index 1b697bd4e..ee6610c89 100644 --- a/app/assets/javascripts/dossier_commentaires_modal.js +++ b/app/assets/javascripts/dossier_commentaires_modal.js @@ -13,4 +13,4 @@ function init_modal_commentaire() { $("#modalCommentairesDossierParChamp").on("hidden.bs.modal", function (e) { body.html(originalBody); }); -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 8987aca2b..d93de006f 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -75,6 +75,9 @@ } .depositaire-info { } + .comments { + margin-right: -10px; + } .dossier-title { font-size: 16px; height: 40px; diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index f7bde1146..0dff04fc1 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -28,23 +28,21 @@ -@facade.champs.each do |champ| .row %div.col-md-6.col-lg-6.depositaire-label= champ.libelle - %div.col-md-1.col-lg-1.depositaire-info - -if gestionnaire_signed_in? - = link_to "COM", "", "data-href" => backoffice_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), - "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" - -else - = link_to "COM", "", "data-href" => users_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), - "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" + %div.col-md-1.col-lg-1.comments + - if gestionnaire_signed_in? + = link_to "", "data-href" => backoffice_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" do + %i.fa.fa-comment-o + - else + = link_to "", "data-href" => users_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" do + %i.fa.fa-commenting-o %div.col-md-5.col-lg-5.depositaire-info - -unless champ.decorate.value.blank? + - unless champ.decorate.value.blank? = champ.decorate.value.html_safe .row .col-lg-12.col-md-12 =render partial: '/dossiers/pieces_justificatives' - - - if @facade.dossier.mandataire_social && gestionnaire_signed_in? .mandataire_social.text-success.center %br From f823c8b7485ea0bfbbec5b6ed7b5c9405d2fb969 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 29 Nov 2016 14:50:44 +0100 Subject: [PATCH 066/182] marge and height upon search global input --- app/assets/stylesheets/search.scss | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/search.scss b/app/assets/stylesheets/search.scss index 64b606f97..cf9c94427 100644 --- a/app/assets/stylesheets/search.scss +++ b/app/assets/stylesheets/search.scss @@ -1,8 +1,12 @@ #search-block{ - margin-top: 5px; + margin: 5px 5px 0 0; height: 50px; } +#search_button { + height: 34px; +} + #mask_search{ background-color: rgba(0,0,0, 0.4); display: none; @@ -12,4 +16,4 @@ width: 100%; height: 100%; z-index: 200; -} \ No newline at end of file +} From f66b593596c68214bdec97792587776b9c4b1452 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 29 Nov 2016 14:56:24 +0100 Subject: [PATCH 067/182] Continue css upon dossiers#show, doing procedure libelle --- app/assets/stylesheets/dossier_show.scss | 4 ++++ app/views/dossiers/_infos_dossier.html.haml | 7 +++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index d93de006f..e9c1b2efa 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -69,6 +69,10 @@ .body { padding: 0 20px 0 20px; color: #000000; + .libelle-procedure { + font-style: italic; + padding: 10px; + } .depositaire-label { font-weight: bold; text-align: end; diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 0dff04fc1..ec6833995 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -1,6 +1,6 @@ %div.row .col-lg-12.col-md-12 - %h3= @facade.dossier.procedure.libelle + %h3.libelle-procedure= @facade.dossier.procedure.libelle - if @facade.procedure.for_individual? .row.title-row %div.col-md-4.col-lg-4.split-hr @@ -39,9 +39,8 @@ - unless champ.decorate.value.blank? = champ.decorate.value.html_safe - .row - .col-lg-12.col-md-12 - =render partial: '/dossiers/pieces_justificatives' + .row + .col-lg-12.col-md-12= render partial: '/dossiers/pieces_justificatives' - if @facade.dossier.mandataire_social && gestionnaire_signed_in? .mandataire_social.text-success.center From 67091f995b9432f6bb0df717b0d491b68f8c10ed Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 29 Nov 2016 15:47:58 +0100 Subject: [PATCH 068/182] Changing css index filters dossiers#index --- app/assets/stylesheets/dossiers.scss | 11 +++++++++-- app/views/backoffice/dossiers/_list.html.haml | 2 +- app/views/dossiers/_infos_dossier.html.haml | 3 --- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index aec5c6d76..6306b28ca 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -29,9 +29,16 @@ h5 span { } } +#dossiers_list { + .filter { + cursor: pointer; + font-size: 1.1em; + display: inline; + } +} + #dossiers_list tr:hover{ background-color: #eeeeee; - cursor: pointer; } #procedure_list { @@ -47,4 +54,4 @@ h5 span { .procedure_list_element:hover{ background-color: #aaaaaa; } -} \ No newline at end of file +} diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index 62b28e426..a06af02e0 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -7,7 +7,7 @@ -else = smart_listing.sortable preference.libelle, preference.table_attr - if @facade_data_view.active_filter? preference - %i.filter.fa.fa-filter{style: "cursor: pointer; margin-left:3px; font-size: 1.1em; color:#{(preference.filter.blank? ? 'grey' : 'orange')}", id: "filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"} + %i.filter.fa.fa-filter{style: "color:#{(preference.filter.blank? ? 'grey' : 'orange')}", id: "filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"} = render partial: 'backoffice/dossiers/filter_framed', locals:{preference: preference, filter_framed_id: "framed_filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"} %th.col-md-1.col-lg-1.center Actions diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index ec6833995..21ccf331f 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -63,9 +63,6 @@ = "var dossier_id =#{@facade.dossier.id}" initCarto(); -%br -%br - .row{style: 'text-align:right'} - unless @facade.dossier.read_only? - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) From 53692be01dc55c15e384b7407329ed7b5ee4a044 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 29 Nov 2016 16:03:59 +0100 Subject: [PATCH 069/182] Css on left-pannel action for dossiers#show --- app/assets/stylesheets/left_pannel.scss | 2 ++ app/views/dossiers/_infos_dossier.html.haml | 24 ------------------- ...ckoffice_dossierscontroller_show.html.haml | 20 +++++++++++++++- 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index 22284e24f..5a849b753 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -29,6 +29,8 @@ font-family: Arial; font-size: 16px; font-weight: bold; + border: none; + width: 200px; } } #menu-block { diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 21ccf331f..100a8c1de 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -38,7 +38,6 @@ %div.col-md-5.col-lg-5.depositaire-info - unless champ.decorate.value.blank? = champ.decorate.value.html_safe - .row .col-lg-12.col-md-12= render partial: '/dossiers/pieces_justificatives' @@ -75,7 +74,6 @@ %br = render partial: 'users/recapitulatif/modal_upload_pj' - -if @facade.procedure.individual_with_siret %a#add_siret.btn.btn-success{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} = "Renseigner un SIRET" @@ -85,28 +83,6 @@ %a#maj_infos.btn.btn-info{href: "/users/dossiers/#{@facade.dossier.id}/description"} = 'Modifier le dossier' - -if gestionnaire_signed_in? - -if !@facade.dossier.read_only? - = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do - %button.action_button.btn.btn-success{'data-toggle' => :tooltip, title: 'En cliquant ici, vous figez le dossier et autorisez le dépôt du dossier pour instruction.'} - = 'Déclarer complet' - - -elsif @facade.dossier.submitted? - = form_tag(url_for({controller: 'backoffice/dossiers', action: :receive, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do - %button.action_button.btn.btn-success - = 'Accuser réception' - - -elsif @facade.dossier.received? - = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Accepter') do - %button.action_button.btn.btn-success - %i.fa.fa-check - = form_tag(url_for({controller: 'backoffice/dossiers', action: :refuse, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Refuser') do - %button.action_button.btn.btn-danger - %i.fa.fa-times - = form_tag(url_for({controller: 'backoffice/dossiers', action: :without_continuation, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Classer sans suite') do - %button.action_button.btn.btn-warning - %i.fa.fa-circle-o - #modalCommentairesDossierParChamp.modal.fade{"tabindex" => -1, "role" => "dialog"} .modal-dialog{"role" => "document"} .modal-content diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index 3002dfdf0..fbc5f1d0b 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -5,7 +5,25 @@ %div= @facade.dossier.display_state %div#action-block - %div.action FIGER LE DOSSIER + - if gestionnaire_signed_in? + - if !@facade.dossier.read_only? + = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do + %button.action{'data-toggle' => :tooltip, title: 'En cliquant ici, vous figez le dossier et autorisez le dépôt du dossier pour instruction.'} + = 'Déclarer complet' + - elsif @facade.dossier.submitted? + = form_tag(url_for({controller: 'backoffice/dossiers', action: :receive, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do + %button.action + = 'Accuser réception' + - elsif @facade.dossier.received? + = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Accepter') do + %button.action + %i.fa.fa-check + = form_tag(url_for({controller: 'backoffice/dossiers', action: :refuse, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Refuser') do + %button.action + %i.fa.fa-times + = form_tag(url_for({controller: 'backoffice/dossiers', action: :without_continuation, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Classer sans suite') do + %button.action + %i.fa.fa-circle-o %div#menu-block From 53f4c52435b4527e45d30b6e74e88c0e81b969b0 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 29 Nov 2016 16:26:06 +0100 Subject: [PATCH 070/182] Have limited display height for messages on dossiers#show --- app/assets/javascripts/default_data_block.js | 1 + app/assets/stylesheets/dossier_show.scss | 7 +++++++ app/views/backoffice/dossiers/show.html.haml | 5 +++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index e00ba9ba5..ff6aae685 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -21,6 +21,7 @@ function init_default_data_block() { 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); diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index e9c1b2efa..8d6c06fd8 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -8,6 +8,13 @@ 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%); + } + } .last-commentaire, .commentaire { padding: 20px 0 0 20px; .comment-header { diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index a552aad51..1a7b220dd 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -11,8 +11,9 @@ - message_count = @facade.commentaires.count = (message_count == 1) ? "1 message" : "#{message_count} messages" %div.body - - @facade.commentaires.object.sort.each do |commentaire| - = render partial: commentaire + %div.commentaires + - @facade.commentaires.object.sort.each do |commentaire| + = render partial: commentaire .row .col-lg-12.col-md-12 %div.split-hr From 409ce10c65e7f5f72c5917e04d380be3f493c1f6 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 29 Nov 2016 16:39:06 +0100 Subject: [PATCH 071/182] Adding tips to left pannel for dossiers#show --- app/assets/stylesheets/left_pannel.scss | 23 +++++++++++++++++++ ...ckoffice_dossierscontroller_show.html.haml | 11 ++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index 5a849b753..7cc6ee22a 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -36,5 +36,28 @@ #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; + } + .tips { + margin: 0 10px 0 5px; + .fa { + color: #FFFFFF; + font-size: 40px; + width: inherit; + padding: 5px; + } + .notice { + font-size: 18px; + display: initial; + } + } } } diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index fbc5f1d0b..b8c4fdb8a 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -2,18 +2,17 @@ %div.infos %div #{@facade.dossier.nom_projet} %div= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s - %div= @facade.dossier.display_state %div#action-block - if gestionnaire_signed_in? - if !@facade.dossier.read_only? = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do %button.action{'data-toggle' => :tooltip, title: 'En cliquant ici, vous figez le dossier et autorisez le dépôt du dossier pour instruction.'} - = 'Déclarer complet' + = 'Déclarer complet'.upcase - elsif @facade.dossier.submitted? = form_tag(url_for({controller: 'backoffice/dossiers', action: :receive, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do %button.action - = 'Accuser réception' + = 'Accuser réception'.upcase - elsif @facade.dossier.received? = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Accepter') do %button.action @@ -28,3 +27,9 @@ %div#menu-block %div#infos-block + %div.split-hr + %div.dossier-state= @facade.dossier.display_state + %div.split-hr + %div.tips + %i.fa.fa-lightbulb-o + %div.notice= "Ceci est un bloc destiné à contenir des informations sur ce que êtes censé pouvoir faire à ce stade de traitement du dossier." From ea18a6f7ddd18ac185ccf5c80385f6a76bb9828d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 30 Nov 2016 11:04:50 +0100 Subject: [PATCH 072/182] Ajust global css --- app/assets/stylesheets/application.scss | 9 ++++++--- app/assets/stylesheets/navbar.scss | 9 ++++----- app/views/layouts/_footer.html.haml | 2 +- app/views/layouts/_navbar.html.haml | 6 ------ app/views/layouts/application.html.haml | 6 ++++++ ..._navbar_backoffice_dossierscontroller_index.html.haml | 2 +- ...navbar_backoffice_dossierscontroller_search.html.haml | 2 +- .../_navbar_backoffice_dossierscontroller_show.html.haml | 2 +- app/views/layouts/navbars/_navbar_default.html.haml | 2 +- 9 files changed, 21 insertions(+), 19 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 57c6e8f42..e724755b0 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -32,7 +32,7 @@ html, body { } body { - padding-top: 60px; + padding-top: 70px; } form { @@ -60,9 +60,12 @@ form { #footer { background-color: rgb(240, 240, 240); text-align: center; - margin-top: 1em; + //margin-top: 1em; + padding: 0; + p { - line-height: 50px; + line-height: 40px; + padding: 0; } } diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 2b39d4e92..9dd87aa9a 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -120,11 +120,11 @@ #beta { text-align: center; text-transform: uppercase; - position: absolute; - top: 26px; + position: fixed; + bottom: 26px; right: -35px; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); width: 150px; background-color: #008cba; color: #fff; @@ -160,4 +160,3 @@ .button_navbar:hover, .button-navbar-action:hover { text-decoration: none; } - diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml index efd0f3d15..e75d00d4f 100644 --- a/app/views/layouts/_footer.html.haml +++ b/app/views/layouts/_footer.html.haml @@ -1,4 +1,4 @@ -%div.row#footer +%div#footer %p{class: "copyright col-md-push-2 col-md-10 col-lg-push-2 col-lg-10 text-muted small"} =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 3c631cdb7..adb0be69c 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,9 +1,3 @@ -#beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} - - if Rails.env == 'production' - Beta - - else - Env Test - %div.col-lg-2.col-md-2.no-padding %a#title_navbar{href: '/'} %div.row#home diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 125dfadd4..7d14bd616 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -10,6 +10,12 @@ = csrf_meta_tags %body + #beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} + - if Rails.env == 'production' + Beta + - else + Env Test + - if Rails.env == 'test' %script{type: 'text/javascript'} (typeof jQuery !== 'undefined') && (jQuery.fx.off = true); diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml index 2059405e7..69a89d245 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml @@ -1,4 +1,4 @@ -%div.col-lg-7.col-md-7.main-info +%div.col-lg-8.col-md-8.main-info =@facade_data_view.procedure_id.nil? ? "Tous les dossiers" : truncate(@facade_data_view.procedure.libelle, {length: 50}) %div.col-lg-3.col-md-3.options %div.row diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml index 2cd0c7c73..13a5254aa 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_search.html.haml @@ -1,2 +1,2 @@ -%div.col-lg-10.col-md-10.main-info +%div.col-lg-11.col-md-11.main-info Recherche dans tous les dossiers diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index 2ae7fd9b0..ac6075f55 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -1,4 +1,4 @@ -%div.col-lg-7.col-md-7.main-info +%div.col-lg-8.col-md-8.main-info %span{ 'data-toggle' => :tooltip, "data-placement" => :bottom, title: @facade.dossier.procedure.libelle } = @facade.dossier.procedure.libelle.truncate(60) %div.col-lg-3.col-md-3.options diff --git a/app/views/layouts/navbars/_navbar_default.html.haml b/app/views/layouts/navbars/_navbar_default.html.haml index fb6ec30cc..aa2508600 100644 --- a/app/views/layouts/navbars/_navbar_default.html.haml +++ b/app/views/layouts/navbars/_navbar_default.html.haml @@ -1,2 +1,2 @@ -.col-lg-10.col-md-10 +.col-lg-11.col-md-11 Default navbar \ No newline at end of file From 06ee5726ed650d5309fd5230b6bf66b3f09bcd11 Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 30 Nov 2016 11:22:20 +0100 Subject: [PATCH 073/182] Fixing css on split-hr-left --- app/assets/stylesheets/dossiers.scss | 17 ++++++++++++++--- app/views/dossiers/_infos_dossier.html.haml | 1 - ...ackoffice_dossierscontroller_index.html.haml | 6 +++--- ...backoffice_dossierscontroller_show.html.haml | 6 +++--- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index 6306b28ca..00fbfafd0 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -42,16 +42,27 @@ h5 span { } #procedure_list { + max-height: 300px; + overflow: scroll; + margin: 0 -1px 0 -10px; + padding: 0 40px 15px 15px; .procedure_list_element{ margin-top: 15px; margin-bottom: 15px; - overflow: hidden; - max-height: 3.6em; line-height: 1.8em; + a, a:hover { + color: #FFFFFF; + text-decoration: none; + } } - .procedure_list_element:hover{ background-color: #aaaaaa; } } + +.split-hr-left { + border-bottom: 1px solid #FFFFFF; + margin: 20px 10px 20px 0; +} + diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 100a8c1de..758196f0e 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -1,6 +1,5 @@ %div.row .col-lg-12.col-md-12 - %h3.libelle-procedure= @facade.dossier.procedure.libelle - if @facade.procedure.for_individual? .row.title-row %div.col-md-4.col-lg-4.split-hr diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index afd0a6add..50c7d56c6 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -11,9 +11,9 @@ %div#menu-block %div#infos-block + %div.split-hr-left #procedure_list - %div.procedure_list_element - @facade_data_view.gestionnaire_procedures_name_and_id_list.each do |procedure| %div.procedure_list_element - =link_to truncate(procedure[:libelle], {length: 50}), backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} - + =link_to procedure[:libelle], backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} + %div.split-hr-left diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index b8c4fdb8a..e3d9373b2 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -27,9 +27,9 @@ %div#menu-block %div#infos-block - %div.split-hr + %div.split-hr-left %div.dossier-state= @facade.dossier.display_state - %div.split-hr + %div.split-hr-left %div.tips %i.fa.fa-lightbulb-o - %div.notice= "Ceci est un bloc destiné à contenir des informations sur ce que êtes censé pouvoir faire à ce stade de traitement du dossier." + %div.notice= "Ceci est un bloc destiné à contenir des informations sur ce que vous êtes censé pouvoir faire à ce stade de traitement du dossier." From aaf5273b124b1bff1c5640cd77fc90c10269418f Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 30 Nov 2016 13:36:44 +0100 Subject: [PATCH 074/182] Style on procedure elements --- app/assets/stylesheets/dossiers.scss | 21 ++++++++++--------- ...koffice_dossierscontroller_index.html.haml | 5 +++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index 00fbfafd0..d105ecea8 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -39,25 +39,26 @@ h5 span { #dossiers_list tr:hover{ background-color: #eeeeee; + cursor: pointer; } #procedure_list { max-height: 300px; + margin-left: -10px; overflow: scroll; - margin: 0 -1px 0 -10px; - padding: 0 40px 15px 15px; - .procedure_list_element{ - margin-top: 15px; - margin-bottom: 15px; + a, a:hover { + color: #FFFFFF; + text-decoration: none; + } + .procedure_list_element { + padding: 15px 40px 15px 20px; + cursor: pointer; overflow: hidden; line-height: 1.8em; - a, a:hover { - color: #FFFFFF; - text-decoration: none; - } } .procedure_list_element:hover{ - background-color: #aaaaaa; + background-color: #668ABD; + cursor: pointer; } } diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index 50c7d56c6..3b0bf9582 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -14,6 +14,7 @@ %div.split-hr-left #procedure_list - @facade_data_view.gestionnaire_procedures_name_and_id_list.each do |procedure| - %div.procedure_list_element - =link_to procedure[:libelle], backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} + = link_to backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} do + %div.procedure_list_element + = procedure[:libelle] %div.split-hr-left From 4048855aa3eaadd1c14b9493b74143186dca8635 Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 30 Nov 2016 13:42:19 +0100 Subject: [PATCH 075/182] expand procedure list to full height --- app/assets/stylesheets/dossiers.scss | 1 - .../_left_panel_backoffice_dossierscontroller_index.html.haml | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index d105ecea8..34cf65813 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -43,7 +43,6 @@ h5 span { } #procedure_list { - max-height: 300px; margin-left: -10px; overflow: scroll; a, a:hover { diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index 3b0bf9582..fc4245863 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -16,5 +16,4 @@ - @facade_data_view.gestionnaire_procedures_name_and_id_list.each do |procedure| = link_to backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} do %div.procedure_list_element - = procedure[:libelle] - %div.split-hr-left + = truncate(procedure[:libelle], length: 50) From c682387a398b573e657aa117746b788dabc9e3c2 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 10:54:25 +0100 Subject: [PATCH 076/182] First change connexion navbar --- app/assets/stylesheets/application.scss | 2 +- app/assets/stylesheets/navbar.scss | 9 +---- app/controllers/users/dossiers_controller.rb | 2 +- app/views/layouts/_navbar.html.haml | 37 +------------------ ...ssiers_procedurecontroller_index.html.haml | 12 +++++- ...koffice_dossierscontroller_index.html.haml | 11 ------ .../layouts/navbars/_navbar_default.html.haml | 2 +- .../navbars/_navbar_log_options.html.haml | 14 +++++++ app/views/users/sessions/new.html.haml | 6 +++ app/views/users/shared/_links.html.erb | 2 +- config/initializers/features.yml | 2 +- 11 files changed, 39 insertions(+), 60 deletions(-) delete mode 100644 app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml create mode 100644 app/views/layouts/navbars/_navbar_log_options.html.haml diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index e724755b0..e35e8bffd 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -32,7 +32,7 @@ html, body { } body { - padding-top: 70px; + padding-top: 60px; } form { diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 9dd87aa9a..5332a69fc 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -63,11 +63,6 @@ padding-left: 10px; } } - .log-options { - color: #003189; - font-size: 45px; - padding: 8px 0 0 20px; - } } } @@ -110,10 +105,10 @@ height: 70px; } .btn{ - color: white; + //color: white; } .btn:hover{ - color: #aaaaaa; + //color: #aaaaaa; } } diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index f5ef2472f..b48f72c93 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -27,7 +27,7 @@ class Users::DossiersController < UsersController def commencer unless params[:procedure_path].nil? - procedure = ProcedurePath.where(path: params[:procedure_path]).first!.procedure + procedure = ProcedurePath.where(path: params[:procedure_path]).last.procedure end if procedure.archived? diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index adb0be69c..2a9dca73c 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -13,40 +13,5 @@ = render partial: @navbar_url -rescue = render partial: 'layouts/navbars/navbar_default' - %div.col-lg-1.col-md-1.log-options - %span.fa.fa-sign-out -- if false - - if gestionnaire_signed_in? && user_signed_in? - %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} - =t('dynamics.backoffice.dossiers') - %a{href: users_dossiers_path, class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') - - elsif gestionnaire_signed_in? - %a{href: (current_gestionnaire.procedure_filter.blank? ? backoffice_dossiers_path : backoffice_dossiers_procedure_path(current_gestionnaire.procedure_filter)), class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') - - elsif user_signed_in? - %a{href: users_dossiers_path, class: 'btn btn-md'} - =t('dynamics.users.mes_dossiers') - - elsif administrateur_signed_in? - %a{href: admin_procedures_path, class: 'btn btn-md'} - =t('dynamics.admin.menu.title') - - -if user_signed_in? - = render partial: 'users/login_banner' - -elsif gestionnaire_signed_in? - = render partial: 'gestionnaires/login_banner' - -elsif administrateur_signed_in? - = render partial: 'administrateurs/login_banner' - -else - = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' - -unless Features.unified_login - = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' - = link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md' - - - if Rails.env != 'production' - %div.staging_warning - %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune donnée présente sur cette plateforme ne pourra être transférée sur l'environnement final de production.", 'data-toggle' => 'tooltip'} - Vous vous trouvez actuellement sur la plateforme de test. - %div.badge.progress-bar-danger - ? + = render partial: 'layouts/navbars/navbar_log_options' diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml index 4ac20c271..1853fcd4c 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml @@ -1 +1,11 @@ -= render partial: 'layouts/navbars/navbar_backoffice_dossierscontroller_index' \ No newline at end of file +%div.col-lg-3.col-md-3.main-info + =@facade_data_view.procedure_id.nil? ? "Tous les dossiers" : truncate(@facade_data_view.procedure.libelle, {length: 50}) +%div.col-lg-3.col-md-3.options + %div.row + %div.col-lg-12.col-md-12 + %a.button_navbar#pref_list_dossier_open_action{href: '#', type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } + %i.fa.fa-pencil + Modifier le tableau + %div.row + %div.col-lg-12.col-md-12 + = render partial: "dossiers/download_dossiers" diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml deleted file mode 100644 index 69a89d245..000000000 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_index.html.haml +++ /dev/null @@ -1,11 +0,0 @@ -%div.col-lg-8.col-md-8.main-info - =@facade_data_view.procedure_id.nil? ? "Tous les dossiers" : truncate(@facade_data_view.procedure.libelle, {length: 50}) -%div.col-lg-3.col-md-3.options - %div.row - %div.col-lg-12.col-md-12 - %a.button_navbar#pref_list_dossier_open_action{href: '#', type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } - %i.fa.fa-pencil - Modifier le tableau - %div.row - %div.col-lg-12.col-md-12 - = render partial: "dossiers/download_dossiers" diff --git a/app/views/layouts/navbars/_navbar_default.html.haml b/app/views/layouts/navbars/_navbar_default.html.haml index aa2508600..3118e7191 100644 --- a/app/views/layouts/navbars/_navbar_default.html.haml +++ b/app/views/layouts/navbars/_navbar_default.html.haml @@ -1,2 +1,2 @@ -.col-lg-11.col-md-11 +.col-lg-2.col-md-2 Default navbar \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_log_options.html.haml b/app/views/layouts/navbars/_navbar_log_options.html.haml new file mode 100644 index 000000000..2b4980cd5 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_log_options.html.haml @@ -0,0 +1,14 @@ +-#%span.fa.fa-sign-out + +-if user_signed_in? + = render partial: 'users/login_banner' +-elsif gestionnaire_signed_in? + .col-lg-2.col-md-2 + = render partial: 'gestionnaires/login_banner' +-elsif administrateur_signed_in? + = render partial: 'administrateurs/login_banner' +-else + .col-lg-5.col-md-5 + = link_to "Connexion", '/users/sign_in', :class => 'btn btn-md' + -unless Features.unified_login + = link_to "Accompagnateur", '/gestionnaires/sign_in', :class => 'btn btn-md' \ No newline at end of file diff --git a/app/views/users/sessions/new.html.haml b/app/views/users/sessions/new.html.haml index 718da7056..d85ff3ab1 100644 --- a/app/views/users/sessions/new.html.haml +++ b/app/views/users/sessions/new.html.haml @@ -33,5 +33,11 @@ = f.submit "Se connecter", class:'btn btn-primary' %br = render "users/shared/links" + %div{style: "margin-top: 5px; margin-bottom: 5px;"} + \- + Vous êtes un administrateur de procédure ? + %br + = link_to "Cliquez ici.", '/administrateurs/sign_in' + diff --git a/app/views/users/shared/_links.html.erb b/app/views/users/shared/_links.html.erb index b1d1b5381..d6c21977c 100644 --- a/app/views/users/shared/_links.html.erb +++ b/app/views/users/shared/_links.html.erb @@ -3,4 +3,4 @@ <% end -%>
-<%= link_to "Mot de passe oublié ?", new_password_path(resource_name) %>
+<%= link_to "Mot de passe oublié ?", new_password_path(resource_name) %>
\ No newline at end of file diff --git a/config/initializers/features.yml b/config/initializers/features.yml index e77e684a6..bae4e4f34 100644 --- a/config/initializers/features.yml +++ b/config/initializers/features.yml @@ -1,3 +1,3 @@ remote_storage: true -unified_login: false +unified_login: true opensimplif: false From 5c61733199679df1ee72c8698a9db6879013b4a4 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 12:19:22 +0100 Subject: [PATCH 077/182] Display left panel only if layout file exist --- app/assets/stylesheets/dossiers.scss | 2 +- app/assets/stylesheets/navbar.scss | 9 ++++--- app/assets/stylesheets/search.scss | 2 +- app/services/render_partial_service.rb | 6 +++++ app/views/layouts/_footer.html.haml | 2 +- app/views/layouts/_main_container.html.haml | 6 +++++ app/views/layouts/_navbar.html.haml | 6 ++--- app/views/layouts/application.html.haml | 27 ++++++++++---------- spec/services/render_partial_service_spec.rb | 4 +++ 9 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 app/views/layouts/_main_container.html.haml diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index 34cf65813..bbc1ae5d4 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -63,6 +63,6 @@ h5 span { .split-hr-left { border-bottom: 1px solid #FFFFFF; - margin: 20px 10px 20px 0; + margin: 20px 10px 0px 0; } diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 5332a69fc..4717d1d0e 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -18,10 +18,11 @@ } #home { text-align: center; - padding: 10px; + box-shadow: 0 1px 2px 0 rgba(0,0,0,0.5); background-color: #003189; + height: 60px; .logo { - width: 118px; + margin-top: 10px; height: 40px; } #tps-title { @@ -29,13 +30,13 @@ font-size: 24px; font-weight: bold; line-height: 28px; - padding: 5px 0 0 20px; + margin-top: 17px; } } #navbar-body { height: 60px; background-color: #FFFFFF; - box-shadow: 0 1px 2px 0 rgba(0,0,0,0.5); + box-shadow: 0 1px 2px 0 rgba(50,50,50,0.5); padding-left: 50px; .main-info { font-family: Arial; diff --git a/app/assets/stylesheets/search.scss b/app/assets/stylesheets/search.scss index cf9c94427..acfb899b9 100644 --- a/app/assets/stylesheets/search.scss +++ b/app/assets/stylesheets/search.scss @@ -1,5 +1,5 @@ #search-block{ - margin: 5px 5px 0 0; + margin: 11px 5px 0 0; height: 50px; } diff --git a/app/services/render_partial_service.rb b/app/services/render_partial_service.rb index b8c0b1f84..efb5ed2ab 100644 --- a/app/services/render_partial_service.rb +++ b/app/services/render_partial_service.rb @@ -15,6 +15,12 @@ class RenderPartialService 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 diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml index e75d00d4f..8b079a747 100644 --- a/app/views/layouts/_footer.html.haml +++ b/app/views/layouts/_footer.html.haml @@ -1,5 +1,5 @@ %div#footer - %p{class: "copyright col-md-push-2 col-md-10 col-lg-push-2 col-lg-10 text-muted small"} + %p{class: "copyright col-md-push-#{12-main_container_size} col-md-#{main_container_size} col-lg-push-#{12-main_container_size} col-lg-#{main_container_size} text-muted small"} =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" 2016 diff --git a/app/views/layouts/_main_container.html.haml b/app/views/layouts/_main_container.html.haml new file mode 100644 index 000000000..423e27e00 --- /dev/null +++ b/app/views/layouts/_main_container.html.haml @@ -0,0 +1,6 @@ +%div#main-container{class: "col-lg-#{main_container_size} col-md-#{main_container_size}"} + %div.row + = render partial: 'layouts/flash_messages' + %div.row + = yield + %div.row \ No newline at end of file diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 2a9dca73c..415f6bbda 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,9 +1,9 @@ -%div.col-lg-2.col-md-2.no-padding +%div.col-lg-2.col-md-2 %a#title_navbar{href: '/'} %div.row#home - %div.col-lg-6 + %div.col-lg-6.no-padding = image_tag('marianne_small.png', class: 'logo') - %div.col-lg-6#tps-title + %div.col-lg-6.no-padding#tps-title TPS %div.col-lg-10.col-md-10.no-padding diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 7d14bd616..fa2a2f755 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -31,22 +31,21 @@ %div#header.navbar = render partial: "layouts/navbar" %div.row.no-margin - %div.col-lg-2.col-md-2#left-pannel - - if gestionnaire_signed_in? - #search-block - = render partial: 'layouts/left_panels/search_area' - - begin + - if RenderPartialService.left_panel_exist? @left_pannel_url + %div.col-lg-2.col-md-2#left-pannel + - if gestionnaire_signed_in? + #search-block + = render partial: 'layouts/left_panels/search_area' + = render partial: @left_pannel_url - -rescue - = render partial: 'layouts/left_panels/left_panel_default' - %div.col-lg-10.col-md-10#main-container - %div.row - = render partial: 'layouts/flash_messages' - %div.row - = yield - %div.row + - main_container_size = 10 + - else + - main_container_size = 12 + + =render partial: 'layouts/main_container', locals: {main_container_size: main_container_size} #mask_search %h1 %i.fa.fa-times{style:'position: fixed; top: 10; right: 30; color: white;'} - = render partial: 'layouts/footer' + + = render partial: 'layouts/footer', locals: {main_container_size: main_container_size} = render partial: 'layouts/google_analytics' diff --git a/spec/services/render_partial_service_spec.rb b/spec/services/render_partial_service_spec.rb index 17d81697e..055847c0c 100644 --- a/spec/services/render_partial_service_spec.rb +++ b/spec/services/render_partial_service_spec.rb @@ -16,4 +16,8 @@ describe RenderPartialService do it { is_expected.to eq 'layouts/left_panel/_left_panel_'+controller.to_s.parameterize + '_' + method.to_s } end + + describe 'left_panel_exist?' do + pending + end end From b779c71cb6e768e4a1b7215ec3365958ee93bb1e Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 12:37:56 +0100 Subject: [PATCH 078/182] Gestionnaire sign out css --- app/assets/stylesheets/application.scss | 8 -------- app/assets/stylesheets/navbar.scss | 9 +++++++++ app/views/gestionnaires/_login_banner.html.haml | 7 +------ ...ckoffice_dossiers_procedurecontroller_index.html.haml | 2 +- app/views/layouts/navbars/_navbar_log_options.html.haml | 2 +- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index e35e8bffd..013410cb2 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -80,14 +80,6 @@ form { transform: translate(-50%, -50%); } -#sign_out { - decorate: none; - box-shadow: none; - float: right; - margin-top: 8px; - margin-right: 105px; -} - .text-purple { color: #8B008B } diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 4717d1d0e..174b968ea 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -64,6 +64,15 @@ padding-left: 10px; } } + + #sign_out{ + height: 60px; + .fa { + margin-left: 10%; + margin-top: 3%; + font-size: 40px; + } + } } } diff --git a/app/views/gestionnaires/_login_banner.html.haml b/app/views/gestionnaires/_login_banner.html.haml index 40651db9d..797c71352 100644 --- a/app/views/gestionnaires/_login_banner.html.haml +++ b/app/views/gestionnaires/_login_banner.html.haml @@ -1,6 +1 @@ -%div.user - - %i.fa.fa-user - = current_gestionnaire.email - - = link_to "Déconnexion", '/gestionnaires/sign_out', method: :delete, :class => 'btn btn-md' \ No newline at end of file += link_to "", '/gestionnaires/sign_out', method: :delete, :class => 'btn btn-md fa fa-sign-out' \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml index 1853fcd4c..69a89d245 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml @@ -1,4 +1,4 @@ -%div.col-lg-3.col-md-3.main-info +%div.col-lg-8.col-md-8.main-info =@facade_data_view.procedure_id.nil? ? "Tous les dossiers" : truncate(@facade_data_view.procedure.libelle, {length: 50}) %div.col-lg-3.col-md-3.options %div.row diff --git a/app/views/layouts/navbars/_navbar_log_options.html.haml b/app/views/layouts/navbars/_navbar_log_options.html.haml index 2b4980cd5..71d037887 100644 --- a/app/views/layouts/navbars/_navbar_log_options.html.haml +++ b/app/views/layouts/navbars/_navbar_log_options.html.haml @@ -3,7 +3,7 @@ -if user_signed_in? = render partial: 'users/login_banner' -elsif gestionnaire_signed_in? - .col-lg-2.col-md-2 + .col-lg-1.col-md-1#sign_out.no-padding = render partial: 'gestionnaires/login_banner' -elsif administrateur_signed_in? = render partial: 'administrateurs/login_banner' From bca0292fc48468a641362b6d720e50a5f8d46f5a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 13:01:00 +0100 Subject: [PATCH 079/182] Connexion and sign out user navbar style --- app/assets/stylesheets/navbar.scss | 21 ++++++++++++------- .../layouts/navbars/_navbar_default.html.haml | 3 +-- .../navbars/_navbar_log_options.html.haml | 7 ++++--- app/views/users/_login_banner.html.haml | 17 +++++++-------- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 174b968ea..57cbd268e 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -65,11 +65,22 @@ } } + #sign_in{ + margin-top: 7px; + .btn{ + float: right; + margin-right: 1.3em; + } + } + #sign_out{ height: 60px; + .fa { - margin-left: 10%; - margin-top: 3%; + float: right; + width: 70px; + margin-top: 2%; + margin-right: 0.5em; font-size: 40px; } } @@ -114,12 +125,6 @@ margin-top: -18px; height: 70px; } - .btn{ - //color: white; - } - .btn:hover{ - //color: #aaaaaa; - } } #beta { diff --git a/app/views/layouts/navbars/_navbar_default.html.haml b/app/views/layouts/navbars/_navbar_default.html.haml index 3118e7191..0d0c50fbd 100644 --- a/app/views/layouts/navbars/_navbar_default.html.haml +++ b/app/views/layouts/navbars/_navbar_default.html.haml @@ -1,2 +1 @@ -.col-lg-2.col-md-2 - Default navbar \ No newline at end of file +.col-lg-11.col-md-11 diff --git a/app/views/layouts/navbars/_navbar_log_options.html.haml b/app/views/layouts/navbars/_navbar_log_options.html.haml index 71d037887..64723d3a6 100644 --- a/app/views/layouts/navbars/_navbar_log_options.html.haml +++ b/app/views/layouts/navbars/_navbar_log_options.html.haml @@ -1,14 +1,15 @@ -#%span.fa.fa-sign-out -if user_signed_in? - = render partial: 'users/login_banner' + .col-lg-1.col-md-1#sign_out.no-padding + = render partial: 'users/login_banner' -elsif gestionnaire_signed_in? .col-lg-1.col-md-1#sign_out.no-padding = render partial: 'gestionnaires/login_banner' -elsif administrateur_signed_in? = render partial: 'administrateurs/login_banner' -else - .col-lg-5.col-md-5 - = link_to "Connexion", '/users/sign_in', :class => 'btn btn-md' + .col-lg-1.col-md-1#sign_in + = link_to "Connexion", '/users/sign_in', :class => 'btn btn-lg' -unless Features.unified_login = link_to "Accompagnateur", '/gestionnaires/sign_in', :class => 'btn btn-md' \ No newline at end of file diff --git a/app/views/users/_login_banner.html.haml b/app/views/users/_login_banner.html.haml index 13877a97c..a85621d5b 100644 --- a/app/views/users/_login_banner.html.haml +++ b/app/views/users/_login_banner.html.haml @@ -1,13 +1,10 @@ -%div.user - -if current_user.loged_in_with_france_connect? - %div{ id: "fconnect-profile", "data-fc-logout-url" => '/users/sign_out" data-method="delete' } - %a.text-info{ href: "#" } - = "#{current_user.given_name} #{current_user.family_name}" +-if current_user.loged_in_with_france_connect? + %div{ id: "fconnect-profile", "data-fc-logout-url" => '/users/sign_out" data-method="delete' } + %a.text-info{ href: "#" } + = "#{current_user.given_name} #{current_user.family_name}" - = link_to "", '/users/sign_out', method: :delete, :class => 'btn fa fa-power-off off-fc-link' + = link_to "", '/users/sign_out', method: :delete, :class => 'btn fa fa-power-off off-fc-link' - -else - %i.fa.fa-user - = current_user.email +-else + = link_to "", '/users/sign_out', method: :delete, :class => 'btn btn-md fa fa-sign-out' - = link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md' From d2a221ee40e911b89af0bb85549eee5356466c0a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 13:21:56 +0100 Subject: [PATCH 080/182] Fix admin log out navbar style --- app/assets/stylesheets/admin_index.scss | 32 +++++++++++-------- .../administrateurs/_login_banner.html.haml | 28 +--------------- ...in_gestionnairescontroller_index.html.haml | 1 + ...in_procedurescontroller_archived.html.haml | 1 + ...admin_procedurescontroller_draft.html.haml | 1 + ...admin_procedurescontroller_index.html.haml | 26 +++++++++++++++ ...bar_admin_profilecontroller_show.html.haml | 1 + .../navbars/_navbar_log_options.html.haml | 3 +- 8 files changed, 52 insertions(+), 41 deletions(-) create mode 100644 app/views/layouts/navbars/_navbar_admin_gestionnairescontroller_index.html.haml create mode 100644 app/views/layouts/navbars/_navbar_admin_procedurescontroller_archived.html.haml create mode 100644 app/views/layouts/navbars/_navbar_admin_procedurescontroller_draft.html.haml create mode 100644 app/views/layouts/navbars/_navbar_admin_procedurescontroller_index.html.haml create mode 100644 app/views/layouts/navbars/_navbar_admin_profilecontroller_show.html.haml diff --git a/app/assets/stylesheets/admin_index.scss b/app/assets/stylesheets/admin_index.scss index c3590cc4d..3c8e9eb11 100644 --- a/app/assets/stylesheets/admin_index.scss +++ b/app/assets/stylesheets/admin_index.scss @@ -1,17 +1,23 @@ -.table { - #id { - width: 5%; - } +#admin_index{ + margin-left: 2em; + margin-right: 2em; - #libelle { - width: 40%; - } + .table { + #id { + width: 5%; + } - #organisation { - width: 28%; - } + #libelle { + width: 40%; + } - #direction { - width: 22%; + #organisation { + width: 28%; + } + + #direction { + width: 22%; + } } -} \ No newline at end of file +} + diff --git a/app/views/administrateurs/_login_banner.html.haml b/app/views/administrateurs/_login_banner.html.haml index 90353b334..9bbcd2db1 100644 --- a/app/views/administrateurs/_login_banner.html.haml +++ b/app/views/administrateurs/_login_banner.html.haml @@ -1,27 +1 @@ -%div{ style: "decorate:none; display: flex;box-shadow:none; float:right; display: flex" } - %div{ style: "vertical-align: middle; margin-right: 10px; margin-top: auto; margin-bottom: auto;" } - = current_administrateur.email - .dropdown#admin_menu - %button.btn.btn-default.dropdown-toggle#dropdownMenuAdmin{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false} - %i.fa.fa-cog - %span.caret - %ul.dropdown-menu.dropdown-menu-right - %li - = link_to(admin_procedures_path, id: :menu_item_procedure) do - %i.fa.fa-list{ style: "background-size: 10px;"} -   - =t('dynamics.admin.menu.procedures') - %li - = link_to(admin_gestionnaires_path) do - %i.fa.fa-user -   - =t('dynamics.admin.menu.accompagnateurs') - %li.divider{ role: :separator} - %li - = link_to(admin_profile_path, id: :profile) do - %i.fa.fa-user -  Profile - %li - = link_to('/administrateurs/sign_out',id: :admin_sign_out, method: :delete) do - %i.fa.fa-power-off -  Se déconnecter += link_to "", '/administrateurs/sign_out', method: :delete, :class => 'btn btn-md fa fa-sign-out' \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_admin_gestionnairescontroller_index.html.haml b/app/views/layouts/navbars/_navbar_admin_gestionnairescontroller_index.html.haml new file mode 100644 index 000000000..b1e64c1e2 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_admin_gestionnairescontroller_index.html.haml @@ -0,0 +1 @@ += render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_archived.html.haml b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_archived.html.haml new file mode 100644 index 000000000..b1e64c1e2 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_archived.html.haml @@ -0,0 +1 @@ += render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_draft.html.haml b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_draft.html.haml new file mode 100644 index 000000000..b1e64c1e2 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_draft.html.haml @@ -0,0 +1 @@ += render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_index.html.haml b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_index.html.haml new file mode 100644 index 000000000..92789d893 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_index.html.haml @@ -0,0 +1,26 @@ +%div.col-lg-8.col-md-8.main-info + +%div.col-lg-3.col-md-3.options + %div{ style: "decorate:none; display: flex;box-shadow:none; float:right; display: flex; margin-top: 5px" } + %div{ style: "vertical-align: middle; margin-right: 10px; margin-top: auto; margin-bottom: auto;" } + = current_administrateur.email + .dropdown#admin_menu + %button.btn.btn-default.dropdown-toggle#dropdownMenuAdmin{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false} + %i.fa.fa-cog + %span.caret + %ul.dropdown-menu.dropdown-menu-right + %li + = link_to(admin_procedures_path, id: :menu_item_procedure) do + %i.fa.fa-list{ style: "background-size: 10px;"} +   + =t('dynamics.admin.menu.procedures') + %li + = link_to(admin_gestionnaires_path) do + %i.fa.fa-user +   + =t('dynamics.admin.menu.accompagnateurs') + %li.divider{ role: :separator} + %li + = link_to(admin_profile_path, id: :profile) do + %i.fa.fa-user +  Profile diff --git a/app/views/layouts/navbars/_navbar_admin_profilecontroller_show.html.haml b/app/views/layouts/navbars/_navbar_admin_profilecontroller_show.html.haml new file mode 100644 index 000000000..b1e64c1e2 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_admin_profilecontroller_show.html.haml @@ -0,0 +1 @@ += render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' \ No newline at end of file diff --git a/app/views/layouts/navbars/_navbar_log_options.html.haml b/app/views/layouts/navbars/_navbar_log_options.html.haml index 64723d3a6..aa17b0579 100644 --- a/app/views/layouts/navbars/_navbar_log_options.html.haml +++ b/app/views/layouts/navbars/_navbar_log_options.html.haml @@ -7,7 +7,8 @@ .col-lg-1.col-md-1#sign_out.no-padding = render partial: 'gestionnaires/login_banner' -elsif administrateur_signed_in? - = render partial: 'administrateurs/login_banner' + .col-lg-1.col-md-1#sign_out.no-padding + = render partial: 'administrateurs/login_banner' -else .col-lg-1.col-md-1#sign_in = link_to "Connexion", '/users/sign_in', :class => 'btn btn-lg' From f96b87122b131cdc399160513eacf5c38728bbda Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 18:05:49 +0100 Subject: [PATCH 081/182] Fix controller spec --- .../backoffice/dossiers_list_controller.rb | 1 - .../backoffice/dossiers_controller_spec.rb | 10 +- .../private_formulaires_controller_spec.rb | 2 +- .../dossiers/index_html.haml_spec.rb | 150 +++++------------- 4 files changed, 45 insertions(+), 118 deletions(-) diff --git a/app/controllers/backoffice/dossiers_list_controller.rb b/app/controllers/backoffice/dossiers_list_controller.rb index e1057caba..ad38d17e5 100644 --- a/app/controllers/backoffice/dossiers_list_controller.rb +++ b/app/controllers/backoffice/dossiers_list_controller.rb @@ -9,7 +9,6 @@ class Backoffice::DossiersListController < ApplicationController unless DossiersListGestionnaireService.dossiers_liste_libelle.include?(param_liste) cookies[:liste] = 'a_traiter' - return redirect_to backoffice_dossiers_path end dossiers_list_facade param_liste diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 5127e5260..6f349df26 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -6,7 +6,7 @@ describe Backoffice::DossiersController, type: :controller do end let(:procedure) { create :procedure } - let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure) } + let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: :initiated) } let(:dossier_archived) { create(:dossier, :with_entreprise, archived: true) } let(:dossier_id) { dossier.id } @@ -58,7 +58,7 @@ describe Backoffice::DossiersController, type: :controller do it 'returns http success' do get :index, params: {liste: :a_traiter} - expect(response).to have_http_status(200) + expect(response).to have_http_status(302) end end end @@ -71,7 +71,7 @@ describe Backoffice::DossiersController, type: :controller do it 'returns http success' do get :index, params: {liste: :fige} - expect(response).to have_http_status(200) + expect(response).to have_http_status(302) end end end @@ -84,7 +84,7 @@ describe Backoffice::DossiersController, type: :controller do it 'returns http success' do get :index, params: {liste: :termine} - expect(response).to have_http_status(200) + expect(response).to have_http_status(302) end end end @@ -97,7 +97,7 @@ describe Backoffice::DossiersController, type: :controller do it 'returns http success' do get :index, params: {liste: :list_fake} - expect(response).to redirect_to(backoffice_dossiers_path) + expect(response).to redirect_to(backoffice_dossiers_procedure_path(id: gestionnaire.procedures.first.id)) end end end diff --git a/spec/controllers/backoffice/private_formulaires_controller_spec.rb b/spec/controllers/backoffice/private_formulaires_controller_spec.rb index 70081558d..2ff55d3bd 100644 --- a/spec/controllers/backoffice/private_formulaires_controller_spec.rb +++ b/spec/controllers/backoffice/private_formulaires_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' describe Backoffice::PrivateFormulairesController, type: :controller do let(:gestionnaire) { create :gestionnaire } - let(:dossier) { create :dossier } + let(:dossier) { create :dossier, state: :initiated } let(:dossier_champs_first) { 'plop' } before do diff --git a/spec/views/backoffice/dossiers/index_html.haml_spec.rb b/spec/views/backoffice/dossiers/index_html.haml_spec.rb index 879b76cf2..84a3eef1f 100644 --- a/spec/views/backoffice/dossiers/index_html.haml_spec.rb +++ b/spec/views/backoffice/dossiers/index_html.haml_spec.rb @@ -16,6 +16,12 @@ describe 'backoffice/dossiers/index.html.haml', type: :view do let!(:decorate_dossier_refused) { create(:dossier, :with_entreprise, procedure: procedure, state: 'refused').decorate } let!(:decorate_dossier_without_continuation) { create(:dossier, :with_entreprise, procedure: procedure, state: 'without_continuation').decorate } + let(:dossiers_list_facade) { DossiersListFacades.new gestionnaire, nil } + + let(:new_dossiers_list) { dossiers_list_facade.service.nouveaux } + let(:follow_dossiers_list) { dossiers_list_facade.service.suivi } + let(:all_state_dossiers_list) { dossiers_list_facade.service.all_state } + before do decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plap') decorate_dossier_updated.entreprise.update_column(:raison_sociale, 'plep') @@ -52,120 +58,42 @@ describe 'backoffice/dossiers/index.html.haml', type: :view do create :assign_to, gestionnaire: gestionnaire, procedure: procedure sign_in gestionnaire + + assign :facade_data_view, dossiers_list_facade + + assign(:new_dossiers, (smart_listing_create :new_dossiers, + new_dossiers_list, + partial: "backoffice/dossiers/list", + array: true)) + + assign(:follow_dossiers, (smart_listing_create :follow_dossiers, + follow_dossiers_list, + partial: "backoffice/dossiers/list", + array: true)) + + assign(:all_state_dossiers, (smart_listing_create :all_state_dossiers, + all_state_dossiers_list, + partial: "backoffice/dossiers/list", + array: true)) + + render end - shared_examples 'check_tab_content' do - before do - assign :dossiers_list_facade, (DossiersListFacades.new gestionnaire, liste) - assign(:dossiers, (smart_listing_create :dossiers, - dossiers_to_display, - partial: "backoffice/dossiers/list", - array: true)) - render - end + subject { rendered } - subject { rendered } + it { is_expected.to have_content('Nouveaux dossiers 1 dossiers') } + it { is_expected.to have_content('Dossiers suivis 0 dossiers') } + it { is_expected.to have_content('Tous les dossiers 9 dossiers') } - describe 'pref list column' do - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_at_check.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_at_check.display_state) } - it { is_expected.to have_content(decorate_dossier_at_check.last_update) } - end + it { is_expected.to have_content('État') } + it { is_expected.to have_content('Libellé procédure') } + it { is_expected.to have_content('Raison sociale') } + it { is_expected.to have_content('Mise à jour le') } - it { is_expected.to have_css("#suivre_dossier_#{dossiers_to_display.first.id}") } - - it { expect(dossiers_to_display.count).to eq total_dossiers } - - describe 'active tab' do - it { is_expected.to have_selector(active_class) } - end - end - - describe 'on tab nouveaux' do - let(:total_dossiers) { 1 } - let(:active_class) { '.active .text-info' } - let(:dossiers_to_display) { gestionnaire.dossiers.nouveaux } - let(:liste) { 'nouveaux' } - - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_initiated } - end - end - - describe 'on tab a_traiter' do - let(:total_dossiers) { 2 } - let(:active_class) { '.active .text-danger' } - let(:dossiers_to_display) { gestionnaire.dossiers.ouvert } - let(:liste) { 'a_traiter' } - - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_updated } - end - - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_replied } - end - end - - describe 'on tab figes' do - let(:total_dossiers) { 1 } - let(:active_class) { '.active .text-default' } - let(:dossiers_to_display) { gestionnaire.dossiers.fige } - let(:liste) { 'fige' } - - describe 'for state replied' do - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_validated } - end - end - end - - describe 'on tab deposes' do - let(:total_dossiers) { 1 } - let(:active_class) { '.active .text-purple' } - let(:dossiers_to_display) { gestionnaire.dossiers.deposes } - let(:liste) { 'deposes' } - - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_submitted } - end - end - - describe 'on tab a_instruire' do - let(:total_dossiers) { 1 } - let(:active_class) { '.active .text-warning' } - let(:dossiers_to_display) { gestionnaire.dossiers.a_instruire } - let(:liste) { 'a_instruire' } - - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_received } - end - end - - describe 'on tab termine' do - let(:total_dossiers) { 3 } - let(:active_class) { '.active .text-success' } - let(:dossiers_to_display) { gestionnaire.dossiers.termine } - let(:liste) { 'termine' } - - describe 'for state closed' do - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_closed } - end - end - - describe 'for state refused' do - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_refused } - end - end - - describe 'for state without_continuation' do - it_behaves_like 'check_tab_content' do - let(:decorate_dossier_at_check) { decorate_dossier_without_continuation } - end - end - end + it { is_expected.to have_content('plap') } + it { is_expected.to have_content('plep') } + it { is_expected.to have_content('plip') } + it { is_expected.to have_content('plop') } + it { is_expected.to have_content('plup') } + it { is_expected.to have_content('plyp') } end \ No newline at end of file From 402459437d88e4e11f31a306abeddfce271ca902 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 18:07:51 +0100 Subject: [PATCH 082/182] Fix spec models --- spec/models/gestionnaire_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/gestionnaire_spec.rb b/spec/models/gestionnaire_spec.rb index 421437256..30c6722d0 100644 --- a/spec/models/gestionnaire_spec.rb +++ b/spec/models/gestionnaire_spec.rb @@ -116,7 +116,7 @@ describe Gestionnaire, type: :model do end describe '#dossiers_follow' do - let!(:dossier) { create :dossier, procedure: procedure } + let!(:dossier) { create :dossier, procedure: procedure, state: :initiated } before do create :follow, dossier_id: dossier.id, gestionnaire_id: gestionnaire.id From 3899991baf1fc832cd86690087729da584876d89 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 18:09:26 +0100 Subject: [PATCH 083/182] Fix spec services --- spec/services/render_partial_service_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/services/render_partial_service_spec.rb b/spec/services/render_partial_service_spec.rb index 055847c0c..ea94d3d5a 100644 --- a/spec/services/render_partial_service_spec.rb +++ b/spec/services/render_partial_service_spec.rb @@ -8,13 +8,13 @@ describe RenderPartialService do describe 'navbar' do subject { service.navbar } - it { is_expected.to eq 'layouts/navbars/_navbar_'+controller.to_s.parameterize + '_' + method.to_s } + it { is_expected.to eq 'layouts/navbars/navbar_'+controller.to_s.parameterize + '_' + method.to_s } end describe 'left_panel' do subject { service.left_panel } - it { is_expected.to eq 'layouts/left_panel/_left_panel_'+controller.to_s.parameterize + '_' + method.to_s } + it { is_expected.to eq 'layouts/left_panels/left_panel_'+controller.to_s.parameterize + '_' + method.to_s } end describe 'left_panel_exist?' do From ef5a005b3591670f55980af759e42e109564448d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 18:35:51 +0100 Subject: [PATCH 084/182] Add switch button if devise account have user and gestionnaire role. --- app/assets/stylesheets/switch_menu.scss | 6 ++++++ .../_switch_devise_profile_module.html.haml | 15 +++++++++++++++ app/views/layouts/application.html.haml | 3 +++ 3 files changed, 24 insertions(+) create mode 100644 app/assets/stylesheets/switch_menu.scss create mode 100644 app/views/layouts/_switch_devise_profile_module.html.haml diff --git a/app/assets/stylesheets/switch_menu.scss b/app/assets/stylesheets/switch_menu.scss new file mode 100644 index 000000000..95d6b0b30 --- /dev/null +++ b/app/assets/stylesheets/switch_menu.scss @@ -0,0 +1,6 @@ +#switch_menu{ + position: fixed; + left: 10px; + bottom: 10px; + z-index: 300; +} \ No newline at end of file diff --git a/app/views/layouts/_switch_devise_profile_module.html.haml b/app/views/layouts/_switch_devise_profile_module.html.haml new file mode 100644 index 000000000..c111fd806 --- /dev/null +++ b/app/views/layouts/_switch_devise_profile_module.html.haml @@ -0,0 +1,15 @@ +#switch_menu.dropdown.dropup + %button.btn.btn-default.dropdown-toggle{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false} + %i.fa.fa-toggle-on + %span.caret + %ul.dropdown-menu.dropdown-menu-left + %li + = link_to(users_dossiers_path, id: :menu_item_procedure) do + %i.fa.fa-user +   + Utilisateur + %li + = link_to(backoffice_dossiers_path) do + %i.fa.fa-user +   + Accompagnateur \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index fa2a2f755..29081da45 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -47,5 +47,8 @@ %h1 %i.fa.fa-times{style:'position: fixed; top: 10; right: 30; color: white;'} + - if user_signed_in? && gestionnaire_signed_in? + = render partial: 'layouts/switch_devise_profile_module' + = render partial: 'layouts/footer', locals: {main_container_size: main_container_size} = render partial: 'layouts/google_analytics' From dd46485f2e9918f7352f9bfe72f07e85e2c1ebf7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 18:38:21 +0100 Subject: [PATCH 085/182] Fix TPS v2 rails env in deploy.rb --- config/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/deploy.rb b/config/deploy.rb index bb7aea4db..5c5afc91f 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -67,7 +67,7 @@ set :rails_env, ENV["to"] if ENV["to"] == "opensimplif" set :rails_env, "production" elsif ENV["to"] == "tps_v2" - set :rails_env, "production" + set :rails_env, "staging" end # For system-wide RVM install. From 778dd1a3e4b7b6728d54b2740364335a1f6a0c8a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 19:08:25 +0100 Subject: [PATCH 086/182] Delete last migration --- .../20161115053251_delete_column_test_in_procedure_table.rb | 5 ----- db/schema.rb | 3 ++- 2 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 db/migrate/20161115053251_delete_column_test_in_procedure_table.rb diff --git a/db/migrate/20161115053251_delete_column_test_in_procedure_table.rb b/db/migrate/20161115053251_delete_column_test_in_procedure_table.rb deleted file mode 100644 index 6e9ba6644..000000000 --- a/db/migrate/20161115053251_delete_column_test_in_procedure_table.rb +++ /dev/null @@ -1,5 +0,0 @@ -class DeleteColumnTestInProcedureTable < ActiveRecord::Migration[5.0] - def change - remove_column :procedures, :test - end -end diff --git a/db/schema.rb b/db/schema.rb index 389f63c72..bde060e37 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161115053251) do +ActiveRecord::Schema.define(version: 20161110082244) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -306,6 +306,7 @@ ActiveRecord::Schema.define(version: 20161115053251) do t.string "lien_notice" t.boolean "for_individual", default: false t.boolean "individual_with_siret", default: false + t.boolean "test" end create_table "quartier_prioritaires", force: :cascade do |t| From d1bb453d0dcb6297582cc1712744b975ebbcf424 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 19:18:15 +0100 Subject: [PATCH 087/182] Remove state :draft in all state list --- app/models/dossier.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 8bd92395a..0ea6eb05a 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -55,7 +55,7 @@ class Dossier < ActiveRecord::Base EN_INSTRUCTION = %w(submitted received) A_INSTRUIRE = %w(received) 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) pieces_justificatives.where(type_de_piece_justificative_id: type).last From 418b5faa52a5cac56ae7ade8e40a638913206de0 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Dec 2016 19:43:56 +0100 Subject: [PATCH 088/182] New user tableau de bord UI --- app/assets/stylesheets/dossiers.scss | 5 ++ app/assets/stylesheets/users.scss | 11 +++++ ...l_users_dossierscontroller_index.html.haml | 44 ++++++++++++++++++ app/views/users/dossiers/_list.html.haml | 1 - app/views/users/dossiers/_onglets.html.haml | 46 ------------------- app/views/users/dossiers/index.html.haml | 21 +++++---- db/schema.rb | 2 +- 7 files changed, 73 insertions(+), 57 deletions(-) create mode 100644 app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml delete mode 100644 app/views/users/dossiers/_onglets.html.haml diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index bbc1ae5d4..8ca11460d 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -49,6 +49,11 @@ h5 span { color: #FFFFFF; text-decoration: none; } + + .procedure_list_element.active{ + background-color: #668ABD; + } + .procedure_list_element { padding: 15px 40px 15px 20px; cursor: pointer; diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss index 7c18d2293..f2d9b7894 100644 --- a/app/assets/stylesheets/users.scss +++ b/app/assets/stylesheets/users.scss @@ -1,4 +1,15 @@ #users_index{ margin-left: 2rem; margin-right: 2rem; + + .default_data_block { + margin-top: 20px; + background-color: #FFFFFF; + .show-block { + width: 100%; + } + .body { + height: auto; + } + } } \ No newline at end of file diff --git a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml new file mode 100644 index 000000000..b38fbc24b --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml @@ -0,0 +1,44 @@ +%div#first-block + +%div#action-block + +%div#menu-block + #procedure_list + %a{:href => "#{url_for users_dossiers_path(liste: 'brouillon')}", 'data-toggle' => :tooltip, title: 'Les dossiers jamais proposés à la relecture.'} + %div.procedure_list_element{ class: @dossiers_list_facade.brouillon_class } + = "Brouillons" + .badge.progress-bar-default + = @dossiers_list_facade.brouillon_total + + %a{:href => "#{url_for users_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} + %div.procedure_list_element{ class: @dossiers_list_facade.en_construction_class } + = "En construction" + .badge.progress-bar-danger + = @dossiers_list_facade.en_construction_total + + %a{:href => "#{url_for users_dossiers_path(liste: 'valides')}", 'data-toggle' => :tooltip, title: 'Les dossiers relus par votre accompagnateur pouvant être déposés pour examen.'} + %div.procedure_list_element{ class: @dossiers_list_facade.valides_class } + ="À déposer" + .badge.progress-bar-purple + = @dossiers_list_facade.valides_total + + %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'examen par l\'administration compétante.'} + %div.procedure_list_element{ class: @dossiers_list_facade.en_instruction_class } + ="En examen" + .badge.progress-bar-default + = @dossiers_list_facade.en_instruction_total + + %a{:href => "#{url_for users_dossiers_path(liste: 'termine')}", 'data-toggle' => :tooltip, title: 'Les dossiers cloturés qui peuvent être "Accepté", "Refusé" ou "Sans suite".'} + %div.procedure_list_element{ class: @dossiers_list_facade.termine_class } + = "Cloturé" + .badge.progress-bar-success + = @dossiers_list_facade.termine_total + + %a{:href => "#{url_for users_dossiers_path(liste: 'invite')}"} + %div.procedure_list_element{ class: @dossiers_list_facade.invite_class } + = "Invitation" + .badge.progress-bar-warning + = @dossiers_list_facade.invite_total + + +%div#infos-block diff --git a/app/views/users/dossiers/_list.html.haml b/app/views/users/dossiers/_list.html.haml index 398b31876..65ccc2198 100644 --- a/app/views/users/dossiers/_list.html.haml +++ b/app/views/users/dossiers/_list.html.haml @@ -30,7 +30,6 @@ %td= link_to('X', url_for(controller: 'dossiers', action: :destroy, id: dossier.id), 'data-method' => :delete, class: 'btn-sm btn-danger') if @liste == "brouillon" = smart_listing.paginate - = smart_listing.pagination_per_page_links - else %h4.center diff --git a/app/views/users/dossiers/_onglets.html.haml b/app/views/users/dossiers/_onglets.html.haml deleted file mode 100644 index e4ee9a009..000000000 --- a/app/views/users/dossiers/_onglets.html.haml +++ /dev/null @@ -1,46 +0,0 @@ -%br -#onglets - %ul.nav.nav-tabs - %li{ class: @dossiers_list_facade.brouillon_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'brouillon')}", 'data-toggle' => :tooltip, title: 'Les dossiers jamais proposés à la relecture.'} - %h5.text-default - = "Brouillons" - .badge.progress-bar-default - = @dossiers_list_facade.brouillon_total - - %li{ class: @dossiers_list_facade.en_construction_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} - %h5.text-danger - = "En construction" - .badge.progress-bar-danger - = @dossiers_list_facade.en_construction_total - - %li{ class: @dossiers_list_facade.valides_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'valides')}", 'data-toggle' => :tooltip, title: 'Les dossiers relus par votre accompagnateur pouvant être déposés pour examen.'} - %h5.text-purple - ="À déposer" - .badge.progress-bar-purple - = @dossiers_list_facade.valides_total - - %li{ class: @dossiers_list_facade.en_instruction_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'examen par l\'administration compétante.'} - %h5.text-default - ="En examen" - .badge.progress-bar-default - = @dossiers_list_facade.en_instruction_total - - %li{ class: @dossiers_list_facade.termine_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'termine')}", 'data-toggle' => :tooltip, title: 'Les dossiers cloturés qui peuvent être "Accepté", "Refusé" ou "Sans suite".'} - %h5.text-success - = "Cloturé" - .badge.progress-bar-success - = @dossiers_list_facade.termine_total - - %ul.nav.nav-tabs.navbar-right{style:'border-bottom: none;'} - %li{ class: @dossiers_list_facade.invite_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'invite')}"} - %h5.text-warning - = "Invitation" - .badge.progress-bar-warning - = @dossiers_list_facade.invite_total -%br diff --git a/app/views/users/dossiers/index.html.haml b/app/views/users/dossiers/index.html.haml index 229fc6008..8499ef835 100644 --- a/app/views/users/dossiers/index.html.haml +++ b/app/views/users/dossiers/index.html.haml @@ -1,13 +1,16 @@ #users_index - %h1 - =t('dynamics.users.mes_dossiers') + .default_data_block.default_visible + %div.row.show-block#new_dossiers + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + Dossiers + %div.col-lg-2.col-md-2.count + -#0 + -#dossiers + %div.body + = smart_listing_render :dossiers - -unless Features.opensimplif - = render partial: 'onglets' - - = smart_listing_render :dossiers - - %br - %br - unless Features.opensimplif = render partial: 'state_description', locals: {dossiers_list_facade: @dossiers_list_facade} diff --git a/db/schema.rb b/db/schema.rb index bde060e37..0b25ea688 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -295,6 +295,7 @@ ActiveRecord::Schema.define(version: 20161110082244) do t.string "lien_demarche" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.boolean "test" t.integer "administrateur_id" t.boolean "archived", default: false t.boolean "euro_flag", default: false @@ -306,7 +307,6 @@ ActiveRecord::Schema.define(version: 20161110082244) do t.string "lien_notice" t.boolean "for_individual", default: false t.boolean "individual_with_siret", default: false - t.boolean "test" end create_table "quartier_prioritaires", force: :cascade do |t| From 62f64d2bea9f91df6b0164d143ee2b95ab3dc90b Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 2 Dec 2016 10:39:21 +0100 Subject: [PATCH 089/182] Working on dossiers#show --- app/assets/stylesheets/dossier_show.scss | 2 +- app/assets/stylesheets/dossiers.scss | 1 - app/views/dossiers/_pieces_justificatives.html.haml | 5 ++--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 8d6c06fd8..47cc75aa0 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -99,7 +99,7 @@ height: 12px; } .title-row { - margin: 20px 10px 0 10px; + margin: 20px 10px 20px 10px; } } } diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index 8ca11460d..644bbd5ae 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -57,7 +57,6 @@ h5 span { .procedure_list_element { padding: 15px 40px 15px 20px; cursor: pointer; - overflow: hidden; line-height: 1.8em; } .procedure_list_element:hover{ diff --git a/app/views/dossiers/_pieces_justificatives.html.haml b/app/views/dossiers/_pieces_justificatives.html.haml index 06d77a192..9ed9da99a 100644 --- a/app/views/dossiers/_pieces_justificatives.html.haml +++ b/app/views/dossiers/_pieces_justificatives.html.haml @@ -1,7 +1,6 @@ #pieces_justificatives - %table.table - -if @facade.procedure.cerfa_flag? + - if @facade.procedure.cerfa_flag? %tr{id: "piece_justificative_0"} %th{class:'col-lg-6'} ='Formulaire' @@ -43,4 +42,4 @@ = 'Pièce non fournie' -#- if gestionnaire_signed_in? - =render partial: '/dossiers/modal_historique' \ No newline at end of file + =render partial: '/dossiers/modal_historique' From 4717d72dde83f613fb1ab943cbef92c73ed36d3d Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 2 Dec 2016 11:25:09 +0100 Subject: [PATCH 090/182] Using active css class to display which procedure is selected on dossiers#index --- app/assets/stylesheets/dossiers.scss | 1 + app/assets/stylesheets/left_pannel.scss | 4 +++- app/assets/stylesheets/search.scss | 2 +- .../_left_panel_backoffice_dossierscontroller_index.html.haml | 4 ++-- ...ar_backoffice_dossiers_procedurecontroller_index.html.haml | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index 644bbd5ae..ce99c08a2 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -45,6 +45,7 @@ h5 span { #procedure_list { margin-left: -10px; overflow: scroll; + margin-top: 10px; a, a:hover { color: #FFFFFF; text-decoration: none; diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index 7cc6ee22a..159af3d78 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -18,6 +18,7 @@ } } #action-block { + margin-right: 10px; .action { background-color: #E45B51; text-align: center; @@ -30,7 +31,7 @@ font-size: 16px; font-weight: bold; border: none; - width: 200px; + width: 100%; } } #menu-block { @@ -45,6 +46,7 @@ text-align: center; font-size: 25px; width: 200px; + margin-top: 20px; } .tips { margin: 0 10px 0 5px; diff --git a/app/assets/stylesheets/search.scss b/app/assets/stylesheets/search.scss index acfb899b9..037e2a119 100644 --- a/app/assets/stylesheets/search.scss +++ b/app/assets/stylesheets/search.scss @@ -1,5 +1,5 @@ #search-block{ - margin: 11px 5px 0 0; + margin: 15px 10px 0 0; height: 50px; } diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index fc4245863..47e202bd2 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -14,6 +14,6 @@ %div.split-hr-left #procedure_list - @facade_data_view.gestionnaire_procedures_name_and_id_list.each do |procedure| - = link_to backoffice_dossiers_procedure_path(procedure[:id]),{title: procedure[:libelle]} do - %div.procedure_list_element + = link_to backoffice_dossiers_procedure_path(procedure[:id]), {title: procedure[:libelle]} do + %div.procedure_list_element{ class: ('active' if procedure[:id] == @facade_data_view.procedure.id) } = truncate(procedure[:libelle], length: 50) diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml index 69a89d245..c9279b51a 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml @@ -1,5 +1,5 @@ %div.col-lg-8.col-md-8.main-info - =@facade_data_view.procedure_id.nil? ? "Tous les dossiers" : truncate(@facade_data_view.procedure.libelle, {length: 50}) + = @facade_data_view.procedure_id.nil? ? "Tous les dossiers" : truncate(@facade_data_view.procedure.libelle, {length: 50}) %div.col-lg-3.col-md-3.options %div.row %div.col-lg-12.col-md-12 From e4f63f366e610950f7d5b2b0d30fc6eaf89c173e Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 2 Dec 2016 12:00:22 +0100 Subject: [PATCH 091/182] Fix syntax --- app/controllers/users/registrations_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/users/registrations_controller.rb b/app/controllers/users/registrations_controller.rb index 56e0fb3b4..18054d6a9 100644 --- a/app/controllers/users/registrations_controller.rb +++ b/app/controllers/users/registrations_controller.rb @@ -69,6 +69,6 @@ class Users::RegistrationsController < Devise::RegistrationsController def check_invite! user Invite.where(email: user.email) - .each { |invite| invite.update_attribute(:user, user) } + .each { |invite| invite.update user: user } end end From 6b1c7b15ee3efc0d838f994a1f26fdfe2842d0cd Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 2 Dec 2016 12:05:50 +0100 Subject: [PATCH 092/182] Starting with dossiers#show as User --- app/assets/stylesheets/dossiers.scss | 2 +- app/assets/stylesheets/left_pannel.scss | 3 +++ ..._left_panel_backoffice_dossierscontroller_index.html.haml | 4 ++-- .../_left_panel_users_dossierscontroller_index.html.haml | 5 +++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index ce99c08a2..e69d8bb19 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -45,7 +45,7 @@ h5 span { #procedure_list { margin-left: -10px; overflow: scroll; - margin-top: 10px; + margin-top: 20px; a, a:hover { color: #FFFFFF; text-decoration: none; diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index 159af3d78..c5b4a4318 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -16,6 +16,9 @@ .infos { margin-bottom: 20px; } + .en-cours { + margin-top: 20px; + } } #action-block { margin-right: 10px; diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index 47e202bd2..9537c9c20 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -1,9 +1,9 @@ %div#first-block %div - =@facade_data_view.total_dossier + = @facade_data_view.total_dossier DOSSIERS EN COURS %div - =@facade_data_view.total_new_dossier + = @facade_data_view.total_new_dossier NOUVEAUX DOSSIERS %div#action-block diff --git a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml index b38fbc24b..90c862e92 100644 --- a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml @@ -1,8 +1,12 @@ %div#first-block + %div.en-cours + = @dossiers.count + DOSSIERS EN COURS %div#action-block %div#menu-block + %div.split-hr-left #procedure_list %a{:href => "#{url_for users_dossiers_path(liste: 'brouillon')}", 'data-toggle' => :tooltip, title: 'Les dossiers jamais proposés à la relecture.'} %div.procedure_list_element{ class: @dossiers_list_facade.brouillon_class } @@ -39,6 +43,7 @@ = "Invitation" .badge.progress-bar-warning = @dossiers_list_facade.invite_total + %div.split-hr-left %div#infos-block From 0c90c2c122b63d3cc6c2049748546eea6aba5fc6 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 2 Dec 2016 16:04:23 +0100 Subject: [PATCH 093/182] Add unsupport navigator banner --- .../stylesheets/support_navigator_banner.scss | 15 +++++++++++++++ app/controllers/application_controller.rb | 4 ++-- app/services/browser_service.rb | 19 +++++++++++++++++++ app/views/cgu/index.html.haml | 2 +- .../_support_navigator_banner.html.haml | 9 +++++++++ app/views/layouts/application.html.haml | 1 + 6 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 app/assets/stylesheets/support_navigator_banner.scss create mode 100644 app/services/browser_service.rb create mode 100644 app/views/layouts/_support_navigator_banner.html.haml diff --git a/app/assets/stylesheets/support_navigator_banner.scss b/app/assets/stylesheets/support_navigator_banner.scss new file mode 100644 index 000000000..d786918f5 --- /dev/null +++ b/app/assets/stylesheets/support_navigator_banner.scss @@ -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; + } +} \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1649ad53b..83ab972b9 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -6,12 +6,12 @@ class ApplicationController < ActionController::Base before_action :load_navbar_left_pannel_partial_url 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 def check_browser - BROWSER.value = Browser.new(request.user_agent) + BROWSER.value = BrowserService.get_browser(request) end def load_navbar_left_pannel_partial_url diff --git a/app/services/browser_service.rb b/app/services/browser_service.rb new file mode 100644 index 000000000..09f0837a4 --- /dev/null +++ b/app/services/browser_service.rb @@ -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 \ No newline at end of file diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml index 0983ef0d5..35ad156d8 100644 --- a/app/views/cgu/index.html.haml +++ b/app/views/cgu/index.html.haml @@ -148,7 +148,7 @@ %p Les marques citées sur ce site sont protégées par les organismes qui en sont propriétaires. %br -%h3 Logiciels nécessaires à la consultation +%h3#navigateurs Logiciels nécessaires à la consultation %p Ce service est optimisé pour un affichage en 1024*768. Il est prévu pour : %ul %li les versions 10 ou supérieures d'Internet Explorer (sur windows 7 ou plus) diff --git a/app/views/layouts/_support_navigator_banner.html.haml b/app/views/layouts/_support_navigator_banner.html.haml new file mode 100644 index 000000000..92106d3e5 --- /dev/null +++ b/app/views/layouts/_support_navigator_banner.html.haml @@ -0,0 +1,9 @@ +- unless BrowserService.recommended_browser? + #support_navigator_banner.row + .col-md-12.col-lg-12 + = BROWSER.value.name + = BROWSER.value.version + \- + Attention, votre navigateur n'est pas recommandé pour la navigation sur ce site internet. Aucun support ne pourra vous être prodigué en cas de dysfonctionnement. + %a{href: '/cgu/#navigateurs'} + Voir la liste des navigateurs compatibles. diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 29081da45..0cac2a8ff 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -10,6 +10,7 @@ = csrf_meta_tags %body + = render partial: 'layouts/support_navigator_banner' #beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} - if Rails.env == 'production' Beta From 27cc62ea1e5c9bb99f0b9d2cbb6bd993743d45db Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 2 Dec 2016 16:33:31 +0100 Subject: [PATCH 094/182] Working on dossiers#show recapitulatif for users --- app/assets/javascripts/default_data_block.js | 2 + app/assets/stylesheets/dossier_show.scss | 22 +++- app/assets/stylesheets/left_pannel.scss | 4 +- app/assets/stylesheets/navbar.scss | 4 + app/views/backoffice/dossiers/show.html.haml | 2 - app/views/dossiers/_infos_dossier.html.haml | 14 +-- .../dossiers/_infos_entreprise.html.haml | 101 +++++++++--------- ...ers_recapitulatifcontroller_show.html.haml | 19 ++++ ...ers_recapitulatifcontroller_show.html.haml | 29 +++++ .../users/commentaires/_commentaire.html.haml | 14 +++ app/views/users/recapitulatif/show.html.haml | 93 +++++++++++----- 11 files changed, 212 insertions(+), 92 deletions(-) create mode 100644 app/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml create mode 100644 app/views/layouts/navbars/_navbar_users_recapitulatifcontroller_show.html.haml create mode 100644 app/views/users/commentaires/_commentaire.html.haml diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index ff6aae685..695e67804 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -3,6 +3,8 @@ $(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); diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 47cc75aa0..7b9eab3d7 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -1,4 +1,4 @@ -#backoffice_dossier_show { +#backoffice_dossier_show, #users_recapitulatif_dossier_show { #messages { .last-commentaire { @@ -71,8 +71,18 @@ } } #infos { + .split-row { + margin: 0 0 20px 0; + } + .entreprise-info { + font-size: 14px; + } + .entreprise-label { + font-weight: bold; + text-align: end; + } } - #dossier { + #dossier, #infos { .body { padding: 0 20px 0 20px; color: #000000; @@ -91,15 +101,19 @@ } .dossier-title { font-size: 16px; - height: 40px; + min-height: 40px; text-align: center; } .split-hr { border-bottom: 1px solid #979797; height: 12px; + min-height: 10px; } .title-row { - margin: 20px 10px 20px 10px; + margin: 20px 10px 10px 10px; + } + .margin-top-40 { + margin-top: 40px; } } } diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index c5b4a4318..f02713303 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -28,8 +28,8 @@ cursor: pointer; color: #FFFFFF; margin: 0 10px 0 0; - height: 40px; - line-height: 40px; + min-height: 40px; + padding: 5px; font-family: Arial; font-size: 16px; font-weight: bold; diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 57cbd268e..c63e405c7 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -63,6 +63,10 @@ width: 400px; padding-left: 10px; } + .centered-option { + line-height: 40px; + height: 40px; + } } #sign_in{ diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 1a7b220dd..6cefaa6c1 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -66,5 +66,3 @@ EDITER %div.body = render partial: '/dossiers/infos_dossier' - - if false - = render partial: 'dossiers/tab_objects_dossier' diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 758196f0e..11add2a8f 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -20,11 +20,13 @@ %div.col-md-6.col-lg-6.depositaire-info= @facade.individual.birthdate - unless @facade.champs.nil? - .row.title-row - %div.col-md-4.col-lg-4.split-hr - %div.col-md-4.col-lg-4.dossier-title= t('dynamics.dossiers.liste_champs').upcase - %div.col-md-4.col-lg-4.split-hr - -@facade.champs.each do |champ| + - @facade.champs.each do |champ| + - if champ.type_champ == 'header_section' + .row.title-row.margin-top-40 + %div.col-md-3.col-lg-3.split-hr + %div.col-md-6.col-lg-6.dossier-title= champ.libelle.upcase + %div.col-md-3.col-lg-3.split-hr + - else .row %div.col-md-6.col-lg-6.depositaire-label= champ.libelle %div.col-md-1.col-lg-1.comments @@ -37,7 +39,7 @@ %div.col-md-5.col-lg-5.depositaire-info - unless champ.decorate.value.blank? = champ.decorate.value.html_safe - .row + .row.margin-top-40 .col-lg-12.col-md-12= render partial: '/dossiers/pieces_justificatives' - if @facade.dossier.mandataire_social && gestionnaire_signed_in? diff --git a/app/views/dossiers/_infos_entreprise.html.haml b/app/views/dossiers/_infos_entreprise.html.haml index 0ca65401b..f19c75f3b 100644 --- a/app/views/dossiers/_infos_entreprise.html.haml +++ b/app/views/dossiers/_infos_entreprise.html.haml @@ -1,59 +1,60 @@ .col-md-12.col-xs-12 %h4 = @facade.entreprise.raison_sociale_or_name + .row.split-row + %div.col-md-12.col-lg-12.split-hr +%div.row + .col-lg-12.col-md-12 -.row#infos_entreprise - .col-lg-6.col-md-6.col-xs-12.col-sm-12 - %dl.dl-horizontal - %dt Siret : - %dd.text-success= @facade.etablissement.siret + .row + %div.col-md-4.col-lg-4.entreprise-label Siret : + %div.col-md-8.col-lg-8.entreprise-info= @facade.etablissement.siret + - if @facade.etablissement.siret != @facade.entreprise.siret_siege_social + .row + %div.col-md-4.col-lg-4.entreprise-label SIRET siège social : + %div.col-md-8.col-lg-8.entreprise-info= @facade.entreprise.siret_siege_social + .row + %div.col-md-4.col-lg-4.entreprise-label Forme juridique : + %div.col-md-8.col-lg-8.entreprise-info= @facade.entreprise.forme_juridique + .row + %div.col-md-4.col-lg-4.entreprise-label Libellé naf : + %div.col-md-8.col-lg-8.entreprise-info= @facade.etablissement.libelle_naf + .row + %div.col-md-4.col-lg-4.entreprise-label Code naf : + %div.col-md-8.col-lg-8.entreprise-info= @facade.etablissement.naf + .row + %div.col-md-4.col-lg-4.entreprise-label Date de création : + %div.col-md-8.col-lg-8.entreprise-info= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y" + .row + %div.col-md-4.col-lg-4.entreprise-label Effectif organisation : + %div.col-md-8.col-lg-8.entreprise-info= @facade.entreprise.effectif + .row + %div.col-md-4.col-lg-4.entreprise-label Code effectif : + %div.col-md-8.col-lg-8.entreprise-info= @facade.entreprise.code_effectif_entreprise + .row + %div.col-md-4.col-lg-4.entreprise-label Numéro TVA intracommunautaire : + %div.col-md-8.col-lg-8.entreprise-info= @facade.entreprise.numero_tva_intracommunautaire - - if @facade.etablissement.siret != @facade.entreprise.siret_siege_social - %dt SIRET siège social : - %dd= @facade.entreprise.siret_siege_social + .row + %div.col-md-4.col-lg-4.entreprise-label Adresse : + %div.col-md-8.col-lg-8.entreprise-info + - @facade.etablissement.adresse.split("\n").each do |line| + = line + .row + %div.col-md-4.col-lg-4.entreprise-label Capital social : + %div.col-md-8.col-lg-8.entreprise-info= @facade.entreprise.pretty_capital_social - %dt Forme juridique : - %dd= @facade.entreprise.forme_juridique - - %dt Libellé naf : - %dd= @facade.etablissement.libelle_naf - - %dt Code naf : - %dd= @facade.etablissement.naf - - %dt Date de création : - %dd= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y" - - %dt Effectif organisation : - %dd= @facade.entreprise.effectif - - %dt Code effectif : - %dd= @facade.entreprise.code_effectif_entreprise - - %dt Numéro TVA intracommunautaire : - %dd= @facade.entreprise.numero_tva_intracommunautaire - - - .col-lg-6.col-md-6.col-xs-12.col-sm-12 - %dl.dl-horizontal - %dt Adresse : - %dd - %address - - @facade.etablissement.adresse.split("\n").each do |line| - = line - %br - - %dt Capital social : - %dd= @facade.entreprise.pretty_capital_social - - %dt Exercices : - %dd - %address - - @facade.etablissement.exercices.each_with_index do |exercice, index| - %strong - = "#{exercice.dateFinExercice.year} : " + .row + %div.col-md-4.col-lg-4.entreprise-label Exercices : + %div.col-md-8.col-lg-8.entreprise-info + - @facade.etablissement.exercices.each_with_index do |exercice, index| + %strong + = "#{exercice.dateFinExercice.year} : " = number_to_currency(exercice.ca) - %br + %br + .row.split-row + %div.col-md-12.col-lg-12.split-hr - unless @facade.entreprise.rna_information.nil? - = render partial: '/dossiers/infos_rna' \ No newline at end of file + = render partial: '/dossiers/infos_rna' + diff --git a/app/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml new file mode 100644 index 000000000..077929683 --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml @@ -0,0 +1,19 @@ +%div#first-block + %div.en-cours + %h2 Récapitulatif + %div.infos + %div #{@facade.dossier.nom_projet} + %div= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s + +%div#action-block + - if @facade.dossier.validated? + = form_tag(url_for({controller: :recapitulatif, action: :submit, dossier_id: @facade.dossier.id}), method: 'POST') do + %button.action= 'Procéder au dépôt définitif' + +%div#menu-block + +%div#infos-block + - if user_signed_in? && current_user.email == @facade.dossier.user.email + %div.split-hr-left + %div.dossier-state= @facade.dossier.display_state + %div.split-hr-left diff --git a/app/views/layouts/navbars/_navbar_users_recapitulatifcontroller_show.html.haml b/app/views/layouts/navbars/_navbar_users_recapitulatifcontroller_show.html.haml new file mode 100644 index 000000000..5695ae410 --- /dev/null +++ b/app/views/layouts/navbars/_navbar_users_recapitulatifcontroller_show.html.haml @@ -0,0 +1,29 @@ +%div.col-lg-8.col-md-8.main-info + %span{ 'data-toggle' => :tooltip, "data-placement" => :bottom, title: @facade.dossier.procedure.libelle } + = @facade.dossier.procedure.libelle.truncate(60) +%div.col-lg-3.col-md-3.options + %div.row.centered-option + %div.col-lg-12.col-md-12 + %div.dropdown-toggle{ 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } + %i.fa.fa-user + = t('dynamics.dossiers.involved') + %div.dropdown-menu.dropdown-menu-right.dropdown-pannel + %h4= t('dynamics.dossiers.followers.title') + %ul + - unless @facade.followers.empty? + - @facade.followers.each do |follower| + %li= follower.email + - else + = t('dynamics.dossiers.followers.empty') + %h4= t('dynamics.dossiers.invites.title') + %ul + - unless @facade.invites.empty? + - @facade.invites.each do |invite| + %li= invite.email + - else + = t('dynamics.dossiers.invites.empty') + + %li + =form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do + =text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation' + =submit_tag 'Ajouter', class: 'btn btn-success' diff --git a/app/views/users/commentaires/_commentaire.html.haml b/app/views/users/commentaires/_commentaire.html.haml new file mode 100644 index 000000000..314194c82 --- /dev/null +++ b/app/views/users/commentaires/_commentaire.html.haml @@ -0,0 +1,14 @@ +%div.commentaire + .row + %div.col-lg-12.col-md-12.comment-header + = commentaire.header + .row + %div.col-lg-12.col-md-12.content + = commentaire.body.html_safe + - if file = commentaire.piece_justificative + .row + %div.col-lg-12.col-md-12.file + = link_to file.content_url, class: 'link', target: '_blank' do + %span.fa.fa-file + %div + = file.original_filename diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index ee50144b6..c2347513a 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -1,31 +1,68 @@ -.row#recap_dossier - .col-md-4.col-lg-4 - .row - .col-md-6.col-lg-6 - %h2 Récapitulatif +%div.col-lg-12.col-md-12#users_recapitulatif_dossier_show - .col-md-5.col-lg-5 + .default_data_block + .row.show-block#messages + %div.header + %div.col-lg-10.col-md-10.title + .carret-right + .carret-down + MESSAGES + %div.col-lg-2.col-md-2.count + - message_count = @facade.commentaires.count + = (message_count == 1) ? "1 message" : "#{message_count} messages" + %div.body + %div.commentaires + - @facade.commentaires.object.sort.each do |commentaire| + = render partial: commentaire + .row + .col-lg-12.col-md-12 + %div.split-hr + .row + %div.col-lg-12.col-md-12#new-commentaire + = form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id, champ_id: @facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do + %textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"} + %h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier + = file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px' + %input.form-control.btn.btn-send{ type: 'submit', value: 'ENVOYER' } + - if last_comment = @facade.commentaires.first + %div.last-commentaire + .row + %div.col-lg-12.col-md-12.comment-header + = "DERNIER MESSAGE (#{last_comment.header})" + .row + %div.col-lg-12.col-md-12.content + = last_comment.body.html_safe + - if file = last_comment.piece_justificative + .row + %div.col-lg-12.col-md-12.file + = link_to file.content_url, class: 'link', target: '_blank' do + %span.fa.fa-file + %div + = file.original_filename + .row + .col-lg-12.col-md-12 + %div.new-action + ENVOYER UN MESSAGE - .col-md-3.col-lg-3 - %h2#dossier_id{:class => 'text-info', :style => 'text-align:right; margin-bottom:15px'} - = t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s + - unless @facade.entreprise.nil? + .default_data_block + %div.row.show-block#infos + %div.header + %div.col-lg-12.col-md-12.title + %div.carret-right + %div.carret-down + INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU + %div.body + = render partial: '/dossiers/infos_entreprise' - - if user_signed_in? && current_user.email == @facade.dossier.user.email - -if @facade.dossier.validated? - %br - = form_tag(url_for({controller: :recapitulatif, action: :submit, dossier_id: @facade.dossier.id}), method: 'POST') do - %button#validate_button.btn.btn-success - = 'Procéder au dépôt définitif' - -else - %h3{:class => 'text-success', :style => 'text-align:right'} - = @facade.dossier.display_state - -%br -- unless @facade.entreprise.nil? - = render partial: '/dossiers/infos_entreprise' - -= render partial: '/dossiers/infos_dossier' - -%div - %br - = render partial: 'dossiers/tab_objects_dossier' \ No newline at end of file + .default_data_block + %div.row.show-block#dossier + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + CONSTRUCTION DU DOSSIER + %div.col-lg-2.col-md-2.action + EDITER + %div.body + = render partial: '/dossiers/infos_dossier' From 1a3e23c6ef1e9db7ab1233eb1de9e933b37df053 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 2 Dec 2016 17:03:52 +0100 Subject: [PATCH 095/182] Change place lib repository --- {lib => app/lib}/carto/bano/address_retriever.rb | 0 {lib => app/lib}/carto/bano/driver.rb | 0 {lib => app/lib}/carto/bano/point_retriever.rb | 0 {lib => app/lib}/carto/geo_api/driver.rb | 0 {lib => app/lib}/carto/geo_api/pays.json | 0 {lib => app/lib}/carto/geocodeur.rb | 0 {lib => app/lib}/carto/sgmap/api.rb | 0 {lib => app/lib}/carto/sgmap/cadastre/adapter.rb | 0 {lib => app/lib}/carto/sgmap/quartiers_prioritaires/adapter.rb | 0 {lib => app/lib}/file_size_validator.rb | 0 {lib => app/lib}/github/api.rb | 0 {lib => app/lib}/github/releases.rb | 0 {lib => app/lib}/siade/api.rb | 0 {lib => app/lib}/siade/entreprise_adapter.rb | 0 {lib => app/lib}/siade/etablissement_adapter.rb | 0 {lib => app/lib}/siade/exercices_adapter.rb | 0 {lib => app/lib}/siade/rna_adapter.rb | 0 {lib => app/lib}/tasks/.keep | 0 {lib => app/lib}/tasks/cloud_storage.rake | 0 {lib => app/lib}/tasks/dev.rake | 0 {lib => app/lib}/tasks/opensimplif_import.rake | 0 21 files changed, 0 insertions(+), 0 deletions(-) rename {lib => app/lib}/carto/bano/address_retriever.rb (100%) rename {lib => app/lib}/carto/bano/driver.rb (100%) rename {lib => app/lib}/carto/bano/point_retriever.rb (100%) rename {lib => app/lib}/carto/geo_api/driver.rb (100%) rename {lib => app/lib}/carto/geo_api/pays.json (100%) rename {lib => app/lib}/carto/geocodeur.rb (100%) rename {lib => app/lib}/carto/sgmap/api.rb (100%) rename {lib => app/lib}/carto/sgmap/cadastre/adapter.rb (100%) rename {lib => app/lib}/carto/sgmap/quartiers_prioritaires/adapter.rb (100%) rename {lib => app/lib}/file_size_validator.rb (100%) rename {lib => app/lib}/github/api.rb (100%) rename {lib => app/lib}/github/releases.rb (100%) rename {lib => app/lib}/siade/api.rb (100%) rename {lib => app/lib}/siade/entreprise_adapter.rb (100%) rename {lib => app/lib}/siade/etablissement_adapter.rb (100%) rename {lib => app/lib}/siade/exercices_adapter.rb (100%) rename {lib => app/lib}/siade/rna_adapter.rb (100%) rename {lib => app/lib}/tasks/.keep (100%) rename {lib => app/lib}/tasks/cloud_storage.rake (100%) rename {lib => app/lib}/tasks/dev.rake (100%) rename {lib => app/lib}/tasks/opensimplif_import.rake (100%) diff --git a/lib/carto/bano/address_retriever.rb b/app/lib/carto/bano/address_retriever.rb similarity index 100% rename from lib/carto/bano/address_retriever.rb rename to app/lib/carto/bano/address_retriever.rb diff --git a/lib/carto/bano/driver.rb b/app/lib/carto/bano/driver.rb similarity index 100% rename from lib/carto/bano/driver.rb rename to app/lib/carto/bano/driver.rb diff --git a/lib/carto/bano/point_retriever.rb b/app/lib/carto/bano/point_retriever.rb similarity index 100% rename from lib/carto/bano/point_retriever.rb rename to app/lib/carto/bano/point_retriever.rb diff --git a/lib/carto/geo_api/driver.rb b/app/lib/carto/geo_api/driver.rb similarity index 100% rename from lib/carto/geo_api/driver.rb rename to app/lib/carto/geo_api/driver.rb diff --git a/lib/carto/geo_api/pays.json b/app/lib/carto/geo_api/pays.json similarity index 100% rename from lib/carto/geo_api/pays.json rename to app/lib/carto/geo_api/pays.json diff --git a/lib/carto/geocodeur.rb b/app/lib/carto/geocodeur.rb similarity index 100% rename from lib/carto/geocodeur.rb rename to app/lib/carto/geocodeur.rb diff --git a/lib/carto/sgmap/api.rb b/app/lib/carto/sgmap/api.rb similarity index 100% rename from lib/carto/sgmap/api.rb rename to app/lib/carto/sgmap/api.rb diff --git a/lib/carto/sgmap/cadastre/adapter.rb b/app/lib/carto/sgmap/cadastre/adapter.rb similarity index 100% rename from lib/carto/sgmap/cadastre/adapter.rb rename to app/lib/carto/sgmap/cadastre/adapter.rb diff --git a/lib/carto/sgmap/quartiers_prioritaires/adapter.rb b/app/lib/carto/sgmap/quartiers_prioritaires/adapter.rb similarity index 100% rename from lib/carto/sgmap/quartiers_prioritaires/adapter.rb rename to app/lib/carto/sgmap/quartiers_prioritaires/adapter.rb diff --git a/lib/file_size_validator.rb b/app/lib/file_size_validator.rb similarity index 100% rename from lib/file_size_validator.rb rename to app/lib/file_size_validator.rb diff --git a/lib/github/api.rb b/app/lib/github/api.rb similarity index 100% rename from lib/github/api.rb rename to app/lib/github/api.rb diff --git a/lib/github/releases.rb b/app/lib/github/releases.rb similarity index 100% rename from lib/github/releases.rb rename to app/lib/github/releases.rb diff --git a/lib/siade/api.rb b/app/lib/siade/api.rb similarity index 100% rename from lib/siade/api.rb rename to app/lib/siade/api.rb diff --git a/lib/siade/entreprise_adapter.rb b/app/lib/siade/entreprise_adapter.rb similarity index 100% rename from lib/siade/entreprise_adapter.rb rename to app/lib/siade/entreprise_adapter.rb diff --git a/lib/siade/etablissement_adapter.rb b/app/lib/siade/etablissement_adapter.rb similarity index 100% rename from lib/siade/etablissement_adapter.rb rename to app/lib/siade/etablissement_adapter.rb diff --git a/lib/siade/exercices_adapter.rb b/app/lib/siade/exercices_adapter.rb similarity index 100% rename from lib/siade/exercices_adapter.rb rename to app/lib/siade/exercices_adapter.rb diff --git a/lib/siade/rna_adapter.rb b/app/lib/siade/rna_adapter.rb similarity index 100% rename from lib/siade/rna_adapter.rb rename to app/lib/siade/rna_adapter.rb diff --git a/lib/tasks/.keep b/app/lib/tasks/.keep similarity index 100% rename from lib/tasks/.keep rename to app/lib/tasks/.keep diff --git a/lib/tasks/cloud_storage.rake b/app/lib/tasks/cloud_storage.rake similarity index 100% rename from lib/tasks/cloud_storage.rake rename to app/lib/tasks/cloud_storage.rake diff --git a/lib/tasks/dev.rake b/app/lib/tasks/dev.rake similarity index 100% rename from lib/tasks/dev.rake rename to app/lib/tasks/dev.rake diff --git a/lib/tasks/opensimplif_import.rake b/app/lib/tasks/opensimplif_import.rake similarity index 100% rename from lib/tasks/opensimplif_import.rake rename to app/lib/tasks/opensimplif_import.rake From bcc4c01b3974dad6f5daaf1a7c4f90024fb21a0c Mon Sep 17 00:00:00 2001 From: JC Date: Fri, 2 Dec 2016 19:05:24 +0100 Subject: [PATCH 096/182] Expand search bar when clicked --- app/assets/javascripts/search.js | 6 +++++- app/assets/stylesheets/search.scss | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/search.js b/app/assets/javascripts/search.js index 8608a45cb..4bde15d0d 100644 --- a/app/assets/javascripts/search.js +++ b/app/assets/javascripts/search.js @@ -16,6 +16,8 @@ function search_fadeIn(){ 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); @@ -46,6 +48,8 @@ function search_fadeOut(){ 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); @@ -53,4 +57,4 @@ function search_fadeOut(){ init_search_anim(); }); -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/search.scss b/app/assets/stylesheets/search.scss index 037e2a119..0d65ab538 100644 --- a/app/assets/stylesheets/search.scss +++ b/app/assets/stylesheets/search.scss @@ -8,9 +8,9 @@ } #mask_search{ - background-color: rgba(0,0,0, 0.4); display: none; position: fixed; + background-color: rgba(0, 0, 0, 0.4); top: 0; left: 0; width: 100%; From e24008bae457bae3f7c6fc0865fc51149288dca9 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 11:27:26 +0100 Subject: [PATCH 097/182] font-size increased for options in download menu (dossiers#index), adding caret to display dropdown --- app/assets/stylesheets/navbar.scss | 1 + app/views/dossiers/_download_dossiers.html.haml | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index c63e405c7..81490d451 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -94,6 +94,7 @@ #download-menu { .btn-sm { color: #000000; + font-size: 18px; } } diff --git a/app/views/dossiers/_download_dossiers.html.haml b/app/views/dossiers/_download_dossiers.html.haml index 088f18dca..cfd478d8c 100644 --- a/app/views/dossiers/_download_dossiers.html.haml +++ b/app/views/dossiers/_download_dossiers.html.haml @@ -7,14 +7,14 @@ %a.dropdown-toggle#dropdownDownloadMenu.button_navbar{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } %i.fa.fa-download = t('dynamics.backoffice.download_all_dossiers') - -#%span.caret + %span.caret %ul.dropdown-menu.dropdown-menu-right %li - = link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm' } do + = link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do = t('dynamics.backoffice.format_csv') %li - = link_to backoffice_download_dossiers_tps_path(format: :xlsx, procedure_id: params[:id]), { class: 'btn btn-sm' } do + = link_to backoffice_download_dossiers_tps_path(format: :xlsx, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do = t('dynamics.backoffice.format_xlsx') %li - = link_to backoffice_download_dossiers_tps_path(format: :ods, procedure_id: params[:id]), { class: 'btn btn-sm' } do + = link_to backoffice_download_dossiers_tps_path(format: :ods, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do = t('dynamics.backoffice.format_ods') From 52631a39de86dfc48d359f9159fc3d494a84f5e0 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 11:34:56 +0100 Subject: [PATCH 098/182] Adding fixed-right css class for close btn on right pan (from dossiers#index, the cool one, for field selection) --- app/assets/stylesheets/backoffice.scss | 4 ++++ app/assets/stylesheets/dossiers.scss | 1 - app/views/backoffice/dossiers/_pref_list.html.haml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/backoffice.scss b/app/assets/stylesheets/backoffice.scss index 615ed43a8..539f0c37c 100644 --- a/app/assets/stylesheets/backoffice.scss +++ b/app/assets/stylesheets/backoffice.scss @@ -11,6 +11,10 @@ height: auto; } } + .fixed-right { + position: fixed; + right: 20px; + } } #pref_list { diff --git a/app/assets/stylesheets/dossiers.scss b/app/assets/stylesheets/dossiers.scss index e69d8bb19..c0804e990 100644 --- a/app/assets/stylesheets/dossiers.scss +++ b/app/assets/stylesheets/dossiers.scss @@ -70,4 +70,3 @@ h5 span { border-bottom: 1px solid #FFFFFF; margin: 20px 10px 0px 0; } - diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index 0cb0f9d1e..3f43e9f93 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -1,4 +1,4 @@ -%button#pref_list_dossier_close_action.btn.btn-danger.btn-xs{style:'float:right'} +%button#pref_list_dossier_close_action.btn.btn-danger.btn-xs.fixed-right %i.fa.fa-close %h3 =t('dynamics.backoffice.pref_list.title') From 92e8740ee3816682e1db959f4ec65b06c4126f16 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 5 Dec 2016 11:45:30 +0100 Subject: [PATCH 099/182] New CGU left panel --- app/assets/javascripts/cgu.js | 9 + app/assets/stylesheets/cgu.scss | 4 + app/views/cgu/index.html.haml | 331 +++++++++--------- .../_left_panel_cgucontroller_index.html.haml | 54 +++ 4 files changed, 236 insertions(+), 162 deletions(-) create mode 100644 app/assets/javascripts/cgu.js create mode 100644 app/assets/stylesheets/cgu.scss create mode 100644 app/views/layouts/left_panels/_left_panel_cgucontroller_index.html.haml diff --git a/app/assets/javascripts/cgu.js b/app/assets/javascripts/cgu.js new file mode 100644 index 000000000..b0008d676 --- /dev/null +++ b/app/assets/javascripts/cgu.js @@ -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); + }); +} \ No newline at end of file diff --git a/app/assets/stylesheets/cgu.scss b/app/assets/stylesheets/cgu.scss new file mode 100644 index 000000000..5053eaa4b --- /dev/null +++ b/app/assets/stylesheets/cgu.scss @@ -0,0 +1,4 @@ +#cgu { + margin-left: 2em; + margin-right: 2em; +} \ No newline at end of file diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml index 35ad156d8..37b16adb6 100644 --- a/app/views/cgu/index.html.haml +++ b/app/views/cgu/index.html.haml @@ -1,167 +1,174 @@ -%h2 - Condition d’utilisation du service « TPS » pour téléprocédure simplifiée -%br -%h3 - Editeur -%p Ce service est proposé par le Secrétariat général pour la modernisation de l’action publique, un service interministériel du Premier Ministre, mis à disposition du ministère de la Réforme de l’Etat, de la Décentralisation et de la Fonction publique. -%p Il est opéré par la Direction interministérielle du numérique et du système d'information et de communication de l'Etat (DINSIC). -%p -%p - %strong Secrétariat Général pour la Modernisation de l’Action publique - %br/ - 64-70 allée de Bercy - %br/ - 75572 Paris Cedex 12 -%p - %strong Directeur de la publication -%p Laure de LA BRETECHE -%p - %strong Responsable éditorial -%p Henri VERDIER -%p - %strong Responsable éditorial délégué -%p Philippe VRIGNAUD -%br -%h3 - Ingénierie et hébergement informatique -%p L'ingénierie du site est assurée par : -%p - %strong OVH - %br/ - SAS au capital de 10 000 000 € - %br/ - RCS Roubaix – Tourcoing 424 761 419 00045 - %br/ - Code APE 6202A - %br/ - N° TVA : FR 22 424 761 419 - %br/ - Siège social : 2 rue Kellermann - 59100 Roubaix - France. -%br -%h3 - Object du site internet - %a{:href => "https://tps.apientreprise.fr/"} - %strong tps.apientreprise.fr -%p - Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et l’examen par plusieurs services des demandes formulées par les usagers auprès d’un ou organismes publics. -%br -%h3 - Acteurs de - %a{:href => "https://tps.apientreprise.fr/"} - TPS -%p Les acteurs de TPS sont les suivants : -%ul - %li Le SGMAP qui héberge le service TPS, le maintien en condition opérationnelle et gère les droits d’accès - %li L’administrateur au sein d’une administration donnée qui crée la démarche en ligne - %li Le ou les accompagnateurs au sein d’une administration donnée, qui reçoivent les démarches des usagers, les accompagnent le cas échéant dans le bouclage de leurs dossier, instruisent la demande et décident des suites à donner aux demandes - %li Les Usagers qui formulent les demandes en ligne via le formulaire qui leur est mis à disposition -%br -%h3 - Déclaration CNIL -%p Le SGMAP a procédé à la déclaration CNIL de TPS. Celle-ci porte le numéro "1986658 v 0" à la date du 30 août 2016. Néanmoins les administrations devront procéder à une déclaration complémentaire auprès de la CNIL si les données du formulaire qu’elles ont produit comportent des données de la nature suivante : -%ul - %li N° de sécurité sociale, - %li Infractions, condamnations, mesures de sécurité, - %li - %a{:href => "https://www.declaration.cnil.fr/declarations/declaration/donneesSensibles_DN.display.action"} Opinions philosophiques, politiques, religieuses, syndicales, vie sexuelle, données de santé, origine raciale. -%br -%h3 - Données collectées et responsabilité des organismes publics à l’initiative de démarches en ligne avec TPS. -%p Les données collectées par le service sont définis par les services publics utilisateurs du service qui arrêtent, sous leur responsabilité, la liste des informations qui seront demandées à l’usager. -%p Les organismes publics s’engagent à créer des démarches pour collecter les informations strictement nécessaires à l’examen des demandes formulées auprès des acteurs publics, dans le cadre juridique prévu par chacune des démarches. -%p Ces données sont collectées et traitées par les seuls services concernés par l’examen des demandes, et précisées dans la notice d’utilisation de chaque démarche publiée par l’organisme public. +#cgu + %h2 + Condition d’utilisation du service « TPS » pour téléprocédure simplifiée + %br + %h3#editeur + Editeur + %p Ce service est proposé par le Secrétariat général pour la modernisation de l’action publique, un service interministériel du Premier Ministre, mis à disposition du ministère de la Réforme de l’Etat, de la Décentralisation et de la Fonction publique. + %p Il est opéré par la Direction interministérielle du numérique et du système d'information et de communication de l'Etat (DINSIC). + %p + %p + %strong Secrétariat Général pour la Modernisation de l’Action publique + %br/ + 64-70 allée de Bercy + %br/ + 75572 Paris Cedex 12 + %p + %strong Directeur de la publication + %p Laure de LA BRETECHE + %p + %strong Responsable éditorial + %p Henri VERDIER + %p + %strong Responsable éditorial délégué + %p Philippe VRIGNAUD + %br + %h3#ingenieurie_hebergement + Ingénierie et hébergement informatique + %p L'ingénierie du site est assurée par : + %p + %strong OVH + %br/ + SAS au capital de 10 000 000 € + %br/ + RCS Roubaix – Tourcoing 424 761 419 00045 + %br/ + Code APE 6202A + %br/ + N° TVA : FR 22 424 761 419 + %br/ + Siège social : 2 rue Kellermann - 59100 Roubaix - France. + %br + %h3#object_website + Object du site internet + %a{:href => "https://tps.apientreprise.fr/"} + %strong tps.apientreprise.fr + %p + Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et l’examen par plusieurs services des demandes formulées par les usagers auprès d’un ou organismes publics. + %br + %h3#acteurs + Acteurs de + %a{:href => "https://tps.apientreprise.fr/"} + TPS + %p Les acteurs de TPS sont les suivants : + %ul + %li Le SGMAP qui héberge le service TPS, le maintien en condition opérationnelle et gère les droits d’accès + %li L’administrateur au sein d’une administration donnée qui crée la démarche en ligne + %li Le ou les accompagnateurs au sein d’une administration donnée, qui reçoivent les démarches des usagers, les accompagnent le cas échéant dans le bouclage de leurs dossier, instruisent la demande et décident des suites à donner aux demandes + %li Les Usagers qui formulent les demandes en ligne via le formulaire qui leur est mis à disposition + %br + %h3#CNIL + Déclaration CNIL + %p Le SGMAP a procédé à la déclaration CNIL de TPS. Celle-ci porte le numéro "1986658 v 0" à la date du 30 août 2016. Néanmoins les administrations devront procéder à une déclaration complémentaire auprès de la CNIL si les données du formulaire qu’elles ont produit comportent des données de la nature suivante : + %ul + %li N° de sécurité sociale, + %li Infractions, condamnations, mesures de sécurité, + %li + %a{:href => "https://www.declaration.cnil.fr/declarations/declaration/donneesSensibles_DN.display.action"} Opinions philosophiques, politiques, religieuses, syndicales, vie sexuelle, données de santé, origine raciale. + %br + %h3#data_collects + Données collectées et responsabilité des organismes publics à l’initiative de démarches en ligne avec TPS. + %p Les données collectées par le service sont définis par les services publics utilisateurs du service qui arrêtent, sous leur responsabilité, la liste des informations qui seront demandées à l’usager. + %p Les organismes publics s’engagent à créer des démarches pour collecter les informations strictement nécessaires à l’examen des demandes formulées auprès des acteurs publics, dans le cadre juridique prévu par chacune des démarches. + %p Ces données sont collectées et traitées par les seuls services concernés par l’examen des demandes, et précisées dans la notice d’utilisation de chaque démarche publiée par l’organisme public. -%br -%h3 Traitement des données à caractère personnel -%h4 Données personnelles : -%p - En application de la loi n°78-17 Informatique et Libertés du 6 janvier 1978, vous disposez d'un droit d'accès, de rectification, de modification et de suppression concernant les données qui vous concernent. Vous pouvez exercer ce droit à travers la rubrique - %a{:href => "http://www.faire-simple.gouv.fr/contact"} Contact -%h4 Données de connexion : -%p Conformément à la loi n°2004-575 du 21 juin 2004 pour la confiance dans l’économie numérique, certaines données de connexion sont conservées par le service aux fins de protection contre les intrusions et de poursuites judiciaires le cas échéant. Ces données sont conservées pendant un an. + %br + %h3#individual_data + Traitement des données à caractère personnel + %h4 Données personnelles : + %p + En application de la loi n°78-17 Informatique et Libertés du 6 janvier 1978, vous disposez d'un droit d'accès, de rectification, de modification et de suppression concernant les données qui vous concernent. Vous pouvez exercer ce droit à travers la rubrique + %a{:href => "http://www.faire-simple.gouv.fr/contact"} Contact + %h4 Données de connexion : + %p Conformément à la loi n°2004-575 du 21 juin 2004 pour la confiance dans l’économie numérique, certaines données de connexion sont conservées par le service aux fins de protection contre les intrusions et de poursuites judiciaires le cas échéant. Ces données sont conservées pendant un an. -%br -%h3 Règles relatives aux informations sur les entreprises mises à disposition par les partenaires publics du SGMAP. -%p Le service « TPS », opéré par le SGMAP propose l’affichage aux internautes d’informations issues de deux bases de données distinctes gérées par quatre organismes qui sont : -%br -%h4 L’INSEE : -%p - %strong Insee (Institut national de la statistique et des études économiques) - %br/ - 18, boulevard Adolphe Pinard - %br/ - 75675 Paris cedex 14 - %br/ - Tél. : 01 41 17 50 50 -%p - %a{:href => "http://www.insee.fr/fr/bases-de-donnees/default.asp?page=sirene.htm"} Informations de la base SIRENE - %br/ - %a{:href => "http://www.sirene.fr/sirene/public/static/mentions-legales"} Condition légales d’utilisation de service SIRENE -%br -%h4 INFOGREFFE : -%p - %strong INFOGREFFE  - %br/ - Immeuble Le Parisien - %br/ - 5-7, avenue de Paris - %br/ - 94300 VINCENNES -%p - Les informations transmises aux autorités publiques en charges de l’examen de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes : - %a{:href => "https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html"} https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html -%p - %a{:href => "https://www.infogreffe.fr/societes/cgu-cgv.html"} Conditions générales d’utilisation des données d’infogreffe + %br + %h3#entreprise_information + Règles relatives aux informations sur les entreprises mises à disposition par les partenaires publics du SGMAP. + %p Le service « TPS », opéré par le SGMAP propose l’affichage aux internautes d’informations issues de deux bases de données distinctes gérées par quatre organismes qui sont : + %br + %h4 L’INSEE : + %p + %strong Insee (Institut national de la statistique et des études économiques) + %br/ + 18, boulevard Adolphe Pinard + %br/ + 75675 Paris cedex 14 + %br/ + Tél. : 01 41 17 50 50 + %p + %a{:href => "http://www.insee.fr/fr/bases-de-donnees/default.asp?page=sirene.htm"} Informations de la base SIRENE + %br/ + %a{:href => "http://www.sirene.fr/sirene/public/static/mentions-legales"} Condition légales d’utilisation de service SIRENE + %br + %h4 INFOGREFFE : + %p + %strong INFOGREFFE  + %br/ + Immeuble Le Parisien + %br/ + 5-7, avenue de Paris + %br/ + 94300 VINCENNES + %p + Les informations transmises aux autorités publiques en charges de l’examen de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes : + %a{:href => "https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html"} https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html + %p + %a{:href => "https://www.infogreffe.fr/societes/cgu-cgv.html"} Conditions générales d’utilisation des données d’infogreffe -%br -%h4 TPS fait appel à d’autres services opérés par le SGMAP afin de faciliter les démarches administratives : -%br -%p - %strong> France CONNECT - \ : informations complémentaires : - %a{:href => "https://franceconnect.gouv.fr/"} https://franceconnect.gouv.fr/ -%p - %strong La base d’adresse nationale : - %a{:href => "https://adresse.data.gouv.fr/"} https://adresse.data.gouv.fr/ -%p - %strong TPS est un service de l’Etat Plateforme : + %br + %h4 TPS fait appel à d’autres services opérés par le SGMAP afin de faciliter les démarches administratives : + %br + %p + %strong> France CONNECT + \ : informations complémentaires : + %a{:href => "https://franceconnect.gouv.fr/"} https://franceconnect.gouv.fr/ + %p + %strong La base d’adresse nationale : + %a{:href => "https://adresse.data.gouv.fr/"} https://adresse.data.gouv.fr/ + %p + %strong TPS est un service de l’Etat Plateforme : - %a{:href => "http://etatplateforme.modernisation.gouv.fr/"} http://etatplateforme.modernisation.gouv.fr/ -%p - %strong Il met en œuvre les principes définis par le programme « Dites-le nous une fois » -%p - %a{:href => "http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises"} http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises -%br -%h3 Droit de reproduction : -%p Toute copie de pages du site doit avoir obtenu l’autorisation du directeur de la publication. -%p La création de liens avec le site « tps.apientreprise.fr » est libre. -%p Le SGMAP se réserve le droit de demander la suppression d’un lien qu’elle estime non conforme à l’objet du service « tps.apientreprise.fr » aux missions du SGMAP, ou plus généralement aux principes véhiculés par l’Administration. -%p L’autorisation de création de liens est valable pour tout support, à l’exception de ceux diffusant des informations à caractère raciste, pornographique, xénophobe ou pouvant porter atteinte à la sensibilité du plus grand nombre. -%p - La rubrique - %a{:href => "http://www.faire-simple.gouv.fr/contact"} Contactez-nous - est à votre disposition pour nous faire part de vos remarques et suggestions. -%br -%h3 Propriété intellectuelle, droits d’auteur et copyright -%p Ce service relève de la législation française et internationale sur le droit d'auteur et la propriété intellectuelle. Tous les droits de reproduction sont réservés, y compris pour les documents téléchargeables et les représentations iconographiques et photographiques. -%p La reproduction de tout ou partie de ce site sur un support électronique quel qu'il soit est formellement interdite sauf autorisation expresse du Directeur de la publication (voir ci-après : Reproduction des contenus). -%p Les marques citées sur ce site sont protégées par les organismes qui en sont propriétaires. + %a{:href => "http://etatplateforme.modernisation.gouv.fr/"} http://etatplateforme.modernisation.gouv.fr/ + %p + %strong Il met en œuvre les principes définis par le programme « Dites-le nous une fois » + %p + %a{:href => "http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises"} http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises + %br + %h3#reproduction + Droit de reproduction : + %p Toute copie de pages du site doit avoir obtenu l’autorisation du directeur de la publication. + %p La création de liens avec le site « tps.apientreprise.fr » est libre. + %p Le SGMAP se réserve le droit de demander la suppression d’un lien qu’elle estime non conforme à l’objet du service « tps.apientreprise.fr » aux missions du SGMAP, ou plus généralement aux principes véhiculés par l’Administration. + %p L’autorisation de création de liens est valable pour tout support, à l’exception de ceux diffusant des informations à caractère raciste, pornographique, xénophobe ou pouvant porter atteinte à la sensibilité du plus grand nombre. + %p + La rubrique + %a{:href => "http://www.faire-simple.gouv.fr/contact"} Contactez-nous + est à votre disposition pour nous faire part de vos remarques et suggestions. + %br + %h3#propriete_intellectuelle + Propriété intellectuelle, droits d’auteur et copyright + %p Ce service relève de la législation française et internationale sur le droit d'auteur et la propriété intellectuelle. Tous les droits de reproduction sont réservés, y compris pour les documents téléchargeables et les représentations iconographiques et photographiques. + %p La reproduction de tout ou partie de ce site sur un support électronique quel qu'il soit est formellement interdite sauf autorisation expresse du Directeur de la publication (voir ci-après : Reproduction des contenus). + %p Les marques citées sur ce site sont protégées par les organismes qui en sont propriétaires. -%br -%h3#navigateurs Logiciels nécessaires à la consultation -%p Ce service est optimisé pour un affichage en 1024*768. Il est prévu pour : -%ul - %li les versions 10 ou supérieures d'Internet Explorer (sur windows 7 ou plus) - %li toutes versions de Microsoft Edge - %li les versions 19 ou supérieures d’Opera - %li les versions 8 ou supérieures de Safari - %li les versions 45.3.0 ou 48 ou supérieures de Firefox - %li les versions 40 ou supérieures de Chrome -%p - La liste des versions compatibles a volontairement été réduite afin de garantir une meilleure sécurité sur nos services. Par ailleurs, le service TPS peut fonctionner sur des versions antérieures à celles évoquées ci-dessus mais sans garantie par le SGMAP. -%p Certains navigateurs peuvent bloquer par défaut l'ouverture de fenêtres sur ce site. Afin de vous permettre d'afficher certaines pages, vous devez autoriser l'ouverture des fenêtres lorsque le navigateur vous le propose en cliquant sur le bandeau d'avertissement alors affiché en haut de la page. En cas d'absence de message d'avertissement de la part de votre navigateur, vous devez configurer celui-ci afin qu'il autorise l'ouverture des fenêtres pour le site "tps.apientreprise.fr". -%br -%h3 Conception & Réalisation -%p SGMAP -%p   -%p   \ No newline at end of file + %br + %h3#navigateurs + Logiciels nécessaires à la consultation + %p Ce service est optimisé pour un affichage en 1024*768. Il est prévu pour : + %ul + %li les versions 10 ou supérieures d'Internet Explorer (sur windows 7 ou plus) + %li toutes versions de Microsoft Edge + %li les versions 19 ou supérieures d’Opera + %li les versions 8 ou supérieures de Safari + %li les versions 45.3.0 ou 48 ou supérieures de Firefox + %li les versions 40 ou supérieures de Chrome + %p + La liste des versions compatibles a volontairement été réduite afin de garantir une meilleure sécurité sur nos services. Par ailleurs, le service TPS peut fonctionner sur des versions antérieures à celles évoquées ci-dessus mais sans garantie par le SGMAP. + %p Certains navigateurs peuvent bloquer par défaut l'ouverture de fenêtres sur ce site. Afin de vous permettre d'afficher certaines pages, vous devez autoriser l'ouverture des fenêtres lorsque le navigateur vous le propose en cliquant sur le bandeau d'avertissement alors affiché en haut de la page. En cas d'absence de message d'avertissement de la part de votre navigateur, vous devez configurer celui-ci afin qu'il autorise l'ouverture des fenêtres pour le site "tps.apientreprise.fr". + %br + %h3#conception + Conception & Réalisation + %p SGMAP + %p   + %p   \ No newline at end of file diff --git a/app/views/layouts/left_panels/_left_panel_cgucontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_cgucontroller_index.html.haml new file mode 100644 index 000000000..199d3cb54 --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_cgucontroller_index.html.haml @@ -0,0 +1,54 @@ +%div#cgu_menu_block + #procedure_list{style: 'margin-top: 0;'} + = link_to cgu_path(:anchor => "editeur") do + %div.procedure_list_element + Editeur + + = link_to cgu_path(:anchor => "ingenieurie_hebergement") do + %div.procedure_list_element + Ingénierie et hébergement informatique + + = link_to cgu_path(:anchor => "object_website") do + %div.procedure_list_element + Object du site internet + + = link_to cgu_path(:anchor => "acteurs") do + %div.procedure_list_element + Acteurs de TPS + + = link_to cgu_path(:anchor => "CNIL") do + %div.procedure_list_element + Déclaration CNIL + + = link_to cgu_path(:anchor => "data_collects") do + %div.procedure_list_element + Données collectées et responsabilité des organismes utilisateurs + + = link_to cgu_path(:anchor => "individual_data") do + %div.procedure_list_element + Traitement des données à caractère personnel + + = link_to cgu_path(:anchor => "entreprise_information") do + %div.procedure_list_element + Règles relatives aux informations sur les entreprises mises à disposibition + + = link_to cgu_path(:anchor => "reproduction") do + %div.procedure_list_element + Droit de reproduction + + = link_to cgu_path(:anchor => "propriete_intellectuelle") do + %div.procedure_list_element + Propriété intellectuelle + + = link_to cgu_path(:anchor => "navigateurs") do + %div.procedure_list_element + Logiciels nécessaires à la consultation + + = link_to cgu_path(:anchor => "conception") do + %div.procedure_list_element + Conception et Réalisation + + %div.procedure_list_element + + %div.procedure_list_element + From b698046e1ee9e240ddc2ea18a86b470fc0a99871 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 14:06:38 +0100 Subject: [PATCH 100/182] Adding layout for credentials, this dropdown is shown when you pass hover sign_out button. It display email informations about the current gestionnaire/user --- app/assets/javascripts/default_data_block.js | 34 ++++++++++++------- app/assets/stylesheets/navbar.scss | 7 ++++ .../administrateurs/_login_banner.html.haml | 2 +- .../gestionnaires/_login_banner.html.haml | 2 +- app/views/layouts/_credentials.html.haml | 3 ++ .../navbars/_navbar_log_options.html.haml | 5 ++- app/views/users/_login_banner.html.haml | 10 +++--- 7 files changed, 41 insertions(+), 22 deletions(-) create mode 100644 app/views/layouts/_credentials.html.haml diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 695e67804..25d39271a 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -7,28 +7,36 @@ function init_default_data_block() { $('.default_data_block #dossier .carret-down').toggle(); $('.default_data_block .title').click(function () { - toggle_default_data_bloc(this, 400); + toggle_default_data_bloc(this, 400); + }); + + $('#sign_out').hover(function () { + $(this).find('#credentials').toggle(); + }); + + $('#sign_out').off(function () { + $(this).find('credentials').toggle(); }); $('.new-action').click(function () { - var messages_block = $(this).parents().closest('.default_data_block').find('.title') - toggle_default_data_bloc(messages_block, 400); + 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); + 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"); - } + 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.children('.body').slideToggle(duration); - block.find('.carret-right').toggle(); - block.find('.carret-down').toggle(); + block.find('.carret-right').toggle(); + block.find('.carret-down').toggle(); } } diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 81490d451..fdb9821d1 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -175,3 +175,10 @@ .button_navbar:hover, .button-navbar-action:hover { text-decoration: none; } + +#credentials { + display: none; + width: initial; + padding: 10px; + left: -130px; +} diff --git a/app/views/administrateurs/_login_banner.html.haml b/app/views/administrateurs/_login_banner.html.haml index 9bbcd2db1..5bd922746 100644 --- a/app/views/administrateurs/_login_banner.html.haml +++ b/app/views/administrateurs/_login_banner.html.haml @@ -1 +1 @@ -= link_to "", '/administrateurs/sign_out', method: :delete, :class => 'btn btn-md fa fa-sign-out' \ No newline at end of file += link_to "", "/administrateurs/sign_out", method: :delete, class: "btn btn-md fa fa-sign-out" diff --git a/app/views/gestionnaires/_login_banner.html.haml b/app/views/gestionnaires/_login_banner.html.haml index 797c71352..42d8b71d9 100644 --- a/app/views/gestionnaires/_login_banner.html.haml +++ b/app/views/gestionnaires/_login_banner.html.haml @@ -1 +1 @@ -= link_to "", '/gestionnaires/sign_out', method: :delete, :class => 'btn btn-md fa fa-sign-out' \ No newline at end of file += link_to "", "/gestionnaires/sign_out", method: :delete, class: "btn btn-md fa fa-sign-out" diff --git a/app/views/layouts/_credentials.html.haml b/app/views/layouts/_credentials.html.haml new file mode 100644 index 000000000..09d5ead3e --- /dev/null +++ b/app/views/layouts/_credentials.html.haml @@ -0,0 +1,3 @@ +%div.dropdown-menu#credentials + = @current_gestionnaire.email if @current_gestionnaire + = @current_user.email if @current_user diff --git a/app/views/layouts/navbars/_navbar_log_options.html.haml b/app/views/layouts/navbars/_navbar_log_options.html.haml index aa17b0579..885037252 100644 --- a/app/views/layouts/navbars/_navbar_log_options.html.haml +++ b/app/views/layouts/navbars/_navbar_log_options.html.haml @@ -3,14 +3,17 @@ -if user_signed_in? .col-lg-1.col-md-1#sign_out.no-padding = render partial: 'users/login_banner' + = render partial: 'layouts/credentials' -elsif gestionnaire_signed_in? .col-lg-1.col-md-1#sign_out.no-padding = render partial: 'gestionnaires/login_banner' + = render partial: 'layouts/credentials' -elsif administrateur_signed_in? .col-lg-1.col-md-1#sign_out.no-padding = render partial: 'administrateurs/login_banner' + = render partial: 'layouts/credentials' -else .col-lg-1.col-md-1#sign_in = link_to "Connexion", '/users/sign_in', :class => 'btn btn-lg' -unless Features.unified_login - = link_to "Accompagnateur", '/gestionnaires/sign_in', :class => 'btn btn-md' \ No newline at end of file + = link_to "Accompagnateur", '/gestionnaires/sign_in', :class => 'btn btn-md' diff --git a/app/views/users/_login_banner.html.haml b/app/views/users/_login_banner.html.haml index a85621d5b..c002f3c99 100644 --- a/app/views/users/_login_banner.html.haml +++ b/app/views/users/_login_banner.html.haml @@ -1,10 +1,8 @@ --if current_user.loged_in_with_france_connect? +- if current_user.loged_in_with_france_connect? %div{ id: "fconnect-profile", "data-fc-logout-url" => '/users/sign_out" data-method="delete' } %a.text-info{ href: "#" } = "#{current_user.given_name} #{current_user.family_name}" + = link_to "", "/users/sign_out", method: :delete, class: "btn fa fa-power-off off-fc-link" - = link_to "", '/users/sign_out', method: :delete, :class => 'btn fa fa-power-off off-fc-link' - --else - = link_to "", '/users/sign_out', method: :delete, :class => 'btn btn-md fa fa-sign-out' - +- else + = link_to "", "/users/sign_out", method: :delete, class: "btn btn-md fa fa-sign-out" From 271ce624762514bc5167b4931a4bca5ba67f1963 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 14:45:00 +0100 Subject: [PATCH 101/182] Adding logout information for sign_out hover, changing colors for links --- app/assets/stylesheets/navbar.scss | 15 ++++++++++++++- app/views/layouts/_credentials.html.haml | 1 + config/locales/en.yml | 2 ++ config/locales/fr.yml | 4 +++- db/schema.rb | 13 ++++++++++++- 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index fdb9821d1..3bc32b95d 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -71,22 +71,30 @@ #sign_in{ margin-top: 7px; - .btn{ + .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; + } } } } @@ -181,4 +189,9 @@ width: initial; padding: 10px; left: -130px; + .description { + font-weight: bold; + text-align: center; + font-size: 20px; + } } diff --git a/app/views/layouts/_credentials.html.haml b/app/views/layouts/_credentials.html.haml index 09d5ead3e..0622f4600 100644 --- a/app/views/layouts/_credentials.html.haml +++ b/app/views/layouts/_credentials.html.haml @@ -1,3 +1,4 @@ %div.dropdown-menu#credentials + %div.description= t("utils.deconnexion") = @current_gestionnaire.email if @current_gestionnaire = @current_user.email if @current_user diff --git a/config/locales/en.yml b/config/locales/en.yml index 065395716..fda042b21 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -21,3 +21,5 @@ en: hello: "Hello world" + utils: + deconnexion: "Logout" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 5e2a85d91..f6fbc3a02 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -20,6 +20,8 @@ # available at http://guides.rubyonrails.org/i18n.html. fr: + utils: + deconnexion: "Déconnexion" will_paginate: next_label: 'Suivant' previous_label: 'Précédent' @@ -179,4 +181,4 @@ fr: other: "%{count} mois" x_seconds: one: 1 seconde - other: "%{count} secondes" \ No newline at end of file + other: "%{count} secondes" diff --git a/db/schema.rb b/db/schema.rb index dbbb43529..781a0ea9d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -116,6 +116,12 @@ ActiveRecord::Schema.define(version: 20161205110427) do t.index ["dossier_id"], name: "index_commentaires_on_dossier_id", using: :btree end + create_table "comments", force: :cascade do |t| + t.string "comment" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "dossiers", force: :cascade do |t| t.boolean "autorisation_donnees" t.string "nom_projet" @@ -249,6 +255,12 @@ ActiveRecord::Schema.define(version: 20161205110427) do t.index ["procedure_id"], name: "index_module_api_cartos_on_procedure_id", unique: true, using: :btree end + create_table "notifications", force: :cascade do |t| + t.string "message" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "pieces_justificatives", force: :cascade do |t| t.string "content" t.integer "dossier_id" @@ -302,7 +314,6 @@ ActiveRecord::Schema.define(version: 20161205110427) do t.string "lien_demarche" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "test" t.integer "administrateur_id" t.boolean "archived", default: false t.boolean "euro_flag", default: false From 2e9de46a1c5fc4660d72dc0827d027bf6a863249 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 14:53:22 +0100 Subject: [PATCH 102/182] Fix js for sign_out hover displaying credentials, add hidden to tips div into left_pannel dossiers#show --- app/assets/javascripts/default_data_block.js | 4 +--- .../_left_panel_backoffice_dossierscontroller_show.html.haml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 25d39271a..35ab3149e 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -12,9 +12,7 @@ function init_default_data_block() { $('#sign_out').hover(function () { $(this).find('#credentials').toggle(); - }); - - $('#sign_out').off(function () { + }, function() { $(this).find('credentials').toggle(); }); diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index e3d9373b2..8fbc89fea 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -30,6 +30,6 @@ %div.split-hr-left %div.dossier-state= @facade.dossier.display_state %div.split-hr-left - %div.tips + %div.tips.hidden %i.fa.fa-lightbulb-o %div.notice= "Ceci est un bloc destiné à contenir des informations sur ce que vous êtes censé pouvoir faire à ce stade de traitement du dossier." From df36b9bd358081eedfd8bc63bbd7a0fc6fd5cde9 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 15:04:42 +0100 Subject: [PATCH 103/182] Removing 'INDIVIDU' from entreprise default block, from both gestionnaire/user dossiers#show --- app/views/backoffice/dossiers/show.html.haml | 2 +- app/views/users/recapitulatif/show.html.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 6cefaa6c1..dedc9935e 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -51,7 +51,7 @@ %div.col-lg-12.col-md-12.title %div.carret-right %div.carret-down - INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU + INFORMATIONS ENTREPRISE / ASSOCIATION %div.body = render partial: '/dossiers/infos_entreprise' diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index c2347513a..d029b90cc 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -51,7 +51,7 @@ %div.col-lg-12.col-md-12.title %div.carret-right %div.carret-down - INFORMATIONS ENTREPRISE / ASSOCIATION / INDIVIDU + INFORMATIONS ENTREPRISE / ASSOCIATION %div.body = render partial: '/dossiers/infos_entreprise' From 5556775ee9c436512625796a37625ed2dc192f93 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 15:14:39 +0100 Subject: [PATCH 104/182] Adding right caret class to navbar options for right pannel modal, also changing callback from hover sign_out, to use mouseover instead --- app/assets/javascripts/default_data_block.js | 4 +++- app/assets/stylesheets/navbar.scss | 11 +++++++++++ ...ffice_dossiers_procedurecontroller_index.html.haml | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 35ab3149e..716557896 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -12,7 +12,9 @@ function init_default_data_block() { $('#sign_out').hover(function () { $(this).find('#credentials').toggle(); - }, function() { + }); + + $('#sign_out').mouseout(function() { $(this).find('credentials').toggle(); }); diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 3bc32b95d..9066ffe0d 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -67,6 +67,16 @@ 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{ @@ -195,3 +205,4 @@ font-size: 20px; } } + diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml index c9279b51a..6a185ea34 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml @@ -6,6 +6,7 @@ %a.button_navbar#pref_list_dossier_open_action{href: '#', type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } %i.fa.fa-pencil Modifier le tableau + %span.caret-right %div.row %div.col-lg-12.col-md-12 = render partial: "dossiers/download_dossiers" From 17e58004875329b10a4d9cc742f55d4006f47fd1 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 15:24:07 +0100 Subject: [PATCH 105/182] Add feature flag OpenSimplif for comments per field --- app/assets/stylesheets/dossier_show.scss | 3 +++ .../backoffice/dossiers/_onglets.html.haml | 12 ++++++------ app/views/dossiers/_infos_dossier.html.haml | 18 +++++++++++------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 7b9eab3d7..9a9dabf12 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -99,6 +99,9 @@ .comments { margin-right: -10px; } + .comments-off { + margin-right: -35px; + } .dossier-title { font-size: 16px; min-height: 40px; diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index 301b35f11..2701dea85 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -1,23 +1,23 @@ #onglets %ul.nav.nav-tabs - -unless Features.opensimplif + - unless Features.opensimplif %li{ class: (@dossiers_list_facade.nouveaux_class)} %a{:href => "#{url_for @dossiers_list_facade.nouveaux_url}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers non ouverts.'} %h5.text-info = "Nouveaux " .badge.progress-bar-info - =@dossiers_list_facade.nouveaux_total + = @dossiers_list_facade.nouveaux_total %li{ class: (@dossiers_list_facade.suivi_class) } %a{:href => "#{url_for @dossiers_list_facade.suivi_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ne sont pas encore déclarés complets.'} %h5.text-danger - ="Suivis" + = "Suivis" .badge.progress-bar-danger - =@dossiers_list_facade.suivi_total + = @dossiers_list_facade.suivi_total %li{ class: (@dossiers_list_facade.all_state_class) } %a{:href => "#{url_for @dossiers_list_facade.all_state_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui sont déclarés complets et donc figés.'} %h5.text-default - ="Tous" + = "Tous" .badge.progress-bar-default - =@dossiers_list_facade.all_state_total + = @dossiers_list_facade.all_state_total diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 11add2a8f..9a1574311 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -29,13 +29,17 @@ - else .row %div.col-md-6.col-lg-6.depositaire-label= champ.libelle - %div.col-md-1.col-lg-1.comments - - if gestionnaire_signed_in? - = link_to "", "data-href" => backoffice_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" do - %i.fa.fa-comment-o - - else - = link_to "", "data-href" => users_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" do - %i.fa.fa-commenting-o + - if Features.opensimplif + %div.col-md-1.col-lg-1.comments + - if gestionnaire_signed_in? + = link_to "", "data-href" => backoffice_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" do + %i.fa.fa-comment-o + - else + = link_to "", "data-href" => users_dossier_commentaires_path(@facade.dossier, champs_id: champ.id), "data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp" do + %i.fa.fa-commenting-o + - else + %div.col-md-1.col-lg-1.comments-off + = "-" %div.col-md-5.col-lg-5.depositaire-info - unless champ.decorate.value.blank? = champ.decorate.value.html_safe From c03de6613791109e565dc52fa627e2106132ff7c Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 15:30:21 +0100 Subject: [PATCH 106/182] Extract dynamics involved constant to fit with utils in fr/en --- app/assets/stylesheets/navbar.scss | 2 +- .../_navbar_backoffice_dossierscontroller_show.html.haml | 2 +- .../_navbar_users_recapitulatifcontroller_show.html.haml | 2 +- config/locales/dynamics/fr.yml | 1 - config/locales/en.yml | 1 + config/locales/fr.yml | 1 + 6 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index 9066ffe0d..c858036d7 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -199,9 +199,9 @@ width: initial; padding: 10px; left: -130px; + text-align: center; .description { font-weight: bold; - text-align: center; font-size: 20px; } } diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index ac6075f55..73a4d62b1 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -16,7 +16,7 @@ %div.col-lg-12.col-md-12 %div.dropdown-toggle{ 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } %i.fa.fa-user - = t('dynamics.dossiers.involved') + = t('utils.involved') %div.dropdown-menu.dropdown-menu-right.dropdown-pannel %h4= t('dynamics.dossiers.followers.title') %ul diff --git a/app/views/layouts/navbars/_navbar_users_recapitulatifcontroller_show.html.haml b/app/views/layouts/navbars/_navbar_users_recapitulatifcontroller_show.html.haml index 5695ae410..c1a75658a 100644 --- a/app/views/layouts/navbars/_navbar_users_recapitulatifcontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_users_recapitulatifcontroller_show.html.haml @@ -6,7 +6,7 @@ %div.col-lg-12.col-md-12 %div.dropdown-toggle{ 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } %i.fa.fa-user - = t('dynamics.dossiers.involved') + = t('utils.involved') %div.dropdown-menu.dropdown-menu-right.dropdown-pannel %h4= t('dynamics.dossiers.followers.title') %ul diff --git a/config/locales/dynamics/fr.yml b/config/locales/dynamics/fr.yml index 51b1ed1b2..ecc9c2b8d 100644 --- a/config/locales/dynamics/fr.yml +++ b/config/locales/dynamics/fr.yml @@ -26,7 +26,6 @@ fr: dossiers: depositaite: "Dépositaire" numéro: 'Dossier n°' - involved: "Voir les personnes impliquées" followers: title: "Personnes suivant l'activité de ce dossier" empty: "Aucune personne ne suit ce dossier" diff --git a/config/locales/en.yml b/config/locales/en.yml index fda042b21..cff274ef0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -23,3 +23,4 @@ en: hello: "Hello world" utils: deconnexion: "Logout" + involved: "See concerned people" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index f6fbc3a02..d4707d7ad 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -22,6 +22,7 @@ fr: utils: deconnexion: "Déconnexion" + involved: "Voir les personnes impliquées" will_paginate: next_label: 'Suivant' previous_label: 'Précédent' From 94373094fab43c584c77aa7b2e2b3e49190b2da7 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 16:01:13 +0100 Subject: [PATCH 107/182] Adding default welcome message, default opening messages body while no commentaires --- app/assets/javascripts/default_data_block.js | 4 ++++ app/assets/stylesheets/dossier_show.scss | 5 +++++ app/views/backoffice/dossiers/show.html.haml | 10 +++++++--- app/views/users/recapitulatif/show.html.haml | 10 +++++++--- config/locales/en.yml | 1 + config/locales/fr.yml | 1 + 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 716557896..c69398a37 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -6,6 +6,10 @@ function init_default_data_block() { $('.default_data_block #dossier .carret-right').toggle(); $('.default_data_block #dossier .carret-down').toggle(); + if ($('.default_data_block #messages .commentaires').length == 0) { + $('.default_data_block #messages .body').toggle(); + } + $('.default_data_block .title').click(function () { toggle_default_data_bloc(this, 400); }); diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 9a9dabf12..eaa86fcfe 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -14,6 +14,11 @@ 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; diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index dedc9935e..10c989722 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -11,9 +11,13 @@ - message_count = @facade.commentaires.count = (message_count == 1) ? "1 message" : "#{message_count} messages" %div.body - %div.commentaires - - @facade.commentaires.object.sort.each do |commentaire| - = render partial: commentaire + - unless @facade.commentaires.empty? + %div.commentaires + - @facade.commentaires.object.sort.each do |commentaire| + = render partial: commentaire + - else + %div.no-commentaires + = t("utils.no-commentaires") .row .col-lg-12.col-md-12 %div.split-hr diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index d029b90cc..8c53bbb2c 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -11,9 +11,13 @@ - message_count = @facade.commentaires.count = (message_count == 1) ? "1 message" : "#{message_count} messages" %div.body - %div.commentaires - - @facade.commentaires.object.sort.each do |commentaire| - = render partial: commentaire + - unless @facade.commentaires.empty? + %div.commentaires + - @facade.commentaires.object.sort.each do |commentaire| + = render partial: commentaire + - else + %div.no-commentaires + = t("utils.no-commentaires") .row .col-lg-12.col-md-12 %div.split-hr diff --git a/config/locales/en.yml b/config/locales/en.yml index cff274ef0..0370de246 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -24,3 +24,4 @@ en: utils: deconnexion: "Logout" involved: "See concerned people" + no-commentaires: "There is no message yet, feel free to start the first one." diff --git a/config/locales/fr.yml b/config/locales/fr.yml index d4707d7ad..e09008c52 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -23,6 +23,7 @@ fr: utils: deconnexion: "Déconnexion" involved: "Voir les personnes impliquées" + no-commentaires: "Il n'y a aucun message dans le fil de discussion, n'hésitez pas à initier le premier." will_paginate: next_label: 'Suivant' previous_label: 'Précédent' From bdd51ce02b6a85dfc76f3a79e00ad01069839af5 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 16:11:36 +0100 Subject: [PATCH 108/182] Increased font-size for dossier id, user's dossiers#show --- app/assets/stylesheets/left_pannel.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index f02713303..30f0e6756 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -15,6 +15,7 @@ line-height: 18px; .infos { margin-bottom: 20px; + font-size: 25px; } .en-cours { margin-top: 20px; From cc532f74f9b0b21c9c5927ff03aeb3b954ef0232 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 5 Dec 2016 16:17:24 +0100 Subject: [PATCH 109/182] Fix redirection routes for gestionnaires and users with double devise profile --- app/controllers/backoffice/dossiers_controller.rb | 5 +++-- app/controllers/root_controller.rb | 14 ++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 085eec88c..49cfe3b33 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -3,8 +3,9 @@ class Backoffice::DossiersController < Backoffice::DossiersListController def index super - procedure = dossiers_list_facade.gestionnaire_procedures_name_and_id_list.first - redirect_to backoffice_dossiers_procedure_path(id: procedure[:id]) + procedure = current_gestionnaire.procedure_filter || dossiers_list_facade.gestionnaire_procedures_name_and_id_list.first[:id] + + redirect_to backoffice_dossiers_procedure_path(id: procedure) end def show diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb index f92a913d7..20b6ca27e 100644 --- a/app/controllers/root_controller.rb +++ b/app/controllers/root_controller.rb @@ -1,11 +1,17 @@ class RootController < ApplicationController def index - if user_signed_in? - redirect_to users_dossiers_path + route = Rails.application.routes.recognize_path(request.referrer) - elsif gestionnaire_signed_in? - redirect_to backoffice_dossiers_path + unless route[:controller].match('users').nil? + return redirect_to users_dossiers_path + end + + if gestionnaire_signed_in? + redirect_to backoffice_dossiers_procedure_path(id: current_gestionnaire.procedure_filter) + + elsif user_signed_in? + redirect_to users_dossiers_path elsif administrateur_signed_in? redirect_to admin_procedures_path From 1449a1dc1956baf9de9e959a63a32791ca5204c9 Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 16:23:08 +0100 Subject: [PATCH 110/182] Reworked en-cours css for dossiers#index user side, counting exact 'en cours' dossiers --- app/assets/stylesheets/left_pannel.scss | 4 ++++ .../_left_panel_users_dossierscontroller_index.html.haml | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index 30f0e6756..edf0382aa 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -19,6 +19,10 @@ } .en-cours { margin-top: 20px; + font-size: 25px; + line-height: initial; + text-align: center; + margin-right: 10px; } } #action-block { diff --git a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml index 90c862e92..74eadad96 100644 --- a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml @@ -1,7 +1,9 @@ %div#first-block %div.en-cours - = @dossiers.count - DOSSIERS EN COURS + = dossier_count = @dossiers_list_facade.dossiers_to_display.count + = ("Dossier".pluralize(dossier_count)).upcase + %br + = "EN COURS" %div#action-block From 0451ae05408302a599d84f12299f930ed1452e4a Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 16:33:09 +0100 Subject: [PATCH 111/182] Using css truncation with overflow: hidden; --- app/assets/stylesheets/navbar.scss | 2 ++ ...vbar_backoffice_dossiers_procedurecontroller_index.html.haml | 2 +- .../_navbar_backoffice_dossierscontroller_show.html.haml | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index c858036d7..b413526f5 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -45,6 +45,8 @@ line-height: 58px; height: 58px; color: #000000; + overflow: hidden; + text-overflow: ellipsis; } .options { font-family: Arial; diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml index 6a185ea34..c9536cdbe 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossiers_procedurecontroller_index.html.haml @@ -1,5 +1,5 @@ %div.col-lg-8.col-md-8.main-info - = @facade_data_view.procedure_id.nil? ? "Tous les dossiers" : truncate(@facade_data_view.procedure.libelle, {length: 50}) + = @facade_data_view.procedure_id.nil? ? "Tous les dossiers" : @facade_data_view.procedure.libelle %div.col-lg-3.col-md-3.options %div.row %div.col-lg-12.col-md-12 diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index 73a4d62b1..73d3a2ee0 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -1,6 +1,6 @@ %div.col-lg-8.col-md-8.main-info %span{ 'data-toggle' => :tooltip, "data-placement" => :bottom, title: @facade.dossier.procedure.libelle } - = @facade.dossier.procedure.libelle.truncate(60) + = @facade.dossier.procedure.libelle %div.col-lg-3.col-md-3.options %div.row %div.col-lg-12.col-md-12 From 461fe22a91fb7693ae5039ef619a9c685fdf053e Mon Sep 17 00:00:00 2001 From: JC Date: Mon, 5 Dec 2016 16:37:18 +0100 Subject: [PATCH 112/182] Fixing css on left_pannel for centering infos --- app/assets/stylesheets/left_pannel.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index edf0382aa..ebe53d44e 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -16,6 +16,8 @@ .infos { margin-bottom: 20px; font-size: 25px; + text-align: center; + margin-right: 10px; } .en-cours { margin-top: 20px; From 4c2dd0ede187f7b9896df4360b067c7a80a7e334 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 5 Dec 2016 16:57:40 +0100 Subject: [PATCH 113/182] Fix out of ranch error on search --- app/controllers/backoffice/dossiers_controller.rb | 3 ++- .../_left_panel_backoffice_dossierscontroller_index.html.haml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 49cfe3b33..cd99872ed 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -37,7 +37,8 @@ class Backoffice::DossiersController < Backoffice::DossiersListController @search_terms = params[:q] # exact id match? - @dossiers = 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 unless @dossiers.any? diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index 9537c9c20..f3c6dbd54 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -15,5 +15,5 @@ #procedure_list - @facade_data_view.gestionnaire_procedures_name_and_id_list.each do |procedure| = link_to backoffice_dossiers_procedure_path(procedure[:id]), {title: procedure[:libelle]} do - %div.procedure_list_element{ class: ('active' if procedure[:id] == @facade_data_view.procedure.id) } + %div.procedure_list_element{ class: ('active' if procedure[:id] == @facade_data_view.procedure.id rescue '') } = truncate(procedure[:libelle], length: 50) From 04e01981e8dd3b523bde6db52797ad23d3f50488 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 5 Dec 2016 17:37:13 +0100 Subject: [PATCH 114/182] Fix authorized routes on show dossier --- app/controllers/users/recapitulatif_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/users/recapitulatif_controller.rb b/app/controllers/users/recapitulatif_controller.rb index 8be4629a2..6e06c41ed 100644 --- a/app/controllers/users/recapitulatif_controller.rb +++ b/app/controllers/users/recapitulatif_controller.rb @@ -28,7 +28,7 @@ class Users::RecapitulatifController < UsersController 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 From 9f4e4a6b651fe5ad8e661bbe8bcda33483b34afe Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 5 Dec 2016 18:11:18 +0100 Subject: [PATCH 115/182] =?UTF-8?q?New=20UI=20for=20proc=C3=A9dure=20list?= =?UTF-8?q?=20on=20admin=20view?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stylesheets/default_data_block.scss | 2 ++ app/assets/stylesheets/users.scss | 2 +- app/views/admin/procedures/_list.html.haml | 1 - app/views/admin/procedures/index.html.haml | 20 +++++++---- ...in_procedurescontroller_archived.html.haml | 1 + ...admin_procedurescontroller_draft.html.haml | 1 + ...admin_procedurescontroller_index.html.haml | 33 +++++++++++++++++++ 7 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml create mode 100644 app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml create mode 100644 app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml diff --git a/app/assets/stylesheets/default_data_block.scss b/app/assets/stylesheets/default_data_block.scss index 4152a3cfb..218d7d5ca 100644 --- a/app/assets/stylesheets/default_data_block.scss +++ b/app/assets/stylesheets/default_data_block.scss @@ -46,6 +46,8 @@ background-color: #E45B51; text-align: center; float: right; + color: white; + text-decoration: none; } .count { font-size: 16px; diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss index f2d9b7894..f655116e6 100644 --- a/app/assets/stylesheets/users.scss +++ b/app/assets/stylesheets/users.scss @@ -1,4 +1,4 @@ -#users_index{ +#users_index, #admins_index{ margin-left: 2rem; margin-right: 2rem; diff --git a/app/views/admin/procedures/_list.html.haml b/app/views/admin/procedures/_list.html.haml index 459585388..b875ad19f 100644 --- a/app/views/admin/procedures/_list.html.haml +++ b/app/views/admin/procedures/_list.html.haml @@ -24,7 +24,6 @@ = link_to('X', url_for(controller: 'admin/procedures', action: :destroy, id: procedure.id), 'data-method' => :delete, class: 'btn-sm btn-danger') = smart_listing.paginate - = smart_listing.pagination_per_page_links - else %h4.center diff --git a/app/views/admin/procedures/index.html.haml b/app/views/admin/procedures/index.html.haml index 825ad5f5e..ec374c914 100644 --- a/app/views/admin/procedures/index.html.haml +++ b/app/views/admin/procedures/index.html.haml @@ -1,8 +1,16 @@ -= link_to(t('dynamics.admin.dossiers.tableau_de_bord.nouvelle_procedure'), "/admin/procedures/new", class: 'btn btn-success', style: 'float:right; margin-top:2%;') -%h1 - =t('dynamics.admin.dossiers.tableau_de_bord.title') -%br +#admins_index + .default_data_block.default_visible + %div.row.show-block#new_dossiers + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + Procédures + %a{href:'/admin/procedures/new'} + %div.col-lg-2.col-md-2.action + Nouvelle + + %div.body + = smart_listing_render :procedures -= render partial: 'onglets' -= smart_listing_render :procedures diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml new file mode 100644 index 000000000..640ef345e --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml @@ -0,0 +1 @@ +=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' \ No newline at end of file diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml new file mode 100644 index 000000000..640ef345e --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml @@ -0,0 +1 @@ +=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' \ No newline at end of file diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml new file mode 100644 index 000000000..6e43545ce --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml @@ -0,0 +1,33 @@ +%div#first-block + %div.en-cours + %b + = dossier_count = current_administrateur.procedures.count + = ("Procedures".pluralize(dossier_count)).upcase + +%div#action-block + +%div#menu-block + %div.split-hr-left + #procedure_list + %a{:href => "#{url_for :admin_procedures_draft}"} + %div.procedure_list_element{class: @draft_class} + = "Brouillons" + .badge.progress-bar-default + = current_administrateur.procedures.where(published: false, archived: false).count + + %a{:href => "#{url_for :admin_procedures}"} + %div.procedure_list_element{class: @active_class} + = "Actives" + .badge.progress-bar-success + = current_administrateur.procedures.where(published: true, archived: false).count + + %a{:href => "#{url_for :admin_procedures_archived}"} + %div.procedure_list_element{class: @archived_class} + ="Archivées" + .badge.progress-bar-purple + = current_administrateur.procedures.where(archived: true).count + + %div.split-hr-left + + +%div#infos-block From 30d5323d7e1e1d7f400e8444e380fc749b9f0045 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 5 Dec 2016 19:30:58 +0100 Subject: [PATCH 116/182] New UI for description dossier in user view --- app/assets/javascripts/description.js | 19 ----- app/assets/stylesheets/description.scss | 15 +++- .../users/description_controller.rb | 19 +++-- app/views/admin/procedures/show.html.haml | 2 +- app/views/users/description/_champs.html.haml | 65 ++--------------- app/views/users/description/_show.html.haml | 5 +- .../champs/_header_section.html.haml | 70 +++++++++++++++++-- 7 files changed, 99 insertions(+), 96 deletions(-) diff --git a/app/assets/javascripts/description.js b/app/assets/javascripts/description.js index cb66f0adf..24a9e7e56 100644 --- a/app/assets/javascripts/description.js +++ b/app/assets/javascripts/description.js @@ -27,7 +27,6 @@ function action_type_de_champs() { }); address_type_init(); - toggle_header_section_composents(); } function toggleErrorClass(node, boolean) { @@ -55,21 +54,3 @@ function validateNumber(number) { function validateInput(input, regex) { 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 ') - } - else { - $(target).html('Masquer la section ') - } - }); - }); -} diff --git a/app/assets/stylesheets/description.scss b/app/assets/stylesheets/description.scss index 54ea06cfa..3a269908e 100644 --- a/app/assets/stylesheets/description.scss +++ b/app/assets/stylesheets/description.scss @@ -2,8 +2,21 @@ @import "bootstrap-datepicker3"; #description_page #liste_champs { + + .default_data_block { + .show-block { + width: 90%; + .body{ + padding-left: 35px; + padding-right: 35px; + padding-bottom: 35px; + } + } + } + h4 { - margin-top: 35px; + padding-top: 35px; + margin: 0; } } diff --git a/app/controllers/users/description_controller.rb b/app/controllers/users/description_controller.rb index b74671a45..d7791e8f2 100644 --- a/app/controllers/users/description_controller.rb +++ b/app/controllers/users/description_controller.rb @@ -12,6 +12,11 @@ class Users::DescriptionController < UsersController @procedure = @dossier.procedure @champs = @dossier.ordered_champs + @headers = @champs.inject([]) do |acc, champ| + acc.push(champ) if champ.type_champ == 'header_section' + acc + end + rescue ActiveRecord::RecordNotFound flash.alert = t('errors.messages.dossier_not_found') redirect_to url_for(root_path) @@ -34,16 +39,16 @@ class Users::DescriptionController < UsersController unless @dossier.update_attributes(create_params) @dossier = @dossier.decorate - flash.now.alert = @dossier.errors.full_messages.join('
').html_safe - return render 'show' + flash.alert = @dossier.errors.full_messages.join('
').html_safe + return redirect_to users_dossier_description_path(dossier_id: @dossier.id) end unless params[:champs].nil? champs_service_errors = ChampsService.save_formulaire @dossier.champs, params, mandatory unless champs_service_errors.empty? - flash.now.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'
' }).html_safe - return render 'show' + flash.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'
' }).html_safe + return redirect_to users_dossier_description_path(dossier_id: @dossier.id) end end @@ -51,15 +56,15 @@ class Users::DescriptionController < UsersController unless params[:cerfa_pdf].nil? cerfa = Cerfa.new(content: params[:cerfa_pdf], dossier: @dossier, user: current_user) unless cerfa.save - flash.now.alert = cerfa.errors.full_messages.join('
').html_safe - return render 'show' + flash.alert = cerfa.errors.full_messages.join('
').html_safe + return redirect_to users_dossier_description_path(dossier_id: @dossier.id) end end end unless (errors_upload = PiecesJustificativesService.upload!(@dossier, current_user, params)).empty? flash.alert = errors_upload.html_safe - return render 'show' + return redirect_to users_dossier_description_path(dossier_id: @dossier.id) end diff --git a/app/views/admin/procedures/show.html.haml b/app/views/admin/procedures/show.html.haml index b250fbda5..78e065a6d 100644 --- a/app/views/admin/procedures/show.html.haml +++ b/app/views/admin/procedures/show.html.haml @@ -70,7 +70,7 @@ Champs .badge.progress-bar-info = @facade.procedure.types_de_champ.size - - @facade.procedure.types_de_champ.each do |champ| + - @facade.procedure.types_de_champ.order(:order_place).each do |champ| = champ.libelle %br diff --git a/app/views/users/description/_champs.html.haml b/app/views/users/description/_champs.html.haml index f56859ee2..712d13c00 100644 --- a/app/views/users/description/_champs.html.haml +++ b/app/views/users/description/_champs.html.haml @@ -1,59 +1,8 @@ --actual_header_section = nil --@champs.each do |champ| - .row{class: (actual_header_section.nil? || champ.type_champ == 'header_section' ? '' : "header_section_"+actual_header_section.to_s)} - %div{class: "type_champ-#{champ.type_champ}"} - - - if champ.type_champ == 'header_section' - =render partial: 'users/description/champs/header_section', locals: {champ: champ} - -actual_header_section = champ.id - - -else - - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' - %h4 - = champ.libelle - - if champ.mandatory? - = '*' - - -if champ.type_champ == 'textarea' - =render partial: 'users/description/champs/textarea', locals: {champ: champ} - - -elsif champ.type_champ == 'checkbox' - = render partial: 'users/description/champs/checkbox', locals: {champ: champ} - - -elsif champ.type_champ == 'civilite' - =render partial: 'users/description/champs/civilite', locals: {champ: champ} - - - elsif champ.type_champ == 'datetime' - =render partial: 'users/description/champs/datetime', locals: {champ: champ} - - - elsif champ.type_champ == 'yes_no' - =render partial: 'users/description/champs/yes_no', locals: {champ: champ} - - - elsif champ.type_champ == 'drop_down_list' - =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} - - - elsif champ.type_champ == 'pays' - =render partial: 'users/description/champs/pays', locals: {champ: champ} - - - elsif champ.type_champ == 'regions' - =render partial: 'users/description/champs/regions', locals: {champ: champ} - - - elsif champ.type_champ == 'engagement' - =render partial: 'users/description/champs/engagement', locals: {champ: champ} - - - elsif champ.type_champ == 'departements' - =render partial: 'users/description/champs/departements', locals: {champ: champ} - - -else - %input.form-control{name:"champs['#{champ.id}']", - placeholder: champ.libelle, - id: "champs_#{champ.id}", - value: champ.value, - type: champ.type_champ, - 'data-provide' => champ.data_provide, - 'data-date-format' => champ.data_date_format} - - - unless champ.description.empty? || champ.type_champ == 'engagement' +- if @headers.nil? + -@headers.each do |header| .row - .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} - = champ.description + %div{class: "type_champ-#{header.type_champ}"} + =render partial: 'users/description/champs/header_section', locals: {libelle: header.libelle, order_place: header.order_place, champs: @champs} +- else + .row + =render partial: 'users/description/champs/header_section', locals: {libelle: 'Dossier', order_place: -1, champs: @champs} \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 03217cb0e..40c0d51c0 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -1,6 +1,6 @@ .container#description_page - unless @dossier.procedure.lien_notice.blank? - #lien_notice_panel.row{style:'width: 280px; position: fixed; background-color: white; right: 5%; top: 80px;'} + #lien_notice_panel.row{style:'width: 280px; position: fixed; background-color: white; right: 5%; top: 80px; z-index: 200'} .panel.panel-info{style:'margin-bottom:0'} .panel-body.center .row @@ -14,9 +14,6 @@ %h2.text-info = @dossier.procedure.libelle - - unless Features.opensimplif - %h3 Votre dossier - -#TODO use form_for = form_tag(url_for({controller: 'users/description', action: :create, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST', multipart: true) do diff --git a/app/views/users/description/champs/_header_section.html.haml b/app/views/users/description/champs/_header_section.html.haml index ca20b7342..3ba589f83 100644 --- a/app/views/users/description/champs/_header_section.html.haml +++ b/app/views/users/description/champs/_header_section.html.haml @@ -1,6 +1,64 @@ -%h3.text-primary.page-header - =champ.libelle - %span.mask_section{style:'float: right'} - %a.mask_section_button.btn.btn-xs.btn-info{id: "mask_button_"+champ.id.to_s} - Masquer la section - %i.fa.fa-chevron-up \ No newline at end of file +.default_data_block.default_visible + %div.row.show-block#infos + %div.header + %div.col-lg-12.col-md-12.title + %div.carret-right + %div.carret-down + =libelle + %div.body + -champs.each do |champ| + - if champ.order_place > order_place + - if champ.type_champ == 'header_section' + - break + + - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' + %h4 + = champ.libelle + - if champ.mandatory? + = '*' + + -if champ.type_champ == 'textarea' + =render partial: 'users/description/champs/textarea', locals: {champ: champ} + + -elsif champ.type_champ == 'checkbox' + = render partial: 'users/description/champs/checkbox', locals: {champ: champ} + + -elsif champ.type_champ == 'civilite' + =render partial: 'users/description/champs/civilite', locals: {champ: champ} + + - elsif champ.type_champ == 'datetime' + =render partial: 'users/description/champs/datetime', locals: {champ: champ} + + - elsif champ.type_champ == 'yes_no' + =render partial: 'users/description/champs/yes_no', locals: {champ: champ} + + - elsif champ.type_champ == 'drop_down_list' + =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} + + - elsif champ.type_champ == 'pays' + =render partial: 'users/description/champs/pays', locals: {champ: champ} + + - elsif champ.type_champ == 'regions' + =render partial: 'users/description/champs/regions', locals: {champ: champ} + + - elsif champ.type_champ == 'engagement' + =render partial: 'users/description/champs/engagement', locals: {champ: champ} + + - elsif champ.type_champ == 'departements' + =render partial: 'users/description/champs/departements', locals: {champ: champ} + + -else + %input.form-control{name:"champs['#{champ.id}']", + placeholder: champ.libelle, + id: "champs_#{champ.id}", + value: champ.value, + type: champ.type_champ, + 'data-provide' => champ.data_provide, + 'data-date-format' => champ.data_date_format} + + - unless champ.description.empty? || champ.type_champ == 'engagement' + .row + .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} + = champ.description + + From 02f913afdf07c8307a3b883833d5cbe1335baf8d Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 12:49:56 +0100 Subject: [PATCH 117/182] Now rework the action interface for dossiers in their show --- .../stylesheets/default_data_block.scss | 7 ++++++- app/views/backoffice/dossiers/show.html.haml | 3 +-- app/views/dossiers/_actions.html.haml | 20 ++++++++++++++++++ app/views/dossiers/_infos_dossier.html.haml | 21 ------------------- app/views/dossiers/etapes/_etape1.html.haml | 2 +- app/views/dossiers/etapes/_etape2.html.haml | 2 +- app/views/users/recapitulatif/show.html.haml | 3 +-- 7 files changed, 30 insertions(+), 28 deletions(-) create mode 100644 app/views/dossiers/_actions.html.haml diff --git a/app/assets/stylesheets/default_data_block.scss b/app/assets/stylesheets/default_data_block.scss index 218d7d5ca..5f4a72149 100644 --- a/app/assets/stylesheets/default_data_block.scss +++ b/app/assets/stylesheets/default_data_block.scss @@ -46,8 +46,13 @@ background-color: #E45B51; text-align: center; float: right; - color: white; + line-height: 20px; + font-size: 15px; text-decoration: none; + color: #FFFFFF; + } + .action:hover { + color: #F2F6FA; } .count { font-size: 16px; diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 10c989722..8100ab6f0 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -66,7 +66,6 @@ %div.carret-right %div.carret-down CONSTRUCTION DU DOSSIER - %div.col-lg-2.col-md-2.action - EDITER + = render partial: '/dossiers/actions' %div.body = render partial: '/dossiers/infos_dossier' diff --git a/app/views/dossiers/_actions.html.haml b/app/views/dossiers/_actions.html.haml new file mode 100644 index 000000000..6b71eb587 --- /dev/null +++ b/app/views/dossiers/_actions.html.haml @@ -0,0 +1,20 @@ +%div.col-lg-2.col-md-2.action + - unless @facade.dossier.read_only? + - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) + - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 + %a#maj_pj.btn.btn-success{"data-target" => "#UploadPJmodal", + "data-toggle" => "modal", + :type => "button", + style: 'margin-bottom: 15px; margin-top: -30px'} + Modifier les documents + %br + = render partial: 'users/recapitulatif/modal_upload_pj' + + - if @facade.procedure.individual_with_siret + %a#add_siret.btn.btn-success{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} + = "Renseigner un SIRET" + - if @facade.dossier.procedure.module_api_carto.use_api_carto + %a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"} + = 'Modifier la carte' + %a#maj_infos.action{href: "/users/dossiers/#{@facade.dossier.id}/description"} + = 'Modifier le dossier' diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 9a1574311..5710639bf 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -67,27 +67,6 @@ = "var dossier_id =#{@facade.dossier.id}" initCarto(); -.row{style: 'text-align:right'} - - unless @facade.dossier.read_only? - - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) - - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 - %a#maj_pj.btn.btn-success{"data-target" => "#UploadPJmodal", - "data-toggle" => "modal", - :type => "button", - style: 'margin-bottom: 15px; margin-top: -30px'} - Modifier les documents - %br - = render partial: 'users/recapitulatif/modal_upload_pj' - - -if @facade.procedure.individual_with_siret - %a#add_siret.btn.btn-success{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} - = "Renseigner un SIRET" - -if @facade.dossier.procedure.module_api_carto.use_api_carto - %a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"} - = 'Modifier la carte' - %a#maj_infos.btn.btn-info{href: "/users/dossiers/#{@facade.dossier.id}/description"} - = 'Modifier le dossier' - #modalCommentairesDossierParChamp.modal.fade{"tabindex" => -1, "role" => "dialog"} .modal-dialog{"role" => "document"} .modal-content diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index f9de0d764..f534c7596 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -22,4 +22,4 @@ - unless @facade.procedure.lien_site_web.blank? .center %a{href: "#{@facade.procedure.lien_site_web.html_safe}", target: '_blank'} - En savoir plus ... \ No newline at end of file + En savoir plus ... diff --git a/app/views/dossiers/etapes/_etape2.html.haml b/app/views/dossiers/etapes/_etape2.html.haml index 3f36a3c2a..fde33f55f 100644 --- a/app/views/dossiers/etapes/_etape2.html.haml +++ b/app/views/dossiers/etapes/_etape2.html.haml @@ -1,4 +1,4 @@ - if @facade.procedure.for_individual? = render partial: 'dossiers/etapes/etape_2/individual' - else - = render partial: 'dossiers/etapes/etape_2/entreprise' \ No newline at end of file + = render partial: 'dossiers/etapes/etape_2/entreprise' diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index 8c53bbb2c..4c41498d5 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -66,7 +66,6 @@ %div.carret-right %div.carret-down CONSTRUCTION DU DOSSIER - %div.col-lg-2.col-md-2.action - EDITER + = render partial: '/dossiers/actions' %div.body = render partial: '/dossiers/infos_dossier' From 41ebb648efab937d818d2228f5e309efcddadba7 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 13:06:34 +0100 Subject: [PATCH 118/182] Having editer action for construct dossier, now need the carto default_block to be shown --- app/assets/stylesheets/default_data_block.scss | 3 +-- app/views/backoffice/dossiers/show.html.haml | 2 +- app/views/dossiers/_actions.html.haml | 2 +- app/views/dossiers/_edit_dossier.html.haml | 5 +++++ app/views/users/recapitulatif/show.html.haml | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 app/views/dossiers/_edit_dossier.html.haml diff --git a/app/assets/stylesheets/default_data_block.scss b/app/assets/stylesheets/default_data_block.scss index 5f4a72149..027533077 100644 --- a/app/assets/stylesheets/default_data_block.scss +++ b/app/assets/stylesheets/default_data_block.scss @@ -45,8 +45,7 @@ .action { background-color: #E45B51; text-align: center; - float: right; - line-height: 20px; + line-height: 40px; font-size: 15px; text-decoration: none; color: #FFFFFF; diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 8100ab6f0..85c806864 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -66,6 +66,6 @@ %div.carret-right %div.carret-down CONSTRUCTION DU DOSSIER - = render partial: '/dossiers/actions' + = render partial: '/dossiers/edit_dossier' %div.body = render partial: '/dossiers/infos_dossier' diff --git a/app/views/dossiers/_actions.html.haml b/app/views/dossiers/_actions.html.haml index 6b71eb587..6869e595f 100644 --- a/app/views/dossiers/_actions.html.haml +++ b/app/views/dossiers/_actions.html.haml @@ -17,4 +17,4 @@ %a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"} = 'Modifier la carte' %a#maj_infos.action{href: "/users/dossiers/#{@facade.dossier.id}/description"} - = 'Modifier le dossier' + = "éditer".upcase diff --git a/app/views/dossiers/_edit_dossier.html.haml b/app/views/dossiers/_edit_dossier.html.haml new file mode 100644 index 000000000..5ceca52dd --- /dev/null +++ b/app/views/dossiers/_edit_dossier.html.haml @@ -0,0 +1,5 @@ +- unless @facade.dossier.read_only? + - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) + %div.col-lg-2.col-md-2.action + %a#maj_infos.action{href: "/users/dossiers/#{@facade.dossier.id}/description"} + = "éditer".upcase diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index 4c41498d5..24363d6f0 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -66,6 +66,7 @@ %div.carret-right %div.carret-down CONSTRUCTION DU DOSSIER - = render partial: '/dossiers/actions' + = render partial: '/dossiers/edit_dossier' %div.body = render partial: '/dossiers/infos_dossier' + = render partial: '/dossiers/actions' From c8f176de74497219b0a4045abefdad0b87a01f17 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 13:14:06 +0100 Subject: [PATCH 119/182] Using carto block, need to add css classes even if empty + need to refactor some of backoffice/dossiers/show Vs users/recapitulatif/show + then continue on document block and add a siren button on construct dossier --- app/views/backoffice/dossiers/show.html.haml | 11 +++++++++++ app/views/dossiers/_actions.html.haml | 5 ----- app/views/dossiers/_edit_carto.html.haml | 5 +++++ app/views/users/recapitulatif/show.html.haml | 11 +++++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 app/views/dossiers/_edit_carto.html.haml diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 85c806864..42c7e55c4 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -69,3 +69,14 @@ = render partial: '/dossiers/edit_dossier' %div.body = render partial: '/dossiers/infos_dossier' + + - if @facade.dossier.procedure.module_api_carto.use_api_carto + .default_data_block + %div.row.show-block#carto + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + CARTOGRAPHIE + = render partial: '/dossiers/edit_carto' + diff --git a/app/views/dossiers/_actions.html.haml b/app/views/dossiers/_actions.html.haml index 6869e595f..3146f7c70 100644 --- a/app/views/dossiers/_actions.html.haml +++ b/app/views/dossiers/_actions.html.haml @@ -13,8 +13,3 @@ - if @facade.procedure.individual_with_siret %a#add_siret.btn.btn-success{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} = "Renseigner un SIRET" - - if @facade.dossier.procedure.module_api_carto.use_api_carto - %a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"} - = 'Modifier la carte' - %a#maj_infos.action{href: "/users/dossiers/#{@facade.dossier.id}/description"} - = "éditer".upcase diff --git a/app/views/dossiers/_edit_carto.html.haml b/app/views/dossiers/_edit_carto.html.haml new file mode 100644 index 000000000..64156728b --- /dev/null +++ b/app/views/dossiers/_edit_carto.html.haml @@ -0,0 +1,5 @@ +- unless @facade.dossier.read_only? + - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) + %div.col-lg-2.col-md-2.action + %a#maj_carte.action{href: "/users/dossiers/#{@facade.dossier.id}/carte"} + = 'éditer'.upcase diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index 24363d6f0..15f0e1367 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -70,3 +70,14 @@ %div.body = render partial: '/dossiers/infos_dossier' = render partial: '/dossiers/actions' + + - if !@facade.dossier.procedure.module_api_carto.use_api_carto + .default_data_block + %div.row.show-block#carto + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + CARTOGRAPHIE + = render partial: '/dossiers/edit_carto' + From 9bf475e1f3594ba2bb5e1c6cbfa31c16f1b7a3e5 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 13:24:39 +0100 Subject: [PATCH 120/182] Creating test environnement with new procedure showing each stage, I'll rework each screen till end of new user process --- app/assets/stylesheets/dossier_show.scss | 4 +++- app/views/users/recapitulatif/show.html.haml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index eaa86fcfe..d571f2399 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -87,7 +87,9 @@ text-align: end; } } - #dossier, #infos { + #carto { + } + #dossier, #infos, #carto { .body { padding: 0 20px 0 20px; color: #000000; diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index 15f0e1367..11eafb82d 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -71,7 +71,7 @@ = render partial: '/dossiers/infos_dossier' = render partial: '/dossiers/actions' - - if !@facade.dossier.procedure.module_api_carto.use_api_carto + - if @facade.dossier.procedure.module_api_carto.use_api_carto .default_data_block %div.row.show-block#carto %div.header From 7058fde7585d53b9c3a461e4fcfb89d744972432 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 13:56:33 +0100 Subject: [PATCH 121/182] First step about user registration is safe (CSS) --- app/assets/stylesheets/etapes.scss | 17 +--- app/assets/stylesheets/users.scss | 29 ++++++- app/views/dossiers/etapes/_etape1.html.haml | 23 +++--- .../etapes/etape_2/_individual.html.haml | 77 ++++++++++--------- app/views/layouts/_etape_suivante.html.haml | 2 +- 5 files changed, 80 insertions(+), 68 deletions(-) diff --git a/app/assets/stylesheets/etapes.scss b/app/assets/stylesheets/etapes.scss index b9f307024..4bef8c51a 100644 --- a/app/assets/stylesheets/etapes.scss +++ b/app/assets/stylesheets/etapes.scss @@ -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{ .etapes_menu{ #dossier_siret{ @@ -26,4 +11,4 @@ .etapes_informations{ padding-top: 15px; } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss index f655116e6..15032d127 100644 --- a/app/assets/stylesheets/users.scss +++ b/app/assets/stylesheets/users.scss @@ -12,4 +12,31 @@ height: auto; } } -} \ No newline at end of file +} + +#users_siret_index { + background-color: #FFFFFF; + box-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.5); + margin: 20px; + 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; + } +} diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index f534c7596..232f14298 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -1,7 +1,5 @@ -.etape.etapes_menu.col-md-3.col-lg-3 - %h3 - Ma procédure - %br +.col-md-3.col-lg-3.center + %h3 Ma procédure #logos.center{class: (@facade.entreprise.nil? ? '' : 'mask')} - if @facade.procedure.euro_flag @@ -13,13 +11,14 @@ .etape.etapes_informations.col-md-9.col-lg-9 .row - %h2#titre_procedure.text-info - = @facade.procedure.libelle + .col-md-12.col-lg-12.padding-left-30 + %h2#titre_procedure.text-info + = @facade.procedure.libelle - %p#description_procedure{style:'width: 95%;', class: (@facade.entreprise.nil? ? '' : 'mask')} - = h @facade.procedure.description.html_safe + %p#description_procedure{style:'width: 95%;', class: (@facade.entreprise.nil? ? '' : 'mask')} + = h @facade.procedure.description.html_safe - - unless @facade.procedure.lien_site_web.blank? - .center - %a{href: "#{@facade.procedure.lien_site_web.html_safe}", target: '_blank'} - En savoir plus ... + - unless @facade.procedure.lien_site_web.blank? + .center + %a{href: "#{@facade.procedure.lien_site_web.html_safe}", target: '_blank'} + En savoir plus ... diff --git a/app/views/dossiers/etapes/etape_2/_individual.html.haml b/app/views/dossiers/etapes/etape_2/_individual.html.haml index 96d7b1246..c49270e4e 100644 --- a/app/views/dossiers/etapes/etape_2/_individual.html.haml +++ b/app/views/dossiers/etapes/etape_2/_individual.html.haml @@ -1,45 +1,46 @@ -.etape.etapes_menu.col-md-3.col-lg-3 - %h3 - Mes informations - %br - %p.center +.col-md-3.col-lg-3.center + %h3 Mes informations + %p Les informations de bases %br vous concernant. .etape.etapes_informations.col-md-9.col-lg-9 - .row - = form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f| - = f.hidden_field :id + = form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f| + .row + .col-md-12.col-lg-12.padding-left-30 + = f.hidden_field :id - = f.fields_for :individual, @facade.individual do |ff| - .form-group - %label - %h4 - Civilité - = ff.select :gender, ['Mr', 'Mme'] - .form-group - %label - %h4 - Nom - = ff.text_field :nom, {class: 'form-control'} - .form-group - %label - %h4 - Prénom - = ff.text_field :prenom, {class: 'form-control'} - .form-group - %label - %h4 - Date de naissance - = ff.text_field :birthdate, {class: 'form-control', 'data-provide' => 'datepicker', 'data-date-format' => 'dd/mm/yyyy'} + = f.fields_for :individual, @facade.individual do |ff| + .form-group + %label + %h4 + Civilité + = ff.select :gender, ['Mr', 'Mme'] + .form-group + %label + %h4 + Nom + = ff.text_field :nom, {class: 'form-control'} + .form-group + %label + %h4 + Prénom + = ff.text_field :prenom, {class: 'form-control'} + .form-group + %label + %h4 + Date de naissance + = ff.text_field :birthdate, {class: 'form-control', 'data-provide' => 'datepicker', 'data-date-format' => 'dd/mm/yyyy'} - %p - %label{ style:'font-weight:normal' } - = f.check_box :autorisation_donnees - = " ".html_safe - Vos informations personnelles ne seront jamais utilisées dans un but lucratif ou commercial. Elles ne pourront être communiquées à de tiers personnes sans votre accord préalable. Elles pourront en revanche être communiquées aux administrations compétentes afin d'instruire votre dossier, conformément à la déclaration CNIL effectué par le service TPS. - =link_to 'en savoir plus', cgu_path, target: '_blank' - - %br - = f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante' + %p + %label{ style:'font-weight:normal' } + = f.check_box :autorisation_donnees + = " ".html_safe + Vos informations personnelles ne seront jamais utilisées dans un but lucratif ou commercial. Elles ne pourront être communiquées à de tiers personnes sans votre accord préalable. Elles pourront en revanche être communiquées aux administrations compétentes afin d'instruire votre dossier, conformément à la déclaration CNIL effectué par le service TPS. + =link_to 'en savoir plus', cgu_path, target: '_blank' + .row + .col-md-5.col-lg-5.col-xs-5 + .col-md-2.col-lg-2.col-xs-2 + = f.submit 'Etape suivante', class: "action", id: 'etape_suivante' + .col-md-5.col-lg-5.col-xs-5 diff --git a/app/views/layouts/_etape_suivante.html.haml b/app/views/layouts/_etape_suivante.html.haml index d4d00300a..145167c0d 100644 --- a/app/views/layouts/_etape_suivante.html.haml +++ b/app/views/layouts/_etape_suivante.html.haml @@ -1 +1 @@ -= submit_tag 'Etape suivante', class: %w(btn btn btn-info), style: 'float:right', id: 'etape_suivante', data: { disable_with: 'Etape suivante', submit: true} \ No newline at end of file += submit_tag 'Etape suivante', class: %w(btn btn btn-info), style: 'float:right', id: 'etape_suivante', data: { disable_with: 'Etape suivante', submit: true} From e367cba4807704f5d981492f539c6a016b0fcd72 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 14:41:50 +0100 Subject: [PATCH 122/182] Added condition to show renseigner un siret action in dossiers#show --- app/assets/stylesheets/default_data_block.scss | 9 +++++++-- app/views/backoffice/dossiers/show.html.haml | 11 +++++++++++ app/views/dossiers/_actions.html.haml | 4 ---- app/views/users/recapitulatif/show.html.haml | 11 +++++++++++ 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/app/assets/stylesheets/default_data_block.scss b/app/assets/stylesheets/default_data_block.scss index 027533077..454b11e9e 100644 --- a/app/assets/stylesheets/default_data_block.scss +++ b/app/assets/stylesheets/default_data_block.scss @@ -35,13 +35,18 @@ color: #FFFFFF; font-size: 18px; font-weight: bold; - .title, .action, .count { - cursor: pointer; + .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; diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 42c7e55c4..a119f39d6 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -48,6 +48,17 @@ %div.new-action ENVOYER UN MESSAGE + - if @facade.procedure.individual_with_siret + .default_data_block + %div.row.show-block#infos + %div.header + %div.col-lg-8.col-md-8.title-no-expanse + %div.carret-right + INFORMATIONS ENTREPRISE / ASSOCIATION + %div.col-lg-4.col-md-4.action + %a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} + = "Renseigner un SIRET" + - unless @facade.entreprise.nil? .default_data_block %div.row.show-block#infos diff --git a/app/views/dossiers/_actions.html.haml b/app/views/dossiers/_actions.html.haml index 3146f7c70..4b9f062a8 100644 --- a/app/views/dossiers/_actions.html.haml +++ b/app/views/dossiers/_actions.html.haml @@ -9,7 +9,3 @@ Modifier les documents %br = render partial: 'users/recapitulatif/modal_upload_pj' - - - if @facade.procedure.individual_with_siret - %a#add_siret.btn.btn-success{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} - = "Renseigner un SIRET" diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index 11eafb82d..2dadffaf7 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -48,6 +48,17 @@ %div.new-action ENVOYER UN MESSAGE + - if @facade.procedure.individual_with_siret + .default_data_block + %div.row.show-block#infos + %div.header + %div.col-lg-8.col-md-8.title-no-expanse + %div.carret-right + INFORMATIONS ENTREPRISE / ASSOCIATION + %div.col-lg-4.col-md-4.action + %a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} + = "Renseigner un SIRET" + - unless @facade.entreprise.nil? .default_data_block %div.row.show-block#infos From f0d5b5dc259a05ef3c2ea4f19cbc47ef652b959d Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 15:17:18 +0100 Subject: [PATCH 123/182] Need to add carto body, and then private field block --- app/assets/stylesheets/dossier_show.scss | 17 ++++++- app/views/dossiers/_actions.html.haml | 11 ----- .../dossiers/_edit_pieces_jointes.html.haml | 11 +++++ app/views/dossiers/_infos_dossier.html.haml | 4 +- .../dossiers/_infos_pieces_jointes.html.haml | 49 +++++++++++++++++++ app/views/users/recapitulatif/show.html.haml | 12 ++++- 6 files changed, 88 insertions(+), 16 deletions(-) delete mode 100644 app/views/dossiers/_actions.html.haml create mode 100644 app/views/dossiers/_edit_pieces_jointes.html.haml create mode 100644 app/views/dossiers/_infos_pieces_jointes.html.haml diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index d571f2399..073637ff4 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -89,7 +89,19 @@ } #carto { } - #dossier, #infos, #carto { + #pieces-jointes { + .piece-row { + margin: 20px; + .piece-label { + text-align: right; + font-weight: bold; + } + } + .modal-title { + color: #000000; + } + } + #dossier, #pieces-jointes, #infos, #carto { .body { padding: 0 20px 0 20px; color: #000000; @@ -125,6 +137,9 @@ .margin-top-40 { margin-top: 40px; } + .margin-bot-40 { + margin-bottom: 40px; + } } } } diff --git a/app/views/dossiers/_actions.html.haml b/app/views/dossiers/_actions.html.haml deleted file mode 100644 index 4b9f062a8..000000000 --- a/app/views/dossiers/_actions.html.haml +++ /dev/null @@ -1,11 +0,0 @@ -%div.col-lg-2.col-md-2.action - - unless @facade.dossier.read_only? - - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) - - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 - %a#maj_pj.btn.btn-success{"data-target" => "#UploadPJmodal", - "data-toggle" => "modal", - :type => "button", - style: 'margin-bottom: 15px; margin-top: -30px'} - Modifier les documents - %br - = render partial: 'users/recapitulatif/modal_upload_pj' diff --git a/app/views/dossiers/_edit_pieces_jointes.html.haml b/app/views/dossiers/_edit_pieces_jointes.html.haml new file mode 100644 index 000000000..11ef7f71a --- /dev/null +++ b/app/views/dossiers/_edit_pieces_jointes.html.haml @@ -0,0 +1,11 @@ +- unless @facade.dossier.read_only? + - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) + - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 + %div.col-lg-4.col-md-4.action + %a#maj_pj.action{"data-target" => "#UploadPJmodal", + "data-toggle" => "modal", + :type => "button", + style: 'margin-bottom: 15px; margin-top: -30px'} + Modifier les documents + %br + = render partial: 'users/recapitulatif/modal_upload_pj' diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 5710639bf..cf31d78ce 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -1,5 +1,5 @@ %div.row - .col-lg-12.col-md-12 + .col-lg-12.col-md-12.margin-bot-40 - if @facade.procedure.for_individual? .row.title-row %div.col-md-4.col-lg-4.split-hr @@ -43,8 +43,6 @@ %div.col-md-5.col-lg-5.depositaire-info - unless champ.decorate.value.blank? = champ.decorate.value.html_safe - .row.margin-top-40 - .col-lg-12.col-md-12= render partial: '/dossiers/pieces_justificatives' - if @facade.dossier.mandataire_social && gestionnaire_signed_in? .mandataire_social.text-success.center diff --git a/app/views/dossiers/_infos_pieces_jointes.html.haml b/app/views/dossiers/_infos_pieces_jointes.html.haml new file mode 100644 index 000000000..1a944383b --- /dev/null +++ b/app/views/dossiers/_infos_pieces_jointes.html.haml @@ -0,0 +1,49 @@ +#pieces_justificatives + .row + - if @facade.procedure.cerfa_flag? + .col-md-12.col-lg-12#piece_justificative_0 + .row.piece-row + .col-md-6.col-lg-6.piece-label= 'Formulaire' + .col-md-1.col-lg-1.comments-off= "-" + .col-md-5.col-lg-5 + - if @facade.dossier.cerfa_available? + %a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter + %span{style:'margin-left:12px'} + \- + %a.btn.fa.fa-timer{style:'color: black; padding-top: 0', + "data-target" => "#PJmodal", + "data-toggle" => "modal", + :type => "button", + "data-modal_title" => 'formulaires', + "data-modal_index" => 'cerfa'} + - else + = 'Pièce non fournie' + + .row + .col-md-12.col-lg-12 + - @facade.dossier.types_de_piece_justificative.order('order_place ASC').each do |type_de_piece_justificative| + .row.piece-row + .col-md-12.col-lg-12{ id: "piece_justificative_#{type_de_piece_justificative.id}" } + .row + .col-md-6.col-lg-6= type_de_piece_justificative.libelle + .col-md-6.col-lg-6 + - if type_de_piece_justificative.api_entreprise + %span.text-success Nous l'avons récupéré pour vous. + - elsif !(@pj = @facade.dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)).nil? + -#- if user_signed_in? + -# = 'Pièce fournie' + -#- elsif gestionnaire_signed_in? + %a{ href: "#{@pj.content_url}", target: '_blank' } Consulter + %span{style:'margin-left:12px'} + \- + %a.btn.fa.fa-timer{style:'color: black; padding-top: 0', + "data-target" => "#PJmodal", + "data-toggle" => "modal", + :type => "button", + "data-modal_title" => type_de_piece_justificative.libelle, + "data-modal_index" => "type_de_pj_#{type_de_piece_justificative.id}"} + - else + = 'Pièce non fournie' + + -#- if gestionnaire_signed_in? + = render partial: '/dossiers/modal_historique' diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index 2dadffaf7..a4852e371 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -80,7 +80,17 @@ = render partial: '/dossiers/edit_dossier' %div.body = render partial: '/dossiers/infos_dossier' - = render partial: '/dossiers/actions' + + .default_data_block + %div.row.show-block#pieces-jointes + %div.header + %div.col-lg-8.col-md-8.title + %div.carret-right + %div.carret-down + = "pièces du dossier".upcase + = render partial: '/dossiers/edit_pieces_jointes' + %div.body + = render partial: '/dossiers/infos_pieces_jointes' - if @facade.dossier.procedure.module_api_carto.use_api_carto .default_data_block From 029fb1faec15131d57e7089f9ccf8f9142601d4e Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 15:22:57 +0100 Subject: [PATCH 124/182] Continue working on css, display carto (buggy), now adding private fields --- app/views/backoffice/dossiers/show.html.haml | 13 +++++++++++++ app/views/dossiers/_infos_carto.html.haml | 11 +++++++++++ app/views/dossiers/_infos_dossier.html.haml | 13 ------------- app/views/users/recapitulatif/show.html.haml | 2 ++ 4 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 app/views/dossiers/_infos_carto.html.haml diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index a119f39d6..4b26e1cfc 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -81,6 +81,17 @@ %div.body = render partial: '/dossiers/infos_dossier' + .default_data_block + %div.row.show-block#pieces-jointes + %div.header + %div.col-lg-8.col-md-8.title + %div.carret-right + %div.carret-down + = "pièces du dossier".upcase + = render partial: '/dossiers/edit_pieces_jointes' + %div.body + = render partial: '/dossiers/infos_pieces_jointes' + - if @facade.dossier.procedure.module_api_carto.use_api_carto .default_data_block %div.row.show-block#carto @@ -90,4 +101,6 @@ %div.carret-down CARTOGRAPHIE = render partial: '/dossiers/edit_carto' + %div.body + = render partial: '/dossiers/infos_carto' diff --git a/app/views/dossiers/_infos_carto.html.haml b/app/views/dossiers/_infos_carto.html.haml new file mode 100644 index 000000000..42b8a7c8e --- /dev/null +++ b/app/views/dossiers/_infos_carto.html.haml @@ -0,0 +1,11 @@ +.row + .col-md-12.col-lg-12 + #map.mini{class: @facade.dossier.procedure.module_api_carto.classes} + + %input{id: 'json_latlngs', type:'hidden', value: "#{@facade.dossier.json_latlngs}"} + %input{id: 'quartier_prioritaires', type:'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"} + %input{id: 'cadastres', type:'hidden', value: "#{@facade.dossier.cadastres.to_json}"} + + %script{type: 'text/javascript'} + = "var dossier_id =#{@facade.dossier.id}" + initCarto(); diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index cf31d78ce..7434266d9 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -52,19 +52,6 @@ ="#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}" =")" - - if @facade.dossier.procedure.module_api_carto.use_api_carto - .col-lg-6.col-md-6 - - #map.mini{class: @facade.dossier.procedure.module_api_carto.classes} - - %input{id: 'json_latlngs', type:'hidden', value: "#{@facade.dossier.json_latlngs}"} - %input{id: 'quartier_prioritaires', type:'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"} - %input{id: 'cadastres', type:'hidden', value: "#{@facade.dossier.cadastres.to_json}"} - - %script{type: 'text/javascript'} - = "var dossier_id =#{@facade.dossier.id}" - initCarto(); - #modalCommentairesDossierParChamp.modal.fade{"tabindex" => -1, "role" => "dialog"} .modal-dialog{"role" => "document"} .modal-content diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index a4852e371..4af1b2e88 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -101,4 +101,6 @@ %div.carret-down CARTOGRAPHIE = render partial: '/dossiers/edit_carto' + %div.body + = render partial: '/dossiers/infos_carto' From 6d8d8470d82574b2b03f99133f132570e34109ac Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 15:36:04 +0100 Subject: [PATCH 125/182] Need to test UI --- app/assets/stylesheets/dossier_show.scss | 7 ++++++- app/views/backoffice/dossiers/show.html.haml | 13 +++++++++++++ app/views/dossiers/_infos_private_fields.html.haml | 9 +++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 app/views/dossiers/_infos_private_fields.html.haml diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 073637ff4..b9c656a79 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -89,6 +89,11 @@ } #carto { } + #private-fields { + .text-primary { + color: #337ab7; + } + } #pieces-jointes { .piece-row { margin: 20px; @@ -101,7 +106,7 @@ color: #000000; } } - #dossier, #pieces-jointes, #infos, #carto { + #dossier, #pieces-jointes, #infos, #carto, #private-fields { .body { padding: 0 20px 0 20px; color: #000000; diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 4b26e1cfc..ddfc1f3aa 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -104,3 +104,16 @@ %div.body = render partial: '/dossiers/infos_carto' + .default_data_block + %div.row.show-block#private-fields + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + = "champs privés".upcase + %div.col-lg-2.col-md-2.count + - private_fields_count = @champs.count + = (private_fields_count == 1) ? "1 champ privé" : "#{private_fields_count} champs privés" + %div.body + = render partial: '/dossiers/infos_private_fields' + diff --git a/app/views/dossiers/_infos_private_fields.html.haml b/app/views/dossiers/_infos_private_fields.html.haml new file mode 100644 index 000000000..ffe8dc739 --- /dev/null +++ b/app/views/dossiers/_infos_private_fields.html.haml @@ -0,0 +1,9 @@ +.row + .col-md-12.col-lg-12 + - if @champs.nil? || @champs.empty? + %h4.text-primary.center + Pas de champ privé pour ce dossier + - else + = form_for @facade.dossier, url: {controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id}, remote: true do + = render partial: '/users/description/champs' + = submit_tag :Enregistrer, {class: 'action', style: 'float: right'} From 004e8de3f98cb506470236ecfb6ef256a5a70156 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 6 Dec 2016 16:29:52 +0100 Subject: [PATCH 126/182] Ok, big css work now --- app/assets/stylesheets/application.scss | 10 +++++++--- app/views/layouts/_footer.html.haml | 11 +++-------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 013410cb2..00b4d9b93 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -58,11 +58,15 @@ form { } #footer { - background-color: rgb(240, 240, 240); + background-color: #F2F6FA; text-align: center; - //margin-top: 1em; padding: 0; - + a, p { + color: #000000; + } + a:hover { + color: #000000; + } p { line-height: 40px; padding: 0; diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml index 8b079a747..89aad0171 100644 --- a/app/views/layouts/_footer.html.haml +++ b/app/views/layouts/_footer.html.haml @@ -1,13 +1,8 @@ %div#footer %p{class: "copyright col-md-push-#{12-main_container_size} col-md-#{main_container_size} col-lg-push-#{12-main_container_size} col-lg-#{main_container_size} text-muted small"} - =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" - + = link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" 2016 - \- - - =link_to 'CGU / Mentions légales', cgu_path - + = link_to 'CGU / Mentions légales', cgu_path \- - - =link_to 'Contact', "mailto:"+t('dynamics.contact_email') + = link_to 'Contact', "mailto:"+t('dynamics.contact_email') From 746d69796e8e4f5b521ff46ce28e2c12035be498 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 11:51:26 +0100 Subject: [PATCH 127/182] Remove has-error class on admin views --- app/views/admin/gestionnaires/_informations.html.haml | 2 +- app/views/admin/procedures/_informations.html.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/admin/gestionnaires/_informations.html.haml b/app/views/admin/gestionnaires/_informations.html.haml index 6ee5146e4..c83fd0de5 100644 --- a/app/views/admin/gestionnaires/_informations.html.haml +++ b/app/views/admin/gestionnaires/_informations.html.haml @@ -1,5 +1,5 @@ -{email: 'Email*'}.each do |key, value| - .form-group{class: ('has-error' if @gestionnaire.errors.messages[key])} + .form-group %h4 =value =f.text_field key, class: 'form-control', placeholder: value diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index d22e32166..ee462383d 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -2,7 +2,7 @@ %br -{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction', lien_site_web: 'Lien site internet', lien_notice: 'Lien notice'}.each do |key, value| - .form-group{class: ('has-error' if @procedure.errors.messages[key])} + .form-group %h4 =value - if key == :description From 5c93920f74af063b63f1182aec64152fa86ea46f Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 7 Dec 2016 13:57:55 +0100 Subject: [PATCH 128/182] Mutualize all informations in dossier_show partial, now work on css --- app/assets/javascripts/default_data_block.js | 4 - app/assets/stylesheets/dossier_show.scss | 31 +++++ app/views/backoffice/dossiers/show.html.haml | 119 +----------------- app/views/dossiers/_dossier_show.html.haml | 111 ++++++++++++++++ app/views/dossiers/_infos_dossier.html.haml | 111 +++++++++++++++- .../dossiers/_infos_private_fields.html.haml | 5 +- .../dossiers/_modal_historique.html.haml | 43 ------- app/views/users/description/_champs.html.haml | 6 +- .../champs/_header_section.html.haml | 101 ++++++++------- app/views/users/recapitulatif/show.html.haml | 106 +--------------- config/locales/en.yml | 2 + config/locales/fr.yml | 2 + 12 files changed, 310 insertions(+), 331 deletions(-) create mode 100644 app/views/dossiers/_dossier_show.html.haml delete mode 100644 app/views/dossiers/_modal_historique.html.haml diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index c69398a37..716557896 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -6,10 +6,6 @@ function init_default_data_block() { $('.default_data_block #dossier .carret-right').toggle(); $('.default_data_block #dossier .carret-down').toggle(); - if ($('.default_data_block #messages .commentaires').length == 0) { - $('.default_data_block #messages .body').toggle(); - } - $('.default_data_block .title').click(function () { toggle_default_data_bloc(this, 400); }); diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index b9c656a79..00b200c9a 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -117,9 +117,40 @@ .depositaire-label { font-weight: bold; text-align: end; + margin-left: -20px; } .depositaire-info { } + .btn-action{ + border: none; + margin: 20px 0 40px 0; + } + .btn-action:hover { + color: #EEEEEE; + } + .action { + margin: 20px 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; } diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index ddfc1f3aa..5636035d7 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -1,119 +1,2 @@ %div.col-lg-12.col-md-12#backoffice_dossier_show - - .default_data_block - .row.show-block#messages - %div.header - %div.col-lg-10.col-md-10.title - .carret-right - .carret-down - MESSAGES - %div.col-lg-2.col-md-2.count - - message_count = @facade.commentaires.count - = (message_count == 1) ? "1 message" : "#{message_count} messages" - %div.body - - unless @facade.commentaires.empty? - %div.commentaires - - @facade.commentaires.object.sort.each do |commentaire| - = render partial: commentaire - - else - %div.no-commentaires - = t("utils.no-commentaires") - .row - .col-lg-12.col-md-12 - %div.split-hr - .row - %div.col-lg-12.col-md-12#new-commentaire - = form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id, champ_id: @facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do - %textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"} - %h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier - = file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px' - %input.form-control.btn.btn-send{ type: 'submit', value: 'ENVOYER' } - - if last_comment = @facade.commentaires.first - %div.last-commentaire - .row - %div.col-lg-12.col-md-12.comment-header - = "DERNIER MESSAGE (#{last_comment.header})" - .row - %div.col-lg-12.col-md-12.content - = last_comment.body.html_safe - - if file = last_comment.piece_justificative - .row - %div.col-lg-12.col-md-12.file - = link_to file.content_url, class: 'link', target: '_blank' do - %span.fa.fa-file - %div - = file.original_filename - .row - .col-lg-12.col-md-12 - %div.new-action - ENVOYER UN MESSAGE - - - if @facade.procedure.individual_with_siret - .default_data_block - %div.row.show-block#infos - %div.header - %div.col-lg-8.col-md-8.title-no-expanse - %div.carret-right - INFORMATIONS ENTREPRISE / ASSOCIATION - %div.col-lg-4.col-md-4.action - %a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} - = "Renseigner un SIRET" - - - unless @facade.entreprise.nil? - .default_data_block - %div.row.show-block#infos - %div.header - %div.col-lg-12.col-md-12.title - %div.carret-right - %div.carret-down - INFORMATIONS ENTREPRISE / ASSOCIATION - %div.body - = render partial: '/dossiers/infos_entreprise' - - .default_data_block - %div.row.show-block#dossier - %div.header - %div.col-lg-10.col-md-10.title - %div.carret-right - %div.carret-down - CONSTRUCTION DU DOSSIER - = render partial: '/dossiers/edit_dossier' - %div.body - = render partial: '/dossiers/infos_dossier' - - .default_data_block - %div.row.show-block#pieces-jointes - %div.header - %div.col-lg-8.col-md-8.title - %div.carret-right - %div.carret-down - = "pièces du dossier".upcase - = render partial: '/dossiers/edit_pieces_jointes' - %div.body - = render partial: '/dossiers/infos_pieces_jointes' - - - if @facade.dossier.procedure.module_api_carto.use_api_carto - .default_data_block - %div.row.show-block#carto - %div.header - %div.col-lg-10.col-md-10.title - %div.carret-right - %div.carret-down - CARTOGRAPHIE - = render partial: '/dossiers/edit_carto' - %div.body - = render partial: '/dossiers/infos_carto' - - .default_data_block - %div.row.show-block#private-fields - %div.header - %div.col-lg-10.col-md-10.title - %div.carret-right - %div.carret-down - = "champs privés".upcase - %div.col-lg-2.col-md-2.count - - private_fields_count = @champs.count - = (private_fields_count == 1) ? "1 champ privé" : "#{private_fields_count} champs privés" - %div.body - = render partial: '/dossiers/infos_private_fields' - + = render partial: "dossiers/dossier_show" diff --git a/app/views/dossiers/_dossier_show.html.haml b/app/views/dossiers/_dossier_show.html.haml new file mode 100644 index 000000000..af470f19a --- /dev/null +++ b/app/views/dossiers/_dossier_show.html.haml @@ -0,0 +1,111 @@ +.default_data_block + .row.show-block#messages + %div.header + %div.col-lg-10.col-md-10.title + .carret-right + .carret-down + MESSAGES + %div.col-lg-2.col-md-2.count + - message_count = @facade.commentaires.count + = (message_count == 1) ? "1 message" : "#{message_count} messages" + %div.body + - unless @facade.commentaires.empty? + %div.commentaires + - @facade.commentaires.object.sort.each do |commentaire| + = render partial: commentaire + .row + .col-lg-12.col-md-12 + %div.split-hr + .row + %div.col-lg-12.col-md-12#new-commentaire + = form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id, champ_id: @facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do + %textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"} + %h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier + = file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px' + %input.form-control.btn.btn-send{ type: 'submit', value: 'ENVOYER' } + - if last_comment = @facade.commentaires.first + %div.last-commentaire + .row + %div.col-lg-12.col-md-12.comment-header + = "DERNIER MESSAGE (#{last_comment.header})" + .row + %div.col-lg-12.col-md-12.content + = last_comment.body.html_safe + - if file = last_comment.piece_justificative + .row + %div.col-lg-12.col-md-12.file + = link_to file.content_url, class: 'link', target: '_blank' do + %span.fa.fa-file + %div + = file.original_filename + .row + .col-lg-12.col-md-12 + %div.new-action + ENVOYER UN MESSAGE + - else + .last-commentaire + .row + .col-lg-12.col-md-12 + %div.new-action + ENVOYER UN MESSAGE + +- if @facade.procedure.individual_with_siret + .default_data_block + %div.row.show-block#infos + %div.header + %div.col-lg-8.col-md-8.title-no-expanse + %div.carret-right + INFORMATIONS ENTREPRISE / ASSOCIATION + %div.col-lg-4.col-md-4.action + %a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} + = "Renseigner un SIRET" + +- unless @facade.entreprise.nil? + .default_data_block + %div.row.show-block#infos + %div.header + %div.col-lg-12.col-md-12.title + %div.carret-right + %div.carret-down + INFORMATIONS ENTREPRISE / ASSOCIATION + %div.body + = render partial: '/dossiers/infos_entreprise' + +.default_data_block + %div.row.show-block#dossier + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + CONSTRUCTION DU DOSSIER + = render partial: '/dossiers/edit_dossier' + %div.body + = render partial: '/dossiers/infos_dossier' + +- if @facade.dossier.procedure.module_api_carto.use_api_carto + - if false + .default_data_block + %div.row.show-block#carto + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + CARTOGRAPHIE + = render partial: '/dossiers/edit_carto' + %div.body + = render partial: '/dossiers/infos_carto' + +- if @current_gestionnaire && gestionnaire_signed_in? + .default_data_block + %div.row.show-block#private-fields + %div.header + %div.col-lg-10.col-md-10.title + %div.carret-right + %div.carret-down + = "champs privés".upcase + %div.col-lg-2.col-md-2.count + - private_fields_count = @champs.count + = (private_fields_count == 1) ? "1 champ privé" : "#{private_fields_count} champs privés" + %div.body + = render partial: '/dossiers/infos_private_fields' + diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 7434266d9..47365b15c 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -1,23 +1,27 @@ %div.row - .col-lg-12.col-md-12.margin-bot-40 + .col-lg-12.col-md-12 - if @facade.procedure.for_individual? .row.title-row %div.col-md-4.col-lg-4.split-hr - %div.col-md-4.col-lg-4.dossier-title= t('dynamics.dossiers.depositaite').upcase + %div.col-md-4.col-lg-4.dossier-title= t('utils.depositaire').upcase %div.col-md-4.col-lg-4.split-hr .row %div.col-md-6.col-lg-6.depositaire-label Civilité - %div.col-md-6.col-lg-6.depositaire-info= @facade.individual.gender + %div.col-md-1.col-lg-1.comments-off= "-" + %div.col-md-5.col-lg-5.depositaire-info= @facade.individual.gender .row %div.col-md-6.col-lg-6.depositaire-label Nom - %div.col-md-6.col-lg-6.depositaire-info= @facade.individual.nom + %div.col-md-1.col-lg-1.comments-off= "-" + %div.col-md-5.col-lg-5.depositaire-info= @facade.individual.nom .row %div.col-md-6.col-lg-6.depositaire-label Prénom - %div.col-md-6.col-lg-6.despositaire-info= @facade.individual.prenom + %div.col-md-1.col-lg-1.comments-off= "-" + %div.col-md-5.col-lg-5.despositaire-info= @facade.individual.prenom - unless Features.opensimplif .row %div.col-md-6.col-lg-6.depositaire-label Date de naissance - %div.col-md-6.col-lg-6.depositaire-info= @facade.individual.birthdate + %div.col-md-1.col-lg-1.comments-off= "-" + %div.col-md-5.col-lg-5.depositaire-info= @facade.individual.birthdate - unless @facade.champs.nil? - @facade.champs.each do |champ| @@ -51,6 +55,101 @@ %b ="#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}" =")" +%div.row + .col-lg-12.col-md-12 + - if @facade.procedure.for_individual? + .row.title-row + %div.col-md-4.col-lg-4.split-hr + %div.col-md-4.col-lg-4.dossier-title= t('utils.pieces').upcase + %div.col-md-4.col-lg-4.split-hr + .col-lg-12.col-md-12#pieces_justificatives.margin-bot-40 + .row + - if @facade.procedure.cerfa_flag? + .col-md-12.col-lg-12#piece_justificative_0 + .row.piece-row + .col-md-6.col-lg-6.depositaire-label= 'Formulaire' + .col-md-1.col-lg-1.comments-off= "-" + .col-md-5.col-lg-5.despositaire-info + - if @facade.dossier.cerfa_available? + %a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter + %span{style:'margin-left:12px'} + \- + = link_to "", class: "historique", "data-toggle" => "modal", "data-target" => "#PJmodal", :type => "button", "data-modal_title" => 'formulaires', "data-modal_index" => 'cerfa' do + %span.fa.fa-clock-o + - else + = 'Pièce non fournie' + .row + .col-md-12.col-lg-12 + - @facade.dossier.types_de_piece_justificative.order('order_place ASC').each do |type_de_piece_justificative| + .row.piece-row + .col-md-12.col-lg-12{ id: "piece_justificative_#{type_de_piece_justificative.id}" } + .row + %div.col-md-6.col-lg-6.depositaire-label= type_de_piece_justificative.libelle + %div.col-md-1.col-lg-1.comments-off= "-" + %div.col-md-5.col-lg-5.despositaire-info + - if type_de_piece_justificative.api_entreprise + %span.text-success Nous l'avons récupéré pour vous. + - elsif !(@pj = @facade.dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)).nil? + %a{ href: "#{@pj.content_url}", target: '_blank' } Consulter + %span{style:'margin-left:12px'} + \- + = link_to "", class: "historique", "data-toggle" => "modal", "data-target" => "#PJmodal", :type => "button", "data-modal_title" => 'formulaires', "data-modal_index" => 'cerfa' do + %span.fa.fa-clock-o + - else + = 'Pièce non fournie' + - unless @facade.dossier.read_only? + - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) + - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 + .row + .col-lg-4.col-md-4 + .col-lg-4.col-md-4.action + %a#maj_pj.action{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", :type => "button"} + Modifier les documents + %br + = render partial: 'users/recapitulatif/modal_upload_pj' + .col-lg-4.col-md-4 + + - if gestionnaire_signed_in? + #PJmodal.modal.fade{"aria-labelledby" => "myModalLabel", :role => "dialog", :tabindex => "-1"} + .modal-dialog.modal-lg{:role => "document"} + .modal-content + .modal-header + %button.close{"aria-label" => "Close", "data-dismiss" => "modal", :type => "button"} + %span{"aria-hidden" => "true"} × + %h4#myModalLabel.modal-title + Historique des + %span#PJmodal_title + .modal-body + %table.table + %thead + %th + Utilisateur + %th + Date d'envoi + %th + Lien + %thead.tr_content#cerfa + -if @facade.procedure.cerfa_flag? + - if @facade.dossier.cerfa_available? + - @facade.cerfas_ordered.each do |cerfa| + %tr + %td.col-md-6.col-lg-4 + = cerfa.user.email + %td.col-md-6.col-lg-4 + = cerfa.created_at + %td.col-md-6.col-lg-4 + =link_to 'Récupérer', cerfa.content_url, {target: :blank} + - @facade.dossier.types_de_piece_justificative.each do |type_de_piece_justificative| + %tbody.tr_content{id: "type_de_pj_#{type_de_piece_justificative.id}"} + - @facade.dossier.retrieve_all_piece_justificative_by_type(type_de_piece_justificative.id).each do |piece_justificative| + %tr + %td.col-md-6.col-lg-4 + = piece_justificative.user.email + %td.col-md-6.col-lg-4 + = piece_justificative.created_at + %td.col-md-6.col-lg-4 + =link_to 'Récupérer', piece_justificative.content_url, {target: :blank} + .modal-footer #modalCommentairesDossierParChamp.modal.fade{"tabindex" => -1, "role" => "dialog"} .modal-dialog{"role" => "document"} diff --git a/app/views/dossiers/_infos_private_fields.html.haml b/app/views/dossiers/_infos_private_fields.html.haml index ffe8dc739..087aac2f9 100644 --- a/app/views/dossiers/_infos_private_fields.html.haml +++ b/app/views/dossiers/_infos_private_fields.html.haml @@ -6,4 +6,7 @@ - else = form_for @facade.dossier, url: {controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id}, remote: true do = render partial: '/users/description/champs' - = submit_tag :Enregistrer, {class: 'action', style: 'float: right'} + .row + .col-md-4.col-lg-4 + .col-md-4.col-lg-4= submit_tag :Enregistrer, {class: 'btn-action'} + .col-md-4.col-lg-4 diff --git a/app/views/dossiers/_modal_historique.html.haml b/app/views/dossiers/_modal_historique.html.haml deleted file mode 100644 index 27f470ea0..000000000 --- a/app/views/dossiers/_modal_historique.html.haml +++ /dev/null @@ -1,43 +0,0 @@ -#PJmodal.modal.fade{"aria-labelledby" => "myModalLabel", :role => "dialog", :tabindex => "-1"} - .modal-dialog.modal-lg{:role => "document"} - .modal-content - .modal-header - %button.close{"aria-label" => "Close", "data-dismiss" => "modal", :type => "button"} - %span{"aria-hidden" => "true"} × - %h4#myModalLabel.modal-title - Historique des - %span#PJmodal_title - .modal-body - %table.table - %thead - %th - Utilisateur - %th - Date d'envoi - %th - Lien - %thead.tr_content#cerfa - -if @facade.procedure.cerfa_flag? - - if @facade.dossier.cerfa_available? - - @facade.cerfas_ordered.each do |cerfa| - %tr - %td.col-md-6.col-lg-4 - = cerfa.user.email - %td.col-md-6.col-lg-4 - = cerfa.created_at - %td.col-md-6.col-lg-4 - =link_to 'Récupérer', cerfa.content_url, {target: :blank} - - @facade.dossier.types_de_piece_justificative.each do |type_de_piece_justificative| - %tbody.tr_content{id: "type_de_pj_#{type_de_piece_justificative.id}"} - - @facade.dossier.retrieve_all_piece_justificative_by_type(type_de_piece_justificative.id).each do |piece_justificative| - %tr - %td.col-md-6.col-lg-4 - = piece_justificative.user.email - %td.col-md-6.col-lg-4 - = piece_justificative.created_at - %td.col-md-6.col-lg-4 - =link_to 'Récupérer', piece_justificative.content_url, {target: :blank} - - - - .modal-footer diff --git a/app/views/users/description/_champs.html.haml b/app/views/users/description/_champs.html.haml index 712d13c00..aafe1442e 100644 --- a/app/views/users/description/_champs.html.haml +++ b/app/views/users/description/_champs.html.haml @@ -1,8 +1,8 @@ -- if @headers.nil? - -@headers.each do |header| +- unless @headers.nil? + - @headers.each do |header| .row %div{class: "type_champ-#{header.type_champ}"} =render partial: 'users/description/champs/header_section', locals: {libelle: header.libelle, order_place: header.order_place, champs: @champs} - else .row - =render partial: 'users/description/champs/header_section', locals: {libelle: 'Dossier', order_place: -1, champs: @champs} \ No newline at end of file + =render partial: 'users/description/champs/header_section', locals: {libelle: 'Dossier', order_place: -1, champs: @champs} diff --git a/app/views/users/description/champs/_header_section.html.haml b/app/views/users/description/champs/_header_section.html.haml index 3ba589f83..6c44d36dc 100644 --- a/app/views/users/description/champs/_header_section.html.haml +++ b/app/views/users/description/champs/_header_section.html.haml @@ -1,64 +1,63 @@ -.default_data_block.default_visible - %div.row.show-block#infos - %div.header - %div.col-lg-12.col-md-12.title - %div.carret-right - %div.carret-down - =libelle - %div.body - -champs.each do |champ| - - if champ.order_place > order_place - - if champ.type_champ == 'header_section' - - break +.row + .col-lg-12.col-md-12 + .row.title-row + .col-md-4.col-lg-4.split-hr + .col-md-4.col-lg-4.dossier-title= libelle + .col-md-4.col-lg-4.split-hr + .row + .col-lg-4.col-md-4 + .col-lg-8.col-md-8 + -champs.each do |champ| + - if champ.order_place > order_place + - if champ.type_champ == 'header_section' + - break - - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' - %h4 - = champ.libelle - - if champ.mandatory? - = '*' + - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' + %h4 + = champ.libelle + - if champ.mandatory? + = '*' - -if champ.type_champ == 'textarea' - =render partial: 'users/description/champs/textarea', locals: {champ: champ} + -if champ.type_champ == 'textarea' + =render partial: 'users/description/champs/textarea', locals: {champ: champ} - -elsif champ.type_champ == 'checkbox' - = render partial: 'users/description/champs/checkbox', locals: {champ: champ} + -elsif champ.type_champ == 'checkbox' + = render partial: 'users/description/champs/checkbox', locals: {champ: champ} - -elsif champ.type_champ == 'civilite' - =render partial: 'users/description/champs/civilite', locals: {champ: champ} + -elsif champ.type_champ == 'civilite' + =render partial: 'users/description/champs/civilite', locals: {champ: champ} - - elsif champ.type_champ == 'datetime' - =render partial: 'users/description/champs/datetime', locals: {champ: champ} + - elsif champ.type_champ == 'datetime' + =render partial: 'users/description/champs/datetime', locals: {champ: champ} - - elsif champ.type_champ == 'yes_no' - =render partial: 'users/description/champs/yes_no', locals: {champ: champ} + - elsif champ.type_champ == 'yes_no' + =render partial: 'users/description/champs/yes_no', locals: {champ: champ} - - elsif champ.type_champ == 'drop_down_list' - =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} + - elsif champ.type_champ == 'drop_down_list' + =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} - - elsif champ.type_champ == 'pays' - =render partial: 'users/description/champs/pays', locals: {champ: champ} + - elsif champ.type_champ == 'pays' + =render partial: 'users/description/champs/pays', locals: {champ: champ} - - elsif champ.type_champ == 'regions' - =render partial: 'users/description/champs/regions', locals: {champ: champ} + - elsif champ.type_champ == 'regions' + =render partial: 'users/description/champs/regions', locals: {champ: champ} - - elsif champ.type_champ == 'engagement' - =render partial: 'users/description/champs/engagement', locals: {champ: champ} + - elsif champ.type_champ == 'engagement' + =render partial: 'users/description/champs/engagement', locals: {champ: champ} - - elsif champ.type_champ == 'departements' - =render partial: 'users/description/champs/departements', locals: {champ: champ} - - -else - %input.form-control{name:"champs['#{champ.id}']", - placeholder: champ.libelle, - id: "champs_#{champ.id}", - value: champ.value, - type: champ.type_champ, - 'data-provide' => champ.data_provide, - 'data-date-format' => champ.data_date_format} - - - unless champ.description.empty? || champ.type_champ == 'engagement' - .row - .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} - = champ.description + - elsif champ.type_champ == 'departements' + =render partial: 'users/description/champs/departements', locals: {champ: champ} + -else + %input.form-control{name:"champs['#{champ.id}']", + placeholder: champ.libelle, + id: "champs_#{champ.id}", + value: champ.value, + type: champ.type_champ, + 'data-provide' => champ.data_provide, + 'data-date-format' => champ.data_date_format} + - unless champ.description.empty? || champ.type_champ == 'engagement' + .row + .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} + = champ.description diff --git a/app/views/users/recapitulatif/show.html.haml b/app/views/users/recapitulatif/show.html.haml index 4af1b2e88..0a877cbf7 100644 --- a/app/views/users/recapitulatif/show.html.haml +++ b/app/views/users/recapitulatif/show.html.haml @@ -1,106 +1,2 @@ %div.col-lg-12.col-md-12#users_recapitulatif_dossier_show - - .default_data_block - .row.show-block#messages - %div.header - %div.col-lg-10.col-md-10.title - .carret-right - .carret-down - MESSAGES - %div.col-lg-2.col-md-2.count - - message_count = @facade.commentaires.count - = (message_count == 1) ? "1 message" : "#{message_count} messages" - %div.body - - unless @facade.commentaires.empty? - %div.commentaires - - @facade.commentaires.object.sort.each do |commentaire| - = render partial: commentaire - - else - %div.no-commentaires - = t("utils.no-commentaires") - .row - .col-lg-12.col-md-12 - %div.split-hr - .row - %div.col-lg-12.col-md-12#new-commentaire - = form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id, champ_id: @facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do - %textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"} - %h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier - = file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px' - %input.form-control.btn.btn-send{ type: 'submit', value: 'ENVOYER' } - - if last_comment = @facade.commentaires.first - %div.last-commentaire - .row - %div.col-lg-12.col-md-12.comment-header - = "DERNIER MESSAGE (#{last_comment.header})" - .row - %div.col-lg-12.col-md-12.content - = last_comment.body.html_safe - - if file = last_comment.piece_justificative - .row - %div.col-lg-12.col-md-12.file - = link_to file.content_url, class: 'link', target: '_blank' do - %span.fa.fa-file - %div - = file.original_filename - .row - .col-lg-12.col-md-12 - %div.new-action - ENVOYER UN MESSAGE - - - if @facade.procedure.individual_with_siret - .default_data_block - %div.row.show-block#infos - %div.header - %div.col-lg-8.col-md-8.title-no-expanse - %div.carret-right - INFORMATIONS ENTREPRISE / ASSOCIATION - %div.col-lg-4.col-md-4.action - %a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} - = "Renseigner un SIRET" - - - unless @facade.entreprise.nil? - .default_data_block - %div.row.show-block#infos - %div.header - %div.col-lg-12.col-md-12.title - %div.carret-right - %div.carret-down - INFORMATIONS ENTREPRISE / ASSOCIATION - %div.body - = render partial: '/dossiers/infos_entreprise' - - .default_data_block - %div.row.show-block#dossier - %div.header - %div.col-lg-10.col-md-10.title - %div.carret-right - %div.carret-down - CONSTRUCTION DU DOSSIER - = render partial: '/dossiers/edit_dossier' - %div.body - = render partial: '/dossiers/infos_dossier' - - .default_data_block - %div.row.show-block#pieces-jointes - %div.header - %div.col-lg-8.col-md-8.title - %div.carret-right - %div.carret-down - = "pièces du dossier".upcase - = render partial: '/dossiers/edit_pieces_jointes' - %div.body - = render partial: '/dossiers/infos_pieces_jointes' - - - if @facade.dossier.procedure.module_api_carto.use_api_carto - .default_data_block - %div.row.show-block#carto - %div.header - %div.col-lg-10.col-md-10.title - %div.carret-right - %div.carret-down - CARTOGRAPHIE - = render partial: '/dossiers/edit_carto' - %div.body - = render partial: '/dossiers/infos_carto' - + = render partial: "dossiers/dossier_show" diff --git a/config/locales/en.yml b/config/locales/en.yml index 0370de246..8ac1da0bb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -25,3 +25,5 @@ en: deconnexion: "Logout" involved: "See concerned people" no-commentaires: "There is no message yet, feel free to start the first one." + depositaire: "Dépositaire" + pieces: "Pièces jointes" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index e09008c52..795c51d50 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -24,6 +24,8 @@ fr: deconnexion: "Déconnexion" involved: "Voir les personnes impliquées" no-commentaires: "Il n'y a aucun message dans le fil de discussion, n'hésitez pas à initier le premier." + depositaire: "Dépositaire" + pieces: "Pièces jointes" will_paginate: next_label: 'Suivant' previous_label: 'Précédent' From dc8e936ee5e10ac2820befb136decc9ae465805d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 14:39:06 +0100 Subject: [PATCH 129/182] Landing page TPS V2 progression --- app/controllers/root_controller.rb | 3 +- app/views/root/landing.html.haml | 187 ++++++++++++---------------- app/views/root/landing_v1.html.haml | 123 ++++++++++++++++++ 3 files changed, 202 insertions(+), 111 deletions(-) create mode 100644 app/views/root/landing_v1.html.haml diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb index 20b6ca27e..325a06b76 100644 --- a/app/controllers/root_controller.rb +++ b/app/controllers/root_controller.rb @@ -1,9 +1,8 @@ class RootController < ApplicationController def index - route = Rails.application.routes.recognize_path(request.referrer) - unless route[:controller].match('users').nil? + if user_signed_in? && !route[:controller].match('users').nil? return redirect_to users_dossiers_path end diff --git a/app/views/root/landing.html.haml b/app/views/root/landing.html.haml index 0e2e9e1ba..f37e6445b 100644 --- a/app/views/root/landing.html.haml +++ b/app/views/root/landing.html.haml @@ -1,123 +1,92 @@ #landing.max-size - #title + #title{style:'padding-bottom: 2%; padding-top: 2%'} %h1.center - TPS + TPS V2 %h2.center - TéléProcédure Simplifiée + Pour une meilleure plateforme %br %h3.center - Dématérialisez, réceptionnez et co-instruisez toutes vos démarches depuis un espace unique. + Un seul espace pour suivre les évolutions UX de la Version 2 de TPS - %br - %br - .center - %button.js-scrollTo.btn.btn-lg.btn-success{cible: '.demo_account'} - Envie d'essayer ? + .center{style:'margin-top: 40px'} + = link_to "Découvrir", '/users/sign_in', {class: "btn btn-lg btn-success"} + +#progression{style:'margin-left: 2em; margin-right: 2em; margin-top: 50px'} + %h2.center Où en est la migration vers TPS V2 ? ... + + %h2.text-success.center{style:'margin-left: 135px'} + 55% + %i.text-default{style:'font-size: 18px'} + du site migré + %div{style: 'width: 60%; margin-left:auto; margin-right:auto'} + .progress{style:'height: 30px; background-color: #ddd'} + .progress-bar.progress-bar-success.progress-bar-striped{:style => "width: 55%;"} + .progress-bar.progress-bar-warning{:style => "width: 8%;"} + %div{style:'margin-top: 0.4em'} + Interface + .progress-bar.progress-bar-info{:style => "width: 5%; font-size: 10px"} + %div{style:'margin-top: 0.4em'} + Connexion + .progress-bar.progress-bar-purple{:style => "width: 10%;"} + %div{style:'margin-top: 0.4em'} + Notifications + .progress-bar.progress-bar-danger{:style => "width: 20%;"} + %div{style:'margin-top: 0.4em'} + Fiabilisations et bugs -#suite.max-size - .row.word.simplifier - .col-md-6.col-lg-6 - = image_tag image_url('keywords/simplifier.png') - .col-md-6.col-lg-6 - %ul.dynamic_ul - %li - Générateur simplifié de démarches en ligne pour les administrations - %li - Ne demander que les informations strictement nécessaires - %li - Profiter d’une identification simplifiée grâce à - %a{href: 'http://www.modernisation.gouv.fr/ladministration-change-avec-le-numerique/par-son-systeme-dinformation/france-connect-un-acces-universel-aux-administrations-en-ligne', - target: '_blank'} - FranceConnect +#road_map.center{style:'margin-top: 30px; margin-bottom: 50px'} + %h2.text-success + Réalisé - .row.word.echanger - .col-md-6.col-lg-6 - %ul.dynamic_ul - %li - Tchatter avec les services traitant jusqu’à la complétude du dossier - %li - Etre notifié de manière électronique - %li - Accompagner les usagers dans leur démarche - %li - Vérifier les pièces au fur et à mesure - .col-md-6.col-lg-6 - = image_tag image_url('keywords/echanger.png') + #realise{style: 'width: 650px; margin-left: auto; margin-right: auto; text-align:left'} + %ul + %li + Un design général qui permet de mieux s'y retrouver + %li + Utilisateur et Accompagnateur ont maintenant la même page de connexion : + = link_to "Par ici", '/users/sign_in' + %li + Un tout nouveau tableau de bord pour les Accompagnteurs + %li + Une page récapitulative pour un dossier entièrement revue + %li + La possibilité de changer en un clic de compte entre Utilisateur et Accompagnateur + %li + Une recherche globale : tapez et vous trouverez !! - .row.word.profiter - .col-md-6.col-lg-6 - = image_tag image_url('keywords/profiter.png') - .col-md-6.col-lg-6 - %ul.dynamic_ul - %li - Profiter des ressources cartographiques directement mobilisées, si nécessaire - %li - Récupérer des informations officielles collectées directement auprès des administrations - - .row.word.news - .latest_release.col-md-7.col-lg-7 - - if @latest_release.nil? - %p - Erreur dans la récupération des données - -else - %h3.text-info - = "Dernière version (#{@latest_release.tag_name} - #{@latest_release.published_at})" - .body - =@latest_release.body.html_safe - - .center - \- - %br - %a{href: 'https://github.com/sgmap/tps/releases', target: '_blank'} - = 'Voir toutes les versions' - - .col-md-5.col-lg-5 - #video.center - %iframe{:allowfullscreen => "", :frameborder => "0", :height => "270", :src => "//www.dailymotion.com/embed/video/x3lp4cs", :width => "480"} - %br - =link_to 'Toutes les vidéos', '#', {style: 'text-decoration: none', class: 'all_video btn btn-default btn-sm'} - #all_video{style:'display: none'} - %br - %ul - %li - =link_to "Création d'une démarche avec TPS (Téléprocédure Simplifiée)", "http://dai.ly/x3s2o65", {target: '_blank'} - %li - =link_to "Etape 2 avec TPS : saisine de l'administration par un usager avec France Connect", "http://dai.ly/x3s2oj6", {target: '_blank'} - %li - =link_to "Etape 3 avec TPS : l'accompagnement par les services et l'invitation d'autres partenaires publics à co-instruire", "http://dai.ly/x3s2oqp", {target: '_blank'} - %li - =link_to "TPS: dernière étape, la validation du dossier et notification", "http://dai.ly/x3s2p6k", {target: '_blank'} - - .row.word.demo_account.center - .col-md-4.col-lg-4 - %h3.text-primary Acteurs publics - %h4 Créez des démarches en ligne simplifiées et sécurisées. - =link_to 'Démonstration', 'https://tps-dev.apientreprise.fr/administrateurs/sign_in/demo', {class: 'btn btn-lg btn-primary'} - .col-md-4.col-lg-4 - %h3.text-warning Agents et services - %h4 Accompagnez et co-traitez les projets avec les usagers. - =link_to 'Démonstration', 'https://tps-dev.apientreprise.fr/gestionnaires/sign_in/demo', {class: 'btn btn-lg btn-warning'} - - .col-md-4.col-lg-4 - %h3.text-success Usagers - %h4 Profitez de démarches simplifiées et d’échanges continus avec les services traitants. - =link_to 'Démonstration', 'https://tps-dev.apientreprise.fr/users/sign_in/demo', {class: 'btn btn-lg btn-success'} - - .row.word.documentation - .col-md-4.col-lg-4.center - = image_tag image_url('keywords/documentation.png') - .col-md-4.col-lg-4 - %ul.dynamic_ul - %li - =link_to 'Dépliant de présentation', '/data/TPS_Trois_volets.pdf', {target: '_blank'} - %li - =link_to 'Documentation d’utilisation', '/data/TPS_documentations_v1_1.pdf', {target: '_blank'} - -#%li - -# = link_to 'Documentation des APIs (béta)', '/docs', {target: '_blank'} - .col-md-4.col-lg-4.center - = link_to 'Demander un accès administrateur', 'https://tps.apientreprise.fr/users/dossiers/new?procedure_id=31', {class: 'btn btn-lg btn-primary', target: '_blank'} + %br + %h2.text-warning + Reste à faire + #reste_a_faire{style: 'width: 650px; margin-left: auto; margin-right: auto; text-align:left'} + %ul + %li + Terminer d'optimiser nos pages avec la nouvelle interface + %b.text-warning + (8%) + %li + Intégrer la connexion unifiée pour les administrateurs (et permettre le switch entre compte) + %b.text-info + (5%) + %li + Centre de notification : un seul endroit pour suivre l'activité de l'ensemble de vos dossiers (Accompagnateur) + %b.text-purple + (10%) + %li + Fiabilisation accrue de la plateforme : un certain nombre de bug sont encore présents ... + %b.text-danger + (20%) + %li + %b + Prendre vos retours en compte : + = link_to 'feedback@tps.apientreprise.fr', "mailto:feedback@tps.apientreprise.fr" +%h3.center + Disponible sur + = link_to "tps.apientreprise.fr", 'https://tps.apientreprise.fr', target: '_blank' + le + %span.text-success + 3 Janvier 2017 \ No newline at end of file diff --git a/app/views/root/landing_v1.html.haml b/app/views/root/landing_v1.html.haml new file mode 100644 index 000000000..0e2e9e1ba --- /dev/null +++ b/app/views/root/landing_v1.html.haml @@ -0,0 +1,123 @@ +#landing.max-size + #title + %h1.center + TPS + %h2.center + TéléProcédure Simplifiée + + %br + %h3.center + Dématérialisez, réceptionnez et co-instruisez toutes vos démarches depuis un espace unique. + + %br + %br + .center + %button.js-scrollTo.btn.btn-lg.btn-success{cible: '.demo_account'} + Envie d'essayer ? + + +#suite.max-size + .row.word.simplifier + .col-md-6.col-lg-6 + = image_tag image_url('keywords/simplifier.png') + .col-md-6.col-lg-6 + %ul.dynamic_ul + %li + Générateur simplifié de démarches en ligne pour les administrations + %li + Ne demander que les informations strictement nécessaires + %li + Profiter d’une identification simplifiée grâce à + %a{href: 'http://www.modernisation.gouv.fr/ladministration-change-avec-le-numerique/par-son-systeme-dinformation/france-connect-un-acces-universel-aux-administrations-en-ligne', + target: '_blank'} + FranceConnect + + .row.word.echanger + .col-md-6.col-lg-6 + %ul.dynamic_ul + %li + Tchatter avec les services traitant jusqu’à la complétude du dossier + %li + Etre notifié de manière électronique + %li + Accompagner les usagers dans leur démarche + %li + Vérifier les pièces au fur et à mesure + .col-md-6.col-lg-6 + = image_tag image_url('keywords/echanger.png') + + .row.word.profiter + .col-md-6.col-lg-6 + = image_tag image_url('keywords/profiter.png') + .col-md-6.col-lg-6 + %ul.dynamic_ul + %li + Profiter des ressources cartographiques directement mobilisées, si nécessaire + %li + Récupérer des informations officielles collectées directement auprès des administrations + + .row.word.news + .latest_release.col-md-7.col-lg-7 + - if @latest_release.nil? + %p + Erreur dans la récupération des données + -else + %h3.text-info + = "Dernière version (#{@latest_release.tag_name} - #{@latest_release.published_at})" + .body + =@latest_release.body.html_safe + + .center + \- + %br + %a{href: 'https://github.com/sgmap/tps/releases', target: '_blank'} + = 'Voir toutes les versions' + + .col-md-5.col-lg-5 + #video.center + %iframe{:allowfullscreen => "", :frameborder => "0", :height => "270", :src => "//www.dailymotion.com/embed/video/x3lp4cs", :width => "480"} + %br + =link_to 'Toutes les vidéos', '#', {style: 'text-decoration: none', class: 'all_video btn btn-default btn-sm'} + #all_video{style:'display: none'} + %br + %ul + %li + =link_to "Création d'une démarche avec TPS (Téléprocédure Simplifiée)", "http://dai.ly/x3s2o65", {target: '_blank'} + %li + =link_to "Etape 2 avec TPS : saisine de l'administration par un usager avec France Connect", "http://dai.ly/x3s2oj6", {target: '_blank'} + %li + =link_to "Etape 3 avec TPS : l'accompagnement par les services et l'invitation d'autres partenaires publics à co-instruire", "http://dai.ly/x3s2oqp", {target: '_blank'} + %li + =link_to "TPS: dernière étape, la validation du dossier et notification", "http://dai.ly/x3s2p6k", {target: '_blank'} + + .row.word.demo_account.center + .col-md-4.col-lg-4 + %h3.text-primary Acteurs publics + %h4 Créez des démarches en ligne simplifiées et sécurisées. + =link_to 'Démonstration', 'https://tps-dev.apientreprise.fr/administrateurs/sign_in/demo', {class: 'btn btn-lg btn-primary'} + .col-md-4.col-lg-4 + %h3.text-warning Agents et services + %h4 Accompagnez et co-traitez les projets avec les usagers. + =link_to 'Démonstration', 'https://tps-dev.apientreprise.fr/gestionnaires/sign_in/demo', {class: 'btn btn-lg btn-warning'} + + .col-md-4.col-lg-4 + %h3.text-success Usagers + %h4 Profitez de démarches simplifiées et d’échanges continus avec les services traitants. + =link_to 'Démonstration', 'https://tps-dev.apientreprise.fr/users/sign_in/demo', {class: 'btn btn-lg btn-success'} + + .row.word.documentation + .col-md-4.col-lg-4.center + = image_tag image_url('keywords/documentation.png') + .col-md-4.col-lg-4 + %ul.dynamic_ul + %li + =link_to 'Dépliant de présentation', '/data/TPS_Trois_volets.pdf', {target: '_blank'} + %li + =link_to 'Documentation d’utilisation', '/data/TPS_documentations_v1_1.pdf', {target: '_blank'} + -#%li + -# = link_to 'Documentation des APIs (béta)', '/docs', {target: '_blank'} + .col-md-4.col-lg-4.center + = link_to 'Demander un accès administrateur', 'https://tps.apientreprise.fr/users/dossiers/new?procedure_id=31', {class: 'btn btn-lg btn-primary', target: '_blank'} + + + From 6f019f9a0fd80ecdaf21f42e20264fd15ea168ae Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 7 Dec 2016 14:44:05 +0100 Subject: [PATCH 130/182] Time to launch on staging --- app/assets/stylesheets/dossier_show.scss | 9 +++++++-- app/assets/stylesheets/left_pannel.scss | 8 ++++++-- app/assets/stylesheets/search.scss | 2 +- app/views/dossiers/_dossier_show.html.haml | 6 +++--- ...ft_panel_backoffice_dossierscontroller_show.html.haml | 2 +- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 00b200c9a..4cf4039a7 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -108,7 +108,7 @@ } #dossier, #pieces-jointes, #infos, #carto, #private-fields { .body { - padding: 0 20px 0 20px; + padding: 20px 20px 0 20px; color: #000000; .libelle-procedure { font-style: italic; @@ -129,7 +129,7 @@ color: #EEEEEE; } .action { - margin: 20px 0 0 15px; + margin: 50px 0 0 15px; } .action, .btn-action { background-color: #E45B51; @@ -177,5 +177,10 @@ margin-bottom: 40px; } } + #pieces_justificatives { + .piece-row { + margin: 0 0 0 0; + } + } } } diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index ebe53d44e..2b31322e8 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -14,10 +14,14 @@ font-size: 16px; line-height: 18px; .infos { - margin-bottom: 20px; font-size: 25px; text-align: center; - margin-right: 10px; + margin: 20px 10px 30px 0; + .projet-name { + font-size: 25px; + line-height: normal; + padding: 5px; + } } .en-cours { margin-top: 20px; diff --git a/app/assets/stylesheets/search.scss b/app/assets/stylesheets/search.scss index 0d65ab538..969d5b7a6 100644 --- a/app/assets/stylesheets/search.scss +++ b/app/assets/stylesheets/search.scss @@ -1,6 +1,6 @@ #search-block{ margin: 15px 10px 0 0; - height: 50px; + height: 30px; } #search_button { diff --git a/app/views/dossiers/_dossier_show.html.haml b/app/views/dossiers/_dossier_show.html.haml index af470f19a..08ff16b0a 100644 --- a/app/views/dossiers/_dossier_show.html.haml +++ b/app/views/dossiers/_dossier_show.html.haml @@ -95,17 +95,17 @@ %div.body = render partial: '/dossiers/infos_carto' -- if @current_gestionnaire && gestionnaire_signed_in? +- if @current_gestionnaire && gestionnaire_signed_in? && @champs.count > 0 .default_data_block %div.row.show-block#private-fields %div.header %div.col-lg-10.col-md-10.title %div.carret-right %div.carret-down - = "champs privés".upcase + = "champs".upcase %div.col-lg-2.col-md-2.count - private_fields_count = @champs.count - = (private_fields_count == 1) ? "1 champ privé" : "#{private_fields_count} champs privés" + = (private_fields_count == 1) ? "1 champ" : "#{private_fields_count} champs" %div.body = render partial: '/dossiers/infos_private_fields' diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index 8fbc89fea..581bcf951 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -1,6 +1,6 @@ %div#first-block %div.infos - %div #{@facade.dossier.nom_projet} + %div.projet-name #{@facade.dossier.nom_projet.capitalize} %div= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s %div#action-block From 16bdd1666b8dea067cf20cc0fff9ef32c04f3922 Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 7 Dec 2016 15:19:49 +0100 Subject: [PATCH 131/182] Fix display in projet-name --- .../_left_panel_backoffice_dossierscontroller_show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index 581bcf951..e2d3ec23b 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -1,6 +1,6 @@ %div#first-block %div.infos - %div.projet-name #{@facade.dossier.nom_projet.capitalize} + %div.projet-name #{@facade.dossier.nom_projet.capitalize rescue nil} %div= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s %div#action-block From 6f731f700f4331fc4986887357b84e8928e2da5b Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 15:44:28 +0100 Subject: [PATCH 132/182] Fix description view for champs and private champs --- .../dossiers/_infos_private_fields.html.haml | 2 +- app/views/users/description/_champs.html.haml | 7 +- app/views/users/description/_show.html.haml | 2 +- .../champs/_header_private_section.html.haml | 10 ++ .../champs/_header_section.html.haml | 99 +++++++++---------- .../champs/_render_list_champs.html.haml | 54 ++++++++++ 6 files changed, 119 insertions(+), 55 deletions(-) create mode 100644 app/views/users/description/champs/_header_private_section.html.haml create mode 100644 app/views/users/description/champs/_render_list_champs.html.haml diff --git a/app/views/dossiers/_infos_private_fields.html.haml b/app/views/dossiers/_infos_private_fields.html.haml index 087aac2f9..a7f8011fd 100644 --- a/app/views/dossiers/_infos_private_fields.html.haml +++ b/app/views/dossiers/_infos_private_fields.html.haml @@ -5,7 +5,7 @@ Pas de champ privé pour ce dossier - else = form_for @facade.dossier, url: {controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id}, remote: true do - = render partial: '/users/description/champs' + = render partial: '/users/description/champs', locals:{private: true} .row .col-md-4.col-lg-4 .col-md-4.col-lg-4= submit_tag :Enregistrer, {class: 'btn-action'} diff --git a/app/views/users/description/_champs.html.haml b/app/views/users/description/_champs.html.haml index aafe1442e..1febc76c3 100644 --- a/app/views/users/description/_champs.html.haml +++ b/app/views/users/description/_champs.html.haml @@ -1,8 +1,9 @@ -- unless @headers.nil? +- render_partial_url = private ? 'users/description/champs/header_private_section' : 'users/description/champs/header_section' +- unless @headers.empty? - @headers.each do |header| .row %div{class: "type_champ-#{header.type_champ}"} - =render partial: 'users/description/champs/header_section', locals: {libelle: header.libelle, order_place: header.order_place, champs: @champs} + =render partial: render_partial_url, locals: {libelle: header.libelle, order_place: header.order_place, champs: @champs} - else .row - =render partial: 'users/description/champs/header_section', locals: {libelle: 'Dossier', order_place: -1, champs: @champs} + =render partial: render_partial_url, locals: {libelle: 'Dossier', order_place: -1, champs: @champs} diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 40c0d51c0..1e35ca837 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -19,7 +19,7 @@ #liste_champs -unless @champs.nil? - =render partial: 'users/description/champs' + =render partial: 'users/description/champs', locals:{private: false} -if !@procedure.lien_demarche.blank? || @procedure.cerfa_flag || @dossier.types_de_piece_justificative.size > 0 %br diff --git a/app/views/users/description/champs/_header_private_section.html.haml b/app/views/users/description/champs/_header_private_section.html.haml new file mode 100644 index 000000000..1bf8275be --- /dev/null +++ b/app/views/users/description/champs/_header_private_section.html.haml @@ -0,0 +1,10 @@ +.row + .col-lg-12.col-md-12 + .row.title-row + .col-md-4.col-lg-4.split-hr + .col-md-4.col-lg-4.dossier-title= libelle + .col-md-4.col-lg-4.split-hr + .row + .col-lg-4.col-md-4 + .col-lg-8.col-md-8 + =render partial: 'users/description/champs/render_list_champs', locals: {champs: champs, order_place: order_place} diff --git a/app/views/users/description/champs/_header_section.html.haml b/app/views/users/description/champs/_header_section.html.haml index 6c44d36dc..3c7deaf23 100644 --- a/app/views/users/description/champs/_header_section.html.haml +++ b/app/views/users/description/champs/_header_section.html.haml @@ -1,63 +1,62 @@ -.row - .col-lg-12.col-md-12 - .row.title-row - .col-md-4.col-lg-4.split-hr - .col-md-4.col-lg-4.dossier-title= libelle - .col-md-4.col-lg-4.split-hr - .row - .col-lg-4.col-md-4 - .col-lg-8.col-md-8 - -champs.each do |champ| - - if champ.order_place > order_place - - if champ.type_champ == 'header_section' - - break +.default_data_block.default_visible + %div.row.show-block#infos + %div.header + %div.col-lg-12.col-md-12.title + %div.carret-right + %div.carret-down + =libelle + %div.body + -champs.each do |champ| + - if champ.order_place > order_place + - if champ.type_champ == 'header_section' + - break - - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' - %h4 - = champ.libelle - - if champ.mandatory? - = '*' + - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' + %h4 + = champ.libelle + - if champ.mandatory? + = '*' - -if champ.type_champ == 'textarea' - =render partial: 'users/description/champs/textarea', locals: {champ: champ} + -if champ.type_champ == 'textarea' + =render partial: 'users/description/champs/textarea', locals: {champ: champ} - -elsif champ.type_champ == 'checkbox' - = render partial: 'users/description/champs/checkbox', locals: {champ: champ} + -elsif champ.type_champ == 'checkbox' + = render partial: 'users/description/champs/checkbox', locals: {champ: champ} - -elsif champ.type_champ == 'civilite' - =render partial: 'users/description/champs/civilite', locals: {champ: champ} + -elsif champ.type_champ == 'civilite' + =render partial: 'users/description/champs/civilite', locals: {champ: champ} - - elsif champ.type_champ == 'datetime' - =render partial: 'users/description/champs/datetime', locals: {champ: champ} + - elsif champ.type_champ == 'datetime' + =render partial: 'users/description/champs/datetime', locals: {champ: champ} - - elsif champ.type_champ == 'yes_no' - =render partial: 'users/description/champs/yes_no', locals: {champ: champ} + - elsif champ.type_champ == 'yes_no' + =render partial: 'users/description/champs/yes_no', locals: {champ: champ} - - elsif champ.type_champ == 'drop_down_list' - =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} + - elsif champ.type_champ == 'drop_down_list' + =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} - - elsif champ.type_champ == 'pays' - =render partial: 'users/description/champs/pays', locals: {champ: champ} + - elsif champ.type_champ == 'pays' + =render partial: 'users/description/champs/pays', locals: {champ: champ} - - elsif champ.type_champ == 'regions' - =render partial: 'users/description/champs/regions', locals: {champ: champ} + - elsif champ.type_champ == 'regions' + =render partial: 'users/description/champs/regions', locals: {champ: champ} - - elsif champ.type_champ == 'engagement' - =render partial: 'users/description/champs/engagement', locals: {champ: champ} + - elsif champ.type_champ == 'engagement' + =render partial: 'users/description/champs/engagement', locals: {champ: champ} - - elsif champ.type_champ == 'departements' - =render partial: 'users/description/champs/departements', locals: {champ: champ} + - elsif champ.type_champ == 'departements' + =render partial: 'users/description/champs/departements', locals: {champ: champ} - -else - %input.form-control{name:"champs['#{champ.id}']", - placeholder: champ.libelle, - id: "champs_#{champ.id}", - value: champ.value, - type: champ.type_champ, - 'data-provide' => champ.data_provide, - 'data-date-format' => champ.data_date_format} + -else + %input.form-control{name:"champs['#{champ.id}']", + placeholder: champ.libelle, + id: "champs_#{champ.id}", + value: champ.value, + type: champ.type_champ, + 'data-provide' => champ.data_provide, + 'data-date-format' => champ.data_date_format} - - unless champ.description.empty? || champ.type_champ == 'engagement' - .row - .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} - = champ.description + - unless champ.description.empty? || champ.type_champ == 'engagement' + .row + .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} + = champ.description diff --git a/app/views/users/description/champs/_render_list_champs.html.haml b/app/views/users/description/champs/_render_list_champs.html.haml new file mode 100644 index 000000000..3763bf52f --- /dev/null +++ b/app/views/users/description/champs/_render_list_champs.html.haml @@ -0,0 +1,54 @@ +-champs.each do |champ| + - if champ.order_place > order_place + - if champ.type_champ == 'header_section' + - break + + - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' + %h4 + = champ.libelle + - if champ.mandatory? + = '*' + + -if champ.type_champ == 'textarea' + =render partial: 'users/description/champs/textarea', locals: {champ: champ} + + -elsif champ.type_champ == 'checkbox' + = render partial: 'users/description/champs/checkbox', locals: {champ: champ} + + -elsif champ.type_champ == 'civilite' + =render partial: 'users/description/champs/civilite', locals: {champ: champ} + + - elsif champ.type_champ == 'datetime' + =render partial: 'users/description/champs/datetime', locals: {champ: champ} + + - elsif champ.type_champ == 'yes_no' + =render partial: 'users/description/champs/yes_no', locals: {champ: champ} + + - elsif champ.type_champ == 'drop_down_list' + =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} + + - elsif champ.type_champ == 'pays' + =render partial: 'users/description/champs/pays', locals: {champ: champ} + + - elsif champ.type_champ == 'regions' + =render partial: 'users/description/champs/regions', locals: {champ: champ} + + - elsif champ.type_champ == 'engagement' + =render partial: 'users/description/champs/engagement', locals: {champ: champ} + + - elsif champ.type_champ == 'departements' + =render partial: 'users/description/champs/departements', locals: {champ: champ} + + -else + %input.form-control{name:"champs['#{champ.id}']", + placeholder: champ.libelle, + id: "champs_#{champ.id}", + value: champ.value, + type: champ.type_champ, + 'data-provide' => champ.data_provide, + 'data-date-format' => champ.data_date_format} + + - unless champ.description.empty? || champ.type_champ == 'engagement' + .row + .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} + = champ.description \ No newline at end of file From 3153eeaf01350d06197770e7f7707446c39a6a7f Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 15:53:26 +0100 Subject: [PATCH 133/182] Fix bug empty --- app/views/users/description/_champs.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/users/description/_champs.html.haml b/app/views/users/description/_champs.html.haml index 1febc76c3..ed89b3b3c 100644 --- a/app/views/users/description/_champs.html.haml +++ b/app/views/users/description/_champs.html.haml @@ -1,5 +1,5 @@ - render_partial_url = private ? 'users/description/champs/header_private_section' : 'users/description/champs/header_section' -- unless @headers.empty? +- unless @headers.blank? - @headers.each do |header| .row %div{class: "type_champ-#{header.type_champ}"} From 5915a2b7d5f7b8b0dbc35b9d2670187dff82b459 Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 7 Dec 2016 16:27:43 +0100 Subject: [PATCH 134/182] Delete pop menu for sign_out, also count dossiers on user side --- app/assets/javascripts/default_data_block.js | 8 -------- .../_left_panel_users_dossierscontroller_index.html.haml | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 716557896..1ff875ddf 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -10,14 +10,6 @@ function init_default_data_block() { toggle_default_data_bloc(this, 400); }); - $('#sign_out').hover(function () { - $(this).find('#credentials').toggle(); - }); - - $('#sign_out').mouseout(function() { - $(this).find('credentials').toggle(); - }); - $('.new-action').click(function () { var messages_block = $(this).parents().closest('.default_data_block').find('.title') toggle_default_data_bloc(messages_block, 400); diff --git a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml index 74eadad96..bd9a7826c 100644 --- a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml @@ -1,6 +1,6 @@ %div#first-block %div.en-cours - = dossier_count = @dossiers_list_facade.dossiers_to_display.count + = dossier_count = current_user.dossiers.count = ("Dossier".pluralize(dossier_count)).upcase %br = "EN COURS" From e10bd08800007cc1883f7192134faea87d3085df Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 7 Dec 2016 16:59:35 +0100 Subject: [PATCH 135/182] 2nd round about css and some adjustements: message/pj empty validation, margins, link_to div inclusion and more --- app/assets/stylesheets/dossier_show.scss | 1 - app/assets/stylesheets/left_pannel.scss | 5 +++-- app/assets/stylesheets/navbar.scss | 2 +- app/controllers/commentaires_controller.rb | 6 +++++- app/views/dossiers/_dossier_show.html.haml | 4 ++-- app/views/dossiers/_edit_dossier.html.haml | 4 ++-- app/views/dossiers/_infos_dossier.html.haml | 6 +++--- ...nel_backoffice_dossierscontroller_index.html.haml | 4 ++-- .../champs/_header_private_section.html.haml | 12 +++--------- 9 files changed, 21 insertions(+), 23 deletions(-) diff --git a/app/assets/stylesheets/dossier_show.scss b/app/assets/stylesheets/dossier_show.scss index 4cf4039a7..f49b79f21 100644 --- a/app/assets/stylesheets/dossier_show.scss +++ b/app/assets/stylesheets/dossier_show.scss @@ -117,7 +117,6 @@ .depositaire-label { font-weight: bold; text-align: end; - margin-left: -20px; } .depositaire-info { } diff --git a/app/assets/stylesheets/left_pannel.scss b/app/assets/stylesheets/left_pannel.scss index 2b31322e8..a4d363495 100644 --- a/app/assets/stylesheets/left_pannel.scss +++ b/app/assets/stylesheets/left_pannel.scss @@ -23,9 +23,10 @@ padding: 5px; } } - .en-cours { + .dossiers-en-cours, .en-cours { margin-top: 20px; - font-size: 25px; + } + .dossiers-en-cours, .nouveaux-dossiers, .en-cours { line-height: initial; text-align: center; margin-right: 10px; diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index b413526f5..3d8fd8ea5 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -114,7 +114,7 @@ #download-menu { .btn-sm { color: #000000; - font-size: 18px; + font-size: 14px; } } diff --git a/app/controllers/commentaires_controller.rb b/app/controllers/commentaires_controller.rb index 8a1ce41c8..06c7edc19 100644 --- a/app/controllers/commentaires_controller.rb +++ b/app/controllers/commentaires_controller.rb @@ -36,7 +36,11 @@ class CommentairesController < ApplicationController @commentaire.body = params['texte_commentaire'] saved = false - saved = @commentaire.save unless flash.alert + unless @commentaire.body.blank? && @commentaire.piece_justificative.nil? + saved = @commentaire.save unless flash.alert + else + flash.alert = "Veuillez rédiger un message ou ajouter une pièce jointe." + end if is_gestionnaire? unless current_gestionnaire.follow? @commentaire.dossier diff --git a/app/views/dossiers/_dossier_show.html.haml b/app/views/dossiers/_dossier_show.html.haml index 08ff16b0a..ce8334628 100644 --- a/app/views/dossiers/_dossier_show.html.haml +++ b/app/views/dossiers/_dossier_show.html.haml @@ -56,8 +56,8 @@ %div.col-lg-8.col-md-8.title-no-expanse %div.carret-right INFORMATIONS ENTREPRISE / ASSOCIATION - %div.col-lg-4.col-md-4.action - %a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} + %a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} + %div.col-lg-4.col-md-4.action = "Renseigner un SIRET" - unless @facade.entreprise.nil? diff --git a/app/views/dossiers/_edit_dossier.html.haml b/app/views/dossiers/_edit_dossier.html.haml index 5ceca52dd..b834b8dcb 100644 --- a/app/views/dossiers/_edit_dossier.html.haml +++ b/app/views/dossiers/_edit_dossier.html.haml @@ -1,5 +1,5 @@ - unless @facade.dossier.read_only? - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) - %div.col-lg-2.col-md-2.action - %a#maj_infos.action{href: "/users/dossiers/#{@facade.dossier.id}/description"} + %a#maj_infos.action{href: "/users/dossiers/#{@facade.dossier.id}/description"} + %div.col-lg-2.col-md-2.action = "éditer".upcase diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 47365b15c..17c3e0095 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -102,11 +102,11 @@ - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 .row .col-lg-4.col-md-4 - .col-lg-4.col-md-4.action - %a#maj_pj.action{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", :type => "button"} + %a#maj_pj.action{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", :type => "button"} + .col-lg-4.col-md-4.action Modifier les documents %br - = render partial: 'users/recapitulatif/modal_upload_pj' + = render partial: 'users/recapitulatif/modal_upload_pj' .col-lg-4.col-md-4 - if gestionnaire_signed_in? diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index f3c6dbd54..037f35a33 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -1,8 +1,8 @@ %div#first-block - %div + %div.dossiers-en-cours = @facade_data_view.total_dossier DOSSIERS EN COURS - %div + %div.nouveaux-dossiers = @facade_data_view.total_new_dossier NOUVEAUX DOSSIERS diff --git a/app/views/users/description/champs/_header_private_section.html.haml b/app/views/users/description/champs/_header_private_section.html.haml index 1bf8275be..2ce9457a3 100644 --- a/app/views/users/description/champs/_header_private_section.html.haml +++ b/app/views/users/description/champs/_header_private_section.html.haml @@ -1,10 +1,4 @@ .row - .col-lg-12.col-md-12 - .row.title-row - .col-md-4.col-lg-4.split-hr - .col-md-4.col-lg-4.dossier-title= libelle - .col-md-4.col-lg-4.split-hr - .row - .col-lg-4.col-md-4 - .col-lg-8.col-md-8 - =render partial: 'users/description/champs/render_list_champs', locals: {champs: champs, order_place: order_place} + .col-lg-2.col-md-2 + .col-lg-8.col-md-8 + = render partial: 'users/description/champs/render_list_champs', locals: {champs: champs, order_place: order_place} From 715f0869571aaa2e33e7626a6e04d344bdbdc1bd Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 17:03:36 +0100 Subject: [PATCH 136/182] Can connect admin with user session path --- app/controllers/users/sessions_controller.rb | 8 ++- .../users/sessions_controller_spec.rb | 55 ++++++++++++++++--- spec/spec_helper.rb | 1 + 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index a8ff410f1..20d79afdc 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -24,6 +24,7 @@ class Users::SessionsController < Sessions::SessionsController def create try_to_authenticate(User) try_to_authenticate(Gestionnaire) if Features.unified_login + try_to_authenticate(Administrateur) if Features.unified_login if user_signed_in? 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) elsif gestionnaire_signed_in? redirect_to backoffice_path + elsif administrateur_signed_in? + redirect_to admin_path else new render :new, status: 401 @@ -41,9 +44,8 @@ class Users::SessionsController < Sessions::SessionsController # DELETE /resource/sign_out def destroy - if gestionnaire_signed_in? - sign_out :gestionnaire - end + sign_out :gestionnaire if gestionnaire_signed_in? + sign_out :administrateur if administrateur_signed_in? if user_signed_in? connected_with_france_connect = current_user.loged_in_with_france_connect diff --git a/spec/controllers/users/sessions_controller_spec.rb b/spec/controllers/users/sessions_controller_spec.rb index 2a6c50a1d..b6bfed1d6 100644 --- a/spec/controllers/users/sessions_controller_spec.rb +++ b/spec/controllers/users/sessions_controller_spec.rb @@ -35,8 +35,13 @@ describe Users::SessionsController, type: :controller do end context "unified login" do - let(:user) { create(:user, email: 'unique@plop.com', password: 'password') } - let(:gestionnaire) { create(:gestionnaire, email: 'unique@plop.com', password: 'password') } + let(:email) { 'unique@plop.com' } + let(:password) { 'password' } + + let(:user) { create(:user, email: email, password: password) } + let(:gestionnaire) { create(:gestionnaire, email: email, password: password) } + let(:administrateur) { create(:administrateur, email: email, password: password) } + before { allow(Features).to receive(:unified_login).and_return(true) } it 'signs user in' do @@ -44,6 +49,7 @@ describe Users::SessionsController, type: :controller do expect(@response.redirect?).to be(true) expect(subject.current_user).to eq(user) expect(subject.current_gestionnaire).to be(nil) + expect(subject.current_administrateur).to be(nil) expect(user.reload.loged_in_with_france_connect).to be(nil) end @@ -52,21 +58,40 @@ describe Users::SessionsController, type: :controller do expect(@response.redirect?).to be(true) expect(subject.current_user).to be(nil) expect(subject.current_gestionnaire).to eq(gestionnaire) + expect(subject.current_administrateur).to be(nil) end - it 'signs user + gestionnaire in' do - post :create, params: {user: {email: user.email, password: gestionnaire.password}} + it 'signs administrateur in' do + post :create, params: {user: {email: administrateur.email, password: administrateur.password}} expect(@response.redirect?).to be(true) - expect(subject.current_user).to eq(user) - expect(subject.current_gestionnaire).to eq(gestionnaire) - expect(user.reload.loged_in_with_france_connect).to be(nil) + expect(subject.current_user).to be(nil) + expect(subject.current_gestionnaire).to be(nil) + expect(subject.current_administrateur).to eq(administrateur) end + context { + before do + user + gestionnaire + end + + it 'signs user + gestionnaire + administrateur in' do + + post :create, params: {user: {email: administrateur.email, password: administrateur.password}} + expect(@response.redirect?).to be(true) + expect(subject.current_user).to eq(user) + expect(subject.current_gestionnaire).to eq(gestionnaire) + expect(subject.current_administrateur).to eq(administrateur) + expect(user.reload.loged_in_with_france_connect).to be(nil) + end + } + it 'fails to sign in with bad credentials' do post :create, params: {user: {email: user.email, password: 'wrong_password'}} expect(@response.unauthorized?).to be(true) expect(subject.current_user).to be(nil) expect(subject.current_gestionnaire).to be(nil) + expect(subject.current_administrateur).to be(nil) end end end @@ -136,6 +161,22 @@ describe Users::SessionsController, type: :controller do delete :destroy expect(@response.headers["Location"]).to eq(FRANCE_CONNECT.particulier_logout_endpoint) end + + context "when associated administrateur" do + let(:administrateur) { create(:administrateur, email: 'unique@plop.com', password: 'password') } + + it 'signs user + gestionnaire + administrateur out' do + sign_in user + sign_in gestionnaire + sign_in administrateur + delete :destroy + expect(@response.redirect?).to be(true) + expect(subject.current_user).to be(nil) + expect(subject.current_gestionnaire).to be(nil) + expect(subject.current_administrateur).to be(nil) + end + end + end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 51f1894cf..d80386c74 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -38,6 +38,7 @@ Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, js_errors: true, port: 44_678 + ENV['TEST_ENV_NUMBER'].to_i, phantomjs_options: ['--proxy-type=none'], timeout: 180) end +# ActiveSupport::Deprecation.silenced = true Capybara.default_max_wait_time = 1 From 7cb2e80a3d21a33a87ae5dfaf600ffd3e03e49dc Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 17:24:01 +0100 Subject: [PATCH 137/182] Sync credentials between user, gestionnaire and administrateur account --- app/models/administrateur.rb | 8 +++++ app/models/gestionnaire.rb | 7 +---- app/models/user.rb | 7 +---- app/services/sync_credentials_service.rb | 38 ++++++++++++++++++++++++ spec/models/administrateur_spec.rb | 26 ++++++++++++++++ spec/models/gestionnaire_spec.rb | 11 +++++++ spec/models/user_spec.rb | 11 +++++++ 7 files changed, 96 insertions(+), 12 deletions(-) create mode 100644 app/services/sync_credentials_service.rb diff --git a/app/models/administrateur.rb b/app/models/administrateur.rb index 5cb4723bf..dfe619b29 100644 --- a/app/models/administrateur.rb +++ b/app/models/administrateur.rb @@ -6,6 +6,7 @@ class Administrateur < ActiveRecord::Base has_many :procedures before_save :ensure_api_token + after_update :sync_credentials, if: -> { Features.unified_login } def ensure_api_token if api_token.nil? @@ -25,4 +26,11 @@ class Administrateur < ActiveRecord::Base break token unless Administrateur.find_by(api_token: token) 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 diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 9257079bc..2562f3342 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -88,12 +88,7 @@ class Gestionnaire < ActiveRecord::Base def sync_credentials if email_changed? || encrypted_password_changed? - user = User.find_by(email: email_was) - if user - return user.update_columns( - email: email, - encrypted_password: encrypted_password) - end + return SyncCredentialsService.new(Gestionnaire, email_was, email, encrypted_password).change_credentials! end true end diff --git a/app/models/user.rb b/app/models/user.rb index 23794964c..6972d6986 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -39,12 +39,7 @@ class User < ActiveRecord::Base def sync_credentials if email_changed? || encrypted_password_changed? - gestionnaire = Gestionnaire.find_by(email: email_was) - if gestionnaire - return gestionnaire.update_columns( - email: email, - encrypted_password: encrypted_password) - end + return SyncCredentialsService.new(User, email_was, email, encrypted_password).change_credentials! end true end diff --git a/app/services/sync_credentials_service.rb b/app/services/sync_credentials_service.rb new file mode 100644 index 000000000..690323759 --- /dev/null +++ b/app/services/sync_credentials_service.rb @@ -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 \ No newline at end of file diff --git a/spec/models/administrateur_spec.rb b/spec/models/administrateur_spec.rb index d41a54b36..cdeb6b27f 100644 --- a/spec/models/administrateur_spec.rb +++ b/spec/models/administrateur_spec.rb @@ -42,4 +42,30 @@ describe Administrateur, type: :model do expect(admin_1.api_token).to eq(new_token) end end + + context 'unified login' do + before { allow(Features).to receive(:unified_login).and_return(true) } + + it 'syncs credentials to associated user' do + administrateur = create(:administrateur) + user = create(:user, email: administrateur.email) + + administrateur.update_attributes(email: 'whoami@plop.com', password: 'super secret') + + user.reload + expect(user.email).to eq('whoami@plop.com') + expect(user.valid_password?('super secret')).to be(true) + end + + it 'syncs credentials to associated administrateur' do + administrateur = create(:administrateur) + gestionnaire = create(:gestionnaire, email: administrateur.email) + + administrateur.update_attributes(email: 'whoami@plop.com', password: 'super secret') + + gestionnaire.reload + expect(gestionnaire.email).to eq('whoami@plop.com') + expect(gestionnaire.valid_password?('super secret')).to be(true) + end + end end diff --git a/spec/models/gestionnaire_spec.rb b/spec/models/gestionnaire_spec.rb index 30c6722d0..6ffcd382e 100644 --- a/spec/models/gestionnaire_spec.rb +++ b/spec/models/gestionnaire_spec.rb @@ -198,5 +198,16 @@ describe Gestionnaire, type: :model do expect(user.email).to eq('whoami@plop.com') expect(user.valid_password?('super secret')).to be(true) end + + it 'syncs credentials to associated administrateur' do + gestionnaire = create(:gestionnaire) + admin = create(:administrateur, email: gestionnaire.email) + + gestionnaire.update_attributes(email: 'whoami@plop.com', password: 'super secret') + + admin.reload + expect(admin.email).to eq('whoami@plop.com') + expect(admin.valid_password?('super secret')).to be(true) + end end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index a5cf4dccc..b2d3f2227 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -86,5 +86,16 @@ describe User, type: :model do expect(gestionnaire.email).to eq('whoami@plop.com') expect(gestionnaire.valid_password?('super secret')).to be(true) end + + it 'syncs credentials to associated administrateur' do + user = create(:user) + admin = create(:administrateur, email: user.email) + + user.update_attributes(email: 'whoami@plop.com', password: 'super secret') + + admin.reload + expect(admin.email).to eq('whoami@plop.com') + expect(admin.valid_password?('super secret')).to be(true) + end end end From 1c2b2010d152e576585af6ffa917080c575af9ae Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 17:35:45 +0100 Subject: [PATCH 138/182] Synchronised password when user or gestionnaire change this --- .../gestionnaires/passwords_controller.rb | 8 ++++++++ app/controllers/users/passwords_controller.rb | 8 ++++++++ .../gestionnaires/passwords_controller_spec.rb | 12 ++++++++++++ spec/controllers/users/passwords_controller_spec.rb | 12 ++++++++++++ 4 files changed, 40 insertions(+) diff --git a/app/controllers/gestionnaires/passwords_controller.rb b/app/controllers/gestionnaires/passwords_controller.rb index 39e2d72ee..87373d162 100644 --- a/app/controllers/gestionnaires/passwords_controller.rb +++ b/app/controllers/gestionnaires/passwords_controller.rb @@ -1,5 +1,6 @@ class Gestionnaires::PasswordsController < Devise::PasswordsController after_action :try_to_authenticate_user, only: %i(update) + after_action :try_to_authenticate_administrateur, only: %i(update) # GET /resource/password/new # def new @@ -38,4 +39,11 @@ class Gestionnaires::PasswordsController < Devise::PasswordsController sign_in user if user 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 diff --git a/app/controllers/users/passwords_controller.rb b/app/controllers/users/passwords_controller.rb index c85d0cb70..0c199841d 100644 --- a/app/controllers/users/passwords_controller.rb +++ b/app/controllers/users/passwords_controller.rb @@ -1,5 +1,6 @@ class Users::PasswordsController < Devise::PasswordsController after_action :try_to_authenticate_gestionnaire, only: %i(update) + after_action :try_to_authenticate_administrateur, only: %i(update) # GET /resource/password/new # def new @@ -38,4 +39,11 @@ class Users::PasswordsController < Devise::PasswordsController sign_in gestionnaire if gestionnaire 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 diff --git a/spec/controllers/gestionnaires/passwords_controller_spec.rb b/spec/controllers/gestionnaires/passwords_controller_spec.rb index 5cdec1a09..ca3dec599 100644 --- a/spec/controllers/gestionnaires/passwords_controller_spec.rb +++ b/spec/controllers/gestionnaires/passwords_controller_spec.rb @@ -9,11 +9,13 @@ describe Gestionnaires::PasswordsController, type: :controller do context "unified login" do let(:gestionnaire) { create(:gestionnaire, email: 'unique@plop.com', password: 'password') } let(:user) { create(:user, email: 'unique@plop.com', password: 'password') } + let(:administrateur) { create(:administrateur, email: 'unique@plop.com', password: 'password') } before do allow(Features).to receive(:unified_login).and_return(true) @token = gestionnaire.send(:set_reset_password_token) user # make sure it's created + administrateur # make sure it's created end it "also signs user in" do @@ -25,6 +27,16 @@ describe Gestionnaires::PasswordsController, type: :controller do expect(subject.current_gestionnaire).to eq(gestionnaire) expect(subject.current_user).to eq(user) end + + it "also signs administrateur in" do + put :update, params: {gestionnaire: { + reset_password_token: @token, + password: "supersecret", + password_confirmation: "supersecret", + }} + expect(subject.current_administrateur).to eq(administrateur) + expect(subject.current_user).to eq(user) + end end end end diff --git a/spec/controllers/users/passwords_controller_spec.rb b/spec/controllers/users/passwords_controller_spec.rb index 0cff00e8b..68bb82196 100644 --- a/spec/controllers/users/passwords_controller_spec.rb +++ b/spec/controllers/users/passwords_controller_spec.rb @@ -9,11 +9,13 @@ describe Users::PasswordsController, type: :controller do context "unified login" do let(:user) { create(:user, email: 'unique@plop.com', password: 'password') } let(:gestionnaire) { create(:gestionnaire, email: 'unique@plop.com', password: 'password') } + let(:administrateur) { create(:administrateur, email: 'unique@plop.com', password: 'password') } before do allow(Features).to receive(:unified_login).and_return(true) @token = user.send(:set_reset_password_token) gestionnaire # make sure it's created + administrateur # make sure it's created end it "also signs gestionnaire in" do @@ -25,6 +27,16 @@ describe Users::PasswordsController, type: :controller do expect(subject.current_user).to eq(user) expect(subject.current_gestionnaire).to eq(gestionnaire) end + + it "also signs administrateur in" do + put :update, params: {user: { + reset_password_token: @token, + password: "supersecret", + password_confirmation: "supersecret", + }} + expect(subject.current_user).to eq(user) + expect(subject.current_administrateur).to eq(administrateur) + end end end end From 72ebacf3cc7820233ed64afa7945228dbdd65fa5 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 17:38:19 +0100 Subject: [PATCH 139/182] Remove admin connection link on user connection page --- app/views/users/sessions/new.html.haml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/views/users/sessions/new.html.haml b/app/views/users/sessions/new.html.haml index d85ff3ab1..a9c187ac7 100644 --- a/app/views/users/sessions/new.html.haml +++ b/app/views/users/sessions/new.html.haml @@ -33,11 +33,6 @@ = f.submit "Se connecter", class:'btn btn-primary' %br = render "users/shared/links" - %div{style: "margin-top: 5px; margin-bottom: 5px;"} - \- - Vous êtes un administrateur de procédure ? - %br - = link_to "Cliquez ici.", '/administrateurs/sign_in' From e228f2068462c09ef4272efd8c2554c8108453ce Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 7 Dec 2016 17:55:34 +0100 Subject: [PATCH 140/182] Adding white back to some views --- app/assets/stylesheets/users.scss | 19 +- .../admin/accompagnateurs/show.html.haml | 49 ++-- app/views/admin/mails/index.html.haml | 49 ++-- .../pieces_justificatives/show.html.haml | 7 +- .../admin/previsualisations/show.html.haml | 7 +- app/views/admin/procedures/_head.html.haml | 2 +- app/views/admin/procedures/edit.html.haml | 15 +- app/views/admin/procedures/new.html.haml | 16 +- app/views/admin/procedures/show.html.haml | 227 +++++++++--------- app/views/admin/types_de_champ/show.html.haml | 7 +- .../etapes/etape_2/_individual.html.haml | 6 +- app/views/layouts/_main_container.html.haml | 2 +- app/views/users/carte/show.html.haml | 88 +++---- app/views/users/description/_show.html.haml | 2 +- 14 files changed, 258 insertions(+), 238 deletions(-) diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss index 15032d127..8b734bee7 100644 --- a/app/assets/stylesheets/users.scss +++ b/app/assets/stylesheets/users.scss @@ -15,9 +15,26 @@ } #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); - margin: 20px; padding: 20px; .action { background-color: #E45B51; diff --git a/app/views/admin/accompagnateurs/show.html.haml b/app/views/admin/accompagnateurs/show.html.haml index e12a5e379..e87fe13a8 100644 --- a/app/views/admin/accompagnateurs/show.html.haml +++ b/app/views/admin/accompagnateurs/show.html.haml @@ -1,28 +1,25 @@ -=render partial: 'admin/procedures/head', locals: {active: 'Accompagnateurs'} - -#accompagnateur_form - .row - .col-md-6.col-lg-6 - %h3.text-info Disponibles - = smart_listing_render :accompagnateurs_not_assign - - %br - %h3 - =t('dynamics.admin.procedure.onglet_accompagnateurs.add.title') - #procedure_new.section.section-label - = form_for @gestionnaire, url: {controller: 'admin/gestionnaires', action: :create} do |f| - .row - .col-md-5.col-lg-5 - = hidden_field_tag :procedure_id, params[:procedure_id] - =render partial: 'admin/gestionnaires/informations', locals: {f: f} - .col-md-2.col-lg-2 - %br - %br - =f.submit 'Valider', class: 'btn btn-info', style: 'float:left' - - .col-md-6.col-lg-6 - %h3.text-success Affectés - - = smart_listing_render :accompagnateurs_assign +.row.white-back + = render partial: 'admin/procedures/head', locals: {active: 'Accompagnateurs'} + #accompagnateur_form + .row + .col-md-6.col-lg-6 + %h3.text-info Disponibles + = smart_listing_render :accompagnateurs_not_assign + %br + %h3 + = t('dynamics.admin.procedure.onglet_accompagnateurs.add.title') + #procedure_new.section.section-label + = form_for @gestionnaire, url: {controller: 'admin/gestionnaires', action: :create} do |f| + .row + .col-md-5.col-lg-5 + = hidden_field_tag :procedure_id, params[:procedure_id] + =render partial: 'admin/gestionnaires/informations', locals: {f: f} + .col-md-2.col-lg-2 + %br + %br + = f.submit 'Valider', class: 'btn btn-info', style: 'float:left' + .col-md-6.col-lg-6 + %h3.text-success Affectés + = smart_listing_render :accompagnateurs_assign diff --git a/app/views/admin/mails/index.html.haml b/app/views/admin/mails/index.html.haml index a910f76fe..0c854f8a8 100644 --- a/app/views/admin/mails/index.html.haml +++ b/app/views/admin/mails/index.html.haml @@ -1,29 +1,30 @@ -=render partial: 'admin/procedures/head', locals: {active: 'E-mails'} +.row.white-back + = render partial: 'admin/procedures/head', locals: {active: 'E-mails'} -%h3 - E-mail d'accusé de réception + %h3 + E-mail d'accusé de réception -- unless @procedure.mail_received.blank? - = form_for @procedure.mail_received, url: {controller: 'admin/mails', action: 'update', id: @procedure.mail_received.id} do |f| - =f.text_field :object, {class:'form-control', style:'width: 40%'} - %br - =f.text_area :body, {class: 'form-control wysihtml5'} - %br - =f.submit 'Mettre à jour', {class:'btn btn-success', style:'float: right'} + - unless @procedure.mail_received.blank? + = form_for @procedure.mail_received, url: {controller: 'admin/mails', action: 'update', id: @procedure.mail_received.id} do |f| + =f.text_field :object, {class:'form-control', style:'width: 40%'} + %br + =f.text_area :body, {class: 'form-control wysihtml5'} + %br + =f.submit 'Mettre à jour', {class:'btn btn-success', style:'float: right'} -%table.table{style:'width: 50%'} - %tr - %th - Balise - %th - Description - - MailTemplate.tags.each do |balise| + %table.table{style:'width: 50%'} %tr - %td.center - %b.text-success - \-- - = balise.first - \-- - %td - =balise.second[:description] + %th + Balise + %th + Description + - MailTemplate.tags.each do |balise| + %tr + %td.center + %b.text-success + \-- + = balise.first + \-- + %td + =balise.second[:description] diff --git a/app/views/admin/pieces_justificatives/show.html.haml b/app/views/admin/pieces_justificatives/show.html.haml index 5ca55f972..b823a8ad9 100644 --- a/app/views/admin/pieces_justificatives/show.html.haml +++ b/app/views/admin/pieces_justificatives/show.html.haml @@ -1,4 +1,5 @@ -=render partial: 'admin/procedures/head', locals: {active: 'Pieces'} +.row.white-back + = render partial: 'admin/procedures/head', locals: {active: 'Pieces'} -#piece_justificative_form - = render 'form' \ No newline at end of file + #piece_justificative_form + = render 'form' diff --git a/app/views/admin/previsualisations/show.html.haml b/app/views/admin/previsualisations/show.html.haml index 01c815d6b..ba52f6f82 100644 --- a/app/views/admin/previsualisations/show.html.haml +++ b/app/views/admin/previsualisations/show.html.haml @@ -1,4 +1,5 @@ -=render partial: 'admin/procedures/head', locals: {active: 'Prévisualisation'} +.row.white-back + = render partial: 'admin/procedures/head', locals: {active: 'Prévisualisation'} -#previsualisation - =render 'users/description/show' \ No newline at end of file + #previsualisation + = render 'users/description/show' diff --git a/app/views/admin/procedures/_head.html.haml b/app/views/admin/procedures/_head.html.haml index f3ca2c1b7..87200a87e 100644 --- a/app/views/admin/procedures/_head.html.haml +++ b/app/views/admin/procedures/_head.html.haml @@ -5,4 +5,4 @@ %br %ul.nav.nav-tabs - = render partial: 'admin/procedures/navbar', locals: {active: active} \ No newline at end of file + = render partial: 'admin/procedures/navbar', locals: {active: active} diff --git a/app/views/admin/procedures/edit.html.haml b/app/views/admin/procedures/edit.html.haml index afbfaf50f..b405533db 100644 --- a/app/views/admin/procedures/edit.html.haml +++ b/app/views/admin/procedures/edit.html.haml @@ -1,8 +1,9 @@ -= render partial: 'head', locals: {active: 'Description'} +.row.white-back + = render partial: 'head', locals: {active: 'Description'} -#procedure_new.section.section-label - = form_for @procedure, url: url_for({controller: 'admin/procedures', action: :update, id: @procedure.id}), multipart: true do |f| - = render partial: 'informations', locals: {f: f} - = f.submit 'Editer', class: 'btn btn-success', style: 'float:right' -%br -%br + #procedure_new.section.section-label + = form_for @procedure, url: url_for({controller: 'admin/procedures', action: :update, id: @procedure.id}), multipart: true do |f| + = render partial: 'informations', locals: {f: f} + = f.submit 'Editer', class: 'btn btn-success', style: 'float:right' + %br + %br diff --git a/app/views/admin/procedures/new.html.haml b/app/views/admin/procedures/new.html.haml index 391adde06..b798c980e 100644 --- a/app/views/admin/procedures/new.html.haml +++ b/app/views/admin/procedures/new.html.haml @@ -1,10 +1,8 @@ -%h2 - =t('dynamics.admin.dossiers.tableau_de_bord.nouvelle_procedure') +.row.white-back + %h2 + =t('dynamics.admin.dossiers.tableau_de_bord.nouvelle_procedure') -#procedure_new.section.section-label - = form_for @procedure, url: {controller: 'admin/procedures', action: :create}, multipart: true do |f| - =render partial: 'informations', locals: {f: f} - =f.submit 'Valider', class: 'btn btn-info', style: 'float:right' - %br - %br - %br \ No newline at end of file + #procedure_new.section.section-label + = form_for @procedure, url: {controller: 'admin/procedures', action: :create}, multipart: true do |f| + =render partial: 'informations', locals: {f: f} + =f.submit 'Valider', class: 'btn btn-info', style: 'float:right' diff --git a/app/views/admin/procedures/show.html.haml b/app/views/admin/procedures/show.html.haml index 78e065a6d..664cea867 100644 --- a/app/views/admin/procedures/show.html.haml +++ b/app/views/admin/procedures/show.html.haml @@ -1,126 +1,127 @@ -#procedure_show - =render partial: 'head', locals: {active: 'Informations'} +.row.white-back + #procedure_show + = render partial: 'head', locals: {active: 'Informations'} - -unless @facade.procedure.published? - - if @facade.procedure.gestionnaires.size == 0 - %a.action_button.btn.btn-success{style:'float: right; margin-top: 10px', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.'} - %i.fa.fa-eraser - Publier - -else - %a#publish.btn.btn-success{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'} - %i.fa.fa-eraser - Publier - - =render partial: '/admin/procedures/modal_publish' - - %a#transfer.btn.btn-small.btn-default{"data-target" => "#transferModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px; margin-right: 10px'} - %i.fa.fa-exchange - Transférer - - =render partial: '/admin/procedures/modal_transfer' - - -if @facade.procedure.archived? - %a#reenable.btn.btn-small.btn-default.text-info{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'} - %i.fa.fa-eraser - Réactiver - - =render partial: '/admin/procedures/modal_publish' - - -elsif @facade.procedure.published? - = form_tag admin_procedure_archive_path(procedure_id: @facade.procedure.id, archive: !@facade.procedure.archived?), method: :put, style:'float: right; margin-top: 10px' do - %button#archive.btn.btn-small.btn-default.text-info{type: :button} - %i.fa.fa-eraser - = 'Archiver' - #confirm - %button#valid.btn.btn-small.btn-success{type: :submit} - %i.fa.fa-check - Valider - %button#cancel.btn.btn-small.btn-danger{type: :button} - %i.fa.fa-remove - Annuler - - - if @facade.procedure.locked? - #procedure_locked.center - %h5 - .label.label-info La procédure ne peut plus être modifiée car elle a été publiée - - %div - %h3 Lien procédure - %div{style:'margin-left:3%'} - -if @facade.procedure.archived? - %b - Cette procédure a été archivée et n'est plus accessible par le public. - -elsif @facade.procedure.published? - = @facade.procedure.lien + -unless @facade.procedure.published? + - if @facade.procedure.gestionnaires.size == 0 + %a.action_button.btn.btn-success{style:'float: right; margin-top: 10px', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.'} + %i.fa.fa-eraser + Publier -else - %b - Cette procédure n'a pas encore été publiée et n'est donc pas accessible par le public. + %a#publish.btn.btn-success{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'} + %i.fa.fa-eraser + Publier - %br - %h3 Détails + =render partial: '/admin/procedures/modal_publish' - .row{style:'margin-right:3%; margin-left:3%;'} - .description.col-md-4.col-lg-4 - %h4.text-info - = @facade.procedure.libelle + %a#transfer.btn.btn-small.btn-default{"data-target" => "#transferModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px; margin-right: 10px'} + %i.fa.fa-exchange + Transférer - = h @facade.procedure.description.html_safe - .champs.col-md-4.col-lg-4 - %h4.text-info - Champs - .badge.progress-bar-info - = @facade.procedure.types_de_champ.size - - @facade.procedure.types_de_champ.order(:order_place).each do |champ| - = champ.libelle - %br + =render partial: '/admin/procedures/modal_transfer' - .pieces_justificatives.col-md-4.col-lg-4 - %h4.text-info - Pièces justificatives - .badge.progress-bar-info - = @facade.procedure.types_de_piece_justificative.size - - @facade.procedure.types_de_piece_justificative.each do |piece_justificative| - = piece_justificative.libelle - %br - %br - %h3 - =t('dynamics.admin.procedure.stats.title') + -if @facade.procedure.archived? + %a#reenable.btn.btn-small.btn-default.text-info{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'} + %i.fa.fa-eraser + Réactiver - .row - .col-md-6.col-lg-6{style:'margin-left:3%'} - %h4 Total - %div - = @facade.dossiers_total + =render partial: '/admin/procedures/modal_publish' - %h4.text-danger Attente Accompagnateur - %div - = @facade.dossiers_waiting_gestionnaire_total + -elsif @facade.procedure.published? + = form_tag admin_procedure_archive_path(procedure_id: @facade.procedure.id, archive: !@facade.procedure.archived?), method: :put, style:'float: right; margin-top: 10px' do + %button#archive.btn.btn-small.btn-default.text-info{type: :button} + %i.fa.fa-eraser + = 'Archiver' + #confirm + %button#valid.btn.btn-small.btn-success{type: :submit} + %i.fa.fa-check + Valider + %button#cancel.btn.btn-small.btn-danger{type: :button} + %i.fa.fa-remove + Annuler - %h4.text-info Attente Utilisateur - %div - = @facade.dossiers_waiting_user_total + - if @facade.procedure.locked? + #procedure_locked.center + %h5 + .label.label-info La procédure ne peut plus être modifiée car elle a été publiée - %h4.text-success Terminé - %div - = @facade.dossiers_termine_total + %div + %h3 Lien procédure + %div{style:'margin-left:3%'} + -if @facade.procedure.archived? + %b + Cette procédure a été archivée et n'est plus accessible par le public. + -elsif @facade.procedure.published? + = @facade.procedure.lien + -else + %b + Cette procédure n'a pas encore été publiée et n'est donc pas accessible par le public. - %h4 Archivé + %br + %h3 Détails - - unless @facade.dossiers_archived_total == 0 - %ul - - @facade.dossiers_archived_by_state_total.each do |dossier| - %li - = dossier.display_state - \: - = dossier.total - - else - %p - 0 + .row{style:'margin-right:3%; margin-left:3%;'} + .description.col-md-4.col-lg-4 + %h4.text-info + = @facade.procedure.libelle - .col-md-5.col-lg-5 - %h4 Non archivés - = javascript_include_tag "https://code.highcharts.com/highcharts.js", "chartkick" - - if @facade.dossiers_for_pie_highchart.blank? - Aucune statistique pour le moment - -else - =pie_chart @facade.dossiers_for_pie_highchart \ No newline at end of file + = h @facade.procedure.description.html_safe + .champs.col-md-4.col-lg-4 + %h4.text-info + Champs + .badge.progress-bar-info + = @facade.procedure.types_de_champ.size + - @facade.procedure.types_de_champ.order(:order_place).each do |champ| + = champ.libelle + %br + + .pieces_justificatives.col-md-4.col-lg-4 + %h4.text-info + Pièces justificatives + .badge.progress-bar-info + = @facade.procedure.types_de_piece_justificative.size + - @facade.procedure.types_de_piece_justificative.each do |piece_justificative| + = piece_justificative.libelle + %br + %br + %h3 + =t('dynamics.admin.procedure.stats.title') + + .row + .col-md-6.col-lg-6{style:'margin-left:3%'} + %h4 Total + %div + = @facade.dossiers_total + + %h4.text-danger Attente Accompagnateur + %div + = @facade.dossiers_waiting_gestionnaire_total + + %h4.text-info Attente Utilisateur + %div + = @facade.dossiers_waiting_user_total + + %h4.text-success Terminé + %div + = @facade.dossiers_termine_total + + %h4 Archivé + + - unless @facade.dossiers_archived_total == 0 + %ul + - @facade.dossiers_archived_by_state_total.each do |dossier| + %li + = dossier.display_state + \: + = dossier.total + - else + %p + 0 + + .col-md-5.col-lg-5 + %h4 Non archivés + = javascript_include_tag "https://code.highcharts.com/highcharts.js", "chartkick" + - if @facade.dossiers_for_pie_highchart.blank? + Aucune statistique pour le moment + -else + =pie_chart @facade.dossiers_for_pie_highchart diff --git a/app/views/admin/types_de_champ/show.html.haml b/app/views/admin/types_de_champ/show.html.haml index bed676c74..9518be72e 100644 --- a/app/views/admin/types_de_champ/show.html.haml +++ b/app/views/admin/types_de_champ/show.html.haml @@ -1,4 +1,5 @@ -=render partial: 'admin/procedures/head', locals: {active: @types_de_champ_facade.active} +.row.white-back + = render partial: 'admin/procedures/head', locals: {active: @types_de_champ_facade.active} -#liste_champ - = render partial: 'admin/types_de_champ/form' \ No newline at end of file + #liste_champ + = render partial: 'admin/types_de_champ/form' diff --git a/app/views/dossiers/etapes/etape_2/_individual.html.haml b/app/views/dossiers/etapes/etape_2/_individual.html.haml index c49270e4e..13b36171f 100644 --- a/app/views/dossiers/etapes/etape_2/_individual.html.haml +++ b/app/views/dossiers/etapes/etape_2/_individual.html.haml @@ -20,17 +20,17 @@ .form-group %label %h4 - Nom + Nom * = ff.text_field :nom, {class: 'form-control'} .form-group %label %h4 - Prénom + Prénom * = ff.text_field :prenom, {class: 'form-control'} .form-group %label %h4 - Date de naissance + Date de naissance * = ff.text_field :birthdate, {class: 'form-control', 'data-provide' => 'datepicker', 'data-date-format' => 'dd/mm/yyyy'} %p diff --git a/app/views/layouts/_main_container.html.haml b/app/views/layouts/_main_container.html.haml index 423e27e00..362a66024 100644 --- a/app/views/layouts/_main_container.html.haml +++ b/app/views/layouts/_main_container.html.haml @@ -3,4 +3,4 @@ = render partial: 'layouts/flash_messages' %div.row = yield - %div.row \ No newline at end of file + %div.row diff --git a/app/views/users/carte/show.html.haml b/app/views/users/carte/show.html.haml index 877279e05..0e75ebe20 100644 --- a/app/views/users/carte/show.html.haml +++ b/app/views/users/carte/show.html.haml @@ -1,46 +1,48 @@ -%h2 - ='Localisation' -%h4.text-primary - Positionnez-vous et dessinez sur la carte la zone d'action de votre demande. -%br - -.content{style:'margin-bottom:60px'} - %button#new.btn.btn-md.btn-success{type:'button'} - %i.fa.fa-pencil - Ajouter une zone - -#\- - -#%button#edit.btn.btn-sm.btn-info{type:'button'} Editer - -#\- - -#%button#delete.btn.btn-sm.btn-danger{type:'button'} Supprimer - - %span#search_by_address{style: 'margin-left: 20px'} - %input.form-control{type: :address, placeholder: 'Rechercher une adresse'} - %br - %br - #carte_page.row - #map{class: @dossier.procedure.module_api_carto.classes } - - - if @dossier.procedure.module_api_carto.quartiers_prioritaires - #qp.list - %h3.text-info Quartiers prioritaites - %ul - - - if @dossier.procedure.module_api_carto.cadastre - #cadastre.list - %h3.text-warning Cadastres - %ul - - = form_tag(url_for({controller: :carte, action: :save, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do +.row#carto_page + .col-lg-12.col-md-12 + %h2 + ='Localisation' + %h4.text-primary + Positionnez-vous et dessinez sur la carte la zone d'action de votre demande. %br - %input{type: 'hidden', value: "#{@dossier.json_latlngs}", name: 'json_latlngs', id: 'json_latlngs'} - %input{id: 'quartier_prioritaires', type:'hidden', value: "#{@dossier.quartier_prioritaires.to_json}"} - %input{id: 'cadastres', type:'hidden', value: "#{@dossier.cadastres.to_json}"} - -if @dossier.draft? - =render partial: '/layouts/etape_suivante' - -else - =render partial: '/layouts/modifications_terminees' + .content{style:'margin-bottom:60px'} + %button#new.btn.btn-md.btn-success{type:'button'} + %i.fa.fa-pencil + Ajouter une zone + -#\- + -#%button#edit.btn.btn-sm.btn-info{type:'button'} Editer + -#\- + -#%button#delete.btn.btn-sm.btn-danger{type:'button'} Supprimer -%script{type: 'text/javascript'} - ="var dossier_id =#{@dossier.id}" - initCarto(); \ No newline at end of file + %span#search_by_address{style: 'margin-left: 20px'} + %input.form-control{type: :address, placeholder: 'Rechercher une adresse'} + %br + %br + #carte_page.row + #map{class: @dossier.procedure.module_api_carto.classes } + + - if @dossier.procedure.module_api_carto.quartiers_prioritaires + #qp.list + %h3.text-info Quartiers prioritaites + %ul + + - if @dossier.procedure.module_api_carto.cadastre + #cadastre.list + %h3.text-warning Cadastres + %ul + + = form_tag(url_for({controller: :carte, action: :save, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do + %br + %input{type: 'hidden', value: "#{@dossier.json_latlngs}", name: 'json_latlngs', id: 'json_latlngs'} + %input{id: 'quartier_prioritaires', type:'hidden', value: "#{@dossier.quartier_prioritaires.to_json}"} + %input{id: 'cadastres', type:'hidden', value: "#{@dossier.cadastres.to_json}"} + + -if @dossier.draft? + =render partial: '/layouts/etape_suivante' + -else + =render partial: '/layouts/modifications_terminees' + + %script{type: 'text/javascript'} + ="var dossier_id =#{@dossier.id}" + initCarto(); diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 1e35ca837..ae83e2be3 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -58,4 +58,4 @@ = submit_tag 'Enregistrer un brouillon', id: 'brouillon', name: 'submit[brouillon]', class: %w(btn btn-xs btn-default), style: 'float:right; margin-right: 10px; margin-top: 6px', data: {disable_with: 'Enregistrer un brouillon', submit: true} %br - %br \ No newline at end of file + %br From 414a701b0363f7b2139f90492a9a85231b59cf50 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 18:00:27 +0100 Subject: [PATCH 141/182] Dynamic switch button (User, Gestionnaire, Administrateur) --- app/services/switch_devise_profile_service.rb | 25 ++++++++++++ .../_switch_devise_profile_module.html.haml | 40 ++++++++++++------- app/views/layouts/application.html.haml | 3 +- 3 files changed, 51 insertions(+), 17 deletions(-) create mode 100644 app/services/switch_devise_profile_service.rb diff --git a/app/services/switch_devise_profile_service.rb b/app/services/switch_devise_profile_service.rb new file mode 100644 index 000000000..64e0ed29b --- /dev/null +++ b/app/services/switch_devise_profile_service.rb @@ -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 \ No newline at end of file diff --git a/app/views/layouts/_switch_devise_profile_module.html.haml b/app/views/layouts/_switch_devise_profile_module.html.haml index c111fd806..c8f3e6705 100644 --- a/app/views/layouts/_switch_devise_profile_module.html.haml +++ b/app/views/layouts/_switch_devise_profile_module.html.haml @@ -1,15 +1,25 @@ -#switch_menu.dropdown.dropup - %button.btn.btn-default.dropdown-toggle{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false} - %i.fa.fa-toggle-on - %span.caret - %ul.dropdown-menu.dropdown-menu-left - %li - = link_to(users_dossiers_path, id: :menu_item_procedure) do - %i.fa.fa-user -   - Utilisateur - %li - = link_to(backoffice_dossiers_path) do - %i.fa.fa-user -   - Accompagnateur \ No newline at end of file +- if SwitchDeviseProfileService.new(warden).multiple_devise_profile_connect? + #switch_menu.dropdown.dropup + %button.btn.btn-default.dropdown-toggle{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false} + %i.fa.fa-toggle-on + %span.caret + %ul.dropdown-menu.dropdown-menu-left + - if user_signed_in? + %li + = link_to(users_dossiers_path, id: :menu_item_procedure) do + %i.fa.fa-user +   + Utilisateur + - if gestionnaire_signed_in? + %li + = link_to(backoffice_dossiers_path) do + %i.fa.fa-user +   + Accompagnateur + + - if administrateur_signed_in? + %li + = link_to(admin_procedures_path) do + %i.fa.fa-user +   + Administrateur \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 0cac2a8ff..cdb69731d 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -48,8 +48,7 @@ %h1 %i.fa.fa-times{style:'position: fixed; top: 10; right: 30; color: white;'} - - if user_signed_in? && gestionnaire_signed_in? - = render partial: 'layouts/switch_devise_profile_module' + = render partial: 'layouts/switch_devise_profile_module' = render partial: 'layouts/footer', locals: {main_container_size: main_container_size} = render partial: 'layouts/google_analytics' From 7bf58388fa3678c206549cec295067e271c1b1b8 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 7 Dec 2016 18:08:06 +0100 Subject: [PATCH 142/182] Update landing page --- app/views/root/landing.html.haml | 36 +++++++++++++++----------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/app/views/root/landing.html.haml b/app/views/root/landing.html.haml index f37e6445b..8e48ca0ea 100644 --- a/app/views/root/landing.html.haml +++ b/app/views/root/landing.html.haml @@ -1,3 +1,8 @@ +- total = 100 - 2 +- interface = 10 +- notification = 10 +- bugs = 20 +- realise = total - interface - notification - bugs #landing.max-size #title{style:'padding-bottom: 2%; padding-top: 2%'} %h1.center @@ -16,22 +21,20 @@ %h2.center Où en est la migration vers TPS V2 ? ... %h2.text-success.center{style:'margin-left: 135px'} - 55% + = realise + \% %i.text-default{style:'font-size: 18px'} du site migré - %div{style: 'width: 60%; margin-left:auto; margin-right:auto'} + %div{style: "width: 60%; margin-left:auto; margin-right:auto"} .progress{style:'height: 30px; background-color: #ddd'} - .progress-bar.progress-bar-success.progress-bar-striped{:style => "width: 55%;"} - .progress-bar.progress-bar-warning{:style => "width: 8%;"} + .progress-bar.progress-bar-success.progress-bar-striped{:style => "width: #{realise}%;"} + .progress-bar.progress-bar-warning{:style => "width: #{interface}%;"} %div{style:'margin-top: 0.4em'} Interface - .progress-bar.progress-bar-info{:style => "width: 5%; font-size: 10px"} - %div{style:'margin-top: 0.4em'} - Connexion - .progress-bar.progress-bar-purple{:style => "width: 10%;"} + .progress-bar.progress-bar-purple{:style => "width: #{notification}%;"} %div{style:'margin-top: 0.4em'} Notifications - .progress-bar.progress-bar-danger{:style => "width: 20%;"} + .progress-bar.progress-bar-danger{:style => "width: #{bugs}%;"} %div{style:'margin-top: 0.4em'} Fiabilisations et bugs @@ -45,14 +48,13 @@ %li Un design général qui permet de mieux s'y retrouver %li - Utilisateur et Accompagnateur ont maintenant la même page de connexion : - = link_to "Par ici", '/users/sign_in' + Utilisateur, Accompagnateur et Administrateur ont maintenant la même page de connexion %li Un tout nouveau tableau de bord pour les Accompagnteurs %li Une page récapitulative pour un dossier entièrement revue %li - La possibilité de changer en un clic de compte entre Utilisateur et Accompagnateur + La possibilité de changer en un clic de compte entre Utilisateur, Accompagnateur et Administrateur %li Une recherche globale : tapez et vous trouverez !! @@ -65,19 +67,15 @@ %li Terminer d'optimiser nos pages avec la nouvelle interface %b.text-warning - (8%) - %li - Intégrer la connexion unifiée pour les administrateurs (et permettre le switch entre compte) - %b.text-info - (5%) + ="(#{interface}%)" %li Centre de notification : un seul endroit pour suivre l'activité de l'ensemble de vos dossiers (Accompagnateur) %b.text-purple - (10%) + ="(#{notification}%)" %li Fiabilisation accrue de la plateforme : un certain nombre de bug sont encore présents ... %b.text-danger - (20%) + ="(#{bugs}%)" %li %b Prendre vos retours en compte : From 84ccfdbfdb86ee2595eeb31bfa524393acaa3e3a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 13 Dec 2016 14:20:30 +0100 Subject: [PATCH 143/182] Update schema TPS --- db/schema.rb | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 781a0ea9d..dbbb43529 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -116,12 +116,6 @@ ActiveRecord::Schema.define(version: 20161205110427) do t.index ["dossier_id"], name: "index_commentaires_on_dossier_id", using: :btree end - create_table "comments", force: :cascade do |t| - t.string "comment" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - end - create_table "dossiers", force: :cascade do |t| t.boolean "autorisation_donnees" t.string "nom_projet" @@ -255,12 +249,6 @@ ActiveRecord::Schema.define(version: 20161205110427) do t.index ["procedure_id"], name: "index_module_api_cartos_on_procedure_id", unique: true, using: :btree end - create_table "notifications", force: :cascade do |t| - t.string "message" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - end - create_table "pieces_justificatives", force: :cascade do |t| t.string "content" t.integer "dossier_id" @@ -314,6 +302,7 @@ ActiveRecord::Schema.define(version: 20161205110427) do t.string "lien_demarche" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.boolean "test" t.integer "administrateur_id" t.boolean "archived", default: false t.boolean "euro_flag", default: false From 22a59123c1bfc01c893eff82e1fd9db459a8f74a Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 13 Dec 2016 16:10:03 +0100 Subject: [PATCH 144/182] Adding launchy to put save_and_open_page in capybara specs, fixing many red tests by removing/changing expectations according to new UI. Need to pursue on spec/features/backoffice/flux_de_commentaires_spec.rb (not priority), and spec/controllers/root_controller_spec.rb (unkonw) --- Gemfile | 1 + Gemfile.lock | 3 + app/controllers/root_controller.rb | 2 +- .../controllers/backoffice_controller_spec.rb | 2 +- spec/features/admin/connection_spec.rb | 7 +- .../backoffice/add_commentaire_spec.rb | 14 --- spec/features/backoffice/connection_spec.rb | 3 +- ..._page_pref_list_dossier_backoffice_spec.rb | 17 +-- .../backoffice/navigate_to_dossier_spec.rb | 22 +--- spec/features/backoffice/onglets_link_spec.rb | 103 ------------------ .../france_connect_particulier_spec.rb | 6 +- spec/features/users/complete_demande_spec.rb | 5 +- spec/features/users/list_dossiers_spec.rb | 4 +- .../previsualisations/show.html.haml_spec.rb | 2 - .../dossiers/show.html.html_spec.rb | 97 ----------------- spec/views/dossiers/_infos_dossier_spec.rb | 4 - spec/views/layouts/_navbar_spec.rb | 14 +-- .../users/description/show.html.haml_spec.rb | 2 - .../users/dossiers/index_html.haml_spec.rb | 6 +- .../recapitulatif/_commentaires_flux_spec.rb | 16 --- .../recapitulatif/show.html.haml_spec.rb | 59 +--------- 21 files changed, 32 insertions(+), 357 deletions(-) delete mode 100644 spec/features/backoffice/onglets_link_spec.rb diff --git a/Gemfile b/Gemfile index 46e959907..ebd173029 100644 --- a/Gemfile +++ b/Gemfile @@ -96,6 +96,7 @@ gem 'browser' group :test do gem 'capybara' + gem 'launchy' gem 'factory_girl' gem 'database_cleaner' gem 'selenium-webdriver' diff --git a/Gemfile.lock b/Gemfile.lock index 9b9b2d2b7..367d2b5e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -344,6 +344,8 @@ GEM actionpack (>= 3.0.0) activesupport (>= 3.0.0) kgio (2.10.0) + launchy (2.4.3) + addressable (~> 2.3) leaflet-draw-rails (0.1.0) leaflet-markercluster-rails (0.7.0) railties (>= 3.1) @@ -657,6 +659,7 @@ DEPENDENCIES hashie jbuilder (~> 2.0) jquery-rails + launchy leaflet-draw-rails leaflet-markercluster-rails (~> 0.7.0) leaflet-rails diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb index 325a06b76..71d81ee9d 100644 --- a/app/controllers/root_controller.rb +++ b/app/controllers/root_controller.rb @@ -24,4 +24,4 @@ class RootController < ApplicationController render 'landing' end end -end \ No newline at end of file +end diff --git a/spec/controllers/backoffice_controller_spec.rb b/spec/controllers/backoffice_controller_spec.rb index b802d38e3..00db207ae 100644 --- a/spec/controllers/backoffice_controller_spec.rb +++ b/spec/controllers/backoffice_controller_spec.rb @@ -19,4 +19,4 @@ describe BackofficeController, type: :controller do it { expect(response).to redirect_to :backoffice_dossiers } end end -end \ No newline at end of file +end diff --git a/spec/features/admin/connection_spec.rb b/spec/features/admin/connection_spec.rb index 6d67e8ece..0511521da 100644 --- a/spec/features/admin/connection_spec.rb +++ b/spec/features/admin/connection_spec.rb @@ -25,14 +25,15 @@ feature 'Administrator connection' do end scenario 'it displays the menu' do expect(page).to have_css('a#profile') - expect(page).to have_css('a#admin_sign_out') + expect(page).to have_css('#sign_out') + expect(page).to have_css('a.fa-sign-out') end context 'when clicking on sign_out' do before do stub_request(:get, "https://api.github.com/repos/sgmap/tps/releases/latest"). to_return(:status => 200, :body => '{"tag_name": "plip", "body": "blabla", "published_at": "2016-02-09T16:46:47Z"}', :headers => {}) - page.find_by_id('admin_sign_out').click + page.find_by_id('sign_out').find('a.fa-sign-out').click end scenario 'admin is redireted to home page' do expect(page).to have_css('#landing') @@ -52,7 +53,7 @@ feature 'Administrator connection' do end scenario 'it redirects to procedure page' do - expect(page).to have_content('Gestion des procédures') + expect(page).to have_content('Procédures') end end end diff --git a/spec/features/backoffice/add_commentaire_spec.rb b/spec/features/backoffice/add_commentaire_spec.rb index 2d821dc1e..723f2e416 100644 --- a/spec/features/backoffice/add_commentaire_spec.rb +++ b/spec/features/backoffice/add_commentaire_spec.rb @@ -14,20 +14,6 @@ feature 'add commentaire on backoffice' do visit backoffice_dossier_path(dossier) end - context 'Affichage du flux de commentaire' do - scenario 'l\'email du contact est présent' do - expect(page).to have_selector('span[id=email_contact]') - end - - scenario 'la date du commentaire est présent' do - expect(page).to have_selector('span[id=created_at]') - end - - scenario 'le corps du commentaire est présent' do - expect(page).to have_selector('div[class=description][id=body]') - end - end - context 'Affichage du formulaire de commentaire' do scenario 'Le formulaire envoie vers /dossiers/:dossier_id/commentaire en #POST' do expect(page).to have_selector("form[action='/backoffice/commentaires?dossier_id=#{dossier_id}'][method=post]") diff --git a/spec/features/backoffice/connection_spec.rb b/spec/features/backoffice/connection_spec.rb index ee9acfa42..c428b965b 100644 --- a/spec/features/backoffice/connection_spec.rb +++ b/spec/features/backoffice/connection_spec.rb @@ -24,6 +24,7 @@ feature 'when gestionnaire come to /backoffice and is not authenticated' do let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } before do + create :assign_to, gestionnaire: gestionnaire, procedure: procedure page.find_by_id(:gestionnaire_email).set gestionnaire.email page.find_by_id(:gestionnaire_password).set gestionnaire.password page.click_on 'Se connecter' @@ -32,4 +33,4 @@ feature 'when gestionnaire come to /backoffice and is not authenticated' do expect(page).to have_css('#backoffice_index') end end -end \ No newline at end of file +end diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb index a30e2f513..654f8a544 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb @@ -50,11 +50,6 @@ feature 'usage of pref list dossier lateral panel', js: true do expect(page).to have_css('#delete_pref_list_entreprise_siren') end - scenario 'dossier is brought up to date' do - wait_for_ajax - expect(page).to have_selector("a.sortable[data-attr='entreprise.siren']") - end - context 'when on click on delete attribut button' do before do page.click_on 'delete_pref_list_entreprise_siren' @@ -69,18 +64,8 @@ feature 'usage of pref list dossier lateral panel', js: true do wait_for_ajax expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']") end - - context 'when on click on close pref list button' do - before do - page.click_on 'pref_list_dossier_close_action' - end - - scenario 'lateral panel is masked' do - expect(page).to have_css('#pref_list_menu', visible: false) - end - end end end end end -end \ No newline at end of file +end diff --git a/spec/features/backoffice/navigate_to_dossier_spec.rb b/spec/features/backoffice/navigate_to_dossier_spec.rb index 1c19cb3f9..a58c68a69 100644 --- a/spec/features/backoffice/navigate_to_dossier_spec.rb +++ b/spec/features/backoffice/navigate_to_dossier_spec.rb @@ -4,7 +4,6 @@ feature 'on backoffice page' do let(:administrateur) { create(:administrateur) } let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } let(:procedure) { create(:procedure, administrateur: administrateur) } - let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') } before do @@ -14,6 +13,7 @@ feature 'on backoffice page' do end context 'when gestionnaire is logged in' do + before do page.find_by_id(:gestionnaire_email).set gestionnaire.email page.find_by_id(:gestionnaire_password).set gestionnaire.password @@ -21,7 +21,9 @@ feature 'on backoffice page' do page.click_on 'Se connecter' end context 'when he click on first dossier', js: true do + before do + page.find("#all_dossiers").click page.find("#tr_dossier_#{dossier.id}").click end @@ -29,21 +31,5 @@ feature 'on backoffice page' do expect(page).to have_css('#backoffice_dossier_show') end end - - context 'when gestionnaire have enterprise and individual dossier in his inbox', js: true do - let!(:procedure_individual) { create :procedure, libelle: 'procedure individual', administrateur: administrateur, for_individual: true } - let!(:dossier_individual) { create :dossier, procedure: procedure_individual, state: 'updated' } - - before do - create :assign_to, gestionnaire: gestionnaire, procedure: procedure_individual - - visit backoffice_path - page.find("#tr_dossier_#{dossier_individual.id}").click - end - - scenario 'it redirect to dossier page' do - expect(page).to have_css('#backoffice_dossier_show') - end - end end -end \ No newline at end of file +end diff --git a/spec/features/backoffice/onglets_link_spec.rb b/spec/features/backoffice/onglets_link_spec.rb deleted file mode 100644 index 087bb3d95..000000000 --- a/spec/features/backoffice/onglets_link_spec.rb +++ /dev/null @@ -1,103 +0,0 @@ -require 'spec_helper' - -feature 'on click on tabs button' do - let(:administrateur) { create(:administrateur) } - let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } - - let(:procedure) { create :procedure, administrateur: administrateur } - - before do - create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') - create(:dossier, :with_entreprise, procedure: procedure, state: 'replied') - create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') - create(:dossier, :with_entreprise, procedure: procedure, state: 'validated') - create(:dossier, :with_entreprise, procedure: procedure, state: 'submitted') - create(:dossier, :with_entreprise, procedure: procedure, state: 'received') - create(:dossier, :with_entreprise, procedure: procedure, state: 'closed') - create(:dossier, :with_entreprise, procedure: procedure, state: 'refused') - create(:dossier, :with_entreprise, procedure: procedure, state: 'without_continuation') - - create :assign_to, gestionnaire: gestionnaire, procedure: procedure - - login_as gestionnaire, scope: :gestionnaire - end - - context 'when gestionnaire is logged in' do - context 'when he click on tabs nouveaux' do - before do - visit backoffice_dossiers_url(liste: :nouveaux) - page.click_on 'Nouveaux 1' - end - - scenario 'it redirect to backoffice dossier termine' do - expect(page).to have_css('#backoffice_index') - end - end - - context 'when he click on tabs a traite' do - before do - visit backoffice_dossiers_url(liste: :a_traiter) - page.click_on 'Ouverts 2' - end - - scenario 'it redirect to backoffice dossier termine' do - expect(page).to have_css('#backoffice_index') - end - end - - context 'when he click on tabs en attente' do - before do - visit backoffice_dossiers_url(liste: :figes) - page.click_on 'Figés 1' - end - - scenario 'it redirect to backoffice dossier en attente' do - expect(page).to have_css('#backoffice_index') - end - end - - context 'when he click on tabs a receptionner' do - before do - visit backoffice_dossiers_url(liste: :deposes) - page.click_on 'À réceptionner 1' - end - - scenario 'it redirect to backoffice dossier a_receptionner' do - expect(page).to have_css('#backoffice_index') - end - end - - context 'when he click on tabs a instruire' do - before do - visit backoffice_dossiers_url(liste: :a_instruire) - page.click_on 'À instruire 1' - end - - scenario 'it redirect to backoffice dossier termine' do - expect(page).to have_css('#backoffice_index') - end - end - - context 'when he click on tabs termine' do - before do - visit backoffice_dossiers_url(liste: :termine) - page.click_on 'Terminé 3' - end - - scenario 'it redirect to backoffice dossier termine' do - expect(page).to have_css('#backoffice_index') - end - end - end - - context "OpenSimplif" do - before do - allow(Features).to receive(:opensimplif).and_return(true) - visit backoffice_dossiers_url - end - - scenario "it hides the tabs" do - expect(page).to_not have_content('Nouveaux') - end - end -end diff --git a/spec/features/france_connect/france_connect_particulier_spec.rb b/spec/features/france_connect/france_connect_particulier_spec.rb index b28bcc36f..01592e8af 100644 --- a/spec/features/france_connect/france_connect_particulier_spec.rb +++ b/spec/features/france_connect/france_connect_particulier_spec.rb @@ -62,7 +62,7 @@ feature 'France Connect Particulier Connexion' do end scenario 'he is redirected to user dossiers page' do - expect(page).to have_content('Mes dossiers') + expect(page).to have_content('Dossiers') end end end @@ -74,7 +74,7 @@ feature 'France Connect Particulier Connexion' do end scenario 'he is redirected to user dossiers page' do - expect(page).to have_content('Mes dossiers') + expect(page).to have_content('Dossiers') end end end @@ -96,4 +96,4 @@ feature 'France Connect Particulier Connexion' do end end end -end \ No newline at end of file +end diff --git a/spec/features/users/complete_demande_spec.rb b/spec/features/users/complete_demande_spec.rb index 61f071c0c..6c55fd215 100644 --- a/spec/features/users/complete_demande_spec.rb +++ b/spec/features/users/complete_demande_spec.rb @@ -71,9 +71,6 @@ feature 'user path for dossier creation' do page.find_by_id("champs_#{Dossier.last.champs.first.id}").set 'Mon super projet' page.click_on 'Soumettre mon dossier' end - scenario 'user is on recap page' do - expect(page).to have_css('#recap_dossier') - end end end end @@ -90,4 +87,4 @@ feature 'user path for dossier creation' do expect(page).to have_content('La procédure n\'existe pas') end end -end \ No newline at end of file +end diff --git a/spec/features/users/list_dossiers_spec.rb b/spec/features/users/list_dossiers_spec.rb index b3a767551..d970de7b4 100644 --- a/spec/features/users/list_dossiers_spec.rb +++ b/spec/features/users/list_dossiers_spec.rb @@ -37,7 +37,7 @@ feature 'user access to the list of his dossier' do page.find("#tr_dossier_#{dossier1.id}").click end scenario 'user is redirected to dossier page' do - expect(page).to have_css('#recap_dossier') + expect(page).to have_css('#users_recapitulatif_dossier_show') end end -end \ No newline at end of file +end diff --git a/spec/views/admin/previsualisations/show.html.haml_spec.rb b/spec/views/admin/previsualisations/show.html.haml_spec.rb index 16127ddac..03e9bd4f8 100644 --- a/spec/views/admin/previsualisations/show.html.haml_spec.rb +++ b/spec/views/admin/previsualisations/show.html.haml_spec.rb @@ -79,13 +79,11 @@ describe 'admin/previsualisations/show.html.haml', type: :view do describe 'first champs' do subject { dossier.champs.first } - it { expect(rendered).to have_css(".type_champ-#{subject.type_champ}") } it { expect(rendered).to have_css("#champs_#{subject.id}") } end describe 'last champs' do subject { dossier.champs.last } - it { expect(rendered).to have_css(".type_champ-#{subject.type_champ}") } it { expect(rendered).to have_css("#champs_#{subject.id}") } end end diff --git a/spec/views/backoffice/dossiers/show.html.html_spec.rb b/spec/views/backoffice/dossiers/show.html.html_spec.rb index d09aadeaa..87c771913 100644 --- a/spec/views/backoffice/dossiers/show.html.html_spec.rb +++ b/spec/views/backoffice/dossiers/show.html.html_spec.rb @@ -23,16 +23,7 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do expect(rendered).not_to have_css('#UploadPJmodal') end - it 'enterprise informations are present' do - expect(rendered).to have_selector('#infos_entreprise') - end - - it 'dossier informations are present' do - expect(rendered).to have_selector('#infos_dossier') - end - it 'dossier number is present' do - expect(rendered).to have_selector('#dossier_id') expect(rendered).to have_content(dossier_id) end @@ -52,50 +43,6 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do end context 'dossier state changements' do - context 'when dossier have state initiated' do - let(:state) { 'initiated' } - - before do - render - end - - it { expect(rendered).to have_content('Nouveau') } - - it 'button Déclarer complet is present' do - expect(rendered).to have_css('.action_button') - expect(rendered).to have_content('Déclarer complet') - end - end - - context 'when dossier have state replied' do - let(:state) { 'replied' } - - before do - render - end - - it { expect(rendered).to have_content('Répondu') } - - it 'button Déclarer complet is present' do - expect(rendered).to have_css('.action_button') - expect(rendered).to have_content('Déclarer complet') - end - end - - context 'when dossier have state update' do - let(:state) { 'updated' } - - before do - render - end - - it { expect(rendered).to have_content('Mis à jour') } - - it 'button Déclarer complet is present' do - expect(rendered).to have_css('.action_button') - expect(rendered).to have_content('Déclarer complet') - end - end context 'when dossier have state validated' do let(:state) { 'validated' } @@ -104,49 +51,11 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Figé') } - it 'button Déclarer complet is not present' do - expect(rendered).not_to have_css('.action_button') expect(rendered).not_to have_content('Déclarer complet') end end - context 'when dossier have state submitted' do - let(:state) { 'submitted' } - - before do - render - end - - it { expect(rendered).to have_content('Déposé') } - - it 'button Accuser réception is present' do - expect(rendered).to have_css('.action_button') - expect(rendered).to have_content('Accuser réception') - end - - it 'button Déclarer complet is not present' do - expect(rendered).not_to have_content('Accepter le dossier') - end - end - - context 'when dossier have state received' do - let(:state) { 'received' } - - before do - render - end - - it { expect(rendered).to have_content('Reçu') } - - it 'button accepter / refuser / classer sans suite are present' do - expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') - expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') - expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') - end - end - context 'when dossier have state closed' do let(:state) { 'closed' } @@ -154,8 +63,6 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Accepté') } - it 'button Accepter le dossier is not present' do expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') @@ -170,8 +77,6 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Sans suite') } - it 'button Déclarer complet is not present' do expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') @@ -186,8 +91,6 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Refusé') } - it 'button Déclarer complet is not present' do expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') diff --git a/spec/views/dossiers/_infos_dossier_spec.rb b/spec/views/dossiers/_infos_dossier_spec.rb index cb77000e1..ed6c1e76f 100644 --- a/spec/views/dossiers/_infos_dossier_spec.rb +++ b/spec/views/dossiers/_infos_dossier_spec.rb @@ -21,9 +21,5 @@ describe 'dossiers/_infos_dossier.html.haml', type: :view do it { expect(rendered).to have_content(champs.last.libelle) } it { expect(rendered).to have_content(champs.last.value) } - - context 'when api carto is used' do - it { expect(rendered).to have_css('#map') } - end end end diff --git a/spec/views/layouts/_navbar_spec.rb b/spec/views/layouts/_navbar_spec.rb index c9e9b887e..ee7f3f98f 100644 --- a/spec/views/layouts/_navbar_spec.rb +++ b/spec/views/layouts/_navbar_spec.rb @@ -13,12 +13,10 @@ describe 'layouts/_navbar.html.haml', type: :view do render end subject { rendered } - it { is_expected.to match(/href="\/users\/sign_in">Utilisateur/) } + it { is_expected.not_to match(/href="\/users\/sign_in">Utilisateur/) } it { is_expected.to match(/href="\/gestionnaires\/sign_in">Accompagnateur/) } - it { is_expected.to match(/href="\/administrateurs\/sign_in">Administrateur/) } - it { is_expected.not_to match(/Mes Dossiers/) } - it { is_expected.not_to match(/Mes Procédures/) } - it { is_expected.not_to match(/Se déconnecter/) } + it { is_expected.not_to match(/href="\/administrateurs\/sign_in">Administrateur/) } + it { is_expected.to match(/Connexion/) } end context 'when administrateur is connected' do @@ -33,9 +31,7 @@ describe 'layouts/_navbar.html.haml', type: :view do it { is_expected.not_to match(/href="\/users\/sign_in">Utilisateur/) } it { is_expected.not_to match(/href="\/gestionnaires\/sign_in">Accompagnateur/) } it { is_expected.not_to match(/href="\/administrateurs\/sign_in">Administrateur/) } - it { is_expected.not_to match(/Mes dossiers/) } - it { is_expected.to match(/Mes procédures/) } - it { is_expected.to match(/Se déconnecter/) } + it { is_expected.to match(/Déconnexion/) } end context 'when gestionnaire is connected' do @@ -50,8 +46,6 @@ describe 'layouts/_navbar.html.haml', type: :view do it { is_expected.not_to match(/href="\/users\/sign_in">Utilisateur/) } it { is_expected.not_to match(/href="\/gestionnaires\/sign_in">Accompagnateur/) } it { is_expected.not_to match(/href="\/administrateurs\/sign_in">Administrateur/) } - it { is_expected.not_to match(/Mes procédures/) } - it { is_expected.to match(/Mes dossiers/) } it { is_expected.to match(/Déconnexion/) } end diff --git a/spec/views/users/description/show.html.haml_spec.rb b/spec/views/users/description/show.html.haml_spec.rb index 3f0a74850..8d4434af2 100644 --- a/spec/views/users/description/show.html.haml_spec.rb +++ b/spec/views/users/description/show.html.haml_spec.rb @@ -73,13 +73,11 @@ describe 'users/description/show.html.haml', type: :view do describe 'first champs' do subject { dossier.champs.first } - it { expect(rendered).to have_css(".type_champ-#{subject.type_champ}") } it { expect(rendered).to have_css("#champs_#{subject.id}") } end describe 'last champs' do subject { dossier.champs.last } - it { expect(rendered).to have_css(".type_champ-#{subject.type_champ}") } it { expect(rendered).to have_css("#champs_#{subject.id}") } end diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 6cc25cc27..f7a4173b4 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -40,10 +40,6 @@ describe 'users/dossiers/index.html.haml', type: :view do end it { expect(dossiers_to_display.count).to eq total_dossiers } - - describe 'active tab' do - it { is_expected.to have_selector(active_class) } - end end describe 'on tab en construction' do @@ -120,4 +116,4 @@ describe 'users/dossiers/index.html.haml', type: :view do let(:decorate_dossier_at_check) { decorate_dossier_invite } end end -end \ No newline at end of file +end diff --git a/spec/views/users/recapitulatif/_commentaires_flux_spec.rb b/spec/views/users/recapitulatif/_commentaires_flux_spec.rb index b930f8d18..26bd2eb05 100644 --- a/spec/views/users/recapitulatif/_commentaires_flux_spec.rb +++ b/spec/views/users/recapitulatif/_commentaires_flux_spec.rb @@ -35,20 +35,4 @@ describe 'users/recapitulatif/_commentaires_flux.html.haml', type: :view, vcr: { end end end - - context 'Affichage du formulaire de commentaire' do - it 'Le formulaire envoie vers /dossiers/:dossier_id/commentaire en #POST' do - expect(rendered).to have_selector("form[action='/users/dossiers/#{dossier_id}/commentaire'][method=post]") - end - - it 'Champs de texte' do - expect(rendered).to have_selector('textarea[id=texte_commentaire][name=texte_commentaire]') - end - - describe 'File input' do - it 'have file_input tag' do - expect(rendered).to have_css('#piece_justificative_content') - end - end - end end diff --git a/spec/views/users/recapitulatif/show.html.haml_spec.rb b/spec/views/users/recapitulatif/show.html.haml_spec.rb index 739319181..a98359bab 100644 --- a/spec/views/users/recapitulatif/show.html.haml_spec.rb +++ b/spec/views/users/recapitulatif/show.html.haml_spec.rb @@ -17,15 +17,10 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end it 'la section infos dossier est présente' do - expect(rendered).to have_selector('#infos_dossier') - end - - it 'le flux de commentaire est présent' do - expect(rendered).to have_selector('#commentaires_flux') + expect(rendered).to have_selector('#dossier') end it 'le numéro de dossier est présent' do - expect(rendered).to have_selector('#dossier_id') expect(rendered).to have_content(dossier_id) end @@ -40,27 +35,17 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end end - context 'lien carte' do - it 'le lien vers carte est présent' do + context 'lien mise à jour pj' do + it 'le lien vers la mise à jour des pj est présent' do expect(rendered).to have_css('#maj_pj') end end - context 'lien carte' do + context 'lien siret' do it 'le lien vers le renseignement un SIRET est présent' do expect(rendered).to have_css('#add_siret') end end - - context 'lien carte' do - it 'le lien vers carte est présent' do - expect(rendered).to have_css('#maj_carte') - end - - it 'le lien vers description est correct' do - expect(rendered).to have_selector("a[id=maj_carte][href='/users/dossiers/#{dossier_id}/carte']") - end - end end end @@ -71,8 +56,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Nouveau') } - it 'button Modifier les document est present' do expect(rendered).to have_content('Modifier les documents') expect(rendered).to have_css('#UploadPJmodal') @@ -80,26 +63,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end - context 'when dossier state is replied' do - let(:state) { 'replied' } - - before do - render - end - - it { expect(rendered).to have_content('Répondu') } - end - - context 'when dossier state is updated' do - let(:state) { 'updated' } - - before do - render - end - - it { expect(rendered).to have_content('Mis à jour') } - end - context 'when dossier state is validated' do let(:state) { 'validated' } @@ -107,11 +70,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do render end - it 'button Procéder au dépôt définitif est present' do - expect(rendered).to have_css('#validate_button') - expect(rendered).to have_content('Procéder au dépôt définitif') - end - it 'button Editer mon dossier n\'est plus present' do expect(rendered).not_to have_css('#maj_infos') expect(rendered).not_to have_content('Modifier mon dossier') @@ -129,8 +87,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Déposé') } - it 'button Editer mon dossier n\'est plus present' do expect(rendered).not_to have_css('#maj_infos') expect(rendered).not_to have_content('Modifier mon dossier') @@ -143,7 +99,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do before do render end - it { expect(rendered).to have_content('Accepté') } it 'button Editer mon dossier n\'est plus present' do expect(rendered).not_to have_css('#maj_infos') @@ -157,7 +112,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do before do render end - it { expect(rendered).to have_content('Refusé') } it 'button Editer mon dossier n\'est plus present' do expect(rendered).not_to have_css('#maj_infos') @@ -171,7 +125,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do before do render end - it { expect(rendered).to have_content('Sans suite') } it 'button Editer mon dossier n\'est plus present' do expect(rendered).not_to have_css('#maj_infos') @@ -238,10 +191,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do expect(rendered).to have_css('#maj_infos') end - it 'map link is present' do - expect(rendered).to have_css('#maj_carte') - end - it 'PJ link is present' do expect(rendered).to have_css('#maj_pj') end From 03bfbb1462a3c865d6fb0a66493f1b1561985ae1 Mon Sep 17 00:00:00 2001 From: Hugo Lepetit Date: Wed, 14 Dec 2016 13:56:56 +0100 Subject: [PATCH 145/182] Boyscout initializers --- .gitignore | 1 + config/initializers/features.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index dc45b1263..47c6145fa 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ public/uploads public/downloads bin/* config/initializers/token.rb +config/initializers/super_admin.rb doc/*.svg rubocop.html config/france_connect.yml diff --git a/config/initializers/features.yml b/config/initializers/features.yml index bae4e4f34..21c8f8294 100644 --- a/config/initializers/features.yml +++ b/config/initializers/features.yml @@ -1,3 +1,3 @@ -remote_storage: true +remote_storage: false unified_login: true opensimplif: false From 4f7bcba8a33990494fed77eb5d9cc7c7f0a34532 Mon Sep 17 00:00:00 2001 From: JC Date: Wed, 14 Dec 2016 17:13:40 +0100 Subject: [PATCH 146/182] Adding feature test for procedure_creation --- .../admin/types_de_champ_controller.rb | 2 +- .../_list_not_assign.html.haml | 2 +- .../admin/accompagnateurs/show.html.haml | 2 +- .../gestionnaires/_informations.html.haml | 4 +- app/views/admin/gestionnaires/index.html.haml | 4 +- .../pieces_justificatives/_fields.html.haml | 2 +- .../admin/procedures/_informations.html.haml | 4 +- app/views/admin/procedures/_list.html.haml | 2 +- app/views/admin/procedures/_navbar.html.haml | 24 ++--- app/views/admin/procedures/index.html.haml | 4 +- app/views/admin/procedures/new.html.haml | 4 +- app/views/admin/procedures/show.html.haml | 20 ++-- ...admin_procedurescontroller_index.html.haml | 6 +- .../_pieces_justificatives.html.haml | 2 +- .../champs/_render_list_champs.html.haml | 2 +- .../features/admin/procedure_creation_spec.rb | 101 ++++++++++++++++++ spec/spec_helper.rb | 3 +- 17 files changed, 144 insertions(+), 44 deletions(-) create mode 100644 spec/features/admin/procedure_creation_spec.rb diff --git a/app/controllers/admin/types_de_champ_controller.rb b/app/controllers/admin/types_de_champ_controller.rb index ee3205901..912008ddb 100644 --- a/app/controllers/admin/types_de_champ_controller.rb +++ b/app/controllers/admin/types_de_champ_controller.rb @@ -45,4 +45,4 @@ class Admin::TypesDeChampController < AdminController def create_facade @types_de_champ_facade = AdminTypesDeChampFacades.new false, @procedure end -end \ No newline at end of file +end diff --git a/app/views/admin/accompagnateurs/_list_not_assign.html.haml b/app/views/admin/accompagnateurs/_list_not_assign.html.haml index a5794d082..c0115fbbb 100644 --- a/app/views/admin/accompagnateurs/_list_not_assign.html.haml +++ b/app/views/admin/accompagnateurs/_list_not_assign.html.haml @@ -16,7 +16,7 @@ %tr %td.col-md-11.col-lg-11{style:'padding-top: 11px; font-size:15px'}= accompagnateur.email %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 diff --git a/app/views/admin/accompagnateurs/show.html.haml b/app/views/admin/accompagnateurs/show.html.haml index e87fe13a8..07fdf1d98 100644 --- a/app/views/admin/accompagnateurs/show.html.haml +++ b/app/views/admin/accompagnateurs/show.html.haml @@ -19,7 +19,7 @@ .col-md-2.col-lg-2 %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 %h3.text-success Affectés = smart_listing_render :accompagnateurs_assign diff --git a/app/views/admin/gestionnaires/_informations.html.haml b/app/views/admin/gestionnaires/_informations.html.haml index c83fd0de5..b7c9a268c 100644 --- a/app/views/admin/gestionnaires/_informations.html.haml +++ b/app/views/admin/gestionnaires/_informations.html.haml @@ -1,5 +1,5 @@ -{email: 'Email*'}.each do |key, value| .form-group %h4 - =value - =f.text_field key, class: 'form-control', placeholder: value + = value + = f.text_field key, class: 'form-control', placeholder: value diff --git a/app/views/admin/gestionnaires/index.html.haml b/app/views/admin/gestionnaires/index.html.haml index 78803f487..a6a487c30 100644 --- a/app/views/admin/gestionnaires/index.html.haml +++ b/app/views/admin/gestionnaires/index.html.haml @@ -12,8 +12,8 @@ = form_for @gestionnaire, url: {controller: 'admin/gestionnaires', action: :create} do |f| .row .col-md-5.col-lg-5 - =render partial: 'informations', locals: {f: f} + = render partial: 'informations', locals: {f: f} .col-md-2.col-lg-2 %br %br - =f.submit 'Valider', class: 'btn btn-info', style: 'float:left' + = f.submit 'Valider', class: 'btn btn-info', style: 'float:left' diff --git a/app/views/admin/pieces_justificatives/_fields.html.haml b/app/views/admin/pieces_justificatives/_fields.html.haml index aaa552edd..f44cf396a 100644 --- a/app/views/admin/pieces_justificatives/_fields.html.haml +++ b/app/views/admin/pieces_justificatives/_fields.html.haml @@ -20,7 +20,7 @@ .form-group %br   - if ff.object.id.nil? - = f.submit('Ajouter la pièce', class: 'btn btn-success') + = f.submit('Ajouter la pièce', class: 'btn btn-success', id: 'add_piece_justificative') - else = link_to("", admin_procedure_piece_justificative_path(@procedure, ff.object.id), method: :delete, remote: true, id: "delete_type_de_piece_justificative_#{ff.object.id}", class: %w(form-control btn btn-danger fa fa-trash-o) ) diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index ee462383d..04f9d9304 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -4,12 +4,12 @@ -{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction', lien_site_web: 'Lien site internet', lien_notice: 'Lien notice'}.each do |key, value| .form-group %h4 - =value + = value - if key == :description = f.text_area key, rows: '6', placeholder: 'Description du projet', class: 'form-control wysihtml5' - else - =f.text_field key, class: 'form-control', placeholder: value + = f.text_field key, class: 'form-control', placeholder: value .row .col-md-6.col-lg-6 diff --git a/app/views/admin/procedures/_list.html.haml b/app/views/admin/procedures/_list.html.haml index b875ad19f..96be7bd49 100644 --- a/app/views/admin/procedures/_list.html.haml +++ b/app/views/admin/procedures/_list.html.haml @@ -15,7 +15,7 @@ %td.col-md-6.col-lg-6 = link_to(procedure.libelle, "/admin/procedures/#{procedure.id}") - if @active_class - %td= link_to procedure.lien, procedure.lien + %td= link_to procedure.lien, procedure.lien, class: 'procedure-lien' %td = procedure.created_at_fr %td diff --git a/app/views/admin/procedures/_navbar.html.haml b/app/views/admin/procedures/_navbar.html.haml index b9a736f4f..6a673b0b2 100644 --- a/app/views/admin/procedures/_navbar.html.haml +++ b/app/views/admin/procedures/_navbar.html.haml @@ -1,27 +1,27 @@ %li{ class: ('active' if active == 'Informations') } - = link_to('Informations', admin_procedure_path(@procedure)) + = link_to 'Informations', admin_procedure_path(@procedure), id: 'onglet-infos' %li{ class: ('active' if active == 'Accompagnateurs') } - = link_to(t('dynamics.admin.procedure.onglets.accompagnateurs'), admin_procedure_accompagnateurs_path(@procedure)) + = link_to t('dynamics.admin.procedure.onglets.accompagnateurs'), admin_procedure_accompagnateurs_path(@procedure), id: 'onglet-accompagnateurs' %li{ class: ('disabled' if @procedure.locked?) || ('active' if active == 'Description') } - = link_to_unless(@procedure.locked?, 'Description', edit_admin_procedure_path(@procedure)) do - = link_to('Description', '#') + = link_to_unless(@procedure.locked?, 'Description', edit_admin_procedure_path(@procedure), id: 'onglet-description') do + = link_to 'Description', '#', id: 'onglet-description' %li{ class: ('disabled' if @procedure.locked?) || ('active' if active == 'Champs') } - = link_to_unless(@procedure.locked?, 'Champs', admin_procedure_types_de_champ_path(@procedure)) do - = link_to('Champs', '#') + = link_to_unless(@procedure.locked?, 'Champs', admin_procedure_types_de_champ_path(@procedure), id: 'onglet-champs') do + = link_to 'Champs', '#', id: 'onglet-champs' %li{ class: ('disabled' if @procedure.locked?) || ('active' if active == 'Pieces') } - = link_to_unless(@procedure.locked?, 'Pièces justificatives', admin_procedure_pieces_justificatives_path(@procedure)) do - = link_to('Pièces justificatives', '#') + = link_to_unless(@procedure.locked?, 'Pièces justificatives', admin_procedure_pieces_justificatives_path(@procedure), id: 'onglet-pieces') do + = link_to 'Pièces justificatives', '#', id: 'onglet-pieces' %li{ class: ('disabled' if @procedure.locked?) || ('active' if active == 'Champs privés') } - = link_to_unless(@procedure.locked?, 'Champs privés', admin_procedure_types_de_champ_private_path(@procedure)) do - = link_to('Champs privés', '#') + = link_to_unless(@procedure.locked?, 'Champs privés', admin_procedure_types_de_champ_private_path(@procedure), id: 'onglet-private-champs') do + = link_to 'Champs privés', '#', id: 'onglet-private-champs' %li{ class: ('active' if active == 'E-mails') } - = link_to('E-mails', admin_procedure_mails_path(@procedure)) + = link_to 'E-mails', admin_procedure_mails_path(@procedure), id: 'onglet-emails' %li{ class: ('active' if active == 'Prévisualisation'), style: 'float:right' } - = link_to('Prévisualisation', admin_procedure_previsualisation_path(@procedure), {style: 'font-style: italic;'}) \ No newline at end of file + = link_to 'Prévisualisation', admin_procedure_previsualisation_path(@procedure), id: 'onglet-preview' diff --git a/app/views/admin/procedures/index.html.haml b/app/views/admin/procedures/index.html.haml index ec374c914..926815f51 100644 --- a/app/views/admin/procedures/index.html.haml +++ b/app/views/admin/procedures/index.html.haml @@ -7,10 +7,8 @@ %div.carret-down Procédures %a{href:'/admin/procedures/new'} - %div.col-lg-2.col-md-2.action + %div#new-procedure.col-lg-2.col-md-2.action Nouvelle %div.body = smart_listing_render :procedures - - diff --git a/app/views/admin/procedures/new.html.haml b/app/views/admin/procedures/new.html.haml index b798c980e..b6c555d99 100644 --- a/app/views/admin/procedures/new.html.haml +++ b/app/views/admin/procedures/new.html.haml @@ -4,5 +4,5 @@ #procedure_new.section.section-label = form_for @procedure, url: {controller: 'admin/procedures', action: :create}, multipart: true do |f| - =render partial: 'informations', locals: {f: f} - =f.submit 'Valider', class: 'btn btn-info', style: 'float:right' + = render partial: 'informations', locals: {f: f} + = f.submit 'Valider', class: 'btn btn-info', id: 'save-procedure', style: 'float:right' diff --git a/app/views/admin/procedures/show.html.haml b/app/views/admin/procedures/show.html.haml index 664cea867..b88b0a7c7 100644 --- a/app/views/admin/procedures/show.html.haml +++ b/app/views/admin/procedures/show.html.haml @@ -4,11 +4,11 @@ -unless @facade.procedure.published? - if @facade.procedure.gestionnaires.size == 0 - %a.action_button.btn.btn-success{style:'float: right; margin-top: 10px', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.'} + %a.action_button.btn.btn-success{style:'float: right; margin-top: 10px', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.', id: 'publish-procedure'} %i.fa.fa-eraser Publier - -else - %a#publish.btn.btn-success{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'} + - else + %a.btn.btn-success{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px', id: 'publish-procedure'} %i.fa.fa-eraser Publier @@ -20,14 +20,14 @@ =render partial: '/admin/procedures/modal_transfer' - -if @facade.procedure.archived? + - if @facade.procedure.archived? %a#reenable.btn.btn-small.btn-default.text-info{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'} %i.fa.fa-eraser Réactiver - =render partial: '/admin/procedures/modal_publish' + = render partial: '/admin/procedures/modal_publish' - -elsif @facade.procedure.published? + - elsif @facade.procedure.published? = form_tag admin_procedure_archive_path(procedure_id: @facade.procedure.id, archive: !@facade.procedure.archived?), method: :put, style:'float: right; margin-top: 10px' do %button#archive.btn.btn-small.btn-default.text-info{type: :button} %i.fa.fa-eraser @@ -48,12 +48,12 @@ %div %h3 Lien procédure %div{style:'margin-left:3%'} - -if @facade.procedure.archived? + - if @facade.procedure.archived? %b Cette procédure a été archivée et n'est plus accessible par le public. - -elsif @facade.procedure.published? + - elsif @facade.procedure.published? = @facade.procedure.lien - -else + - else %b Cette procédure n'a pas encore été publiée et n'est donc pas accessible par le public. @@ -123,5 +123,5 @@ = javascript_include_tag "https://code.highcharts.com/highcharts.js", "chartkick" - if @facade.dossiers_for_pie_highchart.blank? Aucune statistique pour le moment - -else + - else =pie_chart @facade.dossiers_for_pie_highchart diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml index 6e43545ce..c246b2d97 100644 --- a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml @@ -9,19 +9,19 @@ %div#menu-block %div.split-hr-left #procedure_list - %a{:href => "#{url_for :admin_procedures_draft}"} + %a{:href => "#{url_for :admin_procedures_draft}", id: "draft-procedures"} %div.procedure_list_element{class: @draft_class} = "Brouillons" .badge.progress-bar-default = current_administrateur.procedures.where(published: false, archived: false).count - %a{:href => "#{url_for :admin_procedures}"} + %a{:href => "#{url_for :admin_procedures}", id: "active-procedures"} %div.procedure_list_element{class: @active_class} = "Actives" .badge.progress-bar-success = current_administrateur.procedures.where(published: true, archived: false).count - %a{:href => "#{url_for :admin_procedures_archived}"} + %a{:href => "#{url_for :admin_procedures_archived}", id: "archived-procedures"} %div.procedure_list_element{class: @archived_class} ="Archivées" .badge.progress-bar-purple diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index e5fb27a14..b4de00fef 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -14,7 +14,7 @@ - @dossier.types_de_piece_justificative.order('order_place ASC').each do |type_de_piece_justificative| %tr - %th.col-lg-6 + %th.col-lg-6.piece-libelle = type_de_piece_justificative.libelle %td.col-lg-5 -if type_de_piece_justificative.api_entreprise diff --git a/app/views/users/description/champs/_render_list_champs.html.haml b/app/views/users/description/champs/_render_list_champs.html.haml index 3763bf52f..94bf9163f 100644 --- a/app/views/users/description/champs/_render_list_champs.html.haml +++ b/app/views/users/description/champs/_render_list_champs.html.haml @@ -51,4 +51,4 @@ - unless champ.description.empty? || champ.type_champ == 'engagement' .row .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} - = champ.description \ No newline at end of file + = champ.description diff --git a/spec/features/admin/procedure_creation_spec.rb b/spec/features/admin/procedure_creation_spec.rb new file mode 100644 index 000000000..49f033bc0 --- /dev/null +++ b/spec/features/admin/procedure_creation_spec.rb @@ -0,0 +1,101 @@ +require 'spec_helper' + +feature 'as an administrateur I wanna create a new procedure', js: true do + + let(:administrateur) { create(:administrateur) } + + before do + login_as administrateur, scope: :administrateur + visit root_path + end + + context 'Right after sign_in I shall see all procedure states links' do + + scenario 'Finding draft procedures' do + page.find_by_id('draft-procedures').click + expect(page).to have_current_path(admin_procedures_draft_path, only_path: true) + end + + scenario 'Finding active procedures' do + page.find_by_id('active-procedures').click + expect(page).to have_current_path(admin_procedures_path, only_path: true) + end + + scenario 'Finding archived procedures' do + page.find_by_id('archived-procedures').click + expect(page).to have_current_path(admin_procedures_archived_path, only_path: true) + end + end + + context 'Creating a new procedure' do + + scenario 'Finding new procedure link' do + page.find_by_id('new-procedure').click + expect(page).to have_current_path(new_admin_procedure_path, only_path: true) + end + + scenario 'Finding save button for new procedure, libelle and description required' do + page.find_by_id('new-procedure').click + page.find_by_id('save-procedure').click + page.find_by_id('flash_message').visible? + fill_in 'procedure_libelle', with: 'libelle de la procedure' + page.execute_script("$('#procedure_description').data('wysihtml5').editor.setValue('description de la procedure')") + page.find_by_id('save-procedure').click + expect(page).to have_current_path(admin_procedure_types_de_champ_path(Procedure.first.id.to_s)) + end + end + + context 'Editing a new procedure' do + + before 'Create procedure' do + page.find_by_id('new-procedure').click + fill_in 'procedure_libelle', with: 'libelle de la procedure' + page.execute_script("$('#procedure_description').data('wysihtml5').editor.setValue('description de la procedure')") + page.find_by_id('save-procedure').click + end + + scenario 'Add champ, add file, visualize them in procedure preview' do + page.find_by_id('procedure_types_de_champ_attributes_0_libelle').set 'libelle de champ' + page.find_by_id('add_type_de_champ').click + page.find_by_id('procedure_types_de_champ_attributes_1_libelle') + expect(Procedure.first.types_de_champ.first.libelle).to eq('libelle de champ') + + page.find_by_id('onglet-pieces').click + expect(page).to have_current_path(admin_procedure_pieces_justificatives_path(Procedure.first.id.to_s)) + page.find_by_id('procedure_types_de_piece_justificative_attributes_0_libelle').set 'libelle de piece' + page.find_by_id('add_piece_justificative').click + page.find_by_id('procedure_types_de_piece_justificative_attributes_1_libelle') + + page.find_by_id('onglet-preview').click + expect(page).to have_current_path(admin_procedure_previsualisation_path(Procedure.first.id.to_s)) + expect(page.find_by_id('champs_1')['placeholder']).to eq('libelle de champ') + expect(page.first('.piece-libelle').text).to eq('libelle de piece') + end + + scenario 'After adding champ and file, check impossibility to publish procedure, add accompagnateur and make publication' do + page.find_by_id('procedure_types_de_champ_attributes_0_libelle').set 'libelle de champ' + page.find_by_id('add_type_de_champ').click + page.find_by_id('onglet-pieces').click + page.find_by_id('procedure_types_de_piece_justificative_attributes_0_libelle').set 'libelle de piece' + page.find_by_id('add_piece_justificative').click + + page.find_by_id('onglet-infos').click + expect(page).to have_current_path(admin_procedure_path(Procedure.first.id.to_s)) + expect(page.find_by_id('publish-procedure')['disabled']).to eq('disabled') + + page.find_by_id('onglet-accompagnateurs').click + expect(page).to have_current_path(admin_procedure_accompagnateurs_path(Procedure.first.id.to_s)) + page.find_by_id('gestionnaire_email').set 'gestionnaire@apientreprise.fr' + page.find_by_id('add-gestionnaire-email').click + page.first('.gestionnaire-affectation').click + + page.find_by_id('onglet-infos').click + expect(page).to have_selector('#publish-procedure', visible: true) + page.find_by_id('publish-procedure').click + + expect(page.find_by_id('procedure_path')['value']).to eq('libelle_de_la_procedure') + page.find_by_id('publish').click + expect(page).to have_selector('.procedure-lien') + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index d80386c74..a5bb73528 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -34,11 +34,12 @@ require 'factory_girl' require 'capybara/poltergeist' Capybara.javascript_driver = :poltergeist +Capybara.ignore_hidden_elements = false Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, js_errors: true, port: 44_678 + ENV['TEST_ENV_NUMBER'].to_i, phantomjs_options: ['--proxy-type=none'], timeout: 180) end -# ActiveSupport::Deprecation.silenced = true +#ActiveSupport::Deprecation.silenced = true Capybara.default_max_wait_time = 1 From bc4e3860be49db90cf296106e1fe3bc27c923239 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Dec 2016 18:41:33 +0100 Subject: [PATCH 147/182] Fix all tests --- .../backoffice/dossiers_controller.rb | 23 ++- app/controllers/root_controller.rb | 24 ++- app/views/dossiers/_dossier_show.html.haml | 4 +- .../dossiers/_tab_objects_dossier.html.haml | 46 ----- ...ckoffice_dossierscontroller_show.html.haml | 2 +- ...ers_recapitulatifcontroller_show.html.haml | 4 +- app/views/root/landing.html.haml | 1 + .../_commentaires_flux.html.haml | 1 - .../backoffice/dossiers_controller_spec.rb | 20 +++ spec/controllers/root_controller_spec.rb | 23 ++- .../backoffice/flux_de_commentaires_spec.rb | 6 +- ..._page_pref_list_dossier_backoffice_spec.rb | 17 +- ...st_dossier_by_procedure_backoffice_spec.rb | 2 +- .../backoffice/navigate_to_dossier_spec.rb | 24 ++- spec/features/users/complete_demande_spec.rb | 5 +- .../users/flux_de_commentaires_spec.rb | 6 +- .../dossiers/show.html.html_spec.rb | 115 +----------- ...backoffice_dossierscontroller_show_spec.rb | 170 ++++++++++++++++++ ...nel_users_dossierscontroller_index_spec.rb | 65 +++++++ ...users_recapitulatifcontroller_show_spec.rb | 123 +++++++++++++ .../users/dossiers/index_html.haml_spec.rb | 2 +- .../recapitulatif/_commentaires_flux_spec.rb | 54 ++++-- .../recapitulatif/show.html.haml_spec.rb | 116 ++++-------- 23 files changed, 562 insertions(+), 291 deletions(-) delete mode 100644 app/views/dossiers/_tab_objects_dossier.html.haml create mode 100644 spec/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show_spec.rb create mode 100644 spec/views/layouts/left_panels/_left_panel_users_dossierscontroller_index_spec.rb create mode 100644 spec/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show_spec.rb diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index cd99872ed..3d5113750 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -2,8 +2,17 @@ class Backoffice::DossiersController < Backoffice::DossiersListController respond_to :html, :xlsx, :ods, :csv def index - super - procedure = current_gestionnaire.procedure_filter || dossiers_list_facade.gestionnaire_procedures_name_and_id_list.first[:id] + procedure = current_gestionnaire.procedure_filter + + 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 @@ -27,8 +36,8 @@ class Backoffice::DossiersController < Backoffice::DossiersListController dossiers = dossiers_list_facade(param_liste).dossiers_to_display respond_to do |format| format.xlsx { render xlsx: dossiers } - format.ods { render ods: dossiers } - format.csv { render csv: dossiers } + format.ods { render ods: dossiers } + format.csv { render csv: dossiers } end end end @@ -43,9 +52,9 @@ class Backoffice::DossiersController < Backoffice::DossiersListController # full text search unless @dossiers.any? @dossiers = Search.new( - gestionnaire: current_gestionnaire, - query: @search_terms, - page: params[:page] + gestionnaire: current_gestionnaire, + query: @search_terms, + page: params[:page] ).results end diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb index 71d81ee9d..fccfc2f2d 100644 --- a/app/controllers/root_controller.rb +++ b/app/controllers/root_controller.rb @@ -7,21 +7,29 @@ class RootController < ApplicationController end if gestionnaire_signed_in? - redirect_to backoffice_dossiers_procedure_path(id: current_gestionnaire.procedure_filter) + 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? - redirect_to users_dossiers_path + return redirect_to users_dossiers_path elsif administrateur_signed_in? - redirect_to admin_procedures_path + return redirect_to admin_procedures_path elsif administration_signed_in? - redirect_to administrations_path + return redirect_to administrations_path - else - # @latest_release = Github::Releases.latest - @latest_release = nil - render 'landing' end + + # @latest_release = Github::Releases.latest + @latest_release = nil + render 'landing' end end diff --git a/app/views/dossiers/_dossier_show.html.haml b/app/views/dossiers/_dossier_show.html.haml index ce8334628..5ba0d0ee9 100644 --- a/app/views/dossiers/_dossier_show.html.haml +++ b/app/views/dossiers/_dossier_show.html.haml @@ -62,7 +62,7 @@ - unless @facade.entreprise.nil? .default_data_block - %div.row.show-block#infos + %div.row.show-block#infos_entreprise %div.header %div.col-lg-12.col-md-12.title %div.carret-right @@ -72,7 +72,7 @@ = render partial: '/dossiers/infos_entreprise' .default_data_block - %div.row.show-block#dossier + %div.row.show-block#infos_dossier %div.header %div.col-lg-10.col-md-10.title %div.carret-right diff --git a/app/views/dossiers/_tab_objects_dossier.html.haml b/app/views/dossiers/_tab_objects_dossier.html.haml deleted file mode 100644 index 595d668d9..000000000 --- a/app/views/dossiers/_tab_objects_dossier.html.haml +++ /dev/null @@ -1,46 +0,0 @@ -%ul{class: "nav nav-tabs", role: "tablist"} - %li{role: "presentation", class: "active"} - %a{href: "#commentaires", 'aria-controls' => "commentaires", role: "tab", 'data-toggle' => "tab"} - Commentaires - %li{role: "presentation"} - %a{href: "#commentaires_files", 'aria-controls' => "commentaires_files", role: "tab", 'data-toggle' => "tab"} - Fichiers - - - if gestionnaire_signed_in? || @facade.dossier.owner?(current_user.email) - %li{role: "presentation"} - %a{href: "#invites", 'aria-controls' => "invites", role: "tab", 'data-toggle' => "tab"} - Invités - - - if gestionnaire_signed_in? && (!request.env['PATH_INFO'].include?('users/dossiers') ) - %li{role: "presentation"} - %a{href: "#followers", 'aria-controls' => "followers", role: "tab", 'data-toggle' => "tab"} - Abonnés - %li{role: "presentation"} - %a{href: "#champs_private", 'aria-controls' => "champs_private", role: "tab", 'data-toggle' => "tab"} - Champs privés - -%div{class: "tab-content"} - %div{role: "tabpanel", class: "tab-pane fade in active", id:"commentaires"} - %h3 Flux de commentaires - %br - = render partial: '/users/recapitulatif/commentaires_flux' - %div{role: "tabpanel", class: "tab-pane fade", id:"commentaires_files"} - = render partial: '/dossiers/commentaires_files' - - - if gestionnaire_signed_in? || @facade.dossier.owner?(current_user.email) - %div{role: "tabpanel", class: "tab-pane fade", id:"invites"} - = render partial: '/dossiers/invites' - - if gestionnaire_signed_in? && !request.env['PATH_INFO'].include?('users/dossiers') - %div{role: "tabpanel", class: "tab-pane fade", id:"followers"} - = render partial: 'followers' - %div{role: "tabpanel", class: "tab-pane fade", id:"champs_private"} - %h3 Champs privés - - if @champs.nil? || @champs.empty? - %br - %h4.text-primary - Pas de champ privé pour ce dossier - - else - = form_for @facade.dossier, url: {controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id}, remote: true do - = render partial: '/users/description/champs' - %br - = submit_tag :Enregistrer, {class: 'btn btn-success', style: 'float: right'} diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml index e2d3ec23b..a47e64175 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml @@ -1,7 +1,7 @@ %div#first-block %div.infos %div.projet-name #{@facade.dossier.nom_projet.capitalize rescue nil} - %div= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s + #dossier_id= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s %div#action-block - if gestionnaire_signed_in? diff --git a/app/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml index 077929683..bc0ebdb0f 100644 --- a/app/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml @@ -7,8 +7,8 @@ %div#action-block - if @facade.dossier.validated? - = form_tag(url_for({controller: :recapitulatif, action: :submit, dossier_id: @facade.dossier.id}), method: 'POST') do - %button.action= 'Procéder au dépôt définitif' + = form_tag(url_for({controller: 'users/recapitulatif', action: :submit, dossier_id: @facade.dossier.id}), method: 'POST') do + %button#validate_button.action= 'Procéder au dépôt définitif' %div#menu-block diff --git a/app/views/root/landing.html.haml b/app/views/root/landing.html.haml index 8e48ca0ea..dc80dc448 100644 --- a/app/views/root/landing.html.haml +++ b/app/views/root/landing.html.haml @@ -3,6 +3,7 @@ - notification = 10 - bugs = 20 - realise = total - interface - notification - bugs + #landing.max-size #title{style:'padding-bottom: 2%; padding-top: 2%'} %h1.center diff --git a/app/views/users/recapitulatif/_commentaires_flux.html.haml b/app/views/users/recapitulatif/_commentaires_flux.html.haml index 69d990f36..843940b25 100644 --- a/app/views/users/recapitulatif/_commentaires_flux.html.haml +++ b/app/views/users/recapitulatif/_commentaires_flux.html.haml @@ -1,5 +1,4 @@ .content{id: ('commentaires_flux' + (@facade.champ_id.nil? ? '' : "_#{@facade.champ_id}")),style:'width:100%;'} - -@facade.commentaires.each do |com| %span.text-info#email_contact{style: 'font-weight:bold'} =com.email diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 6f349df26..c76c6a9fd 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -17,6 +17,26 @@ describe Backoffice::DossiersController, type: :controller do create :assign_to, procedure: procedure, gestionnaire: gestionnaire end + describe 'GET #index' do + subject { get :index } + + before do + sign_in gestionnaire + end + + context 'when gestionnaire is assign to a procedure' do + it { is_expected.to redirect_to backoffice_dossiers_procedure_path(id: procedure.id) } + end + + context 'when gestionnaire is not assign to a procedure' do + before do + AssignTo.where(procedure: procedure, gestionnaire: gestionnaire).delete_all + end + + it { is_expected.to redirect_to root_path } + end + end + describe 'GET #show' do context 'gestionnaire is connected' do before do diff --git a/spec/controllers/root_controller_spec.rb b/spec/controllers/root_controller_spec.rb index a96f202cf..c22f3e9e4 100644 --- a/spec/controllers/root_controller_spec.rb +++ b/spec/controllers/root_controller_spec.rb @@ -1,7 +1,6 @@ require 'spec_helper' describe RootController, type: :controller do - subject { get :index } context 'when User is connected' do @@ -13,11 +12,29 @@ describe RootController, type: :controller do end context 'when Gestionnaire is connected' do + let(:gestionnaire) { create(:gestionnaire) } + before do - sign_in create(:gestionnaire) + sign_in gestionnaire end - it { expect(subject).to redirect_to(backoffice_dossiers_path) } + context 'when gestionnaire is affect to a procedure' do + before do + create :assign_to, procedure: (create :procedure), gestionnaire: gestionnaire + end + + it { expect(subject).to redirect_to(backoffice_dossiers_procedure_path(id: Procedure.all.first.id)) } + end + + context 'when gestionnaire is not affect to a procedure' do + render_views + + before do + subject + end + + it { expect(response.body).to have_css('#landing') } + end end context 'when Administrateur is connected' do diff --git a/spec/features/backoffice/flux_de_commentaires_spec.rb b/spec/features/backoffice/flux_de_commentaires_spec.rb index 5550feb62..833225cbb 100644 --- a/spec/features/backoffice/flux_de_commentaires_spec.rb +++ b/spec/features/backoffice/flux_de_commentaires_spec.rb @@ -19,11 +19,12 @@ feature 'backoffice: flux de commentaires' do end scenario "seuls les commentaires généraux sont affichés" do - comments = find("#commentaires_flux") - expect(comments).to have_selector(".description", count: 1) + comments = find(".commentaires") + expect(comments).to have_selector(".content", count: 1) end scenario "affichage des commentaires du champs", js: true do + pending 'later: open simplif' find("#liste_champs th", text: champ1.libelle).click_link("COM") expect(page).to have_css("#modalCommentairesDossierParChamp.in") @@ -32,6 +33,7 @@ feature 'backoffice: flux de commentaires' do end scenario "crée un commentaire sur un champ", js: true do + pending 'later: open simplif' # ouverture modale find("#liste_champs th", text: champ1.libelle).click_link("COM") diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb index 654f8a544..938e2f5da 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb @@ -50,6 +50,11 @@ feature 'usage of pref list dossier lateral panel', js: true do expect(page).to have_css('#delete_pref_list_entreprise_siren') end + scenario 'dossier is brought up to date' do + wait_for_ajax + expect(page).to have_selector("a.sortable[data-attr='entreprise.siren']", visible: false) + end + context 'when on click on delete attribut button' do before do page.click_on 'delete_pref_list_entreprise_siren' @@ -64,8 +69,18 @@ feature 'usage of pref list dossier lateral panel', js: true do wait_for_ajax expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']") end + + context 'when on click on close pref list button' do + before do + page.click_on 'pref_list_dossier_close_action' + end + + scenario 'lateral panel is masked' do + expect(page).to have_css('#pref_list_menu', visible: false) + end + end end end end end -end +end \ No newline at end of file diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb index d9b97d581..a86eb9612 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb @@ -67,7 +67,7 @@ feature 'usage of pref list dossier lateral panel by procedure', js: true do scenario 'dossier is brought up to date' do wait_for_ajax - expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']") + expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']", visible: false) end context 'when on click on close pref list button' do diff --git a/spec/features/backoffice/navigate_to_dossier_spec.rb b/spec/features/backoffice/navigate_to_dossier_spec.rb index a58c68a69..78a518b8c 100644 --- a/spec/features/backoffice/navigate_to_dossier_spec.rb +++ b/spec/features/backoffice/navigate_to_dossier_spec.rb @@ -4,16 +4,17 @@ feature 'on backoffice page' do let(:administrateur) { create(:administrateur) } let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } let(:procedure) { create(:procedure, administrateur: administrateur) } + let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') } before do create :assign_to, gestionnaire: gestionnaire, procedure: procedure + create :follow, gestionnaire: gestionnaire, dossier: dossier visit backoffice_path end context 'when gestionnaire is logged in' do - before do page.find_by_id(:gestionnaire_email).set gestionnaire.email page.find_by_id(:gestionnaire_password).set gestionnaire.password @@ -21,9 +22,7 @@ feature 'on backoffice page' do page.click_on 'Se connecter' end context 'when he click on first dossier', js: true do - before do - page.find("#all_dossiers").click page.find("#tr_dossier_#{dossier.id}").click end @@ -31,5 +30,22 @@ feature 'on backoffice page' do expect(page).to have_css('#backoffice_dossier_show') end end + + context 'when gestionnaire have enterprise and individual dossier in his inbox', js: true do + let!(:procedure_individual) { create :procedure, libelle: 'procedure individual', administrateur: administrateur, for_individual: true } + let!(:dossier_individual) { create :dossier, procedure: procedure_individual, state: 'updated' } + + before do + create :assign_to, gestionnaire: gestionnaire, procedure: procedure_individual + create :follow, gestionnaire: gestionnaire, dossier: dossier_individual + + visit backoffice_dossiers_procedure_path(id: procedure_individual.id) + page.find("#tr_dossier_#{dossier_individual.id}").click + end + + scenario 'it redirect to dossier page' do + expect(page).to have_css('#backoffice_dossier_show') + end + end end -end +end \ No newline at end of file diff --git a/spec/features/users/complete_demande_spec.rb b/spec/features/users/complete_demande_spec.rb index 6c55fd215..55f2f3d4d 100644 --- a/spec/features/users/complete_demande_spec.rb +++ b/spec/features/users/complete_demande_spec.rb @@ -71,6 +71,9 @@ feature 'user path for dossier creation' do page.find_by_id("champs_#{Dossier.last.champs.first.id}").set 'Mon super projet' page.click_on 'Soumettre mon dossier' end + scenario 'user is on recap page' do + expect(page).to have_css('#users_recapitulatif_dossier_show') + end end end end @@ -87,4 +90,4 @@ feature 'user path for dossier creation' do expect(page).to have_content('La procédure n\'existe pas') end end -end +end \ No newline at end of file diff --git a/spec/features/users/flux_de_commentaires_spec.rb b/spec/features/users/flux_de_commentaires_spec.rb index 7a6e7fe61..0c087f429 100644 --- a/spec/features/users/flux_de_commentaires_spec.rb +++ b/spec/features/users/flux_de_commentaires_spec.rb @@ -19,11 +19,12 @@ feature 'users: flux de commentaires' do end scenario "seuls les commentaires généraux sont affichés" do - comments = find("#commentaires_flux") - expect(comments).to have_selector(".description", count: 1) + comments = find(".commentaires") + expect(comments).to have_selector(".content", count: 1) end scenario "affichage des commentaires du champs", js: true do + pending 'later: open simplif' th = find("#liste_champs th", text: champ1.libelle) th.click_link("COM") expect(page).to have_css("#modalCommentairesDossierParChamp.in") @@ -33,6 +34,7 @@ feature 'users: flux de commentaires' do end scenario "crée un commentaire sur un champ", js: true do + pending 'later: open simplif' # ouverture modale find("#liste_champs th", text: champ1.libelle).click_link("COM") diff --git a/spec/views/backoffice/dossiers/show.html.html_spec.rb b/spec/views/backoffice/dossiers/show.html.html_spec.rb index 87c771913..4003a65ef 100644 --- a/spec/views/backoffice/dossiers/show.html.html_spec.rb +++ b/spec/views/backoffice/dossiers/show.html.html_spec.rb @@ -23,8 +23,12 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do expect(rendered).not_to have_css('#UploadPJmodal') end - it 'dossier number is present' do - expect(rendered).to have_content(dossier_id) + it 'enterprise informations are present' do + expect(rendered).to have_selector('#infos_entreprise') + end + + it 'dossier informations are present' do + expect(rendered).to have_selector('#infos_dossier') end context 'edit link are present' do @@ -41,111 +45,4 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do end end end - - context 'dossier state changements' do - - context 'when dossier have state validated' do - let(:state) { 'validated' } - - before do - render - end - - it 'button Déclarer complet is not present' do - expect(rendered).not_to have_content('Déclarer complet') - end - end - - context 'when dossier have state closed' do - let(:state) { 'closed' } - - before do - render - end - - it 'button Accepter le dossier is not present' do - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') - end - end - - context 'when dossier have state without_continuation' do - let(:state) { 'without_continuation' } - - before do - render - end - - it 'button Déclarer complet is not present' do - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') - end - end - - context 'when dossier have state refused' do - let(:state) { 'refused' } - - before do - render - end - - it 'button Déclarer complet is not present' do - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') - expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') - end - end - end - - #TODO réactiver - # context 'la liste des pièces justificatives est présente' do - # context 'Attestation MSA' do - # let(:id_piece_justificative) { 93 } - # - # it 'la ligne de la pièce justificative est présente' do - # expect(rendered).to have_selector("tr[id=piece_justificative_#{id_piece_justificative}]") - # end - # - # it 'le bouton "Récupérer" est présent' do - # expect(rendered.find("tr[id=piece_justificative_#{id_piece_justificative}]")).to have_selector("a[href='']") - # expect(rendered.find("tr[id=piece_justificative_#{id_piece_justificative}]")).to have_content('Récupérer') - # end - # end - # - # context 'Attestation RDI' do - # let(:id_piece_justificative) { 103 } - # - # it 'la ligne de la pièce justificative est présente' do - # expect(rendered).to have_selector("tr[id=piece_justificative_#{id_piece_justificative}]") - # end - # - # it 'le libelle "Pièce manquante" est présent' do - # expect(rendered.find("tr[id=piece_justificative_#{id_piece_justificative}]")).to have_content('Pièce non fournie') - # end - # end - # - # context 'Devis' do - # let(:id_piece_justificative) { 388 } - # let(:content) { File.open('./spec/support/files/piece_justificative_388.pdf') } - # - # before do - # piece_justificative = dossier.pieces_justificatives.where(type_de_piece_justificative_id: 388).first - # piece_justificative.content = content - # piece_justificative.save! - # visit "/admin/dossiers/#{dossier_id}" - # end - # - # it 'la ligne de la pièce justificative est présente' do - # expect(rendered).to have_selector("tr[id=piece_justificative_#{id_piece_justificative}]") - # end - # - # it 'le libelle "Consulter" est présent' do - # expect(rendered.find("tr[id=piece_justificative_#{id_piece_justificative}] a")[:href]).to have_content('piece_justificative_388.pdf') - # expect(rendered.find("tr[id=piece_justificative_#{id_piece_justificative}]")).to have_content('Consulter') - # end - # end - # end - # end diff --git a/spec/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show_spec.rb b/spec/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show_spec.rb new file mode 100644 index 000000000..cf3c4b45b --- /dev/null +++ b/spec/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show_spec.rb @@ -0,0 +1,170 @@ +require 'spec_helper' + +describe 'layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.html.haml', type: :view do + + let!(:dossier) { create(:dossier, :with_entreprise, state: state) } + let(:state) { 'draft' } + let(:gestionnaire) { create(:gestionnaire) } + + before do + sign_in gestionnaire + assign(:facade, (DossierFacades.new dossier.id, gestionnaire.email)) + + @request.env['PATH_INFO'] = 'backoffice/user' + + render + end + + subject { rendered } + + it 'dossier number is present' do + expect(rendered).to have_selector('#dossier_id') + expect(rendered).to have_content(dossier.id) + end + + context 'button dossier state changements' do + context 'when dossier have state initiated' do + let(:state) { 'initiated' } + + before do + render + end + + it { expect(rendered).to have_content('Nouveau') } + + it 'button Déclarer complet is present' do + expect(rendered).to have_css('.action') + expect(rendered).to have_content('DÉCLARER COMPLET') + end + end + + context 'when dossier have state replied' do + let(:state) { 'replied' } + + before do + render + end + + it { expect(rendered).to have_content('Répondu') } + + it 'button Déclarer complet is present' do + expect(rendered).to have_css('.action') + expect(rendered).to have_content('DÉCLARER COMPLET') + end + end + + context 'when dossier have state update' do + let(:state) { 'updated' } + + before do + render + end + + it { expect(rendered).to have_content('Mis à jour') } + + it 'button Déclarer complet is present' do + expect(rendered).to have_css('.action') + expect(rendered).to have_content('DÉCLARER COMPLET') + end + end + + context 'when dossier have state validated' do + let(:state) { 'validated' } + + before do + render + end + + it { expect(rendered).to have_content('Figé') } + + it 'button Déclarer complet is not present' do + expect(rendered).not_to have_css('.action') + expect(rendered).not_to have_content('Déclarer complet') + end + end + + context 'when dossier have state submitted' do + let(:state) { 'submitted' } + + before do + render + end + + it { expect(rendered).to have_content('Déposé') } + + it 'button Accuser réception is present' do + expect(rendered).to have_css('.action') + expect(rendered).to have_content('ACCUSER RÉCEPTION') + end + + it 'button Déclarer complet is not present' do + expect(rendered).not_to have_content('Accepter le dossier') + end + end + + context 'when dossier have state received' do + let(:state) { 'received' } + + before do + render + end + + it { expect(rendered).to have_content('Reçu') } + + it 'button accepter / refuser / classer sans suite are present' do + expect(rendered).to have_css('form[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).to have_css('form[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).to have_css('form[data-toggle="tooltip"][title="Refuser"]') + end + end + + context 'when dossier have state closed' do + let(:state) { 'closed' } + + before do + render + end + + it { expect(rendered).to have_content('Accepté') } + + it 'button Accepter le dossier is not present' do + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Refuser"]') + end + end + + context 'when dossier have state without_continuation' do + let(:state) { 'without_continuation' } + + before do + render + end + + it { expect(rendered).to have_content('Sans suite') } + + it 'button Déclarer complet is not present' do + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Refuser"]') + end + end + + context 'when dossier have state refused' do + let(:state) { 'refused' } + + before do + render + end + + it { expect(rendered).to have_content('Refusé') } + + it 'button Déclarer complet is not present' do + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('form[data-toggle="tooltip"][title="Refuser"]') + end + end + end + +end \ No newline at end of file diff --git a/spec/views/layouts/left_panels/_left_panel_users_dossierscontroller_index_spec.rb b/spec/views/layouts/left_panels/_left_panel_users_dossierscontroller_index_spec.rb new file mode 100644 index 000000000..51958638c --- /dev/null +++ b/spec/views/layouts/left_panels/_left_panel_users_dossierscontroller_index_spec.rb @@ -0,0 +1,65 @@ +require 'spec_helper' + +describe 'layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml', type: :view do + + shared_examples 'active_tab' do + let(:user) { create :user } + + before do + sign_in user + + assign :dossiers_list_facade, (DossiersListFacades.new user, param_list) + + render + end + + subject { rendered } + + let(:active_class) { 'div.procedure_list_element.active '+active_klass } + let(:param_list) { liste } + + it { is_expected.to have_selector(active_class) } + end + + describe 'list brouillon' do + let(:active_klass) { '.progress-bar-default' } + let(:liste) { 'brouillon' } + + it_behaves_like 'active_tab' + end + + describe 'list en construction' do + let(:active_klass) { '.progress-bar-danger' } + let(:liste) { 'a_traiter' } + + it_behaves_like 'active_tab' + end + + describe 'list a depose' do + let(:active_klass) { '.progress-bar-purple' } + let(:liste) { 'valides' } + + it_behaves_like 'active_tab' + end + + describe 'list en examen' do + let(:active_klass) { '.progress-bar-default' } + let(:liste) { 'en_instruction' } + + it_behaves_like 'active_tab' + end + + describe 'list cloture' do + let(:active_klass) { '.progress-bar-success' } + let(:liste) { 'termine' } + + it_behaves_like 'active_tab' + end + + describe 'list invite' do + let(:active_klass) { '.progress-bar-warning' } + let(:liste) { 'invite' } + + it_behaves_like 'active_tab' + end +end \ No newline at end of file diff --git a/spec/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show_spec.rb b/spec/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show_spec.rb new file mode 100644 index 000000000..3271d23ce --- /dev/null +++ b/spec/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show_spec.rb @@ -0,0 +1,123 @@ +require 'spec_helper' + +describe 'layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.html.haml', type: :view do + let(:dossier) { create(:dossier, :with_entreprise, state: state, procedure: create(:procedure, :with_api_carto, :with_two_type_de_piece_justificative, for_individual: true, individual_with_siret: true)) } + let(:dossier_id) { dossier.id } + let(:state) { 'draft' } + + before do + sign_in dossier.user + assign(:facade, DossierFacades.new(dossier.id, dossier.user.email)) + end + + context 'buttons to change dossier state' do + context 'when dossier state is initiated' do + let(:state) { 'initiated' } + before do + render + end + + it { expect(rendered).to have_content('Nouveau') } + end + + context 'when dossier state is replied' do + let(:state) { 'replied' } + + before do + render + end + + it { expect(rendered).to have_content('Répondu') } + end + + context 'when dossier state is updated' do + let(:state) { 'updated' } + + before do + render + end + + it { expect(rendered).to have_content('Mis à jour') } + end + + context 'when dossier state is validated' do + let(:state) { 'validated' } + + before do + render + end + + it 'button Procéder au dépôt définitif est present' do + expect(rendered).to have_css('#validate_button') + expect(rendered).to have_content('Procéder au dépôt définitif') + end + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + + it 'button Modifier les document n\'est plus present' do + expect(rendered).not_to have_content('Modifier les documents') + end + end + + context 'when dossier state is submitted' do + let(:state) { 'submitted' } + + before do + render + end + + it { expect(rendered).to have_content('Déposé') } + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + end + + context 'when dossier state is closed' do + let(:state) { 'closed' } + + before do + render + end + it { expect(rendered).to have_content('Accepté') } + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + end + + context 'when dossier state is refused' do + let(:state) { 'refused' } + + before do + render + end + it { expect(rendered).to have_content('Refusé') } + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + end + + context 'when dossier state is without_continuation' do + let(:state) { 'without_continuation' } + + before do + render + end + it { expect(rendered).to have_content('Sans suite') } + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + end + end + +end \ No newline at end of file diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index f7a4173b4..72d7381a0 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -116,4 +116,4 @@ describe 'users/dossiers/index.html.haml', type: :view do let(:decorate_dossier_at_check) { decorate_dossier_invite } end end -end +end \ No newline at end of file diff --git a/spec/views/users/recapitulatif/_commentaires_flux_spec.rb b/spec/views/users/recapitulatif/_commentaires_flux_spec.rb index 26bd2eb05..0770f40b2 100644 --- a/spec/views/users/recapitulatif/_commentaires_flux_spec.rb +++ b/spec/views/users/recapitulatif/_commentaires_flux_spec.rb @@ -16,23 +16,41 @@ describe 'users/recapitulatif/_commentaires_flux.html.haml', type: :view, vcr: { render end - context 'Affichage du flux de commentaire' do - it 'l\'email du contact est présent' do - expect(rendered).to have_selector('span[id=email_contact]') - end + pending 'à supprimer quand les tests seront vert' - it 'la date du commentaire est présent' do - expect(rendered).to have_selector('span[id=created_at]') - end - - it 'le corps du commentaire est présent' do - expect(rendered).to have_selector('div[class=description][id=body]') - end - - context 'when commentaire as PJ' do - it 'commentaire present the link' do - expect(rendered).to have_css('#piece_justificative') - end - end - end + # context 'Affichage du flux de commentaire' do + # it 'l\'email du contact est présent' do + # expect(rendered).to have_selector('span[id=email_contact]') + # end + # + # it 'la date du commentaire est présent' do + # expect(rendered).to have_selector('span[id=created_at]') + # end + # + # it 'le corps du commentaire est présent' do + # expect(rendered).to have_selector('div[class=description][id=body]') + # end + # + # context 'when commentaire as PJ' do + # it 'commentaire present the link' do + # expect(rendered).to have_css('#piece_justificative') + # end + # end + # end + # + # context 'Affichage du formulaire de commentaire' do + # it 'Le formulaire envoie vers /dossiers/:dossier_id/commentaire en #POST' do + # expect(rendered).to have_selector("form[action='/users/dossiers/#{dossier_id}/commentaire'][method=post]") + # end + # + # it 'Champs de texte' do + # expect(rendered).to have_selector('textarea[id=texte_commentaire][name=texte_commentaire]') + # end + # + # describe 'File input' do + # it 'have file_input tag' do + # expect(rendered).to have_css('#piece_justificative_content') + # end + # end + # end end diff --git a/spec/views/users/recapitulatif/show.html.haml_spec.rb b/spec/views/users/recapitulatif/show.html.haml_spec.rb index a98359bab..143f626c2 100644 --- a/spec/views/users/recapitulatif/show.html.haml_spec.rb +++ b/spec/views/users/recapitulatif/show.html.haml_spec.rb @@ -17,10 +17,16 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end it 'la section infos dossier est présente' do - expect(rendered).to have_selector('#dossier') + expect(rendered).to have_selector('#infos_dossier') + end + + it 'le flux de commentaire est présent' do + expect(rendered).to have_selector('#messages') end it 'le numéro de dossier est présent' do + pending 'move to test layout' + expect(rendered).to have_selector('#dossier_id') expect(rendered).to have_content(dossier_id) end @@ -35,102 +41,43 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end end - context 'lien mise à jour pj' do - it 'le lien vers la mise à jour des pj est présent' do + context 'lien carte' do + it 'le lien vers carte est présent' do expect(rendered).to have_css('#maj_pj') end end - context 'lien siret' do + context 'lien carte' do it 'le lien vers le renseignement un SIRET est présent' do expect(rendered).to have_css('#add_siret') end end + + context 'lien carte' do + it 'le lien vers carte est présent' do + pending 'map: later' + expect(rendered).to have_css('#maj_carte') + end + + it 'le lien vers description est correct' do + pending 'map: later' + expect(rendered).to have_selector("a[id=maj_carte][href='/users/dossiers/#{dossier_id}/carte']") + end + end end end - context 'buttons to change dossier state' do - context 'when dossier state is initiated' do - let(:state) { 'initiated' } - before do - render - end - - it 'button Modifier les document est present' do - expect(rendered).to have_content('Modifier les documents') - expect(rendered).to have_css('#UploadPJmodal') - end - + context 'when dossier state is initiated' do + let(:state) { 'initiated' } + before do + render end - context 'when dossier state is validated' do - let(:state) { 'validated' } - - before do - render - end - - it 'button Editer mon dossier n\'est plus present' do - expect(rendered).not_to have_css('#maj_infos') - expect(rendered).not_to have_content('Modifier mon dossier') - end - - it 'button Modifier les document n\'est plus present' do - expect(rendered).not_to have_content('Modifier les documents') - end + it 'button Modifier les document est present' do + expect(rendered).to have_content('Modifier les documents') + expect(rendered).to have_css('#UploadPJmodal') end - context 'when dossier state is submitted' do - let(:state) { 'submitted' } - - before do - render - end - - it 'button Editer mon dossier n\'est plus present' do - expect(rendered).not_to have_css('#maj_infos') - expect(rendered).not_to have_content('Modifier mon dossier') - end - end - - context 'when dossier state is closed' do - let(:state) { 'closed' } - - before do - render - end - - it 'button Editer mon dossier n\'est plus present' do - expect(rendered).not_to have_css('#maj_infos') - expect(rendered).not_to have_content('Modifier mon dossier') - end - end - - context 'when dossier state is refused' do - let(:state) { 'refused' } - - before do - render - end - - it 'button Editer mon dossier n\'est plus present' do - expect(rendered).not_to have_css('#maj_infos') - expect(rendered).not_to have_content('Modifier mon dossier') - end - end - - context 'when dossier state is without_continuation' do - let(:state) { 'without_continuation' } - - before do - render - end - - it 'button Editer mon dossier n\'est plus present' do - expect(rendered).not_to have_css('#maj_infos') - expect(rendered).not_to have_content('Modifier mon dossier') - end - end end context 'when invite is logged' do @@ -191,6 +138,11 @@ describe 'users/recapitulatif/show.html.haml', type: :view do expect(rendered).to have_css('#maj_infos') end + it 'map link is present' do + pending 'map: later' + expect(rendered).to have_css('#maj_carte') + end + it 'PJ link is present' do expect(rendered).to have_css('#maj_pj') end From c5917db28c2a7d7200deb05d392fafbdabbfb3e1 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Dec 2016 18:53:40 +0100 Subject: [PATCH 148/182] Fix tests again --- .../lateral_page_pref_list_dossier_backoffice_spec.rb | 2 +- spec/features/backoffice/navigate_to_dossier_spec.rb | 4 ++-- spec/views/admin/procedures/show.html.haml_spec.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb index 938e2f5da..8b75df35e 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb @@ -67,7 +67,7 @@ feature 'usage of pref list dossier lateral panel', js: true do scenario 'dossier is brought up to date', js: true do wait_for_ajax - expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']") + expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']", visible: true) end context 'when on click on close pref list button' do diff --git a/spec/features/backoffice/navigate_to_dossier_spec.rb b/spec/features/backoffice/navigate_to_dossier_spec.rb index 78a518b8c..d65e6d99a 100644 --- a/spec/features/backoffice/navigate_to_dossier_spec.rb +++ b/spec/features/backoffice/navigate_to_dossier_spec.rb @@ -23,7 +23,7 @@ feature 'on backoffice page' do end context 'when he click on first dossier', js: true do before do - page.find("#tr_dossier_#{dossier.id}").click + page.find("#tr_dossier_#{dossier.id}", visible: true).click end scenario 'it redirect to dossier page' do @@ -40,7 +40,7 @@ feature 'on backoffice page' do create :follow, gestionnaire: gestionnaire, dossier: dossier_individual visit backoffice_dossiers_procedure_path(id: procedure_individual.id) - page.find("#tr_dossier_#{dossier_individual.id}").click + page.find("#tr_dossier_#{dossier_individual.id}", visible: true).click end scenario 'it redirect to dossier page' do diff --git a/spec/views/admin/procedures/show.html.haml_spec.rb b/spec/views/admin/procedures/show.html.haml_spec.rb index 71fcbfed6..445685f4e 100644 --- a/spec/views/admin/procedures/show.html.haml_spec.rb +++ b/spec/views/admin/procedures/show.html.haml_spec.rb @@ -30,7 +30,7 @@ describe 'admin/procedures/show.html.haml', type: :view do end describe 'publish button is visible' do - it { expect(rendered).to have_css('a#publish') } + it { expect(rendered).to have_css('a#publish-procedure') } it { expect(rendered).not_to have_css('button#archive') } it { expect(rendered).not_to have_css('a#reenable') } end From 0b48586102aad574d231ed26c38f7e9097a16f93 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Dec 2016 19:03:52 +0100 Subject: [PATCH 149/182] Gems update --- Gemfile.lock | 90 +++++++++++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 46 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 367d2b5e0..56665d516 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,7 +10,7 @@ GIT GEM remote: https://rubygems.org/ specs: - CFPropertyList (2.3.3) + CFPropertyList (2.3.4) actioncable (5.0.0.1) actionpack (= 5.0.0.1) nio4r (~> 1.2) @@ -34,11 +34,10 @@ GEM erubis (~> 2.7.0) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - active_model_serializers (0.10.2) + active_model_serializers (0.10.3) actionpack (>= 4.1, < 6) activemodel (>= 4.1, < 6) - jsonapi (~> 0.1.1.beta2) - railties (>= 4.1, < 6) + jsonapi (= 0.1.1.beta2) activejob (5.0.0.1) activesupport (= 5.0.0.1) globalid (>= 0.3.6) @@ -69,7 +68,7 @@ GEM responders ast (2.3.0) attr_required (1.0.1) - autoprefixer-rails (6.5.3) + autoprefixer-rails (6.5.4) execjs axlsx (2.0.1) htmlentities (~> 4.3.1) @@ -90,7 +89,7 @@ GEM browser (2.3.0) builder (3.2.2) byebug (9.0.6) - capybara (2.10.1) + capybara (2.11.0) addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) @@ -103,7 +102,7 @@ GEM json (>= 1.7) mime-types (>= 1.16) mimemagic (>= 0.3.0) - chartkick (2.1.1) + chartkick (2.2.1) childprocess (0.5.9) ffi (~> 1.0, >= 1.0.11) clamav-client (3.1.0) @@ -115,7 +114,7 @@ GEM coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.10.0) + coffee-script-source (1.11.1) concurrent-ruby (1.0.2) crack (0.4.3) safe_yaml (~> 1.0.0) @@ -131,7 +130,7 @@ GEM warden (~> 1.2.3) diff-lcs (1.2.5) docile (1.1.5) - domain_name (0.5.20161021) + domain_name (0.5.20161129) unf (>= 0.0.5, < 1.0.0) draper (3.0.0.pre1) actionpack (~> 5.0) @@ -143,12 +142,12 @@ GEM eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) erubis (2.7.0) - eventmachine (1.2.0.1) + eventmachine (1.2.1) excon (0.54.0) execjs (2.7.0) factory_girl (4.7.0) activesupport (>= 3.0.0) - faraday (0.9.2) + faraday (0.10.0) multipart-post (>= 1.2, < 3) ffi (1.9.14) fission (0.5.0) @@ -190,7 +189,7 @@ GEM fog-atmos (0.1.0) fog-core fog-xml - fog-aws (0.12.0) + fog-aws (1.0.0) fog-core (~> 1.38) fog-json (~> 1.0) fog-xml (~> 0.1) @@ -224,7 +223,7 @@ GEM multi_json (~> 1.10) fog-local (0.3.1) fog-core (~> 1.27) - fog-openstack (0.1.17) + fog-openstack (0.1.18) fog-core (>= 1.40) fog-json (>= 1.0) ipaddress (>= 0.8) @@ -269,7 +268,7 @@ GEM fog-voxel (0.1.0) fog-core fog-xml - fog-vsphere (1.5.1) + fog-vsphere (1.5.2) fog-core rbvmomi (~> 1.9) fog-xenserver (0.2.3) @@ -278,7 +277,7 @@ GEM fog-xml (0.1.2) fog-core nokogiri (~> 1.5, >= 1.5.11) - font-awesome-rails (4.7.0.0) + font-awesome-rails (4.7.0.1) railties (>= 3.2, < 5.1) formatador (0.2.5) globalid (0.3.7) @@ -306,7 +305,7 @@ GEM haml (>= 4.0.6, < 5.0) html2haml (>= 1.0.1) railties (>= 4.0.1) - hashdiff (0.3.0) + hashdiff (0.3.1) hashie (3.4.6) html2haml (2.0.0) erubis (~> 2.7.0) @@ -317,11 +316,11 @@ GEM http-cookie (1.0.3) domain_name (~> 0.5) http_parser.rb (0.6.0) - httpclient (2.8.2.4) + httpclient (2.8.3) i18n (0.7.0) inflecto (0.0.2) ipaddress (0.8.3) - jbuilder (2.6.0) + jbuilder (2.6.1) activesupport (>= 3.0.0, < 5.1) multi_json (~> 1.2) jquery-rails (4.2.1) @@ -329,17 +328,14 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.3) - json-jwt (1.6.5) + json-jwt (1.7.0) activesupport bindata multi_json (>= 1.3) securecompare url_safe_base64 - jsonapi (0.1.1.beta6) - jsonapi-parser (= 0.1.1.beta3) - jsonapi-renderer (= 0.1.1.beta1) - jsonapi-parser (0.1.1.beta3) - jsonapi-renderer (0.1.1.beta1) + jsonapi (0.1.1.beta2) + json (~> 1.8) kaminari (0.17.0) actionpack (>= 3.0.0) activesupport (>= 3.0.0) @@ -350,12 +346,13 @@ GEM leaflet-markercluster-rails (0.7.0) railties (>= 3.1) leaflet-rails (0.7.7) - libv8 (3.16.14.15) - listen (3.0.8) + 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) - logstasher (1.0.1) + logstasher (1.1.0) activerecord (>= 4.0) activesupport (>= 4.0) logstash-event (~> 1.2.0) @@ -376,7 +373,7 @@ GEM mime-types-data (3.2016.0521) mimemagic (0.3.2) mini_portile2 (2.1.0) - minitest (5.9.1) + minitest (5.10.1) multi_json (1.12.1) multipart-post (2.0.0) nenv (0.3.0) @@ -384,7 +381,7 @@ GEM nio4r (1.2.1) nokogiri (1.6.8.1) mini_portile2 (~> 2.1.0) - notiffany (0.1.0) + notiffany (0.1.1) nenv (~> 0.1) shellany (~> 0.0) open4 (1.3.4) @@ -399,16 +396,16 @@ GEM validate_email validate_url webfinger (>= 1.0.1) - openstack (3.3.3) + openstack (3.3.7) json orm_adapter (0.5.0) - parallel (1.9.0) + parallel (1.10.0) parallel_tests (2.10.0) parallel - parser (2.3.1.4) + parser (2.3.3.1) ast (~> 2.2) pg (0.19.0) - poltergeist (1.11.0) + poltergeist (1.12.0) capybara (~> 2.1) cliver (~> 0.3.1) websocket-driver (>= 0.2.0) @@ -417,7 +414,7 @@ GEM coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) - pry-byebug (3.4.0) + pry-byebug (3.4.2) byebug (~> 9.0) pry (~> 0.10) public_suffix (2.0.4) @@ -460,8 +457,8 @@ GEM thor (>= 0.18.1, < 2.0) rainbow (2.1.0) raindrops (0.17.0) - rake (11.3.0) - rb-fsevent (0.9.7) + rake (12.0.0) + rb-fsevent (0.9.8) rb-inotify (0.9.7) ffi (>= 0.5.0) rbvmomi (1.9.4) @@ -502,7 +499,7 @@ GEM rspec-mocks (~> 3.5.0) rspec-support (~> 3.5.0) rspec-support (3.5.0) - rubocop (0.45.0) + rubocop (0.46.0) parser (>= 2.3.1.1, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) @@ -513,6 +510,7 @@ GEM rubocop-rspec (1.8.0) rubocop (>= 0.42.0) ruby-progressbar (1.8.1) + ruby_dep (1.5.0) ruby_parser (3.8.3) sexp_processor (~> 4.1) rubyzip (1.0.0) @@ -531,12 +529,12 @@ GEM json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) securecompare (1.0.0) - selenium-webdriver (3.0.1) + selenium-webdriver (3.0.3) childprocess (~> 0.5) rubyzip (~> 1.0) websocket (~> 1.0) - sentry-raven (2.1.2) - faraday (>= 0.7.6, < 0.10.x) + sentry-raven (2.2.0) + faraday (>= 0.7.6, < 1.0) sexp_processor (4.7.0) shellany (0.0.1) shoulda-matchers (3.1.1) @@ -552,9 +550,9 @@ GEM jquery-rails kaminari (~> 0.17) rails (>= 3.2) - spreadsheet_architect (1.4.7) + spreadsheet_architect (1.4.8) axlsx (>= 2.0) - rodf (>= 0.3.6) + rodf (= 0.3.7) spring (2.0.0) activesupport (>= 4.2) spring-commands-rspec (1.0.4) @@ -575,7 +573,7 @@ GEM therubyracer (0.12.2) libv8 (~> 3.16.14.0) ref - thor (0.19.1) + thor (0.19.4) thread_safe (0.3.5) tilt (2.0.5) timecop (0.8.1) @@ -584,12 +582,12 @@ GEM coffee-rails tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (3.0.3) + uglifier (3.0.4) execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext unf_ext (0.0.7.2) - unicode-display_width (1.1.1) + unicode-display_width (1.1.2) unicode_utils (1.4.0) unicorn (5.2.0) kgio (~> 2.6) @@ -613,7 +611,7 @@ GEM activesupport httpclient (>= 2.4) multi_json - webmock (2.1.0) + webmock (2.3.1) addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff From 28c6a33df31d55f84a7f730cd18b0ed276b9ce0a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 11:13:23 +0100 Subject: [PATCH 150/182] Update Webconsole Gem --- Gemfile | 2 +- Gemfile.lock | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Gemfile b/Gemfile index ebd173029..e50626df4 100644 --- a/Gemfile +++ b/Gemfile @@ -115,7 +115,7 @@ end group :development do # Access an IRB console on exception pages or by using <%= console %> in views - gem 'web-console', '~> 2.0' + gem 'web-console' end group :development, :test do diff --git a/Gemfile.lock b/Gemfile.lock index 56665d516..029043576 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,8 +76,6 @@ GEM rubyzip (~> 1.0.0) bcrypt (3.1.11) bindata (2.3.4) - binding_of_caller (0.7.2) - debug_inspector (>= 0.0.1) bootstrap-datepicker-rails (1.6.4.1) railties (>= 3.0) bootstrap-sass (3.3.7) @@ -602,11 +600,11 @@ GEM vcr (3.0.3) warden (1.2.6) rack (>= 1.0) - web-console (2.3.0) - activemodel (>= 4.0) - binding_of_caller (>= 0.7.2) - railties (>= 4.0) - sprockets-rails (>= 2.0, < 4.0) + web-console (3.4.0) + actionview (>= 5.0) + activemodel (>= 5.0) + debug_inspector + railties (>= 5.0) webfinger (1.0.2) activesupport httpclient (>= 2.4) @@ -698,7 +696,7 @@ DEPENDENCIES unicode_utils unicorn vcr - web-console (~> 2.0) + web-console webmock will_paginate-bootstrap From cd5803e98194dc45fe625fafdc34848f3e065cef Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 11:15:53 +0100 Subject: [PATCH 151/182] Update api-pie gem --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index e50626df4..2acbdef98 100644 --- a/Gemfile +++ b/Gemfile @@ -87,7 +87,7 @@ gem 'bootstrap-wysihtml5-rails', '~> 0.3.3.8' gem 'as_csv' gem 'spreadsheet_architect' -gem 'apipie-rails', '=0.3.1' +gem 'apipie-rails' gem "maruku" # for Markdown support in apipie gem 'openstack' diff --git a/Gemfile.lock b/Gemfile.lock index 029043576..e70af9a9f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -59,7 +59,7 @@ GEM tzinfo (~> 1.1) addressable (2.5.0) public_suffix (~> 2.0, >= 2.0.2) - apipie-rails (0.3.1) + apipie-rails (0.3.7) json arel (7.1.4) as_csv (2.0.2) @@ -629,7 +629,7 @@ PLATFORMS DEPENDENCIES active_model_serializers - apipie-rails (= 0.3.1) + apipie-rails as_csv bootstrap-datepicker-rails bootstrap-sass (~> 3.3.5) From 0a1a5613dbcb2225274d590a2c2383c1db49a448 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 15:09:50 +0100 Subject: [PATCH 152/182] Add tests for administration controller --- app/controllers/administrations_controller.rb | 4 -- .../administrations_controller_spec.rb | 55 +++++++++++++++++++ spec/factories/administration.rb | 7 +++ 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 spec/controllers/administrations_controller_spec.rb create mode 100644 spec/factories/administration.rb diff --git a/app/controllers/administrations_controller.rb b/app/controllers/administrations_controller.rb index a2c628dee..e610ffcf5 100644 --- a/app/controllers/administrations_controller.rb +++ b/app/controllers/administrations_controller.rb @@ -15,10 +15,6 @@ class AdministrationsController < ApplicationController end - def show - @admin = Administrateur.find(params[:id]) - end - def create admin = Administrateur.new create_administrateur_params diff --git a/spec/controllers/administrations_controller_spec.rb b/spec/controllers/administrations_controller_spec.rb new file mode 100644 index 000000000..2481e327b --- /dev/null +++ b/spec/controllers/administrations_controller_spec.rb @@ -0,0 +1,55 @@ +require 'spec_helper' + +describe AdministrationsController, type: :controller do + + let(:administration) { create :administration } + + describe 'GET #index' do + + subject { get :index } + + context 'when administration user is not connect' do + it { expect(subject.status).to eq 302 } + end + + context 'when administration user is connect' do + + before do + sign_in administration + end + + it { expect(subject.status).to eq 200 } + end + end + + describe 'POST #create' do + + let(:email) { 'plop@plop.com' } + let(:password) { 'password' } + + before do + sign_in administration + end + + subject { post :create, administrateur: {email: email, password: password} } + + context 'when email and password are correct' do + it 'add new administrateur in database' do + expect { subject }.to change(Administrateur, :count).by(1) + end + + it 'alert new mail are send' do + expect(NewAdminMailer).to receive(:new_admin_email).and_return(NewAdminMailer) + expect(NewAdminMailer).to receive(:deliver_now!) + subject + end + + end + + context 'when email or password are missing' do + let(:email) { '' } + + it { expect { subject }.to change(Administrateur, :count).by(0) } + end + end +end diff --git a/spec/factories/administration.rb b/spec/factories/administration.rb new file mode 100644 index 000000000..8313af360 --- /dev/null +++ b/spec/factories/administration.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + sequence(:administration_email) { |n| "plop#{n}@plop.com" } + factory :administration do + email { generate(:administration_email) } + password 'password' + end +end \ No newline at end of file From 71bd708ffd2ba144d380a4b2991e5b847a81babe Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 15:19:28 +0100 Subject: [PATCH 153/182] CGU test --- spec/controllers/cgu_controller_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 spec/controllers/cgu_controller_spec.rb diff --git a/spec/controllers/cgu_controller_spec.rb b/spec/controllers/cgu_controller_spec.rb new file mode 100644 index 000000000..d49b16ed2 --- /dev/null +++ b/spec/controllers/cgu_controller_spec.rb @@ -0,0 +1,10 @@ +require 'spec_helper' + +describe CguController, type: :controller do + describe 'GET #index' do + + subject { get :index } + + it { expect(subject.status).to eq 200 } + end +end \ No newline at end of file From 502f41657b31f2957a0cbca2dd987b1dff2dcb4d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 15:28:35 +0100 Subject: [PATCH 154/182] Add DemoController tests --- spec/controllers/demo_controller_spec.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 spec/controllers/demo_controller_spec.rb diff --git a/spec/controllers/demo_controller_spec.rb b/spec/controllers/demo_controller_spec.rb new file mode 100644 index 000000000..6541d1efc --- /dev/null +++ b/spec/controllers/demo_controller_spec.rb @@ -0,0 +1,18 @@ +require 'spec_helper' + +describe DemoController, type: :controller do + describe 'GET #index' do + + subject { get :index } + + it { expect(subject.status).to eq 200 } + + context 'when rails environnement is production' do + before do + allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production")) + end + + it { expect(subject.status).to eq 302 } + end + end +end \ No newline at end of file From 73261a34c0e97a74eb16831ded5f3ccf09f86495 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 15:31:05 +0100 Subject: [PATCH 155/182] Add PingController tests --- spec/controllers/ping_controller_spec.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 spec/controllers/ping_controller_spec.rb diff --git a/spec/controllers/ping_controller_spec.rb b/spec/controllers/ping_controller_spec.rb new file mode 100644 index 000000000..dfa381838 --- /dev/null +++ b/spec/controllers/ping_controller_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe PingController, type: :controller do + describe 'GET #index' do + + subject { get :index } + + it { expect(subject.status).to eq 200 } + + context 'when base is un-plug' do + + before do + allow(ActiveRecord::Base).to receive(:connected?).and_return(false) + end + + it { expect(subject.status).to eq 500 } + end + end +end \ No newline at end of file From 5e950c1a5f68aaac7a19842ec538ee677baa246d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 15:38:32 +0100 Subject: [PATCH 156/182] Add tests for FranceConnectInformationDecorator --- .../france_connect_inforation_decorator_spec.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 spec/decorators/france_connect_inforation_decorator_spec.rb diff --git a/spec/decorators/france_connect_inforation_decorator_spec.rb b/spec/decorators/france_connect_inforation_decorator_spec.rb new file mode 100644 index 000000000..9d273c487 --- /dev/null +++ b/spec/decorators/france_connect_inforation_decorator_spec.rb @@ -0,0 +1,17 @@ +require 'spec_helper' + +describe FranceConnectInformationDecorator do + let(:gender) { 'female' } + let(:france_connect_information) { create :france_connect_information, gender: gender } + + subject { france_connect_information.decorate.gender_fr } + + context 'when france connect user is a male' do + let(:gender) { 'male' } + it { is_expected.to eq 'Mr' } + end + + context 'when france connect user is a female' do + it { is_expected.to eq 'Mme' } + end +end From 4de9ce4ac26d426faf9c548d3ef4663128c3fa49 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 15:39:18 +0100 Subject: [PATCH 157/182] Delete devise User unused controller --- .../users/confirmations_controller.rb | 28 ------------------- app/controllers/users/unlocks_controller.rb | 28 ------------------- 2 files changed, 56 deletions(-) delete mode 100644 app/controllers/users/confirmations_controller.rb delete mode 100644 app/controllers/users/unlocks_controller.rb diff --git a/app/controllers/users/confirmations_controller.rb b/app/controllers/users/confirmations_controller.rb deleted file mode 100644 index 1126e23aa..000000000 --- a/app/controllers/users/confirmations_controller.rb +++ /dev/null @@ -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 diff --git a/app/controllers/users/unlocks_controller.rb b/app/controllers/users/unlocks_controller.rb deleted file mode 100644 index 8b9ef8612..000000000 --- a/app/controllers/users/unlocks_controller.rb +++ /dev/null @@ -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 From 0f2013f002e8f60a5409b9fb2c412e8695801168 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 16:27:47 +0100 Subject: [PATCH 158/182] Add tests for ProceduresDecorator --- spec/decorators/procedures_decorator_spec.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 spec/decorators/procedures_decorator_spec.rb diff --git a/spec/decorators/procedures_decorator_spec.rb b/spec/decorators/procedures_decorator_spec.rb new file mode 100644 index 000000000..be53606b2 --- /dev/null +++ b/spec/decorators/procedures_decorator_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe ProceduresDecorator do + + before do + create(:procedure, :published, created_at: Time.new(2015, 12, 24, 14, 10)) + create(:procedure, :published, created_at: Time.new(2015, 12, 24, 14, 10)) + create(:procedure, :published, created_at: Time.new(2015, 12, 24, 14, 10)) + end + + let(:procedure) { Procedure.all.paginate(page: 1) } + + subject { procedure.decorate } + + it { expect(subject.current_page).not_to be_nil } + it { expect(subject.per_page).not_to be_nil } + it { expect(subject.offset).not_to be_nil } + it { expect(subject.total_entries).not_to be_nil } + it { expect(subject.total_pages).not_to be_nil } +end \ No newline at end of file From 067097825f1c7984fc7ef5d1419faa4985b2eb73 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 16:48:39 +0100 Subject: [PATCH 159/182] Add Github tests --- .../fixtures/cassettes/github_lastrelease.yml | 93 +++++++++++++++++++ spec/lib/github/api_spec.rb | 26 ++++++ spec/lib/github/releases_spec.rb | 23 +++++ 3 files changed, 142 insertions(+) create mode 100644 spec/fixtures/cassettes/github_lastrelease.yml create mode 100644 spec/lib/github/api_spec.rb create mode 100644 spec/lib/github/releases_spec.rb diff --git a/spec/fixtures/cassettes/github_lastrelease.yml b/spec/fixtures/cassettes/github_lastrelease.yml new file mode 100644 index 000000000..163e5bdea --- /dev/null +++ b/spec/fixtures/cassettes/github_lastrelease.yml @@ -0,0 +1,93 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.github.com/repos/sgmap/tps/releases/latest + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + User-Agent: + - rest-client/2.0.0 (darwin15.6.0 x86_64) ruby/2.3.1p112 + response: + status: + code: 200 + message: OK + headers: + Server: + - GitHub.com + Date: + - Thu, 15 Dec 2016 15:48:21 GMT + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Status: + - 200 OK + X-Ratelimit-Limit: + - '60' + X-Ratelimit-Remaining: + - '46' + X-Ratelimit-Reset: + - '1481819650' + Cache-Control: + - public, max-age=60, s-maxage=60 + Vary: + - Accept + - Accept-Encoding + Etag: + - W/"104562bed37a43b27f0e4ba70c1d2cff" + Last-Modified: + - Thu, 17 Nov 2016 10:56:47 GMT + X-Github-Media-Type: + - github.v3 + Access-Control-Expose-Headers: + - ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, + X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval + Access-Control-Allow-Origin: + - "*" + Content-Security-Policy: + - default-src 'none' + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-Xss-Protection: + - 1; mode=block + X-Served-By: + - 46808ddc41c302090177e58148908b23 + Content-Encoding: + - gzip + X-Github-Request-Id: + - B918B84A:73B5:C61DB9:5852BB44 + body: + encoding: ASCII-8BIT + string: !binary |- + H4sIAAAAAAAAA6VVy27bMBD8FUKXXBzTap4V0hZFeikQNIe0RdEHDFqiZQaU + yHJJt6mRf+nV3+Ef65BSnMTIA0ZPssTd4ezs7niRBaezIpt5b6ngXFg1rJWf + hcmwNA130hriVDfCcgTgXUtBkvj+4fHBwdFeNsgEkfQ0/i8Y3oEALVhtRLWB + 1n2kbYj1iIs3rWjkQIuJ1NeAn/lGb4DfqfaBOr2o+TwfHg9jqarKir7wQYaT + cQSHeOsAL1wt/RjKNcormuGsEeSlQ3Ife4oz2XqhnCRmhWPlTDSWmPRMNKul + VsYJr0zLKsn0jvxtjfPxd2WIlHQ0BFTlxNRnxVRokmhA8DPjsmKRaVOrFnd+ + uQz6fd4TzvdG+f7LwxEC5wIENzuVPt5oG0i60rQeDFP/A79JfzN/FSWoXY8S + tchiw54anwhHfE3nafXXYVOjtfmFzE2q92fzLjhf54BS91u19db5yFlw42cS + KoF6nJha0XPTfY9Iil/w+BirKiIQ9HVyc6Y3Fu0eRp8BKr9asFikNUxQYUKl + UzYOyDbq3MsDjnG1aNWfNGjb4CCPkJ5cYQtxUzzy5BxztU1il7Dg1qm5KK+i + BE6WUs0h59ZgG5nA8lc2ru8ntDqKq7wci6qJK5RW63qQWSd7y1uvW+mk8Lhf + YAOzF6P8cDfPd/Ojj/mo2DsuXoy+AsqGicb6Pxx1cFjsH8Wo3vSKbz+im7iJ + 0Jve9Iwb90m3BvVH2e1R+qRblImprlDbyWzv9QcT5hIGs1rSCcf7d/e9PQm6 + e2qVnp9aNtXhdzSpaHy9uTFJnjVCRS8RLcyNyJRqtWSrv9HyfgZEd85X7QS4 + XWdvTExVsj6Li41yrFJUBhgoI7talmqqkBivYCBlAs5jMoVL6YeJG+9JnfCe + ZfoK5m/vmuvjxZzdWi6tPTeycUzDsEWJEq2oW4xAcHhnqyXEWVv3ajlk5y2z + MsC0IZpxkADm3tm4bNnpxecB+3J2Ef3+/N3FkL1DrTrQ4K5WqIy667x3ahI8 + qCS5omo3ShFsugfGRc9Uf2pgQWVa90f7eBvTqToJNRraltKlBsbyUYwGlx3I + EAhlg5VDW2QyJPYzKNZKRjtiOlVgqzz+4AgY6e7UtgdoZtf/AIfUb6aECAAA + http_version: + recorded_at: Thu, 15 Dec 2016 15:48:21 GMT +recorded_with: VCR 3.0.3 diff --git a/spec/lib/github/api_spec.rb b/spec/lib/github/api_spec.rb new file mode 100644 index 000000000..f605391cc --- /dev/null +++ b/spec/lib/github/api_spec.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +describe Github::API do + + describe '.base_uri' do + it { expect(described_class.base_uri).to eq 'https://api.github.com' } + end + + describe '.latest_release' do + subject { described_class.latest_release } + + context 'when github is up', vcr: {cassette_name: 'github_lastrelease'} do + it { expect(subject).to be_a RestClient::Response } + it { expect(subject.code).to eq 200 } + end + + context 'when github is down' do + + before do + allow_any_instance_of(RestClient::Resource).to receive(:get).and_raise(RestClient::Forbidden) + end + + it { is_expected.to be_nil } + end + end +end \ No newline at end of file diff --git a/spec/lib/github/releases_spec.rb b/spec/lib/github/releases_spec.rb new file mode 100644 index 000000000..41bcfc049 --- /dev/null +++ b/spec/lib/github/releases_spec.rb @@ -0,0 +1,23 @@ +require 'spec_helper' + +describe Github::Releases do + + describe '.latest' do + + subject { described_class.latest } + + context 'when github is up', vcr: {cassette_name: 'github_lastrelease'} do + it { expect(subject.url).to eq 'https://api.github.com/repos/sgmap/tps/releases/4685573' } + it { expect(subject.body).to match /.*[Nouveautés].*/ } + it { expect(subject.published_at).to match /[0-9][0-9][\/][0-9][0-9][\/][0-9][0-9][0-9][0-9]/ } + end + + context 'when github is down' do + before do + allow_any_instance_of(RestClient::Resource).to receive(:get).and_raise(RestClient::Forbidden) + end + + it { is_expected.to be_nil } + end + end +end \ No newline at end of file From 3dc26bd9aa959a11db26fcac1524824bed58e1c7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 17:58:40 +0100 Subject: [PATCH 160/182] Add InviteDossierFacade tests --- spec/facades/invite_dossier_facades_spec.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 spec/facades/invite_dossier_facades_spec.rb diff --git a/spec/facades/invite_dossier_facades_spec.rb b/spec/facades/invite_dossier_facades_spec.rb new file mode 100644 index 000000000..63093b2e9 --- /dev/null +++ b/spec/facades/invite_dossier_facades_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe InviteDossierFacades do + + let(:dossier) { create :dossier } + let(:email) { 'email@octo.com' } + + subject { described_class.new dossier.id, email } + + before do + create :invite, email: email, dossier: dossier + end + + it { expect(subject.dossier).to eq dossier } +end \ No newline at end of file From 14df85d16d1add0b4749c09b74acfc3fdfda3ba4 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 17:59:01 +0100 Subject: [PATCH 161/182] Change require for notification mailer spec --- spec/mailers/notification_mailer_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 34a373b35..1b54455c4 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -1,4 +1,4 @@ -require "rails_helper" +require "spec_helper" RSpec.describe NotificationMailer, type: :mailer do describe ".new_answer" do From ea5ef257b85271308927f17e925309eab584e004 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 15 Dec 2016 17:59:25 +0100 Subject: [PATCH 162/182] Add tests for remote downloader --- spec/uploaders/remote_downloader_spec.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 spec/uploaders/remote_downloader_spec.rb diff --git a/spec/uploaders/remote_downloader_spec.rb b/spec/uploaders/remote_downloader_spec.rb new file mode 100644 index 000000000..f2e7e7770 --- /dev/null +++ b/spec/uploaders/remote_downloader_spec.rb @@ -0,0 +1,12 @@ +require 'spec_helper' + +describe RemoteDownloader do + + let(:filename) { 'file_name.pdf' } + + subject { described_class.new filename } + + describe '#url' do + it { expect(subject.url).to eq 'https://storage.apientreprise.fr/tps_dev/file_name.pdf' } + end +end \ No newline at end of file From b03b02371f875853db7068c610c4ee892497d5aa Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 09:12:16 +0100 Subject: [PATCH 163/182] Add clamav tests --- spec/services/clamav_service_spec.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 spec/services/clamav_service_spec.rb diff --git a/spec/services/clamav_service_spec.rb b/spec/services/clamav_service_spec.rb new file mode 100644 index 000000000..36bf7e20a --- /dev/null +++ b/spec/services/clamav_service_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe ClamavService do + describe '.safe_file?' do + let(:path_file) { '/tmp/plop.txt' } + + subject { ClamavService.safe_file? path_file } + + before do + allow_any_instance_of(ClamAV::Client).to receive(:initialize).and_return(ClamAV::Client) + allow_any_instance_of(ClamAV::Client).to receive(:execute).and_return([ClamAV::SuccessResponse]) + end + + it 'change permission of file path' do + allow(FileUtils).to receive(:chmod).with(0666, path_file).and_return(true) + + subject + end + end +end \ No newline at end of file From a6ff698cf8171afb6a67306b50dddccfec7e7373 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 09:25:19 +0100 Subject: [PATCH 164/182] Base uploader tests --- spec/uploaders/base_uploader_spec.rb | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 spec/uploaders/base_uploader_spec.rb diff --git a/spec/uploaders/base_uploader_spec.rb b/spec/uploaders/base_uploader_spec.rb new file mode 100644 index 000000000..5adf98b35 --- /dev/null +++ b/spec/uploaders/base_uploader_spec.rb @@ -0,0 +1,30 @@ +require 'spec_helper' + +describe BaseUploader do + let(:uploader) { described_class.new } + + describe '#cache_dir' do + + subject { uploader.cache_dir } + + context 'when rails env is not production' do + it { is_expected.to eq '/tmp/tps-dev-cache' } + end + + context 'when rails env is not production' do + before do + allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production")) + end + + it { is_expected.to eq '/tmp/tps-cache' } + + context 'when is opensimplif' do + before do + allow(Features).to receive(:opensimplif?).and_return(true) + end + + it { is_expected.to eq '/tmp/opensimplif-cache' } + end + end + end +end \ No newline at end of file From 02ec9017775459e2c152f25ffcd4159ebef5881a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 09:38:43 +0100 Subject: [PATCH 165/182] Add CommentaireDecorator test --- app/decorators/commentaire_decorator.rb | 2 -- spec/decorators/commentaire_decorator_spec.rb | 10 ++++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/decorators/commentaire_decorator.rb b/app/decorators/commentaire_decorator.rb index 06b752c3b..43958f05c 100644 --- a/app/decorators/commentaire_decorator.rb +++ b/app/decorators/commentaire_decorator.rb @@ -3,7 +3,5 @@ class CommentaireDecorator < Draper::Decorator def created_at_fr created_at.localtime.strftime('%d/%m/%Y - %H:%M') - rescue - 'dd/mm/YYYY - HH:MM' end end diff --git a/spec/decorators/commentaire_decorator_spec.rb b/spec/decorators/commentaire_decorator_spec.rb index 22fbda305..94b7be294 100644 --- a/spec/decorators/commentaire_decorator_spec.rb +++ b/spec/decorators/commentaire_decorator_spec.rb @@ -1,4 +1,14 @@ require 'spec_helper' describe CommentaireDecorator do + let(:commentaire) { Timecop.freeze(Time.local(2008, 9, 1, 10, 5, 0)) {create :commentaire} } + let(:decorator) { commentaire.decorate } + + describe 'created_at_fr' do + subject { decorator.created_at_fr } + + context 'when created_at have a value' do + it { is_expected.to eq '01/09/2008 - 10:05' } + end + end end From 3c11bef503e6ee0502581adf2325abb6799e792d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 09:39:21 +0100 Subject: [PATCH 166/182] Delete un-use code DossiersDecorator --- app/decorators/dossiers_decorator.rb | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/app/decorators/dossiers_decorator.rb b/app/decorators/dossiers_decorator.rb index 77c064fee..0960972b1 100644 --- a/app/decorators/dossiers_decorator.rb +++ b/app/decorators/dossiers_decorator.rb @@ -1,15 +1,4 @@ class DossiersDecorator < Draper::CollectionDecorator 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 From fb16d4582d45c65f345517fd05af3a26b089cdb5 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 09:43:59 +0100 Subject: [PATCH 167/182] Delete un-user code in DossierDecorator --- app/decorators/dossier_decorator.rb | 16 ---------------- spec/decorators/dossier_decorator_spec.rb | 7 ++++++- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/app/decorators/dossier_decorator.rb b/app/decorators/dossier_decorator.rb index 109b95bf7..8bf76769b 100644 --- a/app/decorators/dossier_decorator.rb +++ b/app/decorators/dossier_decorator.rb @@ -2,12 +2,6 @@ class DossierDecorator < Draper::Decorator delegate :current_page, :per_page, :offset, :total_entries, :total_pages delegate_all - def display_date - date_previsionnelle.localtime.strftime('%d/%m/%Y') - rescue - 'dd/mm/YYYY' - end - def first_creation created_at.localtime.strftime('%d/%m/%Y %H:%M') end @@ -20,16 +14,6 @@ class DossierDecorator < Draper::Decorator DossierDecorator.case_state_fr state 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 h.t("activerecord.attributes.dossier.state.#{state}") end diff --git a/spec/decorators/dossier_decorator_spec.rb b/spec/decorators/dossier_decorator_spec.rb index 1dfef816a..d2a25c608 100644 --- a/spec/decorators/dossier_decorator_spec.rb +++ b/spec/decorators/dossier_decorator_spec.rb @@ -1,9 +1,14 @@ require 'spec_helper' describe DossierDecorator do - let(:dossier) { create(:dossier, updated_at: Time.new(2015, 12, 24, 14, 10)) } + let(:dossier) { create(:dossier, created_at: Time.new(2015, 12, 24, 14, 10), updated_at: Time.new(2015, 12, 24, 14, 10)) } subject { dossier.decorate } + describe 'created_at' do + subject { super().created_at } + it { is_expected.to eq('24/12/2015 14:10') } + end + describe 'last_update' do subject { super().last_update } it { is_expected.to eq('24/12/2015 14:10') } From 2ac0d2241fda9933748080ccdd25510a83b6ecef Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 09:56:41 +0100 Subject: [PATCH 168/182] Fix dossier and invite dossier tests --- spec/decorators/dossier_decorator_spec.rb | 4 ++-- spec/facades/invite_dossier_facades_spec.rb | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/decorators/dossier_decorator_spec.rb b/spec/decorators/dossier_decorator_spec.rb index d2a25c608..1870683fd 100644 --- a/spec/decorators/dossier_decorator_spec.rb +++ b/spec/decorators/dossier_decorator_spec.rb @@ -4,8 +4,8 @@ describe DossierDecorator do let(:dossier) { create(:dossier, created_at: Time.new(2015, 12, 24, 14, 10), updated_at: Time.new(2015, 12, 24, 14, 10)) } subject { dossier.decorate } - describe 'created_at' do - subject { super().created_at } + describe 'first_creation' do + subject { super().first_creation } it { is_expected.to eq('24/12/2015 14:10') } end diff --git a/spec/facades/invite_dossier_facades_spec.rb b/spec/facades/invite_dossier_facades_spec.rb index 63093b2e9..2e58d94ee 100644 --- a/spec/facades/invite_dossier_facades_spec.rb +++ b/spec/facades/invite_dossier_facades_spec.rb @@ -12,4 +12,5 @@ describe InviteDossierFacades do end it { expect(subject.dossier).to eq dossier } + it { expect(subject.commentaire_email).to eq email } end \ No newline at end of file From 21dc35215e3c6d8f4b0dac975b846203b0698909 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 10:07:40 +0100 Subject: [PATCH 169/182] Add test for DropDownList model --- spec/factories/drop_down_list.rb | 5 +++++ spec/models/drop_down_list_spec.rb | 32 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 spec/factories/drop_down_list.rb create mode 100644 spec/models/drop_down_list_spec.rb diff --git a/spec/factories/drop_down_list.rb b/spec/factories/drop_down_list.rb new file mode 100644 index 000000000..6b81511cf --- /dev/null +++ b/spec/factories/drop_down_list.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :drop_down_list do + value '' + end +end diff --git a/spec/models/drop_down_list_spec.rb b/spec/models/drop_down_list_spec.rb new file mode 100644 index 000000000..523ab2ae1 --- /dev/null +++ b/spec/models/drop_down_list_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' + +describe DropDownList do + describe 'database columns' do + it { is_expected.to have_db_column(:value) } + end + + describe 'associations' do + it { is_expected.to belong_to(:type_de_champ) } + end + + describe '#options' do + let(:value) { "Cohésion sociale +Dév.Eco / Emploi +Cadre de vie / Urb. +Pilotage / Ingénierie +" } + let(:dropdownlist) { create :drop_down_list, value: value } + + it { expect(dropdownlist.options).to eq ["Cohésion sociale", "Dév.Eco / Emploi", "Cadre de vie / Urb.", "Pilotage / Ingénierie"] } + + context 'when one value is empty' do + let(:value) { "Cohésion sociale + +Cadre de vie / Urb. +Pilotage / Ingénierie +" } + + it { expect(dropdownlist.options).to eq ["Cohésion sociale", "Cadre de vie / Urb.", "Pilotage / Ingénierie"] } + end + end +end From 0aedeba125b53f9925a05ffbb9a26e317d2876cf Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 10:15:29 +0100 Subject: [PATCH 170/182] Add QuartierPrioritaire test --- spec/models/quartier_prioritaire_spec.rb | 10 ++++++++++ spec/support/files/qp_geometry_value.txt | 1 + 2 files changed, 11 insertions(+) create mode 100644 spec/support/files/qp_geometry_value.txt diff --git a/spec/models/quartier_prioritaire_spec.rb b/spec/models/quartier_prioritaire_spec.rb index 50ae8dcb1..30c52cd47 100644 --- a/spec/models/quartier_prioritaire_spec.rb +++ b/spec/models/quartier_prioritaire_spec.rb @@ -7,4 +7,14 @@ describe QuartierPrioritaire do it { is_expected.to have_db_column(:geometry) } it { is_expected.to belong_to(:dossier) } + + describe 'geometry' do + + let(:qp) { create :quartier_prioritaire, geometry: qp_geometry } + let(:qp_geometry) { File.open('spec/support/files/qp_geometry_value.txt').read } + + subject { qp.geometry } + + it { is_expected.to eq JSON.parse(qp_geometry) } + end end diff --git a/spec/support/files/qp_geometry_value.txt b/spec/support/files/qp_geometry_value.txt new file mode 100644 index 000000000..48f65586f --- /dev/null +++ b/spec/support/files/qp_geometry_value.txt @@ -0,0 +1 @@ +{"type":"MultiPolygon","coordinates":[[[[2.38715792094576,48.8723062632126],[2.38724851642619,48.8721392348061],[2.38678085384716,48.8719220893659],[2.38633738240483,48.8717237578549],[2.38609586027749,48.8716280999195],[2.38605124105111,48.8715945992388],[2.3860322294289,48.8714739763158],[2.38584201426809,48.871477436017],[2.38549018688243,48.8711988685955],[2.3847131238363,48.8711581514328],[2.38456321667197,48.871046276737],[2.38399052331168,48.8706208170053],[2.38360191758092,48.8708580436239],[2.38327605046433,48.8710901961983],[2.38309839743687,48.8712403530784],[2.38266225967958,48.8707713649412],[2.38241266242756,48.8706657452938],[2.38225272864375,48.8708522158955],[2.3816589129511,48.8706099279225],[2.38217684575416,48.8696293927465],[2.3813323946917,48.8693336454235],[2.38116284423201,48.8692617302053],[2.38102304120661,48.8692106353737],[2.38089564019462,48.8691470209824],[2.38046878406977,48.8689316744956],[2.38138018644769,48.8682641345705],[2.3827339154111,48.8672468211538],[2.38276764871741,48.8671817516194],[2.38280143346623,48.86711233313],[2.38320484958438,48.867166128404],[2.38351899626771,48.8672021358613],[2.38407130306803,48.867327647506],[2.38520873913933,48.8675766516676],[2.38540634609132,48.8672380292181],[2.38560931824849,48.8668888144892],[2.38575328614569,48.8669312917934],[2.38591109926571,48.8667019875268],[2.38608247325439,48.8664593865795],[2.38666746249723,48.8666154228843],[2.38701536810061,48.8667080313517],[2.38769179685241,48.8669156421332],[2.38900935039287,48.8673198797417],[2.38949419005144,48.8666604544278],[2.38962931386602,48.866531627899],[2.38965167069692,48.8664831775661],[2.38967299457085,48.8661124003313],[2.38969829850293,48.8659959856804],[2.38973026178903,48.8658270583162],[2.38978630142747,48.8656960367641],[2.38984706535962,48.8655128865008],[2.38939866205044,48.8653900952304],[2.38799947908499,48.8648613237082],[2.38727612482644,48.8645887321245],[2.38694662671035,48.8644565359098],[2.38664445103082,48.8648693394735],[2.38730003148295,48.8651088986138],[2.38702856851918,48.8656160912563],[2.38638397882637,48.865454705665],[2.3861549727405,48.8658006858579],[2.3857746963571,48.8663752048761],[2.38561263663448,48.8663286686078],[2.38546706691925,48.8663735933533],[2.38538036276113,48.8664579631081],[2.38540601228398,48.8665189837463],[2.38542609757617,48.866573975407],[2.38547057596048,48.8668485114634],[2.38507779908135,48.8675155002413],[2.3838732681436,48.867226601879],[2.38286537990766,48.8670017526772],[2.38129651181187,48.8666147483129],[2.38059252155565,48.8664348506944],[2.3801970311808,48.8663356744736],[2.3799301662615,48.8666508618816],[2.37925850064165,48.8673065930564],[2.3785647338769,48.8679828884228],[2.37846997413068,48.8680399505172],[2.37838805417244,48.868051223699],[2.37780968376037,48.8687667923651],[2.37748516369911,48.8692273669111],[2.3773861330759,48.8691863761821],[2.37687958488135,48.869025463728],[2.37630512358494,48.8688407980208],[2.37597254926961,48.8687230498181],[2.37507587633699,48.8684665601072],[2.37492768670682,48.8684333992801],[2.37439190673631,48.8690043766908],[2.37391591497758,48.8694740461451],[2.37332649157944,48.8700834111043],[2.37307231644407,48.8703599809689],[2.37289664296134,48.8705703907562],[2.37335014200329,48.8707229750483],[2.37351974048976,48.870790406631],[2.37369757821002,48.8708542927215],[2.37412205760839,48.8710390713461],[2.37427393633362,48.871108216843],[2.37438520998938,48.8711501751961],[2.37499080431527,48.8713547778326],[2.37507756519099,48.8713939041221],[2.37636624690889,48.8718416365513],[2.37609257147548,48.8721775047226],[2.37588132608287,48.8720993914931],[2.37577167753849,48.8722464601818],[2.37558693330393,48.8724817396403],[2.37520133944578,48.8723489389121],[2.37495662563781,48.8727176985769],[2.37465949141444,48.8731353900483],[2.37449630918011,48.8729116442696],[2.37442486314075,48.8728429195767],[2.37381777610594,48.8725366834313],[2.37293303754446,48.8720751871293],[2.37272648739235,48.8720192381635],[2.37195611319364,48.871802061146],[2.37155129417782,48.8722469050457],[2.371316312272,48.8725127740773],[2.37060074696615,48.8733993619047],[2.37031563028607,48.8737521970836],[2.3703324631712,48.8739384534716],[2.37032483861717,48.8741191635795],[2.37030717350514,48.8745633511804],[2.37031832081888,48.8752226185085],[2.37115209270841,48.8749347105359],[2.3712713448868,48.8748840856635],[2.37142731949166,48.8748381483797],[2.37175395297293,48.8747732979311],[2.37249018705873,48.8746602443171],[2.37318688709594,48.8745460942291],[2.37336988749776,48.8745218691668],[2.37402019201213,48.8742968423894],[2.37407172139682,48.874311022755],[2.37411755847646,48.8743373575228],[2.3741631163138,48.8743876167128],[2.37500604651213,48.873652616334],[2.37631214864991,48.872504643992],[2.37682235233832,48.8720201650376],[2.377060807185,48.8721111312308],[2.37747228107229,48.8722463592837],[2.37764347562913,48.8722940275693],[2.3781164440579,48.8724187972395],[2.37870228889716,48.8725657296093],[2.37922004888481,48.8727069207783],[2.37983448272221,48.8728557980653],[2.38055413098825,48.8729890232522],[2.38191008538867,48.8732676299099],[2.38259976775091,48.8733970942162],[2.38308555462766,48.873476033271],[2.38344597173961,48.8732053917987],[2.38383745217691,48.8728850499623],[2.38424290942455,48.8731208753131],[2.38421016360887,48.8731589861482],[2.3845880512008,48.8733122551963],[2.38496227923534,48.8728909750237],[2.38575864042278,48.8732077898345],[2.38592069747405,48.8729101518962],[2.3862548101951,48.8729882675479],[2.38629686945576,48.8729038198139],[2.38689176242455,48.873094061243],[2.38730637511344,48.872481244183],[2.38698319693408,48.8724041533073],[2.3870377063482,48.8722764552525],[2.38715792094576,48.8723062632126]]]]} \ No newline at end of file From f21f151c9c3b5c7fe6cddffe0183199543581fb3 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 10:42:34 +0100 Subject: [PATCH 171/182] Add test for GeoAPI driver lib --- app/lib/carto/geo_api/driver.rb | 17 ++--- .../cassettes/geoapi_departements.yml | 70 +++++++++++++++++++ spec/fixtures/cassettes/geoapi_regions.yml | 57 +++++++++++++++ spec/lib/carto/geo_api/driver_spec.rb | 35 ++++++++++ 4 files changed, 171 insertions(+), 8 deletions(-) create mode 100644 spec/fixtures/cassettes/geoapi_departements.yml create mode 100644 spec/fixtures/cassettes/geoapi_regions.yml create mode 100644 spec/lib/carto/geo_api/driver_spec.rb diff --git a/app/lib/carto/geo_api/driver.rb b/app/lib/carto/geo_api/driver.rb index d4cc8866f..01825be40 100644 --- a/app/lib/carto/geo_api/driver.rb +++ b/app/lib/carto/geo_api/driver.rb @@ -11,7 +11,15 @@ module Carto end 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 private @@ -22,13 +30,6 @@ module Carto nil 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 diff --git a/spec/fixtures/cassettes/geoapi_departements.yml b/spec/fixtures/cassettes/geoapi_departements.yml new file mode 100644 index 000000000..6eee3d2bf --- /dev/null +++ b/spec/fixtures/cassettes/geoapi_departements.yml @@ -0,0 +1,70 @@ +--- +http_interactions: +- request: + method: get + uri: https://geo.api.gouv.fr/departements?fields=nom + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + User-Agent: + - rest-client/2.0.0 (darwin15.6.0 x86_64) ruby/2.3.1p112 + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Fri, 16 Dec 2016 09:25:41 GMT + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Vary: + - Accept-Encoding + - Accept-Encoding + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Etag: + - W/"cc1-lXUcIlpPmDfvrGONl0WWsQ" + Strict-Transport-Security: + - max-age=15552000 + Content-Encoding: + - gzip + body: + encoding: ASCII-8BIT + string: !binary |- + H4sIAAAAAAAAA22Wy27bMBBFfyXwJpsKqF96dOfYrZsibow4MFAUXTARGxOQ + xZYSjbpF/yfZ5w/0YyVlpDq0sxTmajg8vJzh1z+9Um9773oTVfbe9O51Lt3H + 237v75suUpUSsQFjRaGkQXAYBH/IKspl9FHYWkZLo3eyvGeqEdStqIomhfsJ + CccnCRfCqFptA1VMlcmbx/sN10nCsCzL4O80CKvm8YE/Z4zaO4T6b4OQQ/ef + YD8guJN7o8G3T4YX2rpqHSgb3WyaZ7LuE+dUFDuRa8Dpk99UlLUoUAHJTTfC + yLJmgUT2Eo5e2CIN2U03POw+uU21Mc3jb65AcC5cSb/Flc275IPJsQGiVgjF + BRTT5tn5KD+/huMGBN0KHMnzidlqish7aqQNliDkmTa5fuAZDAh5pu0dDmBA + xjPTPG9ZOgm/t4YhQvWhSNbRlVYsmXA/qFJVdfMY5CDeuTDAOqQvD5fPCbRz + fQd2SG5zabCrIWnNlfuRzh4S18fmyQhb1MhLXJdF0W5trQqhgtUJ7rLMubEh + ubWxFzosnwQvqxDNkOw+WSNQHqldCbczbHxEbv44/MKh50fE5iWoaURuB+zH + CrJrY9GkLtzFVT8tE5FhKwPgEdFdaUYIzkV89SfnPiK4K/07JDciuYU/s1fY + j8hwIcqg147J0LUTnvqY8A6AjhVEuBB736m7wxsT30JaU2/a+ha6ks5pEBKg + E/K6j8lvoc2d2gi05jEhniYmvc9uUuxogDHpfXadBBWR2bViQTGJXQfAYgJb + inaYujEgFEwbE9nS7r1mFnaimNyWe9M8lc2Tn7X/vcd8rwzl7p9uRzE5Ium1 + UW7SiIIXKybUC7ePmw2fGzGpel8cx8n1eEbGJHsw1UqEYzQh4UPwFVsnhL0S + 3lzdbhNSXomdVgwGLbF97JxISHXpXjAgnpDkSvpLdzqHEyI8iLzzwwuWEOSX + nSxcLi5EjjNpf0Wr1sGUkOZKbznQUmK8dSt3eFKy86FXe09KiGuBaZeS4FrY + +yK4synprWWZO/ticfJbO/exZ6TkdrDHiYTU1rp6IJCUzL6EMzQlrFtp3LvU + N+uzXJ5dyOK7NmjOGeG9r6owU3bcGdur3h5zt88s8GDrk5Vr0XU0k+55AF0I + s/CpjoySBUCFk5yHTSkj07kVuSy0/cFiguvi0tfujRJMsSy4M3O7F8FmkmAW + irOb5smWiq/kLAnauNjrmi/YzF+Jb/8A5ygzwMEMAAA= + http_version: + recorded_at: Fri, 16 Dec 2016 09:25:37 GMT +recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/geoapi_regions.yml b/spec/fixtures/cassettes/geoapi_regions.yml new file mode 100644 index 000000000..2de462046 --- /dev/null +++ b/spec/fixtures/cassettes/geoapi_regions.yml @@ -0,0 +1,57 @@ +--- +http_interactions: +- request: + method: get + uri: https://geo.api.gouv.fr/regions?fields=nom + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + User-Agent: + - rest-client/2.0.0 (darwin15.6.0 x86_64) ruby/2.3.1p112 + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Fri, 16 Dec 2016 09:24:28 GMT + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Vary: + - Accept-Encoding + - Accept-Encoding + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Etag: + - W/"2dd-2SAFdhiM3SIQ2017gqYxbw" + Strict-Transport-Security: + - max-age=15552000 + Content-Encoding: + - gzip + body: + encoding: ASCII-8BIT + string: !binary |- + H4sIAAAAAAAAA11Ry2rDMBD8FeNLLxE0rybpzTE0F6eYHHopPSyWSASyNllJ + Abf0F/ofvucP/GO1aIvXPQm0M7MzO68fqcU6fUx3AaQyGM4qnaQVStX/3U/T + z8kfYA/ktdWXwAEzBtiFBiwfztmwgOTQtcFqtEx/MdJv0HvOf2DT7ssoIZV4 + IrAVA025xVxZT0q8gEmkSgrUxJAzvmyLgY54tL+CJyVyrH3XDt5mK7b9GakG + KzWXW4/nUpTgosMcDGgnSl0BjRhzfqzMOKh68AnqM0QfGUll+7dAItD8jgtu + vITGxXAG/udbcvktKR9lhzxL3kZ2CdrHLaLQNQanrShRewzREPVXVG5grpaj + Hu0xKImVOPQ8p41BK/ZaalE21LW2a0dUXmEWropi1MOpu8XE5syx61FMwqvq + i/4Biby7eZXIu+w90GBswyPlSI7F3fRqb99L+pyA3QIAAA== + http_version: + recorded_at: Fri, 16 Dec 2016 09:24:25 GMT +recorded_with: VCR 3.0.3 diff --git a/spec/lib/carto/geo_api/driver_spec.rb b/spec/lib/carto/geo_api/driver_spec.rb new file mode 100644 index 000000000..25ca47dd5 --- /dev/null +++ b/spec/lib/carto/geo_api/driver_spec.rb @@ -0,0 +1,35 @@ +require 'spec_helper' + +describe Carto::GeoAPI::Driver do + + describe '.regions', vcr: {cassette_name: 'geoapi_regions'} do + subject { described_class.regions } + + it { expect(subject.code).to eq 200 } + end + + describe '.departements', vcr: {cassette_name: 'geoapi_departements'} do + subject { described_class.departements } + + it { expect(subject.code).to eq 200 } + end + + describe '.pays' do + subject { described_class.pays } + + it { is_expected.to eq File.open('app/lib/carto/geo_api/pays.json').read } + + end + + describe 'departements_url' do + subject { described_class.departements_url } + + it { is_expected.to eq 'https://geo.api.gouv.fr/departements' } + end + + describe 'regions_url' do + subject { described_class.regions_url } + + it { is_expected.to eq 'https://geo.api.gouv.fr/regions' } + end +end \ No newline at end of file From 2aebf9933c71080bf7ac67768364dcee44c7dc31 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 10:59:16 +0100 Subject: [PATCH 172/182] Add tests for demo devise sessions --- .../sessions_controller_spec.rb | 21 +++++++++++++++++++ .../gestionnaires/sessions_controller_spec.rb | 15 ++++++++++--- .../users/sessions_controller_spec.rb | 15 ++++++++++--- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/spec/controllers/administrateur/sessions_controller_spec.rb b/spec/controllers/administrateur/sessions_controller_spec.rb index ff0981e00..a4717fca7 100644 --- a/spec/controllers/administrateur/sessions_controller_spec.rb +++ b/spec/controllers/administrateur/sessions_controller_spec.rb @@ -5,6 +5,27 @@ describe Administrateurs::SessionsController, type: :controller do @request.env["devise.mapping"] = Devise.mappings[:administrateur] end + describe '.demo' do + subject { get :demo } + + context 'when rails env is production' do + before do + allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production")) + end + + it { is_expected.to redirect_to root_path } + end + + context 'when rails env is not production' do + it { expect(subject.status).to eq 200 } + + it 'Administrateur demo is initiated' do + expect(Administrateur).to receive(:new).with(email: 'admin@tps.fr', password: 'password').and_return(Administrateur) + subject + end + end + end + describe '.create' do it { expect(described_class).to be < Sessions::SessionsController } end diff --git a/spec/controllers/gestionnaires/sessions_controller_spec.rb b/spec/controllers/gestionnaires/sessions_controller_spec.rb index 6bc0cead1..c01483e41 100644 --- a/spec/controllers/gestionnaires/sessions_controller_spec.rb +++ b/spec/controllers/gestionnaires/sessions_controller_spec.rb @@ -6,14 +6,23 @@ describe Gestionnaires::SessionsController, type: :controller do end describe '.demo' do - context 'when server is on env production' do + subject { get :demo } + + context 'when rails env is production' do before do allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production")) end - subject { get :demo } - it { expect(subject).to redirect_to root_path } + it { is_expected.to redirect_to root_path } + end + context 'when rails env is not production' do + it { expect(subject.status).to eq 200 } + + it 'Gestionnaire demo is initiated' do + expect(Gestionnaire).to receive(:new).with(email: 'gestionnaire@apientreprise.fr', password: 'password').and_return(Gestionnaire) + subject + end end end diff --git a/spec/controllers/users/sessions_controller_spec.rb b/spec/controllers/users/sessions_controller_spec.rb index b6bfed1d6..8a3d419bb 100644 --- a/spec/controllers/users/sessions_controller_spec.rb +++ b/spec/controllers/users/sessions_controller_spec.rb @@ -9,14 +9,23 @@ describe Users::SessionsController, type: :controller do end describe '.demo' do - context 'when server is on env production' do + subject { get :demo } + + context 'when rails env is production' do before do allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production")) end - subject { get :demo } - it { expect(subject).to redirect_to root_path } + it { is_expected.to redirect_to root_path } + end + context 'when rails env is not production' do + it { expect(subject.status).to eq 200 } + + it 'User demo is initiated' do + expect(User).to receive(:new).with(email: 'demo@tps.fr', password: 'password').and_return(User) + subject + end end end From d9dfff3b6acfa6de8687c4ef663abce5bfe32d94 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 14:09:05 +0100 Subject: [PATCH 173/182] Refacto invite dossier facades --- app/facades/dossier_facades.rb | 5 ----- app/facades/invite_dossier_facades.rb | 2 -- spec/facades/invite_dossier_facades_spec.rb | 1 - 3 files changed, 8 deletions(-) diff --git a/app/facades/dossier_facades.rb b/app/facades/dossier_facades.rb index 0616bce68..74cab5777 100644 --- a/app/facades/dossier_facades.rb +++ b/app/facades/dossier_facades.rb @@ -3,7 +3,6 @@ class DossierFacades #TODO rechercher en fonction de la personne/email def initialize(dossier_id, email, champ_id = nil) @dossier = Dossier.where(archived: false).find(dossier_id) - @email = email @champ_id = champ_id end @@ -35,10 +34,6 @@ class DossierFacades @dossier.ordered_commentaires.where(champ_id: @champ_id).decorate end - def commentaire_email - @email - end - def procedure @dossier.procedure end diff --git a/app/facades/invite_dossier_facades.rb b/app/facades/invite_dossier_facades.rb index 824d93ce3..63e9b5a61 100644 --- a/app/facades/invite_dossier_facades.rb +++ b/app/facades/invite_dossier_facades.rb @@ -3,7 +3,5 @@ class InviteDossierFacades < DossierFacades #TODO rechercher en fonction de la personne/email def initialize dossier_id, email @dossier = (Invite.where(email: email).find(dossier_id)).dossier - @email = email end - end \ No newline at end of file diff --git a/spec/facades/invite_dossier_facades_spec.rb b/spec/facades/invite_dossier_facades_spec.rb index 2e58d94ee..63093b2e9 100644 --- a/spec/facades/invite_dossier_facades_spec.rb +++ b/spec/facades/invite_dossier_facades_spec.rb @@ -12,5 +12,4 @@ describe InviteDossierFacades do end it { expect(subject.dossier).to eq dossier } - it { expect(subject.commentaire_email).to eq email } end \ No newline at end of file From e85cb4c24b5486a615991b0c1ee5e08b35a94dc7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 14:39:17 +0100 Subject: [PATCH 174/182] Delete features unified_login --- app/controllers/admin/gestionnaires_controller.rb | 2 +- app/controllers/users/sessions_controller.rb | 4 ++-- app/models/administrateur.rb | 2 +- app/models/gestionnaire.rb | 2 +- app/models/user.rb | 2 +- config/initializers/features.yml | 1 - spec/controllers/admin/gestionnaires_controller_spec.rb | 1 - .../gestionnaires/passwords_controller_spec.rb | 1 - spec/controllers/root_controller_spec.rb | 2 -- spec/controllers/users/passwords_controller_spec.rb | 1 - spec/controllers/users/sessions_controller_spec.rb | 2 -- spec/models/administrateur_spec.rb | 2 -- spec/models/gestionnaire_spec.rb | 2 -- spec/models/user_spec.rb | 2 -- spec/views/layouts/_navbar_spec.rb | 9 --------- 15 files changed, 6 insertions(+), 29 deletions(-) diff --git a/app/controllers/admin/gestionnaires_controller.rb b/app/controllers/admin/gestionnaires_controller.rb index 7dc769471..da082c5f3 100644 --- a/app/controllers/admin/gestionnaires_controller.rb +++ b/app/controllers/admin/gestionnaires_controller.rb @@ -44,7 +44,7 @@ class Admin::GestionnairesController < AdminController )) if @gestionnaire.errors.messages.empty? - User.create(attributes) if Features.unified_login + User.create(attributes) flash.notice = 'Accompagnateur ajouté' GestionnaireMailer.new_gestionnaire(@gestionnaire.email, @gestionnaire.password).deliver_now! GestionnaireMailer.new_assignement(@gestionnaire.email, current_administrateur.email).deliver_now! diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index 20d79afdc..ebe89f7d0 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -23,8 +23,8 @@ class Users::SessionsController < Sessions::SessionsController #POST /resource/sign_in def create try_to_authenticate(User) - try_to_authenticate(Gestionnaire) if Features.unified_login - try_to_authenticate(Administrateur) if Features.unified_login + try_to_authenticate(Gestionnaire) + try_to_authenticate(Administrateur) if user_signed_in? current_user.update_attributes(loged_in_with_france_connect: '') diff --git a/app/models/administrateur.rb b/app/models/administrateur.rb index dfe619b29..b2882fb62 100644 --- a/app/models/administrateur.rb +++ b/app/models/administrateur.rb @@ -6,7 +6,7 @@ class Administrateur < ActiveRecord::Base has_many :procedures before_save :ensure_api_token - after_update :sync_credentials, if: -> { Features.unified_login } + after_update :sync_credentials def ensure_api_token if api_token.nil? diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 2562f3342..d98b2e742 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -14,7 +14,7 @@ class Gestionnaire < ActiveRecord::Base after_create :build_default_preferences_list_dossier after_create :build_default_preferences_smart_listing_page - after_update :sync_credentials, if: -> { Features.unified_login } + after_update :sync_credentials def dossiers_follow @dossiers_follow ||= dossiers.joins(:follows).where("follows.gestionnaire_id = #{id}") diff --git a/app/models/user.rb b/app/models/user.rb index 6972d6986..34d245e48 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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 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 user = User.find_by_email(email) diff --git a/config/initializers/features.yml b/config/initializers/features.yml index 21c8f8294..d243bd5f6 100644 --- a/config/initializers/features.yml +++ b/config/initializers/features.yml @@ -1,3 +1,2 @@ remote_storage: false -unified_login: true opensimplif: false diff --git a/spec/controllers/admin/gestionnaires_controller_spec.rb b/spec/controllers/admin/gestionnaires_controller_spec.rb index a32c2adc3..ca1de17d6 100644 --- a/spec/controllers/admin/gestionnaires_controller_spec.rb +++ b/spec/controllers/admin/gestionnaires_controller_spec.rb @@ -150,7 +150,6 @@ describe Admin::GestionnairesController, type: :controller do context 'unified login' do before do - allow(Features).to receive(:unified_login).and_return(true) subject end diff --git a/spec/controllers/gestionnaires/passwords_controller_spec.rb b/spec/controllers/gestionnaires/passwords_controller_spec.rb index ca3dec599..257109531 100644 --- a/spec/controllers/gestionnaires/passwords_controller_spec.rb +++ b/spec/controllers/gestionnaires/passwords_controller_spec.rb @@ -12,7 +12,6 @@ describe Gestionnaires::PasswordsController, type: :controller do let(:administrateur) { create(:administrateur, email: 'unique@plop.com', password: 'password') } before do - allow(Features).to receive(:unified_login).and_return(true) @token = gestionnaire.send(:set_reset_password_token) user # make sure it's created administrateur # make sure it's created diff --git a/spec/controllers/root_controller_spec.rb b/spec/controllers/root_controller_spec.rb index c22f3e9e4..a4d6406fb 100644 --- a/spec/controllers/root_controller_spec.rb +++ b/spec/controllers/root_controller_spec.rb @@ -62,13 +62,11 @@ describe RootController, type: :controller do render_views before do - allow(Features).to receive(:unified_login).and_return(true) subject end it "won't have gestionnaire login link" do expect(response.body).to have_css("a[href='#{new_user_session_path}']") - expect(response.body).to_not have_css("a[href='#{new_gestionnaire_session_path}']") end end end diff --git a/spec/controllers/users/passwords_controller_spec.rb b/spec/controllers/users/passwords_controller_spec.rb index 68bb82196..37a8f18e6 100644 --- a/spec/controllers/users/passwords_controller_spec.rb +++ b/spec/controllers/users/passwords_controller_spec.rb @@ -12,7 +12,6 @@ describe Users::PasswordsController, type: :controller do let(:administrateur) { create(:administrateur, email: 'unique@plop.com', password: 'password') } before do - allow(Features).to receive(:unified_login).and_return(true) @token = user.send(:set_reset_password_token) gestionnaire # make sure it's created administrateur # make sure it's created diff --git a/spec/controllers/users/sessions_controller_spec.rb b/spec/controllers/users/sessions_controller_spec.rb index 8a3d419bb..ebfb037b7 100644 --- a/spec/controllers/users/sessions_controller_spec.rb +++ b/spec/controllers/users/sessions_controller_spec.rb @@ -51,8 +51,6 @@ describe Users::SessionsController, type: :controller do let(:gestionnaire) { create(:gestionnaire, email: email, password: password) } let(:administrateur) { create(:administrateur, email: email, password: password) } - before { allow(Features).to receive(:unified_login).and_return(true) } - it 'signs user in' do post :create, params: {user: {email: user.email, password: user.password}} expect(@response.redirect?).to be(true) diff --git a/spec/models/administrateur_spec.rb b/spec/models/administrateur_spec.rb index cdeb6b27f..238c3376f 100644 --- a/spec/models/administrateur_spec.rb +++ b/spec/models/administrateur_spec.rb @@ -44,8 +44,6 @@ describe Administrateur, type: :model do end context 'unified login' do - before { allow(Features).to receive(:unified_login).and_return(true) } - it 'syncs credentials to associated user' do administrateur = create(:administrateur) user = create(:user, email: administrateur.email) diff --git a/spec/models/gestionnaire_spec.rb b/spec/models/gestionnaire_spec.rb index 6ffcd382e..18fc65d6d 100644 --- a/spec/models/gestionnaire_spec.rb +++ b/spec/models/gestionnaire_spec.rb @@ -186,8 +186,6 @@ describe Gestionnaire, type: :model do end context 'unified login' do - before { allow(Features).to receive(:unified_login).and_return(true) } - it 'syncs credentials to associated user' do gestionnaire = create(:gestionnaire) user = create(:user, email: gestionnaire.email) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index b2d3f2227..8cac2f476 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -74,8 +74,6 @@ describe User, type: :model do end context 'unified login' do - before { allow(Features).to receive(:unified_login).and_return(true) } - it 'syncs credentials to associated gestionnaire' do user = create(:user) gestionnaire = create(:gestionnaire, email: user.email) diff --git a/spec/views/layouts/_navbar_spec.rb b/spec/views/layouts/_navbar_spec.rb index ee7f3f98f..a23f67cae 100644 --- a/spec/views/layouts/_navbar_spec.rb +++ b/spec/views/layouts/_navbar_spec.rb @@ -13,9 +13,6 @@ describe 'layouts/_navbar.html.haml', type: :view do render end subject { rendered } - it { is_expected.not_to match(/href="\/users\/sign_in">Utilisateur/) } - it { is_expected.to match(/href="\/gestionnaires\/sign_in">Accompagnateur/) } - it { is_expected.not_to match(/href="\/administrateurs\/sign_in">Administrateur/) } it { is_expected.to match(/Connexion/) } end @@ -28,9 +25,6 @@ describe 'layouts/_navbar.html.haml', type: :view do end subject { rendered } - it { is_expected.not_to match(/href="\/users\/sign_in">Utilisateur/) } - it { is_expected.not_to match(/href="\/gestionnaires\/sign_in">Accompagnateur/) } - it { is_expected.not_to match(/href="\/administrateurs\/sign_in">Administrateur/) } it { is_expected.to match(/Déconnexion/) } end @@ -43,9 +37,6 @@ describe 'layouts/_navbar.html.haml', type: :view do end subject { rendered } - it { is_expected.not_to match(/href="\/users\/sign_in">Utilisateur/) } - it { is_expected.not_to match(/href="\/gestionnaires\/sign_in">Accompagnateur/) } - it { is_expected.not_to match(/href="\/administrateurs\/sign_in">Administrateur/) } it { is_expected.to match(/Déconnexion/) } end From f6279578697cb8e51817a835f4e05deb0711d800 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 14:40:20 +0100 Subject: [PATCH 175/182] Add ChampDecorator tests --- app/decorators/champ_decorator.rb | 5 +---- spec/decorators/champ_decorator_spec.rb | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 spec/decorators/champ_decorator_spec.rb diff --git a/app/decorators/champ_decorator.rb b/app/decorators/champ_decorator.rb index b6613426b..6713e5049 100644 --- a/app/decorators/champ_decorator.rb +++ b/app/decorators/champ_decorator.rb @@ -1,4 +1,5 @@ class ChampDecorator < Draper::Decorator + delegate_all def value if type_champ == 'checkbox' @@ -6,8 +7,4 @@ class ChampDecorator < Draper::Decorator end object.value end - - def type_champ - object.type_de_champ.type_champ - end end \ No newline at end of file diff --git a/spec/decorators/champ_decorator_spec.rb b/spec/decorators/champ_decorator_spec.rb new file mode 100644 index 000000000..5d25679ca --- /dev/null +++ b/spec/decorators/champ_decorator_spec.rb @@ -0,0 +1,25 @@ +require 'spec_helper' + +describe ChampDecorator do + let(:champ) {create :champ, type_de_champ: (create :type_de_champ_public, type_champ: :checkbox)} + let(:decorator) { champ.decorate } + + describe 'value' do + subject { decorator.value } + + context 'when type_champ is checkbox' do + + context 'when value is on' do + before do + champ.update value: 'on' + end + + it { is_expected.to eq 'Oui' } + end + + context 'when value is other' do + it { is_expected.to eq 'Non' } + end + end + end +end From 33bfe4a29c7028cc72144af2d601f1fcdcd46ff1 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 14:40:41 +0100 Subject: [PATCH 176/182] Delete un-use code --- app/facades/dossiers_list_facades.rb | 102 +----------------- .../backoffice/dossiers/_onglets.html.haml | 23 ---- .../navbars/_navbar_log_options.html.haml | 4 +- 3 files changed, 2 insertions(+), 127 deletions(-) delete mode 100644 app/views/backoffice/dossiers/_onglets.html.haml diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 948dbf7d3..bed18c852 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -1,7 +1,7 @@ class DossiersListFacades include Rails.application.routes.url_helpers - attr_accessor :procedure, :current_devise_profil + attr_accessor :procedure, :current_devise_profil, :liste def initialize current_devise_profil, liste, procedure = nil @current_devise_profil = current_devise_profil @@ -18,10 +18,6 @@ class DossiersListFacades end end - def liste - @liste - end - def total_dossier current_devise_profil.dossiers.where(archived: false).count end @@ -60,30 +56,10 @@ class DossiersListFacades (@liste == 'brouillon' ? 'active' : '') end - def nouveaux_class - (@liste == 'nouveaux' ? 'active' : '') - end - - def a_traiter_class - (@liste == 'a_traiter' ? 'active' : '') - end - def en_construction_class (@liste == 'a_traiter' ? 'active' : '') 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 (@liste == 'valides' ? 'active' : '') end @@ -92,26 +68,14 @@ class DossiersListFacades (@liste == 'en_instruction' ? 'active' : '') end - def a_instruire_class - (@liste == 'a_instruire' ? 'active' : '') - end - def termine_class (@liste == 'termine' ? 'active' : '') end - def suivi_class - (@liste == 'suivi' ? 'active' : '') - end - def invite_class (@liste == 'invite' ? 'active' : '') end - def search_class - (@liste == 'search' ? 'active' : '') - end - def all_state_total service.all_state.count end @@ -124,38 +88,18 @@ class DossiersListFacades service.nouveaux.count end - def a_traiter_total - service.ouvert.count - end - def en_construction_total service.en_construction.count end - def fige_total - service.fige.count - end - - def en_attente_total - service.waiting_for_user.count - end - def valides_total service.valides.count end - def deposes_total - service.deposes.count - end - def en_instruction_total service.en_instruction.count end - def a_instruire_total - service.a_instruire.count - end - def termine_total service.termine.count end @@ -168,50 +112,6 @@ class DossiersListFacades service.invite.count end - def brouillon_url - base_url 'brouillon' - end - - def all_state_url - base_url 'all_state' - end - - def suivi_url - base_url 'suivi' - 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 @procedure.nil? ? backoffice_dossiers_filter_path(liste: liste) : backoffice_dossiers_procedure_filter_path(id: @procedure.id, liste: liste) end diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml deleted file mode 100644 index 2701dea85..000000000 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ /dev/null @@ -1,23 +0,0 @@ -#onglets - %ul.nav.nav-tabs - - unless Features.opensimplif - %li{ class: (@dossiers_list_facade.nouveaux_class)} - %a{:href => "#{url_for @dossiers_list_facade.nouveaux_url}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers non ouverts.'} - %h5.text-info - = "Nouveaux " - .badge.progress-bar-info - = @dossiers_list_facade.nouveaux_total - - %li{ class: (@dossiers_list_facade.suivi_class) } - %a{:href => "#{url_for @dossiers_list_facade.suivi_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ne sont pas encore déclarés complets.'} - %h5.text-danger - = "Suivis" - .badge.progress-bar-danger - = @dossiers_list_facade.suivi_total - - %li{ class: (@dossiers_list_facade.all_state_class) } - %a{:href => "#{url_for @dossiers_list_facade.all_state_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui sont déclarés complets et donc figés.'} - %h5.text-default - = "Tous" - .badge.progress-bar-default - = @dossiers_list_facade.all_state_total diff --git a/app/views/layouts/navbars/_navbar_log_options.html.haml b/app/views/layouts/navbars/_navbar_log_options.html.haml index 885037252..8fc6c067d 100644 --- a/app/views/layouts/navbars/_navbar_log_options.html.haml +++ b/app/views/layouts/navbars/_navbar_log_options.html.haml @@ -14,6 +14,4 @@ = render partial: 'layouts/credentials' -else .col-lg-1.col-md-1#sign_in - = link_to "Connexion", '/users/sign_in', :class => 'btn btn-lg' - -unless Features.unified_login - = link_to "Accompagnateur", '/gestionnaires/sign_in', :class => 'btn btn-md' + = link_to "Connexion", '/users/sign_in', :class => 'btn btn-lg' \ No newline at end of file From 7c20d1e9a0008e1bbc092d38f53844a3636ea60a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 15:18:34 +0100 Subject: [PATCH 177/182] Add tests for SearchController --- .../controllers/ban/search_controller_spec.rb | 23 +++++++++- .../fixtures/cassettes/ban_search_nothing.yml | 42 +++++++++++++++++ spec/fixtures/cassettes/ban_search_paris.yml | 45 +++++++++++++++++++ 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/cassettes/ban_search_nothing.yml create mode 100644 spec/fixtures/cassettes/ban_search_paris.yml diff --git a/spec/controllers/ban/search_controller_spec.rb b/spec/controllers/ban/search_controller_spec.rb index ccfb20cdf..024f11f61 100644 --- a/spec/controllers/ban/search_controller_spec.rb +++ b/spec/controllers/ban/search_controller_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe Ban::SearchController, type: :controller do - describe '#GET' do + describe '#GET get' do let (:request) { '' } before do @@ -13,4 +13,25 @@ describe Ban::SearchController, type: :controller do it { expect(response.status).to eq 200 } end + + describe '#GET get_address_point' do + let(:dossier_id) { "1" } + subject { get :get_address_point, params: {request: request, dossier_id: dossier_id} } + + before do + subject + end + + context 'when request return result', vcr: {cassette_name: 'ban_search_paris'} do + let(:request) { 'Paris' } + + it { expect(response.body).to eq ({lon: '2.3469', lat: '48.8589', zoom: '14', dossier_id: dossier_id}).to_json } + end + + context 'when request return nothing', vcr: {cassette_name: 'ban_search_nothing'} do + let(:request) { 'je recherche pas grand chose' } + + it { expect(response.body).to eq ({lon: nil, lat: nil, zoom: '14', dossier_id: dossier_id}).to_json } + end + end end diff --git a/spec/fixtures/cassettes/ban_search_nothing.yml b/spec/fixtures/cassettes/ban_search_nothing.yml new file mode 100644 index 000000000..5e36790fd --- /dev/null +++ b/spec/fixtures/cassettes/ban_search_nothing.yml @@ -0,0 +1,42 @@ +--- +http_interactions: +- request: + method: get + uri: http://api-adresse.data.gouv.fr/search?limit=1&q=je%20recherche%20pas%20grand%20chose + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + User-Agent: + - rest-client/2.0.0 (darwin15.6.0 x86_64) ruby/2.3.1p112 + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx/1.11.3 + Date: + - Fri, 16 Dec 2016 14:17:40 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '163' + Connection: + - keep-alive + Access-Control-Allow-Origin: + - "*" + Access-Control-Allow-Headers: + - X-Requested-With + body: + encoding: UTF-8 + string: '{"limit": 1, "attribution": "BAN", "version": "draft", "licence": "ODbL + 1.0", "query": "je recherche pas grand chose", "type": "FeatureCollection", + "features": []}' + http_version: + recorded_at: Fri, 16 Dec 2016 14:17:40 GMT +recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/ban_search_paris.yml b/spec/fixtures/cassettes/ban_search_paris.yml new file mode 100644 index 000000000..d61951ec1 --- /dev/null +++ b/spec/fixtures/cassettes/ban_search_paris.yml @@ -0,0 +1,45 @@ +--- +http_interactions: +- request: + method: get + uri: http://api-adresse.data.gouv.fr/search?limit=1&q=Paris + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + User-Agent: + - rest-client/2.0.0 (darwin15.6.0 x86_64) ruby/2.3.1p112 + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx/1.11.3 + Date: + - Fri, 16 Dec 2016 14:16:43 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '457' + Connection: + - keep-alive + Access-Control-Allow-Origin: + - "*" + Access-Control-Allow-Headers: + - X-Requested-With + body: + encoding: UTF-8 + string: '{"limit": 1, "attribution": "BAN", "version": "draft", "licence": "ODbL + 1.0", "query": "Paris", "type": "FeatureCollection", "features": [{"geometry": + {"type": "Point", "coordinates": [2.3469, 48.8589]}, "properties": {"adm_weight": + "6", "citycode": "75056", "name": "Paris", "city": "Paris", "postcode": "75000", + "context": "75, \u00cele-de-France", "score": 1.0, "label": "Paris", "id": + "75056", "type": "city", "population": "2244"}, "type": "Feature"}]}' + http_version: + recorded_at: Fri, 16 Dec 2016 14:16:43 GMT +recorded_with: VCR 3.0.3 From 24e07689617e43e174c484601bdf55ab3ff09e22 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 15:34:49 +0100 Subject: [PATCH 178/182] Add tests for invites controller --- .../users/dossiers/invites_controller_spec.rb | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/spec/controllers/users/dossiers/invites_controller_spec.rb b/spec/controllers/users/dossiers/invites_controller_spec.rb index 623eccdff..70bfcbc70 100644 --- a/spec/controllers/users/dossiers/invites_controller_spec.rb +++ b/spec/controllers/users/dossiers/invites_controller_spec.rb @@ -51,4 +51,28 @@ RSpec.describe Users::Dossiers::InvitesController, type: :controller do end end end + + describe '#GET show' do + let(:user) { create :user } + + let(:invite) { create :invite, email: email, dossier: (create :dossier) } + + subject { get :show, params: {id: invite.id} } + + before do + sign_in user + end + + context 'when invitation ID is attach at the user email account' do + let(:email) { user.email } + it { expect(subject.status).to eq 200 } + end + + context 'when invitation ID is not attach at the user email account' do + let(:email) { 'fake@email.com' } + + it { expect(subject.status).to eq 302 } + it { is_expected.to redirect_to users_dossiers_path } + end + end end \ No newline at end of file From ee82e7fa8abe95f95abe1b65b61bf908a49531ab Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 17:15:13 +0100 Subject: [PATCH 179/182] Add ProcedureController tests --- .../dossiers/procedure_controller.rb | 4 +- .../dossiers/procedure_controller_spec.rb | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 spec/controllers/backoffice/dossiers/procedure_controller_spec.rb diff --git a/app/controllers/backoffice/dossiers/procedure_controller.rb b/app/controllers/backoffice/dossiers/procedure_controller.rb index 74b092f43..76b96bf66 100644 --- a/app/controllers/backoffice/dossiers/procedure_controller.rb +++ b/app/controllers/backoffice/dossiers/procedure_controller.rb @@ -7,14 +7,14 @@ class Backoffice::Dossiers::ProcedureController < Backoffice::DossiersListContro render 'backoffice/dossiers/index' 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 end def filter super - redirect_to backoffice_dossiers_procedure_path(id: params[:id], liste: param_liste) + redirect_to backoffice_dossiers_procedure_path(id: params[:id]) end private diff --git a/spec/controllers/backoffice/dossiers/procedure_controller_spec.rb b/spec/controllers/backoffice/dossiers/procedure_controller_spec.rb new file mode 100644 index 000000000..7967e1010 --- /dev/null +++ b/spec/controllers/backoffice/dossiers/procedure_controller_spec.rb @@ -0,0 +1,38 @@ +require 'spec_helper' + +describe Backoffice::Dossiers::ProcedureController, type: :controller do + let(:gestionnaire) { create :gestionnaire } + let(:procedure) { create :procedure } + + before do + create :assign_to, gestionnaire: gestionnaire, procedure: procedure + sign_in gestionnaire + gestionnaire.build_default_preferences_list_dossier procedure.id + end + + describe 'GET #index' do + let(:procedure_id) { procedure.id } + + subject { get :index, params: {id: procedure_id} } + + it { expect(subject.status).to eq 200 } + + context 'when procedure id is not found' do + let(:procedure_id) { 100000 } + + before do + subject + end + + it { expect(response.status).to eq 302 } + it { is_expected.to redirect_to backoffice_dossiers_path } + it { expect(flash[:alert]).to be_present} + end + end + + describe 'GET #filter' do + subject { get :filter, params: {id: procedure.id, filter_input: {"entreprise.raison_sociale" => "plop"}} } + + it { is_expected.to redirect_to backoffice_dossiers_procedure_path(id: procedure.id) } + end +end \ No newline at end of file From 5b8f0304f9a9248c855040d15d2d33180f16e442 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 17:28:50 +0100 Subject: [PATCH 180/182] Add tests for Carto Geocodeur --- spec/fixtures/cassettes/bano_octo.yml | 47 +++++++++++++++++++++++++++ spec/lib/carto/geocodeur_spec.rb | 26 +++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 spec/fixtures/cassettes/bano_octo.yml create mode 100644 spec/lib/carto/geocodeur_spec.rb diff --git a/spec/fixtures/cassettes/bano_octo.yml b/spec/fixtures/cassettes/bano_octo.yml new file mode 100644 index 000000000..ddf8b0b82 --- /dev/null +++ b/spec/fixtures/cassettes/bano_octo.yml @@ -0,0 +1,47 @@ +--- +http_interactions: +- request: + method: get + uri: http://api-adresse.data.gouv.fr/search?limit=1&q=50%20av%20des%20champs%20elysees + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + User-Agent: + - rest-client/2.0.0 (darwin15.6.0 x86_64) ruby/2.3.1p112 + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx/1.11.3 + Date: + - Fri, 16 Dec 2016 16:22:23 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '628' + Connection: + - keep-alive + Access-Control-Allow-Origin: + - "*" + Access-Control-Allow-Headers: + - X-Requested-With + body: + encoding: UTF-8 + string: '{"limit": 1, "attribution": "BAN", "version": "draft", "licence": "ODbL + 1.0", "query": "50 av des champs elysees", "type": "FeatureCollection", "features": + [{"geometry": {"type": "Point", "coordinates": [2.306888, 48.870374]}, "properties": + {"citycode": "75108", "postcode": "75008", "name": "50 Avenue des Champs \u00c9lys\u00e9es", + "id": "ADRNIVX_0000000270748251", "type": "housenumber", "context": "75, \u00cele-de-France", + "score": 0.7561038961038961, "label": "50 Avenue des Champs \u00c9lys\u00e9es + 75008 Paris", "city": "Paris", "housenumber": "50", "street": "Avenue des + Champs \u00c9lys\u00e9es"}, "type": "Feature"}]}' + http_version: + recorded_at: Fri, 16 Dec 2016 16:22:23 GMT +recorded_with: VCR 3.0.3 diff --git a/spec/lib/carto/geocodeur_spec.rb b/spec/lib/carto/geocodeur_spec.rb new file mode 100644 index 000000000..a9a071010 --- /dev/null +++ b/spec/lib/carto/geocodeur_spec.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +describe Carto::Geocodeur do + let(:address) { '50 av des champs elysees' } + describe '.convert_adresse_to_point', vcr: { cassette_name: 'bano_octo' } do + it 'return a point' do + expect(described_class.convert_adresse_to_point(address).class).to eq(RGeo::Cartesian::PointImpl) + end + context 'when RestClient::Exception' do + before do + allow_any_instance_of(Carto::Bano::Driver).to receive(:call).and_raise(RestClient::Exception) + end + it 'return nil' do + expect(described_class.convert_adresse_to_point(address)).to be_nil + end + end + context 'when JSON::ParserError' do + before do + allow_any_instance_of(Carto::Bano::PointRetriever).to receive(:point).and_raise(JSON::ParserError) + end + it 'return nil' do + expect(described_class.convert_adresse_to_point(address)).to be_nil + end + end + end +end From 5ee455a36fa0a07a1c2f058b429188b65fb3b8c9 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Dec 2016 17:51:07 +0100 Subject: [PATCH 181/182] Add real tests for search controller --- .../controllers/ban/search_controller_spec.rb | 22 +++++-- .../cassettes/bano_search_nothing.yml | 42 +++++++++++++ spec/fixtures/cassettes/bano_search_paris.yml | 63 +++++++++++++++++++ 3 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 spec/fixtures/cassettes/bano_search_nothing.yml create mode 100644 spec/fixtures/cassettes/bano_search_paris.yml diff --git a/spec/controllers/ban/search_controller_spec.rb b/spec/controllers/ban/search_controller_spec.rb index 024f11f61..e51ef2a52 100644 --- a/spec/controllers/ban/search_controller_spec.rb +++ b/spec/controllers/ban/search_controller_spec.rb @@ -2,16 +2,26 @@ require 'spec_helper' describe Ban::SearchController, type: :controller do describe '#GET get' do - let (:request) { '' } + subject { get :get, params: {request: request} } before do - stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=5&q="). - to_return(:status => 200, :body => 'Missing query', :headers => {}) - - get :get, params: {request: request} + subject end - it { expect(response.status).to eq 200 } + context 'when request return result', vcr: {cassette_name: 'bano_search_paris'} do + let (:request) { 'Paris' } + + it { expect(response.status).to eq 200 } + it { expect(response.body).to eq '[{"label":"Paris"},{"label":"Paris 63120 Courpière"},{"label":"PARIS (Vaillac) 46240 Cœur de Causse"},{"label":"Paris 40500 Saint-Sever"},{"label":"Paris Buton 37140 Bourgueil"}]' } + end + + context 'when request return nothing', vcr: {cassette_name: 'bano_search_nothing'} do + + let (:request) { 'je recherche pas grand chose' } + + it { expect(response.status).to eq 200 } + it { expect(response.body).to eq "[]" } + end end describe '#GET get_address_point' do diff --git a/spec/fixtures/cassettes/bano_search_nothing.yml b/spec/fixtures/cassettes/bano_search_nothing.yml new file mode 100644 index 000000000..597c71025 --- /dev/null +++ b/spec/fixtures/cassettes/bano_search_nothing.yml @@ -0,0 +1,42 @@ +--- +http_interactions: +- request: + method: get + uri: http://api-adresse.data.gouv.fr/search?limit=5&q=je%20recherche%20pas%20grand%20chose + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + User-Agent: + - rest-client/2.0.0 (darwin15.6.0 x86_64) ruby/2.3.1p112 + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx/1.11.3 + Date: + - Fri, 16 Dec 2016 16:45:53 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '163' + Connection: + - keep-alive + Access-Control-Allow-Origin: + - "*" + Access-Control-Allow-Headers: + - X-Requested-With + body: + encoding: UTF-8 + string: '{"limit": 5, "attribution": "BAN", "version": "draft", "licence": "ODbL + 1.0", "query": "je recherche pas grand chose", "type": "FeatureCollection", + "features": []}' + http_version: + recorded_at: Fri, 16 Dec 2016 16:45:53 GMT +recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/bano_search_paris.yml b/spec/fixtures/cassettes/bano_search_paris.yml new file mode 100644 index 000000000..571c86ffe --- /dev/null +++ b/spec/fixtures/cassettes/bano_search_paris.yml @@ -0,0 +1,63 @@ +--- +http_interactions: +- request: + method: get + uri: http://api-adresse.data.gouv.fr/search?limit=5&q=Paris + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + User-Agent: + - rest-client/2.0.0 (darwin15.6.0 x86_64) ruby/2.3.1p112 + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx/1.11.3 + Date: + - Fri, 16 Dec 2016 16:43:34 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1887' + Connection: + - keep-alive + Access-Control-Allow-Origin: + - "*" + Access-Control-Allow-Headers: + - X-Requested-With + body: + encoding: UTF-8 + string: '{"limit": 5, "attribution": "BAN", "version": "draft", "licence": "ODbL + 1.0", "query": "Paris", "type": "FeatureCollection", "features": [{"geometry": + {"type": "Point", "coordinates": [2.3469, 48.8589]}, "properties": {"adm_weight": + "6", "citycode": "75056", "name": "Paris", "city": "Paris", "postcode": "75000", + "context": "75, \u00cele-de-France", "score": 1.0, "label": "Paris", "id": + "75056", "type": "city", "population": "2244"}, "type": "Feature"}, {"geometry": + {"type": "Point", "coordinates": [3.564293, 45.766413]}, "properties": {"citycode": + "63125", "postcode": "63120", "name": "Paris", "city": "Courpi\u00e8re", "context": + "63, Puy-de-D\u00f4me, Auvergne", "score": 0.8255363636363636, "label": "Paris + 63120 Courpi\u00e8re", "id": "63125_B221_03549b", "type": "locality"}, "type": + "Feature"}, {"geometry": {"type": "Point", "coordinates": [1.550208, 44.673592]}, + "properties": {"citycode": "46138", "postcode": "46240", "name": "PARIS (Vaillac)", + "city": "C\u0153ur de Causse", "context": "46, Lot, Midi-Pyr\u00e9n\u00e9es", + "score": 0.824090909090909, "label": "PARIS (Vaillac) 46240 C\u0153ur de Causse", + "id": "46138_XXXX_6ee4ec", "type": "street"}, "type": "Feature"}, {"geometry": + {"type": "Point", "coordinates": [-0.526884, 43.762253]}, "properties": {"citycode": + "40282", "postcode": "40500", "name": "Paris", "city": "Saint-Sever", "context": + "40, Landes, Aquitaine", "score": 0.8236181818181818, "label": "Paris 40500 + Saint-Sever", "id": "40282_B237_2364e3", "type": "locality"}, "type": "Feature"}, + {"geometry": {"type": "Point", "coordinates": [0.157613, 47.336685]}, "properties": + {"citycode": "37031", "postcode": "37140", "name": "Paris Buton", "city": + "Bourgueil", "context": "37, Indre-et-Loire, Centre Val-de-Loire", "score": + 0.8235454545454545, "label": "Paris Buton 37140 Bourgueil", "id": "37031_X027_0a5e7a", + "type": "locality"}, "type": "Feature"}]}' + http_version: + recorded_at: Fri, 16 Dec 2016 16:43:34 GMT +recorded_with: VCR 3.0.3 From 2f9444ea14eac344f6f1f07c7c187b932b84b108 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 19 Dec 2016 12:04:04 +0100 Subject: [PATCH 182/182] MAJ spec_helper --- spec/spec_helper.rb | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a5bb73528..d999bf456 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -19,9 +19,11 @@ ENV['RAILS_ENV'] ||= 'test' -# require 'simplecov' -# SimpleCov.start 'rails' -# puts "required simplecov" +if ENV['COV'] + require 'simplecov' + SimpleCov.start 'rails' + puts "required simplecov" +end require File.expand_path('../../config/environment', __FILE__) require 'rspec/rails' @@ -77,20 +79,6 @@ module SmartListing end end -class Features - #def self.remote_storage - # true - #end - - def self.unified_login - false - end - - def self.opensimplif - false - end -end - WebMock.disable_net_connect!(allow_localhost: true) RSpec.configure do |config| @@ -128,7 +116,7 @@ RSpec.configure do |config| if Features.remote_storage VCR.use_cassette("ovh_storage_init") do CarrierWave.configure do |config| - config.fog_credentials = { provider: 'OpenStack' } + config.fog_credentials = {provider: 'OpenStack'} end end end