2

我们正在从 ANGEL 转换为 D2L。我们创建了基于 JavaScript 的小部件,这些小部件使用 $SECTION_ID$ 令牌来告诉脚本它正在运行的课程。在 Desire2Learn 中,等价的将是替换字符串 {OrgUnitCode}。我们只想使用该替换字符串,但它们在课程页面(我的大部分小部件使用情况所在)中无法正常工作。还有其他方法可以找出 JavaScript 小部件正在运行的课程吗?

这是一个示例,其中一个小部件的代码用户将粘贴到他们的课程页面中: 

<script type="text/javascript" data-id="NotablePAD540" section="{OrgUnitCode}">
     var DAT = DAT || {}; if (!DAT.n) { (function (d) {
     var f = d.getElementsByTagName('SCRIPT')[0], s = d.createElement('SCRIPT'); s.async = true;
     s.type = 'text/javascript'; s.charset = 'utf-8'; s.src = '//dev.notable.vudat.msu.edu/n.js'; 
     f.parentNode.insertBefore(s, f); }(document)); }; DAT.n = 1; </script>

每个记事本都有一个唯一的 ID,此代码片段示例适用于 ID 为 540 的记事本。动态位 {OrgUnitCode} 用于分离数据,允许我在多个课程中使用相同的片段并拥有数据分开存放。

4

1 回答 1

2

如果纯粹是在课程主页上有一个包含动态信息的小部件,那么最有效的解决方案可能是使用“远程插件小部件”。

这些可以由管理员使用“管理远程插件”工具进行设置。

它们的远程插件有效地将 LTI 启动组合到 iframe 中,并在您配置主页(或系统的其他区域)时将它们作为小部件提供。发布了一些示例,说明如何将其用于更丰富的服务器端应用程序。

LTI 启动本身传递有关它从何处启动的信息(即上下文相关信息)。

在您的情况下,看起来只托管一个包含 javascript 的静态页面就可以了。然后您可以使用 javascript 检查查询字符串。(如果您当时关心信任,那么安全地测试来自 javascript 的 LTI 签名有点棘手......)

此外,如果您需要补充其他可用信息,可以从 javascript 使用 Valence API(GET 调用)

于 2013-04-26T16:38:15.037 回答