FIX: set post_url so calendar events can be clicked from anywhere
This commit is contained in:
parent
68500cadd2
commit
45e7b258da
|
@ -277,11 +277,15 @@ function initializeDiscourseCalendar(api) {
|
|||
|
||||
calendar.setOption("eventClick", ({ event, jsEvent }) => {
|
||||
hidePopover(jsEvent);
|
||||
const { postNumber } = event.extendedProps;
|
||||
if (!postNumber) return;
|
||||
_topicController =
|
||||
_topicController || api.container.lookup("controller:topic");
|
||||
_topicController.send("jumpToPost", postNumber);
|
||||
const { postNumber, postUrl } = event.extendedProps;
|
||||
|
||||
if (postUrl) {
|
||||
DiscourseURL.routeTo(postUrl);
|
||||
} else if (postNumber) {
|
||||
_topicController =
|
||||
_topicController || api.container.lookup("controller:topic");
|
||||
_topicController.send("jumpToPost", postNumber);
|
||||
}
|
||||
});
|
||||
|
||||
calendar.setOption("eventMouseEnter", ({ event, jsEvent }) => {
|
||||
|
@ -312,8 +316,9 @@ function initializeDiscourseCalendar(api) {
|
|||
);
|
||||
|
||||
event.extendedProps = {};
|
||||
|
||||
if (detail.post_number) {
|
||||
if (detail.post_url) {
|
||||
event.extendedProps.postUrl = detail.post_url;
|
||||
} else if (detail.post_number) {
|
||||
event.extendedProps.postNumber = detail.post_number;
|
||||
} else {
|
||||
event.classNames = ["holiday"];
|
||||
|
|
|
@ -40,7 +40,8 @@ module DiscourseCalendar
|
|||
from.iso8601.to_s,
|
||||
to ? to.iso8601.to_s : nil,
|
||||
post.user.username_lower,
|
||||
dates[0]["recurring"].presence
|
||||
dates[0]["recurring"].presence,
|
||||
"/t/-/#{post.topic.id}/#{post.post_number}"
|
||||
]
|
||||
|
||||
op.set_calendar_event(post.post_number, detail)
|
||||
|
|
|
@ -202,7 +202,7 @@ after_initialize do
|
|||
result = []
|
||||
|
||||
details = post_custom_fields[DiscourseCalendar::CALENDAR_DETAILS_CUSTOM_FIELD]
|
||||
Array(details).each do |post_number, (message, from, to, username, recurring)|
|
||||
Array(details).each do |post_number, (message, from, to, username, recurring, post_url)|
|
||||
result << {
|
||||
type: :standalone,
|
||||
post_number: post_number.to_i,
|
||||
|
@ -211,6 +211,7 @@ after_initialize do
|
|||
to: to,
|
||||
username: username,
|
||||
recurring: recurring,
|
||||
post_url: post_url
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -22,7 +22,12 @@ describe DiscourseCalendar::EventUpdater do
|
|||
expect(op.custom_fields[DiscourseCalendar::CALENDAR_CUSTOM_FIELD]).to eq("dynamic")
|
||||
expect(op.calendar_details).to eq(
|
||||
post.post_number.to_s => [
|
||||
"Rome", "2018-06-05T10:20:00Z", "2018-06-05T11:20:00Z", post.user.username_lower, nil
|
||||
"Rome",
|
||||
"2018-06-05T10:20:00Z",
|
||||
"2018-06-05T11:20:00Z",
|
||||
post.user.username_lower,
|
||||
nil,
|
||||
"/t/-/#{post.topic.id}/#{post.post_number}"
|
||||
]
|
||||
)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue