mirror of
https://github.com/flarum/core.git
synced 2025-10-14 00:15:51 +02:00
* Fix global typings for extensions * Deprecate global `app` typings See https://github.com/flarum/core/issues/2857#issuecomment-889841326 * Add `app` export for common namespace * Add missing `app` imports within core * Add missing `app` imports to JS files * Fix incorrect import * Fix admin file importing forum `app` * Add `flarum` global variable * Format * Update JSDoc comment * Update JSDoc comment Co-authored-by: Alexander Skvortsov <sasha.skvortsov109@gmail.com> * Fix frontend JS error * Empty commit Co-authored-by: Alexander Skvortsov <sasha.skvortsov109@gmail.com>
53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
import app from '../../admin/app';
|
|
import DashboardWidget from './DashboardWidget';
|
|
import isExtensionEnabled from '../utils/isExtensionEnabled';
|
|
import getCategorizedExtensions from '../utils/getCategorizedExtensions';
|
|
import Link from '../../common/components/Link';
|
|
import icon from '../../common/helpers/icon';
|
|
|
|
export default class ExtensionsWidget extends DashboardWidget {
|
|
oninit(vnode) {
|
|
super.oninit(vnode);
|
|
|
|
this.categorizedExtensions = getCategorizedExtensions();
|
|
}
|
|
|
|
className() {
|
|
return 'ExtensionsWidget';
|
|
}
|
|
|
|
content() {
|
|
const categories = app.extensionCategories;
|
|
|
|
return (
|
|
<div className="ExtensionsWidget-list">
|
|
{Object.keys(categories).map((category) => (this.categorizedExtensions[category] ? this.extensionCategory(category) : ''))}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
extensionCategory(category) {
|
|
return (
|
|
<div className="ExtensionList-Category">
|
|
<h4 className="ExtensionList-Label">{app.translator.trans(`core.admin.nav.categories.${category}`)}</h4>
|
|
<ul className="ExtensionList">{this.categorizedExtensions[category].map((extension) => this.extensionWidget(extension))}</ul>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
extensionWidget(extension) {
|
|
return (
|
|
<li className={'ExtensionListItem ' + (!isExtensionEnabled(extension.id) ? 'disabled' : '')}>
|
|
<Link href={app.route('extension', { id: extension.id })}>
|
|
<div className="ExtensionListItem-content">
|
|
<span className="ExtensionListItem-icon ExtensionIcon" style={extension.icon}>
|
|
{extension.icon ? icon(extension.icon.name) : ''}
|
|
</span>
|
|
<span className="ExtensionListItem-title">{extension.extra['flarum-extension'].title}</span>
|
|
</div>
|
|
</Link>
|
|
</li>
|
|
);
|
|
}
|
|
}
|