J’insère un bouton dans l’en-tête qui ajoute un utilisateur à un groupe. Cela fonctionne, mais faire un appel ajax pour ce faire ne semble pas correct. Il semblerait que je puisse “juste” appeler le modèle Group et le faire là-bas, mais je ne trouve aucun exemple qui le fasse.
Ceci est dans un plugin…
Je suppose qu’il doit y avoir un moyen de faire de demoGroup un modèle plutôt qu’un simple dict ?
const demoServerGroupName = siteSettings.pfaffmanager_demo_server_group;
const groups = Site.currentProp("groups");
const router = container.lookup("router:main");
const demoGroup = groups.find((g) => {
return g.name === demoServerGroupName;
});
const hasDemoServer = servers.find((g) => {
return g.hostname.includes("pfaffmanagerdemo");
});
if (demoGroup && !hasDemoServer) {
api.decorateWidget("header-buttons:before", (helper) => {
const addToDemoGroup = function () {
window.console.log("need to add to group", demoGroup);
const groupId = demoGroup.id;
const url = `/groups/${groupId}/join.json`;
ajax(url, {
type: "PUT",
data: currentUser.username,
})
.then(() => {
router.transitionTo("/pfaffmanager/servers"); //TODO: refer to the route?
})
.catch(popupAjaxError);
};
return helper.h(
"button#newDemoServer",
{
className: "btn btn-text btn-primary create headerLink",
title: I18n.t("pfaffmanager.server.create_demo_server_title"),
onclick: addToDemoGroup,
},
I18n.t("pfaffmanager.server.create_demo_server_short")
);
});
}