- 论坛徽章:
- 54
|
十三、添加工具栏(左侧栏)
(一)工具栏(左侧栏)分析
1、需要三个工具栏的数据表和三个权限表:
三个工具栏相关的表共同决定哪些工具栏在课程里可见:
course_tool:这里面是工具栏的名称、类型
module:相关的链接,启用不启用
_tool_list:针对每个课程的工具栏设置,可以单独设置显示还是不显示。
下面这三个权限表组合起来用,共同决定对哪些用户显示工具栏。
right_action:这里面的记录数正常情况是course_tool记录数的两倍,为每个tool做了两个动作:read和edit。其中有个tool_id,就是对应于course_tool里的id,如查自己添加了工具栏,那么别忘了在这儿添加上对应于profile为4(即课程管理员)的两个动作。
right_profile:这里面存放的其实就是用户组:匿名、注册用户、课程学员、课程管理员。还有自已定义的用户组,我自定义了“教师”组,用来管理学生。这个表只有profile_id字段和下个表有关系,就是对应于某个课程不同组的权限。
right_rel_profile_action:这个就是权限表。通过profile字段和right_profile表发生联系;通过action_id字段和right_action表发生联系;通过course_id和course表发生联系,也就针对某个课程的权限。
2、既然是工具栏,所以在module里的type属性必须是tool,否则不会出现。(这是工具栏和小程序applicate的区别,小程序在页面的某个地方,比如标题栏左边)
(二)工具栏查询的源代码,可以看出工具栏三个数据表的关系:
// find module or claroline existing tools
$sql = "SELECT DISTINCT ctl.id AS id,
pct.id AS tool_id,
pct.claro_label AS label,
ctl.script_name AS external_name,
ctl.visibility AS visibility,
IFNULL(pct.icon,'tool.gif') AS icon,
ISNULL(ctl.tool_id) AS external,
m.activation ,
m.name AS name,
IFNULL( ctl.script_url ,
pct.script_url ) AS url
FROM `" . $tbl_course_tool_list . "` AS ctl,
`" . $tbl_module . "` AS m,
`" . $tbl_tool_list . "` AS pct
WHERE pct.id = ctl.tool_id
AND pct.claro_label = m.label
". ($active ? " AND m.activation = 'activated' " :"") . "
ORDER BY external, pct.def_rank, ctl.rank";
所以如果要添加一个新的工具栏,必须满足那三个相等的条件。
(三)添加工具栏的步骤
1、在course_tools里添加好一个工具栏,下面是两个示例:id claro_label script_url icon def_access def_rank add_in_course access_manager
1 CLDSC index.php info.gif ALL 1 AUTOMATIC COURSE_ADMIN
2 CLCAL agenda.php agenda.gif ALL 2 AUTOMATIC COURSE_ADMIN
第一个字段是ID,可以让数据库自动处理;第二个字段是为工具栏起的名字,注意要唯一,要记住,后面还要用;第三列是工具栏所对应的文件名,注意相对路径是:claroline/module/工具栏名/。如果要链接到claroline的其它目录,最好还是做一个符号连接;然后就是icon,这是图标。
2、在module里加入对应的名称: id label name activation type script_url
1 CLDSC Course description activated tool index.php
2 CLCAL Agenda activated tool agenda.php
第二个字段的名要和上个表的claro_label对应;name填写一个显示的名称,可以直接用汉字;activation要启用,如果不启用,也要以到系统模块里设置启用。
3、需要加入课程的tool_list,注意每个课程都需要单独加入:
id tool_id rank visibility script_url script_name addedTool
1 1 1 1 NULL NULL YES
2 2 2 1 NULL NULL YES
这里的第二列对应于第一个表中的id;visibility列是决定显示还是不显示。
这样就加完了一个工具栏,课程管理员已经可以看到了。
4、设置三个权限表。
根据上面的分析,很容易把这个权限表做出来:
(1)为加入的tool在right_action里做两个action,一个是read,一个是edit。
(2)进入课程,应该可以看到这个工具栏的。
5、问题:如果想把内容连接到course文件夹里的一个文件,默认的工具栏是在modules文件夹里,所以要建一个符号链接,这样才能找到文件。
(四)最有权威的步骤应该参考:
claroline\admin\module\module_list.php的exInstall部分。它引用了:
claroline\inc\lib\module.manage.lib.php,详见:
register_module_tool()函数和install_module()的7个步骤。
[ 本帖最后由 lsstarboy 于 2009-4-26 16:17 编辑 ] |
|