summaryrefslogtreecommitdiffstats
path: root/app/views
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2020-01-23 22:00:13 +0100
committerGitHub <noreply@github.com>2020-01-23 22:00:13 +0100
commitf52c988e12e464e7baefc2fdb48ddf4a95584664 (patch)
tree1849998c1180280751f829769c10c84986bf0953 /app/views
parent81cc86bb1ffb662843938379eeb522e3a6f11b79 (diff)
Add announcements (#12662)
* Add announcements Fix #11006 * Add reactions to announcements * Add admin UI for announcements * Add unit tests * Fix issues - Add `with_dismissed` param to announcements API - Fix end date not being formatted when time range is given - Fix announcement delete causing reactions to send streaming updates - Fix announcements container growing too wide and mascot too small - Fix `all_day` being settable when no time range is given - Change text "Update" to "Announcement" * Fix scheduler unpublishing announcements before they are due * Fix filter params not being passed to announcements filter
Diffstat (limited to 'app/views')
-rw-r--r--app/views/admin/announcements/_announcement.html.haml14
-rw-r--r--app/views/admin/announcements/edit.html.haml22
-rw-r--r--app/views/admin/announcements/index.html.haml30
-rw-r--r--app/views/admin/announcements/new.html.haml21
4 files changed, 87 insertions, 0 deletions
diff --git a/app/views/admin/announcements/_announcement.html.haml b/app/views/admin/announcements/_announcement.html.haml
new file mode 100644
index 00000000000..75768c7ba23
--- /dev/null
+++ b/app/views/admin/announcements/_announcement.html.haml
@@ -0,0 +1,14 @@
+%tr
+ %td
+ = truncate(announcement.text)
+ %td
+ = time_range(announcement) if announcement.time_range?
+ %td
+ - if announcement.scheduled_at.present?
+ = fa_icon('clock-o') if announcement.scheduled_at > Time.now.utc
+ = l(announcement.scheduled_at)
+ - else
+ = l(announcement.created_at)
+ %td
+ = table_link_to 'pencil', t('generic.edit'), edit_admin_announcement_path(announcement) if can?(:update, announcement)
+ = table_link_to 'trash', t('generic.delete'), admin_announcement_path(announcement), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, announcement)
diff --git a/app/views/admin/announcements/edit.html.haml b/app/views/admin/announcements/edit.html.haml
new file mode 100644
index 00000000000..c5c605e939c
--- /dev/null
+++ b/app/views/admin/announcements/edit.html.haml
@@ -0,0 +1,22 @@
+- content_for :page_title do
+ = t('.title')
+
+= simple_form_for @announcement, url: admin_announcement_path(@announcement) do |f|
+ = render 'shared/error_messages', object: @announcement
+
+ .fields-group
+ = f.input :starts_at, include_blank: true, wrapper: :with_block_label
+ = f.input :ends_at, include_blank: true, wrapper: :with_block_label
+
+ .fields-group
+ = f.input :all_day, as: :boolean, wrapper: :with_label
+
+ .fields-group
+ = f.input :text, wrapper: :with_block_label
+
+ - if @announcement.scheduled_at.present? && !@announcement.published?
+ .fields-group
+ = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label
+
+ .actions
+ = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/admin/announcements/index.html.haml b/app/views/admin/announcements/index.html.haml
new file mode 100644
index 00000000000..634f586fbca
--- /dev/null
+++ b/app/views/admin/announcements/index.html.haml
@@ -0,0 +1,30 @@
+- content_for :page_title do
+ = t('admin.announcements.title')
+
+- content_for :heading_actions do
+ = link_to t('admin.announcements.new.title'), new_admin_announcement_path, class: 'button'
+
+.filters
+ .filter-subset
+ %strong= t('admin.relays.status')
+ %ul
+ %li= filter_link_to t('generic.all'), published: nil, unpublished: nil
+ %li= filter_link_to safe_join([t('admin.announcements.live'), "(#{number_with_delimiter(Announcement.published.count)})"], ' '), published: '1', unpublished: nil
+
+- if @announcements.empty?
+ %div.muted-hint.center-text
+ = t 'admin.announcements.empty'
+- else
+ .table-wrapper
+ %table.table
+ %thead
+ %tr
+ %th= t('simple_form.labels.announcement.text')
+ %th= t('admin.announcements.time_range')
+ %th= t('admin.announcements.published')
+ %th
+ %tbody
+ = render partial: 'announcement', collection: @announcements
+
+= paginate @announcements
+
diff --git a/app/views/admin/announcements/new.html.haml b/app/views/admin/announcements/new.html.haml
new file mode 100644
index 00000000000..a5298c5f66f
--- /dev/null
+++ b/app/views/admin/announcements/new.html.haml
@@ -0,0 +1,21 @@
+- content_for :page_title do
+ = t('.title')
+
+= simple_form_for @announcement, url: admin_announcements_path do |f|
+ = render 'shared/error_messages', object: @announcement
+
+ .fields-group
+ = f.input :starts_at, include_blank: true, wrapper: :with_block_label
+ = f.input :ends_at, include_blank: true, wrapper: :with_block_label
+
+ .fields-group
+ = f.input :all_day, as: :boolean, wrapper: :with_label
+
+ .fields-group
+ = f.input :text, wrapper: :with_block_label
+
+ .fields-group
+ = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label
+
+ .actions
+ = f.button :button, t('.create'), type: :submit