【问题标题】:Create Advanced Reporting - Moodle创建高级报告 - Moodle
【发布时间】:2012-02-07 14:35:42
【问题描述】:

我真的是 Moodle 的新手,我已经获得了这个高级功能,可以尽快为客户的 Moodle 网站构建。我通过它的文档和我能找到的任何其他在线资源阅读了很多关于 Moodle 的信息,但我也想从这里的专家那里获得一些帮助。

我期待构建一个高级报告功能,让不同角色的用户有权查看其层次结构中的高级报告(高级、概览级、个人)。

报告数据将基于组织层次结构,即经理可以查看部门报告,在部门内他可以选择任何部分,在一个部分内,他可以选择任何区域,最终可以选择该区域内的任何个人。

我需要为此编写一个单独的插件,以便将来的升级不会超过更改。任何人都可以给我一个关于如何去做这个的起点吗?任何链接、指针或建议都会很有用,因为我现在是 Moodle 的新手?

【问题讨论】:

    标签: php reporting moodle


    【解决方案1】:

    您需要将此插件放在 /local 文件夹中,并通过添加到主导航块的链接提供对其页面的访问。这是通过将以下函数放入 /local/myplugin/lib.php 来完成的,该函数将自动获取:

    myplugin_extends_navigation(global_navigation $navigation) {
        // Read the docs for get_context_instance and look at other uses to see what params you need
        $usercontext = get_context_instance(CONTEXT_USER, $USER->id, MUST_EXIST);
    
        // You will need to define some capabilities or use existing ones. If the user is allowed, they see the link below
        if (has_capability('whatevercapability', $context)) {
    
            // Adds a link
            $node_schedule = $nodecoursework->add('Submission Schedule',
                                                  new moodle_url('/local/myplugin/sub.php'),
                                                  navigation_node::TYPE_CUSTOM,
                                                  'Submission Schedule',
                                                  'Submission Schedule');
        }
    }
    

    然后将报告页面作为单独的文件(在本例中为 sub.php)放置在文件夹中。查找生成报告的 html_table() 类,以及它的基于 sql 的子类。

    制作本地插件的文档是here,你可以看到一个例子here

    【讨论】:

    • 哦,谢谢您的回复。好吧,我首先构建模块以创建层次结构,其中 ppl 可以创建新的部门、部分 n 区域并将其分配给彼此。然后最终将用户放入不逻辑组中。我通过在 /blocks/ 文件夹中创建一个插件 cald 用户层次结构和 1ce 当我准备好我的层次结构时,我将在 /report/ 文件夹中创建一个插件来获取这些层次结构考虑到 n 让不同级别的用户查看差异报告。 dis也是对的吗?而且可能还有太多的并发症,而且我会这样做。
    • 听起来很合理,虽然 /reports 是非标准的,所以很多零碎的东西,比如拾取导航链接、运行单元测试等都不会扫描它,这可能是一个缺点。你是如何建立层次结构的?角色/上下文系统应该已经为您提供了这些。
    • 你明白吗?你所说的角色/上下文系统已经为你提供了什么?正如我之前提到的,我创建了一个新插件,其中包含部门、部门、区域的表格和一个单独的表格,该表格将部门映射到部门,将区域映射到部门。现在剩下的就是将用户放入这些层次结构并根据他们的层次结构设置权限。完成后,我将开始使用我的报告插件。
    • 我的意思是,如果您对课程类别进行层次结构并将它们命名为部门、部分、区域等。然后您可以分配用户角色,例如这些类别中的教师、学生、部门负责人(您也可以组成自己的角色并说出他们拥有的权限)。每个类别都是一个上下文,可以让用户担任角色,也可以覆盖某些权限,例如某人可以是 A 部门的老师,但您已将其设置为该部门的老师不能标记论文,只能查看它们。
    • 您也可以为个人用户执行此操作。权限是级联的,因此部门 A 的教师也将是其下所有部分和区域的教师,除非您在较低的上下文中覆盖他们的角色。更多信息在这里docs.moodle.org/20/en/Assign_roles 假设您使用的是 2.x,请查看站点管理 -> 用户 -> 权限 -> 定义角色,还在站点管理 -> 课程 -> 添加/编辑课程中创建分层类别,然后单击一个,然后在旁边的块中查找设置->分配角色。我强烈推荐使用这个系统,而不是重新发明轮子
    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多