mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 08:43:45 +08:00
361e954c55
This commit introduces a little bit of duplication since the old plugin UIs not using the new plugin show page look different from ones like AI and Gamification which have been converted. We can use the new admin header component on the plugins list, but for the other pages we are manually rendering a breadcrumb trail and the list of plugin tabs. Over time as we convert more plugins to use the new UI guidelines and show page we can get rid of this duplication.
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
import Controller from "@ember/controller";
|
|
import { action } from "@ember/object";
|
|
import { service } from "@ember/service";
|
|
import { popupAjaxError } from "discourse/lib/ajax-error";
|
|
import SiteSetting from "admin/models/site-setting";
|
|
|
|
export default class AdminPluginsIndexController extends Controller {
|
|
@service session;
|
|
@service adminPluginNavManager;
|
|
@service router;
|
|
|
|
@action
|
|
async togglePluginEnabled(plugin) {
|
|
const oldValue = plugin.enabled;
|
|
const newValue = !oldValue;
|
|
|
|
try {
|
|
plugin.enabled = newValue;
|
|
await SiteSetting.update(plugin.enabledSetting, newValue);
|
|
this.session.requiresRefresh = true;
|
|
} catch (e) {
|
|
plugin.enabled = oldValue;
|
|
popupAjaxError(e);
|
|
}
|
|
}
|
|
|
|
// NOTE: See also AdminPluginsController, there is some duplication here
|
|
// while we convert plugins to use_new_show_route
|
|
get adminRoutes() {
|
|
return this.allAdminRoutes.filter((route) => this.routeExists(route));
|
|
}
|
|
|
|
get allAdminRoutes() {
|
|
return this.model
|
|
.filter((plugin) => plugin?.enabled && plugin?.adminRoute)
|
|
.map((plugin) => {
|
|
return Object.assign(plugin.adminRoute, { plugin_id: plugin.id });
|
|
});
|
|
}
|
|
|
|
routeExists(route) {
|
|
try {
|
|
if (route.use_new_show_route) {
|
|
this.router.urlFor(route.full_location, route.location);
|
|
} else {
|
|
this.router.urlFor(route.full_location);
|
|
}
|
|
return true;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|