You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.9 KiB
99 lines
2.9 KiB
import CRUDBase from '../CRUDBase.js'
|
|
|
|
class AnnouncementResource extends CRUDBase {
|
|
endpoint = '/api/v1/system/announcements'
|
|
required_fields = ['user_ids', 'group_ids', 'title', 'message', 'type']
|
|
permission_base = 'v1:system:announcements'
|
|
|
|
item = 'System Announcement'
|
|
plural = 'System Announcements'
|
|
|
|
listing_definition = {
|
|
display: `
|
|
System announcements are administrative messages that you want all or some of your users to see. These messages can be delivered via e-mail, as a message after login, or as a system banner announcement.
|
|
`,
|
|
columns: [
|
|
{
|
|
name: 'Title',
|
|
field: 'title',
|
|
},
|
|
{
|
|
name: 'Message',
|
|
field: 'message',
|
|
renderer: (message) => String(message).slice(0, 150),
|
|
},
|
|
],
|
|
actions: [
|
|
{
|
|
type: 'resource',
|
|
position: 'main',
|
|
action: 'insert',
|
|
text: 'Create New',
|
|
color: 'success',
|
|
},
|
|
{
|
|
type: 'resource',
|
|
position: 'row',
|
|
action: 'delete',
|
|
icon: 'fa fa-times',
|
|
color: 'danger',
|
|
confirm: true,
|
|
},
|
|
],
|
|
}
|
|
|
|
form_definition = {
|
|
fields: [
|
|
{
|
|
name: 'Title',
|
|
field: 'title',
|
|
type: 'text',
|
|
},
|
|
{
|
|
name: 'Message',
|
|
field: 'message',
|
|
type: 'textarea',
|
|
},
|
|
{
|
|
name: 'Users',
|
|
field: 'user_ids',
|
|
type: 'select.dynamic.multiple',
|
|
options: {
|
|
resource: 'auth/User',
|
|
display: (user) => `${user.last_name}, ${user.first_name} (${user.uid})`,
|
|
value: 'id',
|
|
},
|
|
},
|
|
{
|
|
name: 'Groups',
|
|
field: 'group_ids',
|
|
type: 'select.dynamic.multiple',
|
|
options: {
|
|
resource: 'auth/Group',
|
|
display: (group) => `${group.name}`,
|
|
value: 'id',
|
|
},
|
|
},
|
|
{
|
|
name: 'Type',
|
|
field: 'type',
|
|
type: 'select',
|
|
options: [
|
|
{ display: 'Login Intercept', value: 'login' },
|
|
{ display: 'E-Mail', value: 'email' },
|
|
{ display: 'System Banner', value: 'banner' },
|
|
],
|
|
},
|
|
],
|
|
handlers: {
|
|
insert: {
|
|
action: 'redirect',
|
|
next: '/dash/c/listing/system/Announcement',
|
|
},
|
|
}
|
|
}
|
|
}
|
|
|
|
const system_announcement = new AnnouncementResource()
|
|
export { system_announcement }
|