Awsome struct to share layouts between controllers and there methods

This commit is contained in:
JC 2016-11-22 16:03:32 +01:00
parent 7faf1705da
commit 4f9bcdd225
7 changed files with 57 additions and 53 deletions

View file

@ -3,6 +3,7 @@ class ApplicationController < ActionController::Base
# For APIs, you may want to use :null_session instead. # For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception protect_from_forgery with: :exception
before_action :check_browser before_action :check_browser
before_action :load_navbar_left_pannel_partial_url
def default_url_options def default_url_options
return { protocol: 'https' } if Rails.env.staging? || Rails.env.production? return { protocol: 'https' } if Rails.env.staging? || Rails.env.production?
@ -12,4 +13,13 @@ class ApplicationController < ActionController::Base
def check_browser def check_browser
BROWSER.value = Browser.new(request.user_agent) BROWSER.value = Browser.new(request.user_agent)
end end
def load_navbar_left_pannel_partial_url
controller = request.controller_class
method = params[:action]
service = RenderPartialService.new(controller, method)
@navbar_url = service.navbar
@left_pannel_url = service.left_panel
@facade_data_view = nil
end
end end

View file

@ -1,10 +1,10 @@
class Backoffice::DossiersController < Backoffice::DossiersListController class Backoffice::DossiersController < Backoffice::DossiersListController
before_action :set_layout_options
respond_to :html, :xlsx, :ods, :csv respond_to :html, :xlsx, :ods, :csv
def index def index
super super
dossiers_list_facade.service.filter_procedure_reset! dossiers_list_facade.service.filter_procedure_reset!
@facade_data_view = dossiers_list_facade
end end
def show def show
@ -131,10 +131,6 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
private private
def set_layout_options
@navbar_options = ["dossiers/download_dossiers"]
end
def create_dossier_facade dossier_id def create_dossier_facade dossier_id
@facade = DossierFacades.new dossier_id, current_gestionnaire.email @facade = DossierFacades.new dossier_id, current_gestionnaire.email

View file

@ -18,14 +18,14 @@ class RenderPartialService
private private
def retrieve_navbar def retrieve_navbar
'layouts/navbars/_navbar_' + retrieve_name 'layouts/navbars/navbar_' + retrieve_name
end end
def retrieve_left_panel def retrieve_left_panel
'layouts/left_panel/_leftpanel_' + retrieve_name 'layouts/left_panels/left_panel_' + retrieve_name
end end
def retrieve_name def retrieve_name
controller.to_s.parameterize + '_' + method.to_s controller.to_s.parameterize.underscore + '_' + method.to_s
end end
end end

View file

@ -11,52 +11,42 @@
= image_tag('marianne_small.png', class: 'logo') = image_tag('marianne_small.png', class: 'logo')
%div.col-lg-6#tps-title %div.col-lg-6#tps-title
TPS TPS
%div.col-lg-10.col-md-10.no-padding %div.col-lg-10.col-md-10.no-padding
%div#navbar-body %div#navbar-body
%div.row %div.row
%div.col-lg-7.col-md-7.main-info = render partial: @navbar_url
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
- if false - if false
- if gestionnaire_signed_in? && user_signed_in? - 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'} %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') =t('dynamics.backoffice.dossiers')
%a{href: users_dossiers_path, class: 'btn btn-md'} %a{href: users_dossiers_path, class: 'btn btn-md'}
=t('dynamics.users.mes_dossiers') =t('dynamics.users.mes_dossiers')
- elsif gestionnaire_signed_in? - 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'} %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') =t('dynamics.users.mes_dossiers')
- elsif user_signed_in? - elsif user_signed_in?
%a{href: users_dossiers_path, class: 'btn btn-md'} %a{href: users_dossiers_path, class: 'btn btn-md'}
=t('dynamics.users.mes_dossiers') =t('dynamics.users.mes_dossiers')
- elsif administrateur_signed_in? - elsif administrateur_signed_in?
%a{href: admin_procedures_path, class: 'btn btn-md'} %a{href: admin_procedures_path, class: 'btn btn-md'}
=t('dynamics.admin.menu.title') =t('dynamics.admin.menu.title')
-if user_signed_in? -if user_signed_in?
= render partial: 'users/login_banner' = render partial: 'users/login_banner'
-elsif gestionnaire_signed_in? -elsif gestionnaire_signed_in?
= render partial: 'gestionnaires/login_banner' = render partial: 'gestionnaires/login_banner'
-elsif administrateur_signed_in? -elsif administrateur_signed_in?
= render partial: 'administrateurs/login_banner' = render partial: 'administrateurs/login_banner'
-else -else
= link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md'
-unless Features.unified_login -unless Features.unified_login
= link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md'
= link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md' = link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md'
- if Rails.env != 'production' - if Rails.env != 'production'
%div.staging_warning %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'} %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. Vous vous trouvez actuellement sur la plateforme de test.
%div.badge.progress-bar-danger %div.badge.progress-bar-danger
? ?

View file

@ -26,7 +26,7 @@
= render partial: "layouts/navbar" = render partial: "layouts/navbar"
%div.row.no-margin %div.row.no-margin
%div.col-lg-2.col-md-2#left-pannel %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.col-lg-10.col-md-10#main-container
%div.row %div.row
= render partial: 'layouts/flash_messages' = render partial: 'layouts/flash_messages'

View file

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