Создание расширенной отчетности - Moodle

Я действительно новичок в Moodle, и у меня есть эта расширенная функциональность, чтобы как можно быстрее создать клиентский сайт Moodle. Я много читал о Moodle через его документацию и любые другие онлайн-ресурсы, которые я мог найти, но подумал о том, чтобы воспользоваться помощью экспертов здесь.

Я с нетерпением жду создания расширенной функции отчетности, в которой пользователи с разными ролями будут иметь разрешения на просмотр расширенных отчетов (высокого уровня, уровня обзора, отдельных) в своей иерархии.

Данные отчета будут основываться на организационной иерархии, т. е., скажем, менеджер может просматривать отчет отдела, внутри отдела он может выбрать любой из разделов, внутри раздела он может выбрать любую область и, в конечном итоге, любого человека в этой области.

Мне нужно написать отдельный плагин для этого, чтобы будущие обновления не отменяли изменения. Может ли кто-нибудь дать мне отправную точку, как это сделать? Любые ссылки, указатели или предложения были бы полезны, так как я совсем новичок в Moodle прямо сейчас?


person ivn    schedule 07.02.2012    source источник


Ответы (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.

Документы по созданию локального плагина находятся здесь, и вы можете увидеть пример здесь.

person Matt Gibson    schedule 17.02.2012
comment
О, спасибо за ваш ответ. Ну, я сначала начал создавать модули для создания иерархии, где люди могут создавать новые отделы, секции и области и назначать их друг другу. Затем, наконец, поместите пользователей в логические группы. Я делаю это, создавая плагин и иерархию пользователей в папке /blocks/ и 1ce, когда я готовлю свою иерархию, я собираюсь создать плагин в папке /report/, который будет принимать эти иерархии. в рассмотрение дайте разным уровням пользователей просматривать отчеты о разнице. Дис уэй тоже прав? И, вероятно, впереди слишком много сложностей, но я не буду делать это таким образом. - person ivn; 17.02.2012
comment
Звучит разумно, хотя /reports не является стандартным, поэтому многие фрагменты, такие как сбор навигационных ссылок, запуск модульных тестов и т. д., не будут его сканировать, что может быть недостатком. Как вы делаете иерархии? Предполагается, что система ролей/контекстов уже предоставляет их вам. - person Matt Gibson; 17.02.2012
comment
Не понял тебя? что вы подразумеваете под ролями/контекстами, система уже предоставляет это для вас? Как я уже упоминал ранее, я создал новый плагин с таблицами для отделов, разделов, областей и отдельной таблицей, которая отображает разделы в отделы и области в разделы. Теперь осталось поместить пользователей в эти иерархии и установить для них разрешения на основе их иерархии. Как только это будет сделано, я начну свой плагин для отчетов. - person ivn; 18.02.2012
comment
Я имею в виду, что если вы создадите иерархию категорий курсов и назовете их отделами, разделами, областями и т. д., тогда вы сможете назначать пользователям роли, например. учитель, студент, заведующий кафедрой (вы также можете придумать свои собственные роли и указать, какие у них есть права) в этих категориях. Каждая категория представляет собой контекст, в котором могут быть пользователи в ролях, а также определенные разрешения, переопределяемые, например. кто-то может быть учителем в отделе А, но вы настроили его так, что в этом отделе учителя не могут отмечать эссе, а только просматривать их. - person Matt Gibson; 18.02.2012
comment
Вы также можете сделать это для отдельных пользователей. Разрешения являются каскадными, поэтому учитель в отделе А также будет учителем во всех разделах и областях ниже него, если вы не переопределите его роль в более низком контексте. Подробнее здесь docs.moodle.org/20/en/Assign_roles. на 2.x проверьте Администрирование сайта -> пользователи -> разрешения -> определите роли, также создайте иерархические категории в Администрирование сайта -> курсы -> добавить/редактировать курсы, затем щелкните один и найдите Настройки -> назначьте роли в блоке сбоку. Я очень настоятельно рекомендую использовать эту систему и не изобретать велосипед. - person Matt Gibson; 18.02.2012
comment
Ну, я думаю, мне придется сделать эти иерархии через какой-то плагин. Потому что категории не позволили бы каждому из них быть частью друг друга. Например, у меня есть 3 разных отдела, в каждом из этих отделов есть, скажем, по 2 секции, и в каждой из этих секций по 3 области. В конце концов, эти области будут иметь членов под ними. Поможет ли ваша идея с категориями создать такую ​​иерархическую структуру? Также я не хочу, чтобы говорили, что если учитель назначается руководителем одного отдела, он также является руководителем секций и областей. Это противоречит моей цели создания плагина отчета. - person ivn; 18.02.2012
comment
Мой отчет, для которого в первую очередь я начал делать этот плагин для создания иерархии, требует такой иерархии. Поскольку мой сайт Moodle предназначен для крупных организаций, которые хотели бы обучать и обучать своих сотрудников различным курсам. В нем должны быть отделы››отделы››область››штатная структура. А наличие уникального руководителя/руководителя для каждого отдела/раздела/области поможет им просматривать отчеты нужного типа. Например, менеджер отдела может только просматривать отчет своего отдела и выбирать раздел или область в своем отчете для просмотра отчета ниже. - person ivn; 18.02.2012
comment
Точно так же руководитель отдела должен иметь возможность просматривать отчеты ниже по своей иерархии, т.е. отчет по его разделу и областям внутри его раздела и т. д. Следовательно, я думаю, что лучший способ добиться этого — сначала создать такую ​​иерархию, которая отображает области в разделы, а разделы — в отделы, затем помещать пользователей в такие иерархии, а затем — в какие курсы. или учебная деятельность преподается, затем просматривается и оценивается на основе этих иерархий. Есть ли что-то лучшее, что могло бы помочь мне сделать все это, чем то, что я делаю сейчас? Потому что ваш способ кажется разумным, но я думаю, что может или не может точно сделать так, как мне нужно. - person ivn; 18.02.2012
comment
Описанная вами структура точно такая же, как и в любой другой школе, университете и компании, которые преподают с помощью Moodle. Это проблема, которая уже была решена со времен Moodle 1.7, и все ошибки и варианты использования были тщательно проработаны. Он делает все, что вам нужно, и даже больше. Вам просто нужно запачкать руки в документах :) - person Matt Gibson; 18.02.2012
comment
давайте продолжим это обсуждение в чате - person ivn; 19.02.2012