Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4248746
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类: Python/Ruby

2012-11-12 15:40:23

现象:
  Claroline中,在“课程公告”或练习中,最下方有:“附加上一个已有的教学资源”,这个资源框可以把基本上所有的Claroline资源列出,并附加到文章的后方。
  如果讲程讲义或其他资源是中文,则会出现:
  (1)中文目录下还有目录,在进入中文目录后,导航栏消失,除非重新载入,否则无法再返回上一级。
  (2)(可能仅utf-8编码如此)在进入两层以上中文目录后,点击导航栏上的链接,都返回“无法链接的资源”错误。

原因:
  在“附加资源框”中,用ajax连接服务器,获取列表。
  但是获取来的中文,直接用于链接的设置和比较。
  (1)第一个问题在\web\js\claroline.linker.js中193行,此处直接用crl比较,因后者进行了url编码,所以导致条件匹配失败,应该改为encodeURI(current.crl)就可以了:
   注意:PHPer要注意,js中是encodeURI函数!!!!

点击(此处)折叠或打开

  1. if ( current.crl == crl ){
  2.                             linkerFrontend.history.push( current );
  3.                             break;
  4.                         }
  (2)第二个问题在213和215行,原因同理,也需要给data.parent加上encodeURI:

  1. var upLink = $('+data.parent+'" title="Up">'+'['+Claroline.getLang('Up')+']'+'');
  2.                     
  3.                     upLink.click( function(){ linkerFrontend.loadList(data.parent); return false; } );


解决:
 两处都需要加encodeURI,为防止以后仍然出错,所以干脆在取得data的时候,直接进行编码,在172行,后改为:

  1. var data = Claroline.json.getResponseBody( response );

  2. data.crl = encodeURI(data.crl);
  3. data.parent = encodeURI(data.parent);


---end----


阅读(2460) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~