mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 17:36:38 +02:00
MDL-77061 badge: Convert "Manage badges" page to use Report Builder
- Manage badges page is now a Report Builder system report to show the list of site and course badges.
This commit is contained in:
parent
cccc00954d
commit
f0770658fb
14 changed files with 482 additions and 60 deletions
|
@ -110,6 +110,25 @@ class badge extends base {
|
||||||
->add_field("{$badgealias}.name")
|
->add_field("{$badgealias}.name")
|
||||||
->set_is_sortable(true);
|
->set_is_sortable(true);
|
||||||
|
|
||||||
|
// Name with link.
|
||||||
|
$columns[] = (new column(
|
||||||
|
'namewithlink',
|
||||||
|
new lang_string('namewithlink', 'core_badges'),
|
||||||
|
$this->get_entity_name()
|
||||||
|
))
|
||||||
|
->add_joins($this->get_joins())
|
||||||
|
->set_type(column::TYPE_TEXT)
|
||||||
|
->add_fields("{$badgealias}.name, {$badgealias}.id")
|
||||||
|
->set_is_sortable(true)
|
||||||
|
->add_callback(static function(?string $value, stdClass $row): string {
|
||||||
|
if (!$row->id) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = new moodle_url('/badges/overview.php', ['id' => $row->id]);
|
||||||
|
return html_writer::link($url, $row->name);
|
||||||
|
});
|
||||||
|
|
||||||
// Description (note, this column contains plaintext so requires no post-processing).
|
// Description (note, this column contains plaintext so requires no post-processing).
|
||||||
$descriptionfieldsql = "{$badgealias}.description";
|
$descriptionfieldsql = "{$badgealias}.description";
|
||||||
if ($DB->get_dbfamily() === 'oracle') {
|
if ($DB->get_dbfamily() === 'oracle') {
|
||||||
|
@ -212,7 +231,11 @@ class badge extends base {
|
||||||
->add_field("{$badgealias}.status")
|
->add_field("{$badgealias}.status")
|
||||||
->set_is_sortable(true)
|
->set_is_sortable(true)
|
||||||
->add_callback(static function($status): string {
|
->add_callback(static function($status): string {
|
||||||
return $status ? get_string("badgestatus_{$status}", 'core_badges') : '';
|
if ($status === null) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return get_string("badgestatus_{$status}", 'core_badges');
|
||||||
});
|
});
|
||||||
|
|
||||||
// Expiry date/period.
|
// Expiry date/period.
|
||||||
|
|
297
badges/classes/reportbuilder/local/systemreports/badges.php
Normal file
297
badges/classes/reportbuilder/local/systemreports/badges.php
Normal file
|
@ -0,0 +1,297 @@
|
||||||
|
<?php
|
||||||
|
// This file is part of Moodle - http://moodle.org/
|
||||||
|
//
|
||||||
|
// Moodle is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// Moodle is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace core_badges\reportbuilder\local\systemreports;
|
||||||
|
|
||||||
|
use core\context\{course, system};
|
||||||
|
use core_badges\reportbuilder\local\entities\badge;
|
||||||
|
use core_reportbuilder\local\helpers\database;
|
||||||
|
use core_reportbuilder\local\report\{action, column};
|
||||||
|
use core_reportbuilder\system_report;
|
||||||
|
use lang_string;
|
||||||
|
use moodle_url;
|
||||||
|
use pix_icon;
|
||||||
|
use stdClass;
|
||||||
|
|
||||||
|
defined('MOODLE_INTERNAL') || die;
|
||||||
|
|
||||||
|
global $CFG;
|
||||||
|
require_once("{$CFG->libdir}/badgeslib.php");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Badges system report class implementation
|
||||||
|
*
|
||||||
|
* @package core_badges
|
||||||
|
* @copyright 2023 David Carrillo <davidmc@moodle.com>
|
||||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
|
*/
|
||||||
|
class badges extends system_report {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialise report, we need to set the main table, load our entities and set columns/filters
|
||||||
|
*/
|
||||||
|
protected function initialise(): void {
|
||||||
|
// Our main entity, it contains all of the column definitions that we need.
|
||||||
|
$badgeentity = new badge();
|
||||||
|
$entityalias = $badgeentity->get_table_alias('badge');
|
||||||
|
|
||||||
|
$this->set_main_table('badge', $entityalias);
|
||||||
|
$this->add_entity($badgeentity);
|
||||||
|
|
||||||
|
$paramtype = database::generate_param_name();
|
||||||
|
$context = $this->get_context();
|
||||||
|
if ($context instanceof system) {
|
||||||
|
$type = BADGE_TYPE_SITE;
|
||||||
|
$this->add_base_condition_sql("{$entityalias}.type = :$paramtype", [$paramtype => $type]);
|
||||||
|
} else {
|
||||||
|
$type = BADGE_TYPE_COURSE;
|
||||||
|
$paramcourseid = database::generate_param_name();
|
||||||
|
$this->add_base_condition_sql("{$entityalias}.type = :$paramtype AND {$entityalias}.courseid = :$paramcourseid",
|
||||||
|
[$paramtype => $type, $paramcourseid => $context->instanceid]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Any columns required by actions should be defined here to ensure they're always available.
|
||||||
|
$this->add_base_fields("{$entityalias}.id, {$entityalias}.type, {$entityalias}.courseid, {$entityalias}.status");
|
||||||
|
|
||||||
|
// Now we can call our helper methods to add the content we want to include in the report.
|
||||||
|
$this->add_columns($badgeentity);
|
||||||
|
$this->add_filters();
|
||||||
|
$this->add_actions();
|
||||||
|
|
||||||
|
// Set initial sorting by name.
|
||||||
|
$this->set_initial_sort_column('badge:namewithlink', SORT_ASC);
|
||||||
|
|
||||||
|
// Set if report can be downloaded.
|
||||||
|
$this->set_downloadable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates access to view this report
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function can_view(): bool {
|
||||||
|
return has_any_capability([
|
||||||
|
'moodle/badges:viewawarded',
|
||||||
|
'moodle/badges:createbadge',
|
||||||
|
'moodle/badges:awardbadge',
|
||||||
|
'moodle/badges:configurecriteria',
|
||||||
|
'moodle/badges:configuremessages',
|
||||||
|
'moodle/badges:configuredetails',
|
||||||
|
'moodle/badges:deletebadge'], $this->get_context());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the columns we want to display in the report
|
||||||
|
*
|
||||||
|
* They are provided by the entities we previously added in the {@see initialise} method, referencing each by their
|
||||||
|
* unique identifier. If custom columns are needed just for this report, they can be defined here.
|
||||||
|
*
|
||||||
|
* @param badge $badgeentity
|
||||||
|
*/
|
||||||
|
public function add_columns(badge $badgeentity): void {
|
||||||
|
$columns = [
|
||||||
|
'badge:image',
|
||||||
|
'badge:namewithlink',
|
||||||
|
'badge:status',
|
||||||
|
'badge:criteria',
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->add_columns_from_entities($columns);
|
||||||
|
|
||||||
|
// Issued badges column.
|
||||||
|
// TODO: Move this column to the entity when MDL-76392 is integrated.
|
||||||
|
$tempbadgealias = database::generate_alias();
|
||||||
|
$badgeentityalias = $badgeentity->get_table_alias('badge');
|
||||||
|
$this->add_column((new column(
|
||||||
|
'issued',
|
||||||
|
new lang_string('awards', 'core_badges'),
|
||||||
|
$badgeentity->get_entity_name()
|
||||||
|
))
|
||||||
|
->add_joins($this->get_joins())
|
||||||
|
->set_type(column::TYPE_INTEGER)
|
||||||
|
->add_field("(SELECT COUNT({$tempbadgealias}.userid)
|
||||||
|
FROM {badge_issued} {$tempbadgealias}
|
||||||
|
INNER JOIN {user} u
|
||||||
|
ON {$tempbadgealias}.userid = u.id
|
||||||
|
WHERE {$tempbadgealias}.badgeid = {$badgeentityalias}.id AND u.deleted = 0)", 'issued')
|
||||||
|
->set_is_sortable(true));
|
||||||
|
|
||||||
|
// Remove title from image column.
|
||||||
|
$this->get_column('badge:image')->set_title(null);
|
||||||
|
|
||||||
|
// Change title from namewithlink column.
|
||||||
|
$this->get_column('badge:namewithlink')->set_title(new lang_string('name'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the filters we want to display in the report
|
||||||
|
*
|
||||||
|
* They are all provided by the entities we previously added in the {@see initialise} method, referencing each by their
|
||||||
|
* unique identifier
|
||||||
|
*/
|
||||||
|
protected function add_filters(): void {
|
||||||
|
$filters = [
|
||||||
|
'badge:name',
|
||||||
|
'badge:status',
|
||||||
|
];
|
||||||
|
$this->add_filters_from_entities($filters);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the system report actions. An extra column will be appended to each row, containing all actions added here
|
||||||
|
*
|
||||||
|
* Note the use of ":id" placeholder which will be substituted according to actual values in the row
|
||||||
|
*/
|
||||||
|
protected function add_actions(): void {
|
||||||
|
// Activate badge.
|
||||||
|
$this->add_action((new action(
|
||||||
|
new moodle_url('/badges/action.php', [
|
||||||
|
'id' => ':id',
|
||||||
|
'sesskey' => sesskey(),
|
||||||
|
'activate' => true,
|
||||||
|
'return' => (new moodle_url(qualified_me()))->out_as_local_url(false),
|
||||||
|
]),
|
||||||
|
new pix_icon('t/show', '', 'core'),
|
||||||
|
[],
|
||||||
|
false,
|
||||||
|
new lang_string('activate', 'badges')
|
||||||
|
))->add_callback(static function(stdclass $row): bool {
|
||||||
|
$badge = new \core_badges\badge($row->id);
|
||||||
|
$context = self::get_badge_context((int)$row->type, (int)$row->courseid);
|
||||||
|
return has_capability('moodle/badges:configuredetails', $context) &&
|
||||||
|
$badge->has_criteria() &&
|
||||||
|
($row->status == BADGE_STATUS_INACTIVE || $row->status == BADGE_STATUS_INACTIVE_LOCKED);
|
||||||
|
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Deactivate badge.
|
||||||
|
$this->add_action((new action(
|
||||||
|
new moodle_url('/badges/index.php', [
|
||||||
|
'lock' => ':id',
|
||||||
|
'sesskey' => sesskey(),
|
||||||
|
'type' => ':type',
|
||||||
|
'id' => ':courseid',
|
||||||
|
]),
|
||||||
|
new pix_icon('t/hide', '', 'core'),
|
||||||
|
[],
|
||||||
|
false,
|
||||||
|
new lang_string('deactivate', 'badges')
|
||||||
|
))->add_callback(static function(stdclass $row): bool {
|
||||||
|
$badge = new \core_badges\badge($row->id);
|
||||||
|
$context = self::get_badge_context((int)$row->type, (int)$row->courseid);
|
||||||
|
return has_capability('moodle/badges:configuredetails', $context) &&
|
||||||
|
$badge->has_criteria() &&
|
||||||
|
$row->status != BADGE_STATUS_INACTIVE && $row->status != BADGE_STATUS_INACTIVE_LOCKED;
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Award badge manually.
|
||||||
|
$this->add_action((new action(
|
||||||
|
new moodle_url('/badges/award.php', [
|
||||||
|
'id' => ':id',
|
||||||
|
]),
|
||||||
|
new pix_icon('t/award', '', 'core'),
|
||||||
|
[],
|
||||||
|
false,
|
||||||
|
new lang_string('award', 'badges')
|
||||||
|
))->add_callback(static function(stdclass $row): bool {
|
||||||
|
$badge = new \core_badges\badge($row->id);
|
||||||
|
$context = self::get_badge_context((int)$row->type, (int)$row->courseid);
|
||||||
|
return $badge->has_manual_award_criteria() &&
|
||||||
|
has_capability('moodle/badges:awardbadge', $context) &&
|
||||||
|
$badge->is_active();
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Edit action.
|
||||||
|
$this->add_action((new action(
|
||||||
|
new moodle_url('/badges/edit.php', [
|
||||||
|
'id' => ':id',
|
||||||
|
'action' => 'badge',
|
||||||
|
]),
|
||||||
|
new pix_icon('t/edit', '', 'core'),
|
||||||
|
[],
|
||||||
|
false,
|
||||||
|
new lang_string('edit', 'core')
|
||||||
|
))->add_callback(static function(stdclass $row): bool {
|
||||||
|
$context = self::get_badge_context((int)$row->type, (int)$row->courseid);
|
||||||
|
return has_capability('moodle/badges:configuredetails', $context);
|
||||||
|
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Duplicate action.
|
||||||
|
$this->add_action((new action(
|
||||||
|
new moodle_url('/badges/action.php', [
|
||||||
|
'id' => ':id',
|
||||||
|
'copy' => 1,
|
||||||
|
'sesskey' => sesskey(),
|
||||||
|
]),
|
||||||
|
new pix_icon('t/copy', '', 'core'),
|
||||||
|
[],
|
||||||
|
false,
|
||||||
|
new lang_string('copy', 'badges')
|
||||||
|
))->add_callback(static function(stdclass $row): bool {
|
||||||
|
$context = self::get_badge_context((int)$row->type, (int)$row->courseid);
|
||||||
|
return has_capability('moodle/badges:createbadge', $context);
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Delete action.
|
||||||
|
$this->add_action((new action(
|
||||||
|
new moodle_url('/badges/index.php', [
|
||||||
|
'delete' => ':id',
|
||||||
|
'type' => ':type',
|
||||||
|
'id' => ':courseid',
|
||||||
|
]),
|
||||||
|
new pix_icon('t/delete', '', 'core'),
|
||||||
|
[],
|
||||||
|
false,
|
||||||
|
new lang_string('delete', 'core')
|
||||||
|
))->add_callback(static function(stdclass $row): bool {
|
||||||
|
$context = self::get_badge_context((int)$row->type, (int)$row->courseid);
|
||||||
|
return has_capability('moodle/badges:deletebadge', $context);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return badge context based on type and courseid
|
||||||
|
*
|
||||||
|
* @param int $type
|
||||||
|
* @param int $courseid
|
||||||
|
* @return \core\context
|
||||||
|
* @throws \coding_exception
|
||||||
|
*/
|
||||||
|
private static function get_badge_context(int $type, int $courseid): \core\context {
|
||||||
|
switch ($type) {
|
||||||
|
case BADGE_TYPE_SITE:
|
||||||
|
return system::instance();
|
||||||
|
case BADGE_TYPE_COURSE:
|
||||||
|
return course::instance($courseid);
|
||||||
|
default:
|
||||||
|
throw new \coding_exception('Wrong context');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CSS classes to add to the row
|
||||||
|
*
|
||||||
|
* @param stdClass $row
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function get_row_class(stdClass $row): string {
|
||||||
|
return ($row->status == BADGE_STATUS_INACTIVE_LOCKED || $row->status == BADGE_STATUS_INACTIVE) ? 'text-muted' : '';
|
||||||
|
}
|
||||||
|
}
|
|
@ -24,32 +24,20 @@
|
||||||
* @author Yuliya Bozhko <yuliya.bozhko@totaralms.com>
|
* @author Yuliya Bozhko <yuliya.bozhko@totaralms.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use core_badges\reportbuilder\local\systemreports\badges;
|
||||||
|
use core_reportbuilder\system_report_factory;
|
||||||
|
|
||||||
require_once(__DIR__ . '/../config.php');
|
require_once(__DIR__ . '/../config.php');
|
||||||
require_once($CFG->libdir . '/badgeslib.php');
|
require_once($CFG->libdir . '/badgeslib.php');
|
||||||
|
|
||||||
$type = required_param('type', PARAM_INT);
|
$type = required_param('type', PARAM_INT);
|
||||||
$courseid = optional_param('id', 0, PARAM_INT);
|
$courseid = optional_param('id', 0, PARAM_INT);
|
||||||
$page = optional_param('page', 0, PARAM_INT);
|
|
||||||
$deactivate = optional_param('lock', 0, PARAM_INT);
|
$deactivate = optional_param('lock', 0, PARAM_INT);
|
||||||
$sortby = optional_param('sort', 'name', PARAM_ALPHA);
|
|
||||||
$sorthow = optional_param('dir', 'ASC', PARAM_ALPHA);
|
|
||||||
$confirm = optional_param('confirm', false, PARAM_BOOL);
|
$confirm = optional_param('confirm', false, PARAM_BOOL);
|
||||||
$delete = optional_param('delete', 0, PARAM_INT);
|
$delete = optional_param('delete', 0, PARAM_INT);
|
||||||
$archive = optional_param('archive', 0, PARAM_INT);
|
$archive = optional_param('archive', 0, PARAM_INT);
|
||||||
$msg = optional_param('msg', '', PARAM_TEXT);
|
$msg = optional_param('msg', '', PARAM_TEXT);
|
||||||
|
|
||||||
if (!in_array($sortby, array('name', 'status'))) {
|
|
||||||
$sortby = 'name';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($sorthow != 'ASC' and $sorthow != 'DESC') {
|
|
||||||
$sorthow = 'ASC';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($page < 0) {
|
|
||||||
$page = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
require_login();
|
require_login();
|
||||||
|
|
||||||
if (empty($CFG->enablebadges)) {
|
if (empty($CFG->enablebadges)) {
|
||||||
|
@ -61,13 +49,10 @@ if (empty($CFG->badges_allowcoursebadges) && ($type == BADGE_TYPE_COURSE)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$err = '';
|
$err = '';
|
||||||
$urlparams = array('sort' => $sortby, 'dir' => $sorthow, 'page' => $page);
|
$urlparams = ['type' => $type];
|
||||||
|
|
||||||
if ($course = $DB->get_record('course', array('id' => $courseid))) {
|
if ($course = $DB->get_record('course', ['id' => $courseid])) {
|
||||||
$urlparams['type'] = $type;
|
|
||||||
$urlparams['id'] = $course->id;
|
$urlparams['id'] = $course->id;
|
||||||
} else {
|
|
||||||
$urlparams['type'] = $type;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$hdr = get_string('managebadges', 'badges');
|
$hdr = get_string('managebadges', 'badges');
|
||||||
|
@ -166,7 +151,6 @@ if ($type == BADGE_TYPE_SITE) {
|
||||||
echo $OUTPUT->box('', 'notifyproblem hide', 'check_connection');
|
echo $OUTPUT->box('', 'notifyproblem hide', 'check_connection');
|
||||||
|
|
||||||
$totalcount = count(badges_get_badges($type, $courseid, '', '' , 0, 0));
|
$totalcount = count(badges_get_badges($type, $courseid, '', '' , 0, 0));
|
||||||
$records = badges_get_badges($type, $courseid, $sortby, $sorthow, $page, BADGE_PERPAGE);
|
|
||||||
|
|
||||||
if ($totalcount) {
|
if ($totalcount) {
|
||||||
if ($course && $course->startdate > time()) {
|
if ($course && $course->startdate > time()) {
|
||||||
|
@ -181,14 +165,8 @@ if ($totalcount) {
|
||||||
echo $OUTPUT->notification(get_string($msg, 'badges'), 'notifysuccess');
|
echo $OUTPUT->notification(get_string($msg, 'badges'), 'notifysuccess');
|
||||||
}
|
}
|
||||||
|
|
||||||
$badges = new \core_badges\output\badge_management($records);
|
$report = system_report_factory::create(badges::class, $PAGE->context);
|
||||||
$badges->sort = $sortby;
|
echo $report->output();
|
||||||
$badges->dir = $sorthow;
|
|
||||||
$badges->page = $page;
|
|
||||||
$badges->perpage = BADGE_PERPAGE;
|
|
||||||
$badges->totalcount = $totalcount;
|
|
||||||
|
|
||||||
echo $output->render($badges);
|
|
||||||
} else {
|
} else {
|
||||||
echo $output->notification(get_string('nobadges', 'badges'), 'info');
|
echo $output->notification(get_string('nobadges', 'badges'), 'info');
|
||||||
}
|
}
|
||||||
|
|
|
@ -265,8 +265,16 @@ class core_badges_renderer extends plugin_renderer_base {
|
||||||
return html_writer::div($display, null, array('id' => 'badge-overview'));
|
return html_writer::div($display, null, array('id' => 'badge-overview'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints action icons for the badge.
|
/**
|
||||||
|
* Prints action icons for the badge.
|
||||||
|
*
|
||||||
|
* @deprecated sinde Moodle 4.3
|
||||||
|
* @param \core_badges\badge $badge
|
||||||
|
* @param \context $context
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
public function print_badge_table_actions($badge, $context) {
|
public function print_badge_table_actions($badge, $context) {
|
||||||
|
debugging("print_badge_table_actions() is deprecated.", DEBUG_DEVELOPER);
|
||||||
$actions = "";
|
$actions = "";
|
||||||
|
|
||||||
if (has_capability('moodle/badges:configuredetails', $context) && $badge->has_criteria()) {
|
if (has_capability('moodle/badges:configuredetails', $context) && $badge->has_criteria()) {
|
||||||
|
@ -481,10 +489,12 @@ class core_badges_renderer extends plugin_renderer_base {
|
||||||
/**
|
/**
|
||||||
* Render a table of badges.
|
* Render a table of badges.
|
||||||
*
|
*
|
||||||
|
* @deprecated since Moodle 4.3
|
||||||
* @param \core_badges\output\badge_management $badges
|
* @param \core_badges\output\badge_management $badges
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function render_badge_management(\core_badges\output\badge_management $badges) {
|
protected function render_badge_management(\core_badges\output\badge_management $badges) {
|
||||||
|
debugging("render_badge_management() is deprecated.", DEBUG_DEVELOPER);
|
||||||
$paging = new paging_bar($badges->totalcount, $badges->page, $badges->perpage, $this->page->url, 'page');
|
$paging = new paging_bar($badges->totalcount, $badges->page, $badges->perpage, $this->page->url, 'page');
|
||||||
|
|
||||||
// New badge button.
|
// New badge button.
|
||||||
|
|
|
@ -85,7 +85,7 @@ Feature: Test tertiary navigation as various users
|
||||||
When I am on the "C1" "Course" page logged in as "admin"
|
When I am on the "C1" "Course" page logged in as "admin"
|
||||||
And I navigate to "Badges" in current page administration
|
And I navigate to "Badges" in current page administration
|
||||||
And I click on "Manage badges" "button"
|
And I click on "Manage badges" "button"
|
||||||
And I click on "Enable access" "link" in the "Testing course badge" "table_row"
|
And I press "Enable access" action in the "Testing course badge" report row
|
||||||
And I press "Continue"
|
And I press "Continue"
|
||||||
And I log out
|
And I log out
|
||||||
# Now student should see the Badges link.
|
# Now student should see the Badges link.
|
||||||
|
|
|
@ -25,7 +25,7 @@ Feature: Award badges based on cohort
|
||||||
| image | badges/tests/behat/badge.png |
|
| image | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I set the field "id_cohort_cohorts" to "One Cohort"
|
And I set the field "id_cohort_cohorts" to "One Cohort"
|
||||||
|
@ -62,7 +62,7 @@ Feature: Award badges based on cohort
|
||||||
| image | badges/tests/behat/badge.png |
|
| image | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I expand all fieldsets
|
And I expand all fieldsets
|
||||||
|
@ -104,7 +104,7 @@ Feature: Award badges based on cohort
|
||||||
| image | badges/tests/behat/badge.png |
|
| image | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I set the field "id_cohort_cohorts" to "One Cohort"
|
And I set the field "id_cohort_cohorts" to "One Cohort"
|
||||||
|
@ -142,7 +142,7 @@ Feature: Award badges based on cohort
|
||||||
| image | badges/tests/behat/badge.png |
|
| image | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I set the field "id_cohort_cohorts" to "One Cohort"
|
And I set the field "id_cohort_cohorts" to "One Cohort"
|
||||||
|
@ -195,7 +195,7 @@ Feature: Award badges based on cohort
|
||||||
| image | badges/tests/behat/badge.png |
|
| image | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I set the field "id_cohort_cohorts" to "One Cohort"
|
And I set the field "id_cohort_cohorts" to "One Cohort"
|
||||||
|
@ -254,7 +254,7 @@ Feature: Award badges based on cohort
|
||||||
| image | badges/tests/behat/badge.png |
|
| image | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I set the field "id_cohort_cohorts" to "One Cohort"
|
And I set the field "id_cohort_cohorts" to "One Cohort"
|
||||||
|
@ -313,7 +313,7 @@ Feature: Award badges based on cohort
|
||||||
| image | badges/tests/behat/badge.png |
|
| image | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I expand all fieldsets
|
And I expand all fieldsets
|
||||||
|
@ -372,7 +372,7 @@ Feature: Award badges based on cohort
|
||||||
| Site Badge 2 | 0 | Site badge description | badges/tests/behat/badge.png |
|
| Site Badge 2 | 0 | Site badge description | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge 1" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I set the field "id_cohort_cohorts" to "One Cohort"
|
And I set the field "id_cohort_cohorts" to "One Cohort"
|
||||||
|
@ -381,7 +381,7 @@ Feature: Award badges based on cohort
|
||||||
When I press "Continue"
|
When I press "Continue"
|
||||||
And I should see "Recipients (1)"
|
And I should see "Recipients (1)"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge 2" "table_row"
|
And I press "Edit" action in the "Site Badge 2" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I set the field "id_cohort_cohorts" to "Two Cohort"
|
And I set the field "id_cohort_cohorts" to "Two Cohort"
|
||||||
|
@ -429,7 +429,7 @@ Feature: Award badges based on cohort
|
||||||
| Site Badge 2 | 0 | Site badge description | badges/tests/behat/badge.png |
|
| Site Badge 2 | 0 | Site badge description | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge 1" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I expand all fieldsets
|
And I expand all fieldsets
|
||||||
|
@ -440,7 +440,7 @@ Feature: Award badges based on cohort
|
||||||
When I press "Continue"
|
When I press "Continue"
|
||||||
And I should see "Recipients (1)"
|
And I should see "Recipients (1)"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge 2" "table_row"
|
And I press "Edit" action in the "Site Badge 2" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Cohort membership"
|
And I set the field "type" to "Cohort membership"
|
||||||
And I expand all fieldsets
|
And I expand all fieldsets
|
||||||
|
|
|
@ -94,7 +94,7 @@ Feature: Award badges based on competency completion
|
||||||
And I click on "Add" "button" in the "Competency picker" "dialogue"
|
And I click on "Add" "button" in the "Competency picker" "dialogue"
|
||||||
# Add a badge to the site
|
# Add a badge to the site
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
# Set the competency as a criteria for the badge
|
# Set the competency as a criteria for the badge
|
||||||
And I set the field "type" to "Competencies"
|
And I set the field "type" to "Competencies"
|
||||||
|
@ -147,7 +147,7 @@ Feature: Award badges based on competency completion
|
||||||
And I click on "Add" "button" in the "Competency picker" "dialogue"
|
And I click on "Add" "button" in the "Competency picker" "dialogue"
|
||||||
# Add a badge to the site
|
# Add a badge to the site
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
# Set the competency as a criteria for the badge
|
# Set the competency as a criteria for the badge
|
||||||
And I set the field "type" to "Competencies"
|
And I set the field "type" to "Competencies"
|
||||||
|
|
|
@ -16,7 +16,7 @@ Feature: Award badges based on user profile field
|
||||||
| image | badges/tests/behat/badge.png |
|
| image | badges/tests/behat/badge.png |
|
||||||
And I log in as "admin"
|
And I log in as "admin"
|
||||||
And I navigate to "Badges > Manage badges" in site administration
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
And I click on "Edit" "link" in the "Site Badge" "table_row"
|
And I press "Edit" action in the "Site Badge" report row
|
||||||
And I select "Criteria" from the "jump" singleselect
|
And I select "Criteria" from the "jump" singleselect
|
||||||
And I set the field "type" to "Profile completion"
|
And I set the field "type" to "Profile completion"
|
||||||
And I set the field "id_field_picture" to "1"
|
And I set the field "id_field_picture" to "1"
|
||||||
|
|
91
badges/tests/behat/manage_badges.feature
Normal file
91
badges/tests/behat/manage_badges.feature
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
@core @core_badges @javascript
|
||||||
|
Feature: Manage badges
|
||||||
|
In order to manage badges in the system
|
||||||
|
As an admin
|
||||||
|
I need to be able to edit, copy, enable/disable access, delete and award badges
|
||||||
|
|
||||||
|
Background:
|
||||||
|
Given the following "core_badges > Badge" exists:
|
||||||
|
| name | Badge #1 |
|
||||||
|
| status | 0 |
|
||||||
|
| version | 1 |
|
||||||
|
| language | en |
|
||||||
|
| description | Test badge description |
|
||||||
|
| image | badges/tests/behat/badge.png |
|
||||||
|
| imageauthorurl | http://author.example.com |
|
||||||
|
| imagecaption | Test caption image |
|
||||||
|
|
||||||
|
Scenario: Copy a badge
|
||||||
|
Given I log in as "admin"
|
||||||
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
|
And I press "Copy" action in the "Badge #1" report row
|
||||||
|
And I should see "Copy of Badge #1"
|
||||||
|
And I press "Save changes"
|
||||||
|
And I click on "Back" "button"
|
||||||
|
Then the following should exist in the "reportbuilder-table" table:
|
||||||
|
| Name | Badge status |
|
||||||
|
| Badge #1 | Not available |
|
||||||
|
| Copy of Badge #1 | Not available |
|
||||||
|
|
||||||
|
Scenario: Edit a badge
|
||||||
|
Given I log in as "admin"
|
||||||
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
|
And I press "Edit" action in the "Badge #1" report row
|
||||||
|
And I set the field "Name" to "New Badge #1"
|
||||||
|
And I press "Save changes"
|
||||||
|
And I click on "Back" "button"
|
||||||
|
Then the following should exist in the "reportbuilder-table" table:
|
||||||
|
| Name | Badge status |
|
||||||
|
| New Badge #1 | Not available |
|
||||||
|
|
||||||
|
Scenario: Delete a badge
|
||||||
|
Given I log in as "admin"
|
||||||
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
|
And I press "Delete" action in the "Badge #1" report row
|
||||||
|
And I press "Delete and remove existing issued badges"
|
||||||
|
Then I should see "There are currently no badges available for users to earn"
|
||||||
|
|
||||||
|
Scenario: Enable and disable access to a badge
|
||||||
|
Given I log in as "admin"
|
||||||
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
|
And I press "Edit" action in the "Badge #1" report row
|
||||||
|
And I select "Criteria" from the "jump" singleselect
|
||||||
|
And I set the field "type" to "Manual issue by role"
|
||||||
|
And I set the field "Manager" to "1"
|
||||||
|
And I press "Save"
|
||||||
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
|
And I open the action menu in "Badge #1" "table_row"
|
||||||
|
And I choose "Enable access" in the open action menu
|
||||||
|
And I should see "Changes in badge access"
|
||||||
|
And I press "Continue"
|
||||||
|
And I should see "Access to the badges was successfully enabled"
|
||||||
|
Then the following should exist in the "reportbuilder-table" table:
|
||||||
|
| Name | Badge status |
|
||||||
|
| Badge #1 | Available |
|
||||||
|
And I open the action menu in "Badge #1" "table_row"
|
||||||
|
And I choose "Disable access" in the open action menu
|
||||||
|
And I should see "Access to the badges was successfully disabled"
|
||||||
|
And the following should exist in the "reportbuilder-table" table:
|
||||||
|
| Name | Badge status |
|
||||||
|
| Badge #1 | Not available |
|
||||||
|
|
||||||
|
Scenario: Award a badge
|
||||||
|
Given I log in as "admin"
|
||||||
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
|
And I press "Edit" action in the "Badge #1" report row
|
||||||
|
And I select "Criteria" from the "jump" singleselect
|
||||||
|
And I set the field "type" to "Manual issue by role"
|
||||||
|
And I set the field "Manager" to "1"
|
||||||
|
And I press "Save"
|
||||||
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
|
And I open the action menu in "Badge #1" "table_row"
|
||||||
|
And I choose "Enable access" in the open action menu
|
||||||
|
And I press "Continue"
|
||||||
|
And I open the action menu in "Badge #1" "table_row"
|
||||||
|
And I choose "Award badge" in the open action menu
|
||||||
|
And I set the field "potentialrecipients[]" to "Admin User (moodle@example.com)"
|
||||||
|
And I press "Award badge"
|
||||||
|
And I navigate to "Badges > Manage badges" in site administration
|
||||||
|
And the following should exist in the "reportbuilder-table" table:
|
||||||
|
| Name | Badge status | Recipients |
|
||||||
|
| Badge #1 | Available | 1 |
|
|
@ -38,7 +38,7 @@ Feature: Manage badges is not shown when there are no existing badges.
|
||||||
# Badge is not enabled so is not listed.
|
# Badge is not enabled so is not listed.
|
||||||
And I should not see "Testing course badge"
|
And I should not see "Testing course badge"
|
||||||
And I click on "Manage badges" "button"
|
And I click on "Manage badges" "button"
|
||||||
And I click on "Edit" "link" in the "Testing course badge" "table_row"
|
And I press "Edit" action in the "Testing course badge" report row
|
||||||
And I click on "Add criteria" "button"
|
And I click on "Add criteria" "button"
|
||||||
And I set the field "type" to "Manual issue by role"
|
And I set the field "type" to "Manual issue by role"
|
||||||
And I expand all fieldsets
|
And I expand all fieldsets
|
||||||
|
@ -51,7 +51,7 @@ Feature: Manage badges is not shown when there are no existing badges.
|
||||||
# Badge is not enabled yet so is not listed.
|
# Badge is not enabled yet so is not listed.
|
||||||
And I should not see "Testing course badge"
|
And I should not see "Testing course badge"
|
||||||
And I click on "Manage badges" "button"
|
And I click on "Manage badges" "button"
|
||||||
And I click on "Enable access" "link" in the "Testing course badge" "table_row"
|
And I press "Enable access" action in the "Testing course badge" report row
|
||||||
And I click on "Continue" "button"
|
And I click on "Continue" "button"
|
||||||
And I should see "Testing course badge"
|
And I should see "Testing course badge"
|
||||||
And I click on "Back" "button"
|
And I click on "Back" "button"
|
||||||
|
@ -91,7 +91,7 @@ Feature: Manage badges is not shown when there are no existing badges.
|
||||||
And I am on the "C1" "Course" page logged in as "admin"
|
And I am on the "C1" "Course" page logged in as "admin"
|
||||||
And I navigate to "Badges" in current page administration
|
And I navigate to "Badges" in current page administration
|
||||||
And I click on "Manage badges" "button"
|
And I click on "Manage badges" "button"
|
||||||
And I click on "Enable access" "link" in the "Testing course badge" "table_row"
|
And I press "Enable access" action in the "Testing course badge" report row
|
||||||
And I press "Continue"
|
And I press "Continue"
|
||||||
And I log out
|
And I log out
|
||||||
# Now student should see the Badges link.
|
# Now student should see the Badges link.
|
||||||
|
|
|
@ -124,6 +124,7 @@ class badges_test extends core_reportbuilder_testcase {
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:name', 'sortenabled' => 1]);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:name', 'sortenabled' => 1]);
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:fullname', 'sortenabled' => 1]);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:fullname', 'sortenabled' => 1]);
|
||||||
|
|
||||||
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:namewithlink']);
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:criteria']);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:criteria']);
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:image']);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:image']);
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:language']);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:language']);
|
||||||
|
@ -141,11 +142,15 @@ class badges_test extends core_reportbuilder_testcase {
|
||||||
$content = $this->get_custom_report_content($report->get('id'));
|
$content = $this->get_custom_report_content($report->get('id'));
|
||||||
$this->assertCount(3, $content);
|
$this->assertCount(3, $content);
|
||||||
|
|
||||||
|
$expectedbadgeonelink = \html_writer::link(new \moodle_url('/badges/overview.php',
|
||||||
|
['id' => $badgeone->id]), ($badgeone->name));
|
||||||
|
|
||||||
// First badge, issued to user one.
|
// First badge, issued to user one.
|
||||||
[$badgename, $fullname, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires, $visible, $coursename]
|
[$badgename, $fullname, $namewithlink, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires,
|
||||||
= array_values($content[0]);
|
$visible, $coursename] = array_values($content[0]);
|
||||||
$this->assertEquals($badgeone->name, $badgename);
|
$this->assertEquals($badgeone->name, $badgename);
|
||||||
$this->assertEquals(fullname($user1), $fullname);
|
$this->assertEquals(fullname($user1), $fullname);
|
||||||
|
$this->assertEquals($expectedbadgeonelink, $namewithlink);
|
||||||
$this->assertStringContainsString('Awarded by: Manager', $criteria);
|
$this->assertStringContainsString('Awarded by: Manager', $criteria);
|
||||||
$this->assertStringContainsString('Image caption', $image);
|
$this->assertStringContainsString('Image caption', $image);
|
||||||
$this->assertEquals('German', $language);
|
$this->assertEquals('German', $language);
|
||||||
|
@ -158,10 +163,11 @@ class badges_test extends core_reportbuilder_testcase {
|
||||||
$this->assertEquals('PHPUnit test site', $coursename);
|
$this->assertEquals('PHPUnit test site', $coursename);
|
||||||
|
|
||||||
// First badge, issued to user two.
|
// First badge, issued to user two.
|
||||||
[$badgename, $fullname, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires, $visible, $coursename]
|
[$badgename, $fullname, $namewithlink, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires,
|
||||||
= array_values($content[1]);
|
$visible, $coursename] = array_values($content[1]);
|
||||||
$this->assertEquals($badgeone->name, $badgename);
|
$this->assertEquals($badgeone->name, $badgename);
|
||||||
$this->assertEquals(fullname($user2), $fullname);
|
$this->assertEquals(fullname($user2), $fullname);
|
||||||
|
$this->assertEquals($expectedbadgeonelink, $namewithlink);
|
||||||
$this->assertStringContainsString('Awarded by: Manager', $criteria);
|
$this->assertStringContainsString('Awarded by: Manager', $criteria);
|
||||||
$this->assertStringContainsString('Image caption', $image);
|
$this->assertStringContainsString('Image caption', $image);
|
||||||
$this->assertEquals('German', $language);
|
$this->assertEquals('German', $language);
|
||||||
|
@ -173,11 +179,15 @@ class badges_test extends core_reportbuilder_testcase {
|
||||||
$this->assertEquals('Yes', $visible);
|
$this->assertEquals('Yes', $visible);
|
||||||
$this->assertEquals('PHPUnit test site', $coursename);
|
$this->assertEquals('PHPUnit test site', $coursename);
|
||||||
|
|
||||||
|
$expectedbadgetwolink = \html_writer::link(new \moodle_url('/badges/overview.php',
|
||||||
|
['id' => $badgetwo->id]), ($badgetwo->name));
|
||||||
|
|
||||||
// Course badge, not issues to any users.
|
// Course badge, not issues to any users.
|
||||||
[$badgename, $fullname, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires, $visible, $coursename]
|
[$badgename, $fullname, $namewithlink, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires,
|
||||||
= array_values($content[2]);
|
$visible, $coursename] = array_values($content[2]);
|
||||||
$this->assertEquals($badgetwo->name, $badgename);
|
$this->assertEquals($badgetwo->name, $badgename);
|
||||||
$this->assertEmpty($fullname);
|
$this->assertEmpty($fullname);
|
||||||
|
$this->assertEquals($expectedbadgetwolink, $namewithlink);
|
||||||
$this->assertEquals('Criteria for this badge have not been set up yet.', $criteria);
|
$this->assertEquals('Criteria for this badge have not been set up yet.', $criteria);
|
||||||
$this->assertStringContainsString('Image caption', $image);
|
$this->assertStringContainsString('Image caption', $image);
|
||||||
$this->assertEquals('English', $language);
|
$this->assertEquals('English', $language);
|
||||||
|
|
|
@ -122,6 +122,7 @@ class users_test extends core_reportbuilder_testcase {
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:fullname', 'sortenabled' => 1]);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:fullname', 'sortenabled' => 1]);
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:name', 'sortenabled' => 1]);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:name', 'sortenabled' => 1]);
|
||||||
|
|
||||||
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:namewithlink']);
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:criteria']);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:criteria']);
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:image']);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:image']);
|
||||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:language']);
|
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:language']);
|
||||||
|
@ -155,11 +156,15 @@ class users_test extends core_reportbuilder_testcase {
|
||||||
$this->assertEmpty($visible);
|
$this->assertEmpty($visible);
|
||||||
$this->assertEmpty($coursename);
|
$this->assertEmpty($coursename);
|
||||||
|
|
||||||
|
$expectedbadgesitelink = \html_writer::link(new \moodle_url('/badges/overview.php',
|
||||||
|
['id' => $badgesite->id]), ($badgesite->name));
|
||||||
|
|
||||||
// User issued site badge.
|
// User issued site badge.
|
||||||
[$fullname, $badgename, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires, $visible, $coursename]
|
[$fullname, $badgename, $namewithlink, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires,
|
||||||
= array_values($content[1]);
|
$visible, $coursename] = array_values($content[1]);
|
||||||
$this->assertEquals(fullname($user), $fullname);
|
$this->assertEquals(fullname($user), $fullname);
|
||||||
$this->assertEquals($badgesite->name, $badgename);
|
$this->assertEquals($badgesite->name, $badgename);
|
||||||
|
$this->assertEquals($expectedbadgesitelink, $namewithlink);
|
||||||
$this->assertStringContainsString('Awarded by: Manager', $criteria);
|
$this->assertStringContainsString('Awarded by: Manager', $criteria);
|
||||||
$this->assertStringContainsString('Image caption', $image);
|
$this->assertStringContainsString('Image caption', $image);
|
||||||
$this->assertEquals('German', $language);
|
$this->assertEquals('German', $language);
|
||||||
|
@ -171,11 +176,15 @@ class users_test extends core_reportbuilder_testcase {
|
||||||
$this->assertEquals('Yes', $visible);
|
$this->assertEquals('Yes', $visible);
|
||||||
$this->assertEquals('PHPUnit test site', $coursename);
|
$this->assertEquals('PHPUnit test site', $coursename);
|
||||||
|
|
||||||
// User issued site badge.
|
$expectedbadgecourselink = \html_writer::link(new \moodle_url('/badges/overview.php',
|
||||||
[$fullname, $badgename, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires, $visible, $coursename]
|
['id' => $badgecourse->id]), ($badgecourse->name));
|
||||||
= array_values($content[2]);
|
|
||||||
|
// User issued course badge.
|
||||||
|
[$fullname, $badgename, $namewithlink, $criteria, $image, $language, $version, $status, $expiry, $tag, $expires,
|
||||||
|
$visible, $coursename] = array_values($content[2]);
|
||||||
$this->assertEquals(fullname($user), $fullname);
|
$this->assertEquals(fullname($user), $fullname);
|
||||||
$this->assertEquals($badgecourse->name, $badgename);
|
$this->assertEquals($badgecourse->name, $badgename);
|
||||||
|
$this->assertEquals($expectedbadgecourselink, $namewithlink);
|
||||||
$this->assertEquals('Criteria for this badge have not been set up yet.', $criteria);
|
$this->assertEquals('Criteria for this badge have not been set up yet.', $criteria);
|
||||||
$this->assertStringContainsString('Image caption', $image);
|
$this->assertStringContainsString('Image caption', $image);
|
||||||
$this->assertEquals('English', $language);
|
$this->assertEquals('English', $language);
|
||||||
|
|
|
@ -7,6 +7,8 @@ information provided here is intended especially for developers.
|
||||||
- `badges_check_backpack_accessibility`
|
- `badges_check_backpack_accessibility`
|
||||||
- `badges_setup_backpack_js`
|
- `badges_setup_backpack_js`
|
||||||
- `badges_local_backpack_js`
|
- `badges_local_backpack_js`
|
||||||
|
* Functions render_badge_management and print_badge_table_actions have been deprecated when converting the
|
||||||
|
section "Manage badges" to a Report Builder system report.
|
||||||
|
|
||||||
=== 4.0 ===
|
=== 4.0 ===
|
||||||
* Function print_badge_tabs has been deprecated in favour of manage_badge_action_bar instead
|
* Function print_badge_tabs has been deprecated in favour of manage_badge_action_bar instead
|
||||||
|
|
|
@ -193,6 +193,7 @@ $string['connected'] = 'Connected';
|
||||||
$string['connecting'] = 'Connecting...';
|
$string['connecting'] = 'Connecting...';
|
||||||
$string['contact'] = 'Contact';
|
$string['contact'] = 'Contact';
|
||||||
$string['contact_help'] = 'An email address associated with the badge issuer.';
|
$string['contact_help'] = 'An email address associated with the badge issuer.';
|
||||||
|
$string['copy'] = 'Copy';
|
||||||
$string['copyof'] = 'Copy of {$a}';
|
$string['copyof'] = 'Copy of {$a}';
|
||||||
$string['course'] = 'Course: {$a}';
|
$string['course'] = 'Course: {$a}';
|
||||||
$string['coursebadgesdisabled'] = 'Course badges are not enabled on this site.';
|
$string['coursebadgesdisabled'] = 'Course badges are not enabled on this site.';
|
||||||
|
@ -416,6 +417,7 @@ $string['month'] = 'Month(s)';
|
||||||
$string['moredetails'] = 'More details';
|
$string['moredetails'] = 'More details';
|
||||||
$string['mybadges'] = 'My badges';
|
$string['mybadges'] = 'My badges';
|
||||||
$string['mybackpack'] = 'My backpack settings';
|
$string['mybackpack'] = 'My backpack settings';
|
||||||
|
$string['namewithlink'] = 'Name with link';
|
||||||
$string['never'] = 'Never';
|
$string['never'] = 'Never';
|
||||||
$string['newbackpack'] = 'Add a new backpack';
|
$string['newbackpack'] = 'Add a new backpack';
|
||||||
$string['newbadge'] = 'Add a new badge';
|
$string['newbadge'] = 'Add a new badge';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue