A seguito di ciò, abbiamo un plugin che utilizza i token BBCode “wrap_open”, che non sono ancora supportati dall’editor di testo avanzato. Pertanto, dobbiamo assicurarci di rimanere in modalità Markdown per ora.
Ho usato Claude Sonnet per generare il seguente codice per garantirlo. Sarei felice di ricevere feedback su come potrei migliorarlo (soprattutto se presenta bug
). Condivido anche questo nel caso in cui possa aiutare altri amministratori del forum. Il codice va in Impostazioni tema > JS (/admin/customize/themes/2/common/js/edit):
import {
apiInitializer
} from "discourse/lib/api";
export default apiInitializer((api) => {
// Forza il passaggio dell'editor dell'utente alla modalità markdown
function switchToMarkdownMode() {
const currentUser = api.getCurrentUser();
// L'utente dovrebbe essere connesso se il composer è stato aperto
if (!currentUser) {
console.error('Nessun utente trovato');
return;
}
// Ottenuta questa opzione da qui
// https://github.com/discourse/discourse/blob/f0fc5646dc9bd29b0e814faea490e34800e9b322/app/assets/javascripts/discourse/app/models/user.js#L262C1-L266C4
const currentMode = currentUser.get('user_option.composition_mode');
if (currentMode !== 0) {
// Passa solo se non è già in modalità markdown
// Esempio di utilizzo: https://github.com/discourse/discourse/blob/87476ce2c18fb8f856dda7ff03804ed5fbb0ff38/app/assets/javascripts/discourse/app/services/user-tips.js#L127
currentUser.set('user_option.composition_mode', 0);
// Salva la preferenza dell'utente sul server
currentUser.save(['composition_mode']).then(() => {
console.log('Passato con successo alla modalità markdown');
}).catch((error) => {
console.error('Impossibile aggiornare la modalità di composizione:', error);
});
// Attiva immediatamente l'interfaccia del composer corrente
setTimeout(() => {
const toggleButton = document.querySelector('.composer-toggle-switch[data-rich-editor]');
if (toggleButton) {
const isRichTextActive = toggleButton.getAttribute('aria-checked') === 'true';
if (isRichTextActive) {
toggleButton.click();
console.log('Attivato il composer corrente in modalità markdown');
}
}
}, 100); // Piccolo ritardo per garantire il rendering completo del composer
} else {
console.log('Già in modalità markdown, nessuna modifica necessaria');
}
}
api.onAppEvent('composer:opened', () => {
switchToMarkdownMode();
});
});