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/components/topic-status.js.es6
Gerhard Schlager 70cdb42173 FIX: Tooltip for unlisted topics wasn't shown in topic list
The locale key had to be renamed, because this key is also used as CSS class.
The "invisible" CSS class makes the icon invisible. "unlisted" doesn't have that effect.
2019-01-15 16:13:06 +01:00

72 lines
2.1 KiB
JavaScript

import { iconHTML } from "discourse-common/lib/icon-library";
import { bufferedRender } from "discourse-common/lib/buffered-render";
import { escapeExpression } from "discourse/lib/utilities";
export default Ember.Component.extend(
bufferedRender({
classNames: ["topic-statuses"],
rerenderTriggers: [
"topic.archived",
"topic.closed",
"topic.pinned",
"topic.visible",
"topic.unpinned",
"topic.is_warning"
],
click(e) {
// only pin unpin for now
if (this.get("canAct") && $(e.target).hasClass("d-icon-thumbtack")) {
const topic = this.get("topic");
topic.get("pinned") ? topic.clearPin() : topic.rePin();
}
return false;
},
canAct: function() {
return Discourse.User.current() && !this.get("disableActions");
}.property("disableActions"),
buildBuffer(buffer) {
const renderIcon = function(name, key, actionable) {
const title = escapeExpression(I18n.t(`topic_statuses.${key}.help`)),
startTag = actionable ? "a href" : "span",
endTag = actionable ? "a" : "span",
iconArgs = key === "unpinned" ? { class: "unpinned" } : null,
icon = iconHTML(name, iconArgs);
buffer.push(
`<${startTag} title='${title}' class='topic-status'>${icon}</${endTag}>`
);
};
const renderIconIf = (conditionProp, name, key, actionable) => {
if (!this.get(conditionProp)) {
return;
}
renderIcon(name, key, actionable);
};
renderIconIf("topic.is_warning", "envelope", "warning");
if (this.get("topic.closed") && this.get("topic.archived")) {
renderIcon("lock", "locked_and_archived");
} else {
renderIconIf("topic.closed", "lock", "locked");
renderIconIf("topic.archived", "lock", "archived");
}
renderIconIf("topic.pinned", "thumbtack", "pinned", this.get("canAct"));
renderIconIf(
"topic.unpinned",
"thumbtack",
"unpinned",
this.get("canAct")
);
renderIconIf("topic.invisible", "far-eye-slash", "unlisted");
}
})
);