Contenuto privato in un post pubblico?

C’è un modo per rendere il contenuto all’interno di un post disponibile solo agli utenti registrati?
Sto pensando a post di eventi virtuali. Abbiamo un sacco di gruppi di lavoro nella nostra community che si incontrano virtualmente. Vorremmo far sapere ai visitatori occasionali che i gruppi e le riunioni esistono, e quando si svolgono, ma non vogliamo pubblicare i link di Zoom pubblicamente.

1 Mi Piace

Ehi Marty!

I sussurri fanno un po’ così: Creating a whisper post

:information_source: i post sussurrati non possono essere “annullati” dopo essere stati pubblicati, ma possono esserlo con questo componente tematico: Toggle Whisper 👁

2 Mi Piace

Grazie. Ci si avvicina. L’ideale sarebbe un modo per formattare il contenuto all’interno di un post in modo che il resto del post sia visibile a tutti e un messaggio come “link disponibile solo per utenti registrati” appaia se non si è registrati, ma sembra che i sussurri funzioneranno bene per ora.

Sono un amministratore alle prime armi, quindi sto ancora cercando di orientarmi tra tutte le funzionalità.

2 Mi Piace

Non so molto sulle modifiche di Discourse, ma sembra un po’ complicato e richiederebbe un plugin se non si vuole che venga aggirato da qualcuno che sa come modificare il codice lato client.

1 Mi Piace

Ho sviluppato un componente tematico che consente di nascondere i post nel frontend agli utenti che non hanno effettuato l’accesso. Naturalmente, se ci sono persone con una ricca esperienza di sviluppo, possono facilmente ottenerlo direttamente dal backend.

Non ho ancora pacchettizzato questo componente, quindi si prega di utilizzare direttamente il codice seguente.

Tag di intestazione:


const user = api.getCurrentUser();

const I18n = require("I18n");

const pid = "post_hider"

const tl4_css = `
.d-editor-preview [data-theme-hide] {
  background: var(--tertiary);
  color: var(--secondary);
  border-top: 2px solid var(--secondary);
  position: sticky;
  top: 0;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.d-editor-preview [data-theme-hide]::before {
  content: "This post is hidden";
}
`

api.addPostClassesCallback((attrs) => {
if (attrs?.cooked?.includes(`

  return ["lycoris-hiddened"];
} else {
  return [];
}
});

if (!user) {
    api.decorateCookedElement((el, helper) => {
        function hide_post() {
            setTimeout(() => {
                try {
                    document.querySelector(`[data-post-id="${helper?.widget?.attrs?.id}"]`)?.parentElement?.remove();
                } catch (err) {
                    console.log(el);
                    console.log(err);
                }
            }, 1000);
        }
        if (el?.querySelector(`[data-theme-hide="true"]`)) {
            el.innerHTML = `

            hide_post();
        }
    }, {
        id: pid,
        afterAdopt: true,
        onlyStream: true,
    });
} else if (user?.trust_level == 4) {
    const s = document.createElement("style");
    s.innerHTML = tl4_css;
    document.body.appendChild(s);
    api.decorateCookedElement((el, helper) => {
        if (el?.querySelector(`[data-theme-hide="true"]`)) {
            el.innerHTML = `

` + el.innerHTML;
        }
    }, {
        id: pid,
        afterAdopt: true,
        onlyStream: true,
    });
    if (!I18n.translations[I18n.currentLocale()].js.composer) {
        I18n.translations[I18n.currentLocale()].js.composer = {};
    }
    I18n.translations[I18n.currentLocale()].js.composer.hide_text = " ";
    I18n.translations[I18n.currentLocale()].js.composer.make_hide = "Hide this post";
    api.modifyClass("controller:composer", {
        pluginId: pid,
        actions: {
            insertHide() {
             this.get("toolbarEvent").applySurround(
                `

                `,
                "hide_text"
              );
            },
        },
    });
    api.addToolbarPopupMenuOptionsCallback(() => {
        return {
            action: "insertHide",
            icon: "far-eye-slash",
            label: "composer.make_hide",
        };
    });
}


CSS

.anon .lycoris-hiddened {
    display: none;

    .post-info.edits {
        display: none;

    }
}

2 Mi Piace