(現状)
画面右上のユーザ名をクリックして表示されるユーザプロファイルの画面.
- ”プロファイル”タブ: 顔写真,自己紹介,コース,「パスワードの変更」ボタン,「メッセージ」ボタンが表示される.
- ”プロファイルの編集”タブ: 姓,名(ロック済み)以外の情報が全て表示され,変更が可能.ただしパスワードの入力フィールドは存在しない.
(要望)
- ”プロファイル”タブ: 顔写真,自己紹介に加えて,ユーザ名(現在は表示されない),氏名(現在は表示されない)を表示する.コースは表示したくない.
- ”プロファイルの編集”タブ: 無効にしたい.
であると仮定します.
ロール編集でStudentのパーミッションのうち,「システム/自分のユーザプロファイルを編集する」を”禁止”に設定すれば”プロファイルの編集”タブは表示されないはずです
私の環境ではうまく機能しない...
一応,M.Mさんの環境でもこのロールのパーミッションの変更を試して見て貰えませんか?
なお,以下は参考資料です.
user/tabs.php の138行目あたり(Moodle1.9.3+),
if ($edittype == 'advanced') {
$toprow[] = new tabobject('editprofile', $wwwroot.'/user/editadvanced.php?id='.$user->id.'&course='.$course->id, get_string('editmyprofile'));
} else if ($edittype == 'normal') {
$toprow[] = new tabobject('editprofile', $wwwroot.'/user/edit.php?id='.$user->id.'&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'に設定されている.おかしいなぁ.なにか操作ミスをしているのだろうか???