From 4f9bcdd225abbedf4d9f1665399c31dfdc9d87d5 Mon Sep 17 00:00:00 2001 From: JC Date: Tue, 22 Nov 2016 16:03:32 +0100 Subject: [PATCH] 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