Files
discourse-subscriptions/assets/javascripts/discourse/widgets/donations-category-header-widget.js.es6
T

171 lines
5.2 KiB
JavaScript
Raw Normal View History

2018-09-22 14:03:30 +10:00
import { createWidget } from 'discourse/widgets/widget';
import { h } from 'virtual-dom';
import { avatarFor } from 'discourse/widgets/post';
2018-09-30 11:51:20 +10:00
import { userPath } from "discourse/lib/url";
2019-04-03 12:32:24 +11:00
import { iconNode } from "discourse-common/lib/icon-library";
2018-09-22 14:03:30 +10:00
function donationDisplay(amount, type) {
return h(`div.donations-${type}`, [
h('span', I18n.t(`discourse_donations.cause.category.${type}`)),
h('span', `$${(amount/100).toFixed(2)}`)
]);
}
createWidget('category-header-widget', {
tagName: 'span',
html(args) {
const controller = this.register.lookup('controller:navigation/category');
const category = controller.get("category");
2018-09-22 14:03:30 +10:00
2018-09-23 09:08:39 +10:00
if (args.currentPath.toLowerCase().indexOf('category') > -1 &&
category &&
category.donations_cause) {
2018-09-22 14:03:30 +10:00
$("body").addClass("donations-category");
let contents = [
h('div.donations-category-contents', [
h('h1', category.name),
h('div.category-title-description', h('p', category.description_text))
])
];
2018-09-28 17:33:27 +10:00
let metadata = [];
2018-09-30 11:23:05 +10:00
if (category.donations_total !== undefined) {
2018-09-28 17:33:27 +10:00
metadata.push(donationDisplay(category.donations_total || 0, 'total'));
if (Discourse.SiteSettings.discourse_donations_cause_month) {
metadata.push(donationDisplay(category.donations_month || 0, 'month'));
}
}
if (category.donations_github) {
metadata.push(
2018-09-22 14:03:30 +10:00
h('div.donations-github', this.attach('link', {
icon: 'github',
label: 'discourse_donations.cause.github.label',
href: category.donations_github
}))
);
}
if (category.donations_meta) {
metadata.push(
2018-09-22 17:48:38 +10:00
h('div.donations-meta', this.attach('link', {
href: category.donations_meta,
contents: () => {
return [
h('img.meta-icon', {
attributes: {
src: 'https://discourse-meta.s3.dualstack.us-west-1.amazonaws.com/original/3X/b/1/b19ba793155a785bbd9707bc0cabbd3a987fa126.png?v=6'
}
}),
2018-09-22 17:48:38 +10:00
h('span', I18n.t('discourse_donations.cause.meta.label'))
];
}
2018-09-22 14:03:30 +10:00
}))
);
2018-09-30 11:23:05 +10:00
}
2018-09-22 14:03:30 +10:00
2019-04-03 12:32:24 +11:00
if (category.donations_release_oldest) {
let releaseArray = category.donations_release_oldest.split('/');
let label = releaseArray[releaseArray.length - 1];
metadata.push(
h('div.donations-release-oldest', [
2019-04-09 09:04:24 +10:00
h('span', '>='),
2019-04-03 12:32:24 +11:00
this.attach('link', {
href: category.donations_release_oldest,
icon: 'tag',
rawLabel: label,
omitSpan: true,
attributes: {
target: '_blank'
}
})
])
)
}
if (category.donations_release_latest) {
let releaseArray = category.donations_release_latest.split('/');
let label = releaseArray[releaseArray.length - 1];
metadata.push(
h('div.donations-release-latest', [
2019-04-09 09:04:24 +10:00
h('span', '<='),
2019-04-03 12:32:24 +11:00
this.attach('link', {
href: category.donations_release_latest,
icon: 'tag',
rawLabel: label,
omitSpan: true,
attributes: {
target: '_blank'
}
})
])
)
}
2018-09-30 11:23:05 +10:00
if (metadata.length) {
contents.push(h('div.donations-category-metadata', metadata));
}
let users = [];
2018-09-22 14:03:30 +10:00
if (category.donations_backers.length) {
users.push(h('div.donations-backers', [
2018-09-22 14:03:30 +10:00
h('div.donations-backers-title', I18n.t('discourse_donations.cause.backers.label')),
category.donations_backers.map(user => {
2018-09-30 11:51:20 +10:00
if (user) {
return avatarFor('medium', {
template: user.avatar_template,
username: user.username,
name: user.name,
url: userPath(user.username),
className: "backer-avatar"
});
} else {
return;
}
2018-09-22 14:03:30 +10:00
})
]));
};
if (category.donations_maintainers.length) {
2018-09-28 17:33:27 +10:00
let maintainersLabel = category.donations_maintainers_label ||
I18n.t('discourse_donations.cause.maintainers.label');
users.push(h('div.donations-maintainers', [
2018-09-28 17:33:27 +10:00
h('div.donations-maintainers-title', maintainersLabel),
2018-09-22 14:03:30 +10:00
category.donations_maintainers.map(user => {
if (user) {
return avatarFor('medium', {
template: user.avatar_template,
username: user.username,
name: user.name,
2018-09-30 11:51:20 +10:00
url: userPath(user.username),
2018-09-22 14:03:30 +10:00
className: "maintainer-avatar"
});
} else {
return;
}
})
]));
}
if (users.length) {
contents.push(h('div.donations-category-users', users));
2018-09-22 14:03:30 +10:00
}
return h('div.donations-category-header', {
"attributes" : {
"style" : "background-color: #" + category.color + "; color: #" + category.text_color + ";"
}
}, contents);
} else {
$("body").removeClass("donations-category");
}
}
});