aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorZog2018-02-08 10:33:46 +0100
committerLuc Donnet2018-02-20 10:20:18 +0100
commit3dcea81c627c1c740630ce7306bac55256ce8037 (patch)
tree1ff79bdb5f04aba4503b47c781aaa0146d1ac32a /app
parent3809301116aec5466445b29637026804da3d6745 (diff)
downloadchouette-core-3dcea81c627c1c740630ce7306bac55256ce8037.tar.bz2
Refs #5863 @6h; Remove workbench id from the querystring
Infer it when possible, and use a nested otherwise
Diffstat (limited to 'app')
-rw-r--r--app/controllers/application_controller.rb10
-rw-r--r--app/controllers/referentials_controller.rb12
-rw-r--r--app/decorators/referential_decorator.rb4
-rw-r--r--app/helpers/referentials_helper.rb10
-rw-r--r--app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js10
-rw-r--r--app/models/chouette/stop_area.rb2
-rw-r--r--app/models/organisation.rb4
-rw-r--r--app/models/user.rb1
-rw-r--r--app/models/workbench.rb7
-rw-r--r--app/views/dashboards/_dashboard.html.slim30
-rw-r--r--app/views/layouts/navigation/_main_nav_left_content_stif.html.slim10
-rw-r--r--app/views/referentials/_form.html.slim4
-rw-r--r--app/views/referentials/select_compliance_control_set.html.slim2
-rw-r--r--app/views/stif/dashboards/_dashboard.html.slim6
-rw-r--r--app/views/workbenches/show.html.slim4
15 files changed, 69 insertions, 47 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 8bd3da2f9..45b7f55f6 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -36,16 +36,6 @@ class ApplicationController < ActionController::Base
end
helper_method :current_organisation
- def current_offer_workbench
- current_organisation.workbenches.find_by_name("Gestion de l'offre")
- end
- helper_method :current_offer_workbench
-
- def current_workgroup
- current_offer_workbench.workgroup
- end
- helper_method :current_workgroup
-
def current_functional_scope
functional_scope = current_organisation.sso_attributes.try(:[], "functional_scope") if current_organisation
JSON.parse(functional_scope) if functional_scope
diff --git a/app/controllers/referentials_controller.rb b/app/controllers/referentials_controller.rb
index 0ed3f75dd..5267c15d8 100644
--- a/app/controllers/referentials_controller.rb
+++ b/app/controllers/referentials_controller.rb
@@ -1,5 +1,6 @@
class ReferentialsController < ChouetteController
defaults :resource_class => Referential
+ before_action :load_workbench
include PolicyChecker
respond_to :html
@@ -30,7 +31,7 @@ class ReferentialsController < ChouetteController
def show
resource.switch
show! do |format|
- @referential = @referential.decorate(context: { current_workbench_id: params[:current_workbench_id] } )
+ @referential = @referential.decorate()
@reflines = lines_collection.paginate(page: params[:page], per_page: 10)
@reflines = ReferentialLineDecorator.decorate(
@reflines,
@@ -141,7 +142,6 @@ class ReferentialsController < ChouetteController
if params[:from]
source_referential = Referential.find(params[:from])
@referential = Referential.new_from(source_referential, current_functional_scope)
- @referential.workbench_id = params[:current_workbench_id]
end
@referential.data_format = current_organisation.data_format
@@ -175,4 +175,12 @@ class ReferentialsController < ChouetteController
)
end
+ def load_workbench
+ @workbench ||= Workbench.find(params[:workbench_id]) if params[:workbench_id]
+ @workbench ||= resource&.workbench if params[:id]
+ @workbench
+ end
+
+ alias_method :current_workbench, :load_workbench
+ helper_method :current_workbench
end
diff --git a/app/decorators/referential_decorator.rb b/app/decorators/referential_decorator.rb
index 3132cbf92..41cad237d 100644
--- a/app/decorators/referential_decorator.rb
+++ b/app/decorators/referential_decorator.rb
@@ -22,12 +22,12 @@ class ReferentialDecorator < AF83::Decorator
instance_decorator.action_link policy: :clone, secondary: :show do |l|
l.content t('actions.clone')
- l.href { h.new_referential_path(from: object.id, current_workbench_id: context[:current_workbench_id]) }
+ l.href { h.duplicate_workbench_referential_path(object) }
end
instance_decorator.action_link policy: :validate, secondary: :show do |l|
l.content t('actions.validate')
- l.href { h.referential_select_compliance_control_set_path(object.id) }
+ l.href { h.select_compliance_control_set_referential_path(object.id) }
end
instance_decorator.action_link policy: :archive, secondary: :show do |l|
diff --git a/app/helpers/referentials_helper.rb b/app/helpers/referentials_helper.rb
index 8251377aa..e464ec8a5 100644
--- a/app/helpers/referentials_helper.rb
+++ b/app/helpers/referentials_helper.rb
@@ -15,4 +15,14 @@ module ReferentialsHelper
service = ReferentialOverview.new referential, self
render partial: "referentials/overview", locals: {referential: referential, overview: service}
end
+
+ def mutual_workbench workbench
+ current_user.organisation.workbenches.where(workgroup_id: workbench.workgroup_id).last
+ end
+
+ def duplicate_workbench_referential_path referential
+ workbench = mutual_workbench referential.workbench
+ raise "Missing workbench for referential #{referential.name}" unless workbench.present?
+ new_workbench_referential_path(workbench, from: referential.id)
+ end
end
diff --git a/app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js b/app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js
index 7ab85a1ea..72dbd0152 100644
--- a/app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js
+++ b/app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js
@@ -29,11 +29,11 @@ export default class BSelect4 extends Component {
val = this.props.selection.selectedJPModal
}
}
- if(this.useAjax()){
- val = val.published_name
- }
- else{
- if(val){
+ if(val){
+ if(this.useAjax()){
+ val = val.published_name
+ }
+ else{
val = val.id
}
}
diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb
index bb8747faa..830fe8b78 100644
--- a/app/models/chouette/stop_area.rb
+++ b/app/models/chouette/stop_area.rb
@@ -384,8 +384,8 @@ module Chouette
def country_name
return unless country_code
-
country = ISO3166::Country[country_code]
+ return unless country
country.translations[I18n.locale.to_s] || country.name
end
diff --git a/app/models/organisation.rb b/app/models/organisation.rb
index da7d1fcf3..e8fb4e060 100644
--- a/app/models/organisation.rb
+++ b/app/models/organisation.rb
@@ -80,4 +80,8 @@ class Organisation < ActiveRecord::Base
features && features.include?(feature.to_s)
end
+ def default_workbench
+ workbenches.default
+ end
+
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 1342f60ed..31e634415 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -15,6 +15,7 @@ class User < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
# attr_accessible :email, :password, :current_password, :password_confirmation, :remember_me, :name, :organisation_attributes
belongs_to :organisation
+ has_many :workbenches, through: :organisation
accepts_nested_attributes_for :organisation
validates :organisation, :presence => true
diff --git a/app/models/workbench.rb b/app/models/workbench.rb
index b80fa64ac..eb53af7aa 100644
--- a/app/models/workbench.rb
+++ b/app/models/workbench.rb
@@ -1,4 +1,6 @@
class Workbench < ActiveRecord::Base
+ DEFAULT_WORKBENCH_NAME = "Gestion de l'offre"
+
include ObjectidFormatterSupport
belongs_to :organisation
belongs_to :line_referential
@@ -40,6 +42,11 @@ class Workbench < ActiveRecord::Base
end
end
+ def self.default
+ self.last if self.count == 1
+ where(name: DEFAULT_WORKBENCH_NAME).last
+ end
+
private
def initialize_output
diff --git a/app/views/dashboards/_dashboard.html.slim b/app/views/dashboards/_dashboard.html.slim
index 05257a766..7f78934a6 100644
--- a/app/views/dashboards/_dashboard.html.slim
+++ b/app/views/dashboards/_dashboard.html.slim
@@ -14,25 +14,25 @@
- if workbench.referentials.present?
.list-group
- workbench.referentials.limit(5).each do |referential|
- = link_to referential.name, referential_path(referential, workbench_id: referential.workbench_id, current_workbench_id: workbench.id), class: 'list-group-item'
+ = link_to referential.name, referential_path(referential), class: 'list-group-item'
- else
.panel-body
em.small.text-muted = t('workbenches.index.offers.no_content')
- .panel.panel-default
- .panel-heading
- h3.panel-title.with_actions
- = link_to I18n.t("activerecord.models.calendar", count: @dashboard.current_organisation.calendars.size), workgroup_calendars_path(current_workgroup)
- div
- = link_to '', workgroup_calendars_path(current_workgroup), class: ' fa fa-chevron-right pull-right'
- - if @dashboard.current_organisation.calendars.present?
- .list-group
- - @dashboard.current_organisation.calendars.order("updated_at desc").limit(5).each do |calendar|
- = link_to calendar.name, workgroup_calendars_path(current_workgroup, calendar), class: 'list-group-item'
- - else
- .panel-body
- em.small.text-muted
- = t('dasboard.calendars.none')
+ .panel.panel-default
+ .panel-heading
+ h3.panel-title.with_actions
+ = link_to I18n.t("activerecord.models.calendar", count: @dashboard.current_organisation.calendars.size), workgroup_calendars_path(workbench.workgroup)
+ div
+ = link_to '', workgroup_calendars_path(workbench.workgroup), class: ' fa fa-chevron-right pull-right'
+ - if @dashboard.current_organisation.calendars.present?
+ .list-group
+ - @dashboard.current_organisation.calendars.order("updated_at desc").limit(5).each do |calendar|
+ = link_to calendar.name, workgroup_calendars_path(workbench.workgroup, calendar), class: 'list-group-item'
+ - else
+ .panel-body
+ em.small.text-muted
+ = t('dasboard.calendars.none')
.col-lg-6.col-md-6.col-sm-6.col-xs-12
.panel.panel-default
diff --git a/app/views/layouts/navigation/_main_nav_left_content_stif.html.slim b/app/views/layouts/navigation/_main_nav_left_content_stif.html.slim
index 1b7293d21..cb0698cf8 100644
--- a/app/views/layouts/navigation/_main_nav_left_content_stif.html.slim
+++ b/app/views/layouts/navigation/_main_nav_left_content_stif.html.slim
@@ -24,14 +24,14 @@
#miTwo.panel-collapse.collapse
.list-group
- - if current_user
- = link_to workbench_path(current_offer_workbench), class: "list-group-item #{params[:controller] == 'workbenches' ? 'active' : ''}" do
+ - current_user.workbenches.each do |current_workbench|
+ = link_to workbench_path(current_workbench), class: "list-group-item #{params[:controller] == 'workbenches' ? 'active' : ''}" do
span Jeux de données
- = link_to workbench_imports_path(current_offer_workbench), class: "list-group-item #{(params[:controller] == 'imports') ? 'active' : ''}" do
+ = link_to workbench_imports_path(current_workbench), class: "list-group-item #{(params[:controller] == 'imports') ? 'active' : ''}" do
span Import
- = link_to workgroup_calendars_path(current_workgroup), class: 'list-group-item' do
+ = link_to workgroup_calendars_path(current_workbench.workgroup), class: 'list-group-item' do
span Modèles de calendrier
- = link_to workbench_compliance_check_sets_path(current_offer_workbench), class: 'list-group-item' do
+ = link_to workbench_compliance_check_sets_path(current_workbench), class: 'list-group-item' do
span Rapport de contrôle
= link_to compliance_control_sets_path, class: 'list-group-item' do
span Jeux de contrôle
diff --git a/app/views/referentials/_form.html.slim b/app/views/referentials/_form.html.slim
index 9927f05bd..1e59ab566 100644
--- a/app/views/referentials/_form.html.slim
+++ b/app/views/referentials/_form.html.slim
@@ -1,4 +1,6 @@
-= simple_form_for @referential, html: {class: 'form-horizontal', id: 'referential_form'}, wrapper: :horizontal_form do |form|
+- url = @referential.new_record? ? [@workbench, @referential] : [@referential]
+
+= simple_form_for @referential, url: url, html: {class: 'form-horizontal', id: 'referential_form'}, wrapper: :horizontal_form do |form|
.row
.col-lg-12
diff --git a/app/views/referentials/select_compliance_control_set.html.slim b/app/views/referentials/select_compliance_control_set.html.slim
index 87a888c0a..69c87aab2 100644
--- a/app/views/referentials/select_compliance_control_set.html.slim
+++ b/app/views/referentials/select_compliance_control_set.html.slim
@@ -2,7 +2,7 @@
.container-fluid
.row
.col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1
- = form_tag validate_referential_path(params[:referential_id]), {class: 'form-horizontal', id: 'select_compliance_control_set', wrapper: :horizontal_form} do
+ = form_tag validate_referential_path(@referential), {class: 'form-horizontal', id: 'select_compliance_control_set', wrapper: :horizontal_form} do
.row
.col-lg-12
.form-group
diff --git a/app/views/stif/dashboards/_dashboard.html.slim b/app/views/stif/dashboards/_dashboard.html.slim
index c28696a94..83a2106bb 100644
--- a/app/views/stif/dashboards/_dashboard.html.slim
+++ b/app/views/stif/dashboards/_dashboard.html.slim
@@ -47,7 +47,7 @@
- if @dashboard.referentials.present?
.list-group
- @dashboard.referentials.first(5).each_with_index do |referential, i|
- = link_to referential.name, referential_path(referential, workbench_id: referential.workbench_id, current_workbench_id: @dashboard.workbench.id), class: 'list-group-item' if i < 6
+ = link_to referential.name, referential_path(referential), class: 'list-group-item' if i < 6
- else
.panel-body
@@ -60,12 +60,12 @@
span.badge.ml-xs = @dashboard.calendars.count if @dashboard.calendars.present?
div
- = link_to '', workgroup_calendars_path(current_workgroup), class: ' fa fa-chevron-right pull-right', title: t('.see')
+ = link_to '', workgroup_calendars_path(@dashboard.workbench.workgroup), class: ' fa fa-chevron-right pull-right', title: t('.see')
- if @dashboard.calendars.present?
.list-group
- @dashboard.calendars.first(5).each_with_index do |calendar, i|
- = link_to calendar.name, workgroup_calendar_path(current_workgroup, calendar), class: 'list-group-item' if i < 6
+ = link_to calendar.name, workgroup_calendar_path(@dashboard.workbench.workgroup, calendar), class: 'list-group-item' if i < 6
- else
.panel-body
diff --git a/app/views/workbenches/show.html.slim b/app/views/workbenches/show.html.slim
index aae34c51b..159aa8ea2 100644
--- a/app/views/workbenches/show.html.slim
+++ b/app/views/workbenches/show.html.slim
@@ -5,7 +5,7 @@
.col-lg-12.text-right
- if policy(Referential).create?
= link_to t('actions.import'), workbench_imports_path(@workbench), class: 'btn btn-primary'
- = link_to t('actions.add'), new_referential_path(workbench_id: @workbench), class: 'btn btn-primary'
+ = link_to t('actions.add'), new_workbench_referential_path(@workbench), class: 'btn btn-primary'
= link_to t('workbenches.actions.show_output'), workbench_output_path(@workbench), class: 'btn btn-primary'
.page_content
@@ -25,7 +25,7 @@
key: :name, \
attribute: 'name', \
link_to: lambda do |referential| \
- referential_path(referential, current_workbench_id: params[:id]) \
+ referential_path(referential) \
end \
), \
TableBuilderHelper::Column.new( \