"Unvote" a poll

AI-generated summary

A discussion about implementing an “unvote” feature in polls on Discourse forums was initiated by MiguelAngelLV. It came to light that currently, users can only change their vote, but not cancel it entirely. zogstrip and codinghorror confirmed this limitation. anon23840344 shared a personal experience where they accidentally voted in a poll while trying to highlight text, further emphasizing the need for the “unvote” feature.

sam suggested that it’s time to implement this feature, and zogstrip agreed. A possible design for the feature was proposed, which included adding a “Remove Vote” button after the “Show results” button.

The feature was implemented by nbianca and tested by bletch, who noticed a small, unintended change where the “Show results” button is always enabled, even when there are no votes. However, bletch later found a simpler solution to their problem and decided not to pursue the issue further.

nbianca then reimplemented the original behavior of the “Show results” button and also confirmed that the method signature of DiscoursePoll::Poll.vote was changed during the refactoring of the poll code.

The “unvote” feature is now available, and it seems to work well, according to bletch.

Is posible remove a vote from a poll?

I only can change my vote, but I can’t “cancel”

「いいね!」 4

Not sure if that is possible at the current time.

「いいね!」 1

Nope, there’s currently no way to “unvote” on a poll. Added to my :pencil:

「いいね!」 8

これをぜひ実装してください!単に投票のテキストをハイライトしてコピー/ペーストしようとしただけだったのです(なぜそれが禁止されているのか、私にはわかりませんが)、その結果、誤って投票してしまいました。

「いいね!」 1

それは可能です。再投票するか、場合によっては投票削除ボタンがあります。それがプラグインによるものか、現在利用可能かどうかはわかりません。

別の選択肢に投票するつもりはありません。私は投票を棄権していました。テキストをコピーして貼り付けられるように、クリック&ドラッグして選択したかっただけです。

こんにちは、この件について何か進展はありますか?あるユーザーから、ポールの公開投票をキャンセルできないという苦情を受けました。

類似のトピックはこちらです:Ability to remove my choice in a poll

まだ方法はないと思っていますが、@zogstrip さん、これを割り当てる価値はあるかもしれません。実は以前からこれをやるつもりでした。

  • 1
  • 2
  • 3
0 voters

まずは @designers の皆さんに、これを無条件に許可するのか、特定のアンケートに限って許可するのかを決めていただきたいと思います。

「いいね!」 5

同意します、そろそろですね。

@nbianca さん、これをリストに追加してもらえますか?

「いいね!」 1

ああ、おそらくこの画面だけを操作することになりますね:

「結果を表示」の後に「投票を削除」ボタンを追加してください。

アンケートの表示には影響しません。オプションを変更するには、内部を掘り下げる必要があります。

「いいね!」 2

私のプラグインでは、構造化されたユーザー入力を取得するために投票機能を多用しているため、この変更は私にとって非常にありがたいものです。

投票が削除された際にも、変更があったことを把握できるよう、投票イベントを発火させたままにしていただけますでしょうか?

「いいね!」 3

投票取り消し機能を以下に実装しました:

https://github.com/discourse/discourse/pull/14459

「いいね!」 10

こんにちは、最新のビルドを dev 環境にプルダウンしてテストしたところ、おそらく意図的ではない小さな変更があることに気づきました。

小さな変更ですが、私が投票機能を独特な方法で使っているため、私にとっては重要なことです。

以前は、投票が 1 件もなかった場合、「結果を表示」ボタンは無効化されていました。これは理にかなっていました。結果が表示されるものがないので、「結果を表示」ボタンは押せるべきではないからです。見た目は以下のようでした…


投票が 1 件もなく、「結果を表示」ボタンが無効化されていることに注目してください

新しい「投票取り消し」ビルドでは、投票の有無にかかわらず「結果を表示」ボタンが常に有効になっているように見えます。


投票が 1 件も投じられていないのに、「結果を表示」ボタンが有効になっていることに注目してください

いくつか質問があります:これは事実でしょうか?これは意図的なものだったのでしょうか、それとも見落としだったのでしょうか?元に戻す予定はありますか?

もしこのまま変更されない場合、私の望む結果を得るための別の方法を試してみます。

どちらにせよ、非常にうまく機能しているように見える「投票取り消し」機能を提供してくださりありがとうございます!

背景

背景…

なぜこれが私にとって問題なのでしょうか?私は主に個人ユーザーからの入力を収集するために投票機能を使用しています。つまり、投票機能を使えば、特定のコンテキストで個人ユーザーに具体的な質問を投げかけることができます。投票機能には 1 件以上の投票が投じられることはめったにありませんが、構造化されたデータを収集するのが非常に簡単になります。

私のプラグインでは、トピックに複数の投票機能が含まれることがあり、これらの投票機能には多くの選択肢が含まれるため、スクロールが必要になることが多いです。ユーザーのナビゲーションを容易にするために、私が作成したテーマコンポーネントは、ユーザーが投票すると、投票機能の UI から他の選択肢を削除し、ユーザーが選択した選択肢のみを残します。

これらの選択肢を削除するために、私のテーマコンポーネントは有効化された「結果を表示」ボタンを対象として「クリック」します。結果が表示されると、投票がない選択肢がすべて削除されます。

最終的な見た目は以下のようになります。

現在、「結果を表示」ボタンはデフォルトで有効化されているため、私のコードはそれをクリックします。投票が 1 件もないため、すべての選択肢が削除され、以下のように表示されてしまいます…

結果が常に表示されるようになった今、この問題を別のアプローチで解決できるか考えてみましたが、もっと簡単な方法で目的を達成できることに気づきました。

ですので、現状のまま変更しないでください!LOL :upside_down_face:

単に、選択された(または .chosen クラスを持たない)結果要素をターゲットにして、非表示にするだけです。

div.poll div.poll-container ul.results > li:not(.chosen) {
    display: none;
}

数年前にコードを書いた当時、.chosen クラスに気づいていなかったか、あるいは最近追加されたものなのでしょうか?

いずれにせよ、私が以前実装していたものは(JavaScript でポーリングするなど)明らかに過剰設計でした。この方法で必要なことが実現できるようです。

6451AF5C-2351-49E0-9A1F-C6C0A3D0D5E9

改めてありがとうございます。

「いいね!」 1

ああ、私のミスでした。それを再実装したので、まもなく利用可能になります:

これはしばらく前からそのような状態だったと思います。

「いいね!」 3

@nbianca 今すぐテストしていますが、ボタンは以前のように機能しているようです。ありがとうございます!

もう一つ質問があります。私は DiscoursePoll::Poll.vote メソッドを使用して、投票を自動的に実行しています。コード上でいくつかの問題に直面しました。投票コードのリファクタリング中に、メソッドのシグネチャを変更されたことを確認できますか?

私のコードは、以前は以下のシグネチャを前提としていました:

def vote(post_id, poll_name, options, user)

しかし、変更後、シグネチャは以下のようになったようです:

def self.vote(user, post_id, poll_name, options)

つまり、user パラメータは以前は 4 番目でしたが、現在は 1 番目になり、他のすべてのパラメータが順にシフトしています。

上記の仮定が正しいことを確認できますか?また、私を混乱させる可能性のある同様のリファクタリング変更は他にもあると思いますか?

余談ですが、投票の削除機能はうまく動作しているようです!

その通りです。user をほとんどの関数の最初の引数に移動させました。これは私たちが通常従っている慣例です。

「いいね!」 3

このトピックは 9 日後に自動的に閉鎖されました。新しい返信は受け付けられません。