lesli_bell 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +5 -0
  3. data/app/assets/config/lesli_bell_manifest.js +40 -0
  4. data/app/assets/javascripts/lesli_bell/application.js +2848 -0
  5. data/app/assets/stylesheets/lesli_bell/application.css +15 -0
  6. data/app/controllers/lesli_bell/accounts_controller.rb +4 -0
  7. data/app/controllers/lesli_bell/announcements_controller.rb +60 -0
  8. data/app/controllers/lesli_bell/application_controller.rb +4 -0
  9. data/app/controllers/lesli_bell/dashboards_controller.rb +59 -0
  10. data/app/controllers/lesli_bell/notifications_controller.rb +60 -0
  11. data/app/helpers/lesli_bell/accounts_helper.rb +4 -0
  12. data/app/helpers/lesli_bell/announcements_helper.rb +4 -0
  13. data/app/helpers/lesli_bell/application_helper.rb +4 -0
  14. data/app/helpers/lesli_bell/dashboards_helper.rb +4 -0
  15. data/app/helpers/lesli_bell/notifications_helper.rb +4 -0
  16. data/app/jobs/lesli_bell/application_job.rb +4 -0
  17. data/app/mailers/lesli_bell/application_mailer.rb +6 -0
  18. data/app/models/lesli_bell/account.rb +7 -0
  19. data/app/models/lesli_bell/announcement.rb +4 -0
  20. data/app/models/lesli_bell/application_record.rb +5 -0
  21. data/app/models/lesli_bell/dashboard.rb +4 -0
  22. data/app/models/lesli_bell/notification.rb +28 -0
  23. data/app/services/lesli_bell/notification_service.rb +87 -0
  24. data/app/views/lesli_bell/accounts/_account.html.erb +2 -0
  25. data/app/views/lesli_bell/accounts/_form.html.erb +17 -0
  26. data/app/views/lesli_bell/accounts/edit.html.erb +10 -0
  27. data/app/views/lesli_bell/accounts/index.html.erb +14 -0
  28. data/app/views/lesli_bell/accounts/new.html.erb +9 -0
  29. data/app/views/lesli_bell/accounts/show.html.erb +10 -0
  30. data/app/views/lesli_bell/announcements/_announcement.html.erb +2 -0
  31. data/app/views/lesli_bell/announcements/_form.html.erb +17 -0
  32. data/app/views/lesli_bell/announcements/edit.html.erb +10 -0
  33. data/app/views/lesli_bell/announcements/index.html.erb +14 -0
  34. data/app/views/lesli_bell/announcements/new.html.erb +9 -0
  35. data/app/views/lesli_bell/announcements/show.html.erb +10 -0
  36. data/app/views/lesli_bell/dashboards/_dashboard.html.erb +2 -0
  37. data/app/views/lesli_bell/dashboards/_form.html.erb +17 -0
  38. data/app/views/lesli_bell/dashboards/edit.html.erb +10 -0
  39. data/app/views/lesli_bell/dashboards/index.html.erb +14 -0
  40. data/app/views/lesli_bell/dashboards/new.html.erb +9 -0
  41. data/app/views/lesli_bell/dashboards/show.html.erb +1 -0
  42. data/app/views/lesli_bell/notifications/edit.html.erb +10 -0
  43. data/app/views/lesli_bell/notifications/index.html.erb +33 -0
  44. data/app/views/lesli_bell/notifications/new.html.erb +9 -0
  45. data/app/views/lesli_bell/notifications/show.html.erb +10 -0
  46. data/app/views/lesli_bell/partials/_engine-navigation.html.erb +24 -0
  47. data/config/routes.rb +6 -0
  48. data/db/migrate/v1.0/0308000110_create_lesli_bell_accounts.rb +28 -0
  49. data/db/migrate/v1.0/0308100110_create_lesli_bell_notifications.rb +41 -0
  50. data/db/migrate/v1.0/0308100210_create_lesli_bell_notification_activities.rb +17 -0
  51. data/db/migrate/v1.0/0308110110_create_lesli_bell_announcements.rb +40 -0
  52. data/db/migrate/v1.0/0308110210_create_lesli_bell_announcement_activities.rb +17 -0
  53. data/db/migrate/v1.0/0308110310_create_lesli_bell_announcement_users.rb +12 -0
  54. data/db/seed/development.rb +36 -0
  55. data/db/seed/production.rb +0 -0
  56. data/db/seed/test.rb +0 -0
  57. data/db/seeds.rb +25 -0
  58. data/lib/lesli_bell/engine.rb +18 -0
  59. data/lib/lesli_bell/version.rb +4 -0
  60. data/lib/lesli_bell.rb +6 -0
  61. data/lib/tasks/lesli_bell_tasks.rake +4 -0
  62. data/lib/vue/application.js +51 -0
  63. data/lib/vue/apps/announcements/components/form.vue +237 -0
  64. data/lib/vue/apps/announcements/index.vue +124 -0
  65. data/lib/vue/apps/announcements/new.vue +48 -0
  66. data/lib/vue/apps/notifications/components/notification-form.vue +149 -0
  67. data/lib/vue/apps/notifications/index.vue +129 -0
  68. data/lib/vue/apps/notifications/new.vue +45 -0
  69. data/lib/vue/stores/announcement.js +142 -0
  70. data/lib/vue/stores/notification.js +115 -0
  71. data/readme.md +28 -0
  72. metadata +116 -0
@@ -0,0 +1,10 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <%= render @notification %>
4
+
5
+ <div>
6
+ <%= link_to "Edit this notification", edit_notification_path(@notification) %> |
7
+ <%= link_to "Back to notifications", notifications_path %>
8
+
9
+ <%= button_to "Destroy this notification", @notification, method: :delete %>
10
+ </div>
@@ -0,0 +1,24 @@
1
+ <%#
2
+
3
+ Copyright (c) 2020, all rights reserved.
4
+
5
+ All the information provided by this platform is protected by international laws related to
6
+ industrial property, intellectual property, copyright and relative international laws.
7
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
8
+ pictures and any other information belongs to the owner of this platform.
9
+
10
+ Without the written permission of the owner, any replication, modification,
11
+ transmission, publication is strictly forbidden.
12
+
13
+ For more information read the license file including with this software.
14
+
15
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
+ // ·
17
+
18
+ %>
19
+
20
+
21
+ <%= navigation_item(lesli_bell.dashboard_path, "Dashboard", "ri-dashboard-3-line") %>
22
+ <%= navigation_item(lesli_bell.notifications_path, "Notifications", "ri-notification-3-line") %>
23
+ <%= navigation_item(lesli_bell.announcements_path, "Announcements", "ri-feedback-line") %>
24
+ <%= navigation_item(lesli_bell.dashboard_path, "Settings", "ri-settings-3-line") %>
data/config/routes.rb ADDED
@@ -0,0 +1,6 @@
1
+ LesliBell::Engine.routes.draw do
2
+ root to: "dashboards#show"
3
+ resource :dashboard, only: [:show]
4
+ resources :notifications, only: [:index]
5
+ resources :announcements, only: [:index]
6
+ end
@@ -0,0 +1,28 @@
1
+ =begin
2
+
3
+ Copyright (c) 2020, all rights reserved.
4
+
5
+ All the information provided by this platform is protected by international laws related to
6
+ industrial property, intellectual property, copyright and relative international laws.
7
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
8
+ pictures and any other information belongs to the owner of this platform.
9
+
10
+ Without the written permission of the owner, any replication, modification,
11
+ transmission, publication is strictly forbidden.
12
+
13
+ For more information read the license file including with this software.
14
+
15
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
+ // ·
17
+
18
+ =end
19
+
20
+ class CreateLesliBellAccounts < ActiveRecord::Migration[7.0]
21
+ def change
22
+ create_table :lesli_bell_accounts do |t|
23
+ t.timestamps
24
+ t.datetime :deleted_at, index: true
25
+ end
26
+ add_reference(:lesli_bell_accounts, :account, foreign_key: { to_table: :lesli_accounts })
27
+ end
28
+ end
@@ -0,0 +1,41 @@
1
+ =begin
2
+
3
+ Copyright (c) 2020, all rights reserved.
4
+
5
+ All the information provided by this platform is protected by international laws related to
6
+ industrial property, intellectual property, copyright and relative international laws.
7
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
8
+ pictures and any other information belongs to the owner of this platform.
9
+
10
+ Without the written permission of the owner, any replication, modification,
11
+ transmission, publication is strictly forbidden.
12
+
13
+ For more information read the license file including with this software.
14
+
15
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
+ // ·
17
+
18
+ =end
19
+
20
+ class CreateLesliBellNotifications < ActiveRecord::Migration[7.0]
21
+
22
+ def change
23
+ create_table :lesli_bell_notifications do |t|
24
+ t.string :subject
25
+ t.text :body
26
+ t.string :url
27
+ t.string :status
28
+ t.string :category
29
+ t.string :channel
30
+ t.string :notification_type
31
+ t.string :media
32
+ t.json :payload
33
+
34
+ t.timestamps
35
+ t.datetime :deleted_at, index: true
36
+ end
37
+
38
+ add_reference(:lesli_bell_notifications, :user, foreign_key: { to_table: :lesli_users })
39
+ add_reference(:lesli_bell_notifications, :account, foreign_key: { to_table: :lesli_accounts })
40
+ end
41
+ end
@@ -0,0 +1,17 @@
1
+ class CreateLesliBellNotificationActivities < ActiveRecord::Migration[7.0]
2
+ #def change
3
+ # table_base_structure = JSON.parse(File.read(Rails.root.join('db','structure','00000004_activities.json')))
4
+ # create_table :cloud_bell_notification_activities do |t|
5
+ # table_base_structure.each do |column|
6
+ # t.send(
7
+ # column["type"].parameterize.underscore.to_sym,
8
+ # column["name"].parameterize.underscore.to_sym
9
+ # )
10
+ # end
11
+ # t.timestamps
12
+ # end
13
+
14
+ # add_reference :cloud_bell_notification_activities, :cloud_bell_notifications, foreign_key: true, index: { name: "cloud_bell_activities_notifications" }
15
+ # add_foreign_key :cloud_bell_notification_activities, :users, column: :users_id
16
+ #end
17
+ end
@@ -0,0 +1,40 @@
1
+ =begin
2
+
3
+ Copyright (c) 2020, all rights reserved.
4
+
5
+ All the information provided by this platform is protected by international laws related to
6
+ industrial property, intellectual property, copyright and relative international laws.
7
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
8
+ pictures and any other information belongs to the owner of this platform.
9
+
10
+ Without the written permission of the owner, any replication, modification,
11
+ transmission, publication is strictly forbidden.
12
+
13
+ For more information read the license file including with this software.
14
+
15
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
+ // ·
17
+
18
+ =end
19
+
20
+ class CreateLesliBellAnnouncements < ActiveRecord::Migration[6.0]
21
+ def change
22
+ create_table :lesli_bell_announcements do |t|
23
+ t.string :url, index: true
24
+ t.string :name
25
+ t.string :category
26
+ t.string :base_path
27
+ t.text :message
28
+ t.boolean :status
29
+ t.datetime :start_at
30
+ t.datetime :end_at
31
+ t.boolean :can_be_closed, :default => true
32
+ t.datetime :deleted_at, index: true
33
+ t.timestamps
34
+ end
35
+
36
+ add_reference(:lesli_bell_announcements, :user, foreign_key: { to_table: :lesli_users })
37
+ add_reference(:lesli_bell_announcements, :role, foreign_key: { to_table: :lesli_roles })
38
+ add_reference(:lesli_bell_announcements, :account, foreign_key: { to_table: :lesli_accounts })
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ class CreateLesliBellAnnouncementActivities < ActiveRecord::Migration[7.0]
2
+ def change
3
+ # table_base_structure = JSON.parse(File.read(Rails.root.join('db','structure','00000004_activities.json')))
4
+ # create_table :cloud_bell_announcement_activities do |t|
5
+ # table_base_structure.each do |column|
6
+ # t.send(
7
+ # column["type"].parameterize.underscore.to_sym,
8
+ # column["name"].parameterize.underscore.to_sym
9
+ # )
10
+ # end
11
+ # t.timestamps
12
+ # end
13
+
14
+ # add_reference :cloud_bell_announcement_activities, :cloud_bell_announcements, foreign_key: true, index: { name: "cloud_bell_activities_announcements" }
15
+ # add_foreign_key :cloud_bell_announcement_activities, :users, column: :users_id
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ class CreateLesliBellAnnouncementUsers < ActiveRecord::Migration[7.0]
2
+ def change
3
+ # create_table :cloud_bell_announcement_users do |t|
4
+ # t.string :status
5
+ # t.timestamps
6
+ # t.datetime :deleted_at, index: true
7
+ # end
8
+
9
+ # add_reference :cloud_bell_announcement_users, :users, foreign_key: true
10
+ # add_reference :cloud_bell_announcement_users, :cloud_bell_announcements, foreign_key: true, index: { name: "cloud_bell_announcements_users" }
11
+ end
12
+ end
@@ -0,0 +1,36 @@
1
+ =begin
2
+
3
+ Copyright (c) 2022, all rights reserved.
4
+
5
+ All the information provided by this platform is protected by international laws related to
6
+ industrial property, intellectual property, copyright and relative international laws.
7
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
8
+ pictures and any other information belongs to the owner of this platform.
9
+
10
+ Without the written permission of the owner, any replication, modification,
11
+ transmission, publication is strictly forbidden.
12
+
13
+ For more information read the license file including with this software.
14
+
15
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
+ // ·
17
+ =end
18
+
19
+ current_user = ::Lesli::User.first
20
+ LesliBell::NotificationService.new(current_user).create("New notification created")
21
+ # Courier::Bell::Notification.new(current_user, "New notification created")
22
+ # Courier::Bell::Notification.new(current_user, "New info notification created", category: "info")
23
+ # Courier::Bell::Notification.new(current_user, "New success notification created", category: "success")
24
+ # Courier::Bell::Notification.new(current_user, "New warning notification created", category: "warning")
25
+ # Courier::Bell::Notification.new(current_user, "New danger notification created", category: "danger")
26
+
27
+ # Courier::Bell::Notification.new(current_user, "New notification created with body", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
28
+ # Courier::Bell::Notification.new(current_user, "New notification info created with body", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", category: "info")
29
+ # Courier::Bell::Notification.new(current_user, "New notification success created with body", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", category: "success")
30
+ # Courier::Bell::Notification.new(current_user, "New notification warning created with body", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", category: "warning")
31
+ # Courier::Bell::Notification.new(current_user, "New notification danger created with body", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", category: "danger")
32
+
33
+ # Courier::Bell::Notification.new(current_user, "New notification created with body and link", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", url:"/bell")
34
+ # Courier::Bell::Notification.new(current_user, "New notification info created with body and link", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", url:"/bell", category: "info")
35
+ # Courier::Bell::Notification.new(current_user, "New notification success created with body and link", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", url:"/bell", category: "success")
36
+ # Courier::Bell::Notification.new(current_user, "New notification warning created with body and link", body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", url:"/bell", category: "warning")
File without changes
data/db/seed/test.rb ADDED
File without changes
data/db/seeds.rb ADDED
@@ -0,0 +1,25 @@
1
+ =begin
2
+
3
+ Copyright (c) 2022, all rights reserved.
4
+
5
+ All the information provided by this platform is protected by international laws related to
6
+ industrial property, intellectual property, copyright and relative international laws.
7
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
8
+ pictures and any other information belongs to the owner of this platform.
9
+
10
+ Without the written permission of the owner, any replication, modification,
11
+ transmission, publication is strictly forbidden.
12
+
13
+ For more information read the license file including with this software.
14
+
15
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
+ // ·
17
+ =end
18
+
19
+
20
+ # IMPORTANT: Seed files are only for development, if you need to create default resources for production
21
+ # you must use the initializer method in the Engine account model
22
+ if Rails.env.development?
23
+ L2.msg("Loading seeds for CloudBell environment", "Version: #{LesliBell::VERSION}", "Build: #{LesliBell::BUILD}")
24
+ load LesliBell::Engine.root.join("db", "seed", "#{ Rails.env.downcase }.rb")
25
+ end
@@ -0,0 +1,18 @@
1
+ module LesliBell
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace LesliBell
4
+
5
+ initializer :lesli_bell do |app|
6
+
7
+ # register assets manifest
8
+ config.assets.precompile += %w[lesli_bell_manifest.js]
9
+
10
+ # register engine migrations path
11
+ unless app.root.to_s.match root.to_s
12
+ config.paths["db/migrate"].expanded.each do |expanded_path|
13
+ app.config.paths["db/migrate"] << expanded_path
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,4 @@
1
+ module LesliBell
2
+ VERSION = "0.1.0"
3
+ BUILD = ""
4
+ end
data/lib/lesli_bell.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "lesli_bell/version"
2
+ require "lesli_bell/engine"
3
+
4
+ module LesliBell
5
+ # Your code goes here...
6
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :lesli_bell do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,51 @@
1
+ /*
2
+
3
+ Copyright (c) 2022, all rights reserved.
4
+
5
+ All the information provided by this platform is protected by international laws related to
6
+ industrial property, intellectual property, copyright and relative international laws.
7
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
8
+ pictures and any other information belongs to the owner of this platform.
9
+
10
+ Without the written permission of the owner, any replication, modification,
11
+ transmission, publication is strictly forbidden.
12
+
13
+ For more information read the license file including with this software.
14
+
15
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
+ // ·
17
+
18
+ */
19
+
20
+
21
+ // · Import main app
22
+ import application from "Lesli/application"
23
+
24
+
25
+ // · Import apps and components
26
+ // import appDashboard from "Lesli/cloud-objects/dashboards/apps/show.vue"
27
+
28
+ // import appNotificationsIndex from "./apps/notifications/index.vue"
29
+ // import appNotificationsNew from "./apps/notifications/new.vue"
30
+
31
+ // import appAnnouncementsIndex from "./apps/announcements/index.vue"
32
+ // import appAnnouncementsNew from "./apps/announcements/new.vue"
33
+
34
+
35
+ // · Cloud app
36
+ application("LesliBell", [/*{
37
+ path: "/",
38
+ component: appDashboard
39
+ }, {
40
+ path: "/notifications",
41
+ component: appNotificationsIndex
42
+ }, {
43
+ path: "/notifications/new",
44
+ component: appNotificationsNew
45
+ }, {
46
+ path: "/announcements",
47
+ component: appAnnouncementsIndex
48
+ }, {
49
+ path: "/announcements/new",
50
+ component: appAnnouncementsNew
51
+ }*/])
@@ -0,0 +1,237 @@
1
+ <script setup>
2
+ /*
3
+ Copyright (c) 2022, all rights reserved.
4
+
5
+ All the information provided by this platform is protected by international laws related to
6
+ industrial property, intellectual property, copyright and relative international laws.
7
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
8
+ pictures and any other information belongs to the owner of this platform.
9
+
10
+ Without the written permission of the owner, any replication, modification,
11
+ transmission, publication is strictly forbidden.
12
+
13
+ For more information read the license file including with this software.
14
+
15
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
+ // ·
17
+ */
18
+
19
+ // · import vue tools
20
+ import { onMounted, ref, watch } from "vue"
21
+
22
+ // · import store
23
+ import { useBellAnnouncement } from "LesliBell/stores/announcement"
24
+
25
+ import editorRichText from "Lesli/components/editors/richtext.vue"
26
+ import RichtextViewer from "Lesli/components/editors/richtext-viewer.vue"
27
+
28
+
29
+ // · implement store
30
+ const announcementStore = useBellAnnouncement()
31
+
32
+ // . Defining translations
33
+ const translations = {
34
+ core: {
35
+ shared: I18n.t("core.shared")
36
+ },
37
+ bell: {
38
+ notifications: I18n.t("bell.notifications"),
39
+ announcements: I18n.t("bell.announcements")
40
+ }
41
+ }
42
+
43
+ const closeOptions = {
44
+ yes: {
45
+ label: "yes",
46
+ value: true
47
+ },
48
+ no: {
49
+ label: "no",
50
+ value: false
51
+ }
52
+
53
+ }
54
+
55
+ const selectOptions = [
56
+ { label: "Info", value: "info"},
57
+ { label: "Alert", value: "danger"},
58
+ { label: "Primary", value: "primary"},
59
+ { label: "Link", value: "link"},
60
+ { label: "Success", value: "success"},
61
+ { label: "Warning", value: "warning"}
62
+ ]
63
+
64
+ /**
65
+ * @description This function is used to verify that the start date is before the end date
66
+ */
67
+ function updateDates(){
68
+ if (announcementStore.record.start_at != "" && announcementStore.record.end_at != "") {
69
+ if (announcementStore.record.start_at >= announcementStore.record.end_at){
70
+ announcementStore.record.start_at = ""
71
+ announcementStore.msg.danger("Select valid range for date")
72
+ }
73
+ }
74
+ }
75
+
76
+
77
+ // · initializing
78
+ onMounted(() => {
79
+ announcementStore.getUsers()
80
+ announcementStore.getRoles()
81
+ })
82
+ </script>
83
+
84
+ <template>
85
+ <form @submit.prevent="announcementStore.post()" class="card py-4">
86
+ <div class="columns is-marginless has-border-bottom">
87
+ <div class="column is-4">
88
+ <label class="label">
89
+ {{ translations.bell.announcements.column_name }}
90
+ <sup class="has-text-danger">*</sup>
91
+ </label>
92
+ </div>
93
+ <div class="column">
94
+ <div class="control is-clearfix">
95
+ <input
96
+ type="text"
97
+ autocomplete="on"
98
+ name="subject"
99
+ required
100
+ class="input"
101
+ v-model="announcementStore.record.name"
102
+ />
103
+ </div>
104
+ </div>
105
+ </div>
106
+
107
+ <div class="columns is-marginless has-border-bottom">
108
+ <div class="column is-4">
109
+ <label class="label">
110
+ {{ translations.bell.announcements.view_text_triggered_on }}
111
+ </label>
112
+ </div>
113
+ <div class="column">
114
+ <div class="control is-clearfix">
115
+ <input
116
+ type="text"
117
+ autocomplete="on"
118
+ name="subject"
119
+ class="input"
120
+ v-model="announcementStore.record.base_path"
121
+ />
122
+ </div>
123
+ </div>
124
+ </div>
125
+
126
+ <div class="columns is-marginless has-border-bottom">
127
+ <div class="column is-4">
128
+ <label class="label">
129
+ {{translations.bell.announcements.column_message}}
130
+ <sup class="has-text-danger">*</sup>
131
+ </label>
132
+ </div>
133
+ <div class="column">
134
+ <div class="control is-clearfix">
135
+ <editor-rich-text mode="small" v-model="announcementStore.record.message"></editor-rich-text>
136
+ </div>
137
+ </div>
138
+ </div>
139
+
140
+ <div class="columns is-marginless has-border-bottom">
141
+ <div class="column is-4">
142
+ <label class="label">{{translations.bell.announcements.column_start_at}}</label>
143
+ </div>
144
+ <div class="column">
145
+ <input class="input is-info" type="date" v-model="announcementStore.record.start_at" @change="updateDates">
146
+ </div>
147
+ </div>
148
+
149
+ <div class="columns is-marginless has-border-bottom">
150
+ <div class="column is-4">
151
+ <label class="label">{{translations.bell.announcements.column_end_at}}</label>
152
+ </div>
153
+ <div class="column">
154
+ <input class="input is-info" type="date" v-model="announcementStore.record.end_at" @change="updateDates">
155
+ </div>
156
+ </div>
157
+
158
+
159
+ <div class="columns is-marginless has-border-bottom">
160
+ <div class="column is-4">
161
+ <label class="label">
162
+ {{translations.bell.announcements.column_kind}}
163
+ </label>
164
+ </div>
165
+ <div class="column">
166
+ <div class="control is-clearfix">
167
+ <lesli-select
168
+ v-model = "announcementStore.record.category"
169
+ :options="selectOptions">
170
+ </lesli-select>
171
+ </div>
172
+ </div>
173
+ </div>
174
+
175
+ <div class="columns is-marginless has-border-bottom">
176
+ <div class="column is-4">
177
+ <label class="label">
178
+ {{translations.bell.announcements.column_can_be_closed}}
179
+ <sup class="has-text-danger">*</sup>
180
+ </label>
181
+ </div>
182
+ <div class="column">
183
+ <label :for="option.label" class="radio" v-for="option in closeOptions" :key="option">
184
+ <input name="user_salutation" type="radio" :id="option.label" :value="option.value" v-model="announcementStore.record.can_be_closed" required/>
185
+ {{option.label}}
186
+ </label>
187
+ </div>
188
+ </div>
189
+
190
+ <div class="columns is-marginless has-border-bottom">
191
+ <div class="column is-4">
192
+ <label class="label">
193
+ {{ translations.bell.notifications.view_text_receiver_users }}
194
+ </label>
195
+ </div>
196
+ <div class="column">
197
+ <div class="control is-clearfix">
198
+ <lesli-input-tag
199
+ v-model="announcementStore.receiverUsers"
200
+ :placeholder="translations.core.shared.view_placeholder_search"
201
+ :options="announcementStore.users"
202
+ :filterFields="['name', 'email']"
203
+ showField="email"
204
+ />
205
+ </div>
206
+ </div>
207
+ </div>
208
+
209
+ <div class="columns is-marginless has-border-bottom">
210
+ <div class="column is-4">
211
+ <label class="label">
212
+ {{ translations.bell.notifications.view_text_receiver_roles }}
213
+ </label>
214
+ </div>
215
+ <div class="column">
216
+ <div class="control is-clearfix">
217
+ <lesli-input-tag
218
+ v-model="announcementStore.receiverRoles"
219
+ :placeholder="translations.core.shared.view_placeholder_search"
220
+ :options="announcementStore.roles"
221
+ :filterFields="['name']"
222
+ showField="name"
223
+ />
224
+ </div>
225
+ </div>
226
+ </div>
227
+
228
+ <div class="px-3 ql-bg-blue">
229
+ <button
230
+ type="submit"
231
+ class="button is-fullwidth has-text-centered submit-button is-primary"
232
+ >
233
+ {{ translations.core.shared.view_btn_save }}
234
+ </button>
235
+ </div>
236
+ </form>
237
+ </template>