-
Notifications
You must be signed in to change notification settings - Fork 438
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #9590 from saraycp/announcement_to_status_message
Add announcement functionality to status message
- Loading branch information
Showing
33 changed files
with
419 additions
and
112 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,11 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<message severity="0"> | ||
a single sample message. contains some text ... | ||
attributes are optional and ignored when sent (put) to the api. | ||
the format of this example will be used as a convenient way to put a message. | ||
</message> | ||
<status_message> | ||
<message> | ||
a single sample message. contains some text ... | ||
attributes are optional and ignored when sent (put) to the api. | ||
the format of this example will be used as a convenient way to put a message. | ||
</message> | ||
<severity>information</severity> | ||
<scope>all_users</scope> | ||
</status_message> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
|
||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> | ||
<xs:element name="status_message"> | ||
<xs:complexType> | ||
<xs:sequence> | ||
<xs:element name="message" type="xs:string"></xs:element> | ||
<xs:element name="severity" type="xs:string"></xs:element> | ||
<xs:element name="scope" type="xs:string" minOccurs="0" default="all_users"></xs:element> | ||
</xs:sequence> | ||
<xs:attribute name="id" type="xs:int"></xs:attribute> | ||
</xs:complexType> | ||
</xs:element> | ||
</xs:schema> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,50 +1,37 @@ | ||
class StatusMessagesController < ApplicationController | ||
class PermissionDeniedError < APIError | ||
setup 403 | ||
end | ||
|
||
class CreatingMessagesError < APIError; end | ||
before_action :require_admin, only: [:create, :destroy] | ||
|
||
def index | ||
@messages = StatusMessage.alive.limit(params[:limit]).order('created_at DESC').includes(:user) | ||
@count = @messages.size | ||
end | ||
|
||
def show | ||
@messages = [StatusMessage.find(params[:id])] | ||
@count = 1 | ||
render :index | ||
@message = StatusMessage.find(params[:id]) | ||
end | ||
|
||
def create | ||
# check permissions | ||
unless permissions.status_message_create | ||
raise PermissionDeniedError, 'message(s) cannot be created, you have not sufficient permissions' | ||
end | ||
|
||
new_messages = Nokogiri::XML(request.raw_post, &:strict).root | ||
@messages = [] | ||
if new_messages.css('message').present? | ||
# message(s) are wrapped in outer xml tag 'status_messages' | ||
new_messages.css('message').each do |msg| | ||
@messages << StatusMessage.create!(message: msg.content, severity: msg['severity'], user: User.session!) | ||
end | ||
else | ||
# TODO: make use of a validator | ||
raise CreatingMessagesError, "no message #{new_messages.to_xml}" if new_messages.name != 'message' | ||
# just one message, NOT wrapped in outer xml tag 'status_messages' | ||
@messages << StatusMessage.create!(message: new_messages.content, severity: new_messages['severity'], user: User.session!) | ||
end | ||
render :index | ||
status_message = StatusMessage.from_xml(validate_status_message) | ||
|
||
authorize status_message | ||
|
||
status_message.save! | ||
|
||
render_ok | ||
end | ||
|
||
def destroy | ||
# check permissions | ||
unless permissions.status_message_create | ||
raise PermissionDeniedError, 'message cannot be deleted, you have not sufficient permissions' | ||
end | ||
|
||
StatusMessage.find(params[:id]).delete | ||
status_message = StatusMessage.find(params[:id]) | ||
authorize status_message | ||
status_message.delete | ||
render_ok | ||
end | ||
|
||
private | ||
|
||
# TODO: make it more robust | ||
def validate_status_message | ||
Suse::Validator.validate(:status_message, request.raw_post) | ||
request.raw_post | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
class StatusMessageAcknowledgement < ApplicationRecord | ||
belongs_to :status_message | ||
belongs_to :user | ||
|
||
validates :status_message, presence: true | ||
validates :user, presence: true | ||
|
||
validates :status_message_id, uniqueness: { scope: :user_id, message: 'You have already acknowledged the message' } | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
class StatusMessagePolicy < ApplicationPolicy | ||
def create? | ||
user.is_admin? | ||
end | ||
|
||
def destroy? | ||
user.is_admin? | ||
end | ||
end |
11 changes: 11 additions & 0 deletions
11
src/api/app/views/layouts/webui/_status_message_announcement.html.haml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
- if current_announcement | ||
.row.justify-content-center#status-message-announcement | ||
.col-12 | ||
.alert.fade.show.alert-notice | ||
.row | ||
.col-md-10 | ||
= render_as_markdown(current_announcement.message) | ||
.col-md-2 | ||
- if User.session | ||
= form_tag(acknowledge_status_message_path(current_announcement), remote: true, class: 'text-right') do | ||
= submit_tag 'Got it', class: 'btn btn-sm btn-secondary' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
src/api/app/views/status_messages/_status_message.xml.builder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
builder.status_message(id: status_message.id) do |m| | ||
m.message status_message.message | ||
m.user status_message.user.login | ||
m.severity status_message.severity | ||
m.scope status_message.communication_scope | ||
m.created_at status_message.created_at | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,3 @@ | ||
xml.status_messages(count: @count) do | ||
@messages.each do |msg| | ||
xml.message( | ||
msg.message, | ||
msg_id: msg.id, | ||
user: msg.user.login, | ||
severity: msg.severity, | ||
created_at: msg.created_at, | ||
deleted_at: msg.deleted_at | ||
) | ||
end | ||
render(partial: 'status_message', collection: @messages, locals: { builder: xml }) | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
render(partial: 'status_message', locals: { builder: xml, status_message: @message }) |
15 changes: 0 additions & 15 deletions
15
src/api/app/views/webui/main/_add_status_message_modal.html.haml
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
src/api/app/views/webui/main/responsive_ux/_index_actions.html.haml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3 changes: 3 additions & 0 deletions
3
src/api/app/views/webui/status_messages/_breadcrumb_items.html.haml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
= render partial: 'webui/main/breadcrumb_items' | ||
%li.breadcrumb-item.active{ 'aria-current' => 'page' } | ||
Status Message |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
- if flash[:error] | ||
flashContent = '#{escape_javascript(render(layout: false, partial: 'layouts/webui/flash', object: flash))}'; | ||
$('#flash').html(flashContent); | ||
- else | ||
$('#status-message-announcement').fadeOut() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
- @pagetitle = 'Create Status Message' | ||
.row | ||
.col | ||
.card | ||
.card-body | ||
.row | ||
.col-12 | ||
%h3= @pagetitle | ||
.col-12.col-md-9.col-lg-6 | ||
= form_for(StatusMessage.new, url: status_messages_path) do |f| | ||
.form-group | ||
= f.label(:message) do | ||
Message: | ||
%abbr.text-danger{ title: 'required' } * | ||
= f.text_area(:message, rows: 3, required: true, class: 'form-control') | ||
.form-group | ||
= f.label(:severity) do | ||
Severity: | ||
%abbr.text-danger{ title: 'required' } * | ||
%small.form-text With "Announcement", the message will be displayed on the top and all over the web site. | ||
- options = StatusMessage.severities.keys.map { |severity| [severity.humanize, severity] } | ||
= f.select(:severity, options_for_select(options), {}, class: 'custom-select') | ||
.form-group | ||
= f.label(:communication_scope, 'Communication Scope:') | ||
- options = StatusMessage.communication_scopes.keys.map { |scope| [scope.humanize, scope] } | ||
= f.select(:communication_scope, options_for_select(options), {}, class: 'custom-select') | ||
= f.submit 'Create', class: 'btn btn-primary' |
Oops, something went wrong.