MDL-73470 core: Move toggle template to core
This commit is contained in:
@@ -92,6 +92,7 @@ $string['deletereport'] = 'Delete report';
|
||||
$string['deletereportconfirm'] = 'Are you sure you want to delete the report \'{$a}\' and all associated data?';
|
||||
$string['deleteschedule'] = 'Delete schedule';
|
||||
$string['deletescheduleconfirm'] = 'Are you sure you want to delete the schedule \'{$a}\'?';
|
||||
$string['disableschedule'] = 'Disable schedule';
|
||||
$string['editaudience'] = 'Edit audience \'{$a}\'';
|
||||
$string['editdetails'] = 'Edit details';
|
||||
$string['editor'] = 'Editor';
|
||||
@@ -100,6 +101,7 @@ $string['editreportdetails'] = 'Edit report details';
|
||||
$string['editreportname'] = 'Edit report name';
|
||||
$string['editscheduledetails'] = 'Edit schedule details';
|
||||
$string['editschedulename'] = 'Edit schedule name';
|
||||
$string['enableschedule'] = 'Enable schedule';
|
||||
$string['entitycourse'] = 'Course';
|
||||
$string['entityuser'] = 'User';
|
||||
$string['errorreportcreate'] = 'You cannot create a new report';
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
{{!
|
||||
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/>.
|
||||
}}
|
||||
{{!
|
||||
@template core/toggle
|
||||
|
||||
Template for toggle element
|
||||
|
||||
Example context (json):
|
||||
{
|
||||
"id": "reality-toggle-3",
|
||||
"checked": true,
|
||||
"disabled": false,
|
||||
"dataattributes": [{
|
||||
"name": "action",
|
||||
"value": "toggle-reality"
|
||||
}],
|
||||
"label": "Enable/disable reality",
|
||||
"labelclasses": "sr-only"
|
||||
}
|
||||
}}
|
||||
|
||||
<div class="custom-control custom-switch {{$extraclasses}}{{extraclasses}}{{/extraclasses}}">
|
||||
<input type="checkbox" class="custom-control-input" id="{{$id}}{{id}}{{/id}}"
|
||||
{{$attributes}}
|
||||
{{#dataattributes}}data-{{name}}="{{value}}" {{/dataattributes}}
|
||||
{{#checked}}checked{{/checked}}
|
||||
{{#disabled}}disabled{{/disabled}}
|
||||
{{/attributes}}>
|
||||
{{$labelmarkup}}
|
||||
<label class="custom-control-label" for="{{$id}}{{id}}{{/id}}">
|
||||
<span class="{{$labelclasses}}{{labelclasses}}{{/labelclasses}}">{{$label}}{{label}}{{/label}}</span>
|
||||
</label>
|
||||
{{/labelmarkup}}
|
||||
</div>
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/schedules",["exports","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/modals","core_reportbuilder/local/repository/schedules"],function(a,b,c,d,e,f,g,h,i,j,k,l){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;d=o(d);e=o(e);i=n(i);j=n(j);function m(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;m=function(){return a};return a}function n(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=m();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function o(a){return a&&a.__esModule?a:{default:a}}var p=!1,q=function(a){(0,f.prefetchStrings)("core_reportbuilder",["deleteschedule","deletescheduleconfirm","editscheduledetails","newschedule","schedulecreated","scheduledeleted","schedulesent","scheduleupdated","sendschedule","sendscheduleconfirm"]);(0,f.prefetchStrings)("core",["confirm","delete"]);if(p){return}document.addEventListener("click",function(c){var f=c.target.closest(j.actions.scheduleCreate);if(f){c.preventDefault();var s=(0,k.createScheduleModal)(c.target,(0,g.get_string)("newschedule","core_reportbuilder"),a);s.addEventListener(s.events.FORM_SUBMITTED,function(){(0,g.get_string)("schedulecreated","core_reportbuilder").then(h.add).then(function(){var a=document.querySelector(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{},a)}).catch(d.default.exception)});s.show()}var m=c.target.closest(j.actions.scheduleToggle);if(m){var n=new e.default("core_reportbuilder/schedules:toggle"),o=+!+m.dataset.state;(0,l.toggleSchedule)(a,m.dataset.id,o).then(function(){var a=m.closest("tr");a.classList.toggle("dimmed_text");m.dataset.state=o;return n.resolve()}).catch(d.default.exception)}var p=c.target.closest(j.actions.scheduleEdit);if(p){c.preventDefault();var t=(0,k.createScheduleModal)(p,(0,g.get_string)("editscheduledetails","core_reportbuilder"),a,p.dataset.scheduleId);t.addEventListener(t.events.FORM_SUBMITTED,function(){(0,g.get_string)("scheduleupdated","core_reportbuilder").then(h.add).then(function(){var a=p.closest(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{},a)}).catch(d.default.exception)});t.show()}var q=c.target.closest(j.actions.scheduleSend);if(q){c.preventDefault();d.default.saveCancelPromise((0,g.get_string)("sendschedule","core_reportbuilder"),(0,g.get_string)("sendscheduleconfirm","core_reportbuilder",q.dataset.scheduleName),(0,g.get_string)("confirm","core")).then(function(){var b=new e.default("core_reportbuilder/schedules:send");return(0,l.sendSchedule)(a,q.dataset.scheduleId).then((0,h.add)((0,g.get_string)("schedulesent","core_reportbuilder"))).then(function(){return b.resolve()}).catch(d.default.exception)}).catch(function(){})}var r=c.target.closest(j.actions.scheduleDelete);if(r){c.preventDefault();d.default.saveCancelPromise((0,g.get_string)("deleteschedule","core_reportbuilder"),(0,g.get_string)("deletescheduleconfirm","core_reportbuilder",r.dataset.scheduleName),(0,g.get_string)("delete","core")).then(function(){var c=new e.default("core_reportbuilder/schedules:delete");return(0,l.deleteSchedule)(a,r.dataset.scheduleId).then((0,h.add)((0,g.get_string)("scheduledeleted","core_reportbuilder"))).then(function(){var a=r.closest(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{preservePagination:!0},a);return c.resolve()}).catch(d.default.exception)}).catch(function(){})}});p=!0};a.init=q});
|
||||
function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/schedules",["exports","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/modals","core_reportbuilder/local/repository/schedules"],function(a,b,c,d,e,f,g,h,i,j,k,l){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;d=o(d);e=o(e);i=n(i);j=n(j);function m(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;m=function(){return a};return a}function n(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=m();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function o(a){return a&&a.__esModule?a:{default:a}}var p=!1,q=function(a){(0,f.prefetchStrings)("core_reportbuilder",["deleteschedule","deletescheduleconfirm","disableschedule","editscheduledetails","enableschedule","newschedule","schedulecreated","scheduledeleted","schedulesent","scheduleupdated","sendschedule","sendscheduleconfirm"]);(0,f.prefetchStrings)("core",["confirm","delete"]);if(p){return}document.addEventListener("click",function(c){var f=c.target.closest(j.actions.scheduleCreate);if(f){c.preventDefault();var s=(0,k.createScheduleModal)(c.target,(0,g.get_string)("newschedule","core_reportbuilder"),a);s.addEventListener(s.events.FORM_SUBMITTED,function(){(0,g.get_string)("schedulecreated","core_reportbuilder").then(h.add).then(function(){var a=document.querySelector(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{},a)}).catch(d.default.exception)});s.show()}var m=c.target.closest(j.actions.scheduleToggle);if(m){var n=new e.default("core_reportbuilder/schedules:toggle"),o=+!+m.dataset.state;(0,l.toggleSchedule)(a,m.dataset.id,o).then(function(){var a=m.closest("tr");a.classList.toggle("dimmed_text");m.dataset.state=o;var b=o?"disableschedule":"enableschedule";return(0,g.get_string)(b,"core_reportbuilder")}).then(function(a){var b=m.parentElement.querySelector("label[for=\"".concat(m.id,"\"] > span"));b.innerHTML=a;return n.resolve()}).catch(d.default.exception)}var p=c.target.closest(j.actions.scheduleEdit);if(p){c.preventDefault();var t=(0,k.createScheduleModal)(p,(0,g.get_string)("editscheduledetails","core_reportbuilder"),a,p.dataset.scheduleId);t.addEventListener(t.events.FORM_SUBMITTED,function(){(0,g.get_string)("scheduleupdated","core_reportbuilder").then(h.add).then(function(){var a=p.closest(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{},a)}).catch(d.default.exception)});t.show()}var q=c.target.closest(j.actions.scheduleSend);if(q){c.preventDefault();d.default.saveCancelPromise((0,g.get_string)("sendschedule","core_reportbuilder"),(0,g.get_string)("sendscheduleconfirm","core_reportbuilder",q.dataset.scheduleName),(0,g.get_string)("confirm","core")).then(function(){var b=new e.default("core_reportbuilder/schedules:send");return(0,l.sendSchedule)(a,q.dataset.scheduleId).then((0,h.add)((0,g.get_string)("schedulesent","core_reportbuilder"))).then(function(){return b.resolve()}).catch(d.default.exception)}).catch(function(){})}var r=c.target.closest(j.actions.scheduleDelete);if(r){c.preventDefault();d.default.saveCancelPromise((0,g.get_string)("deleteschedule","core_reportbuilder"),(0,g.get_string)("deletescheduleconfirm","core_reportbuilder",r.dataset.scheduleName),(0,g.get_string)("delete","core")).then(function(){var c=new e.default("core_reportbuilder/schedules:delete");return(0,l.deleteSchedule)(a,r.dataset.scheduleId).then((0,h.add)((0,g.get_string)("scheduledeleted","core_reportbuilder"))).then(function(){var a=r.closest(j.regions.report);(0,b.dispatchEvent)(i.tableReload,{preservePagination:!0},a);return c.resolve()}).catch(d.default.exception)}).catch(function(){})}});p=!0};a.init=q});
|
||||
//# sourceMappingURL=schedules.min.js.map
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -46,7 +46,9 @@ export const init = reportId => {
|
||||
prefetchStrings('core_reportbuilder', [
|
||||
'deleteschedule',
|
||||
'deletescheduleconfirm',
|
||||
'disableschedule',
|
||||
'editscheduledetails',
|
||||
'enableschedule',
|
||||
'newschedule',
|
||||
'schedulecreated',
|
||||
'scheduledeleted',
|
||||
@@ -101,6 +103,12 @@ export const init = reportId => {
|
||||
|
||||
scheduleToggle.dataset.state = scheduleStateToggle;
|
||||
|
||||
const stringKey = scheduleStateToggle ? 'disableschedule' : 'enableschedule';
|
||||
return getString(stringKey, 'core_reportbuilder');
|
||||
})
|
||||
.then(toggleLabel => {
|
||||
const labelContainer = scheduleToggle.parentElement.querySelector(`label[for="${scheduleToggle.id}"] > span`);
|
||||
labelContainer.innerHTML = toggleLabel;
|
||||
return pendingPromise.resolve();
|
||||
})
|
||||
.catch(Notification.exception);
|
||||
|
||||
@@ -121,11 +121,19 @@ class report_schedules extends system_report {
|
||||
global $PAGE;
|
||||
|
||||
$renderer = $PAGE->get_renderer('core_reportbuilder');
|
||||
|
||||
return $renderer->render_from_template('core_reportbuilder/local/toggle', [
|
||||
'action' => 'schedule-toggle',
|
||||
'id' => $row->id,
|
||||
'enabled' => $row->enabled,
|
||||
$attributes = [
|
||||
['name' => 'id', 'value' => $row->id],
|
||||
['name' => 'action', 'value' => 'schedule-toggle'],
|
||||
['name' => 'state', 'value' => $row->enabled],
|
||||
];
|
||||
$label = $row->enabled ? get_string('disableschedule', 'core_reportbuilder')
|
||||
: get_string('enableschedule', 'core_reportbuilder');
|
||||
return $renderer->render_from_template('core/toggle', [
|
||||
'id' => 'schedule-toggle-' . $row->id,
|
||||
'checked' => $row->enabled,
|
||||
'dataattributes' => $attributes,
|
||||
'label' => $label,
|
||||
'labelclasses' => 'sr-only'
|
||||
]);
|
||||
})
|
||||
);
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
{{!
|
||||
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/>.
|
||||
}}
|
||||
{{!
|
||||
@template core_reportbuilder/local/toggle
|
||||
|
||||
Template for toggle element
|
||||
|
||||
Example context (json):
|
||||
{
|
||||
"action": "report-toggle",
|
||||
"id": 3,
|
||||
"enabled": true
|
||||
}
|
||||
}}
|
||||
|
||||
<div class="custom-control custom-switch">
|
||||
<input type="checkbox" class="custom-control-input" id="toggle-{{id}}" data-action="{{action}}" data-id="{{id}}" data-state="{{enabled}}"
|
||||
{{#enabled}}checked{{/enabled}}>
|
||||
<label class="custom-control-label" for="toggle-{{id}}">
|
||||
<span class="sr-only">
|
||||
{{#enabled}} {{#str}} disable, moodle {{/str}} {{/enabled}}
|
||||
{{^enabled}} {{#str}} enable, moodle {{/str}} {{/enabled}}
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
@@ -58,8 +58,9 @@ Feature: Manage custom report schedules
|
||||
| My report | My schedule |
|
||||
And I am on the "My report" "reportbuilder > Editor" page logged in as "admin"
|
||||
And I click on the "Schedules" dynamic tab
|
||||
When I click on "Disable" "field" in the "My schedule" "table_row"
|
||||
When I click on "Disable schedule" "field" in the "My schedule" "table_row"
|
||||
Then the "class" attribute of "My schedule" "table_row" should contain "dimmed_text"
|
||||
And I click on "Enable schedule" "field" in the "My schedule" "table_row"
|
||||
|
||||
Scenario: Edit report schedule
|
||||
Given the following "core_reportbuilder > Schedules" exist:
|
||||
|
||||
Reference in New Issue
Block a user