现象: Claroline中,在“课程公告”或练习中,最下方有:“
附加上一个已有的教学资源”,这个资源框可以把基本上所有的Claroline资源列出,并附加到文章的后方。
如果讲程讲义或其他资源是中文,则会出现:
(1)中文目录下还有目录,在进入中文目录后,导航栏消失,除非重新载入,否则无法再返回上一级。
(2)(可能仅utf-8编码如此)在进入两层以上中文目录后,点击导航栏上的链接,都返回“无法链接的资源”错误。
原因: 在“附加资源框”中,用ajax连接服务器,获取列表。
但是获取来的中文,直接用于链接的设置和比较。
(1)第一个问题在\web\js\claroline.linker.js中193行,此处直接用crl比较,因后者进行了url编码,所以导致条件匹配失败,应该改为
encodeURI(current.crl)就可以了:
注意:PHPer要注意,js中是encodeURI函数!!!!
点击(此处)折叠或打开
- if ( current.crl == crl ){
- linkerFrontend.history.push( current );
- break;
- }
(2)第二个问题在213和215行,原因同理,也需要给data.parent加上encodeURI:
- var upLink = $('+data.parent+'" title="Up">'+'['+Claroline.getLang('Up')+']'+'');
-
- upLink.click( function(){ linkerFrontend.loadList(data.parent); return false; } );
解决: 两处都需要加encodeURI,为防止以后仍然出错,所以干脆在取得data的时候,直接进行编码,在172行,后改为:
- var data = Claroline.json.getResponseBody( response );
- data.crl = encodeURI(data.crl);
- data.parent = encodeURI(data.parent);
---end----
阅读(2460) | 评论(0) | 转发(0) |