Moodle2.8 コース一覧に表示されるロールのリネーム

Moodle2.8 コース一覧に表示されるロールのリネーム

- Hiroshi Fukuda の投稿
返信数: 6
Moodle2.8 サイト管理 ► アピアランス ► コース で[コース管理者]の[教師]と[編集権限のない教師]にチェックを入れると,コースの一覧画面に両者を表示することができます。その時,表示される「教師」と「編集権限のない教師」という名称を別の名称にするにはどうしたらよいのでしょうか。

名称の変更はコースの設定の編集画面で「ロールのリネーム」に書き込むことで可能なのですがコース一覧のところに反映されません。
Hiroshi Fukuda への返信

Re: Moodle2.8 コース一覧に表示されるロールのリネーム

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
福田先生

よろしければ、下記言語パック修正をお試しください。

  1. サイト管理者としてMoodleにログインする。
  2. 「管理 >サイト管理 > 言語設定 > 言語カスタマイゼーション」に移動する。
  3. 「選択 ...」プルダウンメニューから「日本語 (ja)」を選択する。
  4. 「編集のため言語パックを開く」ボタンをクリックする。
  5. 「続ける」ボタンをクリックする。
  6. 「ストリングを表示するコンポーネン」で「moodle.php」を選択する。
  7. 「次のテキストを含むストリングのみ」に「教師」を入力する。
  8. 「ストリングを表示する」ボタンをクリックする。
  9. ストリング「defaultcourseteacher」のローカルカスタマイズ欄に別の名称 (例 先生) を入力する。
  10. ストリング「noneditingteacher」のローカルカスタマイズ欄に別の名称 (例 編集権限のない先生) を入力する。
  11. ページ下部の「修正を言語パックに保存する」ボタンをクリックする。
  12. 「続ける」ボタンをクリックする。


Mitsuhiro Yoshida への返信

Re: Moodle2.8 コース一覧に表示されるロールのリネーム

- Hiroshi Fukuda の投稿

吉田様,

早速ありがとうございます。

やってみましたが,この方法は「編集権限のない教師」を完全に別の名称に置き換えてしまうのですね。

サイト管理者ではない,コース作成者が,コースの設定の編集画面で「ロールのリネーム」に新しい名称を書き込むことで,コース一覧のところその名称が反映されるようにできないものでしょうか。以前のMoodleでは,すくなくとも1.9では,これが可能だったと思います。

Hiroshi Fukuda への返信

Re: Moodle2.8 コース一覧に表示されるロールのリネーム

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

福田先生

確かに、Moodle 1.9では、ロール名のリネームがすぐにコース一覧に反映されます。
大変お手数ですが、下記のいずれかをお試しください。

  1. サイト管理者としてMoodleにログインする。
  2. 「管理 >サイト管理 > 開発 > すべてのキャッシュを削除する」に移動する。
  3. 「すべてのキャッシュを削除する」ボタンをクリックする。


または

Moodleデータディレクトリ内のコース担当者用キャッシュサブディレクトリを削除する。

例)
cd /var/www/moodledata
cd cache/cachestore_file/default_application
ls -la
rm -rf core_coursecontacts

評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: Moodle2.8 コース一覧に表示されるロールのリネーム

- Hiroshi Fukuda の投稿
吉田様,

ありがとうございました。うまくいきました。ただ,不思議な仕様ですね。

コース作成者が,[コースの設定]の編集画面で[ロールのリネーム]に新しい名称を書き込んでも,それがすぐに反映されず,サイト管理者が「すべてのキャッシュを削除する」まで反映しないとは!1.9の時のようにすぐに反映されるようにしてもらいたいものです。

応急処置として,crontabで一日一回

rm -rf /var/www/moodledata/cache/cachestore_file/default_application/core_coursecontacts

してしまおうかとか思うのですが,何か副作用はありますでしょうか?

Hiroshi Fukuda への返信

Re: Moodle2.8 コース一覧に表示されるロールのリネーム

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

福田先生

Moodle 2.8より、下記のように、「コース管理者 (coursecontac) 」を一定時間 (3600秒) キャッシュするコードが追加されたようです。

該当プログラム:
lib/coursecatlib.php

該当箇所:
717行目

public static function preload_course_contacts(&$courses) {
    global $CFG, $DB;
    if (empty($courses) || empty($CFG->coursecontact)) {
        return;
    }
    $managerroles = explode(',', $CFG->coursecontact);
    $cache = cache::make('core', 'coursecontacts');
    $cacheddata = $cache->get_many(array_merge(array('basic'), array_keys($courses)));
    // Check if cache was set for the current course contacts and it is not yet expired.
    if (empty($cacheddata['basic']) || $cacheddata['basic']['roles'] !== $CFG->coursecontact ||
            $cacheddata['basic']['lastreset'] < time() - self::CACHE_COURSE_CONTACTS_TTL) {
        // Reset cache.
        $cache->purge();
        $cache->set('basic', array('roles' => $CFG->coursecontact, 'lastreset' => time()));
        $cacheddata = $cache->get_many(array_merge(array('basic'), array_keys($courses)));
    }
    $courseids = array();
    foreach (array_keys($courses) as $id) {
        if ($cacheddata[$id] !== false) {
            $courses[$id]->managers = $cacheddata[$id];
        } else {
            $courseids[] = $id;
        }
    }

    // Array $courseids now stores list of ids of courses for which we still need to retrieve contacts.
    if (empty($courseids)) {
        return;
    }

crontabで直接キャッシュを削除されることに問題はありませんが、下記のように「コース管理者 (coursecontac) 」キャッシュの存続時間を3600秒より短くされても宜しいかと思います。もちろん、コードを改変せずに、3600秒お待ちになっても宜しいかと思います。

修正対象プログラム:
lib/coursecatlib.php

修正箇所:
56行目

[ 修正前 ]
/** Do not fetch course contacts more often than once per hour. */
const CACHE_COURSE_CONTACTS_TTL = 3600;

[ 修正後 ]
/** Do not fetch course contacts more often than once per hour. */
const CACHE_COURSE_CONTACTS_TTL = 60;

評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: Moodle2.8 コース一覧に表示されるロールのリネーム

- Hiroshi Fukuda の投稿

吉田さん,ありがとうございました。1時間とは随分長い設定ですね。しかもコードをいじらないと変更できないとは。何か理由があるのでしょうが私は36秒にしました。