lesli_bell 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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>