2012年4月26日

moodle作業圖檔顯示縮圖


有老師提到moodle很好用,但如果在改作業時能有圖檔可以用縮圖來顯示,可以減少老師多按好多滑鼠,在需要的時候再按就好了。研究了一下moodle,只完成一半。
怕忘記先記下能做的事。

程式位置:moodle 1.9版的位是在moodle目錄中的mod目錄中有一個叫assignment資料夾,這裡是放作業的程式位置,其中type/upload是進階上傳的程式而type/uploadsingle是上傳一個檔案的位置(2.x版相同)。

修改過程:
1.修改mod/assignment/type/uploadsingle/assignment.class.php
 大概在27行
$ffurl = get_file_url("$filearea/$file");
之後加入程式碼:

//modify by estea

$bfile=array_pop(explode (".", $file));
            $bfile=strtolower($bfile);
            if(strtolower($bfile=="jpg" or $bfile=="png" or $bfile=="gif" or $bfile=="svg")){
                $showimg="<img src='".$ffurl."' alt='picture' width='50'> ";
                }

把下一行
                   $output = '<img src="'.$CFG->pixpath.'/f/'.$icon.'" class="icon" alt="'.$icon.'" />'.
                            '<a href="'.$ffurl.'" >'.$file.'</a><br />';
改成
                   $output = '<img src="'.$CFG->pixpath.'/f/'.$icon.'" class="icon" alt="'.$icon.'" />'.
                            '<a href="'.$ffurl.'" >'.$showimg.$file.'</a><br />';
再後面再加上
//###modify end
這樣就上傳單檔時如果附檔名是jpg gif png svg的就會用縮圖顯示,其中svg是特別加上去的如果瀏覽器不支援html5就有可能會顯示不出來。

2. 修改mod/assignment/type/upload/assignment.class.php
 大約在310行找到
$ffurl = get_file_url("$filearea/$file");
在下面增加
            ####modify  by estea####
            $bfile=array_pop(explode (".", $file));
            $bfile=strtolower($bfile);
            if(strtolower($bfile=="jpg" or $bfile=="png" or $bfile=="gif" or $bfile=="svg")){
                $showimg="<img src='".$ffurl."' alt='picture' width='50'> ";
                }else{$showimg="";}

                   $output .= '<a href="'.$ffurl.'" ><img class="icon" src="'.$CFG->pixpath.'/f/'.$icon.'" alt="'.$icon.'" />'.$file.'</a>&nbsp;';
改成
                   $output .= '<a href="'.$ffurl.'" ><img class="icon" src="'.$CFG->pixpath.'/f/'.$icon.'" alt="'.$icon.'" />'.$showimg.$file.'</a>&nbsp;
在後面增加一行
//###modify end
這樣進階上傳就會有縮圖出現

而moodle 2.x版程式語法複雜多了,在不能力不足只找到一個可以改的地方。
修改mod/assignment/type/uploadsingle/assignment.class.php檔案
大約在45行找到
$path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/mod_assignment/submission/'.$submission->id.'/'.$filename);
在下面增加
            //###modify estea 101/04/26
            $bfile=array_pop(explode (".", $filename));
            $bfile=strtolower($bfile);
            if(strtolower($bfile=="jpg" or $bfile=="png" or $bfile=="svg" or $bfile=="svg")){
                $showimg="<img src='".$path."'alt='picture' width='50'> ";
                }

                   $output .= '<a href="'.$path.'" ><img class="icon" src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" alt="'.$mimetype.'" />'.s($filename).'</a><br />';
改為
                   $output .= '<a href="'.$path.'" ><img class="icon" src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" alt="'.$mimetype.'" />'.$showimg.s($filename).'</a><br />';
 再增加一行
            //### modify end
這樣在評分上傳單一檔案時就會有縮圖。
不想改想直接用改好的,檔案放在討論區
https://groups.google.com/forum/?hl=zh-TW&fromgroups#!topic/free_tpc/0XFRCgoX8Rs

張貼留言