-
Notifications
You must be signed in to change notification settings - Fork 57
/
Copy pathadd-event-ui-builder.js
63 lines (55 loc) · 1.73 KB
/
add-event-ui-builder.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import { withPluginApi } from "discourse/lib/plugin-api";
import showModal from "discourse/lib/show-modal";
function initializeEventBuilder(api) {
const currentUser = api.getCurrentUser();
api.addToolbarPopupMenuOptionsCallback((composerController) => {
if (!currentUser || !currentUser.can_create_discourse_post_event) {
return;
}
const composerModel = composerController.model;
if (
composerModel &&
!composerModel.replyingToTopic &&
(composerModel.topicFirstPost ||
composerModel.creatingPrivateMessage ||
(composerModel.editingPost &&
composerModel.post &&
composerModel.post.post_number === 1))
) {
return {
label: "discourse_post_event.builder_modal.attach",
id: "insertEvent",
group: "insertions",
icon: "calendar-day",
action: "insertEvent",
};
}
});
api.modifyClass("controller:composer", {
pluginId: "discourse-calendar",
actions: {
insertEvent() {
const eventModel = this.store.createRecord(
"discourse-post-event-event"
);
eventModel.set("status", "public");
eventModel.set("custom_fields", {});
eventModel.set("starts_at", moment());
eventModel.set("timezone", moment.tz.guess());
showModal("discourse-post-event-builder").setProperties({
toolbarEvent: this.toolbarEvent,
model: { eventModel },
});
},
},
});
}
export default {
name: "add-discourse-post-event-builder",
initialize(container) {
const siteSettings = container.lookup("service:site-settings");
if (siteSettings.discourse_post_event_enabled) {
withPluginApi("0.8.7", initializeEventBuilder);
}
},
};