date_book 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +9 -1
  3. data/.rubocop_todo.yml +2 -1
  4. data/.travis.yml +3 -0
  5. data/Gemfile +16 -4
  6. data/Gemfile.lock +14 -2
  7. data/VERSION +1 -1
  8. data/app/assets/javascripts/date_book/calendar_events.js +3 -3
  9. data/app/assets/stylesheets/date_book.css.scss +31 -2
  10. data/app/controllers/date_book/calendars_controller.rb +30 -19
  11. data/app/controllers/date_book/date_book_controller.rb +1 -1
  12. data/app/controllers/date_book/events_controller.rb +60 -62
  13. data/app/controllers/date_book/graphql_controller.rb +10 -11
  14. data/app/graphql/date_book_schema.rb +4 -4
  15. data/app/graphql/types/calendar_type.rb +4 -2
  16. data/app/graphql/types/date_time_type.rb +9 -5
  17. data/app/graphql/types/event_occurrence_type.rb +4 -2
  18. data/app/graphql/types/event_type.rb +4 -2
  19. data/app/graphql/types/mutation_type.rb +3 -1
  20. data/app/graphql/types/query_type.rb +12 -26
  21. data/app/helpers/date_book/application_helper.rb +4 -7
  22. data/app/helpers/date_book/events_helper.rb +43 -23
  23. data/app/views/date_book/application/_date_range.html.haml +3 -3
  24. data/app/views/date_book/calendars/index.html.haml +19 -3
  25. data/app/views/date_book/calendars/show.html.haml +29 -4
  26. data/app/views/date_book/events/_event.json.jbuilder +3 -1
  27. data/app/views/date_book/events/_form.html.haml +4 -4
  28. data/app/views/date_book/events/_occurrence_dates.html.haml +3 -3
  29. data/app/views/date_book/events/fields/_date.html.haml +1 -1
  30. data/app/views/date_book/events/fields/_day.html.haml +1 -1
  31. data/app/views/date_book/events/fields/_day_of_week.html.haml +3 -3
  32. data/app/views/date_book/events/fields/_duration.html.haml +3 -3
  33. data/app/views/date_book/events/fields/_interval.html.haml +1 -1
  34. data/app/views/date_book/events/fields/_time.html.haml +1 -1
  35. data/app/views/date_book/events/index.html.haml +1 -1
  36. data/app/views/date_book/events/rules/_daily.html.haml +3 -3
  37. data/app/views/date_book/events/rules/_monthly.html.haml +4 -4
  38. data/app/views/date_book/events/rules/_singular.html.haml +3 -3
  39. data/app/views/date_book/events/rules/_weekly.html.haml +4 -4
  40. data/app/views/date_book/events/show.html.haml +1 -1
  41. data/app/views/layouts/_date_book_scripts.html.haml +2 -4
  42. data/config/locales/en.yml +2 -0
  43. data/config/routes.rb +1 -1
  44. data/date_book.gemspec +25 -22
  45. data/db/migrate/20170807133845_create_calendars.rb +3 -0
  46. data/db/migrate/20170807133846_create_events.rb +3 -0
  47. data/db/migrate/20170807133847_create_schedules.rb +9 -6
  48. data/db/migrate/20170807133848_add_fields_to_schedule.rb +3 -0
  49. data/db/migrate/20170807133849_create_event_occurrences.rb +4 -3
  50. data/db/migrate/20170807133850_add_fields_to_event_occurrences.rb +3 -0
  51. data/lib/date_book.rb +11 -2
  52. data/lib/date_book/concerns/ability.rb +9 -12
  53. data/lib/date_book/concerns/acts_as_calendar.rb +5 -6
  54. data/lib/date_book/concerns/acts_as_event.rb +30 -9
  55. data/lib/date_book/concerns/acts_as_event_occurrence.rb +21 -9
  56. data/lib/date_book/concerns/acts_as_ownable.rb +9 -3
  57. data/lib/date_book/concerns/acts_as_owner.rb +5 -6
  58. data/lib/date_book/concerns/acts_as_schedule.rb +14 -7
  59. data/lib/date_book/configuration.rb +14 -11
  60. data/lib/date_book/engine.rb +7 -5
  61. data/lib/date_book/version.rb +2 -0
  62. data/lib/generators/date_book/install/install_generator.rb +27 -29
  63. data/lib/generators/date_book/install/templates/app/models/calendar.rb +4 -1
  64. data/lib/generators/date_book/install/templates/app/models/event.rb +4 -1
  65. data/lib/generators/date_book/install/templates/app/models/event_occurrence.rb +4 -1
  66. data/lib/generators/date_book/install/templates/app/models/schedule.rb +4 -1
  67. data/spec/abilities/event_spec.rb +1 -1
  68. data/spec/controllers/date_book/calendars_controller_spec.rb +48 -20
  69. data/spec/controllers/date_book/events_controller_spec.rb +145 -39
  70. data/spec/dummy/app/models/calendar.rb +3 -1
  71. data/spec/dummy/app/models/event.rb +3 -1
  72. data/spec/dummy/app/models/event_occurrence.rb +3 -1
  73. data/spec/dummy/app/models/role.rb +7 -5
  74. data/spec/dummy/app/models/schedule.rb +3 -1
  75. data/spec/dummy/app/models/user.rb +3 -3
  76. data/spec/dummy/config/initializers/devise.rb +61 -40
  77. data/spec/dummy/config/initializers/high_voltage.rb +2 -0
  78. data/spec/dummy/config/initializers/rolify.rb +5 -2
  79. data/spec/dummy/config/routes.rb +6 -9
  80. data/spec/dummy/db/development.sqlite3 +0 -0
  81. data/spec/dummy/db/migrate/20170728171103_create_users_table.rb +2 -0
  82. data/spec/dummy/db/migrate/20170807134122_add_devise_to_users.rb +4 -3
  83. data/spec/dummy/db/migrate/20170807134128_rolify_create_roles.rb +6 -4
  84. data/spec/dummy/db/migrate/{20170808150915_create_calendars.date_book.rb → 20170808200808_create_calendars.date_book.rb} +3 -0
  85. data/spec/dummy/db/migrate/{20170808150916_create_events.date_book.rb → 20170808200809_create_events.date_book.rb} +3 -0
  86. data/spec/dummy/db/migrate/{20170808150917_create_schedules.date_book.rb → 20170808200810_create_schedules.date_book.rb} +9 -6
  87. data/spec/dummy/db/migrate/{20170808150918_add_fields_to_schedule.date_book.rb → 20170808200811_add_fields_to_schedule.date_book.rb} +3 -0
  88. data/spec/dummy/db/migrate/{20170808150919_create_event_occurrences.date_book.rb → 20170808200812_create_event_occurrences.date_book.rb} +4 -3
  89. data/spec/dummy/db/migrate/{20170808150920_add_fields_to_event_occurrences.date_book.rb → 20170808200813_add_fields_to_event_occurrences.date_book.rb} +3 -0
  90. data/spec/dummy/db/schema.rb +1 -1
  91. data/spec/dummy/db/seeds/calendars.seeds.rb +2 -1
  92. data/spec/dummy/db/seeds/events.seeds.rb +5 -5
  93. data/spec/dummy/db/seeds/users.seeds.rb +3 -1
  94. data/spec/dummy/db/test.sqlite3 +0 -0
  95. data/spec/dummy/lib/basic_benchmark.rb +2 -0
  96. data/spec/factories/calendars.rb +2 -0
  97. data/spec/factories/events.rb +2 -0
  98. data/spec/factories/roles.rb +2 -1
  99. data/spec/factories/users.rb +2 -0
  100. data/spec/features/calendars_spec.rb +47 -5
  101. data/spec/features/events_spec.rb +35 -9
  102. data/spec/helpers/date_book/application_helper_spec.rb +32 -0
  103. data/spec/helpers/date_book/events_helper_spec.rb +181 -13
  104. data/spec/models/calendar_spec.rb +3 -1
  105. data/spec/models/event_spec.rb +3 -1
  106. data/spec/models/role_spec.rb +1 -0
  107. data/spec/rails_helper.rb +6 -1
  108. data/spec/requests/date_book/api_spec.rb +76 -0
  109. data/spec/routing/date_book/calendars_routing_spec.rb +4 -2
  110. data/spec/routing/date_book/events_routing_spec.rb +48 -11
  111. data/spec/support/controller_behaviors.rb +2 -0
  112. data/spec/support/controller_macros.rb +3 -1
  113. data/spec/support/factory_girl.rb +2 -0
  114. data/spec/support/feature_behaviors.rb +9 -9
  115. data/spec/support/loaded_site.rb +2 -0
  116. data/spec/support/loaded_site/calendars.rb +2 -0
  117. data/spec/support/loaded_site/events.rb +3 -1
  118. data/spec/support/loaded_site/users.rb +2 -0
  119. data/spec/support/request_behaviors.rb +12 -63
  120. data/spec/support/shared_connection.rb +2 -0
  121. data/spec/support/utilities.rb +6 -5
  122. metadata +79 -42
  123. data/app/graphql/types/profile_type.rb +0 -7
  124. data/app/helpers/date_book/calendar_helper.rb +0 -4
  125. data/app/views/date_book/application/_all_day_checkbox.html.haml +0 -1
  126. data/bin/rails +0 -15
  127. data/spec/helpers/date_book/calendar_helper_spec.rb +0 -17
  128. data/spec/requests/date_book/events_spec.rb +0 -56
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 16b86a9b5b8d1c35ae319faf85fbf1c23eebc460
4
- data.tar.gz: 54e72d9f916f5749b0c45750d6e301d9e4b52239
3
+ metadata.gz: 30d824b967dd697a492168690a853b36cfd8ab7c
4
+ data.tar.gz: a94fea678e79260b094c8e7380a45731bb97058e
5
5
  SHA512:
6
- metadata.gz: ac397df0c52ef1a1bd82e064429e8ad93576ee38966c31edc740036b5c24d8d8cb765a13e61b487e34e36219015f97848705ceae1b821270edeec5c1f6f489b7
7
- data.tar.gz: 5aee94d1b0912d342a59f29060900d7be17a107e951f19bd041e1b2d384a2e2c64de8b1939362513ac3ba42d3be1ad72247da07adbf8a1924c52f6306798c5e9
6
+ metadata.gz: 360b7ebf587e9b749089338d791d3b0724504b2bb1b7735220cf2b33f3337422e70ef650e4d64953ddd4802f90adeaa7287a7a449b4b4f06f1a843f71752edba
7
+ data.tar.gz: 5fa3b492c6337a37a1447e2f421853846b29b874ce6e71bf312415b18ec15c09dda56b7d14d19cb8378b84967248cc1bd252f0554972744f47fc04194ebb0a5b
@@ -20,4 +20,12 @@ Metrics/ModuleLength:
20
20
  Exclude:
21
21
  - spec/*
22
22
  - spec/*/*
23
- - spec/*/*/*
23
+ - spec/*/*/*
24
+
25
+ Metrics/MethodLength:
26
+ Exclude:
27
+ - db/migrate/*
28
+
29
+ Style/ClassVars:
30
+ Exclude:
31
+ - 'spec/support/shared_connection.rb'
@@ -1,7 +1,8 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2017-04-04 09:26:52 -0600 using RuboCop version 0.48.1.
3
+ # on 2017-08-08 17:08:12 -0600 using RuboCop version 0.49.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
+
@@ -1,3 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.4.1
4
+ before_script:
5
+ - export DISPLAY=:99.0
6
+ - sh -e /etc/init.d/xvfb start
data/Gemfile CHANGED
@@ -29,6 +29,9 @@ gem 'bootstrap3-datetimepicker-rails', '~> 4.17.47'
29
29
  # Haml because I like it
30
30
  gem 'haml-rails', '>= 1.0', '< 2'
31
31
 
32
+ # Sass for smart CSS
33
+ gem 'sass-rails', '>= 5.0', '< 6'
34
+
32
35
  # Jbuilder for easy building of json objects
33
36
  gem 'jbuilder'
34
37
 
@@ -46,14 +49,23 @@ gem 'friendly_id', '>= 5.2', '< 6'
46
49
 
47
50
  # Ice Cube and Schedulable for recurrence and scheduling
48
51
  gem 'ice_cube', '>= 0.16', '< 1'
49
- # gem 'schedulable', '>= 0.0.10', '< 1', git: 'git@github.com:nerakdon/schedulable.git', branch: 'bug_fix'
50
- gem 'schedulable', '>= 0.0.10', '< 1', path: '~/Code/schedulable'
52
+ gem(
53
+ 'schedulable',
54
+ '>= 0.0.10',
55
+ '< 1',
56
+ git: 'https://github.com/gemvein/schedulable.git',
57
+ branch: 'working'
58
+ )
59
+ # gem 'schedulable', '>= 0.0.10', '< 1', path: '~/Code/schedulable'
51
60
  # gem 'schedulable', '>= 0.0.10', '< 1'
52
61
 
53
62
  # Full Calendar to display what we've got
54
63
  gem 'fullcalendar-rails', '>= 3.4', '< 4'
55
64
  gem 'momentjs-rails', '>= 2.9', '< 3'
56
65
 
66
+ # More icons, like the spinner
67
+ gem 'font-awesome-rails', '>= 4.7', '< 5'
68
+
57
69
  # GraphQL for the API
58
70
  gem 'graphql', '>= 1.6', '< 2'
59
71
 
@@ -64,8 +76,8 @@ group :development do
64
76
  gem 'bundler', '~> 1.0'
65
77
  gem 'juwelier', '~> 2.4'
66
78
  # gem 'rspec', '>= 3.5', '< 4'
67
- gem 'rubocop', require: false
68
79
  gem 'graphiql-rails', '>= 1.4', '< 2'
80
+ gem 'rubocop', require: false
69
81
  end
70
82
 
71
83
  group :development, :test do
@@ -73,11 +85,11 @@ group :development, :test do
73
85
  gem 'byebug', '~> 9'
74
86
  gem 'factory_girl_rails', '~> 4.5'
75
87
  gem 'faker', '~> 1.4'
88
+ gem 'high_voltage', '~> 3'
76
89
  gem 'rspec-its', '>= 1'
77
90
  gem 'rspec-rails', '>= 3.5', '< 4'
78
91
  gem 'seedbank', '~> 0.3'
79
92
  gem 'sqlite3', '~> 1.3'
80
- gem 'high_voltage', '~> 3'
81
93
  end
82
94
 
83
95
  group :test do
@@ -1,5 +1,7 @@
1
- PATH
2
- remote: ../schedulable
1
+ GIT
2
+ remote: https://github.com/gemvein/schedulable.git
3
+ revision: 9da6591769c9e488afc537dc3747304125be64ab
4
+ branch: working
3
5
  specs:
4
6
  schedulable (0.0.10)
5
7
  ice_cube
@@ -110,6 +112,8 @@ GEM
110
112
  faraday (0.9.2)
111
113
  multipart-post (>= 1.2, < 3)
112
114
  ffi (1.9.18)
115
+ font-awesome-rails (4.7.0.2)
116
+ railties (>= 3.2, < 5.2)
113
117
  friendly_id (5.2.1)
114
118
  activerecord (>= 4.0.0)
115
119
  fullcalendar-rails (3.4.0.0)
@@ -297,6 +301,12 @@ GEM
297
301
  sass-listen (4.0.0)
298
302
  rb-fsevent (~> 0.9, >= 0.9.4)
299
303
  rb-inotify (~> 0.9, >= 0.9.7)
304
+ sass-rails (5.0.6)
305
+ railties (>= 4.0.0, < 6)
306
+ sass (~> 3.1)
307
+ sprockets (>= 2.8, < 4.0)
308
+ sprockets-rails (>= 2.0, < 4.0)
309
+ tilt (>= 1.1, < 3)
300
310
  seedbank (0.4.0)
301
311
  semver2 (3.4.2)
302
312
  sexp_processor (4.10.0)
@@ -352,6 +362,7 @@ DEPENDENCIES
352
362
  devise (>= 4.3, < 5)
353
363
  factory_girl_rails (~> 4.5)
354
364
  faker (~> 1.4)
365
+ font-awesome-rails (>= 4.7, < 5)
355
366
  friendly_id (>= 5.2, < 6)
356
367
  fullcalendar-rails (>= 3.4, < 4)
357
368
  graphiql-rails (>= 1.4, < 2)
@@ -376,6 +387,7 @@ DEPENDENCIES
376
387
  rspec-its (>= 1)
377
388
  rspec-rails (>= 3.5, < 4)
378
389
  rubocop
390
+ sass-rails (>= 5.0, < 6)
379
391
  schedulable (>= 0.0.10, < 1)!
380
392
  seedbank (~> 0.3)
381
393
  shoulda-matchers (>= 2.8, < 3.2)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.1.0
@@ -1,11 +1,11 @@
1
1
  function calendarBySlugQuery(slug) {
2
2
  // GraphQL requires double-quoted strings in the query:
3
- return(' { calendar(slug: "' + slug + '") { event_occurrences { url, popover_url, start, end, event {id, name, description, css_class, text_color, background_color, border_color, all_day} } } } ');
3
+ return(' { calendar(slug: "' + slug + '") { event_occurrences { url, popover_url, start, end, event {id, name, css_class, text_color, background_color, border_color, all_day} } } } ');
4
4
  }
5
5
 
6
6
  function calendarEventsQuery(slug) {
7
7
  // GraphQL requires double-quoted strings in the query:
8
- return(' { event_occurrences { url, popover_url, start, end, event {id, name, description, css_class, text_color, background_color, border_color, all_day} } } ');
8
+ return(' { event_occurrences { url, popover_url, start, end, event {id, name, css_class, text_color, background_color, border_color, all_day} } } ');
9
9
  }
10
10
 
11
11
  function formatEventOccurrence(occurrence) {
@@ -43,7 +43,7 @@ function calendarEventRender(event, element) {
43
43
  element.popover({
44
44
  html: true,
45
45
  placement: 'auto',
46
- viewport: '#calendar-display',
46
+ viewport: '.date-book--calendar',
47
47
  container: 'body',
48
48
  title: '<a href="' + event.url + '">' + event.title + '</a><span onclick="hideParentPopover(this);" class="float-right glyphicon glyphicon-remove"></span>',
49
49
  content: ajax_data
@@ -1,6 +1,7 @@
1
1
  @import 'fullcalendar.css';
2
2
  @import 'bootstrap-wysihtml5/bootstrap3-wysihtml5.css';
3
3
  @import 'bootstrap-datetimepicker.css';
4
+ @import 'font-awesome';
4
5
 
5
6
  .all-day {
6
7
  background-image: url('date_book/all-day-bg.png');
@@ -39,6 +40,34 @@
39
40
  max-width: 20em;
40
41
  }
41
42
 
42
- .margin-left {
43
- margin-left: 1em;
43
+ .glyphicon-spinning {
44
+ animation: spin 3s infinite linear;
45
+ -webkit-animation: spin2 3s infinite linear;
46
+ }
47
+
48
+ @keyframes spin {
49
+ from { transform: scale(1) rotate(0deg); }
50
+ to { transform: scale(1) rotate(360deg); }
51
+ }
52
+
53
+ @-webkit-keyframes spin2 {
54
+ from { -webkit-transform: rotate(0deg); }
55
+ to { -webkit-transform: rotate(360deg); }
56
+ }
57
+
58
+ .date-book--spinner {
59
+ font-size: 300px;
60
+ color: #999;
61
+ }
62
+
63
+ .date-book--wrapper {
64
+ position: relative;
65
+
66
+ .date-book--spinner {
67
+ position: absolute;
68
+ margin: auto;
69
+ z-index: 1000;
70
+ left: 50%;
71
+ transform: translate(-50%, 0);
72
+ }
44
73
  }
@@ -1,48 +1,59 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DateBook
4
+ # Allows viewing and maintaining Calendars
2
5
  class CalendarsController < DateBookController
3
6
  load_and_authorize_resource find_by: :slug
4
7
 
5
8
  # GET /calendars
6
- def index
7
- end
9
+ def index; end
8
10
 
9
11
  # GET /calendars/slug
10
- def show
11
- end
12
+ def show; end
12
13
 
13
14
  # GET /calendars/new
14
- def new
15
- end
15
+ def new; end
16
16
 
17
17
  # GET /calendars/slug/edit
18
- def edit
19
- end
18
+ def edit; end
20
19
 
21
20
  # POST /calendars
22
21
  def create
23
22
  @calendar.owners = [current_user]
24
- if @calendar.save
25
- redirect_to @calendar, notice: :item_acted_on.l(item: Calendar.model_name.human, action: :created.l)
26
- else
23
+ unless @calendar.save
27
24
  flash[:error] = @calendar.errors.full_messages.to_sentence
28
25
  render :new
26
+ return
29
27
  end
28
+ redirect_to(@calendar, notice: :item_acted_on.l(
29
+ item: Calendar.model_name.human,
30
+ action: :created.l
31
+ ))
30
32
  end
31
33
 
32
34
  # PATCH/PUT /calendars/slug
33
35
  def update
34
- if @calendar.update(calendar_params)
35
- redirect_to @calendar, notice: :item_acted_on.l(item: Calendar.model_name.human, action: :updated.l)
36
- else
36
+ unless @calendar.update(calendar_params)
37
37
  flash[:error] = @calendar.errors.full_messages.to_sentence
38
38
  render :edit
39
+ return
39
40
  end
41
+ redirect_to(@calendar, notice: :item_acted_on.l(
42
+ item: Calendar.model_name.human,
43
+ action: :updated.l
44
+ ))
40
45
  end
41
46
 
42
47
  # DELETE /calendars/slug
43
48
  def destroy
44
49
  @calendar.destroy
45
- redirect_to calendars_url, notice: :item_acted_on.l(item: Calendar.model_name.human, action: :destroyed.l)
50
+ redirect_to(
51
+ calendars_url,
52
+ notice: :item_acted_on.l(
53
+ item: Calendar.model_name.human,
54
+ action: :destroyed.l
55
+ )
56
+ )
46
57
  end
47
58
 
48
59
  private
@@ -50,10 +61,10 @@ module DateBook
50
61
  # Only allow a trusted parameter "white list" through.
51
62
  def calendar_params
52
63
  params.require(:calendar).permit(
53
- :id,
54
- :name,
55
- :description,
56
- :css_class
64
+ :id,
65
+ :name,
66
+ :description,
67
+ :css_class
57
68
  )
58
69
  end
59
70
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DateBook
4
- # Some documentation goes here
4
+ # Main DateBookController, all others inherit from this
5
5
  class DateBookController < ::ApplicationController
6
6
  helper :all
7
7
  before_action :set_locale
@@ -1,19 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DateBook
4
+ # Allows viewing and maintaining Events within Calendars
2
5
  class EventsController < DateBookController
3
6
  load_and_authorize_resource :calendar, find_by: :slug
4
7
  load_and_authorize_resource :event, find_by: :slug, through: :calendar
5
- before_action :set_occurrence, only: [:show, :popover]
8
+ before_action :set_occurrence, only: %i[show popover]
6
9
 
7
10
  # GET /events
8
11
  def index
9
- start_date = params[:start]&.to_datetime || Time.now.beginning_of_month
10
- end_date = params[:end]&.to_datetime || Time.now.beginning_of_month.next_month
12
+ start_date = params[:start]&.to_datetime || Time
13
+ .now
14
+ .beginning_of_month
15
+ end_date = params[:end]&.to_datetime || Time
16
+ .now
17
+ .beginning_of_month
18
+ .next_month
11
19
  @events = @events&.ending_after(start_date)&.starting_before(end_date)
12
20
  end
13
21
 
14
22
  # GET /events/slug
15
- def show
16
- end
23
+ def show; end
17
24
 
18
25
  # GET /events/slug/popover
19
26
  def popover
@@ -21,88 +28,79 @@ module DateBook
21
28
  end
22
29
 
23
30
  # GET /events/new
24
- def new
25
- end
31
+ def new; end
26
32
 
27
33
  # GET /events/slug/edit
28
- def edit
29
- end
34
+ def edit; end
30
35
 
31
36
  # POST /events
32
37
  def create
33
38
  @event.owners = [current_user]
34
- if @event.save
35
- redirect_to [@calendar, @event], notice: :item_acted_on.l(item: Event.model_name.human, action: :created.l)
36
- else
39
+ unless @event.save
37
40
  flash[:error] = @event.errors.full_messages.to_sentence
38
41
  render :new
42
+ return
39
43
  end
44
+ redirect_to([@calendar, @event], notice: :item_acted_on.l(
45
+ item: Event.model_name.human,
46
+ action: :created.l
47
+ ))
40
48
  end
41
49
 
42
50
  # PATCH/PUT /events/slug
43
51
  def update
44
- if @event.update(event_params)
45
- redirect_to [@calendar, @event], notice: :item_acted_on.l(item: Event.model_name.human, action: :updated.l)
46
- else
52
+ unless @event.update(event_params)
47
53
  flash[:error] = @event.errors.full_messages.to_sentence
48
54
  render :edit
55
+ return
49
56
  end
57
+ redirect_to([@calendar, @event], notice: :item_acted_on.l(
58
+ item: Event.model_name.human,
59
+ action: :updated.l
60
+ ))
50
61
  end
51
62
 
52
63
  # DELETE /events/slug
53
64
  def destroy
54
65
  @event.destroy
55
- redirect_to calendar_events_url(@calendar), notice: :item_acted_on.l(item: Event.model_name.human, action: :destroyed.l)
66
+ redirect_to(
67
+ calendar_events_url(@calendar),
68
+ notice: :item_acted_on.l(
69
+ item: Event.model_name.human,
70
+ action: :destroyed.l
71
+ )
72
+ )
56
73
  end
57
74
 
58
75
  private
59
- def set_occurrence
60
- if params[:occurrence_id].present?
61
- @occurrence = @event.event_occurrences.find(params[:occurrence_id])
62
- end
63
- end
64
76
 
65
- # Only allow a trusted parameter "white list" through.
66
- def event_params
67
- schedule_attributes = [
68
- :id,
69
- :date,
70
- :time,
71
- :rule,
72
- :until,
73
- :count,
74
- :interval,
75
- :all_day,
76
- {
77
- day: [],
78
- day_of_week: [
79
- {
80
- monday: [],
81
- tuesday: [],
82
- wednesday: [],
83
- thursday: [],
84
- friday: [],
85
- saturday: [],
86
- sunday: []
87
- }
88
- ],
89
- duration_attributes: [
90
- :count,
91
- :unit
92
- ]
93
- }
94
- ]
77
+ def set_occurrence
78
+ return unless params[:occurrence_id].present?
79
+ @occurrence = @event.event_occurrences.find(params[:occurrence_id])
80
+ end
95
81
 
96
- params.require(:event).permit(
97
- :id,
98
- :name,
99
- :description,
100
- :css_class,
101
- :text_color,
102
- :background_color,
103
- :border_color,
104
- schedule_attributes: schedule_attributes
105
- )
106
- end
82
+ # Only allow a trusted parameter "white list" through.
83
+ # rubocop:disable Metrics/MethodLength
84
+ def event_params
85
+ schedule_attributes = [
86
+ :id, :date, :time, :rule, :until, :count, :interval, :all_day,
87
+ {
88
+ day: [],
89
+ day_of_week: [
90
+ {
91
+ monday: [], tuesday: [], wednesday: [], thursday: [],
92
+ friday: [], saturday: [], sunday: []
93
+ }
94
+ ],
95
+ duration_attributes: %i[count unit]
96
+ }
97
+ ]
98
+
99
+ params.require(:event).permit(
100
+ :id, :name, :description, :css_class, :text_color, :background_color,
101
+ :border_color, schedule_attributes: schedule_attributes
102
+ )
103
+ end
107
104
  end
105
+ # rubocop:enable Metrics/MethodLength
108
106
  end