feedbackモジュールの「複数回答」機能をYESにしたい。

feedbackモジュールの「複数回答」機能をYESにしたい。

- Yuuichi Yamaguchi の投稿
返信数: 6
生徒用の評価シートをfeedbackモジュールで作成しました。
フィードバックオプションの「複数回答」はNOにしてしまっていたため、生徒がその評価シートの入力が中途半端なままで「あなたの回答を送信する」をクリックしてしまうと、再度途中からの入力ができない状態となりました。
そこで、この「複数回答」機能をYESにしたいのですが、すでに生徒が100人以上が回答済になっているため、YESにできません。なんとかこの項目をYESに切り替えることはできないでしょうか?
Yuuichi Yamaguchi への返信

Re: feedbackモジュールの「複数回答」機能をYESにしたい。

- Tatsuya Shirai の投稿

 既に入力済みのデータに悪影響が出るかどうかまではチェックしていませんが,データベースを直接変更することで”多肢選択:単一回答”と”多肢選択:複数回答”を切り替えられることは確認しました.

 phpMyAdminなどを用いて,mdl_feedback_itemを修正します.
 「表示」でリストアップされる全ての設問の中から該当する設問の項を選択して,「編集」を選びます.

 ”Presentation"の項目の中身が,

r>>>>>はい
|いいえ

のようになっていると思います.この例では「はい」と「いいえ」の二者択一です.これを両方選べるようにするには,

c>>>>>はい
|いいえ

のように,頭1文字をcに変えればOKでした.選択肢の数を3つ以上に増やす場合はどうしたら良いのか.これは試していませんが,実際に試しで3つ以上の多肢選択問題を作って見て,そのPresentationの内容をコピーすれば良いでしょう.

 多分,勘ですけれども,

c>>>>>PS2
|PS3
|PSP

のように'|'記号で選択肢を追加していくのではないでしょうか?

Tatsuya Shirai への返信

Re: feedbackモジュールの「複数回答」機能をYESにしたい。

- Yuuichi Yamaguchi の投稿
白井先生
いつもお世話になっております。私の質問の仕方が悪かったようです。申し訳ございません。
私が質問した「複数回答」とは、フィードバックモジュールの「更新」ページ内にあるフィードバックオプションの「複数回答」という欄です。添付画像をご参照いただけますとわかるかと思います。添付画像のように現在はNOが選択された状態でYESに変更できません。
これをYESに変更するには生徒のデータをすべて削除すればできますが、かなり多くのデータを生徒が入力済みなのでどうにか、削除せずにYESにしたいのです。
添付 _NO_.JPG
Yuuichi Yamaguchi への返信

Re: feedbackモジュールの「複数回答」機能をYESにしたい。

- Tatsuya Shirai の投稿

 なるほど,失礼しました.そちらの複数回答ですね!

 私はまだfeedbackモジュールを使い込んでいないので,この設定を強制的に書き換えることでどのような副作用が生じるのか予想がつきません.ただ,設定自体は,mdl_feedbackのmultiple_submitなのではないかと予想は付きます.これを0から1に変更すればプルダウンメニューがグレーアウトしたままNoからYesの変わるのだろうなぁと(試したわけではありません!)思うのですが...大丈夫だろうか.

(ヘルプより)

匿名のフィードバックの場合、すべてのユーザが制限なしで回答することができます。ユーザ名を記録するフィードバックの場合、「複数回答」を「Yes」にすることで、ユーザは再度回答できるようになります。

 ”ユーザ名を記録する”が”ユーザ名を記録し,回答とともに表示する”を選択されていますので,中途半端に回答した学生が残りの設問を回答する(あるいはゼロから回答しなおし?)ことができると期待はできるのですが.

 まずはダミーのフィードバックを作って,意図的に中途半端に回答の後,データベースを書き換え,再度回答してみてどうなるかを確認してみて下さい.

Tatsuya Shirai への返信

Re: feedbackモジュールの「複数回答」機能をYESにしたい。

- Yuuichi Yamaguchi の投稿
ありがとうございます。さっそく
1.phpmyadminでmdl_feedbackのmultiple_submitを0から1に変更したらプルダウンメニューがグレーアウトしたままNoからYesの変わりました。
2.ダミーのフィードバックを作って,意図的に中途半端に回答の後,データベースを書き換え,再度回答してみてどうなるかを確認しましたが、ユーザが前回入力したデータが残っている画面に追記回答(再度回答)できました。

白井先生のおっしゃる通りで、ヘルプを読んだだけでは
・中途半端に回答した学生が残りの設問を回答する
・ゼロからもう一度回答しなおし
この2点のどちらの動作になるかわからなかったので、今回使ってみて理解できたのでよかったです。

実際に授業で生徒に使わせてもし問題があればまた報告します。ありがとうございました。

ところで、もう一つ白井先生にお聞きしたい点があります。
今回私が操作したかった箇所は
「feedbackモジュールの更新画面の中にあるフィードバックオプションの『複数回答』という項目をNOからYESにしたい」というところでした。
こういった場合に、データベースのどのテーブルのどのフィールドがこの『複数回答』の項目になるのかを私自身で発見することができれば、問題の解決を白井先生のお手を煩わせずに済んだはずです。
白井先生は、このように、「データベースのどのテーブルのどのフィールドなのかをどのように発見されている」のでしょうか?発見する方法がありましたら、教えていただけないでしょうか?
いろいろとphpのソースを見たりしてみましたが、私があまりうまく読み取れておりません。
Yuuichi Yamaguchi への返信

Re: feedbackモジュールの「複数回答」機能をYESにしたい。

- Tatsuya Shirai の投稿

 今回の件では,別の選択肢として,学生が回答済みでも設定を変更できるようにPHPのソースを一時的に改造することもできたと思います.ただ,その方が副作用が大きいような気がしたのと,改造箇所を元に戻し忘れると被害が拡大する恐れがありましたので,データベースの直接書き換えを検討しました.

 データベースのどのテーブルか.そうですね,そういう資料があれば便利だと思いますが,多分,無いでしょうねぇ.

 私の場合はズバリ,”山勘”です(笑).多分,ソースを追うほうが大変だったと思います.フィードバックモジュールに関するデータベースのテーブルは’mdl_feedback'が接頭子だろうと考え,該当するテーブルの名前から機能を推測し,「表示」でデータを見てみる.次に,試しにMoodle側で値を変更してみて,データベースの推定箇所が変化したかどうかをチェックしました.

 テーブルのフィールド名が絞り込まれれば,今度はその名前でソースリストを検索してソースリスト中の影響する箇所も調べられますね.今回は省略しましたが.

Tatsuya Shirai への返信

★自分の修正したい箇所が、どのテーブルのどのフィールドかを推測する方法

- Yuuichi Yamaguchi の投稿
なるほど、たいへんわかりやすい説明ありがとうございます。
今後は、白井先生が教えてくださったような下記の方法で、自分でまず推測してから、質問してみるようにします。
1.自分の修正したい箇所のモジュールを確認(例:feedbackモジュール)
2.ということはテーブルの接頭子はmdl_feedbackである。
3.接頭子がmdl_feedbackであるすべてのテーブル名から機能を推測し、修正したい箇所のフィールドを予測しておく。
4.その箇所をmoodleで変更してみたあと、そのフィールドの値が変更されているか確認してみる。
5.さらに、そのフィールド名でソース検索してみる。

この作業により、どのテーブルのどのフィールドかをだいぶ見つけられる可能性が出てきました。ありがとうございます。