プロファイル・コース一覧

プロファイル・コース一覧

- M M の投稿
返信数: 8

学生のプロファイルにパスワードを変更する欄を作成してほしい。

また、プロファイル以下のように表示させたい

ユーザ名:変更不可

パスワード:変更可能

現在の状況は、コースと最終アクセスしか表示できないのでそれらを追加したい。

コースだけは表示不可にしたい.

--------------------

コース一覧について

「コース一覧」を「科目一覧」に変更したい

また、コースの下に「管理者」があるので表示させたくない

コースの四角囲みの線を二重線とかにしたい

コースの色を変更したい

コース一覧については、添付(圧縮したbmp)をしておきます.

M M への返信

Re: プロファイル・コース一覧

- Tatsuya Shirai の投稿

http://moodle.org/mod/forum/discuss.php?d=110080

すみません,元の投稿は新機能要望というよりも質問であると判断したので私が勝手に上記フォーラムに移動してしまいましたが,どうやら色々と要望が詰まっているようですね.こちらをメインにしましょう.

M M への返信

(2) コース一覧について

- Tatsuya Shirai の投稿

 まず”コース一覧”ですが,どのような操作を行なったときに表示される画面のことでしょうか?

 手元のMoodle1.9.3+では,”コースカテゴリ”という言葉は表示されるのですが,”コース一覧”という文字が表示される画面を見つけられません.その画面が表示されたときの,Webブラウザのアドレス欄のアドレスを示して頂けないでしょうか?

(例: http://www.suzuka-ct.ac.jp/mech/moodle/course/category.php?id=2 )

Tatsuya Shirai への返信

Re: (2) コース一覧について

- Tatsuya Shirai の投稿

 単に”コース一覧”という単語をmoodledata/lang/ja_utf8のフォルダから検索すると,

block_course_list.php(7): $string['blockname'] = 'コース一覧';
moodle.php(137): $string['availablecourses'] = 'コース一覧';
moodle.php(653): $string['frontpagecourselist'] = 'コース一覧';

の3箇所です.それ以外には,

admin.php(91): $string['configcoursesperpage']
admin.php(136): $string['configforcelogin']
block_course_list.php(8): $string['configadminview']
moodle.php(1322): $string['showblockcourse']
moodle.php(1324): $string['showlistofcourses']
moodle.php(1325): $string['showmodulecourse']
help\courseavailability.html(5)
help\coursefullname.html(3)
help\rolerenaming.html(8)
help\teachers.html(5)
help\teachers.html(9)

これだけありますね.

 [サイト管理]-[言語設定]-[言語の編集]の”翻訳ストリングの編集”でローカルな訳を当てることができますので,該当箇所を編集すればOKです.編集されたファイルは(確か)moodledata/lang/ja_utf8_localに保存されたと思います.自動ダウンロードされる最新の言語パックよりも優先度が高いと思います(未確認).

Tatsuya Shirai への返信

Re: (2) コース一覧について

- Tatsuya Shirai の投稿

block_course_list.php(7): $string['blockname'] = 'コース一覧';
これはMoodle2.0から有効になるブロックに関する言語ファイルのようですので,

moodle.php(137): $string['availablecourses'] = 'コース一覧';
こちらで検索すると,index.phpに存在します.ちょっと複雑なif文の中にありますので,条件によって表示されない場合もあるようですね.

            case FRONTPAGECOURSELIST:

                if (isloggedin() and !has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !isguest() and empty($CFG->disablemycourses)) {
                    print_heading_block(get_string('mycourses'));
                    print_my_moodle();
                } else if ((!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !isguest()) or (count_records('course') <= FRONTPAGECOURSELIMIT)) {
                    // admin should not see list of courses when there are too many of them
                    print_heading_block(get_string('availablecourses'));
                    print_courses(0);
                }
            break;

当方のサイトでは”マイコース”が表示されている箇所に該当するようです.ですので,print_my_moodle()が呼ばれていると思われる箇所に対応するのが,print_courses(0)で,これはcourse/lib.php内に存在する関数です.

 [サイト管理]-[フロントページ]-[フロントページ設定]の”フロントページ”と”ログイン時のフロントページアイテム”の項,4つのプルダウンメニューの中に,”コース一覧”があると表示されそうです.

 いま変更してみましたところ,確かにコース一覧は表示されましたが,”管理者”は表示されませんねぇ.そういえばいちいち”管理者”や”コース作成者”を表示するのはやめて欲しいという議論を見た記憶もありますので表示しない設定も追加されたのかな? コースカテゴリでコースを表示した場合も出なくなっていますね.

Tatsuya Shirai への返信

Re: (2) コース一覧について

- Tatsuya Shirai の投稿

多分,コース一覧の表示は,

course/lib.phpのfunction print_course() : function priint_courses()ではありません!

ですので,こちらの関数を改良すれば色や線種の変更が可能だと思われます.


未確認ですが,管理者等の表示は,

        $canseehidden = has_capability('moodle/role:viewhiddenassigns', $context);

これが怪しい.[サイト管理]-[ユーザ]-[パーミッション]-[ロールの定義]でStudentのロールを編集する画面に切り替え,

”非表示のロール割り当てを表示する”

が,もし許可になっているならば禁止にしてみて下さい.当方はこれが”許可”になっているにも関わらず管理者等が表示されないので,もしかしたら間違いなのかも知れませんが,ヒントにはなるでしょう.

 ”非表示の”と書いてあるので,どこかで”管理者等は非表示だ”と設定している箇所があるのかも知れません.

M M への返信

(1) プロファイル

- Tatsuya Shirai の投稿

(現状)
 画面右上のユーザ名をクリックして表示されるユーザプロファイルの画面.

  • ”プロファイル”タブ: 顔写真,自己紹介,コース,「パスワードの変更」ボタン,「メッセージ」ボタンが表示される.
  • ”プロファイルの編集”タブ: 姓,名(ロック済み)以外の情報が全て表示され,変更が可能.ただしパスワードの入力フィールドは存在しない.

(要望)

  • ”プロファイル”タブ: 顔写真,自己紹介に加えて,ユーザ名(現在は表示されない),氏名(現在は表示されない)を表示する.コースは表示したくない.
  • ”プロファイルの編集”タブ: 無効にしたい.

であると仮定します.


 ロール編集でStudentのパーミッションのうち,「システム/自分のユーザプロファイルを編集する」を”禁止”に設定すれば”プロファイルの編集”タブは表示されないはずです
 私の環境ではうまく機能しない...

 一応,M.Mさんの環境でもこのロールのパーミッションの変更を試して見て貰えませんか?


なお,以下は参考資料です.

user/tabs.php の138行目あたり(Moodle1.9.3+),

        if ($edittype == 'advanced') {
            $toprow[] = new tabobject('editprofile', $wwwroot.'/user/editadvanced.php?id='.$user->id.'&amp;course='.$course->id, get_string('editmyprofile'));
        } else if ($edittype == 'normal') {
            $toprow[] = new tabobject('editprofile', $wwwroot.'/user/edit.php?id='.$user->id.'&amp;course='.$course->id, get_string('editmyprofile'));
        }

この赤で表示した行が”プロファイルの編集”タブを追加する箇所です.もし,$edittypeが'advanced'でも'normal'でもなければタブは追加されない.

なお,$edittypeは当初,$edittype='none'ですので,もしこれが'none'のままならば”プロファイルの編集”タブは表示されないのですが...

        $edittype = 'none';
        if (isguestuser($user)) {
            // guest account can not be edited

        } else if (is_mnet_remote_user($user)) {
            // cannot edit remote users

        } else if (isguestuser() or !isloggedin()) {
            // guests and not logged in can not edit own profile

        } else if ($USER->id == $user->id) {
            if (has_capability('moodle/user:update', $systemcontext)) {
                $edittype = 'advanced';
            } else if (has_capability('moodle/user:editownprofile', $systemcontext)) {
                $edittype = 'normal';
            }

        } else {
            if (has_capability('moodle/user:update', $systemcontext) and !is_primary_admin($user->id)){
                $edittype = 'advanced';
            } else if (has_capability('moodle/user:editprofile', $personalcontext) and !is_primary_admin($user->id)){
                //teachers, parents, etc.
                $edittype = 'normal';
            }
        }

上の青い行のif文が成立し,さらに赤い行のif文も成立して$edittype='normal'に設定されている.おかしいなぁ.なにか操作ミスをしているのだろうか???

 

Tatsuya Shirai への返信

Re: (1) プロファイル

- Tatsuya Shirai の投稿
デバッグに使用したユーザのロールがStudentではなく、Guestでした。
Studentに登録し直したところ、期待通りに"プロファイルの編集"タブは表示されなくなりました。


したがいまして、この件(パスワード以外の登録情報を学生は変更できないようにしたい)も、ソースの改造は必要なく、Moodleの設定変更のみで対処できます。


Tatsuya Shirai への返信

Re: (1) プロファイル

- Tatsuya Shirai の投稿

 ユーザ名は氏名のことでしょうか? もしそうでしたらこれは画面に表示されていると思います.もし表示されないならば設定でOffにできるのかも知れません.

 登録コース数が非常に多い場合,画面がわずらわしくなるから表示したくないという要望は聞きますね.その場合は,user/view.phpの以下の箇所が関わっています.もし完全に表示したくないのであれば以下のようにif文の条件を常時falseにすれば一切,表示されなくなります.

    /// Print the Custom User Fields
    profile_display_fields($user->id);


    if (false && $mycourses = get_my_courses($user->id, null, null, false, 21)) {
        $shown=0;
        $courselisting = '';
        foreach ($mycourses as $mycourse) {