何か1つお薦めのモジュールが

何か1つお薦めのモジュールが

- アカサカ アキラ の投稿
返信数: 37
あれば教えていただけますか? これは役に立って便利だというものがあれば教えてください。
アカサカ アキラ への返信

Re: 何か1つお薦めのモジュールが

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
moodle.orgからダウンロード可能なMoodle本体の中には同梱されていませんが、Quickmail (クイックメール) というブロックが「学生に一括メールを送信することができる」点で便利だと思います。笑顔

[Block: Quickmail]
http://moodle.org/mod/data/view.php?d=13&rid=92&filter=1
Mitsuhiro Yoshida への返信

Re: 何か1つお薦めのモジュールが

- アカサカ アキラ の投稿

回答、ありがとうございました。インストールしてみました。といっても、いまだに Moodle 模索中なので、登録者は自分しかいないので、Quickmail をまだ使えないのですが。いずれ、役に立ちそうなので、楽しみにしています。こういう機能は本体に同梱しておいたほうがいいと思いますね。

その他、なにか役立ちそうなものがあれば、また教えてください。

アカサカ アキラ への返信

Quickmailのユーザ一覧の並び順

- Tatsuya Shirai の投稿

 学生の数が多いと目的の学生を探すのがえらく大変ですね.

 どうやら標準のソート方法は氏名のようですので,日本語名には不向きですね.当方のサイトはユーザ名が学籍番号なので,以下のようにすると綺麗に並びました.

  blocks/quickmail/email.php

    if (!$haspermission) {
        error('Sorry, you do not have the correct permissions to use Quickmail.');
    }

//  if (!$courseusers = get_users_by_capability($context, 'moodle/course:view', 'u.*', 'u.lastname, u.firstname', '', '', '', '', false)) {
    if (!$courseusers = get_users_by_capability($context, 'moodle/course:view', 'u.*', 'u.username', '', '', '', '', false)) {
        error('No course users found to email');
    }

    if ($action == 'view') {

ユーザ名か,姓か,名か,ユーザIDか.並び順を選択できるようにするのも難しくは無さそうですね.作者のWen氏(でしたか?)もグループ機能に対応して下さいという要望に「時間ができたら」と言っています.期待しましょう.あるいは作ってしまうか,ですね.

Tatsuya Shirai への返信

Re: Quickmailのユーザ一覧の並び順

- Tatsuya Shirai の投稿

 Moodle2.0でメール関係はどうなるのか,Roadmapを見てみたのですが,message機能の強化が上がっているだけですね.Quickmailが組み込まれるという訳でも,eMail(http://docs.moodle.org/en/eMail)が組み込まれる訳でも無さそうですね.

 このeMailプラグインですが,ちょっと時間があったのでドキュメントを読んでみました.割と高機能そうな感じです.基本的にはMoodle内でのメールシステムのようですが,設定次第では受信したMoodle内のメールを自分の携帯電話などへ転送することもできるのでしょうか.とりあえずメールが届いたことは通知されるような記述はあったのですけれども.

 時間が取れたら試してみようと思いますが,既にお試し済みの方が居ましたら情報提供よろしくお願いします.

#メールリスト(一斉通知のリスト)を作れる機能があるようですが,いわゆるMLと同等かどうかが気になりますね.

アカサカ アキラ への返信

Re: 何か1つお薦めのモジュールが

- Tatsuya Shirai の投稿

Latest Blog entries
http://moodle.org/mod/data/view.php?d=13&rid=402&filter=1

 ただ,オリジナルにはバグがあります.ディスカッションにも目を通して下さい.
 (
http://moodle.org/mod/forum/discuss.php?d=48994

 大幅に修正を行い,機能を追加したものを当方のサーバで公開しています.
 (
http://www.suzuka-ct.ac.jp/mech/moodle/mod/resource/view.php?id=331&subdir=/Modules and Plugins/block_updated_blogs and Plugins/block_updated_blogs

 そのコースに属するメンバが更新したブログエントリを表示するブロックです.

MyNotes
http://moodle.org/mod/data/view.php?d=13&rid=726&filter=1

 こちらもバグがあります.日本語が化けます.同じく以下のURLに修正版を公開しています. 

http://www.suzuka-ct.ac.jp/mech/moodle/mod/resource/view.php?id=331&subdir=/Modules and Plugins/MyNotes

 いわゆる”やることリスト”です.

Tatsuya Shirai への返信

Re: 何か1つお薦めのモジュールが

- アカサカ アキラ の投稿

回答、ありがとうございます。

MyNotes はこの掲示板で教えていただいてインストールしましたが、画面の右の部分がすべて表示されなくなりました。だから、削除してしまったのですが、今度は修正版をインストールしてみます。

アカサカ アキラ への返信

Re: 何か1つお薦めのモジュールが

- Takahiro Kagoya の投稿
質問の意図が読めませんが...
標準モジュールでなら、データベースモジュールはいろいろできて、コース内で、情報共有するにはいいですね。
アカサカ アキラ への返信

ShoutBox block

- Tatsuya Shirai の投稿

http://moodle.org/mod/data/view.php?d=13&rid=2259

JavaScriptを駆使しているので携帯電話などでは苦しいかも知れませんが.

 コース内に配置したブロックを介して,同じコースの学生同士がチャットを行うことが可能です.画面全体をリフレッシュしないでもブロック内が自動的にリフレッシュします.

 発想は良いのですが,現状ではソースコードが酷い状態です.

 まず最初に起動したときはワーニングが大量に発生します.ブロックをコースに設置したら速やかに「設定」を行って下さい.これで初期値が書き込まれてワーニングが1/3くらいに減ります.つぎは何でも良いですから,シャウトして下さい.とりあえず誰かが一言シャウトしないとワーニングが出続けます.

 ところが日本語でシャウトしても表示されない.データベースを見てみてもデータが書き込まれていない.原因は分かりませんが,対策は分かりました.adddata.phpの頭のところに一行追加すると,とりあえず日本語でもシャウトが可能になります.


<?php
require_once('../../config.php');
global $CFG, $COURSE;
?>
<link href="<?php echo $CFG->wwwroot; ?>/blocks/shoutbox/styles.css" rel="stylesheet" type="text/css" />
<script src='<?php echo $CFG->wwwroot; ?>/blocks/shoutbox/script/xajaxex.js'></script>
<script src='<?php echo $CFG->wwwroot; ?>/blocks/shoutbox/script/ajaxfunction.js'></script>
 <?php
 $data=$_GET['data'];
 $data=mb_convert_encoding($data, 'utf-8', 'auto');
  $block_id=$_GET['block_id'];
 $result=str_split($data, $_GET['noofcharbreak']);
$val='';

赤い行を追加するだけです.何の文字コードか知りませんが,script/ajaxfunction.jsのfunction add_value()からadddata.phpに渡されるデータがUTF-8以外の文字コードに変換されています.もしかしたら,これは日本版IEのイタズラかも知れません.

Tatsuya Shirai への返信

Re: ShoutBox block

- Tatsuya Shirai の投稿

しかしまだ問題があります.1行を越える日本語の文章をシャウトすると画面レイアウトがおかしくなります.どうしてそういうことが起こりえるのか仕組みが想像できないので,直ぐには対処方法が思いつきません.

#この問題さえクリアしたら結構使えるブロックだと思います.

あと,過去の発言を編集する画面が意味不明なことと,ワーニングが出る問題もありますね...なんてワイルドなんだろう.

#日本語に訳すとすると,「一言ボックス」?

Tatsuya Shirai への返信

Re: ShoutBox block

- Tatsuya Shirai の投稿

adddata.phpの頭の,

 $result=str_split($data, $_GET['noofcharbreak']);

これが日本語長文が正常に表示できない原因ですね...

Tatsuya Shirai への返信

Re: ShoutBox block

- Tatsuya Shirai の投稿

adddata.phpの冒頭を以下のように改良すれば日本語対応OKですね.

<?php
require_once('../../config.php');
global $CFG, $COURSE;
?>
<link href="<?php echo $CFG->wwwroot; ?>/blocks/shoutbox/styles.css" rel="stylesheet" type="text/css" />
<script src='<?php echo $CFG->wwwroot; ?>/blocks/shoutbox/script/xajaxex.js'></script>
<script src='<?php echo $CFG->wwwroot; ?>/blocks/shoutbox/script/ajaxfunction.js'></script>
 <?php
 $data=$_GET['data'];
// ここから追加
$data=mb_convert_encoding($data, 'utf-8', 'auto');

function mb_str_split($str, $length = 1) {
   if ($length <1) return FALSE;
   $result = array();
   for ($i = 0; $i <mb_strlen($str); $i += $length) {
       $result[] = mb_substr($str, $i, $length);
   }
   return $result;
}
// ここまで追加
  $block_id=$_GET['block_id'];
// ここから修正
//
$result=str_split($data, $_GET['noofcharbreak']);
 $result=mb_str_split($data, $_GET['noofcharbreak']);
// ここまで修正
$val='';

アカサカ アキラ への返信

lightbox galleryモジュール

- Tatsuya Shirai の投稿

http://moodle.org/mod/data/view.php?d=13&rid=1021&filter=1

 意外と良い感じです.Picasaを用いてWebページを作成し,それをHTMLページとしてコースにアップロードするよりも手が掛かりません.サムネイル表示からクリックで拡大表示可能ですが,Picasaで出力するHTML形式と異なり,元データのサイズが巨大でも画面からハミ出したりしません(テンプレートを手で修正すれば改善できますが).

 最初,どうやってファイルをアップロードするのか,が分かりませんでしたが,コースファイルフォルダにフォルダを適当に作成してそれを選択するだけです.コメントも付けられます(ただし,各写真ごとではなくギャラリ単位です).

 うん,かなり実用性が高いですね.言語パックの翻訳をお願いしたいのですが.> 吉田さん

#いまのところ日本語環境に固有の問題は発生していません.Windows環境では日本語ファイル名やフォルダは使えないと思いますが,必要があればfs_moodle用にfs化して公開します.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
> うん,かなり実用性が高いですね.言語パックの翻訳をお願いしたいのですが.> 吉田さん

準備ができ次第、翻訳作業に入らせて頂きます。笑顔
Mitsuhiro Yoshida への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 ありがとうございます!

 学外に公開するWebページ(コース)の準備を進めています.そこで写真を手間無く公開する手段としてかなり有望なブロックです.学生に任せても安心ですね.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
白井先生

Lightbox Gallery Resourceの日本語翻訳作業を完了しました。

Mitsuhiro Yoshida への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿
ありがとうございます!
いつもお世話になりっぱなしで申し訳ありません。
これで堂々と学生にも披露できそうです。
Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
Lightboxギャラリーの写真に日本語タグを追加すると文字化けしますので、下記のような修正が必要だと思います。

修正対象プログラム: mod/lightboxgallery/edit/tag/tag.class.php

修正箇所: 43行目
[ 修正前 ]
foreach ($tagrecords as $tagrecord) {
$tags[$tagrecord->id] = $textlib->typo3cs->utf8_decode($tagrecord->description, 'iso-8859-1');
}
[ 修正後 ]
foreach ($tagrecords as $tagrecord) {
$tags[$tagrecord->id] = $tagrecord->description;
}

修正箇所: 60行目
[ 修正前 ]
$tag = htmlentities($tag);
[ 修正後 ]
$tag = htmlspecialchars($tag);

修正箇所: 75行目
[ 修正前 ]
$deleteform .= '<label><input type="checkbox" name="deletetags[]" value="' . $tagid . '" />' . htmlentities($tagname) . '</label><br />';

[ 修正後 ]
$deleteform .= '<label><input type="checkbox" name="deletetags[]" value="' . $tagid . '" />' . htmlspecialchars($tagname) . '</label><br />';

Mitsuhiro Yoshida への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 言語パックの修正,ありがとうございます.
 お陰で細かなところまで調整しようという気力が出てきました.

 タグの方に関してはまだチェックを行っていません.なお,試しにコメントを入れてみたのですが,画面拡大時にのみ表示されるのですね.せっかく,一つ一つの写真にコメントを入れられるのですから,このデータをサムネイル表示でも利用したいですね.ツールチップ表示か,あるいは写真の下に追加表示させることはそれほど難しくないと思いますので,時間ができたらトライしてみようと思います(勿論,先に完成した方がいましたら情報公開お願いします).

 サムネイル画像の下に表示するファイル名に加えて,画像サイズなどの詳細データを表示するかどうか,というプルダウンメニューがあります.ここをチェック可能なプルダウンメニューに変更し,ファイル名,詳細情報,コメント,の表示をそれぞれOn/Offできると便利ですね.でも,そういう改造をすると,オリジナルのデータベースと格納するデータの値が変わってしまうので宜しくないですね.オリジナルの方で対応して貰うのがベター.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 サムネイル一覧画面でファイル名の代わりにキャプション(説明)を表示するのは意外と簡単でした.

 mod/lightboxgallery/view.phpの100行目あたりにあるforeach($images as $image)で一枚ずつサムネイルを表示するルーチン内で,

            $imagelocal = $dataroot.'/'.$image;
//          $imagelabel = lightboxgallery_resize_label($image);
            if ($edittypes) {
                $imageextra = '<form action="'.$CFG->wwwroot.'/mod/lightboxgallery/imageedit.php" method="get">'.
                              '<fieldset class="invisiblefieldset">'.
                              '<input type="hidden" name="id" value="'.$gallery->id.'" />'.
                              '<input type="hidden" name="image" value="'.$image.'" />'.
                              '<input type="hidden" name="page" value="'.$page.'" />'.
                              '<select name="tab" class="lightbox-edit-select" onchange="submit();">'.
                              '<option>' . get_string('choose') . '...</option>';
                foreach ($edittypes as $editoption => $editdisplay) {
                    $imageextra .= '<option value="'.$editoption.'">'.$editdisplay.'</option>';
                }
                $imageextra .= '</select></fieldset></form>';
            } else if ($gallery->extinfo) {
                $iobj = lightboxgallery_image_info($imagelocal);
                $imageextra = sprintf('<br />%s<br />%s, %dx%d', $iobj->modified, $iobj->filesize, $iobj->imagesize[0], $iobj->imagesize[1]);
            }
            $imagetitle = (isset($captions[$image]) ? $captions[$image] : $image);
            $imagelabel = lightboxgallery_resize_label($imagetitle);
            echo('<div class="thumb">

上の方にある元々の$imagelabelをコメントアウトする必要は特にありません.心配ならば残しておいても良いでしょう.最後から2行目の赤く追加した行を追加すればOK.ただ,lightboxgallery_resize_label()でキャプションの長さを適当な長さに省略するのですが,(珍しいことに)マルチバイト対応しています.その結果,マルチバイト文字列を途中でブツ切りにすることはないのですが,全角も半角も同じ1文字と数えるため,全角文字で説明を書くと少長くなってしまい,表のレイアウトが崩れます.気にしなければ気にならない範囲ですが.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 少々乱暴ですが,マルチバイト文字ならば半角の倍の横場はである(とは限らないのですが.ラテン文字など)という仮定に基づいて文字列の長さを調整するようにlightboxgallery_resize_text()を改良してみました.

mod/lightboxgallery/lib.phpです.

function lightboxgallery_resize_text($text, $length) {
    $textlib = textlib_get_instance();
//  return ($textlib->strlen($text) > $length ? $textlib->substr($text, 0, $length) . '...' : $text);
    $len = $textlib->strlen($text);
    for ($pt = 0, $cnt = 0, $ret = ''; $cnt < $length; $pt++) {
        $c = $textlib->substr($text, $pt, 1);
        $ret .= $c;
        if (strlen(bin2hex($c)) > 2) $cnt += 2; else $cnt++;
        if ($pt + 1 >= $len) return $ret;
    }
    return $ret.'...';
}

割とキッチリと揃いました.レイアウトが大きく崩れることは無いですね.ファイル名のみのサムネイルと幅はほぼ同じです.

添付 lightboxgallery_resize_text.jpg
Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿
 あれ? でも省略時の'...'のことを考えると,幅がほぼ一致するのはあまり良くないことですよね.とりあえず結果オーライということにしておきますが.文字によって字幅が異なるお陰だとは思うのですが,半角英数字と日本語を混ぜると,少し幅が広くなる可能性がありますね.まぁ,それはその時ということで.
Mitsuhiro Yoshida への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 やっと時間ができましたので,タグの件,確かめてみました.

 修正前は確かに文字化けしていた日本語のタグですが,修正を行うことで正しく表示されることを確認しました.完璧です!

 でもタグによる検索がうまく機能しないようですね.これが日本語のせいかどうかは,また明日,試してみようと思います.


原因は直ぐに分かりました.

mod/lightboxgallery/search.phpの90行目のif文の一つ目の条件ですね.

    $textlib = textlib_get_instance();

    if (($textlib->strlen($search) > 2) && ($images = get_records_sql($sql))) {
        $imagesdisplay = array();

今回は”準備”というタグを持つ写真を検索しました.赤い部分の戻り値を表示したところ,2でした.つまり条件を満たさない. > 2 を >= 2 に変更したら,正しく該当する写真のみを抽出できました(凄い!)ので,文字コードの問題ではありませんね.

 ちなみに $search は検索するタグの名前です.今回は"準備”が格納されていることを確認済みです.検索用のSQLが LIKE による検索です.ですので検索タグがあまり短い(たとえば,'a')ではあまりにも多くの写真が該当してしまうから設けた(お節介な?)条件であると思われます.

 この検索ですが,人気タグとして表示された中からの選択以外に,フリーキーワードでの検索も可能です.人気タグから選べば完全一致でいいはずですね.うーん,タグ一覧を表示して,その中からしか選ばせないというのも便利な気もするのですが.フリーキーワードにしても,文字数の制限を検索時に設けるのはあまり適切とは思えないですね.

#それとも私の見落としている,何か深遠な理由があるのでしょうか?
#でも,LightboxGalleryは便利ですね,これは.今のところ,とても満足しています.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
白井先生

次のように修正されてはいかがでしょうか。ウインク

修正対象プログラム: mod/lightboxgallery/search.php

修正箇所: 90行目
[ 修正前 ]
$textlib = textlib_get_instance();

if (($textlib->strlen($search) > 2) && ($images = get_records_sql($sql))) {
$imagesdisplay = array();
}

[ 修正後 ]
$textlib = textlib_get_instance();

if (($textlib->strlen(bin2hex($search)) / 2 > 2) && ($images = get_records_sql($sql))) {
$imagesdisplay = array();
}

参考資料:
[CPA-LABテクニカル - 日本語文字列のバイト数取得にstrlenだけではダメな理由-PHP]
http://www.cpa-lab.com/tech/0144
Mitsuhiro Yoshida への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 マルチバイト文字列に対するstrlen()の件はとても参考になりました.

 ちなみに本件ですが,$searchの文字数の制限,外してしまってはいけないでしょうかねぇ.

 例えば写真のタグに「Aチーム」,「Bチーム」と振った場合に,"A"でAチームの写真だけ閲覧できても良いと思うのですよね.間違えて「A班」と入力して何も表示されないよりは.全角/半角のAの間違いなども考えると,組み合わせの数が多くなりますし.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 Windows環境での日本語フォルダ名,ファイル名への対応(fs化)が,ほぼ終わりました.

 日本語タグ問題(Linux,MacOS含む)とfs化をしたものを近日中に公開します.あと,検索キーワードの長さの制限も外してしまいましょうか.ああ,それと,説明をサムネイル表示時にファイル名の代わりに表示する(ポップアップ時の挙動と同じ)にする改良も行いたいですね.もう少し掛かります.


 なお,その過程で気付いたのですが,反転操作の際に上下,左右(Vertical,Horizontal)の指示の文字列がget_string()を使っていませんね.読めますけれども.言語パックに追加してしまいます? > 吉田さん

#ちなみに,直訳すると垂直/水平ですが,日常的には上下/左右の方が馴染み深い気がします.どうでしょう?

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
> なお,その過程で気付いたのですが,反転操作の際に上下,左右(Vertical,Horizontal)の指示の文字列がget_string()を使っていませんね.読めますけれども.言語パックに追加してしまいます? > 吉田さん

やっぱり、気付かれましたか。
開発者のPaul Holdenさんに連絡してみます。

> #ちなみに,直訳すると垂直/水平ですが,日常的には上下/左右の方が馴染み深い気がします.どうでしょう?

私でしたら、可能な限り直訳すると思います。笑顔
Mitsuhiro Yoshida への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

はい,気付きました(笑).
まさかこんな機能まであるとは思いませんでした.90度回転くらいは期待していましたが.
では,連絡よろしくお願いします.

翻訳の件,統一性が重要ですので直訳でOKです!

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
白井先生

Lightbox Galleryの開発者、Paul Holdenさんよりご連絡頂きました。
次期バージョンにて、「Vertical,Horizontal」を翻訳できるようにストリングを追加するとのことです。笑顔

Mitsuhiro Yoshida への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 ありがとうございます.
 やはり本家での対応が好ましいですね.

 次期バージョン,期待しましょう.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
> ちなみに本件ですが,$searchの文字数の制限,外してしまってはいけないでしょうかねぇ.

そうですね。
外してしまっても問題ないと思います。
Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Takahiro Kagoya の投稿
当方でも、このLightboxギャラリー2.2.1をインストールしました。
白井先生および吉田さんのご尽力に感謝いたします。説明文をファイル名に代えて表示できるパッチも利用させていただいております。(ファイル名か説明文か選択式にするにはインタフェイスが必要なんですよね?)

ところで、このモジュールのRSSフィードがうまく吐かれずエラーになってしまうのですが、みなさんのところでは問題ないでしょうか。

サーバ全体およびモジュール、およびリソース全てでRSSフィードを有効にし、ページにはちゃんとアイコンが表示されていますが、それをクリックするとエラーになります。(IE8で確認)
フォーラムやデータベースモジュールでのRSSフィードは問題なく利用できています。

(以下スレッド分けた方がよろしいでしょうか...)
Takahiro Kagoya への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 RSSを利用していませんでした.
 いまサイト単位で有効に変更し,リソースの一つをRSS有効に変更しました.

 IE8でRSSの購読を選択したところ,RSSエラーが確かに発生しますね.

 そもそもこのインタフェース,生きているのかどうか.また有効にした直後ということが影響しているのか知れません.もうしばらくしたらデバッグしてみましょう.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 とりえず現状,当方のサイトでRSSエラーが発生する理由は,moodledata/rss/lightboxgallery/1.xmlというファイル(それ以前にlightboxgalleryというフォルダ)が存在しないせいです.まだadmin/cron.phpにより作成されていないようです.明日まで待って作成されないならば問題ですね.
 kagoya先生のところでもこのフォルダは存在しませんか?


あー,エラー出ていますね.

admin/cron.phpを手動で動かすと分かります.

Fatal error:  Call to undefined function lightboxgallery_directory_images()

とのことです.ちょっと外出しますので,戻ったら見てみましょう.確かに,rsslibphp(lightboxgallery)の頭で使われていますね.lib.phpに無いのかな.あれ?ありますね.typoでも無いようですし.むむ?

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 原因がハッキリするまでは,RSSを無効にしておかないと,admin/cron.phpが最後まで動かない可能性があります.


mod/lightboxgallery/rsslib.phpの冒頭,

<?php

//  require_once('lib.php');
    require_once($CFG->dirroot.'/mod/lightboxgallery/lib.php');

lib.phpの読み込みを相対パスから絶対パスに変更することでエラーが出ることなくadmin/cron.phpは最後まで動きました.lightboxgalleryのrsslib.phpもlib.phpも同じフォルダに存在するので,相対パスで構わないかと思ったのですが,そういう訳では無いのでしょうか.

 なお,admin/cron.phpが成功した後は,RSSエラーは発生しないで,きちんと”ファイル名”のリストがズラリと表示されました.お試し下さい.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 ポイントは,require()されたPHPファイルから別のPHPファイルを相対パスでrequire()する際に,どこから探索されるか,ですね(参考).詳しくは参考のページをご覧下さい.こういうメカニズムだとは知りませんでした.気を付けないと危険ですね.Moodleのソースではrequire_once()で読み込むファイルは$CFG->dirrootか$CFG->libdirを基準とする絶対パスで記述されています.納得しました.

 admin/cron.phpから呼ばれるmod/lightboxgallery/rsslib.phpの冒頭で用いられるrequire_once('lib.php');mod/lightboxgallery/lib.phpではなく,search/lib.phpを読み込んでいます.

 何故か.パスが指定されなかった場合,require_once()はphp.iniかini_set()で指定されたinclude_pathからファイル(この場合はlib.php)を探します.試しにvar_dump(ini_get('include_pat'));で調べると,
string(202) "C:\xampplite\htdocs\mech\moodle\search;C:\xampplite\htdocs\mech\moodle\search;C:\xampplite\htdocs\mech\moodle\search;C:\xampplite\htdocs\mech\moodle/lib/pear;.;C:\xampplite\php\pear;\xampplite\php\pear\"
となっていました.searchが三連続...随分と念入りなものですね.
 調べてみると,searchフォルダ内のadd.php, delete.php, indexer.php, indexersplash.php, update.php, tests/index.php, tests/index.phpini_set('include_path',$CFG->dirroot.DIRECTORY_SEPARATOR.'search'.PATH_SEPARATOR.ini_get('include_path'));set_include_path(get_include_path().":../");のようにinclude_pathを操作しています.

 include_pathを操作することが悪い訳ではありません.不用意に「ファイル名のみを指定すれば同じフォルダにあるファイルをrequire_once()してくれるだろう」と考えている点に問題があるのでしょう(私もそう考えていました).したがって本件に関しては,先に示した$CFG->dirrootを使った絶対パス指定が正しい,ということで良いでしょう.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

 この異常現象は環境に依存します.グローバルサーチを有効にしている場合にのみ発生します.

 Using moodleにもRSSが正常に機能しないという投稿がありました(http://moodle.org/mod/forum/discuss.php?d=83599&parent=482897).しかし無視されています.多分,報告者以外の環境ではこの問題が発生しなかった(=グローバルサーチを有効にしていない)のでしょう.気の毒に.

 先の投稿にも書きましたように,PHPの設定,include_pathはsearch(グローバルサーチ)中のコードによって修正されています.これを以下のようにini_restore('include_path');で元に(つまりphp.iniで指定されている状態)戻してあげると,require_once('lib.php');でも正しくmod/lightboxgallery/lib.phpが読み込まれているようです.このini_restore()されたinclude_pathの設定値をini_get('include_path');で調べてみると,当方の環境では以下のようになっていました.

".;C:\xampplite\php\pear;\xampplite\php\pear\"

一番頭のところに注目.カレントフォルダ(.)を含めていますね.search以下のファイルによって書き換えられたinclude_pathにはこのカレントフォルダを参照する設定が消されています.

 グローバルサーチでinclude_pathを書き換えたり,それを元に戻していないのがいけない,という訳ではなく,依然としてrequire_once('lib.php');というコードを使っているlightboxgalleryがいけない点に変わりはありません.

Tatsuya Shirai への返信

Re: lightbox galleryモジュール

- Tatsuya Shirai の投稿

fs_moodle専用のLightboxGalleryを以下のURLで公開します(すっかり忘れていました).

fs_moodle以外のMoodleへインストールしても動作しません.

http://www.suzuka-ct.ac.jp/mech/moodle/mod/resource/view.php?id=331&subdir=/Modules and Plugins/LightboxGallery and Plugins/LightboxGallery

なお,当方でLightboxGalleryに対して行った修正および拡張は以下のWikiにまとめてあります.
http://www.suzuka-ct.ac.jp/mech/moodle/mod/wiki/view.php?id=320&page=Lightboxgallery%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB

fs化以外の修正箇所の3件(3rdParty017, 018, 019)です.