Avraham
(Avraham Byers)
30 Novembre 2020, 6:07pm
1
Sto cercando di aggiungere del codice in Discourse per un calendario eventi. Ho usato l’indentazione di quattro spazi, ma sembra non funzionare.
Ecco il frammento di codice:
Questo è quello che ottengo…
Non sono un programmatore esperto, quindi se poteste semplificare il gergo tecnico ve ne sarei davvero grato.
Johani
(Joe)
30 Novembre 2020, 9:16pm
2
La causa è che Discourse filtra l’input degli utenti nei post come misura di sicurezza. Non vorresti che utenti casuali eseguissero script sul tuo sito, quindi li filtriamo.
Puoi utilizzare un componente del tema per far funzionare questa cosa. Se aggiungi qualcosa di simile in un nuovo componente del tema - sotto la scheda Intestazione - e poi lo aggiungi al tuo tema attivo, sarai in grado di utilizzare quell’embedding.
<script type="text/discourse-plugin" version="0.8">
const loadScript = require("discourse/lib/load-script").default;
const { next } = require("@ember/runloop");
api.decorateCookedElement(
post => {
const calendars = post.querySelectorAll(`[data-wrap="addEvent"]`);
if (!calendars.length) return;
calendars.forEach(calendar => {
const wrapper = document.createElement("div");
wrapper.dataset.calendar = calendar.dataset.calendar;
wrapper.dataset.configure = false;
wrapper.classList.add("ae-emd-cal");
calendar.append(wrapper);
});
next(() =>
loadScript("https://addevent.com/js/cal.embed.t1.init.js")
);
},
{ id: "AddEvent decorator", onlyStream: true }
);
</script>
Una volta fatto ciò, puoi aggiungere il calendario AddEvent a un post inserendo qualcosa di simile nel tuo post.
[wrap=addEvent calendar=bJ306355][/wrap]
Puoi modificare l’attributo calendar=bJ306355 per aggiungere l’identificatore specifico del calendario che desideri incorporare.
L’ultima cosa da fare è inserire lo script AddEvent nell’elenco consentiti nelle impostazioni del sito (questo è un ulteriore livello di sicurezza).
Cerca content_security_policy_script_src nell’amministrazione e aggiungi questo link lì
https://addevent.com
Fammi sapere se funziona per te e posso impacchettarlo come componente del tema.
Ciao @Johani ,
La tua soluzione funziona per me. Volevo solo farti sapere.
Grazie!
Quindi, ho appena creato un nuovo componente del tema per visualizzare un calendario AddEvent.
GitHub - graydenshand/discourse_upcoming_addevent: Replace the DiscourseEvent "upcoming events" calendar with an AddEvent embed · GitHub
Invece di incorporare il calendario in un post, che è troppo stretto per mostrare la versione desktop dell’incorporamento, questo componente del tema si appropria della pagina “Prossimi eventi” del plugin DiscourseCalendar.
Nota: per farlo, ho dovuto personalizzare lo script di AddEvent (https://addevent.com/js/cal.embed.t1.init.js ) per consentire il ridisegno tra le transizioni di pagina.