mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 16:32:18 +02:00
MDL-74342 reportbuilder: allow audiences to be immediately renamed.
Return rendered editable component in response to form submission so that the audience card can be updated straight away.
This commit is contained in:
parent
efda17d3b0
commit
a896ea6473
2
reportbuilder/amd/build/audience.min.js
vendored
2
reportbuilder/amd/build/audience.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -6,6 +6,6 @@ define("core_reportbuilder/local/selectors",["exports"],(function(_exports){Obje
|
||||
* @copyright 2021 Paul Holden <paulh@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
const SELECTORS={regions:{report:'[data-region="core_reportbuilder/report"]',reportTable:'[data-region="reportbuilder-table"]',columnHeader:'[data-region="column-header"]',filterButtonLabel:'[data-region="filter-button-label"]',filtersForm:'[data-region="filters-form"]',sidebarMenu:'[data-region="sidebar-menu"]',sidebarCard:'[data-region="sidebar-card"]',settingsConditions:'[data-region="settings-conditions"]',activeConditions:'[data-region="active-conditions"]',activeCondition:'[data-region="active-condition"]',settingsFilters:'[data-region="settings-filters"]',activeFilters:'[data-region="active-filters"]',activeFilter:'[data-region="active-filter"]',settingsSorting:'[data-region="settings-sorting"]',audiencesContainer:'[data-region="audiences"]',audienceFormContainer:'[data-region="audience-form-container"]',audienceCard:'[data-region="audience-card"]',audienceForm:'[data-region="audience-form"]',audienceEmptyMessage:"[data-region=no-instances-message]",audienceDescription:"[data-region=audience-description]",audienceNotSavedLabel:"[data-region=audience-not-saved]",settingsCardView:'[data-region="settings-cardview"]'},actions:{reportActionPopup:'[data-action="report-action-popup"]',reportCreate:'[data-action="report-create"]',reportEdit:'[data-action="report-edit"]',reportDelete:'[data-action="report-delete"]',reportAddColumn:'[data-action="report-add-column"]',reportRemoveColumn:'[data-action="report-remove-column"]',reportAddCondition:'[data-action="report-add-condition"]',reportRemoveCondition:'[data-action="report-remove-condition"]',reportAddFilter:'[data-action="report-add-filter"]',reportRemoveFilter:'[data-action="report-remove-filter"]',reportToggleColumnSort:'[data-action="report-toggle-column-sorting"]',reportToggleColumnSortDirection:'[data-action="report-toggle-sort-direction"]',sidebarSearch:'[data-action="sidebar-search"]',toggleEditPreview:'[data-action="toggle-edit-preview"]',audienceAdd:'[data-action="add-audience"]',audienceEdit:'[data-action="edit-audience"]',audienceDelete:'[data-action="delete-audience"]',toggleCardView:'[data-action="toggle-card"]',scheduleCreate:'[data-action="schedule-create"]',scheduleToggle:'[data-action="schedule-toggle"]',scheduleEdit:'[data-action="schedule-edit"]',scheduleSend:'[data-action="schedule-send"]',scheduleDelete:'[data-action="schedule-delete"]'},forReport:reportId=>"".concat(SELECTORS.regions.report,'[data-report-id="').concat(reportId,'"]')};var _default=SELECTORS;return _exports.default=_default,_exports.default}));
|
||||
const SELECTORS={regions:{report:'[data-region="core_reportbuilder/report"]',reportTable:'[data-region="reportbuilder-table"]',columnHeader:'[data-region="column-header"]',filterButtonLabel:'[data-region="filter-button-label"]',filtersForm:'[data-region="filters-form"]',sidebarMenu:'[data-region="sidebar-menu"]',sidebarCard:'[data-region="sidebar-card"]',settingsConditions:'[data-region="settings-conditions"]',activeConditions:'[data-region="active-conditions"]',activeCondition:'[data-region="active-condition"]',settingsFilters:'[data-region="settings-filters"]',activeFilters:'[data-region="active-filters"]',activeFilter:'[data-region="active-filter"]',settingsSorting:'[data-region="settings-sorting"]',audiencesContainer:'[data-region="audiences"]',audienceFormContainer:'[data-region="audience-form-container"]',audienceCard:'[data-region="audience-card"]',audienceHeading:'[data-region="audience-heading"]',audienceForm:'[data-region="audience-form"]',audienceEmptyMessage:"[data-region=no-instances-message]",audienceDescription:"[data-region=audience-description]",audienceNotSavedLabel:"[data-region=audience-not-saved]",settingsCardView:'[data-region="settings-cardview"]'},actions:{reportActionPopup:'[data-action="report-action-popup"]',reportCreate:'[data-action="report-create"]',reportEdit:'[data-action="report-edit"]',reportDelete:'[data-action="report-delete"]',reportAddColumn:'[data-action="report-add-column"]',reportRemoveColumn:'[data-action="report-remove-column"]',reportAddCondition:'[data-action="report-add-condition"]',reportRemoveCondition:'[data-action="report-remove-condition"]',reportAddFilter:'[data-action="report-add-filter"]',reportRemoveFilter:'[data-action="report-remove-filter"]',reportToggleColumnSort:'[data-action="report-toggle-column-sorting"]',reportToggleColumnSortDirection:'[data-action="report-toggle-sort-direction"]',sidebarSearch:'[data-action="sidebar-search"]',toggleEditPreview:'[data-action="toggle-edit-preview"]',audienceAdd:'[data-action="add-audience"]',audienceEdit:'[data-action="edit-audience"]',audienceDelete:'[data-action="delete-audience"]',toggleCardView:'[data-action="toggle-card"]',scheduleCreate:'[data-action="schedule-create"]',scheduleToggle:'[data-action="schedule-toggle"]',scheduleEdit:'[data-action="schedule-edit"]',scheduleSend:'[data-action="schedule-send"]',scheduleDelete:'[data-action="schedule-delete"]'},forReport:reportId=>"".concat(SELECTORS.regions.report,'[data-report-id="').concat(reportId,'"]')};var _default=SELECTORS;return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=selectors.min.js.map
|
File diff suppressed because one or more lines are too long
@ -23,6 +23,7 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
import 'core/inplace_editable';
|
||||
import Templates from 'core/templates';
|
||||
import Notification from 'core/notification';
|
||||
import Pending from 'core/pending';
|
||||
@ -118,9 +119,12 @@ const initAudienceCardForm = audienceCard => {
|
||||
|
||||
// After submitting the form, update the card instance and description properties.
|
||||
audienceForm.addEventListener(audienceForm.events.FORM_SUBMITTED, data => {
|
||||
const audienceHeading = audienceCard.querySelector(reportSelectors.regions.audienceHeading);
|
||||
const audienceDescription = audienceCard.querySelector(reportSelectors.regions.audienceDescription);
|
||||
|
||||
audienceCard.dataset.instanceid = data.detail.instanceid;
|
||||
|
||||
audienceHeading.innerHTML = data.detail.heading;
|
||||
audienceDescription.innerHTML = data.detail.description;
|
||||
|
||||
closeAudienceCardForm(audienceCard);
|
||||
|
@ -48,6 +48,7 @@ const SELECTORS = {
|
||||
audiencesContainer: '[data-region="audiences"]',
|
||||
audienceFormContainer: '[data-region="audience-form-container"]',
|
||||
audienceCard: '[data-region="audience-card"]',
|
||||
audienceHeading: '[data-region="audience-heading"]',
|
||||
audienceForm: '[data-region="audience-form"]',
|
||||
audienceEmptyMessage: '[data-region=no-instances-message]',
|
||||
audienceDescription: '[data-region=audience-description]',
|
||||
|
@ -22,9 +22,9 @@ use context;
|
||||
use context_system;
|
||||
use core_form\dynamic_form;
|
||||
use core_reportbuilder\local\audiences\base;
|
||||
use core_reportbuilder\output\audience_heading_editable;
|
||||
use core_reportbuilder\manager;
|
||||
use core_reportbuilder\permission;
|
||||
use core_reportbuilder\report_access_exception;
|
||||
use moodle_exception;
|
||||
use moodle_url;
|
||||
use stdClass;
|
||||
@ -116,6 +116,8 @@ class audience extends dynamic_form {
|
||||
* Process the form submission, used if form was submitted via AJAX
|
||||
*/
|
||||
public function process_dynamic_submission() {
|
||||
global $PAGE;
|
||||
|
||||
$formdata = $this->get_data();
|
||||
$audience = $this->get_audience();
|
||||
|
||||
@ -131,7 +133,15 @@ class audience extends dynamic_form {
|
||||
// Editing audience.
|
||||
$audience->update_configdata($configdata, true);
|
||||
}
|
||||
return ['instanceid' => $audience->get_persistent()->get('id'), 'description' => $audience->get_description()];
|
||||
|
||||
$persistent = $audience->get_persistent();
|
||||
$editable = new audience_heading_editable(0, $persistent);
|
||||
|
||||
return [
|
||||
'instanceid' => $persistent->get('id'),
|
||||
'heading' => $editable->render($PAGE->get_renderer('core')),
|
||||
'description' => $audience->get_description(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -41,7 +41,7 @@
|
||||
<div class="mb-3 card">
|
||||
<div class="card-header p-0">
|
||||
<div class="mb-0 d-flex">
|
||||
<h3 class="h6 text-left m-0 align-self-center pl-3">
|
||||
<h3 class="h6 text-left m-0 align-self-center pl-3" data-region="audience-heading">
|
||||
{{{headingeditable}}}
|
||||
</h3>
|
||||
<span class="ml-auto">
|
||||
|
@ -91,6 +91,15 @@ Feature: Configure access to reports based on intended audience
|
||||
# This audience type should be disabled because there are no cohorts available.
|
||||
And "Add audience 'Member of cohort'" "link" should not exist
|
||||
|
||||
Scenario: Rename report audience
|
||||
Given I am on the "My report" "reportbuilder > Editor" page logged in as "admin"
|
||||
And I click on the "Audience" dynamic tab
|
||||
And I click on "Add audience 'All users'" "link"
|
||||
And I press "Save changes"
|
||||
When I set the field "Rename audience 'All users'" to "All my lovely users"
|
||||
And I reload the page
|
||||
Then I should see "All my lovely users" in the "[data-region='audience-card']" "css_element"
|
||||
|
||||
Scenario: Delete report audience
|
||||
Given I am on the "My report" "reportbuilder > Editor" page logged in as "admin"
|
||||
And I click on the "Audience" dynamic tab
|
||||
|
Loading…
x
Reference in New Issue
Block a user