Nessun errore appare nella console. Ma ho registrato un video a scopo di riferimento.
Questo accade su Chrome, Firefox e Safari. Su Safari mobile non si verifica.
Il tuo link al video è rotto!
Scusa, non avevo capito bene. In effetti hai ragione: quando si clicca su una data nel calendario, si apre il modulo per la creazione dell’evento, ma con il pulsante «Vuoi abbandonare?». Sì, in effetti c’è un piccolo bug ![]()
Per vostra informazione, dal mio lato ho aggiunto un pulsante + info per gli utenti che non pensano di cliccare sul titolo per accedere all’argomento. Ho ripreso l’idea di @nathank dal suo pulsante “Aggiungi al calendario”.
Inserisci lo script in un componente del tema nella sezione generale /head
<script>
(() => {
const eventInfoSelector = ".event-header .event-info";
const eventCardSelector = ".fc-popover, .event-preview, .discourse-post-event";
// CSS iniettato pulito e adattato ai temi Discourse (Chiaro/Scuro)
const style = document.createElement("style");
style.innerHTML = `
.custom-topic-info-btn {
display: flex !important;
align-items: center;
justify-content: center;
width: 40%; /* Occupa tutta la larghezza per un rendering pulito sotto il titolo */
box-sizing: border-box;
margin: 12px 0 6px 0;
padding: 10px 16px;
/* Utilizzo delle variabili native di Discourse */
background-color: var(--tertiary) !important; /* Colore accentuato (es. blu) */
color: var(--secondary) !important; /* Colore del testo contrastato */
border-radius: 8px;
font-weight: 700;
text-decoration: none !important;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
transition: background-color 0.2s ease, transform 0.1s ease;
}
/* Effetto al passaggio del mouse */
.custom-topic-info-btn:hover {
background-color: var(--tertiary-hover) !important;
color: var(--secondary) !important;
transform: translateY(-1px);
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
}
/* Effetto al clic */
.custom-topic-info-btn:active {
transform: translateY(0);
}
/* Stile dell'icona SVG */
.custom-topic-info-btn .btn-icon-svg {
margin-right: 8px;
width: 16px;
height: 16px;
fill: currentColor;
}
`;
document.head.appendChild(style);
const findTopicLink = (container) => {
if (!container) return null;
const links = [...container.querySelectorAll('a[href*="/t/"]')];
if (links.length) return links[0].href;
return null;
};
const createTopicInfoButton = () => {
const eventInfo = document.querySelector(eventInfoSelector);
if (!eventInfo || eventInfo.querySelector(".custom-topic-info-btn")) return;
const card = eventInfo.closest(eventCardSelector) || document;
const topicUrl = findTopicLink(card);
if (!topicUrl) return;
const button = document.createElement("a");
button.className = "btn custom-topic-info-btn";
button.title = "Visualizza l'argomento completo";
button.href = topicUrl;
/* Aggiunta di un'icona Info SVG armonizzata */
button.innerHTML = `
<svg class="btn-icon-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V240h-24c-13.3 0-24-10.7-24-24s10.7-24 24-24h40c13.3 0 24 10.7 24 24v120h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-144a32 32 0 1 1 0-64 32 32 0 1 1 0 64z"/>
</svg>
<span class="d-button-label">+ Info</span>
`;
if (eventInfo.firstElementChild) {
eventInfo.insertBefore(button, eventInfo.firstElementChild.nextSibling);
} else {
eventInfo.appendChild(button);
}
};
const observer = new MutationObserver(() => createTopicInfoButton());
observer.observe(document.body, { childList: true, subtree: true });
createTopicInfoButton();
})();
</script>
Ecco un’anteprima
oppure
questo codice
<script>
(() => {
const eventCardSelector = ".fc-popover, .event-preview, .discourse-post-event";
// CSS iniettato per un rendering pulito e moderno
const style = document.createElement("style");
style.innerHTML = `
.custom-topic-info-wrapper {
margin-top: 16px;
padding-top: 16px;
border-top: 1px solid var(--primary-low); /* Linea di separazione sottile */
width: 100%;
display: flex;
justify-content: center;
}
.custom-topic-info-btn {
display: flex !important;
align-items: center;
justify-content: center;
width: 100%;
box-sizing: border-box;
padding: 8px 16px;
/* Stile Outline elegante */
background-color: transparent !important;
color: var(--tertiary) !important;
border: 1px solid var(--tertiary) !important;
border-radius: 6px;
font-weight: 600;
text-decoration: none !important;
transition: all 0.2s ease;
cursor: pointer;
}
/* Effetto al passaggio del mouse: il pulsante si riempie */
.custom-topic-info-btn:hover {
background-color: var(--tertiary) !important;
color: var(--secondary) !important;
border-color: var(--tertiary) !important;
}
/* Allineamento del logo informazioni */
.custom-topic-info-btn .btn-icon-svg {
margin-right: 8px;
width: 16px;
height: 16px;
fill: currentColor;
}
`;
document.head.appendChild(style);
const findTopicLink = (container) => {
if (!container) return null;
const links = [...container.querySelectorAll('a[href*="/t/"]')];
if (links.length) return links[0].href;
return null;
};
const createTopicInfoButton = () => {
const cards = document.querySelectorAll(eventCardSelector);
cards.forEach(card => {
if (card.querySelector(".custom-topic-info-btn")) return;
const topicUrl = findTopicLink(card);
if (!topicUrl) return;
const wrapper = document.createElement("div");
wrapper.className = "custom-topic-info-wrapper";
const button = document.createElement("a");
button.className = "btn custom-topic-info-btn";
button.title = "Consulta l'argomento completo";
button.href = topicUrl;
/* Icona "i" Informazioni + Nuovo testo azionabile */
button.innerHTML = `
<svg class="btn-icon-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V240h-24c-13.3 0-24-10.7-24-24s10.7-24 24-24h40c13.3 0 24 10.7 24 24v120h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-144a32 32 0 1 1 0-64 32 32 0 1 1 0 64z"/>
</svg>
<span class="d-button-label">Consulta l'argomento</span>
`;
wrapper.appendChild(button);
/* Posizionamento sopra le opzioni di risposta (Parteciperò, ecc.) */
const actionsContainer = card.querySelector(".status-and-options, .event-actions");
const infoContainer = card.querySelector(".event-info");
if (actionsContainer && actionsContainer.parentNode) {
actionsContainer.parentNode.insertBefore(wrapper, actionsContainer);
} else if (infoContainer) {
infoContainer.appendChild(wrapper);
} else {
card.appendChild(wrapper);
}
});
};
const observer = new MutationObserver(() => createTopicInfoButton());
observer.observe(document.body, { childList: true, subtree: true });
createTopicInfoButton();
})();
</script>
l’anteprima del risultato
Avete la scelta ![]()
Avete davvero migliorato la facilità di creazione di un evento dalle ultime aggiornamenti ![]()
Tuttavia, volevo sapere se esiste un’impostazione che impedisce la creazione di un evento quando un utente clicca sul calendario. A volte, invece di cliccare sull’evento, clicca accanto, aprendo così una finestra modale per creare un evento ![]()
Grazie
So che sono un po’ pesante, ma ho un’altra domanda o suggerimento riguardo agli eventi scaduti. Potrebbero essere eliminati automaticamente, dato che non ha più senso tenerli presenti; mi sembra che il plugin eventi lo facesse già in automatico.
Al momento lo faccio manualmente, quindi se c’è un modo per risparmiare tempo ![]()
Grazie al team
Esiste un modo per cui il luogo dell’evento possa effettuare una ricerca, come avviene in Google Calendar o negli eventi di Facebook, sia per aiutare l’utente a scegliere il luogo, sia per rendere il luogo cliccabile e aprire un’applicazione di mappe?
(Non sono riuscito a trovare alcuna soluzione cercando, ma forse le mie query di ricerca non erano appropriate)
Locations Plugin 🌍 ha effettivamente questo tipo di funzionalità, ma si integra solo con l’alternativa Events Plugin 📅.
Lo sviluppatore (@merefield) potrebbe essere disponibile a integrarlo con il plugin ufficiale, ma immagino che stabilire e mantenere tale integrazione richieda un lavoro considerevole: quindi sarebbe necessario sponsorizzare il lavoro affinché ciò avvenga.
Ho cercato di dare un’occhiata al plugin Eventi, ma mi sono bloccato su
poiché il sito è offline da mesi.
Potrebbe valere la pena presentare una richiesta formale di funzionalità in Contribute > Feature (contrassegnata con calendar-and-events) per la valutazione. Posso immaginare che sarebbe una cosa fattibile e ha il potenziale per essere di alto valore per molti.
più tardi…
@lou lo ha effettivamente fatto qui:
Un post è stato unito a un argomento esistente: Supporto per la mappa della località dell’evento
Ho intenzione di esportare gli eventi pubblici su un sito WordPress utilizzando un plugin che sappia leggere il feed ICS da /discourse-post-event/events.ics. Fin qui tutto bene.
Ci sono alcune pagine su questo sito che dovrebbero mostrare un sottoinsieme di questi eventi; ogni pagina vuole visualizzare un sottoinsieme diverso.
Speravo di poter taggare gli eventi con un tag associato a ciascuna pagina, in modo che questo apparisse nella riga CATEGORIES del file ICS per consentire il filtraggio in base alla destinazione, ma sembra che non funzioni.
Sarei disposto a usare ?tag=[tag] nell’URL e far sì che le diverse pagine utilizzino URL diversi, anche se non ho trovato conferma che questa sia una funzionalità leggendo quanto ho potuto reperire.
C’è qualcosa che non sto considerando?
No, non stai perdendo nulla (per quanto ne so).
La possibilità di filtrare il feed .ics del calendario per categoria e/o tag sarebbe comunque una degna richiesta di feature per Contribute!
Alla fine ho dovuto creare il mio filtro tag, ma penso di aver capito che gli eventi “scaduti” non vengono scaricati tramite /discourse-post-event/events.ics. Inoltre, non vedo alcun modo per controllare quando un evento diventa “scaduto”. Potrei dover ricorrere a una query su Data Explorer invece di usare /…/events.ics
[anche se penso di aver trovato un modo migliore per farlo usando /discourse-post-event/event]
Ciao, sto cercando feedback su un aspetto relativo all’integrazione degli eventi con l’audio e lo streaming live. Consulta l’ultima risposta qui → https://meta.discourse.org/t/discourse-desktop-mac-app/406912/10?u=nicolsdennis

