受信メールモーダルを無効にする方法

このメールアイコンをクリックできないようにするにはどうすればよいですか?

image

この受信メールモデルを無効にするにはどうすればよいですか?

そして、これを無効にするにはどうすればよいですか?

今日、そのアイコンがクリック可能であることを学びました。

「いいね!」 1

笑、そうですね、イライラしますね :laughing:

ところで、お誕生日おめでとうございます :grin: :star2:

スタッフ限定だと思います。スタッフ権限のないフォーラムで確認したところ、(少なくとも携帯電話では)アイコンをクリックできませんでした。

ありがとうございます!(タイムゾーンの関係もありますが、こちらはまだ誕生日ではありません :upside_down_face:

「いいね!」 1

これを見なければなりません。教えてくれてありがとう。:grinning:

ここではあなたの名前の横にケーキのアイコンが表示されています、笑。とにかく、先駆けてお誕生日おめでとうございます。:joy:

「いいね!」 1

管理者にのみ表示されるため、問題ありません。

とにかく、私と同じようにこれを無効にしたいが、方法が見つからない場合は、GPTでやったことと、それがうまく機能したことを紹介します :slight_smile:

<script type="text/discourse-plugin" version="0.8">
  api.onPageChange((url, title) => {
    // ページが完全に読み込まれるまで待機
    Ember.run.scheduleOnce('afterRender', function() {
      // クラス "elided" を持つすべての details 要素を検索して削除
      var elidedDetailsList = document.querySelectorAll('details.elided');
      elidedDetailsList.forEach(function(elidedDetails) {
        elidedDetails.remove();
      });
    });
  });
</script>

こんにちは kynic さん、

onPageChange は使用するには少し広すぎる(そして投稿の読み込み/更新時に信頼性が低い)可能性があります。
代わりに decorateCookedElement を使用できます。これは、調理済みの各投稿要素に対して呼び出されます。

さらに、メールインジケーターを無効にする方法を以下に示します。これは、HTML を含めないための単なるハックです。興味がある場合は、元のコードを こちら で確認できます。

<script type="text/discourse-plugin" version="0.8">
    api.reopenWidget("post-meta-data", {
        html(attrs) {
            if (!attrs.via_email) {
                return this._super(attrs);
            }
          
            // "post-email-indicator" ウィジェットを生成しない。
            attrs.via_email = false;
            const html = this._super(attrs);
            attrs.via_email = true;
          
            return html;
        }
    })

    api.decorateCookedElement((element, helper) => {
        if (helper?.getModel().via_email) {
            element.querySelector('details.elided').remove();
        }
        
    }, { onlyStream: true });
</script>

CSS のみを使用して非表示にすることもできます。

.post-info.via-email,
.cooked details.elided {
    display: none;
}
「いいね!」 6

ありがとうございます :grinning:

投稿メタデータ部分は削除しました。これはメールアイコンを表示させたいからです。 :slight_smile:

念のため、コンテンツを削除してCSSで非表示にするために現在使用しているのは次のとおりです。

<script type="text/discourse-plugin" version="0.8">
    api.decorateCookedElement((element, helper) => {
        if (helper?.getModel().via_email) {
            element.querySelector('details.elided').remove();
        }

    }, { onlyStream: true });
</script>

.cooked details.elided {
    display: none;
}

このコードをありがとうございます :rocket: :blush:

「いいね!」 3

どういたしまして :slight_smile:

あと、おっしゃる通り、アイコンをクリックできるのはスタッフだけです!私の間違いでした。:smile:

「いいね!」 2

素晴らしい仕事です :slight_smile:

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.