diff options
| author | cedricnjanga | 2018-01-24 19:55:56 -0800 |
|---|---|---|
| committer | cedricnjanga | 2018-01-24 19:55:56 -0800 |
| commit | f32d869cc3f34a939764cc3fa4d612a5d6544d08 (patch) | |
| tree | 87d5a6b4f589a39e038451e3dd6290ba975f7986 | |
| parent | 0f59b9c1d0133393f68194a366aafc27ca23392b (diff) | |
| download | chouette-core-f32d869cc3f34a939764cc3fa4d612a5d6544d08.tar.bz2 | |
update calendar build_links for table builder
| -rw-r--r-- | app/controllers/calendars_controller.rb | 25 | ||||
| -rw-r--r-- | app/controllers/concerns/workgroup_support.rb | 12 | ||||
| -rw-r--r-- | app/helpers/table_builder_helper/url.rb | 4 | ||||
| -rw-r--r-- | app/models/calendar.rb | 2 | ||||
| -rw-r--r-- | app/views/calendars/_form.html.slim | 2 | ||||
| -rw-r--r-- | app/views/calendars/edit.html.slim | 2 | ||||
| -rw-r--r-- | app/views/calendars/index.html.slim | 2 | ||||
| -rw-r--r-- | app/views/calendars/new.html.slim | 2 | ||||
| -rw-r--r-- | app/views/calendars/show.html.slim | 4 | ||||
| -rw-r--r-- | config/breadcrumbs.rb | 10 | ||||
| -rw-r--r-- | lib/stif/dashboard.rb | 6 |
11 files changed, 50 insertions, 21 deletions
diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb index 72d213953..27c944f5f 100644 --- a/app/controllers/calendars_controller.rb +++ b/app/controllers/calendars_controller.rb @@ -1,4 +1,5 @@ class CalendarsController < ChouetteController + include WorkgroupSupport include PolicyChecker defaults resource_class: Calendar before_action :ransack_contains_date, only: [:index] @@ -7,19 +8,30 @@ class CalendarsController < ChouetteController def index index! do - @calendars = ModelDecorator.decorate(@calendars, with: CalendarDecorator, context: { - workgroup: current_workgroup - }) + @calendars = decorate_calendars(@calendars) end end def show show! do - @calendar = @calendar.decorate + @calendar = @calendar.decorate(context: { + workgroup: current_workgroup + }) end end private + + def decorate_calendars(calendars) + ModelDecorator.decorate( + calendars, + with: CalendarDecorator, + context: { + workgroup: current_workgroup + } + ) + end + def calendar_params permitted_params = [:id, :name, :short_name, :shared, periods_attributes: [:id, :begin, :end, :_destroy], date_values_attributes: [:id, :value, :_destroy]] permitted_params << :shared if policy(Calendar).share? @@ -36,18 +48,19 @@ class CalendarsController < ChouetteController protected def resource - @calendar = Calendar.where('organisation_id = ? OR shared = true', current_organisation.id).find_by_id(params[:id]) + @calendar = Calendar.where('(organisation_id = ? OR shared = ?) AND workgroup_id = ?', current_organisation.id).find_by_id(params[:id], true, @workgroup.id) end def build_resource super.tap do |calendar| + calendar.workgroup = current_workgroup calendar.organisation = current_organisation end end def collection return @calendars if @calendars - scope = Calendar.where('organisation_id = ? OR shared = ?', current_organisation.id, true) + scope = Calendar.where('(organisation_id = ? OR shared = ?) AND workgroup_id = ?', current_organisation.id, true, @workgroup.id) scope = shared_scope(scope) @q = scope.ransack(params[:q]) diff --git a/app/controllers/concerns/workgroup_support.rb b/app/controllers/concerns/workgroup_support.rb new file mode 100644 index 000000000..a3b49bb12 --- /dev/null +++ b/app/controllers/concerns/workgroup_support.rb @@ -0,0 +1,12 @@ +module WorkgroupSupport + extend ActiveSupport::Concern + + included do + before_action :find_workgroup + end + + def find_workgroup + @workgroup ||= Workgroup.find params[:workgroup_id] + end + +end diff --git a/app/helpers/table_builder_helper/url.rb b/app/helpers/table_builder_helper/url.rb index 40e1f839f..0e3dce0aa 100644 --- a/app/helpers/table_builder_helper/url.rb +++ b/app/helpers/table_builder_helper/url.rb @@ -3,7 +3,7 @@ module TableBuilderHelper def self.polymorphic_url_parts(item, referential, workgroup) polymorph_url = [] - unless item.is_a?(Referential) || item.is_a?(ComplianceControlSet) + unless item.is_a?(Calendar) || item.is_a?(Referential) || item.is_a?(ComplianceControlSet) if referential polymorph_url << referential polymorph_url << item.line if item.respond_to? :line @@ -20,7 +20,7 @@ module TableBuilderHelper end end else - polymorph_url << item.workgroup if item.is_a?(Calendar) + polymorph_url << item.workgroup if item.respond_to? :workgroup polymorph_url << item end diff --git a/app/models/calendar.rb b/app/models/calendar.rb index 236223892..d93532908 100644 --- a/app/models/calendar.rb +++ b/app/models/calendar.rb @@ -10,7 +10,7 @@ class Calendar < ActiveRecord::Base belongs_to :organisation belongs_to :workgroup - validates_presence_of :name, :short_name, :organisation + validates_presence_of :name, :short_name, :organisation, :workgroup validates_uniqueness_of :short_name has_many :time_tables diff --git a/app/views/calendars/_form.html.slim b/app/views/calendars/_form.html.slim index 3c152c61d..bf9f4f3a7 100644 --- a/app/views/calendars/_form.html.slim +++ b/app/views/calendars/_form.html.slim @@ -1,4 +1,4 @@ -= simple_form_for @calendar, html: { class: 'form-horizontal', id: 'calendar_form' }, wrapper: :horizontal_form do |f| += simple_form_for [@workgroup, @calendar], html: { class: 'form-horizontal', id: 'calendar_form' }, wrapper: :horizontal_form do |f| .row .col-lg-12 = f.input :name diff --git a/app/views/calendars/edit.html.slim b/app/views/calendars/edit.html.slim index e806fc94b..a1af5e257 100644 --- a/app/views/calendars/edit.html.slim +++ b/app/views/calendars/edit.html.slim @@ -1,4 +1,4 @@ -- breadcrumb :calendar, @calendar +- breadcrumb :calendar, @workgroup, @calendar - page_header_content_for @calendar .page_content .container-fluid diff --git a/app/views/calendars/index.html.slim b/app/views/calendars/index.html.slim index d0544856d..60bc9793d 100644 --- a/app/views/calendars/index.html.slim +++ b/app/views/calendars/index.html.slim @@ -1,4 +1,4 @@ -- breadcrumb :calendars +- breadcrumb :calendars, current_workgroup - content_for :page_header_actions do - if policy(Calendar).create? = link_to(t('actions.add'), new_workgroup_calendar_path(current_workgroup), class: 'btn btn-default') diff --git a/app/views/calendars/new.html.slim b/app/views/calendars/new.html.slim index ce8b6a036..c1e084913 100644 --- a/app/views/calendars/new.html.slim +++ b/app/views/calendars/new.html.slim @@ -1,4 +1,4 @@ -- breadcrumb :calendars +- breadcrumb :calendars, @workgroup .page_content .container-fluid .row diff --git a/app/views/calendars/show.html.slim b/app/views/calendars/show.html.slim index da4afa3e6..9f7512173 100644 --- a/app/views/calendars/show.html.slim +++ b/app/views/calendars/show.html.slim @@ -1,4 +1,4 @@ -- breadcrumb :calendar, @calendar +- breadcrumb :calendar, @workgroup, @calendar - page_header_content_for @calendar - content_for :page_header_content do .row.mb-sm @@ -11,7 +11,7 @@ = link.content - if policy(@calendar).edit? - content_for :page_header_actions do - = link_to(t('actions.edit'), edit_calendar_path(@calendar), class: 'btn btn-default') + = link_to(t('actions.edit'), edit_workgroup_calendar_path(@workgroup, @calendar), class: 'btn btn-default') .page_content .container-fluid diff --git a/config/breadcrumbs.rb b/config/breadcrumbs.rb index 6da96d73a..2772895fe 100644 --- a/config/breadcrumbs.rb +++ b/config/breadcrumbs.rb @@ -202,13 +202,13 @@ crumb :purchase_window do |referential, purchase_window| parent :purchase_windows, referential end -crumb :calendars do - link I18n.t('calendars.index.title'), calendars_path +crumb :calendars do |workgroup| + link I18n.t('calendars.index.title'), workgroup_calendars_path(workgroup) end -crumb :calendar do |calendar| - link breadcrumb_name(calendar), calendar_path(calendar) - parent :calendars +crumb :calendar do |workgroup, calendar| + link breadcrumb_name(calendar), workgroup_calendar_path(workgroup, calendar) + parent :calendars, workgroup end crumb :referential_line do |referential, line| diff --git a/lib/stif/dashboard.rb b/lib/stif/dashboard.rb index 7dd83efbc..46c635091 100644 --- a/lib/stif/dashboard.rb +++ b/lib/stif/dashboard.rb @@ -4,12 +4,16 @@ module Stif @workbench ||= current_organisation.workbenches.find_by(name: "Gestion de l'offre") end + def workgroup + workbench.workgroup + end + def referentials @referentials ||= self.workbench.all_referentials end def calendars - @calendars ||= Calendar.where('workgroup_id = ? OR shared = ?', @workbench.workgroup_id, true) + @calendars ||= Calendar.where('(organisation_id = ? OR shared = ?) AND workgroup_id = ?', current_organisation.id, true, workgroup.id) end end end |
