Hola,
Tengo el “icono de crear evento” colocado a la derecha y fuera del menú +, pero puedes colocarlo a la izquierda con estas instrucciones:
1° En el encabezado de tu tema en admin > apariencia > tema > editar > editar código > head, añade este javascript:
<!-- Botón personalizado de creación de eventos (basado en iconos, a prueba de idiomas) -->
<script>
(() => {
const e = ".d-editor-button-bar"; // Barra de botones del editor
const t = ".btn.no-text.fk-d-menu__trigger.toolbar-menu__options-trigger.toolbar__button.options.toolbar-popup-menu-options"; // Botón del menú de opciones
const n = ".fk-d-menu__inner-content"; // Contenido interno del menú
const o = ".d-modal.fk-d-menu-modal"; // Modal del menú
// Función para obtener el botón del icono del calendario
const c = (e) => {
const t = e.querySelector('svg use[href="#calendar-day"]');
return t ? t.closest("button") : null;
};
// Función para esperar a que un elemento exista
const r = (e, t, n = 4000) => new Promise((o, c) => {
const r = t(e);
if (r) return o(r);
const l = new MutationObserver(() => {
const n = t(e);
n && (l.disconnect(), o(n));
});
l.observe(e, { childList: !0, subtree: !0 });
setTimeout(() => {
l.disconnect();
c();
}, n);
});
// Función para esperar a que aparezca el modal del menú
const l = (e = 4000) => {
const t = new MutationObserver(() => {
document.querySelector(o) && t.disconnect();
});
t.observe(document.body, { childList: !0, subtree: !0 });
setTimeout(() => {
t.disconnect();
}, e);
};
// Función para crear y añadir el botón de crear evento
const s = (e) => {
if (e.querySelector(".custom-create-event-btn")) return;
const o = document.createElement("button");
o.className = "btn no-text btn-icon toolbar__button link custom-create-event-btn";
o.title = "Create event"; // Título del botón
o.innerHTML = '<svg class="fa d-icon d-icon-calendar-day svg-icon"><use href="#calendar-day"></use></svg>';
e.appendChild(o);
o.addEventListener("click", async () => {
const e = document.querySelector(t);
if (!e) return;
e.click();
let o = document.querySelector(n);
if (!o) {
await new Promise((e, t) => {
const c = new MutationObserver(() => {
o = document.querySelector(n);
o && (c.disconnect(), e());
});
c.observe(document.body, { childList: !0, subtree: !0 });
setTimeout(() => {
c.disconnect();
t();
}, 2000);
});
}
try {
(await r(o, c)).click();
l();
} catch {}
});
};
// Observador para detectar la aparición de la barra de botones del editor
const u = new MutationObserver(() => {
const t = document.querySelector(e);
t && s(t);
});
u.observe(document.body, { childList: !0, subtree: !0 });
const d = document.querySelector(e);
d && s(d);
})();
</script>
2° Si quieres el icono a la izquierda y no a la derecha: en la misma página de administración encontrarás una pestaña de CSS donde puedes añadir esto:
.btn.no-text.btn-icon.toolbar__button.link.custom-create-event-btn { order: -1; }
3° Bonus: si quieres que este botón sea visible en este lugar solo en ciertas categorías, usa el script de allí y modifica las condiciones con los nombres de tus categorías Discourse Calendar (and Event) - #547 by opcourdis
