This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/widgets/post-edits-indicator.js.es6
Robin Ward 15c9b00307 FEATURE: Show edit indicator on review queue
If a flagged post has edits, show the pencil icon and pop up the history
window when clicked.
2019-05-03 11:21:33 -04:00

80 lines
1.9 KiB
JavaScript

import { createWidget } from "discourse/widgets/widget";
import { iconNode } from "discourse-common/lib/icon-library";
import { longDate } from "discourse/lib/formatter";
import { h } from "virtual-dom";
function mult(val) {
return 60 * 50 * 1000 * val;
}
export function historyHeat(siteSettings, updatedAt) {
if (!updatedAt) {
return;
}
// Show heat on age
const rightNow = new Date().getTime();
const updatedAtTime = updatedAt.getTime();
if (updatedAtTime > rightNow - mult(siteSettings.history_hours_low)) {
return "heatmap-high";
}
if (updatedAtTime > rightNow - mult(siteSettings.history_hours_medium)) {
return "heatmap-med";
}
if (updatedAtTime > rightNow - mult(siteSettings.history_hours_high)) {
return "heatmap-low";
}
}
export default createWidget("post-edits-indicator", {
tagName: "div.post-info.edits",
html(attrs) {
let icon = "pencil-alt";
const updatedAt = new Date(attrs.updated_at);
let className = historyHeat(this.siteSettings, updatedAt);
const date = longDate(updatedAt);
let title;
if (attrs.wiki) {
icon = "pencil-square-o";
className = `${className || ""} wiki`.trim();
if (attrs.version > 1) {
title = `${I18n.t("post.last_edited_on")} ${date}`;
} else {
title = I18n.t("post.wiki.about");
}
} else {
title = `${I18n.t("post.last_edited_on")} ${date}`;
}
const contents = [
attrs.version > 1 ? attrs.version - 1 : "",
" ",
iconNode(icon)
];
return h(
"a",
{
className,
attributes: { title, href: "#" }
},
contents
);
},
click(e) {
e.preventDefault();
if (this.attrs.wiki && this.attrs.version === 1) {
this.sendWidgetAction("editPost");
} else if (this.attrs.canViewEditHistory) {
this.sendWidgetAction("showHistory");
}
}
});